From bb9d9d820c1999110fbd4766269f6cc9b8d70213 Mon Sep 17 00:00:00 2001 From: tnut Date: Sat, 25 Apr 2026 15:47:08 +0200 Subject: [PATCH 1/6] Packages:add cards counting (NuTyX) --- src/detection/packages/packages.h | 1 + src/detection/packages/packages_linux.c | 3 +++ src/modules/packages/option.h | 1 + src/modules/packages/packages.c | 5 +++++ 4 files changed, 10 insertions(+) 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..e82f657a70 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -27,6 +27,7 @@ bool ffPrintPackages(FFPackagesOptions* options) { uint32_t hpkgAll = counts.hpkgSystem + counts.hpkgUser; uint32_t amAll = counts.amSystem + counts.amUser; uint32_t scoopAll = counts.scoopUser + counts.scoopGlobal; + counts.all += counts.cards; if (options->moduleArgs.outputFormat.length == 0) { ffPrintLogoAndKey(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT); @@ -119,6 +120,7 @@ bool ffPrintPackages(FFPackagesOptions* options) { FF_PRINT_PACKAGE(pkgsrc) FF_PRINT_PACKAGE(pkgtool) FF_PRINT_PACKAGE(rpm) + FF_PRINT_PACKAGE(cards) if (options->combined) { FF_PRINT_PACKAGE_ALL(scoop); } else if (counts.scoopGlobal > 0) { @@ -248,6 +250,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) { if (false) ; FF_TEST_PACKAGE_NAME(CHOCO) + FF_TEST_PACKAGE_NAME(CARDS) break; case 'D': if (false) @@ -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) @@ -447,6 +451,7 @@ bool ffGeneratePackagesJsonResult(FF_A_UNUSED FFPackagesOptions* options, yyjson FF_APPEND_PACKAGE_COUNT(macports) FF_APPEND_PACKAGE_COUNT(mport) FF_APPEND_PACKAGE_COUNT(moss) + FF_APPEND_PACKAGE_COUNT(cards) FF_APPEND_PACKAGE_COUNT(nixDefault) FF_APPEND_PACKAGE_COUNT(nixSystem) FF_APPEND_PACKAGE_COUNT(nixUser) From ca45561d6905148a3a379ea5b037f99f6e64a5d3 Mon Sep 17 00:00:00 2001 From: tnut Date: Sun, 26 Apr 2026 11:02:11 +0200 Subject: [PATCH 2/6] package.c no need to add counts.catds --- src/modules/packages/packages.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index e82f657a70..5e7f5ac983 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -27,7 +27,6 @@ bool ffPrintPackages(FFPackagesOptions* options) { uint32_t hpkgAll = counts.hpkgSystem + counts.hpkgUser; uint32_t amAll = counts.amSystem + counts.amUser; uint32_t scoopAll = counts.scoopUser + counts.scoopGlobal; - counts.all += counts.cards; if (options->moduleArgs.outputFormat.length == 0) { ffPrintLogoAndKey(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT); From 2c7fdbc7be7f2dd18c76e88a6ec3f145644e5a1a Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 26 Apr 2026 17:23:44 +0800 Subject: [PATCH 3/6] Sort packages print alphabetically --- src/modules/packages/packages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 5e7f5ac983..0503537402 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) @@ -119,7 +120,6 @@ bool ffPrintPackages(FFPackagesOptions* options) { FF_PRINT_PACKAGE(pkgsrc) FF_PRINT_PACKAGE(pkgtool) FF_PRINT_PACKAGE(rpm) - FF_PRINT_PACKAGE(cards) if (options->combined) { FF_PRINT_PACKAGE_ALL(scoop); } else if (counts.scoopGlobal > 0) { From 9f31bec0ec6943dbe7cb36e8c5c8f3845baf023d Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 26 Apr 2026 17:24:38 +0800 Subject: [PATCH 4/6] ditto --- src/modules/packages/packages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 0503537402..141ee020d9 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -248,8 +248,8 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) { case 'C': if (false) ; - FF_TEST_PACKAGE_NAME(CHOCO) FF_TEST_PACKAGE_NAME(CARDS) + FF_TEST_PACKAGE_NAME(CHOCO) break; case 'D': if (false) From 57de66233e5fb0756b4cd8bcdb51214e9038529b Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 26 Apr 2026 17:25:48 +0800 Subject: [PATCH 5/6] ditto --- src/modules/packages/packages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 141ee020d9..82ecad7b07 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -432,6 +432,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) @@ -450,7 +451,6 @@ bool ffGeneratePackagesJsonResult(FF_A_UNUSED FFPackagesOptions* options, yyjson FF_APPEND_PACKAGE_COUNT(macports) FF_APPEND_PACKAGE_COUNT(mport) FF_APPEND_PACKAGE_COUNT(moss) - FF_APPEND_PACKAGE_COUNT(cards) FF_APPEND_PACKAGE_COUNT(nixDefault) FF_APPEND_PACKAGE_COUNT(nixSystem) FF_APPEND_PACKAGE_COUNT(nixUser) From 3b7717b6af2893be8ef60b7079f95eb99a1363f5 Mon Sep 17 00:00:00 2001 From: tnut Date: Mon, 27 Apr 2026 12:49:05 +0200 Subject: [PATCH 6/6] packages.c update FF_ARG and ffpackagesModule.info --- src/modules/packages/packages.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 82ecad7b07..a0012047a8 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -152,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"), @@ -506,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" },