master ohmu/fastfetch-openbsd / src / detection / packages / packages_bsd.c
ohmu  ·  2026-10-15
 1#include "packages.h"
 2
 3#include "common/settings.h"
 4
 5static uint32_t getSQLite3Int(const char* dbPath, const char* query, const char* packageId) {
 6    FF_STRBUF_AUTO_DESTROY cacheDir = ffStrbufCreate();
 7    FF_STRBUF_AUTO_DESTROY cacheContent = ffStrbufCreate();
 8
 9    uint32_t num_elements;
10    if (ffPackagesReadCache(&cacheDir, &cacheContent, dbPath, packageId, &num_elements)) {
11        return num_elements;
12    }
13
14    num_elements = (uint32_t) ffSettingsGetSQLite3Int(dbPath, query);
15
16    ffPackagesWriteCache(&cacheDir, &cacheContent, num_elements);
17
18    return num_elements;
19}
20
21void ffDetectPackagesImpl(FFPackagesResult* result, FFPackagesOptions* options) {
22    if (FF_PACKAGES_IS_ENABLED(options, PKG)) {
23        result->pkg = getSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/pkg/local.sqlite", "SELECT count(*) FROM packages", "pkg");
24    }
25    if (FF_PACKAGES_IS_ENABLED(options, MPORT)) {
26        result->mport = getSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/mport/master.db", "SELECT count(*) FROM packages", "mport");
27    }
28}