From 5483cb9143edbd7ec417ca2aca7a76868f0be2e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Fri, 16 Jun 2023 16:33:43 +0800 Subject: [PATCH] Chassis: refactor --- src/detection/chassis/chassis.h | 3 +-- src/detection/chassis/chassis_bsd.c | 7 ++----- src/detection/chassis/chassis_linux.c | 10 ++-------- src/detection/chassis/chassis_nosupport.c | 8 ++------ src/modules/chassis/chassis.c | 13 ++++++++----- 5 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/detection/chassis/chassis.h b/src/detection/chassis/chassis.h index eb6ce4c6c..221b066ce 100644 --- a/src/detection/chassis/chassis.h +++ b/src/detection/chassis/chassis.h @@ -10,9 +10,8 @@ typedef struct FFChassisResult FFstrbuf chassisType; FFstrbuf chassisVendor; FFstrbuf chassisVersion; - FFstrbuf error; } FFChassisResult; -void ffDetectChassis(FFChassisResult* result); +const char* ffDetectChassis(FFChassisResult* result); #endif diff --git a/src/detection/chassis/chassis_bsd.c b/src/detection/chassis/chassis_bsd.c index e6475c2eb..9614cfd7a 100644 --- a/src/detection/chassis/chassis_bsd.c +++ b/src/detection/chassis/chassis_bsd.c @@ -1,13 +1,10 @@ #include "chassis.h" #include "common/settings.h" -void ffDetectChassis(FFChassisResult* result) +const char* ffDetectChassis(FFChassisResult* result) { - ffStrbufInit(&result->error); - ffStrbufInit(&result->chassisType); - ffStrbufInit(&result->chassisVendor); - ffStrbufInit(&result->chassisVersion); ffSettingsGetFreeBSDKenv("smbios.chassis.type", &result->chassisType); ffSettingsGetFreeBSDKenv("smbios.chassis.maker", &result->chassisVendor); ffSettingsGetFreeBSDKenv("smbios.chassis.version", &result->chassisVersion); + return NULL; } diff --git a/src/detection/chassis/chassis_linux.c b/src/detection/chassis/chassis_linux.c index 0898fa4b8..0e40b217e 100644 --- a/src/detection/chassis/chassis_linux.c +++ b/src/detection/chassis/chassis_linux.c @@ -40,16 +40,10 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu ffStrbufClear(buffer); } -void ffDetectChassis(FFChassisResult* result) +const char* ffDetectChassis(FFChassisResult* result) { - ffStrbufInit(&result->error); - - ffStrbufInit(&result->chassisType); getHostValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->chassisType); - - ffStrbufInit(&result->chassisVendor); getHostValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->chassisVendor); - - ffStrbufInit(&result->chassisVersion); getHostValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->chassisVersion); + return NULL; } diff --git a/src/detection/chassis/chassis_nosupport.c b/src/detection/chassis/chassis_nosupport.c index 42c182567..c2acd7579 100644 --- a/src/detection/chassis/chassis_nosupport.c +++ b/src/detection/chassis/chassis_nosupport.c @@ -1,10 +1,6 @@ #include "chassis.h" -void ffDetectChassis(FFChassisResult* result) +const char* ffDetectChassis(FF_MAYBE_UNUSED FFChassisResult* result) { - ffStrbufInitS(&result->error, "Not supported on this platform"); - - ffStrbufInit(&result->chassisType); - ffStrbufInit(&result->chassisVendor); - ffStrbufInit(&result->chassisVersion); + return "Not supported on this platform"; } diff --git a/src/modules/chassis/chassis.c b/src/modules/chassis/chassis.c index 7d8e771aa..ac6a41354 100644 --- a/src/modules/chassis/chassis.c +++ b/src/modules/chassis/chassis.c @@ -8,18 +8,22 @@ void ffPrintChassis(FFinstance* instance, FFChassisOptions* options) { FFChassisResult result; - ffDetectChassis(&result); + ffStrbufInit(&result.chassisType); + ffStrbufInit(&result.chassisVendor); + ffStrbufInit(&result.chassisVersion); - if(result.error.length > 0) + const char* error = ffDetectChassis(&result); + + if(error) { - ffPrintError(instance, FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "%*s", result.error.length, result.error.chars); + ffPrintError(instance, FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); goto exit; } if(result.chassisType.length == 0) { ffPrintError(instance, FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "chassis_type is not set by O.E.M."); - return; + goto exit; } if(options->moduleArgs.outputFormat.length == 0) @@ -46,7 +50,6 @@ exit: ffStrbufDestroy(&result.chassisType); ffStrbufDestroy(&result.chassisVendor); ffStrbufDestroy(&result.chassisVersion); - ffStrbufDestroy(&result.error); } void ffInitChassisOptions(FFChassisOptions* options)