Board: simplify code

This commit is contained in:
李通洲
2023-06-19 21:27:47 +08:00
parent 9bd8a788c8
commit 2ff4daef20
6 changed files with 21 additions and 35 deletions
+1 -2
View File
@@ -10,9 +10,8 @@ typedef struct FFBoardResult
FFstrbuf boardName;
FFstrbuf boardVendor;
FFstrbuf boardVersion;
FFstrbuf error;
} FFBoardResult;
void ffDetectBoard(FFBoardResult* result);
const char* ffDetectBoard(FFBoardResult* result);
#endif
+2 -4
View File
@@ -1,12 +1,10 @@
#include "board.h"
#include "common/settings.h"
void ffDetectBoard(FFBoardResult* board)
const char* ffDetectBoard(FFBoardResult* board)
{
ffStrbufInit(&board->boardName);
ffStrbufInit(&board->boardVendor);
ffStrbufInit(&board->boardVersion);
ffSettingsGetFreeBSDKenv("smbios.planar.product", &board->boardName);
ffSettingsGetFreeBSDKenv("smbios.planar.maker", &board->boardVendor);
ffSettingsGetFreeBSDKenv("smbios.planar.version", &board->boardVersion);
return NULL;
}
+2 -8
View File
@@ -41,16 +41,10 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu
ffStrbufClear(buffer);
}
void ffDetectBoard(FFBoardResult* board)
const char* ffDetectBoard(FFBoardResult* board)
{
ffStrbufInit(&board->error);
ffStrbufInit(&board->boardName);
getHostValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->boardName);
ffStrbufInit(&board->boardVendor);
getHostValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->boardVendor);
ffStrbufInit(&board->boardVersion);
getHostValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->boardVersion);
return NULL;
}
+2 -6
View File
@@ -1,10 +1,6 @@
#include "board.h"
void ffDetectBoard(FFBoardResult* board)
const char* ffDetectBoard(FFBoardResult* board)
{
ffStrbufInitS(&board->error, "Not supported on this platform");
ffStrbufInit(&board->boardName);
ffStrbufInit(&board->boardVendor);
ffStrbufInit(&board->boardVersion);
return "Not supported on this platform";
}
+8 -11
View File
@@ -1,21 +1,18 @@
#include "board.h"
#include "util/windows/registry.h"
void ffDetectBoard(FFBoardResult* board)
const char* ffDetectBoard(FFBoardResult* board)
{
ffStrbufInit(&board->error);
ffStrbufInit(&board->boardName);
ffStrbufInit(&board->boardVendor);
ffStrbufInit(&board->boardVersion);
FF_HKEY_AUTO_DESTROY hKey = NULL;
if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, &board->error))
return;
if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, NULL))
return "ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L\"HARDWARE\\DESCRIPTION\\System\\BIOS\") failed";
if(!ffRegReadStrbuf(hKey, L"BaseBoardProduct", &board->boardName, NULL))
return "ffRegReadStrbuf(hKey, L\"BaseBoardProduct\") failed";
if(!ffRegReadStrbuf(hKey, L"BaseBoardProduct", &board->boardName, &board->error))
return;
ffRegReadStrbuf(hKey, L"BaseBoardManufacturer", &board->boardVendor, NULL);
ffRegReadStrbuf(hKey, L"BaseBoardVersion", &board->boardVersion, NULL);
return NULL;
}
+6 -4
View File
@@ -9,11 +9,14 @@
void ffPrintBoard(FFinstance* instance, FFBoardOptions* options)
{
FFBoardResult result;
ffDetectBoard(&result);
ffStrbufInit(&result.boardName);
ffStrbufInit(&result.boardVendor);
ffStrbufInit(&result.boardVersion);
const char* error = ffDetectBoard(&result);
if(result.error.length > 0)
if(error)
{
ffPrintError(instance, FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "%*s", result.error.length, result.error.chars);
ffPrintError(instance, FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "%s", error);
goto exit;
}
@@ -44,7 +47,6 @@ exit:
ffStrbufDestroy(&result.boardName);
ffStrbufDestroy(&result.boardVendor);
ffStrbufDestroy(&result.boardVersion);
ffStrbufDestroy(&result.error);
}
void ffInitBoardOptions(FFBoardOptions* options)