From 2fe7476c6701fa7ecc1ef1c0c0317153b25926b3 Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Sun, 7 Aug 2022 19:42:16 +0200 Subject: [PATCH] Better xbps package count #209 --- src/modules/packages.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/modules/packages.c b/src/modules/packages.c index 3e3e791c5..0f66946d9 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -195,6 +195,30 @@ static uint32_t getRpmFromLibrpm(const FFinstance* instance) } #endif +static uint32_t getXBPS(FFstrbuf* baseDir) +{ + DIR* dir = opendir(baseDir->chars); + if(dir == NULL) + return 0; + + uint32_t result = 0; + + struct dirent *entry; + while((entry = readdir(dir)) != NULL) + { + if(entry->d_type != DT_REG || strncasecmp(entry->d_name, "pkgdb-", 6) != 0) + continue; + + ffStrbufAppendC(baseDir, '/'); + ffStrbufAppendS(baseDir, entry->d_name); + result = getNumStrings(baseDir->chars, "installed"); + break; + } + + closedir(dir); + return result; +} + static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, PackageCounts* packageCounts) { uint32_t baseDirLength = baseDir->length; @@ -221,7 +245,7 @@ static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, Pack //xps ffStrbufAppendS(baseDir, "/var/db/xbps"); - packageCounts->xbps += getNumElements(baseDir->chars, DT_REG); + packageCounts->xbps += getXBPS(baseDir); ffStrbufSubstrBefore(baseDir, baseDirLength); //flatpak