From e9b3a799bcc6e516f06cb695f57a71bdd9fe123e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 12 Jun 2023 15:42:26 +0800 Subject: [PATCH] OS: make `osFile` a global option `OS` is used by Module `Package` --- src/common/init.c | 6 ++++-- src/common/jsonconfig.c | 4 +++- src/detection/os/os_linux.c | 4 ++-- src/fastfetch.c | 2 ++ src/fastfetch.h | 2 ++ src/modules/os/option.h | 4 ---- src/modules/os/os.c | 23 ----------------------- 7 files changed, 13 insertions(+), 32 deletions(-) diff --git a/src/common/init.c b/src/common/init.c index 726057508..f469de137 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -36,9 +36,10 @@ static void defaultConfig(FFinstance* instance) ffStrbufInit(&instance->config.colorKeys); ffStrbufInit(&instance->config.colorTitle); ffStrbufInitS(&instance->config.keyValueSeparator, ": "); - + #if defined(__linux__) || defined(__FreeBSD__) ffStrbufInit(&instance->config.playerName); + ffStrbufInit(&instance->config.osFile); #endif instance->config.showErrors = false; @@ -254,9 +255,10 @@ static void destroyConfig(FFinstance* instance) ffStrbufDestroy(&instance->config.colorKeys); ffStrbufDestroy(&instance->config.colorTitle); ffStrbufDestroy(&instance->config.keyValueSeparator); - + #if defined(__linux__) || defined(__FreeBSD__) ffStrbufDestroy(&instance->config.playerName); + ffStrbufDestroy(&instance->config.osFile); #endif ffDestroyTitleOptions(&instance->config.title); diff --git a/src/common/jsonconfig.c b/src/common/jsonconfig.c index 61b460a89..f4e0ff4e9 100644 --- a/src/common/jsonconfig.c +++ b/src/common/jsonconfig.c @@ -304,10 +304,12 @@ const char* ffParseGeneralJsonConfig(FFinstance* instance) config->escapeBedrock = yyjson_get_bool(val); else if (strcasecmp(key, "pipe") == 0) config->pipe = yyjson_get_bool(val); - + #if defined(__linux__) || defined(__FreeBSD__) else if (strcasecmp(key, "playerName") == 0) ffStrbufSetS(&config->playerName, yyjson_get_str(val)); + else if (strcasecmp(key, "osFile") == 0) + ffStrbufSetS(&config->osFile, yyjson_get_str(val)); #endif else diff --git a/src/detection/os/os_linux.c b/src/detection/os/os_linux.c index a9db735db..063e8455b 100644 --- a/src/detection/os/os_linux.c +++ b/src/detection/os/os_linux.c @@ -96,9 +96,9 @@ static void getUbuntuFlavour(FFOSResult* result) static void detectOS(FFOSResult* os, const FFinstance* instance) { - if(instance->config.os.file.length > 0) + if(instance->config.osFile.length > 0) { - parseFile(instance->config.os.file.chars, os); + parseFile(instance->config.osFile.chars, os); return; } diff --git a/src/fastfetch.c b/src/fastfetch.c index 0ec386abe..577239ff4 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -902,6 +902,8 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con #if defined(__linux__) || defined(__FreeBSD__) else if(strcasecmp(key, "--player-name") == 0) optionParseString(key, value, &instance->config.playerName); + else if (strcasecmp(key, "--os-file") == 0) + optionParseString(key, value, &instance->config.osFile); #endif //////////////// diff --git a/src/fastfetch.h b/src/fastfetch.h index dbc87b2da..a5e859ecc 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -48,8 +48,10 @@ typedef struct FFconfig bool multithreading; bool stat; + // Module options that cannot be put in module option structure #if defined(__linux__) || defined(__FreeBSD__) FFstrbuf playerName; + FFstrbuf osFile; #endif FFTitleOptions title; diff --git a/src/modules/os/option.h b/src/modules/os/option.h index 7d6b4d082..be1bfda1f 100644 --- a/src/modules/os/option.h +++ b/src/modules/os/option.h @@ -8,8 +8,4 @@ typedef struct FFOSOptions { const char* moduleName; FFModuleArgs moduleArgs; - - #if defined(__linux__) || defined(__FreeBSD__) - FFstrbuf file; - #endif } FFOSOptions; diff --git a/src/modules/os/os.c b/src/modules/os/os.c index 41ec29ae6..f057aa762 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -140,10 +140,6 @@ void ffInitOSOptions(FFOSOptions* options) { options->moduleName = FF_OS_MODULE_NAME; ffOptionInitModuleArg(&options->moduleArgs); - - #if defined(__linux__) || defined(__FreeBSD__) - ffStrbufInit(&options->file); - #endif } bool ffParseOSCommandOptions(FFOSOptions* options, const char* key, const char* value) @@ -153,23 +149,12 @@ bool ffParseOSCommandOptions(FFOSOptions* options, const char* key, const char* if (ffOptionParseModuleArgs(key, subKey, value, &options->moduleArgs)) return true; - #if defined(__linux__) || defined(__FreeBSD__) - if (strcasecmp(subKey, "file") == 0) - { - ffOptionParseString(key, value, &options->file); - return true; - } - #endif - return false; } void ffDestroyOSOptions(FFOSOptions* options) { ffOptionDestroyModuleArg(&options->moduleArgs); - #if defined(__linux__) || defined(__FreeBSD__) - ffStrbufDestroy(&options->file); - #endif } void ffParseOSJsonObject(FFinstance* instance, yyjson_val* module) @@ -190,14 +175,6 @@ void ffParseOSJsonObject(FFinstance* instance, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options.moduleArgs)) continue; - #if defined(__linux__) || defined(__FreeBSD__) - if (strcasecmp(key, "file") == 0) - { - ffStrbufSetS(&options.file, yyjson_get_str(val)); - continue; - } - #endif - ffPrintError(instance, FF_OS_MODULE_NAME, 0, &options.moduleArgs, "Unknown JSON key %s", key); } }