From fa4e11c73bcf421c63b918801b56049b7765cc6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 4 Aug 2025 16:46:28 +0800 Subject: [PATCH] JsonConfig: write all flags when generating config file --- doc/json_schema.json | 53 ++- src/common/jsonconfig.c | 14 +- src/common/jsonconfig.h | 2 +- src/common/percent.c | 14 +- src/common/percent.h | 4 +- src/common/temps.c | 19 +- src/common/temps.h | 2 +- src/modules/battery/battery.c | 11 +- src/modules/bios/bios.c | 5 +- src/modules/bluetooth/bluetooth.c | 10 +- src/modules/bluetoothradio/bluetoothradio.c | 5 +- src/modules/board/board.c | 5 +- src/modules/bootmgr/bootmgr.c | 5 +- src/modules/brightness/brightness.c | 13 +- src/modules/btrfs/btrfs.c | 7 +- src/modules/camera/camera.c | 5 +- src/modules/chassis/chassis.c | 5 +- src/modules/colors/colors.c | 44 +-- src/modules/command/command.c | 14 +- src/modules/cpu/cpu.c | 10 +- src/modules/cpucache/cpucache.c | 5 +- src/modules/cpuusage/cpuusage.c | 10 +- src/modules/cursor/cursor.c | 5 +- src/modules/custom/custom.c | 5 +- src/modules/datetime/datetime.c | 5 +- src/modules/de/de.c | 8 +- src/modules/disk/disk.c | 40 +- src/modules/diskio/diskio.c | 11 +- src/modules/display/display.c | 56 +-- src/modules/dns/dns.c | 33 +- src/modules/editor/editor.c | 5 +- src/modules/font/font.c | 5 +- src/modules/gamepad/gamepad.c | 7 +- src/modules/gpu/gpu.c | 76 ++-- src/modules/gpu/option.h | 1 - src/modules/host/host.c | 5 +- src/modules/icons/icons.c | 5 +- src/modules/initsystem/initsystem.c | 5 +- src/modules/kernel/kernel.c | 5 +- src/modules/keyboard/keyboard.c | 5 +- src/modules/lm/lm.c | 5 +- src/modules/loadavg/loadavg.c | 13 +- src/modules/locale/locale.c | 5 +- src/modules/localip/localip.c | 44 +-- src/modules/media/media.c | 5 +- src/modules/memory/memory.c | 7 +- src/modules/monitor/monitor.c | 5 +- src/modules/mouse/mouse.c | 5 +- src/modules/netio/netio.c | 14 +- src/modules/opencl/opencl.c | 5 +- src/modules/opengl/opengl.c | 28 +- src/modules/os/os.c | 5 +- src/modules/packages/packages.c | 84 ++--- src/modules/physicaldisk/physicaldisk.c | 10 +- src/modules/physicalmemory/physicalmemory.c | 5 +- src/modules/player/player.c | 5 +- src/modules/poweradapter/poweradapter.c | 5 +- src/modules/processes/processes.c | 5 +- src/modules/publicip/publicip.c | 14 +- src/modules/separator/separator.c | 8 +- src/modules/shell/shell.c | 5 +- src/modules/sound/sound.c | 30 +- src/modules/swap/swap.c | 8 +- src/modules/terminal/terminal.c | 5 +- src/modules/terminalfont/terminalfont.c | 5 +- src/modules/terminalsize/terminalsize.c | 5 +- src/modules/terminaltheme/terminaltheme.c | 5 +- src/modules/theme/theme.c | 5 +- src/modules/title/title.c | 25 +- src/modules/tpm/tpm.c | 5 +- src/modules/uptime/uptime.c | 5 +- src/modules/users/users.c | 11 +- src/modules/version/version.c | 5 +- src/modules/vulkan/vulkan.c | 5 +- src/modules/wallpaper/wallpaper.c | 5 +- src/modules/weather/weather.c | 14 +- src/modules/wifi/wifi.c | 7 +- src/modules/wm/wm.c | 8 +- src/modules/wmtheme/wmtheme.c | 5 +- src/modules/zpool/zpool.c | 7 +- src/options/display.c | 399 ++++++++++++-------- src/options/general.c | 43 +-- src/options/logo.c | 199 +++++----- 83 files changed, 700 insertions(+), 932 deletions(-) diff --git a/doc/json_schema.json b/doc/json_schema.json index b8fce5a35..ba6940442 100644 --- a/doc/json_schema.json +++ b/doc/json_schema.json @@ -10,25 +10,25 @@ ] }, "key": { - "description": "Key of the module", - "type": "string" + "description": "Key of the module\nOne whitespace character (` `) can be used to hide the key", + "type": "string", + "minLength": 1 }, "keyColor": { - "description": "Color of the module key. Left empty to use `display.color.keys`", + "description": "Color of the module key to override the global setting `display.color.key`", "$ref": "#/$defs/colors" }, "keyWidth": { - "description": "Width of the module key. Use 0 to use `display.keyWidth`", + "description": "Width of the module key to override the global setting `display.keyWidth`", "type": "integer", - "minimum": 0, - "default": 0 + "minimum": 1 }, "keyIcon": { "description": "Set the icon to be displayed by `display.keyType: \"icon\"`", "type": "string" }, "outputColor": { - "description": "Output color of the module. Left empty to use `display.color.output`", + "description": "Output color of the module to override the global setting `display.color.output`", "$ref": "#/$defs/colors" }, "percentType": { @@ -549,7 +549,7 @@ "const": null }, { - "description": "Set the source file of the logo", + "description": "Set the source file of the logo or built-in ASCII art name", "type": "string" }, { @@ -671,14 +671,30 @@ } }, "width": { - "type": "integer", - "description": "Set the width of the logo (in characters). Required for iTerm image protocol", - "minimum": 1 + "oneOf": [ + { + "type": "null", + "description": "Auto detect width (default)" + }, + { + "type": "integer", + "description": "Set the width of the logo (in characters). Required for some image protocols", + "minimum": 1 + } + ] }, "height": { - "type": "integer", - "description": "Set the height of the logo (in characters). Required for iTerm image protocol", - "minimum": 1 + "oneOf": [ + { + "type": "null", + "description": "Auto detect width (default)" + }, + { + "type": "integer", + "description": "Set the height of the logo (in characters). Required for some image protocols", + "minimum": 1 + } + ] }, "padding": { "type": "object", @@ -1998,9 +2014,15 @@ "key": { "$ref": "#/$defs/key" }, + "keyColor": { + "$ref": "#/$defs/keyColor" + }, "keyIcon": { "$ref": "#/$defs/keyIcon" }, + "keyWidth": { + "$ref": "#/$defs/keyWidth" + }, "condition": { "$ref": "#/$defs/conditions" } @@ -2635,6 +2657,9 @@ ], "default": null }, + "percent": { + "$ref": "#/$defs/percent" + }, "key": { "$ref": "#/$defs/key" }, diff --git a/src/common/jsonconfig.c b/src/common/jsonconfig.c index 155f65668..838b307ac 100644 --- a/src/common/jsonconfig.c +++ b/src/common/jsonconfig.c @@ -50,17 +50,19 @@ bool ffJsonConfigParseModuleArgs(yyjson_val* key, yyjson_val* val, FFModuleArgs* return false; } -void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* defaultModuleArgs, FFModuleArgs* moduleArgs) +void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* moduleArgs) { - if (!ffStrbufEqual(&defaultModuleArgs->key, &moduleArgs->key)) + if (moduleArgs->key.length > 0) yyjson_mut_obj_add_strbuf(doc, module, "key", &moduleArgs->key); - if (!ffStrbufEqual(&defaultModuleArgs->outputFormat, &moduleArgs->outputFormat)) + if (moduleArgs->outputFormat.length > 0) yyjson_mut_obj_add_strbuf(doc, module, "format", &moduleArgs->outputFormat); - if (!ffStrbufEqual(&defaultModuleArgs->keyColor, &moduleArgs->keyColor)) + if (moduleArgs->outputColor.length > 0) + yyjson_mut_obj_add_strbuf(doc, module, "outputColor", &moduleArgs->outputColor); + if (moduleArgs->keyColor.length > 0) yyjson_mut_obj_add_strbuf(doc, module, "keyColor", &moduleArgs->keyColor); - if (moduleArgs->keyWidth != defaultModuleArgs->keyWidth) + if (moduleArgs->keyWidth > 0) yyjson_mut_obj_add_uint(doc, module, "keyWidth", moduleArgs->keyWidth); - if (!ffStrbufEqual(&defaultModuleArgs->keyIcon, &moduleArgs->keyIcon)) + if (moduleArgs->keyIcon.length > 0) yyjson_mut_obj_add_strbuf(doc, module, "keyIcon", &moduleArgs->keyIcon); } diff --git a/src/common/jsonconfig.h b/src/common/jsonconfig.h index 90df7262b..08a297f75 100644 --- a/src/common/jsonconfig.h +++ b/src/common/jsonconfig.h @@ -5,7 +5,7 @@ bool ffJsonConfigParseModuleArgs(yyjson_val* key, yyjson_val* val, FFModuleArgs* moduleArgs); const char* ffJsonConfigParseEnum(yyjson_val* val, int* result, FFKeyValuePair pairs[]); void ffPrintJsonConfig(bool prepare, yyjson_mut_doc* jsonDoc); -void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* defaultModuleArgs, FFModuleArgs* moduleArgs); +void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* moduleArgs); yyjson_api_inline yyjson_mut_val* yyjson_mut_strbuf(yyjson_mut_doc *doc, const FFstrbuf* buf) { return yyjson_mut_strncpy(doc, buf->chars, buf->length); diff --git a/src/common/percent.c b/src/common/percent.c index 6779d1ef0..12bd86043 100644 --- a/src/common/percent.c +++ b/src/common/percent.c @@ -310,16 +310,10 @@ bool ffPercentParseJsonObject(yyjson_val* key, yyjson_val* value, FFPercentageMo return true; } -void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFPercentageModuleConfig defaultConfig, FFPercentageModuleConfig config) +void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFPercentageModuleConfig config) { - if (config.green == defaultConfig.green && config.yellow == defaultConfig.yellow) - return; - yyjson_mut_val* percent = yyjson_mut_obj_add_obj(doc, module, "percent"); - if (config.green != defaultConfig.green) - yyjson_mut_obj_add_uint(doc, percent, "green", config.green); - if (config.yellow != defaultConfig.yellow) - yyjson_mut_obj_add_uint(doc, percent, "yellow", config.yellow); - if (config.type != defaultConfig.type) - yyjson_mut_obj_add_uint(doc, percent, "type", config.type); + yyjson_mut_obj_add_uint(doc, percent, "green", config.green); + yyjson_mut_obj_add_uint(doc, percent, "yellow", config.yellow); + yyjson_mut_obj_add_uint(doc, percent, "type", config.type); } diff --git a/src/common/percent.h b/src/common/percent.h index b1b1bdc7e..a8bb18e33 100644 --- a/src/common/percent.h +++ b/src/common/percent.h @@ -11,7 +11,7 @@ typedef enum __attribute__((__packed__)) FFPercentageTypeFlags FF_PERCENTAGE_TYPE_BAR_BIT = 1 << 1, FF_PERCENTAGE_TYPE_HIDE_OTHERS_BIT = 1 << 2, FF_PERCENTAGE_TYPE_NUM_COLOR_BIT = 1 << 3, - FF_PERCENTAGE_TYPE_BAR_MONOCHROME_BIT = FF_PERCENTAGE_TYPE_NUM_COLOR_BIT, + FF_PERCENTAGE_TYPE_BAR_MONOCHROME_BIT = 1 << 4, FF_PERCENTAGE_TYPE_FORCE_UNSIGNED_ = UINT8_MAX, } FFPercentageTypeFlags; static_assert(sizeof(FFPercentageTypeFlags) == 1, ""); @@ -41,5 +41,5 @@ typedef struct yyjson_mut_doc yyjson_mut_doc; typedef struct yyjson_mut_val yyjson_mut_val; bool ffPercentParseCommandOptions(const char* key, const char* subkey, const char* value, FFPercentageModuleConfig* config); bool ffPercentParseJsonObject(yyjson_val* key, yyjson_val* value, FFPercentageModuleConfig* config); -void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFPercentageModuleConfig defaultConfig, FFPercentageModuleConfig config); +void ffPercentGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFPercentageModuleConfig config); const char* ffPercentParseTypeJsonConfig(yyjson_val* value, FFPercentageTypeFlags* result); diff --git a/src/common/temps.c b/src/common/temps.c index c07a2aed0..002ee6f48 100644 --- a/src/common/temps.c +++ b/src/common/temps.c @@ -159,23 +159,14 @@ bool ffTempsParseJsonObject(yyjson_val* key, yyjson_val* value, bool* useTemp, F return true; } -void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FF_MAYBE_UNUSED bool defaultTemp, FFColorRangeConfig defaultConfig, bool temp, FFColorRangeConfig config) +void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, bool temp, FFColorRangeConfig config) { - assert(defaultTemp == false); // assume defaultTemp is always false - if (!temp) - return; - - if (config.green != defaultConfig.green || config.yellow != defaultConfig.yellow) - { - yyjson_mut_val* temp = yyjson_mut_obj_add_obj(doc, module, "temp"); - if (config.green != defaultConfig.green) - yyjson_mut_obj_add_uint(doc, temp, "green", config.green); - if (config.yellow != defaultConfig.yellow) - yyjson_mut_obj_add_uint(doc, temp, "yellow", config.yellow); - } + yyjson_mut_obj_add_bool(doc, module, "temp", false); else { - yyjson_mut_obj_add_bool(doc, module, "temp", true); + yyjson_mut_val* temp = yyjson_mut_obj_add_obj(doc, module, "temp"); + yyjson_mut_obj_add_uint(doc, temp, "green", config.green); + yyjson_mut_obj_add_uint(doc, temp, "yellow", config.yellow); } } diff --git a/src/common/temps.h b/src/common/temps.h index 5aa8f6bf3..f2f8eda89 100644 --- a/src/common/temps.h +++ b/src/common/temps.h @@ -6,4 +6,4 @@ void ffTempsAppendNum(double celsius, FFstrbuf* buffer, FFColorRangeConfig config, const FFModuleArgs* module); bool ffTempsParseCommandOptions(const char* key, const char* subkey, const char* value, bool* useTemp, FFColorRangeConfig* config); bool ffTempsParseJsonObject(yyjson_val* key, yyjson_val* value, bool* useTemp, FFColorRangeConfig* config); -void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FF_MAYBE_UNUSED bool defaultTemp, FFColorRangeConfig defaultConfig, bool temp, FFColorRangeConfig config); +void ffTempsGenerateJsonConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, bool temp, FFColorRangeConfig config); diff --git a/src/modules/battery/battery.c b/src/modules/battery/battery.c index 788008427..75158bd86 100644 --- a/src/modules/battery/battery.c +++ b/src/modules/battery/battery.c @@ -188,19 +188,14 @@ void ffParseBatteryJsonObject(FFBatteryOptions* options, yyjson_val* module) void ffGenerateBatteryJsonConfig(FFBatteryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBatteryOptions))) FFBatteryOptions defaultOptions; - ffInitBatteryOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); #ifdef _WIN32 - if (defaultOptions.useSetupApi != options->useSetupApi) yyjson_mut_obj_add_bool(doc, module, "useSetupApi", options->useSetupApi); #endif - ffTempsGenerateJsonConfig(doc, module, defaultOptions.temp, defaultOptions.tempConfig, options->temp, options->tempConfig); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffTempsGenerateJsonConfig(doc, module, options->temp, options->tempConfig); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateBatteryJsonResult(FFBatteryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/bios/bios.c b/src/modules/bios/bios.c index f802ffd79..d2f59629e 100644 --- a/src/modules/bios/bios.c +++ b/src/modules/bios/bios.c @@ -90,10 +90,7 @@ void ffParseBiosJsonObject(FFBiosOptions* options, yyjson_val* module) void ffGenerateBiosJsonConfig(FFBiosOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBiosOptions))) FFBiosOptions defaultOptions; - ffInitBiosOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateBiosJsonResult(FF_MAYBE_UNUSED FFBiosOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/bluetooth/bluetooth.c b/src/modules/bluetooth/bluetooth.c index c26316ae8..b5e05f21b 100644 --- a/src/modules/bluetooth/bluetooth.c +++ b/src/modules/bluetooth/bluetooth.c @@ -121,15 +121,11 @@ void ffParseBluetoothJsonObject(FFBluetoothOptions* options, yyjson_val* module) void ffGenerateBluetoothJsonConfig(FFBluetoothOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBluetoothOptions))) FFBluetoothOptions defaultOptions; - ffInitBluetoothOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "showDisconnected", options->showDisconnected); - if (options->showDisconnected != defaultOptions.showDisconnected) - yyjson_mut_obj_add_bool(doc, module, "showDisconnected", options->showDisconnected); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateBluetoothJsonResult(FFBluetoothOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/bluetoothradio/bluetoothradio.c b/src/modules/bluetoothradio/bluetoothradio.c index 9d96d27a7..810b5f438 100644 --- a/src/modules/bluetoothradio/bluetoothradio.c +++ b/src/modules/bluetoothradio/bluetoothradio.c @@ -120,10 +120,7 @@ void ffParseBluetoothRadioJsonObject(FFBluetoothRadioOptions* options, yyjson_va void ffGenerateBluetoothRadioJsonConfig(FFBluetoothRadioOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBluetoothRadioOptions))) FFBluetoothRadioOptions defaultOptions; - ffInitBluetoothRadioOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateBluetoothRadioJsonResult(FF_MAYBE_UNUSED FFBluetoothRadioOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/board/board.c b/src/modules/board/board.c index 78947294f..a9cf573f6 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -65,10 +65,7 @@ void ffParseBoardJsonObject(FFBoardOptions* options, yyjson_val* module) void ffGenerateBoardJsonConfig(FFBoardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBoardOptions))) FFBoardOptions defaultOptions; - ffInitBoardOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateBoardJsonResult(FF_MAYBE_UNUSED FFBoardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/bootmgr/bootmgr.c b/src/modules/bootmgr/bootmgr.c index 29c08500c..350499530 100644 --- a/src/modules/bootmgr/bootmgr.c +++ b/src/modules/bootmgr/bootmgr.c @@ -65,10 +65,7 @@ void ffParseBootmgrJsonObject(FFBootmgrOptions* options, yyjson_val* module) void ffGenerateBootmgrJsonConfig(FFBootmgrOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBootmgrOptions))) FFBootmgrOptions defaultOptions; - ffInitBootmgrOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateBootmgrJsonResult(FF_MAYBE_UNUSED FFBootmgrOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/brightness/brightness.c b/src/modules/brightness/brightness.c index 35e83f144..c3855b07d 100644 --- a/src/modules/brightness/brightness.c +++ b/src/modules/brightness/brightness.c @@ -142,18 +142,13 @@ void ffParseBrightnessJsonObject(FFBrightnessOptions* options, yyjson_val* modul void ffGenerateBrightnessJsonConfig(FFBrightnessOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBrightnessOptions))) FFBrightnessOptions defaultOptions; - ffInitBrightnessOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_uint(doc, module, "ddcciSleep", options->ddcciSleep); - if (defaultOptions.ddcciSleep != options->ddcciSleep) - yyjson_mut_obj_add_uint(doc, module, "ddcciSleep", options->ddcciSleep); + ffPercentGenerateJsonConfig(doc, module, options->percent); - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); - - if (defaultOptions.compact != options->compact) - yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); + yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); } void ffGenerateBrightnessJsonResult(FF_MAYBE_UNUSED FFBrightnessOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/btrfs/btrfs.c b/src/modules/btrfs/btrfs.c index 6872c00e0..e337d4c72 100644 --- a/src/modules/btrfs/btrfs.c +++ b/src/modules/btrfs/btrfs.c @@ -148,12 +148,9 @@ void ffParseBtrfsJsonObject(FFBtrfsOptions* options, yyjson_val* module) void ffGenerateBtrfsJsonConfig(FFBtrfsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyBtrfsOptions))) FFBtrfsOptions defaultOptions; - ffInitBtrfsOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateBtrfsJsonResult(FF_MAYBE_UNUSED FFBtrfsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/camera/camera.c b/src/modules/camera/camera.c index 557e27f2e..d12d7a662 100644 --- a/src/modules/camera/camera.c +++ b/src/modules/camera/camera.c @@ -82,10 +82,7 @@ void ffParseCameraJsonObject(FFCameraOptions* options, yyjson_val* module) void ffGenerateCameraJsonConfig(FFCameraOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCameraOptions))) FFCameraOptions defaultOptions; - ffInitCameraOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateCameraJsonResult(FF_MAYBE_UNUSED FFCameraOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/chassis/chassis.c b/src/modules/chassis/chassis.c index bf357c3cb..e1344ab2b 100644 --- a/src/modules/chassis/chassis.c +++ b/src/modules/chassis/chassis.c @@ -66,10 +66,7 @@ void ffParseChassisJsonObject(FFChassisOptions* options, yyjson_val* module) void ffGenerateChassisJsonConfig(FFChassisOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyChassisOptions))) FFChassisOptions defaultOptions; - ffInitChassisOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateChassisJsonResult(FF_MAYBE_UNUSED FFChassisOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/colors/colors.c b/src/modules/colors/colors.c index 21d870d76..27dae0f40 100644 --- a/src/modules/colors/colors.c +++ b/src/modules/colors/colors.c @@ -200,42 +200,30 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) void ffGenerateColorsJsonConfig(FFColorsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyColorsOptions))) FFColorsOptions defaultOptions; - ffInitColorsOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_remove_key(module, "format"); // Not supported - if (defaultOptions.symbol != options->symbol) + switch (options->symbol) { - switch (options->symbol) - { - case FF_COLORS_SYMBOL_CIRCLE: yyjson_mut_obj_add_str(doc, module, "symbol", "circle"); break; - case FF_COLORS_SYMBOL_DIAMOND: yyjson_mut_obj_add_str(doc, module, "symbol", "diamond"); break; - case FF_COLORS_SYMBOL_TRIANGLE: yyjson_mut_obj_add_str(doc, module, "symbol", "triangle"); break; - case FF_COLORS_SYMBOL_SQUARE: yyjson_mut_obj_add_str(doc, module, "symbol", "square"); break; - case FF_COLORS_SYMBOL_STAR: yyjson_mut_obj_add_str(doc, module, "symbol", "star"); break; - default: yyjson_mut_obj_add_str(doc, module, "symbol", "block"); break; - } + case FF_COLORS_SYMBOL_CIRCLE: yyjson_mut_obj_add_str(doc, module, "symbol", "circle"); break; + case FF_COLORS_SYMBOL_DIAMOND: yyjson_mut_obj_add_str(doc, module, "symbol", "diamond"); break; + case FF_COLORS_SYMBOL_TRIANGLE: yyjson_mut_obj_add_str(doc, module, "symbol", "triangle"); break; + case FF_COLORS_SYMBOL_SQUARE: yyjson_mut_obj_add_str(doc, module, "symbol", "square"); break; + case FF_COLORS_SYMBOL_STAR: yyjson_mut_obj_add_str(doc, module, "symbol", "star"); break; + default: yyjson_mut_obj_add_str(doc, module, "symbol", "block"); break; } - if (defaultOptions.paddingLeft != options->paddingLeft) - yyjson_mut_obj_add_uint(doc, module, "paddingLeft", options->paddingLeft); + yyjson_mut_obj_add_uint(doc, module, "paddingLeft", options->paddingLeft); { - yyjson_mut_val* block = yyjson_mut_obj(doc); + yyjson_mut_val* block = yyjson_mut_obj_add_obj(doc, module, "block"); - if (defaultOptions.block.width != options->block.width) - yyjson_mut_obj_add_uint(doc, block, "width", options->block.width); + yyjson_mut_obj_add_uint(doc, block, "width", options->block.width); - if (memcmp(defaultOptions.block.range, options->block.range, sizeof(options->block.range)) != 0) - { - yyjson_mut_val* range = yyjson_mut_obj_add_arr(doc, block, "range"); - for (uint8_t i = 0; i < 2; i++) - yyjson_mut_arr_add_uint(doc, range, options->block.range[i]); - } - - if (yyjson_mut_obj_size(block) > 0) - yyjson_mut_obj_add_val(doc, module, "block", block); + yyjson_mut_val* range = yyjson_mut_obj_add_arr(doc, block, "range"); + for (uint8_t i = 0; i < 2; i++) + yyjson_mut_arr_add_uint(doc, range, options->block.range[i]); } } @@ -251,7 +239,7 @@ void ffInitColorsOptions(FFColorsOptions* options) }; } -void ffDestroyColorsOptions(FF_MAYBE_UNUSED FFColorsOptions* options) +void ffDestroyColorsOptions(FFColorsOptions* options) { ffOptionDestroyModuleArg(&options->moduleArgs); } diff --git a/src/modules/command/command.c b/src/modules/command/command.c index 785f9514e..5a92d3cea 100644 --- a/src/modules/command/command.c +++ b/src/modules/command/command.c @@ -76,19 +76,13 @@ void ffParseCommandJsonObject(FFCommandOptions* options, yyjson_val* module) void ffGenerateCommandJsonConfig(FFCommandOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCommandOptions))) FFCommandOptions defaultOptions; - ffInitCommandOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "shell", &options->shell); - if (!ffStrbufEqual(&defaultOptions.shell, &options->shell)) - yyjson_mut_obj_add_strbuf(doc, module, "shell", &options->shell); + yyjson_mut_obj_add_strbuf(doc, module, "param", &options->param); - if (!ffStrbufEqual(&defaultOptions.param, &options->param)) - yyjson_mut_obj_add_strbuf(doc, module, "param", &options->param); - - if (!ffStrbufEqual(&defaultOptions.text, &options->text)) - yyjson_mut_obj_add_strbuf(doc, module, "text", &options->text); + yyjson_mut_obj_add_strbuf(doc, module, "text", &options->text); } void ffGenerateCommandJsonResult(FF_MAYBE_UNUSED FFCommandOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/cpu/cpu.c b/src/modules/cpu/cpu.c index b8f95356e..23216f1f9 100644 --- a/src/modules/cpu/cpu.c +++ b/src/modules/cpu/cpu.c @@ -147,15 +147,11 @@ void ffParseCPUJsonObject(FFCPUOptions* options, yyjson_val* module) void ffGenerateCPUJsonConfig(FFCPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCPUOptions))) FFCPUOptions defaultOptions; - ffInitCPUOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffTempsGenerateJsonConfig(doc, module, options->temp, options->tempConfig); - ffTempsGenerateJsonConfig(doc, module, defaultOptions.temp, defaultOptions.tempConfig, options->temp, options->tempConfig); - - if (defaultOptions.showPeCoreCount != options->showPeCoreCount) - yyjson_mut_obj_add_bool(doc, module, "showPeCoreCount", options->showPeCoreCount); + yyjson_mut_obj_add_bool(doc, module, "showPeCoreCount", options->showPeCoreCount); } void ffGenerateCPUJsonResult(FFCPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/cpucache/cpucache.c b/src/modules/cpucache/cpucache.c index 58a73f839..aeb9422b4 100644 --- a/src/modules/cpucache/cpucache.c +++ b/src/modules/cpucache/cpucache.c @@ -153,10 +153,9 @@ void ffParseCPUCacheJsonObject(FFCPUCacheOptions* options, yyjson_val* module) void ffGenerateCPUCacheJsonConfig(FFCPUCacheOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCPUCacheOptions))) FFCPUCacheOptions defaultOptions; - ffInitCPUCacheOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); } void ffGenerateCPUCacheJsonResult(FF_MAYBE_UNUSED FFCPUCacheOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/cpuusage/cpuusage.c b/src/modules/cpuusage/cpuusage.c index 180260069..a86f78e20 100644 --- a/src/modules/cpuusage/cpuusage.c +++ b/src/modules/cpuusage/cpuusage.c @@ -146,15 +146,13 @@ void ffParseCPUUsageJsonObject(FFCPUUsageOptions* options, yyjson_val* module) void ffGenerateCPUUsageJsonConfig(FFCPUUsageOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCPUUsageOptions))) FFCPUUsageOptions defaultOptions; - ffInitCPUUsageOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "separate", options->separate); - if (options->separate != defaultOptions.separate) - yyjson_mut_obj_add_bool(doc, module, "separate", options->separate); + ffPercentGenerateJsonConfig(doc, module, options->percent); - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + yyjson_mut_obj_add_uint(doc, module, "waitTime", options->waitTime); } void ffGenerateCPUUsageJsonResult(FFCPUUsageOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/cursor/cursor.c b/src/modules/cursor/cursor.c index 53406337f..d8ce2c26e 100644 --- a/src/modules/cursor/cursor.c +++ b/src/modules/cursor/cursor.c @@ -63,10 +63,7 @@ void ffParseCursorJsonObject(FFCursorOptions* options, yyjson_val* module) void ffGenerateCursorJsonConfig(FFCursorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCursorOptions))) FFCursorOptions defaultOptions; - ffInitCursorOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateCursorJsonResult(FF_MAYBE_UNUSED FFCursorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/custom/custom.c b/src/modules/custom/custom.c index 221fd05ae..4c2b8137d 100644 --- a/src/modules/custom/custom.c +++ b/src/modules/custom/custom.c @@ -11,10 +11,7 @@ void ffPrintCustom(FFCustomOptions* options) void ffGenerateCustomJsonConfig(FFCustomOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyCustomOptions))) FFCustomOptions defaultOptions; - ffInitCustomOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffParseCustomJsonObject(FFCustomOptions* options, yyjson_val* module) diff --git a/src/modules/datetime/datetime.c b/src/modules/datetime/datetime.c index 041901088..213b3bfdc 100644 --- a/src/modules/datetime/datetime.c +++ b/src/modules/datetime/datetime.c @@ -132,10 +132,7 @@ void ffParseDateTimeJsonObject(FFDateTimeOptions* options, yyjson_val* module) void ffGenerateDateTimeJsonConfig(FFDateTimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDateTimeOptions))) FFDateTimeOptions defaultOptions; - ffInitDateTimeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateDateTimeJsonResult(FF_MAYBE_UNUSED FFDateTimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/de/de.c b/src/modules/de/de.c index bb331daf2..ac901566d 100644 --- a/src/modules/de/de.c +++ b/src/modules/de/de.c @@ -63,13 +63,9 @@ void ffParseDEJsonObject(FFDEOptions* options, yyjson_val* module) void ffGenerateDEJsonConfig(FFDEOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDEOptions))) FFDEOptions defaultOptions; - ffInitDEOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (defaultOptions.slowVersionDetection != options->slowVersionDetection) - yyjson_mut_obj_add_bool(doc, module, "slowVersionDetection", options->slowVersionDetection); + yyjson_mut_obj_add_bool(doc, module, "slowVersionDetection", options->slowVersionDetection); } void ffGenerateDEJsonResult(FF_MAYBE_UNUSED FFDEOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/disk/disk.c b/src/modules/disk/disk.c index 4f51c065c..ea74e4ef3 100644 --- a/src/modules/disk/disk.c +++ b/src/modules/disk/disk.c @@ -302,45 +302,29 @@ void ffParseDiskJsonObject(FFDiskOptions* options, yyjson_val* module) void ffGenerateDiskJsonConfig(FFDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDiskOptions))) FFDiskOptions defaultOptions; - ffInitDiskOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "showRegular", !!(options->showTypes & FF_DISK_VOLUME_TYPE_REGULAR_BIT)); - if (defaultOptions.showTypes != options->showTypes) - { - if (options->showTypes & FF_DISK_VOLUME_TYPE_REGULAR_BIT) - yyjson_mut_obj_add_bool(doc, module, "showRegular", true); + yyjson_mut_obj_add_bool(doc, module, "showExternal", !!(options->showTypes & FF_DISK_VOLUME_TYPE_EXTERNAL_BIT)); - if (options->showTypes & FF_DISK_VOLUME_TYPE_EXTERNAL_BIT) - yyjson_mut_obj_add_bool(doc, module, "showExternal", true); + yyjson_mut_obj_add_bool(doc, module, "showHidden", !!(options->showTypes & FF_DISK_VOLUME_TYPE_HIDDEN_BIT)); - if (options->showTypes & FF_DISK_VOLUME_TYPE_HIDDEN_BIT) - yyjson_mut_obj_add_bool(doc, module, "showHidden", true); + yyjson_mut_obj_add_bool(doc, module, "showSubvolumes", !!(options->showTypes & FF_DISK_VOLUME_TYPE_SUBVOLUME_BIT)); - if (options->showTypes & FF_DISK_VOLUME_TYPE_SUBVOLUME_BIT) - yyjson_mut_obj_add_bool(doc, module, "showSubvolumes", true); + yyjson_mut_obj_add_bool(doc, module, "showReadOnly", !!(options->showTypes & FF_DISK_VOLUME_TYPE_READONLY_BIT)); - if (options->showTypes & FF_DISK_VOLUME_TYPE_READONLY_BIT) - yyjson_mut_obj_add_bool(doc, module, "showReadOnly", true); + yyjson_mut_obj_add_bool(doc, module, "showUnknown", !!(options->showTypes & FF_DISK_VOLUME_TYPE_UNKNOWN_BIT)); - if (options->showTypes & FF_DISK_VOLUME_TYPE_UNKNOWN_BIT) - yyjson_mut_obj_add_bool(doc, module, "showUnknown", true); - } + yyjson_mut_obj_add_strbuf(doc, module, "folders", &options->folders); - if (!ffStrbufEqual(&options->folders, &defaultOptions.folders)) - yyjson_mut_obj_add_strbuf(doc, module, "folders", &options->folders); + yyjson_mut_obj_add_strbuf(doc, module, "hideFolders", &options->hideFolders); - if (!ffStrbufEqual(&options->hideFolders, &defaultOptions.hideFolders)) - yyjson_mut_obj_add_strbuf(doc, module, "hideFolders", &options->hideFolders); + yyjson_mut_obj_add_strbuf(doc, module, "hideFS", &options->hideFS); - if (!ffStrbufEqual(&options->hideFS, &defaultOptions.hideFS)) - yyjson_mut_obj_add_strbuf(doc, module, "hideFS", &options->hideFS); + yyjson_mut_obj_add_bool(doc, module, "useAvailable", options->calcType == FF_DISK_CALC_TYPE_AVAILABLE); - if (defaultOptions.calcType != options->calcType) - yyjson_mut_obj_add_bool(doc, module, "useAvailable", options->calcType == FF_DISK_CALC_TYPE_AVAILABLE); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateDiskJsonResult(FFDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/diskio/diskio.c b/src/modules/diskio/diskio.c index 8d6a59433..5fa60982e 100644 --- a/src/modules/diskio/diskio.c +++ b/src/modules/diskio/diskio.c @@ -128,16 +128,13 @@ void ffParseDiskIOJsonObject(FFDiskIOOptions* options, yyjson_val* module) void ffGenerateDiskIOJsonConfig(FFDiskIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDiskIOOptions))) FFDiskIOOptions defaultOptions; - ffInitDiskIOOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); - if (!ffStrbufEqual(&options->namePrefix, &defaultOptions.namePrefix)) - yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); + yyjson_mut_obj_add_bool(doc, module, "detectTotal", options->detectTotal); - if (defaultOptions.detectTotal != options->detectTotal) - yyjson_mut_obj_add_bool(doc, module, "detectTotal", options->detectTotal); + yyjson_mut_obj_add_uint(doc, module, "waitTime", options->waitTime); } void ffGenerateDiskIOJsonResult(FFDiskIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/display/display.c b/src/modules/display/display.c index acfc4c0e4..33b48e911 100644 --- a/src/modules/display/display.c +++ b/src/modules/display/display.c @@ -282,35 +282,41 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module) void ffGenerateDisplayJsonConfig(FFDisplayOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDisplayOptions))) FFDisplayOptions defaultOptions; - ffInitDisplayOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (options->compactType != defaultOptions.compactType) + switch ((int) options->compactType) { - switch ((int) options->compactType) - { - case FF_DISPLAY_COMPACT_TYPE_NONE: - yyjson_mut_obj_add_str(doc, module, "compactType", "none"); - break; - case FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT: - yyjson_mut_obj_add_str(doc, module, "compactType", "original"); - break; - case FF_DISPLAY_COMPACT_TYPE_SCALED_BIT: - yyjson_mut_obj_add_str(doc, module, "compactType", "scaled"); - break; - case FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT | FF_DISPLAY_COMPACT_TYPE_REFRESH_RATE_BIT: - yyjson_mut_obj_add_str(doc, module, "compactType", "original-with-refresh-rate"); - break; - case FF_DISPLAY_COMPACT_TYPE_SCALED_BIT | FF_DISPLAY_COMPACT_TYPE_REFRESH_RATE_BIT: - yyjson_mut_obj_add_str(doc, module, "compactType", "scaled-with-refresh-rate"); - break; - } + case FF_DISPLAY_COMPACT_TYPE_NONE: + yyjson_mut_obj_add_str(doc, module, "compactType", "none"); + break; + case FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT: + yyjson_mut_obj_add_str(doc, module, "compactType", "original"); + break; + case FF_DISPLAY_COMPACT_TYPE_SCALED_BIT: + yyjson_mut_obj_add_str(doc, module, "compactType", "scaled"); + break; + case FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT | FF_DISPLAY_COMPACT_TYPE_REFRESH_RATE_BIT: + yyjson_mut_obj_add_str(doc, module, "compactType", "original-with-refresh-rate"); + break; + case FF_DISPLAY_COMPACT_TYPE_SCALED_BIT | FF_DISPLAY_COMPACT_TYPE_REFRESH_RATE_BIT: + yyjson_mut_obj_add_str(doc, module, "compactType", "scaled-with-refresh-rate"); + break; } - if (options->preciseRefreshRate != defaultOptions.preciseRefreshRate) - yyjson_mut_obj_add_bool(doc, module, "preciseRefreshRate", options->preciseRefreshRate); + yyjson_mut_obj_add_bool(doc, module, "preciseRefreshRate", options->preciseRefreshRate); + + switch (options->order) + { + case FF_DISPLAY_ORDER_NONE: + yyjson_mut_obj_add_null(doc, module, "order"); + break; + case FF_DISPLAY_ORDER_ASC: + yyjson_mut_obj_add_str(doc, module, "order", "asc"); + break; + case FF_DISPLAY_ORDER_DESC: + yyjson_mut_obj_add_str(doc, module, "order", "desc"); + break; + } } void ffGenerateDisplayJsonResult(FF_MAYBE_UNUSED FFDisplayOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/dns/dns.c b/src/modules/dns/dns.c index c9736ffc9..aa36ceacb 100644 --- a/src/modules/dns/dns.c +++ b/src/modules/dns/dns.c @@ -88,32 +88,23 @@ void ffParseDNSJsonObject(FFDNSOptions* options, yyjson_val* module) void ffGenerateDNSJsonConfig(FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyDNSOptions))) FFDNSOptions defaultOptions; - ffInitDNSOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (defaultOptions.showType != options->showType) + switch ((uint8_t) options->showType) { - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wswitch" // FF_DNS_TYPE_FORCE_UNSIGNED - switch (options->showType) - { - case FF_DNS_TYPE_IPV4_BIT: - yyjson_mut_obj_add_str(doc, module, "showType", "ipv4"); - break; - case FF_DNS_TYPE_IPV6_BIT: - yyjson_mut_obj_add_str(doc, module, "showType", "ipv6"); - break; - case FF_DNS_TYPE_BOTH: - yyjson_mut_obj_add_str(doc, module, "showType", "both"); - break; - } - #pragma GCC diagnostic pop + case FF_DNS_TYPE_IPV4_BIT: + yyjson_mut_obj_add_str(doc, module, "showType", "ipv4"); + break; + case FF_DNS_TYPE_IPV6_BIT: + yyjson_mut_obj_add_str(doc, module, "showType", "ipv6"); + break; + case FF_DNS_TYPE_BOTH: + yyjson_mut_obj_add_str(doc, module, "showType", "both"); + break; } } -void ffGenerateDNSJsonResult(FF_MAYBE_UNUSED FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGenerateDNSJsonResult(FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FF_LIST_AUTO_DESTROY result = ffListCreate(sizeof(FFstrbuf)); diff --git a/src/modules/editor/editor.c b/src/modules/editor/editor.c index 06318f1f1..e001d22e8 100644 --- a/src/modules/editor/editor.c +++ b/src/modules/editor/editor.c @@ -69,10 +69,7 @@ void ffParseEditorJsonObject(FFEditorOptions* options, yyjson_val* module) void ffGenerateEditorJsonConfig(FFEditorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyEditorOptions))) FFEditorOptions defaultOptions; - ffInitEditorOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateEditorJsonResult(FF_MAYBE_UNUSED FFEditorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/font/font.c b/src/modules/font/font.c index 7e308407c..eedf32c4e 100644 --- a/src/modules/font/font.c +++ b/src/modules/font/font.c @@ -56,10 +56,7 @@ void ffParseFontJsonObject(FFFontOptions* options, yyjson_val* module) void ffGenerateFontJsonConfig(FFFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyFontOptions))) FFFontOptions defaultOptions; - ffInitFontOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateFontJsonResult(FF_MAYBE_UNUSED FFFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/gamepad/gamepad.c b/src/modules/gamepad/gamepad.c index d6bf3ee55..5b1b6f7d5 100644 --- a/src/modules/gamepad/gamepad.c +++ b/src/modules/gamepad/gamepad.c @@ -95,12 +95,9 @@ void ffParseGamepadJsonObject(FFGamepadOptions* options, yyjson_val* module) void ffGenerateGamepadJsonConfig(FFGamepadOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyGamepadOptions))) FFGamepadOptions defaultOptions; - ffInitGamepadOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateGamepadJsonResult(FF_MAYBE_UNUSED FFGamepadOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/gpu/gpu.c b/src/modules/gpu/gpu.c index f7a532961..22267ae35 100644 --- a/src/modules/gpu/gpu.c +++ b/src/modules/gpu/gpu.c @@ -269,58 +269,48 @@ void ffParseGPUJsonObject(FFGPUOptions* options, yyjson_val* module) void ffGenerateGPUJsonConfig(FFGPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyGPUOptions))) FFGPUOptions defaultOptions; - ffInitGPUOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "driverSpecific", options->driverSpecific); - if (options->driverSpecific != defaultOptions.driverSpecific) - yyjson_mut_obj_add_bool(doc, module, "driverSpecific", options->driverSpecific); - - if (options->detectionMethod != defaultOptions.detectionMethod) + switch (options->detectionMethod) { - switch (options->detectionMethod) - { - case FF_GPU_DETECTION_METHOD_AUTO: - yyjson_mut_obj_add_str(doc, module, "detectionMethod", "auto"); - break; - case FF_GPU_DETECTION_METHOD_PCI: - yyjson_mut_obj_add_str(doc, module, "detectionMethod", "pci"); - break; - case FF_GPU_DETECTION_METHOD_VULKAN: - yyjson_mut_obj_add_str(doc, module, "detectionMethod", "vulkan"); - break; - case FF_GPU_DETECTION_METHOD_OPENCL: - yyjson_mut_obj_add_str(doc, module, "detectionMethod", "opencl"); - break; - case FF_GPU_DETECTION_METHOD_OPENGL: - yyjson_mut_obj_add_str(doc, module, "detectionMethod", "opengl"); - break; - } + case FF_GPU_DETECTION_METHOD_AUTO: + yyjson_mut_obj_add_str(doc, module, "detectionMethod", "auto"); + break; + case FF_GPU_DETECTION_METHOD_PCI: + yyjson_mut_obj_add_str(doc, module, "detectionMethod", "pci"); + break; + case FF_GPU_DETECTION_METHOD_VULKAN: + yyjson_mut_obj_add_str(doc, module, "detectionMethod", "vulkan"); + break; + case FF_GPU_DETECTION_METHOD_OPENCL: + yyjson_mut_obj_add_str(doc, module, "detectionMethod", "opencl"); + break; + case FF_GPU_DETECTION_METHOD_OPENGL: + yyjson_mut_obj_add_str(doc, module, "detectionMethod", "opengl"); + break; } - ffTempsGenerateJsonConfig(doc, module, defaultOptions.temp, defaultOptions.tempConfig, options->temp, options->tempConfig); + ffTempsGenerateJsonConfig(doc, module, options->temp, options->tempConfig); - if (options->hideType != defaultOptions.hideType) + switch (options->hideType) { - switch (options->hideType) - { - case FF_GPU_TYPE_NONE: - yyjson_mut_obj_add_str(doc, module, "hideType", "none"); - break; - case FF_GPU_TYPE_UNKNOWN: - yyjson_mut_obj_add_str(doc, module, "hideType", "unknown"); - break; - case FF_GPU_TYPE_INTEGRATED: - yyjson_mut_obj_add_str(doc, module, "hideType", "integrated"); - break; - case FF_GPU_TYPE_DISCRETE: - yyjson_mut_obj_add_str(doc, module, "hideType", "discrete"); - break; - } + case FF_GPU_TYPE_NONE: + yyjson_mut_obj_add_str(doc, module, "hideType", "none"); + break; + case FF_GPU_TYPE_UNKNOWN: + yyjson_mut_obj_add_str(doc, module, "hideType", "unknown"); + break; + case FF_GPU_TYPE_INTEGRATED: + yyjson_mut_obj_add_str(doc, module, "hideType", "integrated"); + break; + case FF_GPU_TYPE_DISCRETE: + yyjson_mut_obj_add_str(doc, module, "hideType", "discrete"); + break; } - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateGPUJsonResult(FFGPUOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/gpu/option.h b/src/modules/gpu/option.h index 36d2f0af1..0d1d0fac8 100644 --- a/src/modules/gpu/option.h +++ b/src/modules/gpu/option.h @@ -28,7 +28,6 @@ typedef struct FFGPUOptions FFGPUDetectionMethod detectionMethod; bool temp; bool driverSpecific; - bool forceMethod; FFColorRangeConfig tempConfig; FFPercentageModuleConfig percent; } FFGPUOptions; diff --git a/src/modules/host/host.c b/src/modules/host/host.c index 59692336b..9a265c058 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -82,10 +82,7 @@ void ffParseHostJsonObject(FFHostOptions* options, yyjson_val* module) void ffGenerateHostJsonConfig(FFHostOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyHostOptions))) FFHostOptions defaultOptions; - ffInitHostOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/icons/icons.c b/src/modules/icons/icons.c index 210d8996c..c1347790e 100644 --- a/src/modules/icons/icons.c +++ b/src/modules/icons/icons.c @@ -58,10 +58,7 @@ void ffParseIconsJsonObject(FFIconsOptions* options, yyjson_val* module) void ffGenerateIconsJsonConfig(FFIconsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyIconsOptions))) FFIconsOptions defaultOptions; - ffInitIconsOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateIconsJsonResult(FF_MAYBE_UNUSED FFIconsOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/initsystem/initsystem.c b/src/modules/initsystem/initsystem.c index c549011ea..28ad9ba80 100644 --- a/src/modules/initsystem/initsystem.c +++ b/src/modules/initsystem/initsystem.c @@ -63,10 +63,7 @@ void ffParseInitSystemJsonObject(FFInitSystemOptions* options, yyjson_val* modul void ffGenerateInitSystemJsonConfig(FFInitSystemOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyInitSystemOptions))) FFInitSystemOptions defaultOptions; - ffInitInitSystemOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateInitSystemJsonResult(FF_MAYBE_UNUSED FFInitSystemOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/kernel/kernel.c b/src/modules/kernel/kernel.c index 0d707129f..042ef3735 100644 --- a/src/modules/kernel/kernel.c +++ b/src/modules/kernel/kernel.c @@ -47,10 +47,7 @@ void ffParseKernelJsonObject(FFKernelOptions* options, yyjson_val* module) void ffGenerateKernelJsonConfig(FFKernelOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyKernelOptions))) FFKernelOptions defaultOptions; - ffInitKernelOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateKernelJsonResult(FF_MAYBE_UNUSED FFKernelOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/keyboard/keyboard.c b/src/modules/keyboard/keyboard.c index 5c582b122..ed67bf569 100644 --- a/src/modules/keyboard/keyboard.c +++ b/src/modules/keyboard/keyboard.c @@ -63,10 +63,7 @@ void ffParseKeyboardJsonObject(FFKeyboardOptions* options, yyjson_val* module) void ffGenerateKeyboardJsonConfig(FFKeyboardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyKeyboardOptions))) FFKeyboardOptions defaultOptions; - ffInitKeyboardOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateKeyboardJsonResult(FF_MAYBE_UNUSED FFKeyboardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/lm/lm.c b/src/modules/lm/lm.c index 09d56ea57..df67aa076 100644 --- a/src/modules/lm/lm.c +++ b/src/modules/lm/lm.c @@ -62,10 +62,7 @@ void ffParseLMJsonObject(FFLMOptions* options, yyjson_val* module) void ffGenerateLMJsonConfig(FFLMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyLMOptions))) FFLMOptions defaultOptions; - ffInitLMOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateLMJsonResult(FF_MAYBE_UNUSED FFLMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/loadavg/loadavg.c b/src/modules/loadavg/loadavg.c index a6fc70eb5..8d1d76ead 100644 --- a/src/modules/loadavg/loadavg.c +++ b/src/modules/loadavg/loadavg.c @@ -120,18 +120,13 @@ void ffParseLoadavgJsonObject(FFLoadavgOptions* options, yyjson_val* module) void ffGenerateLoadavgJsonConfig(FFLoadavgOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyLoadavgOptions))) FFLoadavgOptions defaultOptions; - ffInitLoadavgOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_uint(doc, module, "ndigits", options->ndigits); - if (defaultOptions.ndigits != options->ndigits) - yyjson_mut_obj_add_uint(doc, module, "ndigits", options->ndigits); + yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); - if (defaultOptions.compact != options->compact) - yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateLoadavgJsonResult(FF_MAYBE_UNUSED FFLoadavgOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/locale/locale.c b/src/modules/locale/locale.c index 40b1dcfba..1dc81d342 100644 --- a/src/modules/locale/locale.c +++ b/src/modules/locale/locale.c @@ -43,10 +43,7 @@ void ffParseLocaleJsonObject(FFLocaleOptions* options, yyjson_val* module) void ffGenerateLocaleJsonConfig(FFLocaleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyLocaleOptions))) FFLocaleOptions defaultOptions; - ffInitLocaleOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateLocaleJsonResult(FF_MAYBE_UNUSED FFLocaleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/localip/localip.c b/src/modules/localip/localip.c index d2e754e68..b6edad879 100644 --- a/src/modules/localip/localip.c +++ b/src/modules/localip/localip.c @@ -298,49 +298,31 @@ void ffParseLocalIpJsonObject(FFLocalIpOptions* options, yyjson_val* module) void ffGenerateLocalIpJsonConfig(FFLocalIpOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyLocalIpOptions))) FFLocalIpOptions defaultOptions; - ffInitLocalIpOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "showIpv4", !!(options->showType & FF_LOCALIP_TYPE_IPV4_BIT)); - if (defaultOptions.showType != options->showType) - { - if (!(options->showType & FF_LOCALIP_TYPE_IPV4_BIT)) - yyjson_mut_obj_add_bool(doc, module, "showIpv4", false); + yyjson_mut_obj_add_bool(doc, module, "showIpv6", !!(options->showType & FF_LOCALIP_TYPE_IPV6_BIT)); - if (options->showType & FF_LOCALIP_TYPE_IPV6_BIT) - yyjson_mut_obj_add_bool(doc, module, "showIpv6", true); + yyjson_mut_obj_add_bool(doc, module, "showMac", !!(options->showType & FF_LOCALIP_TYPE_MAC_BIT)); - if (options->showType & FF_LOCALIP_TYPE_MAC_BIT) - yyjson_mut_obj_add_bool(doc, module, "showMac", true); + yyjson_mut_obj_add_bool(doc, module, "showLoop", !!(options->showType & FF_LOCALIP_TYPE_LOOP_BIT)); - if (options->showType & FF_LOCALIP_TYPE_LOOP_BIT) - yyjson_mut_obj_add_bool(doc, module, "showLoop", true); + yyjson_mut_obj_add_bool(doc, module, "showPrefixLen", !!(options->showType & FF_LOCALIP_TYPE_PREFIX_LEN_BIT)); - if (options->showType & FF_LOCALIP_TYPE_PREFIX_LEN_BIT) - yyjson_mut_obj_add_bool(doc, module, "showPrefixLen", true); + yyjson_mut_obj_add_bool(doc, module, "showMtu", !!(options->showType & FF_LOCALIP_TYPE_MTU_BIT)); - if (options->showType & FF_LOCALIP_TYPE_MTU_BIT) - yyjson_mut_obj_add_bool(doc, module, "showMtu", true); + yyjson_mut_obj_add_bool(doc, module, "showSpeed", !!(options->showType & FF_LOCALIP_TYPE_SPEED_BIT)); - if (options->showType & FF_LOCALIP_TYPE_SPEED_BIT) - yyjson_mut_obj_add_bool(doc, module, "showSpeed", true); + yyjson_mut_obj_add_bool(doc, module, "showFlags", !!(options->showType & FF_LOCALIP_TYPE_FLAGS_BIT)); - if (options->showType & FF_LOCALIP_TYPE_FLAGS_BIT) - yyjson_mut_obj_add_bool(doc, module, "showFlags", true); + yyjson_mut_obj_add_bool(doc, module, "compact", !!(options->showType & FF_LOCALIP_TYPE_COMPACT_BIT)); - if (options->showType & FF_LOCALIP_TYPE_COMPACT_BIT) - yyjson_mut_obj_add_bool(doc, module, "compact", true); + yyjson_mut_obj_add_bool(doc, module, "defaultRouteOnly", !!(options->showType & FF_LOCALIP_TYPE_DEFAULT_ROUTE_ONLY_BIT)); - if (!(options->showType & FF_LOCALIP_TYPE_DEFAULT_ROUTE_ONLY_BIT)) - yyjson_mut_obj_add_bool(doc, module, "defaultRouteOnly", false); + yyjson_mut_obj_add_bool(doc, module, "showAllIps", !!(options->showType & FF_LOCALIP_TYPE_ALL_IPS_BIT)); - if (options->showType & FF_LOCALIP_TYPE_ALL_IPS_BIT) - yyjson_mut_obj_add_bool(doc, module, "showAllIps", true); - } - - if (!ffStrbufEqual(&options->namePrefix, &defaultOptions.namePrefix)) - yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); + yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); } void ffGenerateLocalIpJsonResult(FF_MAYBE_UNUSED FFLocalIpOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/media/media.c b/src/modules/media/media.c index b14289cce..1a175008f 100644 --- a/src/modules/media/media.c +++ b/src/modules/media/media.c @@ -121,10 +121,7 @@ void ffParseMediaJsonObject(FFMediaOptions* options, yyjson_val* module) void ffGenerateMediaJsonConfig(FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyMediaOptions))) FFMediaOptions defaultOptions; - ffInitMediaOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateMediaJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/memory/memory.c b/src/modules/memory/memory.c index 6b7b09e96..659c44013 100644 --- a/src/modules/memory/memory.c +++ b/src/modules/memory/memory.c @@ -89,12 +89,9 @@ void ffParseMemoryJsonObject(FFMemoryOptions* options, yyjson_val* module) void ffGenerateMemoryJsonConfig(FFMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyMemoryOptions))) FFMemoryOptions defaultOptions; - ffInitMemoryOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateMemoryJsonResult(FF_MAYBE_UNUSED FFMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/monitor/monitor.c b/src/modules/monitor/monitor.c index dfc6de0e9..65af67a12 100644 --- a/src/modules/monitor/monitor.c +++ b/src/modules/monitor/monitor.c @@ -101,10 +101,7 @@ void ffParseMonitorJsonObject(FFMonitorOptions* options, yyjson_val* module) void ffGenerateMonitorJsonConfig(FFMonitorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyMonitorOptions))) FFMonitorOptions defaultOptions; - ffInitMonitorOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateMonitorJsonResult(FF_MAYBE_UNUSED FFMonitorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/mouse/mouse.c b/src/modules/mouse/mouse.c index d1d83fe11..00ce7d4ba 100644 --- a/src/modules/mouse/mouse.c +++ b/src/modules/mouse/mouse.c @@ -63,10 +63,7 @@ void ffParseMouseJsonObject(FFMouseOptions* options, yyjson_val* module) void ffGenerateMouseJsonConfig(FFMouseOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyMouseOptions))) FFMouseOptions defaultOptions; - ffInitMouseOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateMouseJsonResult(FF_MAYBE_UNUSED FFMouseOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/netio/netio.c b/src/modules/netio/netio.c index 2595fa013..8e932d405 100644 --- a/src/modules/netio/netio.c +++ b/src/modules/netio/netio.c @@ -142,19 +142,15 @@ void ffParseNetIOJsonObject(FFNetIOOptions* options, yyjson_val* module) void ffGenerateNetIOJsonConfig(FFNetIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyNetIOOptions))) FFNetIOOptions defaultOptions; - ffInitNetIOOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); - if (!ffStrbufEqual(&options->namePrefix, &defaultOptions.namePrefix)) - yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); + yyjson_mut_obj_add_bool(doc, module, "defaultRouteOnly", options->defaultRouteOnly); - if (options->defaultRouteOnly != defaultOptions.defaultRouteOnly) - yyjson_mut_obj_add_bool(doc, module, "defaultRouteOnly", options->defaultRouteOnly); + yyjson_mut_obj_add_bool(doc, module, "detectTotal", options->detectTotal); - if (options->detectTotal != defaultOptions.detectTotal) - yyjson_mut_obj_add_bool(doc, module, "detectTotal", options->detectTotal); + yyjson_mut_obj_add_uint(doc, module, "waitTime", options->waitTime); } void ffGenerateNetIOJsonResult(FFNetIOOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/opencl/opencl.c b/src/modules/opencl/opencl.c index 9bfb23976..64f0ba63e 100644 --- a/src/modules/opencl/opencl.c +++ b/src/modules/opencl/opencl.c @@ -45,10 +45,7 @@ void ffParseOpenCLJsonObject(FFOpenCLOptions* options, yyjson_val* module) void ffGenerateOpenCLJsonConfig(FFOpenCLOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyOpenCLOptions))) FFOpenCLOptions defaultOptions; - ffInitOpenCLOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateOpenCLJsonResult(FF_MAYBE_UNUSED FFOpenCLOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/opengl/opengl.c b/src/modules/opengl/opengl.c index 241da9902..9dc99887e 100644 --- a/src/modules/opengl/opengl.c +++ b/src/modules/opengl/opengl.c @@ -74,25 +74,19 @@ void ffParseOpenGLJsonObject(FFOpenGLOptions* options, yyjson_val* module) void ffGenerateOpenGLJsonConfig(FFOpenGLOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyOpenGLOptions))) FFOpenGLOptions defaultOptions; - ffInitOpenGLOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (options->library != defaultOptions.library) + switch (options->library) { - switch (options->library) - { - case FF_OPENGL_LIBRARY_AUTO: - yyjson_mut_obj_add_str(doc, module, "library", "auto"); - break; - case FF_OPENGL_LIBRARY_EGL: - yyjson_mut_obj_add_str(doc, module, "library", "egl"); - break; - case FF_OPENGL_LIBRARY_GLX: - yyjson_mut_obj_add_str(doc, module, "library", "glx"); - break; - } + case FF_OPENGL_LIBRARY_AUTO: + yyjson_mut_obj_add_str(doc, module, "library", "auto"); + break; + case FF_OPENGL_LIBRARY_EGL: + yyjson_mut_obj_add_str(doc, module, "library", "egl"); + break; + case FF_OPENGL_LIBRARY_GLX: + yyjson_mut_obj_add_str(doc, module, "library", "glx"); + break; } } diff --git a/src/modules/os/os.c b/src/modules/os/os.c index 2a363f399..c3b3efd66 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -130,10 +130,7 @@ void ffParseOSJsonObject(FFOSOptions* options, yyjson_val* module) void ffGenerateOSJsonConfig(FFOSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyOSOptions))) FFOSOptions defaultOptions; - ffInitOSOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateOSJsonResult(FF_MAYBE_UNUSED FFOSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 0ca1f2cea..d17911de0 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -324,52 +324,50 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPackagesOptions))) FFPackagesOptions defaultOptions; - ffInitPackagesOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (options->disabled != defaultOptions.disabled) - { - yyjson_mut_val* arr = yyjson_mut_obj_add_arr(doc, module, "disabled"); - #define FF_TEST_PACKAGE_NAME(name) else if ((options->disabled & FF_PACKAGES_FLAG_ ## name ## _BIT) != (defaultOptions.disabled & FF_PACKAGES_FLAG_ ## name ## _BIT)) { yyjson_mut_arr_add_str(doc, arr, #name); } - if (false); - FF_TEST_PACKAGE_NAME(AM) - FF_TEST_PACKAGE_NAME(APK) - FF_TEST_PACKAGE_NAME(BREW) - FF_TEST_PACKAGE_NAME(CHOCO) - FF_TEST_PACKAGE_NAME(DPKG) - FF_TEST_PACKAGE_NAME(EMERGE) - FF_TEST_PACKAGE_NAME(EOPKG) - FF_TEST_PACKAGE_NAME(FLATPAK) - FF_TEST_PACKAGE_NAME(GUIX) - FF_TEST_PACKAGE_NAME(HPKG) - FF_TEST_PACKAGE_NAME(LINGLONG) - FF_TEST_PACKAGE_NAME(LPKG) - FF_TEST_PACKAGE_NAME(LPKGBUILD) - FF_TEST_PACKAGE_NAME(MACPORTS) - FF_TEST_PACKAGE_NAME(MPORT) - FF_TEST_PACKAGE_NAME(NIX) - FF_TEST_PACKAGE_NAME(OPKG) - FF_TEST_PACKAGE_NAME(PACMAN) - FF_TEST_PACKAGE_NAME(PACSTALL) - FF_TEST_PACKAGE_NAME(PALUDIS) - FF_TEST_PACKAGE_NAME(PISI) - FF_TEST_PACKAGE_NAME(PKG) - FF_TEST_PACKAGE_NAME(PKGTOOL) - FF_TEST_PACKAGE_NAME(PKGSRC) - FF_TEST_PACKAGE_NAME(RPM) - FF_TEST_PACKAGE_NAME(SCOOP) - FF_TEST_PACKAGE_NAME(SNAP) - FF_TEST_PACKAGE_NAME(SOAR) - FF_TEST_PACKAGE_NAME(SORCERY) - FF_TEST_PACKAGE_NAME(WINGET) - FF_TEST_PACKAGE_NAME(XBPS) - #undef FF_TEST_PACKAGE_NAME + FF_STRBUF_AUTO_DESTROY buf = ffStrbufCreate(); + yyjson_mut_val* arr = yyjson_mut_obj_add_arr(doc, module, "disabled"); + #define FF_TEST_PACKAGE_NAME(name) else if ((options->disabled & FF_PACKAGES_FLAG_ ## name ## _BIT)) { \ + ffStrbufSetS(&buf, #name); \ + ffStrbufLowerCase(&buf); \ + yyjson_mut_arr_add_strbuf(doc, arr, &buf); \ } + if (false); + FF_TEST_PACKAGE_NAME(AM) + FF_TEST_PACKAGE_NAME(APK) + FF_TEST_PACKAGE_NAME(BREW) + FF_TEST_PACKAGE_NAME(CHOCO) + FF_TEST_PACKAGE_NAME(DPKG) + FF_TEST_PACKAGE_NAME(EMERGE) + FF_TEST_PACKAGE_NAME(EOPKG) + FF_TEST_PACKAGE_NAME(FLATPAK) + FF_TEST_PACKAGE_NAME(GUIX) + FF_TEST_PACKAGE_NAME(HPKG) + FF_TEST_PACKAGE_NAME(LINGLONG) + FF_TEST_PACKAGE_NAME(LPKG) + FF_TEST_PACKAGE_NAME(LPKGBUILD) + FF_TEST_PACKAGE_NAME(MACPORTS) + FF_TEST_PACKAGE_NAME(MPORT) + FF_TEST_PACKAGE_NAME(NIX) + FF_TEST_PACKAGE_NAME(OPKG) + FF_TEST_PACKAGE_NAME(PACMAN) + FF_TEST_PACKAGE_NAME(PACSTALL) + FF_TEST_PACKAGE_NAME(PALUDIS) + FF_TEST_PACKAGE_NAME(PISI) + FF_TEST_PACKAGE_NAME(PKG) + FF_TEST_PACKAGE_NAME(PKGTOOL) + FF_TEST_PACKAGE_NAME(PKGSRC) + FF_TEST_PACKAGE_NAME(RPM) + FF_TEST_PACKAGE_NAME(SCOOP) + FF_TEST_PACKAGE_NAME(SNAP) + FF_TEST_PACKAGE_NAME(SOAR) + FF_TEST_PACKAGE_NAME(SORCERY) + FF_TEST_PACKAGE_NAME(WINGET) + FF_TEST_PACKAGE_NAME(XBPS) + #undef FF_TEST_PACKAGE_NAME - if (options->combined != defaultOptions.combined) - yyjson_mut_obj_add_bool(doc, module, "combined", options->combined); + yyjson_mut_obj_add_bool(doc, module, "combined", options->combined); } void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/physicaldisk/physicaldisk.c b/src/modules/physicaldisk/physicaldisk.c index 917816c61..601ecd723 100644 --- a/src/modules/physicaldisk/physicaldisk.c +++ b/src/modules/physicaldisk/physicaldisk.c @@ -157,15 +157,11 @@ void ffParsePhysicalDiskJsonObject(FFPhysicalDiskOptions* options, yyjson_val* m void ffGeneratePhysicalDiskJsonConfig(FFPhysicalDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPhysicalDiskOptions))) FFPhysicalDiskOptions defaultOptions; - ffInitPhysicalDiskOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); - if (!ffStrbufEqual(&options->namePrefix, &defaultOptions.namePrefix)) - yyjson_mut_obj_add_strbuf(doc, module, "namePrefix", &options->namePrefix); - - ffTempsGenerateJsonConfig(doc, module, defaultOptions.temp, defaultOptions.tempConfig, options->temp, options->tempConfig); + ffTempsGenerateJsonConfig(doc, module, options->temp, options->tempConfig); } void ffGeneratePhysicalDiskJsonResult(FFPhysicalDiskOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/physicalmemory/physicalmemory.c b/src/modules/physicalmemory/physicalmemory.c index 81a05b47c..09534595d 100644 --- a/src/modules/physicalmemory/physicalmemory.c +++ b/src/modules/physicalmemory/physicalmemory.c @@ -95,10 +95,7 @@ void ffParsePhysicalMemoryJsonObject(FFPhysicalMemoryOptions* options, yyjson_va void ffGeneratePhysicalMemoryJsonConfig(FFPhysicalMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPhysicalMemoryOptions))) FFPhysicalMemoryOptions defaultOptions; - ffInitPhysicalMemoryOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGeneratePhysicalMemoryJsonResult(FF_MAYBE_UNUSED FFPhysicalMemoryOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/player/player.c b/src/modules/player/player.c index 72af48027..347a2977e 100644 --- a/src/modules/player/player.c +++ b/src/modules/player/player.c @@ -96,10 +96,7 @@ void ffParsePlayerJsonObject(FFPlayerOptions* options, yyjson_val* module) void ffGeneratePlayerJsonConfig(FFPlayerOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPlayerOptions))) FFPlayerOptions defaultOptions; - ffInitPlayerOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGeneratePlayerJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/poweradapter/poweradapter.c b/src/modules/poweradapter/poweradapter.c index 0ed4813a3..00c96ab0e 100644 --- a/src/modules/poweradapter/poweradapter.c +++ b/src/modules/poweradapter/poweradapter.c @@ -58,10 +58,7 @@ void ffPrintPowerAdapter(FFPowerAdapterOptions* options) void ffGeneratePowerAdapterJsonConfig(FFPowerAdapterOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPowerAdapterOptions))) FFPowerAdapterOptions defaultOptions; - ffInitPowerAdapterOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffParsePowerAdapterJsonObject(FFPowerAdapterOptions* options, yyjson_val* module) diff --git a/src/modules/processes/processes.c b/src/modules/processes/processes.c index 4277e71a4..e7740a448 100644 --- a/src/modules/processes/processes.c +++ b/src/modules/processes/processes.c @@ -44,10 +44,7 @@ void ffParseProcessesJsonObject(FFProcessesOptions* options, yyjson_val* module) void ffGenerateProcessesJsonConfig(FFProcessesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyProcessesOptions))) FFProcessesOptions defaultOptions; - ffInitProcessesOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateProcessesJsonResult(FF_MAYBE_UNUSED FFProcessesOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/publicip/publicip.c b/src/modules/publicip/publicip.c index 187a95a17..e52696dd6 100644 --- a/src/modules/publicip/publicip.c +++ b/src/modules/publicip/publicip.c @@ -72,19 +72,13 @@ void ffParsePublicIpJsonObject(FFPublicIPOptions* options, yyjson_val* module) void ffGeneratePublicIpJsonConfig(FFPublicIPOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPublicIpOptions))) FFPublicIPOptions defaultOptions; - ffInitPublicIpOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "url", &options->url); - if (!ffStrbufEqual(&options->url, &defaultOptions.url)) - yyjson_mut_obj_add_strbuf(doc, module, "url", &options->url); + yyjson_mut_obj_add_uint(doc, module, "timeout", options->timeout); - if (defaultOptions.timeout != options->timeout) - yyjson_mut_obj_add_uint(doc, module, "timeout", options->timeout); - - if (defaultOptions.ipv6 != options->ipv6) - yyjson_mut_obj_add_bool(doc, module, "ipv6", options->ipv6); + yyjson_mut_obj_add_bool(doc, module, "ipv6", options->ipv6); } void ffGeneratePublicIpJsonResult(FFPublicIPOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/separator/separator.c b/src/modules/separator/separator.c index 3786949ad..0eec28119 100644 --- a/src/modules/separator/separator.c +++ b/src/modules/separator/separator.c @@ -147,11 +147,9 @@ void ffParseSeparatorJsonObject(FFSeparatorOptions* options, yyjson_val* module) void ffGenerateSeparatorJsonConfig(FFSeparatorOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroySeparatorOptions))) FFSeparatorOptions defaultOptions; - ffInitSeparatorOptions(&defaultOptions); - - if (!ffStrbufEqual(&options->string, &defaultOptions.string)) - yyjson_mut_obj_add_strbuf(doc, module, "string", &options->string); + yyjson_mut_obj_add_strbuf(doc, module, "string", &options->string); + yyjson_mut_obj_add_strbuf(doc, module, "outputColor", &options->outputColor); + yyjson_mut_obj_add_uint(doc, module, "length", options->length); } void ffInitSeparatorOptions(FFSeparatorOptions* options) diff --git a/src/modules/shell/shell.c b/src/modules/shell/shell.c index 4ec724b62..42bb9149d 100644 --- a/src/modules/shell/shell.c +++ b/src/modules/shell/shell.c @@ -57,10 +57,7 @@ void ffParseShellJsonObject(FFShellOptions* options, yyjson_val* module) void ffGenerateShellJsonConfig(FFShellOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyShellOptions))) FFShellOptions defaultOptions; - ffInitShellOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateShellJsonResult(FF_MAYBE_UNUSED FFShellOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/sound/sound.c b/src/modules/sound/sound.c index dcc9e75a9..1b4d0285c 100644 --- a/src/modules/sound/sound.c +++ b/src/modules/sound/sound.c @@ -146,28 +146,22 @@ void ffParseSoundJsonObject(FFSoundOptions* options, yyjson_val* module) void ffGenerateSoundJsonConfig(FFSoundOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroySoundOptions))) FFSoundOptions defaultOptions; - ffInitSoundOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (defaultOptions.soundType != options->soundType) + switch (options->soundType) { - switch (options->soundType) - { - case FF_SOUND_TYPE_MAIN: - yyjson_mut_obj_add_str(doc, module, "soundType", "main"); - break; - case FF_SOUND_TYPE_ACTIVE: - yyjson_mut_obj_add_str(doc, module, "soundType", "active"); - break; - case FF_SOUND_TYPE_ALL: - yyjson_mut_obj_add_str(doc, module, "soundType", "all"); - break; - } + case FF_SOUND_TYPE_MAIN: + yyjson_mut_obj_add_str(doc, module, "soundType", "main"); + break; + case FF_SOUND_TYPE_ACTIVE: + yyjson_mut_obj_add_str(doc, module, "soundType", "active"); + break; + case FF_SOUND_TYPE_ALL: + yyjson_mut_obj_add_str(doc, module, "soundType", "all"); + break; } - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateSoundJsonResult(FF_MAYBE_UNUSED FFSoundOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/swap/swap.c b/src/modules/swap/swap.c index ea2d01d41..45e01c77b 100644 --- a/src/modules/swap/swap.c +++ b/src/modules/swap/swap.c @@ -155,12 +155,10 @@ void ffParseSwapJsonObject(FFSwapOptions* options, yyjson_val* module) void ffGenerateSwapJsonConfig(FFSwapOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroySwapOptions))) FFSwapOptions defaultOptions; - ffInitSwapOptions(&defaultOptions); + ffPercentGenerateJsonConfig(doc, module, options->percent); - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "separate", options->separate); } void ffGenerateSwapJsonResult(FF_MAYBE_UNUSED FFSwapOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/terminal/terminal.c b/src/modules/terminal/terminal.c index caede6747..f5085421d 100644 --- a/src/modules/terminal/terminal.c +++ b/src/modules/terminal/terminal.c @@ -53,10 +53,7 @@ void ffParseTerminalJsonObject(FFTerminalOptions* options, yyjson_val* module) void ffGenerateTerminalJsonConfig(FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTerminalOptions))) FFTerminalOptions defaultOptions; - ffInitTerminalOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateTerminalJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/terminalfont/terminalfont.c b/src/modules/terminalfont/terminalfont.c index 7356369ec..7ba2fc673 100644 --- a/src/modules/terminalfont/terminalfont.c +++ b/src/modules/terminalfont/terminalfont.c @@ -61,10 +61,7 @@ void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* m void ffGenerateTerminalFontJsonConfig(FFTerminalFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTerminalFontOptions))) FFTerminalFontOptions defaultOptions; - ffInitTerminalFontOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateTerminalFontJsonResult(FF_MAYBE_UNUSED FFTerminalFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/terminalsize/terminalsize.c b/src/modules/terminalsize/terminalsize.c index ec9148b9b..bc220107e 100644 --- a/src/modules/terminalsize/terminalsize.c +++ b/src/modules/terminalsize/terminalsize.c @@ -53,10 +53,7 @@ void ffParseTerminalSizeJsonObject(FFTerminalSizeOptions* options, yyjson_val* m void ffGenerateTerminalSizeJsonConfig(FFTerminalSizeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTerminalSizeOptions))) FFTerminalSizeOptions defaultOptions; - ffInitTerminalSizeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateTerminalSizeJsonResult(FF_MAYBE_UNUSED FFTerminalSizeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/terminaltheme/terminaltheme.c b/src/modules/terminaltheme/terminaltheme.c index 2b504fd5b..e6286dd6a 100644 --- a/src/modules/terminaltheme/terminaltheme.c +++ b/src/modules/terminaltheme/terminaltheme.c @@ -58,10 +58,7 @@ void ffParseTerminalThemeJsonObject(FFTerminalThemeOptions* options, yyjson_val* void ffGenerateTerminalThemeJsonConfig(FFTerminalThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTerminalThemeOptions))) FFTerminalThemeOptions defaultOptions; - ffInitTerminalThemeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/theme/theme.c b/src/modules/theme/theme.c index f6cfd945b..d0945fb0d 100644 --- a/src/modules/theme/theme.c +++ b/src/modules/theme/theme.c @@ -58,10 +58,7 @@ void ffParseThemeJsonObject(FFThemeOptions* options, yyjson_val* module) void ffGenerateThemeJsonConfig(FFThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyThemeOptions))) FFThemeOptions defaultOptions; - ffInitThemeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateThemeJsonResult(FF_MAYBE_UNUSED FFThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/title/title.c b/src/modules/title/title.c index 8821ac2d5..c5a12b0a1 100644 --- a/src/modules/title/title.c +++ b/src/modules/title/title.c @@ -106,27 +106,14 @@ void ffParseTitleJsonObject(FFTitleOptions* options, yyjson_val* module) void ffGenerateTitleJsonConfig(FFTitleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTitleOptions))) FFTitleOptions defaultOptions; - ffInitTitleOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "fqdn", options->fqdn); - if (defaultOptions.fqdn != options->fqdn) - yyjson_mut_obj_add_bool(doc, module, "fqdn", options->fqdn); - - yyjson_mut_val* color = yyjson_mut_obj(doc); - - if (!ffStrbufEqual(&options->colorUser, &defaultOptions.colorUser)) - yyjson_mut_obj_add_strbuf(doc, color, "user", &options->colorUser); - - if (!ffStrbufEqual(&options->colorAt, &defaultOptions.colorAt)) - yyjson_mut_obj_add_strbuf(doc, color, "at", &options->colorAt); - - if (!ffStrbufEqual(&options->colorHost, &defaultOptions.colorHost)) - yyjson_mut_obj_add_strbuf(doc, color, "host", &options->colorHost); - - if (yyjson_mut_obj_size(color)) - yyjson_mut_obj_add_val(doc, module, "color", color); + yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, module, "color"); + yyjson_mut_obj_add_strbuf(doc, color, "user", &options->colorUser); + yyjson_mut_obj_add_strbuf(doc, color, "at", &options->colorAt); + yyjson_mut_obj_add_strbuf(doc, color, "host", &options->colorHost); } void ffGenerateTitleJsonResult(FF_MAYBE_UNUSED FFTitleOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/tpm/tpm.c b/src/modules/tpm/tpm.c index fc447d160..ad540bf12 100644 --- a/src/modules/tpm/tpm.c +++ b/src/modules/tpm/tpm.c @@ -53,10 +53,7 @@ void ffParseTPMJsonObject(FFTPMOptions* options, yyjson_val* module) void ffGenerateTPMJsonConfig(FFTPMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyTPMOptions))) FFTPMOptions defaultOptions; - ffInitTPMOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateTPMJsonResult(FF_MAYBE_UNUSED FFTPMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/uptime/uptime.c b/src/modules/uptime/uptime.c index d0b489cac..ca64ec572 100644 --- a/src/modules/uptime/uptime.c +++ b/src/modules/uptime/uptime.c @@ -71,10 +71,7 @@ void ffParseUptimeJsonObject(FFUptimeOptions* options, yyjson_val* module) void ffGenerateUptimeJsonConfig(FFUptimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyUptimeOptions))) FFUptimeOptions defaultOptions; - ffInitUptimeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateUptimeJsonResult(FF_MAYBE_UNUSED FFUptimeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/users/users.c b/src/modules/users/users.c index cd82d359a..fce2dc7ef 100644 --- a/src/modules/users/users.c +++ b/src/modules/users/users.c @@ -137,16 +137,11 @@ void ffParseUsersJsonObject(FFUsersOptions* options, yyjson_val* module) void ffGenerateUsersJsonConfig(FFUsersOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyUsersOptions))) FFUsersOptions defaultOptions; - ffInitUsersOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); - if (options->compact != defaultOptions.compact) - yyjson_mut_obj_add_bool(doc, module, "compact", options->compact); - - if (options->myselfOnly != defaultOptions.myselfOnly) - yyjson_mut_obj_add_bool(doc, module, "myselfOnly", options->myselfOnly); + yyjson_mut_obj_add_bool(doc, module, "myselfOnly", options->myselfOnly); } void ffGenerateUsersJsonResult(FFUsersOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/version/version.c b/src/modules/version/version.c index 42b50e11e..15f519c12 100644 --- a/src/modules/version/version.c +++ b/src/modules/version/version.c @@ -59,10 +59,7 @@ void ffParseVersionJsonObject(FFVersionOptions* options, yyjson_val* module) void ffGenerateVersionJsonConfig(FFVersionOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyVersionOptions))) FFVersionOptions defaultOptions; - ffInitVersionOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateVersionJsonResult(FF_MAYBE_UNUSED FFVersionOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/vulkan/vulkan.c b/src/modules/vulkan/vulkan.c index 331f91a61..429df582c 100644 --- a/src/modules/vulkan/vulkan.c +++ b/src/modules/vulkan/vulkan.c @@ -65,10 +65,7 @@ void ffParseVulkanJsonObject(FFVulkanOptions* options, yyjson_val* module) void ffGenerateVulkanJsonConfig(FFVulkanOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyVulkanOptions))) FFVulkanOptions defaultOptions; - ffInitVulkanOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateVulkanJsonResult(FF_MAYBE_UNUSED FFVulkanOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/wallpaper/wallpaper.c b/src/modules/wallpaper/wallpaper.c index fe7c3efc1..6c6466b38 100644 --- a/src/modules/wallpaper/wallpaper.c +++ b/src/modules/wallpaper/wallpaper.c @@ -55,10 +55,7 @@ void ffParseWallpaperJsonObject(FFWallpaperOptions* options, yyjson_val* module) void ffGenerateWallpaperJsonConfig(FFWallpaperOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyWallpaperOptions))) FFWallpaperOptions defaultOptions; - ffInitWallpaperOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateWallpaperJsonResult(FF_MAYBE_UNUSED FFWallpaperOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/weather/weather.c b/src/modules/weather/weather.c index e44c75c31..fec43ff5d 100644 --- a/src/modules/weather/weather.c +++ b/src/modules/weather/weather.c @@ -62,19 +62,13 @@ void ffParseWeatherJsonObject(FFWeatherOptions* options, yyjson_val* module) void ffGenerateWeatherJsonConfig(FFWeatherOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyWeatherOptions))) FFWeatherOptions defaultOptions; - ffInitWeatherOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + yyjson_mut_obj_add_strbuf(doc, module, "location", &options->location); - if (!ffStrbufEqual(&options->location, &defaultOptions.location)) - yyjson_mut_obj_add_strbuf(doc, module, "location", &options->location); + yyjson_mut_obj_add_strbuf(doc, module, "outputFormat", &options->outputFormat); - if (!ffStrbufEqual(&options->outputFormat, &defaultOptions.outputFormat)) - yyjson_mut_obj_add_strbuf(doc, module, "outputFormat", &options->outputFormat); - - if (options->timeout != defaultOptions.timeout) - yyjson_mut_obj_add_uint(doc, module, "timeout", options->timeout); + yyjson_mut_obj_add_uint(doc, module, "timeout", options->timeout); } void ffGenerateWeatherJsonResult(FFWeatherOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/wifi/wifi.c b/src/modules/wifi/wifi.c index e7d411017..47bb21985 100644 --- a/src/modules/wifi/wifi.c +++ b/src/modules/wifi/wifi.c @@ -154,12 +154,9 @@ void ffParseWifiJsonObject(FFWifiOptions* options, yyjson_val* module) void ffGenerateWifiJsonConfig(FFWifiOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyWifiOptions))) FFWifiOptions defaultOptions; - ffInitWifiOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateWifiJsonResult(FF_MAYBE_UNUSED FFWifiOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/wm/wm.c b/src/modules/wm/wm.c index 6da7ea9d6..6753ce2da 100644 --- a/src/modules/wm/wm.c +++ b/src/modules/wm/wm.c @@ -84,13 +84,9 @@ void ffParseWMJsonObject(FFWMOptions* options, yyjson_val* module) void ffGenerateWMJsonConfig(FFWMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyWMOptions))) FFWMOptions defaultOptions; - ffInitWMOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - if (options->detectPlugin != defaultOptions.detectPlugin) - yyjson_mut_obj_add_bool(doc, module, "detectPlugin", options->detectPlugin); + yyjson_mut_obj_add_bool(doc, module, "detectPlugin", options->detectPlugin); } void ffGenerateWMJsonResult(FF_MAYBE_UNUSED FFWMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/wmtheme/wmtheme.c b/src/modules/wmtheme/wmtheme.c index d7e4178dc..d40ab821e 100644 --- a/src/modules/wmtheme/wmtheme.c +++ b/src/modules/wmtheme/wmtheme.c @@ -44,10 +44,7 @@ void ffParseWMThemeJsonObject(FFWMThemeOptions* options, yyjson_val* module) void ffGenerateWMThemeJsonConfig(FFWMThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyWMThemeOptions))) FFWMThemeOptions defaultOptions; - ffInitWMThemeOptions(&defaultOptions); - - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); } void ffGenerateWMThemeJsonResult(FF_MAYBE_UNUSED FFWMThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/modules/zpool/zpool.c b/src/modules/zpool/zpool.c index 5b6eecf9f..7eefe0240 100644 --- a/src/modules/zpool/zpool.c +++ b/src/modules/zpool/zpool.c @@ -125,12 +125,9 @@ void ffParseZpoolJsonObject(FFZpoolOptions* options, yyjson_val* module) void ffGenerateZpoolJsonConfig(FFZpoolOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyZpoolOptions))) FFZpoolOptions defaultOptions; - ffInitZpoolOptions(&defaultOptions); + ffJsonConfigGenerateModuleArgsConfig(doc, module, &options->moduleArgs); - ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); - - ffPercentGenerateJsonConfig(doc, module, defaultOptions.percent, options->percent); + ffPercentGenerateJsonConfig(doc, module, options->percent); } void ffGenerateZpoolJsonResult(FF_MAYBE_UNUSED FFZpoolOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) diff --git a/src/options/display.c b/src/options/display.c index defbb89a9..1f0d22a2b 100644 --- a/src/options/display.c +++ b/src/options/display.c @@ -343,7 +343,16 @@ const char* ffOptionsParseDisplayJsonConfig(FFOptionsDisplay* options, yyjson_va if (!yyjson_is_obj(color)) return "display.bar.color must be an object"; yyjson_val* colorElapsed = yyjson_obj_get(color, "elapsed"); - if (colorElapsed) ffOptionParseColor(yyjson_get_str(colorElapsed), &options->barColorElapsed); + if (colorElapsed) + { + const char* value = yyjson_get_str(colorElapsed); + if (!value) + ffStrbufClear(&options->barColorElapsed); + else if (ffStrEqualsIgnCase(value, "auto")) + ffStrbufSetStatic(&options->barColorElapsed, "auto"); + else + ffOptionParseColor(value, &options->barColorElapsed); + } yyjson_val* colorTotal = yyjson_obj_get(color, "total"); if (colorTotal) ffOptionParseColor(yyjson_get_str(colorTotal), &options->barColorTotal); @@ -700,7 +709,14 @@ bool ffOptionsParseDisplayCommandLine(FFOptionsDisplay* options, const char* key else if(ffStrEqualsIgnCase(subkey, "border-right-elapsed")) ffOptionParseString(key, value, &options->barBorderRightElapsed); else if(ffStrEqualsIgnCase(subkey, "color-elapsed")) - ffOptionParseColor(value, &options->barColorElapsed); + { + if (!value) + ffStrbufClear(&options->barColorElapsed); + else if (ffStrEqualsIgnCase(value, "auto")) + ffStrbufSetStatic(&options->barColorElapsed, "auto"); + else + ffOptionParseColor(value, &options->barColorElapsed); + } else if(ffStrEqualsIgnCase(subkey, "color-total")) ffOptionParseColor(value, &options->barColorTotal); else if(ffStrEqualsIgnCase(subkey, "color-border")) @@ -813,188 +829,239 @@ void ffOptionsDestroyDisplay(FFOptionsDisplay* options) void ffOptionsGenerateDisplayJsonConfig(FFOptionsDisplay* options, yyjson_mut_doc* doc) { - __attribute__((__cleanup__(ffOptionsDestroyDisplay))) FFOptionsDisplay defaultOptions; - ffOptionsInitDisplay(&defaultOptions); + yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, doc->root, "display"); - yyjson_mut_val* obj = yyjson_mut_obj(doc); + if (options->stat <= 0) + yyjson_mut_obj_add_bool(doc, obj, "stat", options->stat == 0); + else + yyjson_mut_obj_add_int(doc, obj, "stat", options->stat); + + yyjson_mut_obj_add_bool(doc, obj, "pipe", options->pipe); + + yyjson_mut_obj_add_bool(doc, obj, "showErrors", options->showErrors); + + yyjson_mut_obj_add_bool(doc, obj, "disableLinewrap", options->disableLinewrap); + + yyjson_mut_obj_add_bool(doc, obj, "hideCursor", options->hideCursor); + + yyjson_mut_obj_add_strbuf(doc, obj, "separator", &options->keyValueSeparator); - if (options->stat != defaultOptions.stat) { - if (options->stat <= 0) - yyjson_mut_obj_add_bool(doc, obj, "stat", options->stat == 0); + yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, obj, "color"); + yyjson_mut_obj_add_strbuf(doc, color, "keys", &options->colorKeys); + yyjson_mut_obj_add_strbuf(doc, color, "title", &options->colorTitle); + yyjson_mut_obj_add_strbuf(doc, color, "output", &options->colorOutput); + yyjson_mut_obj_add_strbuf(doc, color, "separator", &options->colorSeparator); + } + + yyjson_mut_obj_add_bool(doc, obj, "brightColor", options->brightColor); + + { + yyjson_mut_val* duration = yyjson_mut_obj_add_obj(doc, obj, "duration"); + yyjson_mut_obj_add_bool(doc, duration, "abbreviation", options->durationAbbreviation); + switch (options->durationSpaceBeforeUnit) + { + case FF_SPACE_BEFORE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "default"); + break; + case FF_SPACE_BEFORE_UNIT_ALWAYS: + yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "always"); + break; + case FF_SPACE_BEFORE_UNIT_NEVER: + yyjson_mut_obj_add_str(doc, duration, "spaceBeforeUnit", "never"); + break; + } + } + + { + yyjson_mut_val* size = yyjson_mut_obj_add_obj(doc, obj, "size"); + yyjson_mut_obj_add_str(doc, size, "maxPrefix", ((const char* []) { + "B", + "kB", + "MB", + "GB", + "TB", + "PB", + "EB", + "ZB", + "YB", + })[options->sizeMaxPrefix]); + switch (options->sizeBinaryPrefix) + { + case FF_SIZE_BINARY_PREFIX_TYPE_IEC: + yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "iec"); + break; + case FF_SIZE_BINARY_PREFIX_TYPE_SI: + yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "si"); + break; + case FF_SIZE_BINARY_PREFIX_TYPE_JEDEC: + yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "jedec"); + break; + } + yyjson_mut_obj_add_uint(doc, size, "ndigits", options->sizeNdigits); + switch (options->sizeSpaceBeforeUnit) + { + case FF_SPACE_BEFORE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "default"); + break; + case FF_SPACE_BEFORE_UNIT_ALWAYS: + yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "always"); + break; + case FF_SPACE_BEFORE_UNIT_NEVER: + yyjson_mut_obj_add_str(doc, size, "spaceBeforeUnit", "never"); + break; + } + } + + { + yyjson_mut_val* temperature = yyjson_mut_obj_add_obj(doc, obj, "temp"); + switch (options->tempUnit) + { + case FF_TEMPERATURE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, temperature, "unit", "D"); + break; + case FF_TEMPERATURE_UNIT_CELSIUS: + yyjson_mut_obj_add_str(doc, obj, "unit", "C"); + break; + case FF_TEMPERATURE_UNIT_FAHRENHEIT: + yyjson_mut_obj_add_str(doc, obj, "unit", "F"); + break; + case FF_TEMPERATURE_UNIT_KELVIN: + yyjson_mut_obj_add_str(doc, obj, "unit", "K"); + break; + } + yyjson_mut_obj_add_uint(doc, temperature, "ndigits", options->tempNdigits); + { + yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, temperature, "color"); + yyjson_mut_obj_add_strbuf(doc, color, "green", &options->tempColorGreen); + yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->tempColorYellow); + yyjson_mut_obj_add_strbuf(doc, color, "red", &options->tempColorRed); + } + switch (options->tempSpaceBeforeUnit) + { + case FF_SPACE_BEFORE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "default"); + break; + case FF_SPACE_BEFORE_UNIT_ALWAYS: + yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "always"); + break; + case FF_SPACE_BEFORE_UNIT_NEVER: + yyjson_mut_obj_add_str(doc, temperature, "spaceBeforeUnit", "never"); + break; + } + } + + { + yyjson_mut_val* percent = yyjson_mut_obj_add_obj(doc, obj, "percent"); + { + yyjson_mut_val* type = yyjson_mut_obj_add_arr(doc, percent, "type"); + if (options->percentType & FF_PERCENTAGE_TYPE_NUM_BIT) + yyjson_mut_arr_add_str(doc, type, "num"); + if (options->percentType & FF_PERCENTAGE_TYPE_BAR_BIT) + yyjson_mut_arr_add_str(doc, type, "var"); + if (options->percentType & FF_PERCENTAGE_TYPE_HIDE_OTHERS_BIT) + yyjson_mut_arr_add_str(doc, type, "hide-others"); + if (options->percentType & FF_PERCENTAGE_TYPE_NUM_COLOR_BIT) + yyjson_mut_arr_add_str(doc, type, "num-color"); + if (options->percentType & FF_PERCENTAGE_TYPE_BAR_MONOCHROME_BIT) + yyjson_mut_arr_add_str(doc, type, "bar-monochrome"); + } + yyjson_mut_obj_add_uint(doc, percent, "ndigits", options->percentNdigits); + { + yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, percent, "color"); + yyjson_mut_obj_add_strbuf(doc, color, "green", &options->percentColorGreen); + yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->percentColorYellow); + yyjson_mut_obj_add_strbuf(doc, color, "red", &options->percentColorRed); + } + switch (options->percentSpaceBeforeUnit) + { + case FF_SPACE_BEFORE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "default"); + break; + case FF_SPACE_BEFORE_UNIT_ALWAYS: + yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "always"); + break; + case FF_SPACE_BEFORE_UNIT_NEVER: + yyjson_mut_obj_add_str(doc, percent, "spaceBeforeUnit", "never"); + break; + } + yyjson_mut_obj_add_uint(doc, percent, "width", options->percentWidth); + } + + { + yyjson_mut_val* bar = yyjson_mut_obj_add_obj(doc, obj, "bar"); + + yyjson_mut_val* char_ = yyjson_mut_obj_add_obj(doc, bar, "char"); + yyjson_mut_obj_add_strbuf(doc, char_, "elapsed", &options->barCharElapsed); + yyjson_mut_obj_add_strbuf(doc, char_, "total", &options->barCharTotal); + + yyjson_mut_val* border = yyjson_mut_obj_add_obj(doc, bar, "border"); + yyjson_mut_obj_add_strbuf(doc, border, "left", &options->barBorderLeft); + yyjson_mut_obj_add_strbuf(doc, border, "right", &options->barBorderRight); + yyjson_mut_obj_add_strbuf(doc, border, "leftElapsed", &options->barBorderLeftElapsed); + yyjson_mut_obj_add_strbuf(doc, border, "rightElapsed", &options->barBorderRightElapsed); + + yyjson_mut_val* color = yyjson_mut_obj_add_obj(doc, bar, "color"); + yyjson_mut_obj_add_strbuf(doc, color, "elapsed", &options->barColorElapsed); + yyjson_mut_obj_add_strbuf(doc, color, "total", &options->barColorTotal); + yyjson_mut_obj_add_strbuf(doc, color, "border", &options->barColorBorder); + + yyjson_mut_obj_add_uint(doc, bar, "width", options->barWidth); + } + + { + yyjson_mut_val* fraction = yyjson_mut_obj_add_obj(doc, obj, "fraction"); + + if (options->fractionNdigits < 0) + yyjson_mut_obj_add_null(doc, fraction, "ndigits"); else - yyjson_mut_obj_add_int(doc, obj, "stat", options->stat); + yyjson_mut_obj_add_uint(doc, fraction, "ndigits", (uint8_t) options->fractionNdigits); } - if (options->pipe != defaultOptions.pipe) - yyjson_mut_obj_add_bool(doc, obj, "pipe", options->pipe); - - if (options->showErrors != defaultOptions.showErrors) - yyjson_mut_obj_add_bool(doc, obj, "showErrors", options->showErrors); - - if (options->disableLinewrap != defaultOptions.disableLinewrap) - yyjson_mut_obj_add_bool(doc, obj, "disableLinewrap", options->disableLinewrap); - - if (options->hideCursor != defaultOptions.hideCursor) - yyjson_mut_obj_add_bool(doc, obj, "hideCursor", options->hideCursor); - - if (!ffStrbufEqual(&options->keyValueSeparator, &defaultOptions.keyValueSeparator)) - yyjson_mut_obj_add_strbuf(doc, obj, "separator", &options->keyValueSeparator); + yyjson_mut_obj_add_bool(doc, obj, "noBuffer", options->noBuffer); { - yyjson_mut_val* color = yyjson_mut_obj(doc); - if (!ffStrbufEqual(&options->colorKeys, &defaultOptions.colorKeys)) - yyjson_mut_obj_add_strbuf(doc, color, "keys", &options->colorKeys); - if (!ffStrbufEqual(&options->colorTitle, &defaultOptions.colorTitle)) - yyjson_mut_obj_add_strbuf(doc, color, "title", &options->colorTitle); - if (!ffStrbufEqual(&options->colorOutput, &defaultOptions.colorOutput)) - yyjson_mut_obj_add_strbuf(doc, color, "output", &options->colorOutput); - if (!ffStrbufEqual(&options->colorSeparator, &defaultOptions.colorSeparator)) - yyjson_mut_obj_add_strbuf(doc, color, "separator", &options->colorSeparator); - if (yyjson_mut_obj_size(color) > 0) + yyjson_mut_val* key = yyjson_mut_obj_add_obj(doc, obj, "key"); + yyjson_mut_obj_add_uint(doc, key, "width", options->keyWidth); + switch ((uint8_t) options->keyType) { - if (yyjson_mut_obj_size(color) == 2 && ffStrbufEqual(&options->colorKeys, &options->colorTitle)) - yyjson_mut_obj_add_strbuf(doc, obj, "color", &options->colorKeys); - else - yyjson_mut_obj_add_val(doc, obj, "color", color); + case FF_MODULE_KEY_TYPE_NONE: + yyjson_mut_obj_add_str(doc, key, "type", "none"); + break; + case FF_MODULE_KEY_TYPE_STRING: + yyjson_mut_obj_add_str(doc, key, "type", "string"); + break; + case FF_MODULE_KEY_TYPE_ICON: + yyjson_mut_obj_add_str(doc, key, "type", "icon"); + break; + case FF_MODULE_KEY_TYPE_BOTH: + yyjson_mut_obj_add_str(doc, key, "type", "both"); + break; } - } - if (options->brightColor != defaultOptions.brightColor) - yyjson_mut_obj_add_bool(doc, obj, "brightColor", options->brightColor); - - { - yyjson_mut_val* size = yyjson_mut_obj(doc); - if (options->sizeNdigits != defaultOptions.sizeNdigits) - yyjson_mut_obj_add_uint(doc, size, "ndigits", options->sizeNdigits); - if (options->sizeMaxPrefix != defaultOptions.sizeMaxPrefix && options->sizeMaxPrefix <= 8) - { - yyjson_mut_obj_add_str(doc, size, "maxPrefix", ((const char* []) { - "B", - "kB", - "MB", - "GB", - "TB", - "PB", - "EB", - "ZB", - "YB", - })[options->sizeMaxPrefix]); - } - if (options->sizeBinaryPrefix != defaultOptions.sizeBinaryPrefix) - { - switch (options->sizeBinaryPrefix) - { - case FF_SIZE_BINARY_PREFIX_TYPE_IEC: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "iec"); - break; - case FF_SIZE_BINARY_PREFIX_TYPE_SI: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "si"); - break; - case FF_SIZE_BINARY_PREFIX_TYPE_JEDEC: - yyjson_mut_obj_add_str(doc, size, "binaryPrefix", "jedec"); - break; - } - } - if (yyjson_mut_obj_size(size) > 0) - yyjson_mut_obj_add_val(doc, obj, "size", size); + yyjson_mut_obj_add_uint(doc, key, "paddingLeft", options->keyPaddingLeft); } { - yyjson_mut_val* temperature = yyjson_mut_obj(doc); - if (options->tempUnit != defaultOptions.tempUnit) + yyjson_mut_val* freq = yyjson_mut_obj_add_obj(doc, obj, "freq"); + yyjson_mut_obj_add_int(doc, freq, "ndigits", options->freqNdigits); + switch (options->percentSpaceBeforeUnit) { - switch (options->tempUnit) - { - case FF_TEMPERATURE_UNIT_DEFAULT: - yyjson_mut_obj_add_str(doc, temperature, "unit", "DEFAULT"); - break; - case FF_TEMPERATURE_UNIT_CELSIUS: - yyjson_mut_obj_add_str(doc, obj, "unit", "C"); - break; - case FF_TEMPERATURE_UNIT_FAHRENHEIT: - yyjson_mut_obj_add_str(doc, obj, "unit", "F"); - break; - case FF_TEMPERATURE_UNIT_KELVIN: - yyjson_mut_obj_add_str(doc, obj, "unit", "K"); - break; - } + case FF_SPACE_BEFORE_UNIT_DEFAULT: + yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "default"); + break; + case FF_SPACE_BEFORE_UNIT_ALWAYS: + yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "always"); + break; + case FF_SPACE_BEFORE_UNIT_NEVER: + yyjson_mut_obj_add_str(doc, freq, "spaceBeforeUnit", "never"); + break; } - if (options->tempNdigits != defaultOptions.tempNdigits) - yyjson_mut_obj_add_uint(doc, temperature, "ndigits", options->tempNdigits); - { - yyjson_mut_val* color = yyjson_mut_obj(doc); - if (!ffStrbufEqual(&options->tempColorGreen, &defaultOptions.tempColorGreen)) - yyjson_mut_obj_add_strbuf(doc, color, "green", &options->tempColorGreen); - if (!ffStrbufEqual(&options->tempColorYellow, &defaultOptions.tempColorYellow)) - yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->tempColorYellow); - if (!ffStrbufEqual(&options->tempColorRed, &defaultOptions.tempColorRed)) - yyjson_mut_obj_add_strbuf(doc, color, "red", &options->tempColorRed); - if (yyjson_mut_obj_size(color) > 0) - yyjson_mut_obj_add_val(doc, temperature, "color", color); - } - if (yyjson_mut_obj_size(temperature) > 0) - yyjson_mut_obj_add_val(doc, obj, "temp", temperature); } { - yyjson_mut_val* percent = yyjson_mut_obj(doc); - if (options->percentType != defaultOptions.percentType) - yyjson_mut_obj_add_uint(doc, percent, "type", options->percentType); - if (options->percentNdigits != defaultOptions.percentNdigits) - yyjson_mut_obj_add_uint(doc, percent, "ndigits", options->percentNdigits); - { - yyjson_mut_val* color = yyjson_mut_obj(doc); - if (!ffStrbufEqual(&options->percentColorGreen, &defaultOptions.percentColorGreen)) - yyjson_mut_obj_add_strbuf(doc, color, "green", &options->percentColorGreen); - if (!ffStrbufEqual(&options->percentColorYellow, &defaultOptions.percentColorYellow)) - yyjson_mut_obj_add_strbuf(doc, color, "yellow", &options->percentColorYellow); - if (!ffStrbufEqual(&options->percentColorRed, &defaultOptions.percentColorRed)) - yyjson_mut_obj_add_strbuf(doc, color, "red", &options->percentColorRed); - if (yyjson_mut_obj_size(color) > 0) - yyjson_mut_obj_add_val(doc, percent, "color", color); - } - if (yyjson_mut_obj_size(percent) > 0) - yyjson_mut_obj_add_val(doc, obj, "percent", percent); + yyjson_mut_val* constants = yyjson_mut_obj_add_arr(doc, obj, "constants"); + FF_LIST_FOR_EACH(FFstrbuf, item, options->constants) + yyjson_mut_arr_add_strbuf(doc, constants, item); } - - { - yyjson_mut_val* bar = yyjson_mut_obj(doc); - if (!ffStrbufEqual(&options->barCharElapsed, &defaultOptions.barCharElapsed)) - yyjson_mut_obj_add_strbuf(doc, bar, "charElapsed", &options->barCharElapsed); - if (!ffStrbufEqual(&options->barCharTotal, &defaultOptions.barCharTotal)) - yyjson_mut_obj_add_strbuf(doc, bar, "charTotal", &options->barCharTotal); - if (!ffStrbufEqual(&options->barBorderLeft, &defaultOptions.barBorderLeft)) - yyjson_mut_obj_add_strbuf(doc, bar, "borderLeft", &options->barBorderLeft); - if (!ffStrbufEqual(&options->barBorderRight, &defaultOptions.barBorderRight)) - yyjson_mut_obj_add_strbuf(doc, bar, "borderRight", &options->barBorderRight); - if (options->barWidth != defaultOptions.barWidth) - yyjson_mut_obj_add_uint(doc, bar, "width", options->barWidth); - - if (yyjson_mut_obj_size(bar) > 0) - yyjson_mut_obj_add_val(doc, obj, "bar", bar); - } - - if (options->noBuffer != defaultOptions.noBuffer) - yyjson_mut_obj_add_bool(doc, obj, "noBuffer", options->noBuffer); - - if (options->keyWidth != defaultOptions.keyWidth) - yyjson_mut_obj_add_uint(doc, obj, "keyWidth", options->keyWidth); - - if (options->keyType != defaultOptions.keyType) - yyjson_mut_obj_add_uint(doc, obj, "keyType", options->keyType); - - if (options->keyPaddingLeft != defaultOptions.keyPaddingLeft) - yyjson_mut_obj_add_uint(doc, obj, "keyPaddingLeft", options->keyPaddingLeft); - - { - yyjson_mut_val* freq = yyjson_mut_obj(doc); - if (options->freqNdigits != defaultOptions.freqNdigits) - yyjson_mut_obj_add_int(doc, freq, "ndigits", options->freqNdigits); - if (yyjson_mut_obj_size(freq) > 0) - yyjson_mut_obj_add_val(doc, obj, "freq", freq); - } - - if (yyjson_mut_obj_size(obj) > 0) - yyjson_mut_obj_add_val(doc, doc->root, "display", obj); } diff --git a/src/options/general.c b/src/options/general.c index e90355335..479bb9a10 100644 --- a/src/options/general.c +++ b/src/options/general.c @@ -121,45 +121,32 @@ void ffOptionsDestroyGeneral(FF_MAYBE_UNUSED FFOptionsGeneral* options) void ffOptionsGenerateGeneralJsonConfig(FFOptionsGeneral* options, yyjson_mut_doc* doc) { - __attribute__((__cleanup__(ffOptionsDestroyGeneral))) FFOptionsGeneral defaultOptions; - ffOptionsInitGeneral(&defaultOptions); + yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, doc->root, "general"); - yyjson_mut_val* obj = yyjson_mut_obj(doc); + yyjson_mut_obj_add_bool(doc, obj, "thread", options->multithreading); - if (options->multithreading != defaultOptions.multithreading) - yyjson_mut_obj_add_bool(doc, obj, "thread", options->multithreading); - - if (options->processingTimeout != defaultOptions.processingTimeout) - yyjson_mut_obj_add_int(doc, obj, "processingTimeout", options->processingTimeout); + yyjson_mut_obj_add_int(doc, obj, "processingTimeout", options->processingTimeout); #if defined(__linux__) || defined(__FreeBSD__) || defined(__sun) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__) - if (!ffStrbufEqual(&options->playerName, &defaultOptions.playerName)) - yyjson_mut_obj_add_strbuf(doc, obj, "playerName", &options->playerName); + yyjson_mut_obj_add_strbuf(doc, obj, "playerName", &options->playerName); - if (options->dsForceDrm != defaultOptions.dsForceDrm) + switch (options->dsForceDrm) { - switch (options->dsForceDrm) - { - case FF_DS_FORCE_DRM_TYPE_FALSE: - yyjson_mut_obj_add_bool(doc, obj, "dsForceDrm", false); - break; - case FF_DS_FORCE_DRM_TYPE_SYSFS_ONLY: - yyjson_mut_obj_add_str(doc, obj, "dsForceDrm", "sysfs-only"); - break; - case FF_DS_FORCE_DRM_TYPE_TRUE: - yyjson_mut_obj_add_bool(doc, obj, "dsForceDrm", true); - break; - } + case FF_DS_FORCE_DRM_TYPE_FALSE: + yyjson_mut_obj_add_bool(doc, obj, "dsForceDrm", false); + break; + case FF_DS_FORCE_DRM_TYPE_SYSFS_ONLY: + yyjson_mut_obj_add_str(doc, obj, "dsForceDrm", "sysfs-only"); + break; + case FF_DS_FORCE_DRM_TYPE_TRUE: + yyjson_mut_obj_add_bool(doc, obj, "dsForceDrm", true); + break; } #elif defined(_WIN32) - if (options->wmiTimeout != defaultOptions.wmiTimeout) - yyjson_mut_obj_add_int(doc, obj, "wmiTimeout", options->wmiTimeout); + yyjson_mut_obj_add_int(doc, obj, "wmiTimeout", options->wmiTimeout); #endif - - if (yyjson_mut_obj_size(obj) > 0) - yyjson_mut_obj_add_val(doc, doc->root, "general", obj); } diff --git a/src/options/logo.c b/src/options/logo.c index 1b6240d2e..34e420182 100644 --- a/src/options/logo.c +++ b/src/options/logo.c @@ -327,18 +327,28 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo } else if (ffStrEqualsIgnCase(key, "width")) { - uint32_t value = (uint32_t) yyjson_get_uint(val); - if (value == 0) - return "Logo width must be a positive integer"; - options->width = value; + if (yyjson_is_null(val)) + options->width = 0; + else + { + uint32_t value = (uint32_t) yyjson_get_uint(val); + if (value == 0) + return "Logo width must be a positive integer"; + options->width = value; + } continue; } else if (ffStrEqualsIgnCase(key, "height")) { - uint32_t value = (uint32_t) yyjson_get_uint(val); - if (value == 0) - return "Logo height must be a positive integer"; - options->height = value; + if (yyjson_is_null(val)) + options->height = 0; + else + { + uint32_t value = (uint32_t) yyjson_get_uint(val); + if (value == 0) + return "Logo height must be a positive integer"; + options->height = value; + } continue; } else if (ffStrEqualsIgnCase(key, "padding")) @@ -463,121 +473,106 @@ const char* ffOptionsParseLogoJsonConfig(FFOptionsLogo* options, yyjson_val* roo void ffOptionsGenerateLogoJsonConfig(FFOptionsLogo* options, yyjson_mut_doc* doc) { - __attribute__((__cleanup__(ffOptionsDestroyLogo))) FFOptionsLogo defaultOptions; - ffOptionsInitLogo(&defaultOptions); - yyjson_mut_val* obj = yyjson_mut_obj(doc); - if (options->type != defaultOptions.type) + switch (options->type) { - switch (options->type) - { - case FF_LOGO_TYPE_NONE: - yyjson_mut_obj_add_null(doc, doc->root, "logo"); - return; - case FF_LOGO_TYPE_BUILTIN: - yyjson_mut_obj_add_str(doc, obj, "type", "builtin"); - break; - case FF_LOGO_TYPE_SMALL: - yyjson_mut_obj_add_str(doc, obj, "type", "small"); - break; - case FF_LOGO_TYPE_FILE: - yyjson_mut_obj_add_str(doc, obj, "type", "file"); - break; - case FF_LOGO_TYPE_FILE_RAW: - yyjson_mut_obj_add_str(doc, obj, "type", "file-raw"); - break; - case FF_LOGO_TYPE_DATA: - yyjson_mut_obj_add_str(doc, obj, "type", "data"); - break; - case FF_LOGO_TYPE_DATA_RAW: - yyjson_mut_obj_add_str(doc, obj, "type", "data-raw"); - break; - case FF_LOGO_TYPE_COMMAND_RAW: - yyjson_mut_obj_add_str(doc, obj, "type", "command-raw"); - break; - case FF_LOGO_TYPE_IMAGE_SIXEL: - yyjson_mut_obj_add_str(doc, obj, "type", "sixel"); - break; - case FF_LOGO_TYPE_IMAGE_KITTY: - yyjson_mut_obj_add_str(doc, obj, "type", "kitty"); - break; - case FF_LOGO_TYPE_IMAGE_ITERM: - yyjson_mut_obj_add_str(doc, obj, "type", "iterm"); - break; - case FF_LOGO_TYPE_IMAGE_CHAFA: - yyjson_mut_obj_add_str(doc, obj, "type", "chafa"); - break; - case FF_LOGO_TYPE_IMAGE_RAW: - yyjson_mut_obj_add_str(doc, obj, "type", "raw"); - break; - default: - yyjson_mut_obj_add_str(doc, obj, "type", "auto"); - break; - } + case FF_LOGO_TYPE_NONE: + yyjson_mut_obj_add_null(doc, doc->root, "logo"); + return; + case FF_LOGO_TYPE_BUILTIN: + yyjson_mut_obj_add_str(doc, obj, "type", "builtin"); + break; + case FF_LOGO_TYPE_SMALL: + yyjson_mut_obj_add_str(doc, obj, "type", "small"); + break; + case FF_LOGO_TYPE_FILE: + yyjson_mut_obj_add_str(doc, obj, "type", "file"); + break; + case FF_LOGO_TYPE_FILE_RAW: + yyjson_mut_obj_add_str(doc, obj, "type", "file-raw"); + break; + case FF_LOGO_TYPE_DATA: + yyjson_mut_obj_add_str(doc, obj, "type", "data"); + break; + case FF_LOGO_TYPE_DATA_RAW: + yyjson_mut_obj_add_str(doc, obj, "type", "data-raw"); + break; + case FF_LOGO_TYPE_COMMAND_RAW: + yyjson_mut_obj_add_str(doc, obj, "type", "command-raw"); + break; + case FF_LOGO_TYPE_IMAGE_SIXEL: + yyjson_mut_obj_add_str(doc, obj, "type", "sixel"); + break; + case FF_LOGO_TYPE_IMAGE_KITTY: + yyjson_mut_obj_add_str(doc, obj, "type", "kitty"); + break; + case FF_LOGO_TYPE_IMAGE_KITTY_DIRECT: + yyjson_mut_obj_add_str(doc, obj, "type", "kitty-direct"); + break; + case FF_LOGO_TYPE_IMAGE_KITTY_ICAT: + yyjson_mut_obj_add_str(doc, obj, "type", "kitty-icat"); + break; + case FF_LOGO_TYPE_IMAGE_ITERM: + yyjson_mut_obj_add_str(doc, obj, "type", "iterm"); + break; + case FF_LOGO_TYPE_IMAGE_CHAFA: + yyjson_mut_obj_add_str(doc, obj, "type", "chafa"); + break; + case FF_LOGO_TYPE_IMAGE_RAW: + yyjson_mut_obj_add_str(doc, obj, "type", "raw"); + break; + default: + yyjson_mut_obj_add_str(doc, obj, "type", "auto"); + break; } - if (!ffStrbufEqual(&options->source, &defaultOptions.source)) - yyjson_mut_obj_add_str(doc, obj, "source", options->source.chars); + yyjson_mut_obj_add_str(doc, obj, "source", options->source.chars); { yyjson_mut_val* color = yyjson_mut_obj(doc); for (int i = 0; i < FASTFETCH_LOGO_MAX_COLORS; i++) { - if (!ffStrbufEqual(&options->colors[i], &defaultOptions.colors[i])) - { - char c = (char)('1' + i); - yyjson_mut_obj_add(color, yyjson_mut_strncpy(doc, &c, 1), yyjson_mut_strbuf(doc, &options->colors[i])); - } + char c = (char)('1' + i); + yyjson_mut_obj_add(color, yyjson_mut_strncpy(doc, &c, 1), yyjson_mut_strbuf(doc, &options->colors[i])); } - if (yyjson_mut_obj_size(color) > 0) - yyjson_mut_obj_add_val(doc, obj, "color", color); + yyjson_mut_obj_add_val(doc, obj, "color", color); } - if (options->width != defaultOptions.width) + if (options->width == 0) + yyjson_mut_obj_add_null(doc, obj, "width"); + else yyjson_mut_obj_add_uint(doc, obj, "width", options->width); - if (options->height != defaultOptions.height) + if (options->height == 0) + yyjson_mut_obj_add_null(doc, obj, "height"); + else yyjson_mut_obj_add_uint(doc, obj, "height", options->height); { - yyjson_mut_val* padding = yyjson_mut_obj(doc); - if (options->paddingTop != defaultOptions.paddingTop) - yyjson_mut_obj_add_uint(doc, padding, "top", options->paddingTop); - if (options->paddingLeft != defaultOptions.paddingLeft) - yyjson_mut_obj_add_uint(doc, padding, "left", options->paddingLeft); - if (options->paddingRight != defaultOptions.paddingRight) - yyjson_mut_obj_add_uint(doc, padding, "right", options->paddingRight); - - if (yyjson_mut_obj_size(padding) > 0) - yyjson_mut_obj_add_val(doc, obj, "padding", padding); + yyjson_mut_val* padding = yyjson_mut_obj_add_obj(doc, obj, "padding"); + yyjson_mut_obj_add_uint(doc, padding, "top", options->paddingTop); + yyjson_mut_obj_add_uint(doc, padding, "left", options->paddingLeft); + yyjson_mut_obj_add_uint(doc, padding, "right", options->paddingRight); } - if (options->printRemaining != defaultOptions.printRemaining) - yyjson_mut_obj_add_bool(doc, obj, "printRemaining", options->printRemaining); + yyjson_mut_obj_add_bool(doc, obj, "printRemaining", options->printRemaining); - if (options->preserveAspectRatio != defaultOptions.preserveAspectRatio) - yyjson_mut_obj_add_bool(doc, obj, "preserveAspectRatio", options->preserveAspectRatio); + yyjson_mut_obj_add_bool(doc, obj, "preserveAspectRatio", options->preserveAspectRatio); - if (options->recache != defaultOptions.recache) - yyjson_mut_obj_add_bool(doc, obj, "recache", options->recache); + yyjson_mut_obj_add_bool(doc, obj, "recache", options->recache); - if (options->position != defaultOptions.position) - { - yyjson_mut_obj_add_str(doc, obj, "position", ((const char* []) { - "left", - "top", - "right", - })[options->position]); - } + yyjson_mut_obj_add_str(doc, obj, "position", ((const char* []) { + "left", + "top", + "right", + })[options->position]); { yyjson_mut_val* chafa = yyjson_mut_obj(doc); - if (options->chafaFgOnly != defaultOptions.chafaFgOnly) - yyjson_mut_obj_add_bool(doc, chafa, "fgOnly", options->chafaFgOnly); - if (!ffStrbufEqual(&options->chafaSymbols, &defaultOptions.chafaSymbols)) - yyjson_mut_obj_add_strbuf(doc, chafa, "symbols", &options->chafaSymbols); - if (options->chafaCanvasMode != defaultOptions.chafaCanvasMode && options->chafaCanvasMode <= 7) + yyjson_mut_obj_add_bool(doc, chafa, "fgOnly", options->chafaFgOnly); + yyjson_mut_obj_add_strbuf(doc, chafa, "symbols", &options->chafaSymbols); + if (options->chafaCanvasMode <= 7) { yyjson_mut_obj_add_str(doc, chafa, "canvasMode", ((const char* []) { "TRUECOLOR", @@ -590,14 +585,14 @@ void ffOptionsGenerateLogoJsonConfig(FFOptionsLogo* options, yyjson_mut_doc* doc "INDEXED_16_8", })[options->chafaCanvasMode]); } - if (options->chafaColorSpace != defaultOptions.chafaColorSpace && options->chafaColorSpace <= 1) + if (options->chafaColorSpace <= 1) { yyjson_mut_obj_add_str(doc, chafa, "colorSpace", ((const char* []) { "RGB", "DIN99D", })[options->chafaColorSpace]); } - if (options->chafaDitherMode != defaultOptions.chafaDitherMode && options->chafaDitherMode <= 2) + if (options->chafaDitherMode <= 2) { yyjson_mut_obj_add_str(doc, chafa, "ditherMode", ((const char* []) { "NONE", @@ -606,10 +601,8 @@ void ffOptionsGenerateLogoJsonConfig(FFOptionsLogo* options, yyjson_mut_doc* doc })[options->chafaDitherMode]); } - if (yyjson_mut_obj_size(chafa) > 0) - yyjson_mut_obj_add_val(doc, obj, "chafa", chafa); + yyjson_mut_obj_add_val(doc, obj, "chafa", chafa); } - if (yyjson_mut_obj_size(obj) > 0) - yyjson_mut_obj_add_val(doc, doc->root, "logo", obj); + yyjson_mut_obj_add_val(doc, doc->root, "logo", obj); }