master ohmu/fastfetch-openbsd / src / detection / bios / bios_bsd.c
ohmu  ·  2026-10-15
 1#include "bios.h"
 2
 3#include "common/settings.h"
 4#include "common/sysctl.h"
 5#include "common/io.h"
 6#include "common/smbios.h"
 7
 8const char* ffDetectBios(FFBiosResult* result) {
 9    ffSettingsGetFreeBSDKenv("smbios.bios.reldate", &result->date);
10    ffCleanUpSmbiosValue(&result->date);
11    ffSettingsGetFreeBSDKenv("smbios.bios.revision", &result->release);
12    ffCleanUpSmbiosValue(&result->release);
13    ffSettingsGetFreeBSDKenv("smbios.bios.vendor", &result->vendor);
14    ffCleanUpSmbiosValue(&result->vendor);
15    ffSettingsGetFreeBSDKenv("smbios.bios.version", &result->version);
16    ffCleanUpSmbiosValue(&result->version);
17    ffSysctlGetString("machdep.bootmethod", &result->type);
18
19    if (result->type.length == 0) {
20        if (ffSettingsGetFreeBSDKenv("loader.efi", &result->type)) {
21            ffStrbufSetStatic(&result->type, ffStrbufEqualS(&result->type, "1") ? "UEFI" : "BIOS");
22        } else {
23            ffStrbufSetStatic(&result->type,
24                ffPathExists("/dev/efi" /*efidev*/, FF_PATHTYPE_FILE) ||
25                        ffPathExists("/boot/efi/efi/" /*efi partition. Note /boot/efi exists on BIOS system*/, FF_PATHTYPE_DIRECTORY)
26                    ? "UEFI"
27                    : "BIOS");
28        }
29    }
30    return nullptr;
31}