diff options
Diffstat (limited to 'src/detection/packages/packages_bsd.c')
| -rw-r--r-- | src/detection/packages/packages_bsd.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/detection/packages/packages_bsd.c b/src/detection/packages/packages_bsd.c new file mode 100644 index 0000000..73772ac --- /dev/null +++ b/src/detection/packages/packages_bsd.c @@ -0,0 +1,28 @@ +#include "packages.h" + +#include "common/settings.h" + +static uint32_t getSQLite3Int(const char* dbPath, const char* query, const char* packageId) { + FF_STRBUF_AUTO_DESTROY cacheDir = ffStrbufCreate(); + FF_STRBUF_AUTO_DESTROY cacheContent = ffStrbufCreate(); + + uint32_t num_elements; + if (ffPackagesReadCache(&cacheDir, &cacheContent, dbPath, packageId, &num_elements)) { + return num_elements; + } + + num_elements = (uint32_t) ffSettingsGetSQLite3Int(dbPath, query); + + ffPackagesWriteCache(&cacheDir, &cacheContent, num_elements); + + return num_elements; +} + +void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) { + if (FF_PACKAGES_IS_ENABLED(options, PKG)) { + result->pkg = getSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/pkg/local.sqlite", "SELECT count(*) FROM packages", "pkg"); + } + if (FF_PACKAGES_IS_ENABLED(options, MPORT)) { + result->mport = getSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/mport/master.db", "SELECT count(*) FROM packages", "mport"); + } +} |