From 2ff4daef205387c906acc99d236d445aed535860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 19 Jun 2023 21:27:47 +0800 Subject: [PATCH] Board: simplify code --- src/detection/board/board.h | 3 +-- src/detection/board/board_bsd.c | 6 ++---- src/detection/board/board_linux.c | 10 ++-------- src/detection/board/board_nosupport.c | 8 ++------ src/detection/board/board_windows.c | 19 ++++++++----------- src/modules/board/board.c | 10 ++++++---- 6 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/detection/board/board.h b/src/detection/board/board.h index 15044469e..f4065d103 100644 --- a/src/detection/board/board.h +++ b/src/detection/board/board.h @@ -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 diff --git a/src/detection/board/board_bsd.c b/src/detection/board/board_bsd.c index a10821ac6..f05811bec 100644 --- a/src/detection/board/board_bsd.c +++ b/src/detection/board/board_bsd.c @@ -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; } diff --git a/src/detection/board/board_linux.c b/src/detection/board/board_linux.c index c376b0fe6..435087798 100644 --- a/src/detection/board/board_linux.c +++ b/src/detection/board/board_linux.c @@ -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; } diff --git a/src/detection/board/board_nosupport.c b/src/detection/board/board_nosupport.c index 0b182ba3e..7dc258c97 100644 --- a/src/detection/board/board_nosupport.c +++ b/src/detection/board/board_nosupport.c @@ -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"; } diff --git a/src/detection/board/board_windows.c b/src/detection/board/board_windows.c index 4d02b679b..a027fb883 100644 --- a/src/detection/board/board_windows.c +++ b/src/detection/board/board_windows.c @@ -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; } diff --git a/src/modules/board/board.c b/src/modules/board/board.c index b590d96b0..fe72f5b7d 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -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)