diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index d92bfce1b8..0a2c4040b5 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -10,6 +10,7 @@ typedef struct FFPackagesResult { uint32_t appimage; uint32_t brew; uint32_t brewCask; + uint32_t cards; uint32_t choco; uint32_t dpkg; uint32_t emerge; diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index 042557d065..98a01b23a0 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -537,6 +537,9 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts, if (!(options->disabled & FF_PACKAGES_FLAG_MOSS_BIT)) { packageCounts->moss += getSQLite3Int(baseDir, "/.moss/db/state", "SELECT COUNT(*) FROM state_selections WHERE state_id = (SELECT MAX(id) FROM state)", "moss"); } + if (!(options->disabled & FF_PACKAGES_FLAG_CARDS_BIT)) { + packageCounts->cards += getNumElements(baseDir, "/var/lib/pkg/DB", true); + } } static void getPackageCountsRegular(FFstrbuf* baseDir, FFPackagesResult* packageCounts, FFPackagesOptions* options) { diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index cac1f35f24..6018494374 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -38,6 +38,7 @@ typedef enum FF_A_PACKED FFPackagesFlags { FF_PACKAGES_FLAG_KISS_BIT = 1ULL << 31, FF_PACKAGES_FLAG_MOSS_BIT = 1ULL << 32, FF_PACKAGES_FLAG_APPIMAGE_BIT = 1ULL << 33, + FF_PACKAGES_FLAG_CARDS_BIT = 1ULL << 34, FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT64_MAX, } FFPackagesFlags; static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), ""); diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 2120b7dc9b..a0012047a8 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -61,6 +61,7 @@ bool ffPrintPackages(FFPackagesOptions* options) { FF_PRINT_PACKAGE_NAME(brew, "brew") FF_PRINT_PACKAGE_NAME(brewCask, "brew-cask") } + FF_PRINT_PACKAGE(cards) FF_PRINT_PACKAGE(choco) FF_PRINT_PACKAGE(dpkg) FF_PRINT_PACKAGE(emerge) @@ -151,6 +152,7 @@ bool ffPrintPackages(FFPackagesOptions* options) { FF_ARG(counts.brew, "brew"), FF_ARG(brewAll, "brew-all"), FF_ARG(counts.brewCask, "brew-cask"), + FF_ARG(counts.cards, "cards"), FF_ARG(counts.choco, "choco"), FF_ARG(counts.dpkg, "dpkg"), FF_ARG(counts.emerge, "emerge"), @@ -247,6 +249,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) { case 'C': if (false) ; + FF_TEST_PACKAGE_NAME(CARDS) FF_TEST_PACKAGE_NAME(CHOCO) break; case 'D': @@ -371,6 +374,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do FF_TEST_PACKAGE_NAME(APK) FF_TEST_PACKAGE_NAME(APPIMAGE) FF_TEST_PACKAGE_NAME(BREW) + FF_TEST_PACKAGE_NAME(CARDS) FF_TEST_PACKAGE_NAME(CHOCO) FF_TEST_PACKAGE_NAME(DPKG) FF_TEST_PACKAGE_NAME(EMERGE) @@ -429,6 +433,7 @@ bool ffGeneratePackagesJsonResult(FF_A_UNUSED FFPackagesOptions* options, yyjson FF_APPEND_PACKAGE_COUNT(apk) FF_APPEND_PACKAGE_COUNT(brew) FF_APPEND_PACKAGE_COUNT(brewCask) + FF_APPEND_PACKAGE_COUNT(cards) FF_APPEND_PACKAGE_COUNT(choco) FF_APPEND_PACKAGE_COUNT(dpkg) FF_APPEND_PACKAGE_COUNT(emerge) @@ -502,6 +507,7 @@ FFModuleBaseInfo ffPackagesModuleInfo = { { "Number of brew packages", "brew" }, { "Total number of all brew packages", "brew-all" }, { "Number of brew-cask packages", "brew-cask" }, + { "Number of cards packages", "cards" }, { "Number of choco packages", "choco" }, { "Number of dpkg packages", "dpkg" }, { "Number of emerge packages", "emerge" },