diff --git a/CMakeLists.txt b/CMakeLists.txt index 669233184..f2fb3fa78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -328,6 +328,7 @@ set(LIBFASTFETCH_SRC src/util/FFstrbuf.c src/util/platform/FFPlatform.c src/util/stringUtils.c + src/util/smbiosHelper.c ) if(LINUX) diff --git a/src/detection/bios/bios_bsd.c b/src/detection/bios/bios_bsd.c index df8c853b9..69413a5d5 100644 --- a/src/detection/bios/bios_bsd.c +++ b/src/detection/bios/bios_bsd.c @@ -1,12 +1,17 @@ #include "bios.h" #include "common/settings.h" +#include "util/smbiosHelper.h" -const char* ffDetectBios(FFBiosResult* bios) +const char* ffDetectBios(FFBiosResult* result) { - ffSettingsGetFreeBSDKenv("smbios.bios.reldate", &bios->biosDate); - ffSettingsGetFreeBSDKenv("smbios.bios.revision", &bios->biosRelease); - ffSettingsGetFreeBSDKenv("smbios.bios.vendor", &bios->biosVendor); - ffSettingsGetFreeBSDKenv("smbios.bios.version", &bios->biosVersion); + ffSettingsGetFreeBSDKenv("smbios.bios.reldate", &result->biosDate); + ffCleanUpSmbiosValue(&result->biosDate); + ffSettingsGetFreeBSDKenv("smbios.bios.revision", &result->biosRelease); + ffCleanUpSmbiosValue(&result->biosRelease); + ffSettingsGetFreeBSDKenv("smbios.bios.vendor", &result->biosVendor); + ffCleanUpSmbiosValue(&result->biosVendor); + ffSettingsGetFreeBSDKenv("smbios.bios.version", &result->biosVersion); + ffCleanUpSmbiosValue(&result->biosVersion); return NULL; } diff --git a/src/detection/bios/bios_linux.c b/src/detection/bios/bios_linux.c index ae46e7c99..384cf3e2a 100644 --- a/src/detection/bios/bios_linux.c +++ b/src/detection/bios/bios_linux.c @@ -1,41 +1,17 @@ #include "bios.h" #include "common/io/io.h" +#include "util/smbiosHelper.h" #include -static bool hostValueSet(FFstrbuf* value) -{ - return - value->length > 0 && - ffStrbufStartsWithIgnCaseS(value, "To be filled") != true && - ffStrbufStartsWithIgnCaseS(value, "To be set") != true && - ffStrbufStartsWithIgnCaseS(value, "OEM") != true && - ffStrbufStartsWithIgnCaseS(value, "O.E.M.") != true && - ffStrbufIgnCaseCompS(value, "None") != 0 && - ffStrbufIgnCaseCompS(value, "System Product") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Version") != 0 && - ffStrbufIgnCaseCompS(value, "System Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Version") != 0 && - ffStrbufIgnCaseCompS(value, "Default string") != 0 && - ffStrbufIgnCaseCompS(value, "Undefined") != 0 && - ffStrbufIgnCaseCompS(value, "Not Specified") != 0 && - ffStrbufIgnCaseCompS(value, "Not Applicable") != 0 && - ffStrbufIgnCaseCompS(value, "INVALID") != 0 && - ffStrbufIgnCaseCompS(value, "Type1ProductConfigId") != 0 && - ffStrbufIgnCaseCompS(value, "All Series") != 0 && - ffStrbufIgnCaseCompS(value, "N/A") != 0 - ; -} - -static void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) +static void getSmbiosValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) { ffReadFileBuffer(devicesPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffReadFileBuffer(classPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffStrbufClear(buffer); @@ -43,9 +19,9 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu const char* ffDetectBios(FFBiosResult* bios) { - getHostValue("/sys/devices/virtual/dmi/id/bios_date", "/sys/class/dmi/id/bios_date", &bios->biosDate); - getHostValue("/sys/devices/virtual/dmi/id/bios_release", "/sys/class/dmi/id/bios_release", &bios->biosRelease); - getHostValue("/sys/devices/virtual/dmi/id/bios_vendor", "/sys/class/dmi/id/bios_vendor", &bios->biosVendor); - getHostValue("/sys/devices/virtual/dmi/id/bios_version", "/sys/class/dmi/id/bios_version", &bios->biosVersion); + getSmbiosValue("/sys/devices/virtual/dmi/id/bios_date", "/sys/class/dmi/id/bios_date", &bios->biosDate); + getSmbiosValue("/sys/devices/virtual/dmi/id/bios_release", "/sys/class/dmi/id/bios_release", &bios->biosRelease); + getSmbiosValue("/sys/devices/virtual/dmi/id/bios_vendor", "/sys/class/dmi/id/bios_vendor", &bios->biosVendor); + getSmbiosValue("/sys/devices/virtual/dmi/id/bios_version", "/sys/class/dmi/id/bios_version", &bios->biosVersion); return NULL; } diff --git a/src/detection/board/board_bsd.c b/src/detection/board/board_bsd.c index f05811bec..6650c8b5b 100644 --- a/src/detection/board/board_bsd.c +++ b/src/detection/board/board_bsd.c @@ -1,10 +1,14 @@ #include "board.h" #include "common/settings.h" +#include "util/smbiosHelper.h" -const char* ffDetectBoard(FFBoardResult* board) +const char* ffDetectBoard(FFBoardResult* result) { - ffSettingsGetFreeBSDKenv("smbios.planar.product", &board->boardName); - ffSettingsGetFreeBSDKenv("smbios.planar.maker", &board->boardVendor); - ffSettingsGetFreeBSDKenv("smbios.planar.version", &board->boardVersion); + ffSettingsGetFreeBSDKenv("smbios.planar.product", &result->boardName); + ffCleanUpSmbiosValue(&result->boardName); + ffSettingsGetFreeBSDKenv("smbios.planar.maker", &result->boardVendor); + ffCleanUpSmbiosValue(&result->boardVendor); + ffSettingsGetFreeBSDKenv("smbios.planar.version", &result->boardVersion); + ffCleanUpSmbiosValue(&result->boardVersion); return NULL; } diff --git a/src/detection/board/board_linux.c b/src/detection/board/board_linux.c index 435087798..011a1e5a5 100644 --- a/src/detection/board/board_linux.c +++ b/src/detection/board/board_linux.c @@ -1,41 +1,17 @@ #include "board.h" #include "common/io/io.h" +#include "util/smbiosHelper.h" #include -static bool hostValueSet(FFstrbuf* value) -{ - return - value->length > 0 && - ffStrbufStartsWithIgnCaseS(value, "To be filled") != true && - ffStrbufStartsWithIgnCaseS(value, "To be set") != true && - ffStrbufStartsWithIgnCaseS(value, "OEM") != true && - ffStrbufStartsWithIgnCaseS(value, "O.E.M.") != true && - ffStrbufIgnCaseCompS(value, "None") != 0 && - ffStrbufIgnCaseCompS(value, "System Product") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Version") != 0 && - ffStrbufIgnCaseCompS(value, "System Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Version") != 0 && - ffStrbufIgnCaseCompS(value, "Default string") != 0 && - ffStrbufIgnCaseCompS(value, "Undefined") != 0 && - ffStrbufIgnCaseCompS(value, "Not Specified") != 0 && - ffStrbufIgnCaseCompS(value, "Not Applicable") != 0 && - ffStrbufIgnCaseCompS(value, "INVALID") != 0 && - ffStrbufIgnCaseCompS(value, "Type1ProductConfigId") != 0 && - ffStrbufIgnCaseCompS(value, "All Series") != 0 && - ffStrbufIgnCaseCompS(value, "N/A") != 0 - ; -} - -static void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) +static void getSmbiosValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) { ffReadFileBuffer(devicesPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffReadFileBuffer(classPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffStrbufClear(buffer); @@ -43,8 +19,8 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu const char* ffDetectBoard(FFBoardResult* board) { - getHostValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->boardName); - getHostValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->boardVendor); - getHostValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->boardVersion); + getSmbiosValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->boardName); + getSmbiosValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->boardVendor); + getSmbiosValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->boardVersion); return NULL; } diff --git a/src/detection/chassis/chassis_bsd.c b/src/detection/chassis/chassis_bsd.c index 9614cfd7a..91ca9f7e0 100644 --- a/src/detection/chassis/chassis_bsd.c +++ b/src/detection/chassis/chassis_bsd.c @@ -1,10 +1,15 @@ #include "chassis.h" #include "common/settings.h" +#include "util/smbiosHelper.h" const char* ffDetectChassis(FFChassisResult* result) { + // Unlike other platforms, `smbios.chassis.type` return display string directly on my machine ffSettingsGetFreeBSDKenv("smbios.chassis.type", &result->chassisType); + ffCleanUpSmbiosValue(&result->chassisType); ffSettingsGetFreeBSDKenv("smbios.chassis.maker", &result->chassisVendor); + ffCleanUpSmbiosValue(&result->chassisVendor); ffSettingsGetFreeBSDKenv("smbios.chassis.version", &result->chassisVersion); + ffCleanUpSmbiosValue(&result->chassisVersion); return NULL; } diff --git a/src/detection/chassis/chassis_linux.c b/src/detection/chassis/chassis_linux.c index c58bda3cd..82aff1189 100644 --- a/src/detection/chassis/chassis_linux.c +++ b/src/detection/chassis/chassis_linux.c @@ -1,41 +1,17 @@ #include "chassis.h" #include "common/io/io.h" +#include "util/smbiosHelper.h" #include -static bool hostValueSet(FFstrbuf* value) -{ - return - value->length > 0 && - ffStrbufStartsWithIgnCaseS(value, "To be filled") != true && - ffStrbufStartsWithIgnCaseS(value, "To be set") != true && - ffStrbufStartsWithIgnCaseS(value, "OEM") != true && - ffStrbufStartsWithIgnCaseS(value, "O.E.M.") != true && - ffStrbufIgnCaseCompS(value, "None") != 0 && - ffStrbufIgnCaseCompS(value, "System Product") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Version") != 0 && - ffStrbufIgnCaseCompS(value, "System Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Version") != 0 && - ffStrbufIgnCaseCompS(value, "Default string") != 0 && - ffStrbufIgnCaseCompS(value, "Undefined") != 0 && - ffStrbufIgnCaseCompS(value, "Not Specified") != 0 && - ffStrbufIgnCaseCompS(value, "Not Applicable") != 0 && - ffStrbufIgnCaseCompS(value, "INVALID") != 0 && - ffStrbufIgnCaseCompS(value, "Type1ProductConfigId") != 0 && - ffStrbufIgnCaseCompS(value, "All Series") != 0 && - ffStrbufIgnCaseCompS(value, "N/A") != 0 - ; -} - -static void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) +static void getSmbiosValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) { ffReadFileBuffer(devicesPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffReadFileBuffer(classPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffStrbufClear(buffer); @@ -43,9 +19,9 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu const char* ffDetectChassis(FFChassisResult* result) { - getHostValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->chassisType); - getHostValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->chassisVendor); - getHostValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->chassisVersion); + getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->chassisType); + getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->chassisVendor); + getSmbiosValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->chassisVersion); if(result->chassisType.length) { diff --git a/src/detection/host/host_android.c b/src/detection/host/host_android.c index 384faf736..53e18d1ea 100644 --- a/src/detection/host/host_android.c +++ b/src/detection/host/host_android.c @@ -4,15 +4,8 @@ const char* ffDetectHost(FFHostResult* host) { - //Family - - ffStrbufInit(&host->productFamily); ffSettingsGetAndroidProperty("ro.product.device", &host->productFamily); - //Name - - ffStrbufInit(&host->productName); - ffSettingsGetAndroidProperty("ro.product.brand", &host->productName); if(host->productName.length > 0) { @@ -21,18 +14,9 @@ const char* ffDetectHost(FFHostResult* host) } ffSettingsGetAndroidProperty("ro.product.model", &host->productName); - ffStrbufTrimRight(&host->productName, ' '); - //Sys vendor - - ffStrbufInit(&host->sysVendor); ffSettingsGetAndroidProperty("ro.product.manufacturer", &host->sysVendor); - //Not implemented - - ffStrbufInit(&host->productVersion); - ffStrbufInit(&host->productSku); - return NULL; } diff --git a/src/detection/host/host_apple.c b/src/detection/host/host_apple.c index d47ea8c44..a07c9d356 100644 --- a/src/detection/host/host_apple.c +++ b/src/detection/host/host_apple.c @@ -157,11 +157,7 @@ static const char* getProductName(const FFstrbuf* hwModel) const char* ffDetectHost(FFHostResult* host) { - ffStrbufInit(&host->productName); - ffStrbufInit(&host->productFamily); - ffStrbufInit(&host->productVersion); - ffStrbufInit(&host->productSku); - ffStrbufInitS(&host->sysVendor, "Apple"); + ffStrbufAppendS(&host->sysVendor, "Apple"); const char* error = ffSysctlGetString("hw.model", &host->productFamily); if (error) return error; diff --git a/src/detection/host/host_bsd.c b/src/detection/host/host_bsd.c index dcbd5006b..9a7dcbd71 100644 --- a/src/detection/host/host_bsd.c +++ b/src/detection/host/host_bsd.c @@ -1,18 +1,19 @@ #include "host.h" #include "common/settings.h" +#include "util/smbiosHelper.h" const char* ffDetectHost(FFHostResult* host) { - ffStrbufInit(&host->productName); - ffStrbufInit(&host->productFamily); - ffStrbufInit(&host->productVersion); - ffStrbufInit(&host->productSku); - ffStrbufInit(&host->sysVendor); ffSettingsGetFreeBSDKenv("smbios.system.product", &host->productName); + ffCleanUpSmbiosValue(&host->productName); ffSettingsGetFreeBSDKenv("smbios.system.family", &host->productFamily); + ffCleanUpSmbiosValue(&host->productFamily); ffSettingsGetFreeBSDKenv("smbios.system.version", &host->productVersion); + ffCleanUpSmbiosValue(&host->productVersion); ffSettingsGetFreeBSDKenv("smbios.system.sku", &host->productSku); + ffCleanUpSmbiosValue(&host->productSku); ffSettingsGetFreeBSDKenv("smbios.system.maker", &host->sysVendor); + ffCleanUpSmbiosValue(&host->sysVendor); return NULL; } diff --git a/src/detection/host/host_linux.c b/src/detection/host/host_linux.c index ac9e17a94..386affbcc 100644 --- a/src/detection/host/host_linux.c +++ b/src/detection/host/host_linux.c @@ -1,41 +1,18 @@ #include "host.h" #include "common/io/io.h" #include "common/processing.h" +#include "util/smbiosHelper.h" #include -static bool hostValueSet(FFstrbuf* value) -{ - return - value->length > 0 && - ffStrbufStartsWithIgnCaseS(value, "To be filled") != true && - ffStrbufStartsWithIgnCaseS(value, "To be set") != true && - ffStrbufStartsWithIgnCaseS(value, "OEM") != true && - ffStrbufStartsWithIgnCaseS(value, "O.E.M.") != true && - ffStrbufIgnCaseCompS(value, "None") != 0 && - ffStrbufIgnCaseCompS(value, "System Product") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Product Version") != 0 && - ffStrbufIgnCaseCompS(value, "System Name") != 0 && - ffStrbufIgnCaseCompS(value, "System Version") != 0 && - ffStrbufIgnCaseCompS(value, "Default string") != 0 && - ffStrbufIgnCaseCompS(value, "Undefined") != 0 && - ffStrbufIgnCaseCompS(value, "Not Specified") != 0 && - ffStrbufIgnCaseCompS(value, "Not Applicable") != 0 && - ffStrbufIgnCaseCompS(value, "INVALID") != 0 && - ffStrbufIgnCaseCompS(value, "Type1ProductConfigId") != 0 && - ffStrbufIgnCaseCompS(value, "All Series") != 0 - ; -} - -static void getHostValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) +static void getSmbiosValue(const char* devicesPath, const char* classPath, FFstrbuf* buffer) { ffReadFileBuffer(devicesPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffReadFileBuffer(classPath, buffer); - if(hostValueSet(buffer)) + if(ffIsSmbiosValueSet(buffer)) return; ffStrbufClear(buffer); @@ -43,17 +20,17 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu static void getHostProductName(FFstrbuf* name) { - getHostValue("/sys/devices/virtual/dmi/id/product_name", "/sys/class/dmi/id/product_name", name); + getSmbiosValue("/sys/devices/virtual/dmi/id/product_name", "/sys/class/dmi/id/product_name", name); if(name->length > 0) return; ffReadFileBuffer("/sys/firmware/devicetree/base/model", name); - if(hostValueSet(name)) + if(ffIsSmbiosValueSet(name)) return; //does a clear before the read ffReadFileBuffer("/tmp/sysinfo/model", name); - if(hostValueSet(name)) + if(ffIsSmbiosValueSet(name)) return; ffStrbufClear(name); @@ -61,20 +38,11 @@ static void getHostProductName(FFstrbuf* name) const char* ffDetectHost(FFHostResult* host) { - ffStrbufInit(&host->productFamily); - getHostValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->productFamily); - - ffStrbufInit(&host->productName); + getSmbiosValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->productFamily); getHostProductName(&host->productName); - - ffStrbufInit(&host->productVersion); - getHostValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->productVersion); - - ffStrbufInit(&host->productSku); - getHostValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->productSku); - - ffStrbufInit(&host->sysVendor); - getHostValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->sysVendor); + getSmbiosValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->productVersion); + getSmbiosValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->productSku); + getSmbiosValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->sysVendor); //KVM/Qemu virtual machine if(ffStrbufStartsWithS(&host->productName, "Standard PC")) diff --git a/src/detection/host/host_windows.c b/src/detection/host/host_windows.c index 1a940e1ac..9498fa5e6 100644 --- a/src/detection/host/host_windows.c +++ b/src/detection/host/host_windows.c @@ -3,12 +3,6 @@ const char* ffDetectHost(FFHostResult* host) { - ffStrbufInit(&host->productName); - ffStrbufInit(&host->productFamily); - ffStrbufInit(&host->productVersion); - ffStrbufInit(&host->productSku); - ffStrbufInit(&host->sysVendor); - FF_HKEY_AUTO_DESTROY hKey = NULL; if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, NULL)) diff --git a/src/modules/host/host.c b/src/modules/host/host.c index e5dcaa8e9..a196c2cc7 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -9,6 +9,11 @@ void ffPrintHost(FFinstance* instance, FFHostOptions* options) { FFHostResult host; + ffStrbufInit(&host.productFamily); + ffStrbufInit(&host.productName); + ffStrbufInit(&host.productVersion); + ffStrbufInit(&host.productSku); + ffStrbufInit(&host.sysVendor); const char* error = ffDetectHost(&host); if(error) diff --git a/src/util/smbiosHelper.c b/src/util/smbiosHelper.c new file mode 100644 index 000000000..1033ec880 --- /dev/null +++ b/src/util/smbiosHelper.c @@ -0,0 +1,26 @@ +#include "smbiosHelper.h" + +bool ffIsSmbiosValueSet(FFstrbuf* value) +{ + return + value->length > 0 && + !ffStrbufStartsWithIgnCaseS(value, "To be filled") && + !ffStrbufStartsWithIgnCaseS(value, "To be set") && + !ffStrbufStartsWithIgnCaseS(value, "OEM") && + !ffStrbufStartsWithIgnCaseS(value, "O.E.M.") && + !ffStrbufIgnCaseEqualS(value, "None") && + !ffStrbufIgnCaseEqualS(value, "System Product") && + !ffStrbufIgnCaseEqualS(value, "System Product Name") && + !ffStrbufIgnCaseEqualS(value, "System Product Version") && + !ffStrbufIgnCaseEqualS(value, "System Name") && + !ffStrbufIgnCaseEqualS(value, "System Version") && + !ffStrbufIgnCaseEqualS(value, "Default string") && + !ffStrbufIgnCaseEqualS(value, "Undefined") && + !ffStrbufIgnCaseEqualS(value, "Not Specified") && + !ffStrbufIgnCaseEqualS(value, "Not Applicable") && + !ffStrbufIgnCaseEqualS(value, "INVALID") && + !ffStrbufIgnCaseEqualS(value, "Type1ProductConfigId") && + !ffStrbufIgnCaseEqualS(value, "All Series") && + !ffStrbufIgnCaseEqualS(value, "N/A") + ; +} diff --git a/src/util/smbiosHelper.h b/src/util/smbiosHelper.h new file mode 100644 index 000000000..9be3e3120 --- /dev/null +++ b/src/util/smbiosHelper.h @@ -0,0 +1,15 @@ +#pragma once + +#ifndef FASTFETCH_INCLUDED_SMBIOSVALUEHELPER +#define FASTFETCH_INCLUDED_SMBIOSVALUEHELPER + +#include "util/FFstrbuf.h" + +bool ffIsSmbiosValueSet(FFstrbuf* value); +static inline void ffCleanUpSmbiosValue(FFstrbuf* value) +{ + if (!ffIsSmbiosValueSet(value)) + ffStrbufClear(value); +} + +#endif \ No newline at end of file