master ohmu/fastfetch-openbsd / src / detection / os / os.c
ohmu  ·  2026-10-15
 1#include "os.h"
 2#include "common/FFcache.h"
 3
 4void ffDetectOSImpl(FFOSResult* os);
 5
 6static FFOSResult result;
 7
 8static void initOSResult(void* storage) {
 9    FFOSResult* os = storage;
10
11    ffStrbufInit(&os->name);
12    ffStrbufInit(&os->prettyName);
13    ffStrbufInit(&os->id);
14    ffStrbufInit(&os->version);
15    ffStrbufInit(&os->versionID);
16    ffStrbufInit(&os->codename);
17    ffStrbufInit(&os->buildID);
18    ffStrbufInit(&os->idLike);
19    ffStrbufInit(&os->variant);
20    ffStrbufInit(&os->variantID);
21    ffDetectOSImpl(os);
22}
23
24static void destroyOSResult(void* storage) {
25    FFOSResult* os = storage;
26
27    ffStrbufDestroy(&os->name);
28    ffStrbufDestroy(&os->prettyName);
29    ffStrbufDestroy(&os->id);
30    ffStrbufDestroy(&os->version);
31    ffStrbufDestroy(&os->versionID);
32    ffStrbufDestroy(&os->codename);
33    ffStrbufDestroy(&os->buildID);
34    ffStrbufDestroy(&os->idLike);
35    ffStrbufDestroy(&os->variant);
36    ffStrbufDestroy(&os->variantID);
37}
38
39static FFcacheEntry ffCacheEntryOS = {
40    .name = "os",
41    .storage = &result,
42    .init = initOSResult,
43    .destroy = destroyOSResult,
44};
45
46const FFOSResult* ffDetectOS(void) {
47    return ffCacheGet(&ffCacheEntryOS);
48}