diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index 12e98793..b1552761 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -22,6 +22,7 @@ typedef struct FFPackagesResult uint32_t hpkgSystem; uint32_t hpkgUser; uint32_t kiss; + uint32_t leaf; uint32_t linglong; uint32_t lpkg; uint32_t lpkgbuild; diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index fc5a0cf2..f4a3fca1 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -418,6 +418,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts, if (!(options->disabled & FF_PACKAGES_FLAG_DPKG_BIT)) packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: install ok installed", "dpkg"); if (!(options->disabled & FF_PACKAGES_FLAG_LPKG_BIT)) packageCounts->lpkg += getNumStrings(baseDir, "/opt/Loc-OS-LPKG/installed-lpkg/Listinstalled-lpkg.list", "\n", "lpkg"); if (!(options->disabled & FF_PACKAGES_FLAG_EMERGE_BIT)) packageCounts->emerge += countFilesRecursive(baseDir, "/var/db/pkg", "SIZE"); + if (!(options->disabled & FF_PACKAGES_FLAG_LEAF_BIT)) packageCounts->leaf += countFilesRecursive(baseDir, "/var/lib/leaf/trace", "FILES"); if (!(options->disabled & FF_PACKAGES_FLAG_EOPKG_BIT)) packageCounts->eopkg += getNumElements(baseDir, "/var/lib/eopkg/package", true); if (!(options->disabled & FF_PACKAGES_FLAG_FLATPAK_BIT)) packageCounts->flatpakSystem += getFlatpakPackages(baseDir, "/var/lib"); if (!(options->disabled & FF_PACKAGES_FLAG_KISS_BIT)) packageCounts->kiss += getNumElements(baseDir, "/var/db/kiss/installed", true); diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index f3954138..a7a9991c 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -37,6 +37,7 @@ typedef enum __attribute__((__packed__)) FFPackagesFlags FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 29, FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 30, FF_PACKAGES_FLAG_KISS_BIT = 1ULL << 31, + FF_PACKAGES_FLAG_LEAF_BIT = 1ULL << 32, 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 5f78a052..5628edd9 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -147,6 +147,7 @@ bool ffPrintPackages(FFPackagesOptions* options) FF_PRINT_PACKAGE(mport) FF_PRINT_PACKAGE(pisi) FF_PRINT_PACKAGE(soar) + FF_PRINT_PACKAGE(leaf) putchar('\n'); } @@ -196,6 +197,7 @@ bool ffPrintPackages(FFPackagesOptions* options) FF_FORMAT_ARG(counts.pisi, "pisi"), FF_FORMAT_ARG(counts.soar, "soar"), FF_FORMAT_ARG(counts.kiss, "kiss"), + FF_FORMAT_ARG(counts.leaf, "leaf"), FF_FORMAT_ARG(nixAll, "nix-all"), FF_FORMAT_ARG(flatpakAll, "flatpak-all"), FF_FORMAT_ARG(brewAll, "brew-all"), @@ -435,6 +437,7 @@ bool ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy FF_APPEND_PACKAGE_COUNT(sorcery) FF_APPEND_PACKAGE_COUNT(winget) FF_APPEND_PACKAGE_COUNT(xbps) + FF_APPEND_PACKAGE_COUNT(leaf) yyjson_mut_obj_add_strbuf(doc, obj, "pacmanBranch", &counts.pacmanBranch); return true; @@ -506,6 +509,7 @@ FFModuleBaseInfo ffPackagesModuleInfo = { {"Number of pisi packages", "pisi"}, {"Number of soar packages", "soar"}, {"Number of kiss packages", "kiss"}, + {"Number of leaf packages", "leaf"}, {"Total number of all nix packages", "nix-all"}, {"Total number of all flatpak app packages", "flatpak-all"}, {"Total number of all brew packages", "brew-all"},