From af450ae78891679c26859e253a87965aca4c9e41 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 13 Sep 2024 10:02:50 +0800 Subject: [PATCH] Packages (FreeBSD): cache result --- src/detection/packages/packages_bsd.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/detection/packages/packages_bsd.c b/src/detection/packages/packages_bsd.c index 5948d678b..821222927 100644 --- a/src/detection/packages/packages_bsd.c +++ b/src/detection/packages/packages_bsd.c @@ -2,8 +2,26 @@ #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, FF_MAYBE_UNUSED FFPackagesOptions* options) { if (!(options->disabled & FF_PACKAGES_FLAG_PKG_BIT)) - result->pkg = (uint32_t) ffSettingsGetSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/pkg/local.sqlite", "SELECT count(*) FROM packages"); + { + result->pkg = getSQLite3Int(FASTFETCH_TARGET_DIR_ROOT "/var/db/pkg/local.sqlite", "SELECT count(*) FROM packages", "pkg"); + } }