From 75d2c668d0f627b9b5c3b5664fb6b5773af835af 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 14:25:14 +0800 Subject: [PATCH] Modules: refactor module option handling for static allocation Moves module option structs out of global config and removes dynamic allocation, using static buffers and size assertions for safer, simpler management. Refactors module initialization and destruction to work with isolated option structs, eliminating the need for the previous modules container and related code. Unifies module option header usage and updates detection logic to leverage statically-sized option buffers, improving encapsulation and maintainability. Simplifies module function signatures and reduces coupling between modules and config. Enhances future extensibility and reliability by enforcing max size constraints and removing unnecessary indirections. --- CMakeLists.txt | 1 - presets/neofetch.jsonc | 12 +- src/common/commandoption.c | 42 +++-- src/common/init.c | 9 +- src/common/jsonconfig.c | 38 ++-- src/common/modules.c | 148 +++++++-------- src/common/option.h | 2 + src/detection/battery/battery.h | 1 + src/detection/bios/bios.h | 1 + src/detection/bluetooth/bluetooth.h | 1 + src/detection/bluetoothradio/bluetoothradio.h | 1 + src/detection/board/board.h | 1 + src/detection/bootmgr/bootmgr.h | 1 + src/detection/brightness/brightness.h | 2 +- src/detection/btrfs/btrfs.h | 1 + src/detection/camera/camera.h | 1 + src/detection/chassis/chassis.h | 1 + src/detection/cpu/cpu.h | 1 + src/detection/cpucache/cpucache.h | 1 + src/detection/cpuusage/cpuusage.h | 1 + src/detection/cursor/cursor.h | 1 + src/detection/de/de.h | 1 + src/detection/disk/disk.h | 1 + src/detection/diskio/diskio.h | 1 + src/detection/displayserver/displayserver.h | 1 + src/detection/dns/dns.h | 1 + src/detection/editor/editor.h | 1 + src/detection/font/font.h | 3 +- src/detection/gpu/gpu.c | 6 +- src/detection/gpu/gpu.h | 1 + src/detection/host/host.h | 1 + src/detection/icons/icons.h | 1 + src/detection/initsystem/initsystem.h | 1 + src/detection/lm/lm.h | 1 + src/detection/localip/localip.h | 1 + src/detection/media/media.h | 1 + src/detection/memory/memory.h | 1 + src/detection/netio/netio.h | 1 + src/detection/opencl/opencl.h | 1 + src/detection/opengl/opengl.h | 1 + src/detection/os/os.h | 1 + src/detection/packages/packages.h | 1 + src/detection/physicaldisk/physicaldisk.h | 1 + src/detection/physicalmemory/physicalmemory.h | 1 + src/detection/poweradapter/poweradapter.h | 1 + src/detection/publicip/publicip.c | 4 +- src/detection/publicip/publicip.h | 5 +- src/detection/swap/swap.h | 1 + src/detection/terminalfont/terminalfont.h | 1 + src/detection/terminalshell/terminalshell.h | 2 + .../terminalshell/terminalshell_linux.c | 2 +- src/detection/terminalsize/terminalsize.h | 1 + src/detection/terminaltheme/terminaltheme.h | 1 + src/detection/theme/theme.h | 1 + src/detection/tpm/tpm.h | 1 + src/detection/uptime/uptime.h | 1 + src/detection/users/users.h | 1 + src/detection/version/version.h | 1 + src/detection/vulkan/vulkan.h | 1 + src/detection/weather/weather.h | 1 + src/detection/wifi/wifi.h | 1 + src/detection/wm/wm.h | 1 + src/detection/zpool/zpool.h | 1 + src/fastfetch.h | 2 - src/flashfetch.c | 169 +++++++++++++----- src/logo/logo.c | 14 +- src/modules/battery/battery.c | 35 ++-- src/modules/battery/battery.h | 2 +- src/modules/battery/option.h | 5 +- src/modules/bios/bios.c | 21 ++- src/modules/bios/bios.h | 2 +- src/modules/bios/option.h | 5 +- src/modules/bluetooth/bluetooth.c | 25 ++- src/modules/bluetooth/bluetooth.h | 2 +- src/modules/bluetooth/option.h | 5 +- src/modules/bluetoothradio/bluetoothradio.c | 21 ++- src/modules/bluetoothradio/bluetoothradio.h | 2 +- src/modules/bluetoothradio/option.h | 5 +- src/modules/board/board.c | 21 ++- src/modules/board/board.h | 2 +- src/modules/board/option.h | 5 +- src/modules/bootmgr/bootmgr.c | 21 ++- src/modules/bootmgr/bootmgr.h | 2 +- src/modules/bootmgr/option.h | 5 +- src/modules/break/break.c | 17 +- src/modules/break/break.h | 2 +- src/modules/break/option.h | 5 +- src/modules/brightness/brightness.c | 29 ++- src/modules/brightness/brightness.h | 2 +- src/modules/brightness/option.h | 5 +- src/modules/btrfs/btrfs.c | 23 ++- src/modules/btrfs/btrfs.h | 2 +- src/modules/btrfs/option.h | 5 +- src/modules/camera/camera.c | 21 ++- src/modules/camera/camera.h | 2 +- src/modules/camera/option.h | 5 +- src/modules/chassis/chassis.c | 21 ++- src/modules/chassis/chassis.h | 2 +- src/modules/chassis/option.h | 5 +- src/modules/colors/colors.c | 21 ++- src/modules/colors/colors.h | 2 +- src/modules/colors/option.h | 5 +- src/modules/command/command.c | 29 ++- src/modules/command/command.h | 2 +- src/modules/command/option.h | 5 +- src/modules/cpu/cpu.c | 27 ++- src/modules/cpu/cpu.h | 2 +- src/modules/cpu/option.h | 5 +- src/modules/cpucache/cpucache.c | 25 ++- src/modules/cpucache/cpucache.h | 2 +- src/modules/cpucache/option.h | 5 +- src/modules/cpuusage/cpuusage.c | 27 ++- src/modules/cpuusage/cpuusage.h | 2 +- src/modules/cpuusage/option.h | 5 +- src/modules/cursor/cursor.c | 21 ++- src/modules/cursor/cursor.h | 2 +- src/modules/cursor/option.h | 5 +- src/modules/custom/custom.c | 23 ++- src/modules/custom/custom.h | 2 +- src/modules/custom/option.h | 5 +- src/modules/datetime/datetime.c | 21 ++- src/modules/datetime/datetime.h | 2 +- src/modules/datetime/option.h | 5 +- src/modules/de/de.c | 25 ++- src/modules/de/de.h | 2 +- src/modules/de/option.h | 5 +- src/modules/disk/disk.c | 49 +++-- src/modules/disk/disk.h | 2 +- src/modules/disk/option.h | 5 +- src/modules/diskio/diskio.c | 31 ++-- src/modules/diskio/diskio.h | 2 +- src/modules/diskio/option.h | 5 +- src/modules/display/display.c | 25 ++- src/modules/display/display.h | 2 +- src/modules/display/option.h | 5 +- src/modules/dns/dns.c | 25 ++- src/modules/dns/dns.h | 2 +- src/modules/dns/option.h | 5 +- src/modules/editor/editor.c | 21 ++- src/modules/editor/editor.h | 2 +- src/modules/editor/option.h | 5 +- src/modules/font/font.c | 21 ++- src/modules/font/font.h | 2 +- src/modules/font/option.h | 5 +- src/modules/gamepad/gamepad.c | 23 ++- src/modules/gamepad/gamepad.h | 2 +- src/modules/gamepad/option.h | 5 +- src/modules/gpu/gpu.c | 47 +++-- src/modules/gpu/gpu.h | 2 +- src/modules/gpu/option.h | 5 +- src/modules/host/host.c | 21 ++- src/modules/host/host.h | 2 +- src/modules/host/option.h | 5 +- src/modules/icons/icons.c | 21 ++- src/modules/icons/icons.h | 2 +- src/modules/icons/option.h | 5 +- src/modules/initsystem/initsystem.c | 21 ++- src/modules/initsystem/initsystem.h | 2 +- src/modules/initsystem/option.h | 5 +- src/modules/kernel/kernel.c | 21 ++- src/modules/kernel/kernel.h | 2 +- src/modules/kernel/option.h | 5 +- src/modules/keyboard/keyboard.c | 21 ++- src/modules/keyboard/keyboard.h | 2 +- src/modules/keyboard/option.h | 5 +- src/modules/lm/lm.c | 21 ++- src/modules/lm/lm.h | 2 +- src/modules/lm/option.h | 5 +- src/modules/loadavg/loadavg.c | 29 ++- src/modules/loadavg/loadavg.h | 2 +- src/modules/loadavg/option.h | 5 +- src/modules/locale/locale.c | 21 ++- src/modules/locale/locale.h | 2 +- src/modules/locale/option.h | 5 +- src/modules/localip/localip.c | 37 ++-- src/modules/localip/localip.h | 2 +- src/modules/localip/option.h | 5 +- src/modules/media/media.c | 21 ++- src/modules/media/media.h | 2 +- src/modules/media/option.h | 5 +- src/modules/memory/memory.c | 23 ++- src/modules/memory/memory.h | 2 +- src/modules/memory/option.h | 5 +- src/modules/modules.h | 2 - src/modules/monitor/monitor.c | 21 ++- src/modules/monitor/monitor.h | 2 +- src/modules/monitor/option.h | 5 +- src/modules/mouse/mouse.c | 21 ++- src/modules/mouse/mouse.h | 2 +- src/modules/mouse/option.h | 5 +- src/modules/netio/netio.c | 45 +++-- src/modules/netio/netio.h | 2 +- src/modules/netio/option.h | 5 +- src/modules/opencl/opencl.c | 21 ++- src/modules/opencl/opencl.h | 2 +- src/modules/opencl/option.h | 5 +- src/modules/opengl/opengl.c | 25 ++- src/modules/opengl/opengl.h | 2 +- src/modules/opengl/option.h | 5 +- src/modules/os/option.h | 5 +- src/modules/os/os.c | 51 +++--- src/modules/os/os.h | 2 +- src/modules/packages/option.h | 5 +- src/modules/packages/packages.c | 27 ++- src/modules/packages/packages.h | 2 +- src/modules/physicaldisk/option.h | 5 +- src/modules/physicaldisk/physicaldisk.c | 31 ++-- src/modules/physicaldisk/physicaldisk.h | 2 +- src/modules/physicalmemory/option.h | 5 +- src/modules/physicalmemory/physicalmemory.c | 21 ++- src/modules/physicalmemory/physicalmemory.h | 2 +- src/modules/player/option.h | 5 +- src/modules/player/player.c | 21 ++- src/modules/player/player.h | 2 +- src/modules/poweradapter/option.h | 5 +- src/modules/poweradapter/poweradapter.c | 21 ++- src/modules/poweradapter/poweradapter.h | 2 +- src/modules/processes/option.h | 5 +- src/modules/processes/processes.c | 21 ++- src/modules/processes/processes.h | 2 +- src/modules/publicip/option.h | 9 +- src/modules/publicip/publicip.c | 43 +++-- src/modules/publicip/publicip.h | 10 +- src/modules/separator/option.h | 6 +- src/modules/separator/separator.c | 23 ++- src/modules/separator/separator.h | 2 +- src/modules/shell/option.h | 5 +- src/modules/shell/shell.c | 21 ++- src/modules/shell/shell.h | 2 +- src/modules/sound/option.h | 5 +- src/modules/sound/sound.c | 27 ++- src/modules/sound/sound.h | 2 +- src/modules/swap/option.h | 5 +- src/modules/swap/swap.c | 25 ++- src/modules/swap/swap.h | 2 +- src/modules/terminal/option.h | 5 +- src/modules/terminal/terminal.c | 21 ++- src/modules/terminal/terminal.h | 2 +- src/modules/terminalfont/option.h | 5 +- src/modules/terminalfont/terminalfont.c | 23 ++- src/modules/terminalfont/terminalfont.h | 2 +- src/modules/terminalsize/option.h | 5 +- src/modules/terminalsize/terminalsize.c | 23 ++- src/modules/terminalsize/terminalsize.h | 2 +- src/modules/terminaltheme/option.h | 5 +- src/modules/terminaltheme/terminaltheme.c | 23 ++- src/modules/terminaltheme/terminaltheme.h | 2 +- src/modules/theme/option.h | 5 +- src/modules/theme/theme.c | 21 ++- src/modules/theme/theme.h | 2 +- src/modules/title/option.h | 7 +- src/modules/title/title.c | 39 ++-- src/modules/title/title.h | 2 +- src/modules/tpm/option.h | 5 +- src/modules/tpm/tpm.c | 23 ++- src/modules/tpm/tpm.h | 2 +- src/modules/uptime/option.h | 5 +- src/modules/uptime/uptime.c | 21 ++- src/modules/uptime/uptime.h | 2 +- src/modules/users/option.h | 5 +- src/modules/users/users.c | 27 ++- src/modules/users/users.h | 2 +- src/modules/version/option.h | 5 +- src/modules/version/version.c | 21 ++- src/modules/version/version.h | 2 +- src/modules/vulkan/option.h | 5 +- src/modules/vulkan/vulkan.c | 21 ++- src/modules/vulkan/vulkan.h | 2 +- src/modules/wallpaper/option.h | 5 +- src/modules/wallpaper/wallpaper.c | 21 ++- src/modules/wallpaper/wallpaper.h | 2 +- src/modules/weather/option.h | 5 +- src/modules/weather/weather.c | 29 ++- src/modules/weather/weather.h | 2 +- src/modules/wifi/option.h | 5 +- src/modules/wifi/wifi.c | 25 ++- src/modules/wifi/wifi.h | 2 +- src/modules/wm/option.h | 5 +- src/modules/wm/wm.c | 23 ++- src/modules/wm/wm.h | 2 +- src/modules/wmtheme/option.h | 5 +- src/modules/wmtheme/wmtheme.c | 21 ++- src/modules/wmtheme/wmtheme.h | 2 +- src/modules/zpool/option.h | 5 +- src/modules/zpool/zpool.c | 23 ++- src/modules/zpool/zpool.h | 2 +- src/options/display.h | 1 + src/options/modules.c | 156 ---------------- src/options/modules.h | 83 --------- 289 files changed, 1449 insertions(+), 1672 deletions(-) delete mode 100644 src/options/modules.c delete mode 100644 src/options/modules.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 22917aec6..b01a1eae7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -474,7 +474,6 @@ set(LIBFASTFETCH_SRC src/modules/wmtheme/wmtheme.c src/modules/zpool/zpool.c src/options/display.c - src/options/modules.c src/options/logo.c src/options/general.c src/util/edidHelper.c diff --git a/presets/neofetch.jsonc b/presets/neofetch.jsonc index 66f9b9de6..0f38ed5f2 100644 --- a/presets/neofetch.jsonc +++ b/presets/neofetch.jsonc @@ -3,7 +3,12 @@ "display": { "size": { "maxPrefix": "MB", - "ndigits": 0 + "ndigits": 0, + "spaceBeforeUnit": "never" + }, + "freq": { + "ndigits": 3, + "spaceBeforeUnit": "never" } }, "modules": [ @@ -39,11 +44,12 @@ "cpu", { "type": "gpu", - "key": "GPU" + "key": "GPU", + "format": "{name}" }, { "type": "memory", - "format": "{} / {}" + "format": "{used} / {total}" }, "break", "colors" diff --git a/src/common/commandoption.c b/src/common/commandoption.c index 004f81044..d38921a46 100644 --- a/src/common/commandoption.c +++ b/src/common/commandoption.c @@ -12,7 +12,6 @@ void ffPrepareCommandOption(FFdata* data) { - FFOptionsModules* const options = &instance.config.modules; //If we don't have a custom structure, use the default one if(data->structure.length == 0) ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); // Cannot use `ffStrbufSetStatic` here because we will modify the string @@ -21,22 +20,38 @@ void ffPrepareCommandOption(FFdata* data) ffPrepareCPUUsage(); if(ffStrbufContainIgnCaseS(&data->structure, FF_DISKIO_MODULE_NAME)) - ffPrepareDiskIO(&options->diskIo); + { + __attribute__((__cleanup__(ffDestroyDiskIOOptions))) FFDiskIOOptions options; + ffInitDiskIOOptions(&options); + ffPrepareDiskIO(&options); + } if(ffStrbufContainIgnCaseS(&data->structure, FF_NETIO_MODULE_NAME)) - ffPrepareNetIO(&options->netIo); + { + __attribute__((__cleanup__(ffDestroyNetIOOptions))) FFNetIOOptions options; + ffInitNetIOOptions(&options); + ffPrepareNetIO(&options); + } if(instance.config.general.multithreading) { if(ffStrbufContainIgnCaseS(&data->structure, FF_PUBLICIP_MODULE_NAME)) - ffPreparePublicIp(&options->publicIP); + { + __attribute__((__cleanup__(ffDestroyPublicIpOptions))) FFPublicIPOptions options; + ffInitPublicIpOptions(&options); + ffPreparePublicIp(&options); + } if(ffStrbufContainIgnCaseS(&data->structure, FF_WEATHER_MODULE_NAME)) - ffPrepareWeather(&options->weather); + { + __attribute__((__cleanup__(ffDestroyWeatherOptions))) FFWeatherOptions options; + ffInitWeatherOptions(&options); + ffPrepareWeather(&options); + } } } -static void genJsonConfig(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc) +static void genJsonConfig(FFModuleBaseInfo* baseInfo, void* options, yyjson_mut_doc* doc) { yyjson_mut_val* modules = yyjson_mut_obj_get(doc->root, "modules"); if (!modules) @@ -48,7 +63,7 @@ static void genJsonConfig(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc) yyjson_mut_obj_add_strbuf(doc, module, "type", &type); if (baseInfo->generateJsonConfig) - baseInfo->generateJsonConfig(baseInfo, doc, module); + baseInfo->generateJsonConfig(options, doc, module); if (yyjson_mut_obj_size(module) > 1) yyjson_mut_arr_add_val(modules, module); @@ -56,19 +71,19 @@ static void genJsonConfig(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc) yyjson_mut_arr_add_strbuf(doc, modules, &type); } -static void genJsonResult(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc) +static void genJsonResult(FFModuleBaseInfo* baseInfo, void* options, yyjson_mut_doc* doc) { yyjson_mut_val* module = yyjson_mut_arr_add_obj(doc, doc->root); yyjson_mut_obj_add_str(doc, module, "type", baseInfo->name); if (baseInfo->generateJsonResult) - baseInfo->generateJsonResult(baseInfo, doc, module); + baseInfo->generateJsonResult(options, doc, module); else yyjson_mut_obj_add_str(doc, module, "error", "Unsupported for JSON format"); } static void parseStructureCommand( const char* line, - void (*fn)(FFModuleBaseInfo *baseInfo, yyjson_mut_doc* jsonDoc), + void (*fn)(FFModuleBaseInfo* baseInfo, void* options, yyjson_mut_doc* jsonDoc), yyjson_mut_doc* jsonDoc ) { @@ -79,10 +94,13 @@ static void parseStructureCommand( FFModuleBaseInfo* baseInfo = *modules; if (ffStrEqualsIgnCase(line, baseInfo->name)) { + uint8_t optionBuf[FF_OPTION_MAX_SIZE]; + baseInfo->initOptions(optionBuf); if (__builtin_expect(jsonDoc != NULL, false)) - fn(baseInfo, jsonDoc); + fn(baseInfo, optionBuf, jsonDoc); else - baseInfo->printModule(baseInfo); + baseInfo->printModule(optionBuf); + baseInfo->destroyOptions(optionBuf); return; } } diff --git a/src/common/init.c b/src/common/init.c index 8b6032c03..078402aac 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -42,14 +42,13 @@ static void defaultConfig(void) { ffOptionsInitLogo(&instance.config.logo); ffOptionsInitGeneral(&instance.config.general); - ffOptionsInitModules(&instance.config.modules); ffOptionsInitDisplay(&instance.config.display); } void ffInitInstance(void) { #ifdef WIN32 - //https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?source=recommendations&view=msvc-170#utf-8-support + // https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?source=recommendat> setlocale(LC_ALL, ".UTF8"); #else // Never use `setlocale(LC_ALL, "")` @@ -96,11 +95,6 @@ static void chldSignalHandler(FF_MAYBE_UNUSED int signal) void ffStart(void) { - #ifdef FF_START_DETECTION_THREADS - if(instance.config.general.multithreading) - startDetectionThreads(); - #endif - ffDisableLinewrap = instance.config.display.disableLinewrap && !instance.config.display.pipe && !instance.state.resultDoc; ffHideCursor = instance.config.display.hideCursor && !instance.config.display.pipe && !instance.state.resultDoc; @@ -150,7 +144,6 @@ static void destroyConfig(void) { ffOptionsDestroyLogo(&instance.config.logo); ffOptionsDestroyGeneral(&instance.config.general); - ffOptionsDestroyModules(&instance.config.modules); ffOptionsDestroyDisplay(&instance.config.display); } diff --git a/src/common/jsonconfig.c b/src/common/jsonconfig.c index 2434ddad0..155f65668 100644 --- a/src/common/jsonconfig.c +++ b/src/common/jsonconfig.c @@ -99,12 +99,12 @@ const char* ffJsonConfigParseEnum(yyjson_val* val, int* result, FFKeyValuePair p return "Invalid enum value type; must be a string or integer"; } -static inline void genJsonResult(FFModuleBaseInfo* baseInfo, yyjson_mut_doc* doc) +static inline void genJsonResult(FFModuleBaseInfo* baseInfo, void* options, yyjson_mut_doc* doc) { yyjson_mut_val* module = yyjson_mut_arr_add_obj(doc, doc->root); yyjson_mut_obj_add_str(doc, module, "type", baseInfo->name); if (baseInfo->generateJsonResult) - baseInfo->generateJsonResult(baseInfo, doc, module); + baseInfo->generateJsonResult(options, doc, module); else yyjson_mut_obj_add_str(doc, module, "error", "Unsupported for JSON format"); } @@ -118,11 +118,14 @@ static bool parseModuleJsonObject(const char* type, yyjson_val* jsonVal, yyjson_ FFModuleBaseInfo* baseInfo = *modules; if (ffStrEqualsIgnCase(type, baseInfo->name)) { - if (jsonVal) baseInfo->parseJsonObject(baseInfo, jsonVal); + uint8_t optionBuf[FF_OPTION_MAX_SIZE]; + baseInfo->initOptions(optionBuf); + if (jsonVal) baseInfo->parseJsonObject(optionBuf, jsonVal); if (__builtin_expect(jsonDoc != NULL, false)) - genJsonResult(baseInfo, jsonDoc); + genJsonResult(baseInfo, optionBuf, jsonDoc); else - baseInfo->printModule(baseInfo); + baseInfo->printModule(optionBuf); + baseInfo->destroyOptions(optionBuf); return true; } } @@ -131,7 +134,6 @@ static bool parseModuleJsonObject(const char* type, yyjson_val* jsonVal, yyjson_ static void prepareModuleJsonObject(const char* type, yyjson_val* module) { - FFconfig* cfg = &instance.config; switch (type[0]) { case 'b': case 'B': { @@ -142,32 +144,40 @@ static void prepareModuleJsonObject(const char* type, yyjson_val* module) case 'd': case 'D': { if (ffStrEqualsIgnCase(type, FF_DISKIO_MODULE_NAME)) { - if (module) cfg->modules.diskIo.moduleInfo.parseJsonObject(&cfg->modules.diskIo, module); - ffPrepareDiskIO(&cfg->modules.diskIo); + __attribute__((__cleanup__(ffDestroyDiskIOOptions))) FFDiskIOOptions options; + ffInitDiskIOOptions(&options); + if (module) ffDiskIOModuleInfo.parseJsonObject(&options, module); + ffPrepareDiskIO(&options); } break; } case 'n': case 'N': { if (ffStrEqualsIgnCase(type, FF_NETIO_MODULE_NAME)) { - if (module) cfg->modules.netIo.moduleInfo.parseJsonObject(&cfg->modules.netIo, module); - ffPrepareNetIO(&cfg->modules.netIo); + __attribute__((__cleanup__(ffDestroyNetIOOptions))) FFNetIOOptions options; + ffInitNetIOOptions(&options); + if (module) ffNetIOModuleInfo.parseJsonObject(&options, module); + ffPrepareNetIO(&options); } break; } case 'p': case 'P': { if (ffStrEqualsIgnCase(type, FF_PUBLICIP_MODULE_NAME)) { - if (module) cfg->modules.publicIP.moduleInfo.parseJsonObject(&cfg->modules.publicIP, module); - ffPreparePublicIp(&cfg->modules.publicIP); + __attribute__((__cleanup__(ffDestroyPublicIpOptions))) FFPublicIPOptions options; + ffInitPublicIpOptions(&options); + if (module) ffPublicIPModuleInfo.parseJsonObject(&options, module); + ffPreparePublicIp(&options); } break; } case 'w': case 'W': { if (ffStrEqualsIgnCase(type, FF_WEATHER_MODULE_NAME)) { - if (module) cfg->modules.weather.moduleInfo.parseJsonObject(&cfg->modules.weather, module); - ffPrepareWeather(&cfg->modules.weather); + __attribute__((__cleanup__(ffDestroyWeatherOptions))) FFWeatherOptions options; + ffInitWeatherOptions(&options); + if (module) ffWeatherModuleInfo.parseJsonObject(&options, module); + ffPrepareWeather(&options); } break; } diff --git a/src/common/modules.c b/src/common/modules.c index 724c1aa49..7ad221005 100644 --- a/src/common/modules.c +++ b/src/common/modules.c @@ -1,69 +1,69 @@ -#include "fastfetch.h" +#include "modules/modules.h" static FFModuleBaseInfo* A[] = { NULL, }; static FFModuleBaseInfo* B[] = { - (FFModuleBaseInfo*) &instance.config.modules.battery, - (FFModuleBaseInfo*) &instance.config.modules.bios, - (FFModuleBaseInfo*) &instance.config.modules.bluetooth, - (FFModuleBaseInfo*) &instance.config.modules.bluetoothRadio, - (FFModuleBaseInfo*) &instance.config.modules.board, - (FFModuleBaseInfo*) &instance.config.modules.bootmgr, - (FFModuleBaseInfo*) &instance.config.modules.break_, - (FFModuleBaseInfo*) &instance.config.modules.brightness, - (FFModuleBaseInfo*) &instance.config.modules.btrfs, + &ffBatteryModuleInfo, + &ffBiosModuleInfo, + &ffBluetoothModuleInfo, + &ffBluetoothRadioModuleInfo, + &ffBoardModuleInfo, + &ffBootmgrModuleInfo, + &ffBreakModuleInfo, + &ffBrightnessModuleInfo, + &ffBtrfsModuleInfo, NULL, }; static FFModuleBaseInfo* C[] = { - (FFModuleBaseInfo*) &instance.config.modules.camera, - (FFModuleBaseInfo*) &instance.config.modules.chassis, - (FFModuleBaseInfo*) &instance.config.modules.command, - (FFModuleBaseInfo*) &instance.config.modules.colors, - (FFModuleBaseInfo*) &instance.config.modules.cpu, - (FFModuleBaseInfo*) &instance.config.modules.cpuCache, - (FFModuleBaseInfo*) &instance.config.modules.cpuUsage, - (FFModuleBaseInfo*) &instance.config.modules.cursor, - (FFModuleBaseInfo*) &instance.config.modules.custom, + &ffCameraModuleInfo, + &ffChassisModuleInfo, + &ffCommandModuleInfo, + &ffColorsModuleInfo, + &ffCPUModuleInfo, + &ffCPUCacheModuleInfo, + &ffCPUUsageModuleInfo, + &ffCursorModuleInfo, + &ffCustomModuleInfo, NULL, }; static FFModuleBaseInfo* D[] = { - (FFModuleBaseInfo*) &instance.config.modules.dateTime, - (FFModuleBaseInfo*) &instance.config.modules.de, - (FFModuleBaseInfo*) &instance.config.modules.display, - (FFModuleBaseInfo*) &instance.config.modules.disk, - (FFModuleBaseInfo*) &instance.config.modules.diskIo, - (FFModuleBaseInfo*) &instance.config.modules.dns, + &ffDateTimeModuleInfo, + &ffDEModuleInfo, + &ffDisplayModuleInfo, + &ffDiskModuleInfo, + &ffDiskIOModuleInfo, + &ffDNSModuleInfo, NULL, }; static FFModuleBaseInfo* E[] = { - (FFModuleBaseInfo*) &instance.config.modules.editor, + &ffEditorModuleInfo, NULL, }; static FFModuleBaseInfo* F[] = { - (FFModuleBaseInfo*) &instance.config.modules.font, + &ffFontModuleInfo, NULL, }; static FFModuleBaseInfo* G[] = { - (FFModuleBaseInfo*) &instance.config.modules.gamepad, - (FFModuleBaseInfo*) &instance.config.modules.gpu, + &ffGamepadModuleInfo, + &ffGPUModuleInfo, NULL, }; static FFModuleBaseInfo* H[] = { - (FFModuleBaseInfo*) &instance.config.modules.host, + &ffHostModuleInfo, NULL, }; static FFModuleBaseInfo* I[] = { - (FFModuleBaseInfo*) &instance.config.modules.icons, - (FFModuleBaseInfo*) &instance.config.modules.initSystem, + &ffIconsModuleInfo, + &ffInitSystemModuleInfo, NULL, }; @@ -72,47 +72,47 @@ static FFModuleBaseInfo* J[] = { }; static FFModuleBaseInfo* K[] = { - (FFModuleBaseInfo*) &instance.config.modules.kernel, - (FFModuleBaseInfo*) &instance.config.modules.keyboard, + &ffKernelModuleInfo, + &ffKeyboardModuleInfo, NULL, }; static FFModuleBaseInfo* L[] = { - (FFModuleBaseInfo*) &instance.config.modules.lm, - (FFModuleBaseInfo*) &instance.config.modules.loadavg, - (FFModuleBaseInfo*) &instance.config.modules.locale, - (FFModuleBaseInfo*) &instance.config.modules.localIP, + &ffLMModuleInfo, + &ffLoadavgModuleInfo, + &ffLocaleModuleInfo, + &ffLocalIPModuleInfo, NULL, }; static FFModuleBaseInfo* M[] = { - (FFModuleBaseInfo*) &instance.config.modules.media, - (FFModuleBaseInfo*) &instance.config.modules.memory, - (FFModuleBaseInfo*) &instance.config.modules.monitor, - (FFModuleBaseInfo*) &instance.config.modules.mouse, + &ffMediaModuleInfo, + &ffMemoryModuleInfo, + &ffMonitorModuleInfo, + &ffMouseModuleInfo, NULL, }; static FFModuleBaseInfo* N[] = { - (FFModuleBaseInfo*) &instance.config.modules.netIo, + &ffNetIOModuleInfo, NULL, }; static FFModuleBaseInfo* O[] = { - (FFModuleBaseInfo*) &instance.config.modules.openCL, - (FFModuleBaseInfo*) &instance.config.modules.openGL, - (FFModuleBaseInfo*) &instance.config.modules.os, + &ffOpenCLModuleInfo, + &ffOpenGLModuleInfo, + &ffOSModuleInfo, NULL, }; static FFModuleBaseInfo* P[] = { - (FFModuleBaseInfo*) &instance.config.modules.packages, - (FFModuleBaseInfo*) &instance.config.modules.physicalDisk, - (FFModuleBaseInfo*) &instance.config.modules.physicalMemory, - (FFModuleBaseInfo*) &instance.config.modules.player, - (FFModuleBaseInfo*) &instance.config.modules.powerAdapter, - (FFModuleBaseInfo*) &instance.config.modules.processes, - (FFModuleBaseInfo*) &instance.config.modules.publicIP, + &ffPackagesModuleInfo, + &ffPhysicalDiskModuleInfo, + &ffPhysicalMemoryModuleInfo, + &ffPlayerModuleInfo, + &ffPowerAdapterModuleInfo, + &ffProcessesModuleInfo, + &ffPublicIPModuleInfo, NULL, }; @@ -125,42 +125,42 @@ static FFModuleBaseInfo* R[] = { }; static FFModuleBaseInfo* S[] = { - (FFModuleBaseInfo*) &instance.config.modules.separator, - (FFModuleBaseInfo*) &instance.config.modules.shell, - (FFModuleBaseInfo*) &instance.config.modules.sound, - (FFModuleBaseInfo*) &instance.config.modules.swap, + &ffSeparatorModuleInfo, + &ffShellModuleInfo, + &ffSoundModuleInfo, + &ffSwapModuleInfo, NULL, }; static FFModuleBaseInfo* T[] = { - (FFModuleBaseInfo*) &instance.config.modules.terminal, - (FFModuleBaseInfo*) &instance.config.modules.terminalFont, - (FFModuleBaseInfo*) &instance.config.modules.terminalSize, - (FFModuleBaseInfo*) &instance.config.modules.terminalTheme, - (FFModuleBaseInfo*) &instance.config.modules.title, - (FFModuleBaseInfo*) &instance.config.modules.theme, - (FFModuleBaseInfo*) &instance.config.modules.tpm, + &ffTerminalModuleInfo, + &ffTerminalFontModuleInfo, + &ffTerminalSizeModuleInfo, + &ffTerminalThemeModuleInfo, + &ffTitleModuleInfo, + &ffThemeModuleInfo, + &ffTPMModuleInfo, NULL, }; static FFModuleBaseInfo* U[] = { - (FFModuleBaseInfo*) &instance.config.modules.uptime, - (FFModuleBaseInfo*) &instance.config.modules.users, + &ffUptimeModuleInfo, + &ffUsersModuleInfo, NULL, }; static FFModuleBaseInfo* V[] = { - (FFModuleBaseInfo*) &instance.config.modules.version, - (FFModuleBaseInfo*) &instance.config.modules.vulkan, + &ffVersionModuleInfo, + &ffVulkanModuleInfo, NULL, }; static FFModuleBaseInfo* W[] = { - (FFModuleBaseInfo*) &instance.config.modules.wallpaper, - (FFModuleBaseInfo*) &instance.config.modules.weather, - (FFModuleBaseInfo*) &instance.config.modules.wm, - (FFModuleBaseInfo*) &instance.config.modules.wifi, - (FFModuleBaseInfo*) &instance.config.modules.wmTheme, + &ffWallpaperModuleInfo, + &ffWeatherModuleInfo, + &ffWMModuleInfo, + &ffWifiModuleInfo, + &ffWMThemeModuleInfo, NULL, }; @@ -173,7 +173,7 @@ static FFModuleBaseInfo* Y[] = { }; static FFModuleBaseInfo* Z[] = { - (FFModuleBaseInfo*) &instance.config.modules.zpool, + &ffZpoolModuleInfo, NULL, }; diff --git a/src/common/option.h b/src/common/option.h index 618739a5d..e9c8cd81b 100644 --- a/src/common/option.h +++ b/src/common/option.h @@ -95,3 +95,5 @@ static inline void ffOptionDestroyModuleArg(FFModuleArgs* args) ffStrbufDestroy(&args->outputFormat); ffStrbufDestroy(&args->outputColor); } + +enum { FF_OPTION_MAX_SIZE = 1 << 8 }; // Maximum size of a single option value, used for static allocation diff --git a/src/detection/battery/battery.h b/src/detection/battery/battery.h index 94aa65e32..807ccdf0d 100644 --- a/src/detection/battery/battery.h +++ b/src/detection/battery/battery.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/battery/option.h" #define FF_BATTERY_TEMP_UNSET (0/0.0) diff --git a/src/detection/bios/bios.h b/src/detection/bios/bios.h index 5272c5ca1..4a0969d26 100644 --- a/src/detection/bios/bios.h +++ b/src/detection/bios/bios.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/bios/option.h" typedef struct FFBiosResult { diff --git a/src/detection/bluetooth/bluetooth.h b/src/detection/bluetooth/bluetooth.h index 57bf9ef3a..0a4153ce5 100644 --- a/src/detection/bluetooth/bluetooth.h +++ b/src/detection/bluetooth/bluetooth.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/bluetooth/option.h" typedef struct FFBluetoothResult { diff --git a/src/detection/bluetoothradio/bluetoothradio.h b/src/detection/bluetoothradio/bluetoothradio.h index 46ea60f58..8999b84a4 100644 --- a/src/detection/bluetoothradio/bluetoothradio.h +++ b/src/detection/bluetoothradio/bluetoothradio.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/bluetoothradio/option.h" typedef struct FFBluetoothRadioResult { diff --git a/src/detection/board/board.h b/src/detection/board/board.h index 64a8dd3a7..f41e60e13 100644 --- a/src/detection/board/board.h +++ b/src/detection/board/board.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/board/option.h" typedef struct FFBoardResult { diff --git a/src/detection/bootmgr/bootmgr.h b/src/detection/bootmgr/bootmgr.h index c2d1ac2a3..e0fbcddcc 100644 --- a/src/detection/bootmgr/bootmgr.h +++ b/src/detection/bootmgr/bootmgr.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/bootmgr/option.h" typedef struct FFBootmgrResult { diff --git a/src/detection/brightness/brightness.h b/src/detection/brightness/brightness.h index 3db260a66..5f2f1405a 100644 --- a/src/detection/brightness/brightness.h +++ b/src/detection/brightness/brightness.h @@ -1,7 +1,7 @@ #pragma once #include "fastfetch.h" -#include "util/FFlist.h" +#include "modules/brightness/option.h" typedef struct FFBrightnessResult { diff --git a/src/detection/btrfs/btrfs.h b/src/detection/btrfs/btrfs.h index a82157d09..8940ebc8a 100644 --- a/src/detection/btrfs/btrfs.h +++ b/src/detection/btrfs/btrfs.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/btrfs/option.h" typedef struct FFBtrfsDiskUsage { diff --git a/src/detection/camera/camera.h b/src/detection/camera/camera.h index 83d07f312..ee0c32d0c 100644 --- a/src/detection/camera/camera.h +++ b/src/detection/camera/camera.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/camera/option.h" typedef struct FFCameraResult { diff --git a/src/detection/chassis/chassis.h b/src/detection/chassis/chassis.h index 0c9c0380d..8f57232ec 100644 --- a/src/detection/chassis/chassis.h +++ b/src/detection/chassis/chassis.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/chassis/option.h" typedef struct FFChassisResult { diff --git a/src/detection/cpu/cpu.h b/src/detection/cpu/cpu.h index 5af7a8275..06ce87f9f 100644 --- a/src/detection/cpu/cpu.h +++ b/src/detection/cpu/cpu.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/cpu/option.h" #define FF_CPU_TEMP_UNSET (0/0.0) diff --git a/src/detection/cpucache/cpucache.h b/src/detection/cpucache/cpucache.h index f63964240..2e6e060e4 100644 --- a/src/detection/cpucache/cpucache.h +++ b/src/detection/cpucache/cpucache.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/cpucache/option.h" typedef enum __attribute__((__packed__)) FFCPUCacheType { diff --git a/src/detection/cpuusage/cpuusage.h b/src/detection/cpuusage/cpuusage.h index 7950d452b..353b7297c 100644 --- a/src/detection/cpuusage/cpuusage.h +++ b/src/detection/cpuusage/cpuusage.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/cpuusage/option.h" typedef struct FFCpuUsageInfo { uint64_t inUseAll; diff --git a/src/detection/cursor/cursor.h b/src/detection/cursor/cursor.h index 3e3ff6d40..6a6f68b27 100644 --- a/src/detection/cursor/cursor.h +++ b/src/detection/cursor/cursor.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/cursor/option.h" typedef struct FFCursorResult { diff --git a/src/detection/de/de.h b/src/detection/de/de.h index 9d8b2201f..67e8c1c41 100644 --- a/src/detection/de/de.h +++ b/src/detection/de/de.h @@ -1,5 +1,6 @@ #pragma once #include "fastfetch.h" +#include "modules/de/option.h" const char* ffDetectDEVersion(const FFstrbuf* deName, FFstrbuf* result, FFDEOptions* options); diff --git a/src/detection/disk/disk.h b/src/detection/disk/disk.h index 4a24f9de0..526de8128 100644 --- a/src/detection/disk/disk.h +++ b/src/detection/disk/disk.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/disk/option.h" typedef struct FFDisk { diff --git a/src/detection/diskio/diskio.h b/src/detection/diskio/diskio.h index 0082b18b7..fdaae3b18 100644 --- a/src/detection/diskio/diskio.h +++ b/src/detection/diskio/diskio.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/diskio/option.h" typedef struct FFDiskIOResult { diff --git a/src/detection/displayserver/displayserver.h b/src/detection/displayserver/displayserver.h index 7949f61ec..f502f175a 100644 --- a/src/detection/displayserver/displayserver.h +++ b/src/detection/displayserver/displayserver.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/display/option.h" #define FF_DE_PRETTY_PLASMA "KDE Plasma" #define FF_DE_PRETTY_GNOME "GNOME" diff --git a/src/detection/dns/dns.h b/src/detection/dns/dns.h index ec25005c3..3653f62d3 100644 --- a/src/detection/dns/dns.h +++ b/src/detection/dns/dns.h @@ -1,5 +1,6 @@ #pragma once #include "fastfetch.h" +#include "modules/dns/option.h" const char* ffDetectDNS(FFDNSOptions* options, FFlist* results /* list of FFstrbuf */); diff --git a/src/detection/editor/editor.h b/src/detection/editor/editor.h index 38d63aebe..d130c43bd 100644 --- a/src/detection/editor/editor.h +++ b/src/detection/editor/editor.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/editor/option.h" typedef struct FFEditorResult { diff --git a/src/detection/font/font.h b/src/detection/font/font.h index 0f0e28d1f..ed05d1d8c 100644 --- a/src/detection/font/font.h +++ b/src/detection/font/font.h @@ -1,8 +1,9 @@ #pragma once #include "fastfetch.h" +#include "modules/font/option.h" -#define FF_DETECT_FONT_NUM_FONTS 4 +enum { FF_DETECT_FONT_NUM_FONTS = 4 }; typedef struct FFFontResult { diff --git a/src/detection/gpu/gpu.c b/src/detection/gpu/gpu.c index a27ab01c7..5bd667ff2 100644 --- a/src/detection/gpu/gpu.c +++ b/src/detection/gpu/gpu.c @@ -2,6 +2,7 @@ #include "detection/vulkan/vulkan.h" #include "detection/opencl/opencl.h" #include "detection/opengl/opengl.h" +#include "modules/opengl/opengl.h" const char* FF_GPU_VENDOR_NAME_APPLE = "Apple"; const char* FF_GPU_VENDOR_NAME_AMD = "AMD"; @@ -56,7 +57,10 @@ const char* detectByOpenGL(FFlist* gpus) ffStrbufInit(&result.slv); ffStrbufInit(&result.library); - const char* error = ffDetectOpenGL(&instance.config.modules.openGL, &result); + __attribute__((__cleanup__(ffDestroyOpenGLOptions))) FFOpenGLOptions options; + ffInitOpenGLOptions(&options); + const char* error = ffDetectOpenGL(&options, &result); + if (!error) { FFGPUResult* gpu = (FFGPUResult*) ffListAdd(gpus); diff --git a/src/detection/gpu/gpu.h b/src/detection/gpu/gpu.h index e4db0f858..7d641a0a0 100644 --- a/src/detection/gpu/gpu.h +++ b/src/detection/gpu/gpu.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/gpu/option.h" #define FF_GPU_TEMP_UNSET (0/0.0) #define FF_GPU_CORE_COUNT_UNSET -1 diff --git a/src/detection/host/host.h b/src/detection/host/host.h index a8aa16b74..bd76e434e 100644 --- a/src/detection/host/host.h +++ b/src/detection/host/host.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/host/option.h" typedef struct FFHostResult { diff --git a/src/detection/icons/icons.h b/src/detection/icons/icons.h index f921270c6..4c96304aa 100644 --- a/src/detection/icons/icons.h +++ b/src/detection/icons/icons.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/icons/option.h" typedef struct FFIconsResult { diff --git a/src/detection/initsystem/initsystem.h b/src/detection/initsystem/initsystem.h index 07f79ff74..7103616bf 100644 --- a/src/detection/initsystem/initsystem.h +++ b/src/detection/initsystem/initsystem.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/initsystem/option.h" typedef struct FFInitSystemResult { diff --git a/src/detection/lm/lm.h b/src/detection/lm/lm.h index 4cbaf7c13..1cd8bb3ba 100644 --- a/src/detection/lm/lm.h +++ b/src/detection/lm/lm.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/lm/option.h" typedef struct FFLMResult { diff --git a/src/detection/localip/localip.h b/src/detection/localip/localip.h index a3fde0f1c..ddcb5e503 100644 --- a/src/detection/localip/localip.h +++ b/src/detection/localip/localip.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/localip/option.h" typedef struct FFLocalIpResult { diff --git a/src/detection/media/media.h b/src/detection/media/media.h index 5c97da471..598bbf55a 100644 --- a/src/detection/media/media.h +++ b/src/detection/media/media.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/media/option.h" typedef struct FFMediaResult { diff --git a/src/detection/memory/memory.h b/src/detection/memory/memory.h index 8929883e8..71a9ea9a4 100644 --- a/src/detection/memory/memory.h +++ b/src/detection/memory/memory.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/memory/option.h" typedef struct FFMemoryResult { diff --git a/src/detection/netio/netio.h b/src/detection/netio/netio.h index de633a107..47328b432 100644 --- a/src/detection/netio/netio.h +++ b/src/detection/netio/netio.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/netio/option.h" typedef struct FFNetIOResult { diff --git a/src/detection/opencl/opencl.h b/src/detection/opencl/opencl.h index a8b0063e4..c7d6ddb96 100644 --- a/src/detection/opencl/opencl.h +++ b/src/detection/opencl/opencl.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/opencl/option.h" typedef struct FFOpenCLResult { diff --git a/src/detection/opengl/opengl.h b/src/detection/opengl/opengl.h index 466dcf256..5dbf2e392 100644 --- a/src/detection/opengl/opengl.h +++ b/src/detection/opengl/opengl.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/opengl/option.h" typedef struct FFOpenGLResult { diff --git a/src/detection/os/os.h b/src/detection/os/os.h index e1b7828fe..09226b9c2 100644 --- a/src/detection/os/os.h +++ b/src/detection/os/os.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/os/option.h" typedef struct FFOSResult { diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index e96b0762c..c824b448a 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/packages/option.h" typedef struct FFPackagesResult { diff --git a/src/detection/physicaldisk/physicaldisk.h b/src/detection/physicaldisk/physicaldisk.h index fbed2f52c..793d19975 100644 --- a/src/detection/physicaldisk/physicaldisk.h +++ b/src/detection/physicaldisk/physicaldisk.h @@ -1,4 +1,5 @@ #include "fastfetch.h" +#include "modules/physicaldisk/option.h" #define FF_PHYSICALDISK_TEMP_UNSET (0/0.0) diff --git a/src/detection/physicalmemory/physicalmemory.h b/src/detection/physicalmemory/physicalmemory.h index 2580295ca..74ca37767 100644 --- a/src/detection/physicalmemory/physicalmemory.h +++ b/src/detection/physicalmemory/physicalmemory.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/physicalmemory/option.h" typedef struct FFPhysicalMemoryResult { diff --git a/src/detection/poweradapter/poweradapter.h b/src/detection/poweradapter/poweradapter.h index 43c3a48e9..64c0eb5ec 100644 --- a/src/detection/poweradapter/poweradapter.h +++ b/src/detection/poweradapter/poweradapter.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/poweradapter/option.h" typedef struct FFPowerAdapterResult { diff --git a/src/detection/publicip/publicip.c b/src/detection/publicip/publicip.c index a76a550ae..7fed00cc2 100644 --- a/src/detection/publicip/publicip.c +++ b/src/detection/publicip/publicip.c @@ -5,7 +5,7 @@ static FFNetworkingState states[2]; static const char* statuses[2] = { FF_UNITIALIZED, FF_UNITIALIZED }; -void ffPreparePublicIp(FFPublicIpOptions* options) +void ffPreparePublicIp(FFPublicIPOptions* options) { FFNetworkingState* state = &states[options->ipv6]; const char** status = &statuses[options->ipv6]; @@ -58,7 +58,7 @@ static inline void wrapYyjsonFree(yyjson_doc** doc) yyjson_doc_free(*doc); } -const char* ffDetectPublicIp(FFPublicIpOptions* options, FFPublicIpResult* result) +const char* ffDetectPublicIp(FFPublicIPOptions* options, FFPublicIpResult* result) { FFNetworkingState* state = &states[options->ipv6]; const char** status = &statuses[options->ipv6]; diff --git a/src/detection/publicip/publicip.h b/src/detection/publicip/publicip.h index 463514762..917e787ab 100644 --- a/src/detection/publicip/publicip.h +++ b/src/detection/publicip/publicip.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/publicip/option.h" typedef struct FFPublicIpResult { @@ -8,5 +9,5 @@ typedef struct FFPublicIpResult FFstrbuf location; } FFPublicIpResult; -void ffPreparePublicIp(FFPublicIpOptions* options); -const char* ffDetectPublicIp(FFPublicIpOptions* options, FFPublicIpResult* result); +void ffPreparePublicIp(FFPublicIPOptions* options); +const char* ffDetectPublicIp(FFPublicIPOptions* options, FFPublicIpResult* result); diff --git a/src/detection/swap/swap.h b/src/detection/swap/swap.h index 227b4968e..c89940c12 100644 --- a/src/detection/swap/swap.h +++ b/src/detection/swap/swap.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/swap/option.h" typedef struct FFSwapResult { diff --git a/src/detection/terminalfont/terminalfont.h b/src/detection/terminalfont/terminalfont.h index 0cb33b71d..03ddad99e 100644 --- a/src/detection/terminalfont/terminalfont.h +++ b/src/detection/terminalfont/terminalfont.h @@ -2,6 +2,7 @@ #include "fastfetch.h" #include "common/font.h" +#include "modules/font/option.h" typedef struct FFTerminalFontResult { diff --git a/src/detection/terminalshell/terminalshell.h b/src/detection/terminalshell/terminalshell.h index cebc4647d..a2a6f23f8 100644 --- a/src/detection/terminalshell/terminalshell.h +++ b/src/detection/terminalshell/terminalshell.h @@ -1,6 +1,8 @@ #pragma once #include "fastfetch.h" +#include "modules/terminal/option.h" +#include "modules/shell/option.h" typedef struct FFShellResult { diff --git a/src/detection/terminalshell/terminalshell_linux.c b/src/detection/terminalshell/terminalshell_linux.c index 3414d148f..adda26c03 100644 --- a/src/detection/terminalshell/terminalshell_linux.c +++ b/src/detection/terminalshell/terminalshell_linux.c @@ -53,7 +53,7 @@ static pid_t getShellInfo(FFShellResult* result, pid_t pid) ffStrbufContainS(&result->processName, "hyfetch") || //when hyfetch uses fastfetch as backend ffStrbufEqualS(&result->processName, "clifm") || //https://github.com/leo-arch/clifm/issues/289 ffStrbufEqualS(&result->processName, "valgrind") || - ffStrbufEqualS(&result->processName, "fastfetch") || //994 + ffStrbufEqualS(&result->processName, "fastfetch") || //#994 ffStrbufEqualS(&result->processName, "flashfetch") || ffStrbufEqualS(&result->processName, "proot") || ffStrbufEqualS(&result->processName, "script") || diff --git a/src/detection/terminalsize/terminalsize.h b/src/detection/terminalsize/terminalsize.h index f8b116d73..e178f34b9 100644 --- a/src/detection/terminalsize/terminalsize.h +++ b/src/detection/terminalsize/terminalsize.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/terminalsize/option.h" typedef struct FFTerminalSizeResult { diff --git a/src/detection/terminaltheme/terminaltheme.h b/src/detection/terminaltheme/terminaltheme.h index 9f54c7f22..a3077823b 100644 --- a/src/detection/terminaltheme/terminaltheme.h +++ b/src/detection/terminaltheme/terminaltheme.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/terminaltheme/option.h" typedef struct FFTerminalThemeColor { diff --git a/src/detection/theme/theme.h b/src/detection/theme/theme.h index aa70f05ba..afd3400c6 100644 --- a/src/detection/theme/theme.h +++ b/src/detection/theme/theme.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/theme/option.h" typedef struct FFThemeResult { diff --git a/src/detection/tpm/tpm.h b/src/detection/tpm/tpm.h index 2310a23bf..5b5aa4e43 100644 --- a/src/detection/tpm/tpm.h +++ b/src/detection/tpm/tpm.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/tpm/option.h" typedef struct FFTPMResult { diff --git a/src/detection/uptime/uptime.h b/src/detection/uptime/uptime.h index 6f0696d39..f6426bc59 100644 --- a/src/detection/uptime/uptime.h +++ b/src/detection/uptime/uptime.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/uptime/option.h" typedef struct FFUptimeResult { diff --git a/src/detection/users/users.h b/src/detection/users/users.h index e29a1858d..baa3775c6 100644 --- a/src/detection/users/users.h +++ b/src/detection/users/users.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/users/option.h" typedef struct FFUserResult { diff --git a/src/detection/version/version.h b/src/detection/version/version.h index 272e87bc3..e97099aac 100644 --- a/src/detection/version/version.h +++ b/src/detection/version/version.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/version/option.h" typedef struct FFVersionResult { diff --git a/src/detection/vulkan/vulkan.h b/src/detection/vulkan/vulkan.h index 5b6d7832e..75a5b8de7 100644 --- a/src/detection/vulkan/vulkan.h +++ b/src/detection/vulkan/vulkan.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/vulkan/option.h" typedef struct FFVulkanResult { diff --git a/src/detection/weather/weather.h b/src/detection/weather/weather.h index 24dde33bb..bd3d1bc08 100644 --- a/src/detection/weather/weather.h +++ b/src/detection/weather/weather.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/weather/option.h" void ffPrepareWeather(FFWeatherOptions* options); const char* ffDetectWeather(FFWeatherOptions* options, FFstrbuf* result); diff --git a/src/detection/wifi/wifi.h b/src/detection/wifi/wifi.h index f941869a0..a7a99f4e4 100644 --- a/src/detection/wifi/wifi.h +++ b/src/detection/wifi/wifi.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/wifi/option.h" struct FFWifiInterface { diff --git a/src/detection/wm/wm.h b/src/detection/wm/wm.h index 5f5fa4adf..115a8cdd8 100644 --- a/src/detection/wm/wm.h +++ b/src/detection/wm/wm.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/wm/wm.h" const char* ffDetectWMPlugin(FFstrbuf* pluginName); const char* ffDetectWMVersion(const FFstrbuf* wmName, FFstrbuf* result, FFWMOptions* options); diff --git a/src/detection/zpool/zpool.h b/src/detection/zpool/zpool.h index aa8bee03e..e8a5191ae 100644 --- a/src/detection/zpool/zpool.h +++ b/src/detection/zpool/zpool.h @@ -1,6 +1,7 @@ #pragma once #include "fastfetch.h" +#include "modules/zpool/option.h" typedef struct FFZpoolResult { diff --git a/src/fastfetch.h b/src/fastfetch.h index d20248e93..9b031b87a 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -20,7 +20,6 @@ #include "util/platform/FFPlatform.h" #include "util/unused.h" -#include "options/modules.h" #include "options/logo.h" #include "options/display.h" #include "options/general.h" @@ -42,7 +41,6 @@ typedef struct FFconfig FFOptionsLogo logo; FFOptionsDisplay display; FFOptionsGeneral general; - FFOptionsModules modules; } FFconfig; typedef struct FFstate diff --git a/src/flashfetch.c b/src/flashfetch.c index 371a0ca98..aef4bc510 100644 --- a/src/flashfetch.c +++ b/src/flashfetch.c @@ -3,55 +3,138 @@ #include "common/init.h" #include "modules/modules.h" +// A dirty replicate of neofetch int main(void) { - ffInitInstance(); //This also applies default configuration to instance.config + ffInitInstance(); // Init everything - //Modify instance.config here - FFOptionsModules* const options = &instance.config.modules; + // Modify global config here if needed + instance.config.display.sizeMaxPrefix = 2; // MB + instance.config.display.sizeNdigits = 2; + instance.config.display.freqNdigits = 3; + instance.config.display.freqSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER; + instance.config.display.sizeSpaceBeforeUnit = FF_SPACE_BEFORE_UNIT_NEVER; - // ffPrepareCPUUsage(); - // ffPreparePublicIp(&options->publicIP); - // ffPrepareWeather(&options->weather); - - //Does things like starting detection threads, disabling line wrap, etc + // Logo printing and other preparation stuff ffStart(); - //Printing - void* const modules[] = { - &options->title, - &options->separator, - &options->os, - &options->host, - &options->kernel, - &options->uptime, - &options->packages, - &options->shell, - &options->display, - &options->de, - &options->wm, - &options->wmTheme, - &options->theme, - &options->icons, - &options->font, - &options->cursor, - &options->terminal, - &options->terminalFont, - &options->cpu, - &options->gpu, - &options->memory, - &options->swap, - &options->disk, - &options->localIP, - &options->battery, - &options->powerAdapter, - &options->locale, - &options->break_, - &options->colors, - }; - - for (size_t i = 0; i < ARRAY_SIZE(modules); i++) - ((const FFModuleBaseInfo*) modules[i])->printModule(modules[i]); + // Print all modules + { + __attribute__((cleanup(ffDestroyTitleOptions))) FFTitleOptions options; + ffInitTitleOptions(&options); + ffPrintTitle(&options); + } + { + __attribute__((cleanup(ffDestroySeparatorOptions))) FFSeparatorOptions options; + ffInitSeparatorOptions(&options); + ffPrintSeparator(&options); + } + { + __attribute__((cleanup(ffDestroyOSOptions))) FFOSOptions options; + ffInitOSOptions(&options); + ffPrintOS(&options); + } + { + __attribute__((cleanup(ffDestroyHostOptions))) FFHostOptions options; + ffInitHostOptions(&options); + ffPrintHost(&options); + } + { + __attribute__((cleanup(ffDestroyKernelOptions))) FFKernelOptions options; + ffInitKernelOptions(&options); + ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{release}"); + ffPrintKernel(&options); + } + { + __attribute__((cleanup(ffDestroyUptimeOptions))) FFUptimeOptions options; + ffInitUptimeOptions(&options); + ffPrintUptime(&options); + } + { + __attribute__((cleanup(ffDestroyPackagesOptions))) FFPackagesOptions options; + ffInitPackagesOptions(&options); + options.combined = true; + ffPrintPackages(&options); + } + { + __attribute__((cleanup(ffDestroyShellOptions))) FFShellOptions options; + ffInitShellOptions(&options); + ffPrintShell(&options); + } + { + __attribute__((cleanup(ffDestroyDisplayOptions))) FFDisplayOptions options; + ffInitDisplayOptions(&options); + options.compactType = FF_DISPLAY_COMPACT_TYPE_ORIGINAL_BIT; + ffStrbufSetStatic(&options.moduleArgs.key, "Resolution"); + ffPrintDisplay(&options); + } + { + __attribute__((cleanup(ffDestroyDEOptions))) FFDEOptions options; + ffInitDEOptions(&options); + ffPrintDE(&options); + } + { + instance.config.general.detectVersion = false; + __attribute__((cleanup(ffDestroyWMOptions))) FFWMOptions options; + ffInitWMOptions(&options); + options.detectPlugin = true; + ffPrintWM(&options); + instance.config.general.detectVersion = true; + } + { + __attribute__((cleanup(ffDestroyWMThemeOptions))) FFWMThemeOptions options; + ffInitWMThemeOptions(&options); + ffPrintWMTheme(&options); + } + { + __attribute__((cleanup(ffDestroyThemeOptions))) FFThemeOptions options; + ffInitThemeOptions(&options); + ffPrintTheme(&options); + } + { + __attribute__((cleanup(ffDestroyIconsOptions))) FFIconsOptions options; + ffInitIconsOptions(&options); + ffPrintIcons(&options); + } + { + __attribute__((cleanup(ffDestroyTerminalOptions))) FFTerminalOptions options; + ffInitTerminalOptions(&options); + ffPrintTerminal(&options); + } + { + __attribute__((cleanup(ffDestroyTerminalFontOptions))) FFTerminalFontOptions options; + ffInitTerminalFontOptions(&options); + ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{/name}{-}{/}{name}{?size} {size}{?}"); + ffPrintTerminalFont(&options); + } + { + __attribute__((cleanup(ffDestroyCPUOptions))) FFCPUOptions options; + ffInitCPUOptions(&options); + ffPrintCPU(&options); + } + { + __attribute__((cleanup(ffDestroyGPUOptions))) FFGPUOptions options; + ffInitGPUOptions(&options); + ffStrbufSetStatic(&options.moduleArgs.key, "GPU"); + ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{name}"); + ffPrintGPU(&options); + } + { + __attribute__((cleanup(ffDestroyMemoryOptions))) FFMemoryOptions options; + ffInitMemoryOptions(&options); + ffStrbufSetStatic(&options.moduleArgs.outputFormat, "{} / {}"); + ffPrintMemory(&options); + } + { + __attribute__((cleanup(ffDestroyBreakOptions))) FFBreakOptions options; + ffInitBreakOptions(&options); + ffPrintBreak(&options); + } + { + __attribute__((cleanup(ffDestroyColorsOptions))) FFColorsOptions options; + ffInitColorsOptions(&options); + ffPrintColors(&options); + } ffFinish(); ffDestroyInstance(); diff --git a/src/logo/logo.c b/src/logo/logo.c index 0052ac7f8..c2c4acbbf 100644 --- a/src/logo/logo.c +++ b/src/logo/logo.c @@ -568,14 +568,12 @@ static bool logoTryKnownType(void) { FF_STRBUF_AUTO_DESTROY source = ffStrbufCreate(); - FFCommandOptions* commandOptions = &instance.config.modules.command; - const char* error = ffProcessAppendStdOut(&source, commandOptions->param.length ? (char* const[]){ - commandOptions->shell.chars, - commandOptions->param.chars, - options->source.chars, - NULL - } : (char* const[]){ - commandOptions->shell.chars, + const char* error = ffProcessAppendStdOut(&source, (char* const[]){ + #ifdef _WIN32 + "cmd.exe", "/c", + #else + "/bin/sh", "-c", + #endif options->source.chars, NULL }); diff --git a/src/modules/battery/battery.c b/src/modules/battery/battery.c index 7d306accf..788008427 100644 --- a/src/modules/battery/battery.c +++ b/src/modules/battery/battery.c @@ -245,6 +245,23 @@ void ffGenerateBatteryJsonResult(FFBatteryOptions* options, yyjson_mut_doc* doc, } } +void ffInitBatteryOptions(FFBatteryOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + options->temp = false; + options->tempConfig = (FFColorRangeConfig) { 60, 80 }; + options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; + + #ifdef _WIN32 + options->useSetupApi = false; + #endif +} + +void ffDestroyBatteryOptions(FFBatteryOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBatteryModuleInfo = { .name = FF_BATTERY_MODULE_NAME, .description = "Print battery capacity, status, etc", @@ -272,21 +289,3 @@ FFModuleBaseInfo ffBatteryModuleInfo = { {"Battery time remaining (formatted)", "time-formatted"}, })) }; - -void ffInitBatteryOptions(FFBatteryOptions* options) -{ - options->moduleInfo = ffBatteryModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - options->temp = false; - options->tempConfig = (FFColorRangeConfig) { 60, 80 }; - options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; - - #ifdef _WIN32 - options->useSetupApi = false; - #endif -} - -void ffDestroyBatteryOptions(FFBatteryOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/battery/battery.h b/src/modules/battery/battery.h index 9bde4f063..820a7bc7c 100644 --- a/src/modules/battery/battery.h +++ b/src/modules/battery/battery.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BATTERY_MODULE_NAME "Battery" diff --git a/src/modules/battery/option.h b/src/modules/battery/option.h index 8b04ef1b4..1ac5b97be 100644 --- a/src/modules/battery/option.h +++ b/src/modules/battery/option.h @@ -1,13 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFBatteryOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool temp; @@ -18,3 +15,5 @@ typedef struct FFBatteryOptions bool useSetupApi; #endif } FFBatteryOptions; + +static_assert(sizeof(FFBatteryOptions) <= FF_OPTION_MAX_SIZE, "FFBatteryOptions size exceeds maximum allowed size"); diff --git a/src/modules/bios/bios.c b/src/modules/bios/bios.c index f2afa9c44..f802ffd79 100644 --- a/src/modules/bios/bios.c +++ b/src/modules/bios/bios.c @@ -128,6 +128,16 @@ exit: ffStrbufDestroy(&bios.type); } +void ffInitBiosOptions(FFBiosOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyBiosOptions(FFBiosOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBiosModuleInfo = { .name = FF_BIOS_MODULE_NAME, .description = "Print information of 1st-stage bootloader (name, version, release date, etc)", @@ -145,14 +155,3 @@ FFModuleBaseInfo ffBiosModuleInfo = { {"Firmware type", "type"}, })) }; - -void ffInitBiosOptions(FFBiosOptions* options) -{ - options->moduleInfo = ffBiosModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyBiosOptions(FFBiosOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/bios/bios.h b/src/modules/bios/bios.h index 43c2a17e4..22b35edda 100644 --- a/src/modules/bios/bios.h +++ b/src/modules/bios/bios.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BIOS_MODULE_NAME "BIOS" diff --git a/src/modules/bios/option.h b/src/modules/bios/option.h index 483e7b664..000803569 100644 --- a/src/modules/bios/option.h +++ b/src/modules/bios/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFBiosOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFBiosOptions; + +static_assert(sizeof(FFBiosOptions) <= FF_OPTION_MAX_SIZE, "FFBiosOptions size exceeds maximum allowed size"); diff --git a/src/modules/bluetooth/bluetooth.c b/src/modules/bluetooth/bluetooth.c index 7df3ada40..c26316ae8 100644 --- a/src/modules/bluetooth/bluetooth.c +++ b/src/modules/bluetooth/bluetooth.c @@ -163,6 +163,18 @@ void ffGenerateBluetoothJsonResult(FFBluetoothOptions* options, yyjson_mut_doc* } } +void ffInitBluetoothOptions(FFBluetoothOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + options->showDisconnected = false; + options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; +} + +void ffDestroyBluetoothOptions(FFBluetoothOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBluetoothModuleInfo = { .name = FF_BLUETOOTH_MODULE_NAME, .description = "List (connected) bluetooth devices", @@ -181,16 +193,3 @@ FFModuleBaseInfo ffBluetoothModuleInfo = { {"Battery percentage bar", "battery-percentage-bar"}, })) }; - -void ffInitBluetoothOptions(FFBluetoothOptions* options) -{ - options->moduleInfo = ffBluetoothModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - options->showDisconnected = false; - options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; -} - -void ffDestroyBluetoothOptions(FFBluetoothOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/bluetooth/bluetooth.h b/src/modules/bluetooth/bluetooth.h index 448bebab1..889be9690 100644 --- a/src/modules/bluetooth/bluetooth.h +++ b/src/modules/bluetooth/bluetooth.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BLUETOOTH_MODULE_NAME "Bluetooth" diff --git a/src/modules/bluetooth/option.h b/src/modules/bluetooth/option.h index 4de6fff72..516c0d8b4 100644 --- a/src/modules/bluetooth/option.h +++ b/src/modules/bluetooth/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFBluetoothOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool showDisconnected; FFPercentageModuleConfig percent; } FFBluetoothOptions; + +static_assert(sizeof(FFBluetoothOptions) <= FF_OPTION_MAX_SIZE, "FFBluetoothOptions size exceeds maximum allowed size"); diff --git a/src/modules/bluetoothradio/bluetoothradio.c b/src/modules/bluetoothradio/bluetoothradio.c index 0a75e3205..9d96d27a7 100644 --- a/src/modules/bluetoothradio/bluetoothradio.c +++ b/src/modules/bluetoothradio/bluetoothradio.c @@ -166,6 +166,16 @@ void ffGenerateBluetoothRadioJsonResult(FF_MAYBE_UNUSED FFBluetoothRadioOptions* } } +void ffInitBluetoothRadioOptions(FFBluetoothRadioOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰐻"); +} + +void ffDestroyBluetoothRadioOptions(FFBluetoothRadioOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBluetoothRadioModuleInfo = { .name = FF_BLUETOOTHRADIO_MODULE_NAME, .description = "List bluetooth radios width supported version and vendor", @@ -186,14 +196,3 @@ FFModuleBaseInfo ffBluetoothRadioModuleInfo = { {"Connectable / Pairable", "connectable"}, })) }; - -void ffInitBluetoothRadioOptions(FFBluetoothRadioOptions* options) -{ - options->moduleInfo = ffBluetoothRadioModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰐻"); -} - -void ffDestroyBluetoothRadioOptions(FFBluetoothRadioOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/bluetoothradio/bluetoothradio.h b/src/modules/bluetoothradio/bluetoothradio.h index d1371151f..9d63525fe 100644 --- a/src/modules/bluetoothradio/bluetoothradio.h +++ b/src/modules/bluetoothradio/bluetoothradio.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BLUETOOTHRADIO_MODULE_NAME "BluetoothRadio" diff --git a/src/modules/bluetoothradio/option.h b/src/modules/bluetoothradio/option.h index 714200d3e..1b718b834 100644 --- a/src/modules/bluetoothradio/option.h +++ b/src/modules/bluetoothradio/option.h @@ -1,12 +1,11 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFBluetoothRadioOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFBluetoothRadioOptions; + +static_assert(sizeof(FFBluetoothRadioOptions) <= FF_OPTION_MAX_SIZE, "FFBluetoothRadioOptions size exceeds maximum allowed size"); diff --git a/src/modules/board/board.c b/src/modules/board/board.c index 57cd52b3b..78947294f 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -106,6 +106,16 @@ exit: ffStrbufDestroy(&board.serial); } +void ffInitBoardOptions(FFBoardOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyBoardOptions(FFBoardOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBoardModuleInfo = { .name = FF_BOARD_MODULE_NAME, .description = "Print motherboard name and other info", @@ -122,14 +132,3 @@ FFModuleBaseInfo ffBoardModuleInfo = { {"Board serial number", "serial"}, })) }; - -void ffInitBoardOptions(FFBoardOptions* options) -{ - options->moduleInfo = ffBoardModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyBoardOptions(FFBoardOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/board/board.h b/src/modules/board/board.h index 6760e736d..3fdea021d 100644 --- a/src/modules/board/board.h +++ b/src/modules/board/board.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BOARD_MODULE_NAME "Board" diff --git a/src/modules/board/option.h b/src/modules/board/option.h index 1640ff3d3..bcc69adf3 100644 --- a/src/modules/board/option.h +++ b/src/modules/board/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFBoardOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFBoardOptions; + +static_assert(sizeof(FFBoardOptions) <= FF_OPTION_MAX_SIZE, "FFBoardOptions size exceeds maximum allowed size"); diff --git a/src/modules/bootmgr/bootmgr.c b/src/modules/bootmgr/bootmgr.c index d693acbaa..29c08500c 100644 --- a/src/modules/bootmgr/bootmgr.c +++ b/src/modules/bootmgr/bootmgr.c @@ -97,6 +97,16 @@ exit: ffStrbufDestroy(&bootmgr.firmware); } +void ffInitBootmgrOptions(FFBootmgrOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyBootmgrOptions(FFBootmgrOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBootmgrModuleInfo = { .name = FF_BOOTMGR_MODULE_NAME, .description = "Print information of 2nd-stage bootloader (name, firmware, etc)", @@ -114,14 +124,3 @@ FFModuleBaseInfo ffBootmgrModuleInfo = { {"Boot order", "order"}, })) }; - -void ffInitBootmgrOptions(FFBootmgrOptions* options) -{ - options->moduleInfo = ffBootmgrModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyBootmgrOptions(FFBootmgrOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/bootmgr/bootmgr.h b/src/modules/bootmgr/bootmgr.h index 98b030602..9150f5218 100644 --- a/src/modules/bootmgr/bootmgr.h +++ b/src/modules/bootmgr/bootmgr.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BOOTMGR_MODULE_NAME "Bootmgr" diff --git a/src/modules/bootmgr/option.h b/src/modules/bootmgr/option.h index 04a7d3cc5..e27e71efd 100644 --- a/src/modules/bootmgr/option.h +++ b/src/modules/bootmgr/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFBootmgrOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFBootmgrOptions; + +static_assert(sizeof(FFBootmgrOptions) <= FF_OPTION_MAX_SIZE, "FFBootmgrOptions size exceeds maximum allowed size"); diff --git a/src/modules/break/break.c b/src/modules/break/break.c index c2be5f5b0..34fb4c2ad 100644 --- a/src/modules/break/break.c +++ b/src/modules/break/break.c @@ -21,6 +21,14 @@ void ffParseBreakJsonObject(FF_MAYBE_UNUSED FFBreakOptions* options, FF_MAYBE_UN } } +void ffInitBreakOptions(FF_MAYBE_UNUSED FFBreakOptions* options) +{ +} + +void ffDestroyBreakOptions(FF_MAYBE_UNUSED FFBreakOptions* options) +{ +} + FFModuleBaseInfo ffBreakModuleInfo = { .name = FF_BREAK_MODULE_NAME, .description = "Print a empty line", @@ -29,12 +37,3 @@ FFModuleBaseInfo ffBreakModuleInfo = { .parseJsonObject = (void*) ffParseBreakJsonObject, .printModule = (void*) ffPrintBreak, }; - -void ffInitBreakOptions(FF_MAYBE_UNUSED FFBreakOptions* options) -{ - options->moduleInfo = ffBreakModuleInfo; -} - -void ffDestroyBreakOptions(FF_MAYBE_UNUSED FFBreakOptions* options) -{ -} diff --git a/src/modules/break/break.h b/src/modules/break/break.h index f436bfcbb..772d19744 100644 --- a/src/modules/break/break.h +++ b/src/modules/break/break.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BREAK_MODULE_NAME "Break" diff --git a/src/modules/break/option.h b/src/modules/break/option.h index 4d2870c26..e5acbf20d 100644 --- a/src/modules/break/option.h +++ b/src/modules/break/option.h @@ -1,10 +1,9 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFBreakOptions { - FFModuleBaseInfo moduleInfo; } FFBreakOptions; + +static_assert(sizeof(FFBreakOptions) <= FF_OPTION_MAX_SIZE, "FFBreakOptions size exceeds maximum allowed size"); diff --git a/src/modules/brightness/brightness.c b/src/modules/brightness/brightness.c index 4c93ea02f..35e83f144 100644 --- a/src/modules/brightness/brightness.c +++ b/src/modules/brightness/brightness.c @@ -187,6 +187,20 @@ void ffGenerateBrightnessJsonResult(FF_MAYBE_UNUSED FFBrightnessOptions* options } } +void ffInitBrightnessOptions(FFBrightnessOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰯪"); + + options->ddcciSleep = 10; + options->percent = (FFPercentageModuleConfig) { 100, 100, 0 }; + options->compact = false; +} + +void ffDestroyBrightnessOptions(FFBrightnessOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBrightnessModuleInfo = { .name = FF_BRIGHTNESS_MODULE_NAME, .description = "Print current brightness level of your monitors", @@ -206,18 +220,3 @@ FFModuleBaseInfo ffBrightnessModuleInfo = { {"Is built-in screen", "is-builtin"}, })) }; - -void ffInitBrightnessOptions(FFBrightnessOptions* options) -{ - options->moduleInfo = ffBrightnessModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰯪"); - - options->ddcciSleep = 10; - options->percent = (FFPercentageModuleConfig) { 100, 100, 0 }; - options->compact = false; -} - -void ffDestroyBrightnessOptions(FFBrightnessOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/brightness/brightness.h b/src/modules/brightness/brightness.h index 0ee6b83c3..3b443425f 100644 --- a/src/modules/brightness/brightness.h +++ b/src/modules/brightness/brightness.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BRIGHTNESS_MODULE_NAME "Brightness" diff --git a/src/modules/brightness/option.h b/src/modules/brightness/option.h index 70337f59e..4ff3843e7 100644 --- a/src/modules/brightness/option.h +++ b/src/modules/brightness/option.h @@ -1,16 +1,15 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFBrightnessOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; uint32_t ddcciSleep; // ms FFPercentageModuleConfig percent; bool compact; } FFBrightnessOptions; + +static_assert(sizeof(FFBrightnessOptions) <= FF_OPTION_MAX_SIZE, "FFBrightnessOptions size exceeds maximum allowed size"); diff --git a/src/modules/btrfs/btrfs.c b/src/modules/btrfs/btrfs.c index a2aab728b..6872c00e0 100644 --- a/src/modules/btrfs/btrfs.c +++ b/src/modules/btrfs/btrfs.c @@ -200,6 +200,17 @@ void ffGenerateBtrfsJsonResult(FF_MAYBE_UNUSED FFBtrfsOptions* options, yyjson_m } } +void ffInitBtrfsOptions(FFBtrfsOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󱑛"); + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; +} + +void ffDestroyBtrfsOptions(FFBtrfsOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffBtrfsModuleInfo = { .name = FF_BTRFS_MODULE_NAME, .description = "Print Linux BTRFS volumes", @@ -225,15 +236,3 @@ FFModuleBaseInfo ffBtrfsModuleInfo = { {"Sector size", "sector-size"}, })) }; - -void ffInitBtrfsOptions(FFBtrfsOptions* options) -{ - options->moduleInfo = ffBtrfsModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󱑛"); - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; -} - -void ffDestroyBtrfsOptions(FFBtrfsOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/btrfs/btrfs.h b/src/modules/btrfs/btrfs.h index dbc31e0de..3cd77df32 100644 --- a/src/modules/btrfs/btrfs.h +++ b/src/modules/btrfs/btrfs.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_BTRFS_MODULE_NAME "Btrfs" diff --git a/src/modules/btrfs/option.h b/src/modules/btrfs/option.h index 2e4b069b4..019eacb19 100644 --- a/src/modules/btrfs/option.h +++ b/src/modules/btrfs/option.h @@ -1,14 +1,13 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFBtrfsOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; } FFBtrfsOptions; + +static_assert(sizeof(FFBtrfsOptions) <= FF_OPTION_MAX_SIZE, "FFBtrfsOptions size exceeds maximum allowed size"); diff --git a/src/modules/camera/camera.c b/src/modules/camera/camera.c index 39b643bdd..557e27f2e 100644 --- a/src/modules/camera/camera.c +++ b/src/modules/camera/camera.c @@ -120,6 +120,16 @@ void ffGenerateCameraJsonResult(FF_MAYBE_UNUSED FFCameraOptions* options, yyjson } } +void ffInitCameraOptions(FFCameraOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰄀"); +} + +void ffDestroyCameraOptions(FFCameraOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCameraModuleInfo = { .name = FF_CAMERA_MODULE_NAME, .description = "Print available cameras", @@ -138,14 +148,3 @@ FFModuleBaseInfo ffCameraModuleInfo = { {"Height (in px)", "height"}, })) }; - -void ffInitCameraOptions(FFCameraOptions* options) -{ - options->moduleInfo = ffCameraModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰄀"); -} - -void ffDestroyCameraOptions(FFCameraOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/camera/camera.h b/src/modules/camera/camera.h index e1dc96839..1de49bdca 100644 --- a/src/modules/camera/camera.h +++ b/src/modules/camera/camera.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CAMERA_MODULE_NAME "Camera" diff --git a/src/modules/camera/option.h b/src/modules/camera/option.h index 7c7ac05b6..6a2481fe8 100644 --- a/src/modules/camera/option.h +++ b/src/modules/camera/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCameraOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFCameraOptions; + +static_assert(sizeof(FFCameraOptions) <= FF_OPTION_MAX_SIZE, "FFCameraOptions size exceeds maximum allowed size"); diff --git a/src/modules/chassis/chassis.c b/src/modules/chassis/chassis.c index e1cb72bb5..bf357c3cb 100644 --- a/src/modules/chassis/chassis.c +++ b/src/modules/chassis/chassis.c @@ -107,6 +107,16 @@ exit: ffStrbufDestroy(&result.serial); } +void ffInitChassisOptions(FFChassisOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyChassisOptions(FFChassisOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffChassisModuleInfo = { .name = FF_CHASSIS_MODULE_NAME, .description = "Print chassis type (desktop, laptop, etc)", @@ -123,14 +133,3 @@ FFModuleBaseInfo ffChassisModuleInfo = { {"Chassis serial number", "serial"}, })), }; - -void ffInitChassisOptions(FFChassisOptions* options) -{ - options->moduleInfo = ffChassisModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyChassisOptions(FFChassisOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/chassis/chassis.h b/src/modules/chassis/chassis.h index ed6870cde..47a80d6ff 100644 --- a/src/modules/chassis/chassis.h +++ b/src/modules/chassis/chassis.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CHASSIS_MODULE_NAME "Chassis" diff --git a/src/modules/chassis/option.h b/src/modules/chassis/option.h index de6338cd5..b3100653f 100644 --- a/src/modules/chassis/option.h +++ b/src/modules/chassis/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFChassisOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFChassisOptions; + +static_assert(sizeof(FFChassisOptions) <= FF_OPTION_MAX_SIZE, "FFChassisOptions size exceeds maximum allowed size"); diff --git a/src/modules/colors/colors.c b/src/modules/colors/colors.c index 22c8b639f..21d870d76 100644 --- a/src/modules/colors/colors.c +++ b/src/modules/colors/colors.c @@ -239,19 +239,8 @@ void ffGenerateColorsJsonConfig(FFColorsOptions* options, yyjson_mut_doc* doc, y } } -FFModuleBaseInfo ffColorsModuleInfo = { - .name = FF_COLORS_MODULE_NAME, - .description = "Print some colored blocks", - .initOptions = (void*) ffInitColorsOptions, - .destroyOptions = (void*) ffDestroyColorsOptions, - .parseJsonObject = (void*) ffParseColorsJsonObject, - .printModule = (void*) ffPrintColors, - .generateJsonConfig = (void*) ffGenerateColorsJsonConfig, -}; - void ffInitColorsOptions(FFColorsOptions* options) { - options->moduleInfo = ffColorsModuleInfo; ffOptionInitModuleArg(&options->moduleArgs, ""); ffStrbufSetStatic(&options->moduleArgs.key, " "); options->symbol = FF_COLORS_SYMBOL_BACKGROUND; @@ -266,3 +255,13 @@ void ffDestroyColorsOptions(FF_MAYBE_UNUSED FFColorsOptions* options) { ffOptionDestroyModuleArg(&options->moduleArgs); } + +FFModuleBaseInfo ffColorsModuleInfo = { + .name = FF_COLORS_MODULE_NAME, + .description = "Print some colored blocks", + .initOptions = (void*) ffInitColorsOptions, + .destroyOptions = (void*) ffDestroyColorsOptions, + .parseJsonObject = (void*) ffParseColorsJsonObject, + .printModule = (void*) ffPrintColors, + .generateJsonConfig = (void*) ffGenerateColorsJsonConfig, +}; diff --git a/src/modules/colors/colors.h b/src/modules/colors/colors.h index 9d250dc8a..3581dabd9 100644 --- a/src/modules/colors/colors.h +++ b/src/modules/colors/colors.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_COLORS_MODULE_NAME "Colors" diff --git a/src/modules/colors/option.h b/src/modules/colors/option.h index 1a948a9b1..6a0bbb0d4 100644 --- a/src/modules/colors/option.h +++ b/src/modules/colors/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFColorsSymbol @@ -23,10 +21,11 @@ typedef struct FFBlockConfig typedef struct FFColorsOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFColorsSymbol symbol; uint32_t paddingLeft; FFBlockConfig block; } FFColorsOptions; + +static_assert(sizeof(FFColorsOptions) <= FF_OPTION_MAX_SIZE, "FFColorsOptions size exceeds maximum allowed size"); diff --git a/src/modules/command/command.c b/src/modules/command/command.c index b2045566f..785f9514e 100644 --- a/src/modules/command/command.c +++ b/src/modules/command/command.c @@ -120,23 +120,8 @@ void ffGenerateCommandJsonResult(FF_MAYBE_UNUSED FFCommandOptions* options, yyjs yyjson_mut_obj_add_strbuf(doc, module, "result", &result); } -FFModuleBaseInfo ffCommandModuleInfo = { - .name = FF_COMMAND_MODULE_NAME, - .description = "Run custom shell scripts", - .initOptions = (void*) ffInitCommandOptions, - .destroyOptions = (void*) ffDestroyCommandOptions, - .parseJsonObject = (void*) ffParseCommandJsonObject, - .printModule = (void*) ffPrintCommand, - .generateJsonResult = (void*) ffGenerateCommandJsonResult, - .generateJsonConfig = (void*) ffGenerateCommandJsonConfig, - .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { - {"Command result", "result"}, - })) -}; - void ffInitCommandOptions(FFCommandOptions* options) { - options->moduleInfo = ffCommandModuleInfo; ffOptionInitModuleArg(&options->moduleArgs, ""); ffStrbufInitStatic(&options->shell, @@ -163,3 +148,17 @@ void ffDestroyCommandOptions(FFCommandOptions* options) ffStrbufDestroy(&options->param); ffStrbufDestroy(&options->text); } + +FFModuleBaseInfo ffCommandModuleInfo = { + .name = FF_COMMAND_MODULE_NAME, + .description = "Run custom shell scripts", + .initOptions = (void*) ffInitCommandOptions, + .destroyOptions = (void*) ffDestroyCommandOptions, + .parseJsonObject = (void*) ffParseCommandJsonObject, + .printModule = (void*) ffPrintCommand, + .generateJsonResult = (void*) ffGenerateCommandJsonResult, + .generateJsonConfig = (void*) ffGenerateCommandJsonConfig, + .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { + {"Command result", "result"}, + })) +}; diff --git a/src/modules/command/command.h b/src/modules/command/command.h index 195de886b..dd28a8056 100644 --- a/src/modules/command/command.h +++ b/src/modules/command/command.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_COMMAND_MODULE_NAME "Command" diff --git a/src/modules/command/option.h b/src/modules/command/option.h index d30c51ea8..62fbeb981 100644 --- a/src/modules/command/option.h +++ b/src/modules/command/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCommandOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf shell; FFstrbuf param; FFstrbuf text; } FFCommandOptions; + +static_assert(sizeof(FFCommandOptions) <= FF_OPTION_MAX_SIZE, "FFCommandOptions size exceeds maximum allowed size"); diff --git a/src/modules/cpu/cpu.c b/src/modules/cpu/cpu.c index 2c35bbe56..b8f95356e 100644 --- a/src/modules/cpu/cpu.c +++ b/src/modules/cpu/cpu.c @@ -212,6 +212,19 @@ void ffGenerateCPUJsonResult(FFCPUOptions* options, yyjson_mut_doc* doc, yyjson_ ffStrbufDestroy(&cpu.vendor); } +void ffInitCPUOptions(FFCPUOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + options->temp = false; + options->tempConfig = (FFColorRangeConfig) { 60, 80 }; + options->showPeCoreCount = false; +} + +void ffDestroyCPUOptions(FFCPUOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCPUModuleInfo = { .name = FF_CPU_MODULE_NAME, .description = "Print CPU name, frequency, etc", @@ -234,17 +247,3 @@ FFModuleBaseInfo ffCPUModuleInfo = { {"Processor package count", "packages"}, })) }; - -void ffInitCPUOptions(FFCPUOptions* options) -{ - options->moduleInfo = ffCPUModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - options->temp = false; - options->tempConfig = (FFColorRangeConfig) { 60, 80 }; - options->showPeCoreCount = false; -} - -void ffDestroyCPUOptions(FFCPUOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/cpu/cpu.h b/src/modules/cpu/cpu.h index b8ffcded4..c6be13500 100644 --- a/src/modules/cpu/cpu.h +++ b/src/modules/cpu/cpu.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CPU_MODULE_NAME "CPU" diff --git a/src/modules/cpu/option.h b/src/modules/cpu/option.h index af2c87a3f..e0948af2e 100644 --- a/src/modules/cpu/option.h +++ b/src/modules/cpu/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCPUOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool temp; FFColorRangeConfig tempConfig; bool showPeCoreCount; } FFCPUOptions; + +static_assert(sizeof(FFCPUOptions) <= FF_OPTION_MAX_SIZE, "FFCPUOptions size exceeds maximum allowed size"); diff --git a/src/modules/cpucache/cpucache.c b/src/modules/cpucache/cpucache.c index b46b7de18..58a73f839 100644 --- a/src/modules/cpucache/cpucache.c +++ b/src/modules/cpucache/cpucache.c @@ -208,6 +208,18 @@ exit: ffListDestroy(&result.caches[3]); } +void ffInitCPUCacheOptions(FFCPUCacheOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->compact = false; +} + +void ffDestroyCPUCacheOptions(FFCPUCacheOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCPUCacheModuleInfo = { .name = FF_CPUCACHE_MODULE_NAME, .description = "Print CPU cache sizes", @@ -222,16 +234,3 @@ FFModuleBaseInfo ffCPUCacheModuleInfo = { {"Sum result", "sum"}, })) }; - -void ffInitCPUCacheOptions(FFCPUCacheOptions* options) -{ - options->moduleInfo = ffCPUCacheModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->compact = false; -} - -void ffDestroyCPUCacheOptions(FFCPUCacheOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/cpucache/cpucache.h b/src/modules/cpucache/cpucache.h index 5a9fa164a..22987a857 100644 --- a/src/modules/cpucache/cpucache.h +++ b/src/modules/cpucache/cpucache.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CPUCACHE_MODULE_NAME "CPUCache" diff --git a/src/modules/cpucache/option.h b/src/modules/cpucache/option.h index f3e65eef7..f53acf691 100644 --- a/src/modules/cpucache/option.h +++ b/src/modules/cpucache/option.h @@ -1,13 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCPUCacheOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool compact; } FFCPUCacheOptions; + +static_assert(sizeof(FFCPUCacheOptions) <= FF_OPTION_MAX_SIZE, "FFCPUCacheOptions size exceeds maximum allowed size"); diff --git a/src/modules/cpuusage/cpuusage.c b/src/modules/cpuusage/cpuusage.c index d50a5cac1..180260069 100644 --- a/src/modules/cpuusage/cpuusage.c +++ b/src/modules/cpuusage/cpuusage.c @@ -174,6 +174,19 @@ void ffGenerateCPUUsageJsonResult(FFCPUUsageOptions* options, yyjson_mut_doc* do } } +void ffInitCPUUsageOptions(FFCPUUsageOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰓅"); + options->separate = false; + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; + options->waitTime = 200; +} + +void ffDestroyCPUUsageOptions(FFCPUUsageOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCPUUsageModuleInfo = { .name = FF_CPUUSAGE_MODULE_NAME, .description = "Print CPU usage. Costs some time to collect data", @@ -194,17 +207,3 @@ FFModuleBaseInfo ffCPUUsageModuleInfo = { {"CPU usage (percentage bar, minimum)", "min-bar"}, })) }; - -void ffInitCPUUsageOptions(FFCPUUsageOptions* options) -{ - options->moduleInfo = ffCPUUsageModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰓅"); - options->separate = false; - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; - options->waitTime = 200; -} - -void ffDestroyCPUUsageOptions(FFCPUUsageOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/cpuusage/cpuusage.h b/src/modules/cpuusage/cpuusage.h index 8e2b26091..221e74778 100644 --- a/src/modules/cpuusage/cpuusage.h +++ b/src/modules/cpuusage/cpuusage.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CPUUSAGE_MODULE_NAME "CPUUsage" diff --git a/src/modules/cpuusage/option.h b/src/modules/cpuusage/option.h index 9f65f701d..dc19fbe76 100644 --- a/src/modules/cpuusage/option.h +++ b/src/modules/cpuusage/option.h @@ -1,16 +1,15 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFCPUUsageOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool separate; FFPercentageModuleConfig percent; uint32_t waitTime; // in ms } FFCPUUsageOptions; + +static_assert(sizeof(FFCPUUsageOptions) <= FF_OPTION_MAX_SIZE, "FFCPUUsageOptions size exceeds maximum allowed size"); diff --git a/src/modules/cursor/cursor.c b/src/modules/cursor/cursor.c index 00b59003a..53406337f 100644 --- a/src/modules/cursor/cursor.c +++ b/src/modules/cursor/cursor.c @@ -94,6 +94,16 @@ void ffGenerateCursorJsonResult(FF_MAYBE_UNUSED FFCursorOptions* options, yyjson ffStrbufDestroy(&result.size); } +void ffInitCursorOptions(FFCursorOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰆿"); +} + +void ffDestroyCursorOptions(FFCursorOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCursorModuleInfo = { .name = FF_CURSOR_MODULE_NAME, .description = "Print cursor style name", @@ -108,14 +118,3 @@ FFModuleBaseInfo ffCursorModuleInfo = { {"Cursor size", "size"}, })), }; - -void ffInitCursorOptions(FFCursorOptions* options) -{ - options->moduleInfo = ffCursorModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰆿"); -} - -void ffDestroyCursorOptions(FFCursorOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/cursor/cursor.h b/src/modules/cursor/cursor.h index b4fcc1e3b..c74031cfa 100644 --- a/src/modules/cursor/cursor.h +++ b/src/modules/cursor/cursor.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CURSOR_MODULE_NAME "Cursor" diff --git a/src/modules/cursor/option.h b/src/modules/cursor/option.h index 26c2bb9f4..3f02c567c 100644 --- a/src/modules/cursor/option.h +++ b/src/modules/cursor/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCursorOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFCursorOptions; + +static_assert(sizeof(FFCursorOptions) <= FF_OPTION_MAX_SIZE, "FFCursorOptions size exceeds maximum allowed size"); diff --git a/src/modules/custom/custom.c b/src/modules/custom/custom.c index 0f5182cd7..221fd05ae 100644 --- a/src/modules/custom/custom.c +++ b/src/modules/custom/custom.c @@ -30,6 +30,17 @@ void ffParseCustomJsonObject(FFCustomOptions* options, yyjson_val* module) } } +void ffInitCustomOptions(FFCustomOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + ffStrbufSetStatic(&options->moduleArgs.key, " "); +} + +void ffDestroyCustomOptions(FFCustomOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffCustomModuleInfo = { .name = FF_CUSTOM_MODULE_NAME, .description = "Print a custom string, with or without key", @@ -39,15 +50,3 @@ FFModuleBaseInfo ffCustomModuleInfo = { .printModule = (void*) ffPrintCustom, .generateJsonConfig = (void*) ffGenerateCustomJsonConfig, }; - -void ffInitCustomOptions(FFCustomOptions* options) -{ - options->moduleInfo = ffCustomModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - ffStrbufSetStatic(&options->moduleArgs.key, " "); -} - -void ffDestroyCustomOptions(FFCustomOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/custom/custom.h b/src/modules/custom/custom.h index 50611704c..f4dfefab0 100644 --- a/src/modules/custom/custom.h +++ b/src/modules/custom/custom.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_CUSTOM_MODULE_NAME "Custom" diff --git a/src/modules/custom/option.h b/src/modules/custom/option.h index b0776a833..c66ccee7d 100644 --- a/src/modules/custom/option.h +++ b/src/modules/custom/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFCustomOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFCustomOptions; + +static_assert(sizeof(FFCustomOptions) <= FF_OPTION_MAX_SIZE, "FFCustomOptions size exceeds maximum allowed size"); diff --git a/src/modules/datetime/datetime.c b/src/modules/datetime/datetime.c index 3bf57a7a9..041901088 100644 --- a/src/modules/datetime/datetime.c +++ b/src/modules/datetime/datetime.c @@ -143,6 +143,16 @@ void ffGenerateDateTimeJsonResult(FF_MAYBE_UNUSED FFDateTimeOptions* options, yy yyjson_mut_obj_add_strcpy(doc, module, "result", ffTimeToFullStr(ffTimeGetNow())); } +void ffInitDateTimeOptions(FFDateTimeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyDateTimeOptions(FFDateTimeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffDateTimeModuleInfo = { .name = FF_DATETIME_MODULE_NAME, .description = "Print current date and time", @@ -178,14 +188,3 @@ FFModuleBaseInfo ffDateTimeModuleInfo = { {"Day in month with leading zero", "day-pretty"}, })) }; - -void ffInitDateTimeOptions(FFDateTimeOptions* options) -{ - options->moduleInfo = ffDateTimeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyDateTimeOptions(FFDateTimeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/datetime/datetime.h b/src/modules/datetime/datetime.h index 2b5383b89..bdf8f732d 100644 --- a/src/modules/datetime/datetime.h +++ b/src/modules/datetime/datetime.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DATETIME_MODULE_NAME "DateTime" diff --git a/src/modules/datetime/option.h b/src/modules/datetime/option.h index f9d25cfe3..fffd5dc51 100644 --- a/src/modules/datetime/option.h +++ b/src/modules/datetime/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFDateTimeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFDateTimeOptions; + +static_assert(sizeof(FFDateTimeOptions) <= FF_OPTION_MAX_SIZE, "FFDateTimeOptions size exceeds maximum allowed size"); diff --git a/src/modules/de/de.c b/src/modules/de/de.c index 4390544a1..bb331daf2 100644 --- a/src/modules/de/de.c +++ b/src/modules/de/de.c @@ -91,6 +91,18 @@ void ffGenerateDEJsonResult(FF_MAYBE_UNUSED FFDEOptions* options, yyjson_mut_doc yyjson_mut_obj_add_strbuf(doc, obj, "version", &version); } +void ffInitDEOptions(FFDEOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->slowVersionDetection = false; +} + +void ffDestroyDEOptions(FFDEOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffDEModuleInfo = { .name = FF_DE_MODULE_NAME, .description = "Print desktop environment name", @@ -106,16 +118,3 @@ FFModuleBaseInfo ffDEModuleInfo = { {"DE version", "version"}, })) }; - -void ffInitDEOptions(FFDEOptions* options) -{ - options->moduleInfo = ffDEModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->slowVersionDetection = false; -} - -void ffDestroyDEOptions(FFDEOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/de/de.h b/src/modules/de/de.h index 90b5a9662..ca945380b 100644 --- a/src/modules/de/de.h +++ b/src/modules/de/de.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DE_MODULE_NAME "DE" diff --git a/src/modules/de/option.h b/src/modules/de/option.h index f94797666..c587a0c96 100644 --- a/src/modules/de/option.h +++ b/src/modules/de/option.h @@ -1,13 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFDEOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool slowVersionDetection; } FFDEOptions; + +static_assert(sizeof(FFDEOptions) <= FF_OPTION_MAX_SIZE, "FFDEOptions size exceeds maximum allowed size"); diff --git a/src/modules/disk/disk.c b/src/modules/disk/disk.c index 0f8259722..4f51c065c 100644 --- a/src/modules/disk/disk.c +++ b/src/modules/disk/disk.c @@ -412,6 +412,30 @@ void ffGenerateDiskJsonResult(FFDiskOptions* options, yyjson_mut_doc* doc, yyjso } } +void ffInitDiskOptions(FFDiskOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + ffStrbufInit(&options->folders); + #if _WIN32 || __APPLE__ || __ANDROID__ + ffStrbufInit(&options->hideFolders); + #else + ffStrbufInitStatic(&options->hideFolders, "/efi:/boot:/boot/efi:/boot/firmware"); + #endif + ffStrbufInit(&options->hideFS); + options->showTypes = FF_DISK_VOLUME_TYPE_REGULAR_BIT | FF_DISK_VOLUME_TYPE_EXTERNAL_BIT | FF_DISK_VOLUME_TYPE_READONLY_BIT; + options->calcType = FF_DISK_CALC_TYPE_FREE; + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; +} + +void ffDestroyDiskOptions(FFDiskOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->folders); + ffStrbufDestroy(&options->hideFolders); + ffStrbufDestroy(&options->hideFS); +} + FFModuleBaseInfo ffDiskModuleInfo = { .name = FF_DISK_MODULE_NAME, .description = "Print partitions, space usage, file system, etc", @@ -448,28 +472,3 @@ FFModuleBaseInfo ffDiskModuleInfo = { {"Years fraction after creation", "years-fraction"}, })) }; - -void ffInitDiskOptions(FFDiskOptions* options) -{ - options->moduleInfo = ffDiskModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - ffStrbufInit(&options->folders); - #if _WIN32 || __APPLE__ || __ANDROID__ - ffStrbufInit(&options->hideFolders); - #else - ffStrbufInitStatic(&options->hideFolders, "/efi:/boot:/boot/efi:/boot/firmware"); - #endif - ffStrbufInit(&options->hideFS); - options->showTypes = FF_DISK_VOLUME_TYPE_REGULAR_BIT | FF_DISK_VOLUME_TYPE_EXTERNAL_BIT | FF_DISK_VOLUME_TYPE_READONLY_BIT; - options->calcType = FF_DISK_CALC_TYPE_FREE; - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; -} - -void ffDestroyDiskOptions(FFDiskOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->folders); - ffStrbufDestroy(&options->hideFolders); - ffStrbufDestroy(&options->hideFS); -} diff --git a/src/modules/disk/disk.h b/src/modules/disk/disk.h index cf0ee3478..c96155fe1 100644 --- a/src/modules/disk/disk.h +++ b/src/modules/disk/disk.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DISK_MODULE_NAME "Disk" diff --git a/src/modules/disk/option.h b/src/modules/disk/option.h index 427e159f9..f4ec16f93 100644 --- a/src/modules/disk/option.h +++ b/src/modules/disk/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" @@ -25,7 +23,6 @@ typedef enum __attribute__((__packed__)) FFDiskCalcType typedef struct FFDiskOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf folders; @@ -35,3 +32,5 @@ typedef struct FFDiskOptions FFDiskCalcType calcType; FFPercentageModuleConfig percent; } FFDiskOptions; + +static_assert(sizeof(FFDiskOptions) <= FF_OPTION_MAX_SIZE, "FFDiskOptions size exceeds maximum allowed size"); diff --git a/src/modules/diskio/diskio.c b/src/modules/diskio/diskio.c index 5764aa1b8..8d6a59433 100644 --- a/src/modules/diskio/diskio.c +++ b/src/modules/diskio/diskio.c @@ -170,6 +170,21 @@ void ffGenerateDiskIOJsonResult(FFDiskIOOptions* options, yyjson_mut_doc* doc, y } } +void ffInitDiskIOOptions(FFDiskIOOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰓅"); + + ffStrbufInit(&options->namePrefix); + options->detectTotal = false; + options->waitTime = 1000; +} + +void ffDestroyDiskIOOptions(FFDiskIOOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->namePrefix); +} + FFModuleBaseInfo ffDiskIOModuleInfo = { .name = FF_DISKIO_MODULE_NAME, .description = "Print physical disk I/O throughput", @@ -190,19 +205,3 @@ FFModuleBaseInfo ffDiskIOModuleInfo = { {"Number of writes", "write-count"}, })) }; - -void ffInitDiskIOOptions(FFDiskIOOptions* options) -{ - options->moduleInfo = ffDiskIOModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰓅"); - - ffStrbufInit(&options->namePrefix); - options->detectTotal = false; - options->waitTime = 1000; -} - -void ffDestroyDiskIOOptions(FFDiskIOOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->namePrefix); -} diff --git a/src/modules/diskio/diskio.h b/src/modules/diskio/diskio.h index 3dca4949f..ba3977bae 100644 --- a/src/modules/diskio/diskio.h +++ b/src/modules/diskio/diskio.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DISKIO_MODULE_NAME "DiskIO" diff --git a/src/modules/diskio/option.h b/src/modules/diskio/option.h index c41e0428b..5de458fa3 100644 --- a/src/modules/diskio/option.h +++ b/src/modules/diskio/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFDiskIOOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf namePrefix; uint32_t waitTime; bool detectTotal; } FFDiskIOOptions; + +static_assert(sizeof(FFDiskIOOptions) <= FF_OPTION_MAX_SIZE, "FFDiskIOOptions size exceeds maximum allowed size"); diff --git a/src/modules/display/display.c b/src/modules/display/display.c index 40ebc3477..acfc4c0e4 100644 --- a/src/modules/display/display.c +++ b/src/modules/display/display.c @@ -402,6 +402,18 @@ void ffGenerateDisplayJsonResult(FF_MAYBE_UNUSED FFDisplayOptions* options, yyjs } } +void ffInitDisplayOptions(FFDisplayOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰍹"); + options->compactType = FF_DISPLAY_COMPACT_TYPE_NONE; + options->preciseRefreshRate = false; +} + +void ffDestroyDisplayOptions(FFDisplayOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffDisplayModuleInfo = { .name = FF_DISPLAY_MODULE_NAME, .description = "Print resolutions, refresh rates, etc", @@ -438,16 +450,3 @@ FFModuleBaseInfo ffDisplayModuleInfo = { {"Screen preferred refresh rate (in Hz)", "preferred-refresh-rate"}, })) }; - -void ffInitDisplayOptions(FFDisplayOptions* options) -{ - options->moduleInfo = ffDisplayModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰍹"); - options->compactType = FF_DISPLAY_COMPACT_TYPE_NONE; - options->preciseRefreshRate = false; -} - -void ffDestroyDisplayOptions(FFDisplayOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/display/display.h b/src/modules/display/display.h index 9c3950aea..8b9f41941 100644 --- a/src/modules/display/display.h +++ b/src/modules/display/display.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DISPLAY_MODULE_NAME "Display" diff --git a/src/modules/display/option.h b/src/modules/display/option.h index 7233b2dd3..12ad3c5ec 100644 --- a/src/modules/display/option.h +++ b/src/modules/display/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFDisplayCompactType @@ -22,10 +20,11 @@ typedef enum __attribute__((__packed__)) FFDisplayOrder typedef struct FFDisplayOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFDisplayCompactType compactType; bool preciseRefreshRate; FFDisplayOrder order; } FFDisplayOptions; + +static_assert(sizeof(FFDisplayOptions) <= FF_OPTION_MAX_SIZE, "FFDisplayOptions size exceeds maximum allowed size"); diff --git a/src/modules/dns/dns.c b/src/modules/dns/dns.c index 4de82d78b..c9736ffc9 100644 --- a/src/modules/dns/dns.c +++ b/src/modules/dns/dns.c @@ -139,6 +139,18 @@ exit: } } +void ffInitDNSOptions(FFDNSOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰇖"); + + options->showType = FF_DNS_TYPE_BOTH; +} + +void ffDestroyDNSOptions(FFDNSOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffDNSModuleInfo = { .name = FF_DNS_MODULE_NAME, .description = "Print configured DNS servers", @@ -152,16 +164,3 @@ FFModuleBaseInfo ffDNSModuleInfo = { {"DNS result", "result"}, })) }; - -void ffInitDNSOptions(FFDNSOptions* options) -{ - options->moduleInfo = ffDNSModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰇖"); - - options->showType = FF_DNS_TYPE_BOTH; -} - -void ffDestroyDNSOptions(FFDNSOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/dns/dns.h b/src/modules/dns/dns.h index 46bff8c13..e33763775 100644 --- a/src/modules/dns/dns.h +++ b/src/modules/dns/dns.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_DNS_MODULE_NAME "DNS" diff --git a/src/modules/dns/option.h b/src/modules/dns/option.h index 18dbb147b..bc3bd5690 100644 --- a/src/modules/dns/option.h +++ b/src/modules/dns/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFDNSShowType { @@ -13,8 +11,9 @@ typedef enum __attribute__((__packed__)) FFDNSShowType { typedef struct FFDNSOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFDNSShowType showType; } FFDNSOptions; + +static_assert(sizeof(FFDNSOptions) <= FF_OPTION_MAX_SIZE, "FFDNSOptions size exceeds maximum allowed size"); diff --git a/src/modules/editor/editor.c b/src/modules/editor/editor.c index 256a434fe..06318f1f1 100644 --- a/src/modules/editor/editor.c +++ b/src/modules/editor/editor.c @@ -104,6 +104,16 @@ void ffGenerateEditorJsonResult(FF_MAYBE_UNUSED FFEditorOptions* options, yyjson ffStrbufDestroy(&result.version); } +void ffInitEditorOptions(FFEditorOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󱞎"); +} + +void ffDestroyEditorOptions(FFEditorOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffEditorModuleInfo = { .name = FF_EDITOR_MODULE_NAME, .description = "Print information of the default editor ($VISUAL or $EDITOR)", @@ -121,14 +131,3 @@ FFModuleBaseInfo ffEditorModuleInfo = { {"Version", "version"}, })) }; - -void ffInitEditorOptions(FFEditorOptions* options) -{ - options->moduleInfo = ffEditorModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󱞎"); -} - -void ffDestroyEditorOptions(FFEditorOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/editor/editor.h b/src/modules/editor/editor.h index 0f597fffc..0e5be29e1 100644 --- a/src/modules/editor/editor.h +++ b/src/modules/editor/editor.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_EDITOR_MODULE_NAME "Editor" diff --git a/src/modules/editor/option.h b/src/modules/editor/option.h index 92503d659..f7c545f84 100644 --- a/src/modules/editor/option.h +++ b/src/modules/editor/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFEditorOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFEditorOptions; + +static_assert(sizeof(FFEditorOptions) <= FF_OPTION_MAX_SIZE, "FFEditorOptions size exceeds maximum allowed size"); diff --git a/src/modules/font/font.c b/src/modules/font/font.c index 4ec299478..7e308407c 100644 --- a/src/modules/font/font.c +++ b/src/modules/font/font.c @@ -88,6 +88,16 @@ void ffGenerateFontJsonResult(FF_MAYBE_UNUSED FFFontOptions* options, yyjson_mut ffStrbufDestroy(&font.fonts[i]); } +void ffInitFontOptions(FFFontOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyFontOptions(FFFontOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffFontModuleInfo = { .name = FF_FONT_MODULE_NAME, .description = "Print system font names", @@ -105,14 +115,3 @@ FFModuleBaseInfo ffFontModuleInfo = { {"Combined fonts for display", "combined"}, })) }; - -void ffInitFontOptions(FFFontOptions* options) -{ - options->moduleInfo = ffFontModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyFontOptions(FFFontOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/font/font.h b/src/modules/font/font.h index 0872ce7b1..9d3630bd2 100644 --- a/src/modules/font/font.h +++ b/src/modules/font/font.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_FONT_MODULE_NAME "Font" diff --git a/src/modules/font/option.h b/src/modules/font/option.h index 12552bcce..6c942e7dd 100644 --- a/src/modules/font/option.h +++ b/src/modules/font/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFFontOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFFontOptions; + +static_assert(sizeof(FFFontOptions) <= FF_OPTION_MAX_SIZE, "FFFontOptions size exceeds maximum allowed size"); diff --git a/src/modules/gamepad/gamepad.c b/src/modules/gamepad/gamepad.c index 854098ea5..d6bf3ee55 100644 --- a/src/modules/gamepad/gamepad.c +++ b/src/modules/gamepad/gamepad.c @@ -130,6 +130,17 @@ void ffGenerateGamepadJsonResult(FF_MAYBE_UNUSED FFGamepadOptions* options, yyjs } } +void ffInitGamepadOptions(FFGamepadOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰺵"); + options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; +} + +void ffDestroyGamepadOptions(FFGamepadOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffGamepadModuleInfo = { .name = FF_GAMEPAD_MODULE_NAME, .description = "List (connected) gamepads", @@ -146,15 +157,3 @@ FFModuleBaseInfo ffGamepadModuleInfo = { {"Battery percentage bar", "battery-percentage-bar"}, })) }; - -void ffInitGamepadOptions(FFGamepadOptions* options) -{ - options->moduleInfo = ffGamepadModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰺵"); - options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; -} - -void ffDestroyGamepadOptions(FFGamepadOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/gamepad/gamepad.h b/src/modules/gamepad/gamepad.h index 7534fff68..7d252d8c0 100644 --- a/src/modules/gamepad/gamepad.h +++ b/src/modules/gamepad/gamepad.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_GAMEPAD_MODULE_NAME "Gamepad" diff --git a/src/modules/gamepad/option.h b/src/modules/gamepad/option.h index d1b570bf8..8640a0d7c 100644 --- a/src/modules/gamepad/option.h +++ b/src/modules/gamepad/option.h @@ -1,13 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFGamepadOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; } FFGamepadOptions; + +static_assert(sizeof(FFGamepadOptions) <= FF_OPTION_MAX_SIZE, "FFGamepadOptions size exceeds maximum allowed size"); diff --git a/src/modules/gpu/gpu.c b/src/modules/gpu/gpu.c index 3b4813f8b..f7a532961 100644 --- a/src/modules/gpu/gpu.c +++ b/src/modules/gpu/gpu.c @@ -414,6 +414,29 @@ void ffGenerateGPUJsonResult(FFGPUOptions* options, yyjson_mut_doc* doc, yyjson_ } } +void ffInitGPUOptions(FFGPUOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰾲"); + + options->driverSpecific = false; + options->detectionMethod = + #if defined(__x86_64__) || defined(__i386__) + FF_GPU_DETECTION_METHOD_PCI + #else + FF_GPU_DETECTION_METHOD_AUTO + #endif + ; + options->temp = false; + options->hideType = FF_GPU_TYPE_NONE; + options->tempConfig = (FFColorRangeConfig) { 60, 80 }; + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; +} + +void ffDestroyGPUOptions(FFGPUOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffGPUModuleInfo = { .name = FF_GPU_MODULE_NAME, .description = "Print GPU names, graphic memory size, type, etc", @@ -446,27 +469,3 @@ FFModuleBaseInfo ffGPUModuleInfo = { {"Memory type (Windows only)", "memory-type"}, })), }; - -void ffInitGPUOptions(FFGPUOptions* options) -{ - options->moduleInfo = ffGPUModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰾲"); - - options->driverSpecific = false; - options->detectionMethod = - #if defined(__x86_64__) || defined(__i386__) - FF_GPU_DETECTION_METHOD_PCI - #else - FF_GPU_DETECTION_METHOD_AUTO - #endif - ; - options->temp = false; - options->hideType = FF_GPU_TYPE_NONE; - options->tempConfig = (FFColorRangeConfig) { 60, 80 }; - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; -} - -void ffDestroyGPUOptions(FFGPUOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/gpu/gpu.h b/src/modules/gpu/gpu.h index e112f740f..afc952d6c 100644 --- a/src/modules/gpu/gpu.h +++ b/src/modules/gpu/gpu.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_GPU_MODULE_NAME "GPU" diff --git a/src/modules/gpu/option.h b/src/modules/gpu/option.h index f88343770..36d2f0af1 100644 --- a/src/modules/gpu/option.h +++ b/src/modules/gpu/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" @@ -24,7 +22,6 @@ typedef enum __attribute__((__packed__)) FFGPUDetectionMethod typedef struct FFGPUOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFGPUType hideType; @@ -35,3 +32,5 @@ typedef struct FFGPUOptions FFColorRangeConfig tempConfig; FFPercentageModuleConfig percent; } FFGPUOptions; + +static_assert(sizeof(FFGPUOptions) <= FF_OPTION_MAX_SIZE, "FFGPUOptions size exceeds maximum allowed size"); diff --git a/src/modules/host/host.c b/src/modules/host/host.c index 08c7c36d2..59692336b 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -131,6 +131,16 @@ exit: ffStrbufDestroy(&host.vendor); } +void ffInitHostOptions(FFHostOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰌢"); +} + +void ffDestroyHostOptions(FFHostOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffHostModuleInfo = { .name = FF_HOST_MODULE_NAME, .description = "Print product name of your computer", @@ -150,14 +160,3 @@ FFModuleBaseInfo ffHostModuleInfo = { {"Product uuid", "uuid"}, })) }; - -void ffInitHostOptions(FFHostOptions* options) -{ - options->moduleInfo = ffHostModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰌢"); -} - -void ffDestroyHostOptions(FFHostOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/host/host.h b/src/modules/host/host.h index d684b2043..79f22e527 100644 --- a/src/modules/host/host.h +++ b/src/modules/host/host.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_HOST_MODULE_NAME "Host" diff --git a/src/modules/host/option.h b/src/modules/host/option.h index 1c6bf26f3..2516f864c 100644 --- a/src/modules/host/option.h +++ b/src/modules/host/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFHostOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFHostOptions; + +static_assert(sizeof(FFHostOptions) <= FF_OPTION_MAX_SIZE, "FFHostOptions size exceeds maximum allowed size"); diff --git a/src/modules/icons/icons.c b/src/modules/icons/icons.c index 91225fdf1..210d8996c 100644 --- a/src/modules/icons/icons.c +++ b/src/modules/icons/icons.c @@ -86,6 +86,16 @@ void ffGenerateIconsJsonResult(FF_MAYBE_UNUSED FFIconsOptions* options, yyjson_m ffStrbufDestroy(&result.icons2); } +void ffInitIconsOptions(FFIconsOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyIconsOptions(FFIconsOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffIconsModuleInfo = { .name = FF_ICONS_MODULE_NAME, .description = "Print icon style name", @@ -100,14 +110,3 @@ FFModuleBaseInfo ffIconsModuleInfo = { {"Icons part 2", "icons2"}, })) }; - -void ffInitIconsOptions(FFIconsOptions* options) -{ - options->moduleInfo = ffIconsModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyIconsOptions(FFIconsOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/icons/icons.h b/src/modules/icons/icons.h index 6ec8b4ee8..6f2bb877c 100644 --- a/src/modules/icons/icons.h +++ b/src/modules/icons/icons.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_ICONS_MODULE_NAME "Icons" diff --git a/src/modules/icons/option.h b/src/modules/icons/option.h index 456668796..966bba5f5 100644 --- a/src/modules/icons/option.h +++ b/src/modules/icons/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFIconsOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFIconsOptions; + +static_assert(sizeof(FFIconsOptions) <= FF_OPTION_MAX_SIZE, "FFIconsOptions size exceeds maximum allowed size"); diff --git a/src/modules/initsystem/initsystem.c b/src/modules/initsystem/initsystem.c index 19625dc17..c549011ea 100644 --- a/src/modules/initsystem/initsystem.c +++ b/src/modules/initsystem/initsystem.c @@ -98,6 +98,16 @@ exit: ffStrbufDestroy(&result.version); } +void ffInitInitSystemOptions(FFInitSystemOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰿄"); +} + +void ffDestroyInitSystemOptions(FFInitSystemOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffInitSystemModuleInfo = { .name = FF_INITSYSTEM_MODULE_NAME, .description = "Print init system (pid 1) name and version", @@ -114,14 +124,3 @@ FFModuleBaseInfo ffInitSystemModuleInfo = { {"Init system pid", "pid"}, })) }; - -void ffInitInitSystemOptions(FFInitSystemOptions* options) -{ - options->moduleInfo = ffInitSystemModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰿄"); -} - -void ffDestroyInitSystemOptions(FFInitSystemOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/initsystem/initsystem.h b/src/modules/initsystem/initsystem.h index 0a021ff61..37b601481 100644 --- a/src/modules/initsystem/initsystem.h +++ b/src/modules/initsystem/initsystem.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_INITSYSTEM_MODULE_NAME "InitSystem" diff --git a/src/modules/initsystem/option.h b/src/modules/initsystem/option.h index aa4620670..54c10158e 100644 --- a/src/modules/initsystem/option.h +++ b/src/modules/initsystem/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFInitSystemOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFInitSystemOptions; + +static_assert(sizeof(FFInitSystemOptions) <= FF_OPTION_MAX_SIZE, "FFInitSystemOptions size exceeds maximum allowed size"); diff --git a/src/modules/kernel/kernel.c b/src/modules/kernel/kernel.c index 21d1e0ad9..0d707129f 100644 --- a/src/modules/kernel/kernel.c +++ b/src/modules/kernel/kernel.c @@ -66,6 +66,16 @@ void ffGenerateKernelJsonResult(FF_MAYBE_UNUSED FFKernelOptions* options, yyjson yyjson_mut_obj_add_uint(doc, obj, "pageSize", info->pageSize); } +void ffInitKernelOptions(FFKernelOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyKernelOptions(FFKernelOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffKernelModuleInfo = { .name = FF_KERNEL_MODULE_NAME, .description = "Print system kernel version", @@ -84,14 +94,3 @@ FFModuleBaseInfo ffKernelModuleInfo = { {"Page size", "page-size"}, })) }; - -void ffInitKernelOptions(FFKernelOptions* options) -{ - options->moduleInfo = ffKernelModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyKernelOptions(FFKernelOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/kernel/kernel.h b/src/modules/kernel/kernel.h index 7e2c0c68d..743ac2148 100644 --- a/src/modules/kernel/kernel.h +++ b/src/modules/kernel/kernel.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_KERNEL_MODULE_NAME "Kernel" diff --git a/src/modules/kernel/option.h b/src/modules/kernel/option.h index fd3cb17a3..2b2b27d7e 100644 --- a/src/modules/kernel/option.h +++ b/src/modules/kernel/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFKernelOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFKernelOptions; + +static_assert(sizeof(FFKernelOptions) <= FF_OPTION_MAX_SIZE, "FFKernelOptions size exceeds maximum allowed size"); diff --git a/src/modules/keyboard/keyboard.c b/src/modules/keyboard/keyboard.c index d60d6543b..5c582b122 100644 --- a/src/modules/keyboard/keyboard.c +++ b/src/modules/keyboard/keyboard.c @@ -96,6 +96,16 @@ void ffGenerateKeyboardJsonResult(FF_MAYBE_UNUSED FFKeyboardOptions* options, yy } } +void ffInitKeyboardOptions(FFKeyboardOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyKeyboardOptions(FFKeyboardOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffKeyboardModuleInfo = { .name = FF_KEYBOARD_MODULE_NAME, .description = "List (connected) keyboards", @@ -110,14 +120,3 @@ FFModuleBaseInfo ffKeyboardModuleInfo = { {"Serial number", "serial"}, })) }; - -void ffInitKeyboardOptions(FFKeyboardOptions* options) -{ - options->moduleInfo = ffKeyboardModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyKeyboardOptions(FFKeyboardOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/keyboard/keyboard.h b/src/modules/keyboard/keyboard.h index 140faf3ad..fee46ccb1 100644 --- a/src/modules/keyboard/keyboard.h +++ b/src/modules/keyboard/keyboard.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_KEYBOARD_MODULE_NAME "Keyboard" diff --git a/src/modules/keyboard/option.h b/src/modules/keyboard/option.h index 4f39eee19..b65de5ceb 100644 --- a/src/modules/keyboard/option.h +++ b/src/modules/keyboard/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFKeyboardOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFKeyboardOptions; + +static_assert(sizeof(FFKeyboardOptions) <= FF_OPTION_MAX_SIZE, "FFKeyboardOptions size exceeds maximum allowed size"); diff --git a/src/modules/lm/lm.c b/src/modules/lm/lm.c index 34bd9a40b..09d56ea57 100644 --- a/src/modules/lm/lm.c +++ b/src/modules/lm/lm.c @@ -99,6 +99,16 @@ exit: ffStrbufDestroy(&result.version); } +void ffInitLMOptions(FFLMOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰧨"); +} + +void ffDestroyLMOptions(FFLMOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffLMModuleInfo = { .name = FF_LM_MODULE_NAME, .description = "Print login manager (desktop manager) name and version", @@ -114,14 +124,3 @@ FFModuleBaseInfo ffLMModuleInfo = { {"LM version", "version"}, })) }; - -void ffInitLMOptions(FFLMOptions* options) -{ - options->moduleInfo = ffLMModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰧨"); -} - -void ffDestroyLMOptions(FFLMOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/lm/lm.h b/src/modules/lm/lm.h index 1dbf6d355..950ca6ad1 100644 --- a/src/modules/lm/lm.h +++ b/src/modules/lm/lm.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_LM_MODULE_NAME "LM" diff --git a/src/modules/lm/option.h b/src/modules/lm/option.h index 4255382ff..21a4ad8b7 100644 --- a/src/modules/lm/option.h +++ b/src/modules/lm/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFLMOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFLMOptions; + +static_assert(sizeof(FFLMOptions) <= FF_OPTION_MAX_SIZE, "FFLMOptions size exceeds maximum allowed size"); diff --git a/src/modules/loadavg/loadavg.c b/src/modules/loadavg/loadavg.c index 1b7cd4e44..a6fc70eb5 100644 --- a/src/modules/loadavg/loadavg.c +++ b/src/modules/loadavg/loadavg.c @@ -150,6 +150,20 @@ void ffGenerateLoadavgJsonResult(FF_MAYBE_UNUSED FFLoadavgOptions* options, yyjs yyjson_mut_arr_add_real(doc, arr, result[i]); } +void ffInitLoadavgOptions(FFLoadavgOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; + options->ndigits = 2; + options->compact = true; +} + +void ffDestroyLoadavgOptions(FFLoadavgOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffLoadavgModuleInfo = { .name = FF_LOADAVG_MODULE_NAME, .description = "Print system load averages", @@ -165,18 +179,3 @@ FFModuleBaseInfo ffLoadavgModuleInfo = { {"Load average over 15min", "loadavg3"}, })) }; - -void ffInitLoadavgOptions(FFLoadavgOptions* options) -{ - options->moduleInfo = ffLoadavgModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; - options->ndigits = 2; - options->compact = true; -} - -void ffDestroyLoadavgOptions(FFLoadavgOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/loadavg/loadavg.h b/src/modules/loadavg/loadavg.h index b1cecb6f0..8ee495bf8 100644 --- a/src/modules/loadavg/loadavg.h +++ b/src/modules/loadavg/loadavg.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_LOADAVG_MODULE_NAME "Loadavg" diff --git a/src/modules/loadavg/option.h b/src/modules/loadavg/option.h index aee5f435c..947b310db 100644 --- a/src/modules/loadavg/option.h +++ b/src/modules/loadavg/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFLoadavgOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; uint8_t ndigits; bool compact; } FFLoadavgOptions; + +static_assert(sizeof(FFLoadavgOptions) <= FF_OPTION_MAX_SIZE, "FFLoadavgOptions size exceeds maximum allowed size"); diff --git a/src/modules/locale/locale.c b/src/modules/locale/locale.c index cb8a4496d..40b1dcfba 100644 --- a/src/modules/locale/locale.c +++ b/src/modules/locale/locale.c @@ -63,6 +63,16 @@ void ffGenerateLocaleJsonResult(FF_MAYBE_UNUSED FFLocaleOptions* options, yyjson yyjson_mut_obj_add_strbuf(doc, module, "result", &locale); } +void ffInitLocaleOptions(FFLocaleOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyLocaleOptions(FFLocaleOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffLocaleModuleInfo = { .name = FF_LOCALE_MODULE_NAME, .description = "Print system locale name", @@ -76,14 +86,3 @@ FFModuleBaseInfo ffLocaleModuleInfo = { {"Locale code", "result"}, })) }; - -void ffInitLocaleOptions(FFLocaleOptions* options) -{ - options->moduleInfo = ffLocaleModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyLocaleOptions(FFLocaleOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/locale/locale.h b/src/modules/locale/locale.h index 3420a954c..a56a612ae 100644 --- a/src/modules/locale/locale.h +++ b/src/modules/locale/locale.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_LOCALE_MODULE_NAME "Locale" diff --git a/src/modules/locale/option.h b/src/modules/locale/option.h index c6ba96720..236d61ee3 100644 --- a/src/modules/locale/option.h +++ b/src/modules/locale/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFLocaleOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFLocaleOptions; + +static_assert(sizeof(FFLocaleOptions) <= FF_OPTION_MAX_SIZE, "FFLocaleOptions size exceeds maximum allowed size"); diff --git a/src/modules/localip/localip.c b/src/modules/localip/localip.c index 1feb6b6bc..d2e754e68 100644 --- a/src/modules/localip/localip.c +++ b/src/modules/localip/localip.c @@ -385,6 +385,24 @@ void ffGenerateLocalIpJsonResult(FF_MAYBE_UNUSED FFLocalIpOptions* options, yyjs } } +void ffInitLocalIpOptions(FFLocalIpOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰩟"); + + options->showType = FF_LOCALIP_TYPE_IPV4_BIT | FF_LOCALIP_TYPE_PREFIX_LEN_BIT + #if !__ANDROID__ /*Permission denied*/ + | FF_LOCALIP_TYPE_DEFAULT_ROUTE_ONLY_BIT + #endif + ; + ffStrbufInit(&options->namePrefix); +} + +void ffDestroyLocalIpOptions(FFLocalIpOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->namePrefix); +} + FFModuleBaseInfo ffLocalIPModuleInfo = { .name = FF_LOCALIP_MODULE_NAME, .description = "List local IP addresses (v4 or v6), MAC addresses, etc", @@ -405,22 +423,3 @@ FFModuleBaseInfo ffLocalIPModuleInfo = { {"Interface flags", "flags"}, })) }; - -void ffInitLocalIpOptions(FFLocalIpOptions* options) -{ - options->moduleInfo = ffLocalIPModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰩟"); - - options->showType = FF_LOCALIP_TYPE_IPV4_BIT | FF_LOCALIP_TYPE_PREFIX_LEN_BIT - #if !__ANDROID__ /*Permission denied*/ - | FF_LOCALIP_TYPE_DEFAULT_ROUTE_ONLY_BIT - #endif - ; - ffStrbufInit(&options->namePrefix); -} - -void ffDestroyLocalIpOptions(FFLocalIpOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->namePrefix); -} diff --git a/src/modules/localip/localip.h b/src/modules/localip/localip.h index 9a2e3876e..616469975 100644 --- a/src/modules/localip/localip.h +++ b/src/modules/localip/localip.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_LOCALIP_MODULE_NAME "LocalIp" diff --git a/src/modules/localip/option.h b/src/modules/localip/option.h index c95b77d8b..b809fe2fa 100644 --- a/src/modules/localip/option.h +++ b/src/modules/localip/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFLocalIpType @@ -25,9 +23,10 @@ static_assert(sizeof(FFLocalIpType) == sizeof(uint16_t), ""); typedef struct FFLocalIpOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFLocalIpType showType; FFstrbuf namePrefix; } FFLocalIpOptions; + +static_assert(sizeof(FFLocalIpOptions) <= FF_OPTION_MAX_SIZE, "FFLocalIpOptions size exceeds maximum allowed size"); diff --git a/src/modules/media/media.c b/src/modules/media/media.c index 290f6ec38..b14289cce 100644 --- a/src/modules/media/media.c +++ b/src/modules/media/media.c @@ -151,6 +151,16 @@ void ffGenerateMediaJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_m yyjson_mut_obj_add_strbuf(doc, player, "url", &media->url); } +void ffInitMediaOptions(FFMediaOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyMediaOptions(FFMediaOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffMediaModuleInfo = { .name = FF_MEDIA_MODULE_NAME, .description = "Print playing song name", @@ -168,14 +178,3 @@ FFModuleBaseInfo ffMediaModuleInfo = { {"Status", "status"}, })) }; - -void ffInitMediaOptions(FFMediaOptions* options) -{ - options->moduleInfo = ffMediaModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyMediaOptions(FFMediaOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/media/media.h b/src/modules/media/media.h index 3ddbbfdf7..af18735b9 100644 --- a/src/modules/media/media.h +++ b/src/modules/media/media.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_MEDIA_MODULE_NAME "Media" diff --git a/src/modules/media/option.h b/src/modules/media/option.h index cb57b8b6e..e90ee854f 100644 --- a/src/modules/media/option.h +++ b/src/modules/media/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFMediaOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFMediaOptions; + +static_assert(sizeof(FFMediaOptions) <= FF_OPTION_MAX_SIZE, "FFMediaOptions size exceeds maximum allowed size"); diff --git a/src/modules/memory/memory.c b/src/modules/memory/memory.c index fa1fbbc9f..6b7b09e96 100644 --- a/src/modules/memory/memory.c +++ b/src/modules/memory/memory.c @@ -113,6 +113,17 @@ void ffGenerateMemoryJsonResult(FF_MAYBE_UNUSED FFMemoryOptions* options, yyjson yyjson_mut_obj_add_uint(doc, obj, "used", storage.bytesUsed); } +void ffInitMemoryOptions(FFMemoryOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; +} + +void ffDestroyMemoryOptions(FFMemoryOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffMemoryModuleInfo = { .name = FF_MEMORY_MODULE_NAME, .description = "Print system memory usage info", @@ -129,15 +140,3 @@ FFModuleBaseInfo ffMemoryModuleInfo = { {"Percentage used (bar)", "percentage-bar"}, })) }; - -void ffInitMemoryOptions(FFMemoryOptions* options) -{ - options->moduleInfo = ffMemoryModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; -} - -void ffDestroyMemoryOptions(FFMemoryOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/memory/memory.h b/src/modules/memory/memory.h index 69dc76402..5c43b4f75 100644 --- a/src/modules/memory/memory.h +++ b/src/modules/memory/memory.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_MEMORY_MODULE_NAME "Memory" diff --git a/src/modules/memory/option.h b/src/modules/memory/option.h index 76fc9fd06..243847f5f 100644 --- a/src/modules/memory/option.h +++ b/src/modules/memory/option.h @@ -1,14 +1,13 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFMemoryOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; } FFMemoryOptions; + +static_assert(sizeof(FFMemoryOptions) <= FF_OPTION_MAX_SIZE, "FFMemoryOptions size exceeds maximum allowed size"); diff --git a/src/modules/modules.h b/src/modules/modules.h index e6594f030..adc128f94 100644 --- a/src/modules/modules.h +++ b/src/modules/modules.h @@ -1,7 +1,5 @@ #pragma once -// For "fastfetch.c" and "flashfetch.c" - #include "modules/battery/battery.h" #include "modules/bios/bios.h" #include "modules/bluetooth/bluetooth.h" diff --git a/src/modules/monitor/monitor.c b/src/modules/monitor/monitor.c index 36ddf337a..dfc6de0e9 100644 --- a/src/modules/monitor/monitor.c +++ b/src/modules/monitor/monitor.c @@ -112,6 +112,16 @@ void ffGenerateMonitorJsonResult(FF_MAYBE_UNUSED FFMonitorOptions* options, yyjs yyjson_mut_obj_add_str(doc, module, "error", "Monitor module is an alias of Display module"); } +void ffInitMonitorOptions(FFMonitorOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰹑"); +} + +void ffDestroyMonitorOptions(FFMonitorOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffMonitorModuleInfo = { .name = FF_MONITOR_MODULE_NAME, .description = "Alias of Display module", @@ -136,14 +146,3 @@ FFModuleBaseInfo ffMonitorModuleInfo = { {"True if the display is HDR compatible", "hdr-compatible"}, })) }; - -void ffInitMonitorOptions(FFMonitorOptions* options) -{ - options->moduleInfo = ffMonitorModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰹑"); -} - -void ffDestroyMonitorOptions(FFMonitorOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/monitor/monitor.h b/src/modules/monitor/monitor.h index fc0f45c8d..17320b22e 100644 --- a/src/modules/monitor/monitor.h +++ b/src/modules/monitor/monitor.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_MONITOR_MODULE_NAME "Monitor" diff --git a/src/modules/monitor/option.h b/src/modules/monitor/option.h index b474ae7b2..07905ecba 100644 --- a/src/modules/monitor/option.h +++ b/src/modules/monitor/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFMonitorOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFMonitorOptions; + +static_assert(sizeof(FFMonitorOptions) <= FF_OPTION_MAX_SIZE, "FFMonitorOptions size exceeds maximum allowed size"); diff --git a/src/modules/mouse/mouse.c b/src/modules/mouse/mouse.c index e84db7ff1..d1d83fe11 100644 --- a/src/modules/mouse/mouse.c +++ b/src/modules/mouse/mouse.c @@ -96,6 +96,16 @@ void ffGenerateMouseJsonResult(FF_MAYBE_UNUSED FFMouseOptions* options, yyjson_m } } +void ffInitMouseOptions(FFMouseOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰍽"); +} + +void ffDestroyMouseOptions(FFMouseOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffMouseModuleInfo = { .name = FF_MOUSE_MODULE_NAME, .description = "List connected mouses", @@ -110,14 +120,3 @@ FFModuleBaseInfo ffMouseModuleInfo = { {"Mouse serial number", "serial"}, })) }; - -void ffInitMouseOptions(FFMouseOptions* options) -{ - options->moduleInfo = ffMouseModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰍽"); -} - -void ffDestroyMouseOptions(FFMouseOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/mouse/mouse.h b/src/modules/mouse/mouse.h index fbcef98e6..796c998e9 100644 --- a/src/modules/mouse/mouse.h +++ b/src/modules/mouse/mouse.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_MOUSE_MODULE_NAME "Mouse" diff --git a/src/modules/mouse/option.h b/src/modules/mouse/option.h index db9ea1866..470104d3f 100644 --- a/src/modules/mouse/option.h +++ b/src/modules/mouse/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFMouseOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFMouseOptions; + +static_assert(sizeof(FFMouseOptions) <= FF_OPTION_MAX_SIZE, "FFMouseOptions size exceeds maximum allowed size"); diff --git a/src/modules/netio/netio.c b/src/modules/netio/netio.c index 7e648853b..2595fa013 100644 --- a/src/modules/netio/netio.c +++ b/src/modules/netio/netio.c @@ -190,6 +190,28 @@ void ffGenerateNetIOJsonResult(FFNetIOOptions* options, yyjson_mut_doc* doc, yyj } } +void ffInitNetIOOptions(FFNetIOOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰾆"); + + ffStrbufInit(&options->namePrefix); + options->defaultRouteOnly = + #if __ANDROID__ + false + #else + true + #endif + ; + options->detectTotal = false; + options->waitTime = 1000; +} + +void ffDestroyNetIOOptions(FFNetIOOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->namePrefix); +} + FFModuleBaseInfo ffNetIOModuleInfo = { .name = FF_NETIO_MODULE_NAME, .description = "Print network I/O throughput", @@ -214,26 +236,3 @@ FFModuleBaseInfo ffNetIOModuleInfo = { {"Number of packets dropped when sending [per second]", "tx-drops"}, })) }; - -void ffInitNetIOOptions(FFNetIOOptions* options) -{ - options->moduleInfo = ffNetIOModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰾆"); - - ffStrbufInit(&options->namePrefix); - options->defaultRouteOnly = - #if __ANDROID__ - false - #else - true - #endif - ; - options->detectTotal = false; - options->waitTime = 1000; -} - -void ffDestroyNetIOOptions(FFNetIOOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->namePrefix); -} diff --git a/src/modules/netio/netio.h b/src/modules/netio/netio.h index 8b119cf63..b5468347e 100644 --- a/src/modules/netio/netio.h +++ b/src/modules/netio/netio.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_NETIO_MODULE_NAME "NetIO" diff --git a/src/modules/netio/option.h b/src/modules/netio/option.h index 7709b21e1..61ffa37d5 100644 --- a/src/modules/netio/option.h +++ b/src/modules/netio/option.h @@ -1,12 +1,9 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFNetIOOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf namePrefix; @@ -14,3 +11,5 @@ typedef struct FFNetIOOptions bool defaultRouteOnly; bool detectTotal; } FFNetIOOptions; + +static_assert(sizeof(FFNetIOOptions) <= FF_OPTION_MAX_SIZE, "FFNetIOOptions size exceeds maximum allowed size"); diff --git a/src/modules/opencl/opencl.c b/src/modules/opencl/opencl.c index 341f04e5c..9bfb23976 100644 --- a/src/modules/opencl/opencl.c +++ b/src/modules/opencl/opencl.c @@ -114,6 +114,16 @@ void ffGenerateOpenCLJsonResult(FF_MAYBE_UNUSED FFOpenCLOptions* options, yyjson } } +void ffInitOpenCLOptions(FFOpenCLOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyOpenCLOptions(FFOpenCLOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffOpenCLModuleInfo = { .name = FF_OPENCL_MODULE_NAME, .description = "Print highest OpenCL version supported by the GPU", @@ -129,14 +139,3 @@ FFModuleBaseInfo ffOpenCLModuleInfo = { {"Platform vendor", "vendor"}, })) }; - -void ffInitOpenCLOptions(FFOpenCLOptions* options) -{ - options->moduleInfo = ffOpenCLModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyOpenCLOptions(FFOpenCLOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/opencl/opencl.h b/src/modules/opencl/opencl.h index a089821d7..bf47c6fbe 100644 --- a/src/modules/opencl/opencl.h +++ b/src/modules/opencl/opencl.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_OPENCL_MODULE_NAME "OpenCL" diff --git a/src/modules/opencl/option.h b/src/modules/opencl/option.h index 048c9b266..2fd7dff26 100644 --- a/src/modules/opencl/option.h +++ b/src/modules/opencl/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFOpenCLOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFOpenCLOptions; + +static_assert(sizeof(FFOpenCLOptions) <= FF_OPTION_MAX_SIZE, "FFOpenCLOptions size exceeds maximum allowed size"); diff --git a/src/modules/opengl/opengl.c b/src/modules/opengl/opengl.c index d8ee5e5b6..241da9902 100644 --- a/src/modules/opengl/opengl.c +++ b/src/modules/opengl/opengl.c @@ -127,6 +127,18 @@ void ffGenerateOpenGLJsonResult(FF_MAYBE_UNUSED FFOpenGLOptions* options, yyjson ffStrbufDestroy(&result.library); } +void ffInitOpenGLOptions(FFOpenGLOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->library = FF_OPENGL_LIBRARY_AUTO; +} + +void ffDestroyOpenGLOptions(FFOpenGLOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffOpenGLModuleInfo = { .name = FF_OPENGL_MODULE_NAME, .description = "Print highest OpenGL version supported by the GPU", @@ -144,16 +156,3 @@ FFModuleBaseInfo ffOpenGLModuleInfo = { {"OpenGL library used", "library"}, })) }; - -void ffInitOpenGLOptions(FFOpenGLOptions* options) -{ - options->moduleInfo = ffOpenGLModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->library = FF_OPENGL_LIBRARY_AUTO; -} - -void ffDestroyOpenGLOptions(FFOpenGLOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/opengl/opengl.h b/src/modules/opengl/opengl.h index 2a8e19e52..f60938d1e 100644 --- a/src/modules/opengl/opengl.h +++ b/src/modules/opengl/opengl.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_OPENGL_MODULE_NAME "OpenGL" diff --git a/src/modules/opengl/option.h b/src/modules/opengl/option.h index bdd4e446a..cc4b6ef46 100644 --- a/src/modules/opengl/option.h +++ b/src/modules/opengl/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFOpenGLLibrary @@ -13,8 +11,9 @@ typedef enum __attribute__((__packed__)) FFOpenGLLibrary typedef struct FFOpenGLOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFOpenGLLibrary library; } FFOpenGLOptions; + +static_assert(sizeof(FFOpenGLOptions) <= FF_OPTION_MAX_SIZE, "FFOpenGLOptions size exceeds maximum allowed size"); diff --git a/src/modules/os/option.h b/src/modules/os/option.h index ae098a53a..c7142b237 100644 --- a/src/modules/os/option.h +++ b/src/modules/os/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFOSOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFOSOptions; + +static_assert(sizeof(FFOSOptions) <= FF_OPTION_MAX_SIZE, "FFOSOptions size exceeds maximum allowed size"); diff --git a/src/modules/os/os.c b/src/modules/os/os.c index 969fddd26..2a363f399 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -159,34 +159,8 @@ void ffGenerateOSJsonResult(FF_MAYBE_UNUSED FFOSOptions* options, yyjson_mut_doc yyjson_mut_obj_add_strbuf(doc, obj, "versionID", &os->versionID); } -FFModuleBaseInfo ffOSModuleInfo = { - .name = FF_OS_MODULE_NAME, - .description = "Print operating system name and version", - .initOptions = (void*) ffInitOSOptions, - .destroyOptions = (void*) ffDestroyOSOptions, - .parseJsonObject = (void*) ffParseOSJsonObject, - .printModule = (void*) ffPrintOS, - .generateJsonResult = (void*) ffGenerateOSJsonResult, - .generateJsonConfig = (void*) ffGenerateOSJsonConfig, - .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { - {"Name of the kernel", "sysname"}, - {"Name of the OS", "name"}, - {"Pretty name of the OS, if available", "pretty-name"}, - {"ID of the OS", "id"}, - {"ID like of the OS", "id-like"}, - {"Variant of the OS", "variant"}, - {"Variant ID of the OS", "variant-id"}, - {"Version of the OS", "version"}, - {"Version ID of the OS", "version-id"}, - {"Version codename of the OS", "codename"}, - {"Build ID of the OS", "build-id"}, - {"Architecture of the OS", "arch"}, - })) -}; - void ffInitOSOptions(FFOSOptions* options) { - options->moduleInfo = ffOSModuleInfo; ffOptionInitModuleArg(&options->moduleArgs, #ifdef _WIN32 "" @@ -214,3 +188,28 @@ void ffDestroyOSOptions(FFOSOptions* options) { ffOptionDestroyModuleArg(&options->moduleArgs); } + +FFModuleBaseInfo ffOSModuleInfo = { + .name = FF_OS_MODULE_NAME, + .description = "Print operating system name and version", + .initOptions = (void*) ffInitOSOptions, + .destroyOptions = (void*) ffDestroyOSOptions, + .parseJsonObject = (void*) ffParseOSJsonObject, + .printModule = (void*) ffPrintOS, + .generateJsonResult = (void*) ffGenerateOSJsonResult, + .generateJsonConfig = (void*) ffGenerateOSJsonConfig, + .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { + {"Name of the kernel", "sysname"}, + {"Name of the OS", "name"}, + {"Pretty name of the OS, if available", "pretty-name"}, + {"ID of the OS", "id"}, + {"ID like of the OS", "id-like"}, + {"Variant of the OS", "variant"}, + {"Variant ID of the OS", "variant-id"}, + {"Version of the OS", "version"}, + {"Version ID of the OS", "version-id"}, + {"Version codename of the OS", "codename"}, + {"Build ID of the OS", "build-id"}, + {"Architecture of the OS", "arch"}, + })) +}; diff --git a/src/modules/os/os.h b/src/modules/os/os.h index 35deb41af..bf6ebf9d6 100644 --- a/src/modules/os/os.h +++ b/src/modules/os/os.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_OS_MODULE_NAME "OS" diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index 5709578d4..240ca6666 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef enum __attribute__((__packed__)) FFPackagesFlags @@ -44,9 +42,10 @@ static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), ""); typedef struct FFPackagesOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPackagesFlags disabled; bool combined; } FFPackagesOptions; + +static_assert(sizeof(FFPackagesOptions) <= FF_OPTION_MAX_SIZE, "FFPackagesOptions size exceeds maximum allowed size"); diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index a3bb951d0..0ca1f2cea 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -431,6 +431,19 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy yyjson_mut_obj_add_strbuf(doc, obj, "pacmanBranch", &counts.pacmanBranch); } +void ffInitPackagesOptions(FFPackagesOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰏖"); + + options->disabled = FF_PACKAGES_DISABLE_LIST; + options->combined = false; +} + +void ffDestroyPackagesOptions(FFPackagesOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffPackagesModuleInfo = { .name = FF_PACKAGES_MODULE_NAME, .description = "List installed package managers and count of installed packages", @@ -490,17 +503,3 @@ FFModuleBaseInfo ffPackagesModuleInfo = { {"Total number of all hpkg packages", "hpkg-all"}, })) }; - -void ffInitPackagesOptions(FFPackagesOptions* options) -{ - options->moduleInfo = ffPackagesModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰏖"); - - options->disabled = FF_PACKAGES_DISABLE_LIST; - options->combined = false; -} - -void ffDestroyPackagesOptions(FFPackagesOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/packages/packages.h b/src/modules/packages/packages.h index 7d2b7dd40..8b904d48d 100644 --- a/src/modules/packages/packages.h +++ b/src/modules/packages/packages.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PACKAGES_MODULE_NAME "Packages" diff --git a/src/modules/physicaldisk/option.h b/src/modules/physicaldisk/option.h index fbd2dc685..3951f0610 100644 --- a/src/modules/physicaldisk/option.h +++ b/src/modules/physicaldisk/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFPhysicalDiskOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf namePrefix; bool temp; FFColorRangeConfig tempConfig; } FFPhysicalDiskOptions; + +static_assert(sizeof(FFPhysicalDiskOptions) <= FF_OPTION_MAX_SIZE, "FFPhysicalDiskOptions size exceeds maximum allowed size"); diff --git a/src/modules/physicaldisk/physicaldisk.c b/src/modules/physicaldisk/physicaldisk.c index 4c971ac0c..917816c61 100644 --- a/src/modules/physicaldisk/physicaldisk.c +++ b/src/modules/physicaldisk/physicaldisk.c @@ -226,6 +226,21 @@ void ffGeneratePhysicalDiskJsonResult(FFPhysicalDiskOptions* options, yyjson_mut } } +void ffInitPhysicalDiskOptions(FFPhysicalDiskOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰋊"); + + ffStrbufInit(&options->namePrefix); + options->temp = false; + options->tempConfig = (FFColorRangeConfig) { 50, 70 }; +} + +void ffDestroyPhysicalDiskOptions(FFPhysicalDiskOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->namePrefix); +} + FFModuleBaseInfo ffPhysicalDiskModuleInfo = { .name = FF_PHYSICALDISK_MODULE_NAME, .description = "Print physical disk information", @@ -248,19 +263,3 @@ FFModuleBaseInfo ffPhysicalDiskModuleInfo = { {"Device temperature (formatted)", "temperature"}, })) }; - -void ffInitPhysicalDiskOptions(FFPhysicalDiskOptions* options) -{ - options->moduleInfo = ffPhysicalDiskModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰋊"); - - ffStrbufInit(&options->namePrefix); - options->temp = false; - options->tempConfig = (FFColorRangeConfig) { 50, 70 }; -} - -void ffDestroyPhysicalDiskOptions(FFPhysicalDiskOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->namePrefix); -} diff --git a/src/modules/physicaldisk/physicaldisk.h b/src/modules/physicaldisk/physicaldisk.h index 2ce2d05e6..e73b3f358 100644 --- a/src/modules/physicaldisk/physicaldisk.h +++ b/src/modules/physicaldisk/physicaldisk.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PHYSICALDISK_MODULE_NAME "PhysicalDisk" diff --git a/src/modules/physicalmemory/option.h b/src/modules/physicalmemory/option.h index 96ebccc57..154354b4a 100644 --- a/src/modules/physicalmemory/option.h +++ b/src/modules/physicalmemory/option.h @@ -1,12 +1,11 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFPhysicalMemoryOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFPhysicalMemoryOptions; + +static_assert(sizeof(FFPhysicalMemoryOptions) <= FF_OPTION_MAX_SIZE, "FFPhysicalMemoryOptions size exceeds maximum allowed size"); diff --git a/src/modules/physicalmemory/physicalmemory.c b/src/modules/physicalmemory/physicalmemory.c index 7ab325050..81a05b47c 100644 --- a/src/modules/physicalmemory/physicalmemory.c +++ b/src/modules/physicalmemory/physicalmemory.c @@ -139,6 +139,16 @@ void ffGeneratePhysicalMemoryJsonResult(FF_MAYBE_UNUSED FFPhysicalMemoryOptions* } } +void ffInitPhysicalMemoryOptions(FFPhysicalMemoryOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰑭"); +} + +void ffDestroyPhysicalMemoryOptions(FFPhysicalMemoryOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffPhysicalMemoryModuleInfo = { .name = FF_PHYSICALMEMORY_MODULE_NAME, .description = "Print system physical memory devices", @@ -162,14 +172,3 @@ FFModuleBaseInfo ffPhysicalMemoryModuleInfo = { {"True if ECC enabled", "is-ecc-enabled"}, })) }; - -void ffInitPhysicalMemoryOptions(FFPhysicalMemoryOptions* options) -{ - options->moduleInfo = ffPhysicalMemoryModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰑭"); -} - -void ffDestroyPhysicalMemoryOptions(FFPhysicalMemoryOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/physicalmemory/physicalmemory.h b/src/modules/physicalmemory/physicalmemory.h index 51d25206e..7df2b6c94 100644 --- a/src/modules/physicalmemory/physicalmemory.h +++ b/src/modules/physicalmemory/physicalmemory.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PHYSICALMEMORY_MODULE_NAME "PhysicalMemory" diff --git a/src/modules/player/option.h b/src/modules/player/option.h index 1d34797fb..9d55821fd 100644 --- a/src/modules/player/option.h +++ b/src/modules/player/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFPlayerOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFPlayerOptions; + +static_assert(sizeof(FFPlayerOptions) <= FF_OPTION_MAX_SIZE, "FFPlayerOptions size exceeds maximum allowed size"); diff --git a/src/modules/player/player.c b/src/modules/player/player.c index 9811922a9..72af48027 100644 --- a/src/modules/player/player.c +++ b/src/modules/player/player.c @@ -107,6 +107,16 @@ void ffGeneratePlayerJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_ yyjson_mut_obj_add_str(doc, module, "error", "Player module is an alias of Media module"); } +void ffInitPlayerOptions(FFPlayerOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰥠"); +} + +void ffDestroyPlayerOptions(FFPlayerOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffPlayerModuleInfo = { .name = FF_PLAYER_MODULE_NAME, .description = "Print music player name", @@ -123,14 +133,3 @@ FFModuleBaseInfo ffPlayerModuleInfo = { {"URL name", "url"}, })) }; - -void ffInitPlayerOptions(FFPlayerOptions* options) -{ - options->moduleInfo = ffPlayerModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰥠"); -} - -void ffDestroyPlayerOptions(FFPlayerOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/player/player.h b/src/modules/player/player.h index f70380c6d..b99a6da6b 100644 --- a/src/modules/player/player.h +++ b/src/modules/player/player.h @@ -1,7 +1,7 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PLAYER_MODULE_NAME "Player" diff --git a/src/modules/poweradapter/option.h b/src/modules/poweradapter/option.h index 02a72eaf7..303bbba73 100644 --- a/src/modules/poweradapter/option.h +++ b/src/modules/poweradapter/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFPowerAdapterOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFPowerAdapterOptions; + +static_assert(sizeof(FFPowerAdapterOptions) <= FF_OPTION_MAX_SIZE, "FFPowerAdapterOptions size exceeds maximum allowed size"); diff --git a/src/modules/poweradapter/poweradapter.c b/src/modules/poweradapter/poweradapter.c index 0f57862c6..0ed4813a3 100644 --- a/src/modules/poweradapter/poweradapter.c +++ b/src/modules/poweradapter/poweradapter.c @@ -111,6 +111,16 @@ void ffGeneratePowerAdapterJsonResult(FF_MAYBE_UNUSED FFPowerAdapterOptions* opt } } +void ffInitPowerAdapterOptions(FFPowerAdapterOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰚥"); +} + +void ffDestroyPowerAdapterOptions(FFPowerAdapterOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffPowerAdapterModuleInfo = { .name = FF_POWERADAPTER_MODULE_NAME, .description = "Print power adapter name and charging watts", @@ -129,14 +139,3 @@ FFModuleBaseInfo ffPowerAdapterModuleInfo = { {"Power adapter serial number", "serial"}, })) }; - -void ffInitPowerAdapterOptions(FFPowerAdapterOptions* options) -{ - options->moduleInfo = ffPowerAdapterModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰚥"); -} - -void ffDestroyPowerAdapterOptions(FFPowerAdapterOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/poweradapter/poweradapter.h b/src/modules/poweradapter/poweradapter.h index 03d2c8946..165060a5e 100644 --- a/src/modules/poweradapter/poweradapter.h +++ b/src/modules/poweradapter/poweradapter.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_POWERADAPTER_MODULE_NAME "PowerAdapter" diff --git a/src/modules/processes/option.h b/src/modules/processes/option.h index 6946ecad4..0b59f9df3 100644 --- a/src/modules/processes/option.h +++ b/src/modules/processes/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFProcessesOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFProcessesOptions; + +static_assert(sizeof(FFProcessesOptions) <= FF_OPTION_MAX_SIZE, "FFProcessesOptions size exceeds maximum allowed size"); diff --git a/src/modules/processes/processes.c b/src/modules/processes/processes.c index 05b6c3df5..4277e71a4 100644 --- a/src/modules/processes/processes.c +++ b/src/modules/processes/processes.c @@ -64,6 +64,16 @@ void ffGenerateProcessesJsonResult(FF_MAYBE_UNUSED FFProcessesOptions* options, yyjson_mut_obj_add_uint(doc, module, "result", result); } +void ffInitProcessesOptions(FFProcessesOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyProcessesOptions(FFProcessesOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffProcessesModuleInfo = { .name = FF_PROCESSES_MODULE_NAME, .description = "Print number of running processes", @@ -77,14 +87,3 @@ FFModuleBaseInfo ffProcessesModuleInfo = { {"Process count", "result"} })) }; - -void ffInitProcessesOptions(FFProcessesOptions* options) -{ - options->moduleInfo = ffProcessesModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyProcessesOptions(FFProcessesOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/processes/processes.h b/src/modules/processes/processes.h index a8e733001..d9f0ae3d8 100644 --- a/src/modules/processes/processes.h +++ b/src/modules/processes/processes.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PROCESSES_MODULE_NAME "Processes" diff --git a/src/modules/publicip/option.h b/src/modules/publicip/option.h index 427bab31a..e3118cb28 100644 --- a/src/modules/publicip/option.h +++ b/src/modules/publicip/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" -typedef struct FFPublicIpOptions +typedef struct FFPublicIPOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf url; uint32_t timeout; bool ipv6; -} FFPublicIpOptions; +} FFPublicIPOptions; + +static_assert(sizeof(FFPublicIPOptions) <= FF_OPTION_MAX_SIZE, "FFPublicIPOptions size exceeds maximum allowed size"); diff --git a/src/modules/publicip/publicip.c b/src/modules/publicip/publicip.c index 3a0f417f5..187a95a17 100644 --- a/src/modules/publicip/publicip.c +++ b/src/modules/publicip/publicip.c @@ -6,7 +6,7 @@ #define FF_PUBLICIP_DISPLAY_NAME "Public IP" -void ffPrintPublicIp(FFPublicIpOptions* options) +void ffPrintPublicIp(FFPublicIPOptions* options) { FFPublicIpResult result; ffStrbufInit(&result.ip); @@ -39,7 +39,7 @@ void ffPrintPublicIp(FFPublicIpOptions* options) ffStrbufDestroy(&result.location); } -void ffParsePublicIpJsonObject(FFPublicIpOptions* options, yyjson_val* module) +void ffParsePublicIpJsonObject(FFPublicIPOptions* options, yyjson_val* module) { yyjson_val *key, *val; size_t idx, max; @@ -70,9 +70,9 @@ void ffParsePublicIpJsonObject(FFPublicIpOptions* options, yyjson_val* module) } } -void ffGeneratePublicIpJsonConfig(FFPublicIpOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGeneratePublicIpJsonConfig(FFPublicIPOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { - __attribute__((__cleanup__(ffDestroyPublicIpOptions))) FFPublicIpOptions defaultOptions; + __attribute__((__cleanup__(ffDestroyPublicIpOptions))) FFPublicIPOptions defaultOptions; ffInitPublicIpOptions(&defaultOptions); ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); @@ -87,7 +87,7 @@ void ffGeneratePublicIpJsonConfig(FFPublicIpOptions* options, yyjson_mut_doc* do yyjson_mut_obj_add_bool(doc, module, "ipv6", options->ipv6); } -void ffGeneratePublicIpJsonResult(FFPublicIpOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGeneratePublicIpJsonResult(FFPublicIPOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFPublicIpResult result; ffStrbufInit(&result.ip); @@ -108,6 +108,22 @@ void ffGeneratePublicIpJsonResult(FFPublicIpOptions* options, yyjson_mut_doc* do ffStrbufDestroy(&result.location); } +void ffInitPublicIpOptions(FFPublicIPOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰩠"); + + ffStrbufInit(&options->url); + options->timeout = 0; + options->ipv6 = false; +} + +void ffDestroyPublicIpOptions(FFPublicIPOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + + ffStrbufDestroy(&options->url); +} + FFModuleBaseInfo ffPublicIPModuleInfo = { .name = FF_PUBLICIP_MODULE_NAME, .description = "Print your public IP address, etc", @@ -122,20 +138,3 @@ FFModuleBaseInfo ffPublicIPModuleInfo = { {"Location", "location"}, })) }; - -void ffInitPublicIpOptions(FFPublicIpOptions* options) -{ - options->moduleInfo = ffPublicIPModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰩠"); - - ffStrbufInit(&options->url); - options->timeout = 0; - options->ipv6 = false; -} - -void ffDestroyPublicIpOptions(FFPublicIpOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - - ffStrbufDestroy(&options->url); -} diff --git a/src/modules/publicip/publicip.h b/src/modules/publicip/publicip.h index 0d178e520..5fd70ab4f 100644 --- a/src/modules/publicip/publicip.h +++ b/src/modules/publicip/publicip.h @@ -1,13 +1,13 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_PUBLICIP_MODULE_NAME "PublicIp" -void ffPreparePublicIp(FFPublicIpOptions* options); +void ffPreparePublicIp(FFPublicIPOptions* options); -void ffPrintPublicIp(FFPublicIpOptions* options); -void ffInitPublicIpOptions(FFPublicIpOptions* options); -void ffDestroyPublicIpOptions(FFPublicIpOptions* options); +void ffPrintPublicIp(FFPublicIPOptions* options); +void ffInitPublicIpOptions(FFPublicIPOptions* options); +void ffDestroyPublicIpOptions(FFPublicIPOptions* options); extern FFModuleBaseInfo ffPublicIPModuleInfo; diff --git a/src/modules/separator/option.h b/src/modules/separator/option.h index 5f435e7f0..92274c806 100644 --- a/src/modules/separator/option.h +++ b/src/modules/separator/option.h @@ -1,14 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFSeparatorOptions { - FFModuleBaseInfo moduleInfo; - FFstrbuf string; FFstrbuf outputColor; uint32_t length; } FFSeparatorOptions; + +static_assert(sizeof(FFSeparatorOptions) <= FF_OPTION_MAX_SIZE, "FFSeparatorOptions size exceeds maximum allowed size"); diff --git a/src/modules/separator/separator.c b/src/modules/separator/separator.c index a8ddd1dbb..3786949ad 100644 --- a/src/modules/separator/separator.c +++ b/src/modules/separator/separator.c @@ -56,7 +56,7 @@ void ffPrintSeparator(FFSeparatorOptions* options) { setlocale(LC_CTYPE, ""); mbstate_t state = {}; - bool fqdn = instance.config.modules.title.fqdn; + bool fqdn = true; // TODO: Make this configurable const FFPlatform* platform = &instance.state.platform; FF_AUTO_FREE wchar_t* wstr = malloc((max( @@ -154,19 +154,8 @@ void ffGenerateSeparatorJsonConfig(FFSeparatorOptions* options, yyjson_mut_doc* yyjson_mut_obj_add_strbuf(doc, module, "string", &options->string); } -FFModuleBaseInfo ffSeparatorModuleInfo = { - .name = FF_SEPARATOR_MODULE_NAME, - .description = "Print a separator line", - .initOptions = (void*) ffInitSeparatorOptions, - .destroyOptions = (void*) ffDestroySeparatorOptions, - .parseJsonObject = (void*) ffParseSeparatorJsonObject, - .printModule = (void*) ffPrintSeparator, - .generateJsonConfig = (void*) ffGenerateSeparatorJsonConfig, -}; - void ffInitSeparatorOptions(FFSeparatorOptions* options) { - options->moduleInfo = ffSeparatorModuleInfo; ffStrbufInitStatic(&options->string, "-"); ffStrbufInit(&options->outputColor); options->length = 0; @@ -176,3 +165,13 @@ void ffDestroySeparatorOptions(FFSeparatorOptions* options) { ffStrbufDestroy(&options->string); } + +FFModuleBaseInfo ffSeparatorModuleInfo = { + .name = FF_SEPARATOR_MODULE_NAME, + .description = "Print a separator line", + .initOptions = (void*) ffInitSeparatorOptions, + .destroyOptions = (void*) ffDestroySeparatorOptions, + .parseJsonObject = (void*) ffParseSeparatorJsonObject, + .printModule = (void*) ffPrintSeparator, + .generateJsonConfig = (void*) ffGenerateSeparatorJsonConfig, +}; diff --git a/src/modules/separator/separator.h b/src/modules/separator/separator.h index 804a76405..d23fc6c94 100644 --- a/src/modules/separator/separator.h +++ b/src/modules/separator/separator.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_SEPARATOR_MODULE_NAME "Separator" diff --git a/src/modules/shell/option.h b/src/modules/shell/option.h index b356cbac9..49ec83f51 100644 --- a/src/modules/shell/option.h +++ b/src/modules/shell/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFShellOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFShellOptions; + +static_assert(sizeof(FFShellOptions) <= FF_OPTION_MAX_SIZE, "FFShellOptions size exceeds maximum allowed size"); diff --git a/src/modules/shell/shell.c b/src/modules/shell/shell.c index 638db6a43..4ec724b62 100644 --- a/src/modules/shell/shell.c +++ b/src/modules/shell/shell.c @@ -88,6 +88,16 @@ void ffGenerateShellJsonResult(FF_MAYBE_UNUSED FFShellOptions* options, yyjson_m yyjson_mut_obj_add_null(doc, obj, "tty"); } +void ffInitShellOptions(FFShellOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyShellOptions(FFShellOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffShellModuleInfo = { .name = FF_SHELL_MODULE_NAME, .description = "Print current shell name and version", @@ -108,14 +118,3 @@ FFModuleBaseInfo ffShellModuleInfo = { {"Shell tty used", "tty"}, })) }; - -void ffInitShellOptions(FFShellOptions* options) -{ - options->moduleInfo = ffShellModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyShellOptions(FFShellOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/shell/shell.h b/src/modules/shell/shell.h index 12fd2107b..db39aa964 100644 --- a/src/modules/shell/shell.h +++ b/src/modules/shell/shell.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_SHELL_MODULE_NAME "Shell" diff --git a/src/modules/sound/option.h b/src/modules/sound/option.h index 7ec2c1614..0c9f0fd4f 100644 --- a/src/modules/sound/option.h +++ b/src/modules/sound/option.h @@ -1,7 +1,5 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" @@ -14,9 +12,10 @@ typedef enum __attribute__((__packed__)) FFSoundType typedef struct FFSoundOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFSoundType soundType; FFPercentageModuleConfig percent; } FFSoundOptions; + +static_assert(sizeof(FFSoundOptions) <= FF_OPTION_MAX_SIZE, "FFSoundOptions size exceeds maximum allowed size"); diff --git a/src/modules/sound/sound.c b/src/modules/sound/sound.c index 92adc266c..dcc9e75a9 100644 --- a/src/modules/sound/sound.c +++ b/src/modules/sound/sound.c @@ -206,6 +206,19 @@ void ffGenerateSoundJsonResult(FF_MAYBE_UNUSED FFSoundOptions* options, yyjson_m } } +void ffInitSoundOptions(FFSoundOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->soundType = FF_SOUND_TYPE_MAIN; + options->percent = (FFPercentageModuleConfig) { 80, 90, 0 }; +} + +void ffDestroySoundOptions(FFSoundOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffSoundModuleInfo = { .name = FF_SOUND_MODULE_NAME, .description = "Print sound devices, volume, etc", @@ -224,17 +237,3 @@ FFModuleBaseInfo ffSoundModuleInfo = { {"Platform API used", "platform-api"}, })) }; - -void ffInitSoundOptions(FFSoundOptions* options) -{ - options->moduleInfo = ffSoundModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->soundType = FF_SOUND_TYPE_MAIN; - options->percent = (FFPercentageModuleConfig) { 80, 90, 0 }; -} - -void ffDestroySoundOptions(FFSoundOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/sound/sound.h b/src/modules/sound/sound.h index fa4e808ab..80766b5ae 100644 --- a/src/modules/sound/sound.h +++ b/src/modules/sound/sound.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_SOUND_MODULE_NAME "Sound" diff --git a/src/modules/swap/option.h b/src/modules/swap/option.h index e0f44e02a..2d9691100 100644 --- a/src/modules/swap/option.h +++ b/src/modules/swap/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFSwapOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; bool separate; } FFSwapOptions; + +static_assert(sizeof(FFSwapOptions) <= FF_OPTION_MAX_SIZE, "FFSwapOptions size exceeds maximum allowed size"); diff --git a/src/modules/swap/swap.c b/src/modules/swap/swap.c index 15d7fe916..ea2d01d41 100644 --- a/src/modules/swap/swap.c +++ b/src/modules/swap/swap.c @@ -189,6 +189,18 @@ void ffGenerateSwapJsonResult(FF_MAYBE_UNUSED FFSwapOptions* options, yyjson_mut } } +void ffInitSwapOptions(FFSwapOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰓡"); + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; + options->separate = false; +} + +void ffDestroySwapOptions(FFSwapOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffSwapModuleInfo = { .name = FF_SWAP_MODULE_NAME, .description = "Print swap (paging file) space usage", @@ -206,16 +218,3 @@ FFModuleBaseInfo ffSwapModuleInfo = { {"Name", "name"}, })) }; - -void ffInitSwapOptions(FFSwapOptions* options) -{ - options->moduleInfo = ffSwapModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰓡"); - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; - options->separate = false; -} - -void ffDestroySwapOptions(FFSwapOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/swap/swap.h b/src/modules/swap/swap.h index c7c61dff1..7f31ecd01 100644 --- a/src/modules/swap/swap.h +++ b/src/modules/swap/swap.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_SWAP_MODULE_NAME "Swap" diff --git a/src/modules/terminal/option.h b/src/modules/terminal/option.h index e974c9979..49b005e03 100644 --- a/src/modules/terminal/option.h +++ b/src/modules/terminal/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTerminalOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFTerminalOptions; + +static_assert(sizeof(FFTerminalOptions) <= FF_OPTION_MAX_SIZE, "FFTerminalOptions size exceeds maximum allowed size"); diff --git a/src/modules/terminal/terminal.c b/src/modules/terminal/terminal.c index 1eb6dfba1..caede6747 100644 --- a/src/modules/terminal/terminal.c +++ b/src/modules/terminal/terminal.c @@ -81,6 +81,16 @@ void ffGenerateTerminalJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yy yyjson_mut_obj_add_strbuf(doc, obj, "tty", &result->tty); } +void ffInitTerminalOptions(FFTerminalOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyTerminalOptions(FFTerminalOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffTerminalModuleInfo = { .name = FF_TERMINAL_MODULE_NAME, .description = "Print current terminal name and version", @@ -101,14 +111,3 @@ FFModuleBaseInfo ffTerminalModuleInfo = { {"Terminal tty / pts used", "tty"}, })) }; - -void ffInitTerminalOptions(FFTerminalOptions* options) -{ - options->moduleInfo = ffTerminalModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyTerminalOptions(FFTerminalOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/terminal/terminal.h b/src/modules/terminal/terminal.h index f397867f4..df30bfadf 100644 --- a/src/modules/terminal/terminal.h +++ b/src/modules/terminal/terminal.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TERMINAL_MODULE_NAME "Terminal" diff --git a/src/modules/terminalfont/option.h b/src/modules/terminalfont/option.h index 64417bf0a..db652adce 100644 --- a/src/modules/terminalfont/option.h +++ b/src/modules/terminalfont/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTerminalFontOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFTerminalFontOptions; + +static_assert(sizeof(FFTerminalFontOptions) <= FF_OPTION_MAX_SIZE, "FFTerminalFontOptions size exceeds maximum allowed size"); diff --git a/src/modules/terminalfont/terminalfont.c b/src/modules/terminalfont/terminalfont.c index e6b1dfe1e..7356369ec 100644 --- a/src/modules/terminalfont/terminalfont.c +++ b/src/modules/terminalfont/terminalfont.c @@ -67,7 +67,7 @@ void ffGenerateTerminalFontJsonConfig(FFTerminalFontOptions* options, yyjson_mut ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); } -void ffGenerateTerminalFontJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGenerateTerminalFontJsonResult(FF_MAYBE_UNUSED FFTerminalFontOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFTerminalFontResult result; ffFontInit(&result.font); @@ -106,6 +106,16 @@ void ffGenerateTerminalFontJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options ffFontDestroy(&result.fallback); } +void ffInitTerminalFontOptions(FFTerminalFontOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyTerminalFontOptions(FFTerminalFontOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffTerminalFontModuleInfo = { .name = FF_TERMINALFONT_MODULE_NAME, .description = "Print font name and size used by current terminal", @@ -122,14 +132,3 @@ FFModuleBaseInfo ffTerminalFontModuleInfo = { {"Terminal font styles", "styles"}, })), }; - -void ffInitTerminalFontOptions(FFTerminalFontOptions* options) -{ - options->moduleInfo = ffTerminalFontModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyTerminalFontOptions(FFTerminalFontOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/terminalfont/terminalfont.h b/src/modules/terminalfont/terminalfont.h index ff12829e1..c1716912a 100644 --- a/src/modules/terminalfont/terminalfont.h +++ b/src/modules/terminalfont/terminalfont.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TERMINALFONT_MODULE_NAME "TerminalFont" diff --git a/src/modules/terminalsize/option.h b/src/modules/terminalsize/option.h index 7d584837f..518856a8c 100644 --- a/src/modules/terminalsize/option.h +++ b/src/modules/terminalsize/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTerminalSizeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFTerminalSizeOptions; + +static_assert(sizeof(FFTerminalSizeOptions) <= FF_OPTION_MAX_SIZE, "FFTerminalSizeOptions size exceeds maximum allowed size"); diff --git a/src/modules/terminalsize/terminalsize.c b/src/modules/terminalsize/terminalsize.c index 1b3dfe029..ec9148b9b 100644 --- a/src/modules/terminalsize/terminalsize.c +++ b/src/modules/terminalsize/terminalsize.c @@ -59,7 +59,7 @@ void ffGenerateTerminalSizeJsonConfig(FFTerminalSizeOptions* options, yyjson_mut ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); } -void ffGenerateTerminalSizeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGenerateTerminalSizeJsonResult(FF_MAYBE_UNUSED FFTerminalSizeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFTerminalSizeResult result; @@ -76,6 +76,16 @@ void ffGenerateTerminalSizeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options yyjson_mut_obj_add_uint(doc, obj, "height", result.height); } +void ffInitTerminalSizeOptions(FFTerminalSizeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰲎"); +} + +void ffDestroyTerminalSizeOptions(FFTerminalSizeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffTerminalSizeModuleInfo = { .name = FF_TERMINALSIZE_MODULE_NAME, .description = "Print current terminal size", @@ -92,14 +102,3 @@ FFModuleBaseInfo ffTerminalSizeModuleInfo = { {"Terminal height (in pixels)", "height"}, })), }; - -void ffInitTerminalSizeOptions(FFTerminalSizeOptions* options) -{ - options->moduleInfo = ffTerminalSizeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰲎"); -} - -void ffDestroyTerminalSizeOptions(FFTerminalSizeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/terminalsize/terminalsize.h b/src/modules/terminalsize/terminalsize.h index eca007a48..859d09b0c 100644 --- a/src/modules/terminalsize/terminalsize.h +++ b/src/modules/terminalsize/terminalsize.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TERMINALSIZE_MODULE_NAME "TerminalSize" diff --git a/src/modules/terminaltheme/option.h b/src/modules/terminaltheme/option.h index aecbe18d7..3d8cdc252 100644 --- a/src/modules/terminaltheme/option.h +++ b/src/modules/terminaltheme/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTerminalThemeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFTerminalThemeOptions; + +static_assert(sizeof(FFTerminalThemeOptions) <= FF_OPTION_MAX_SIZE, "FFTerminalThemeOptions size exceeds maximum allowed size"); diff --git a/src/modules/terminaltheme/terminaltheme.c b/src/modules/terminaltheme/terminaltheme.c index 74439f59e..2b504fd5b 100644 --- a/src/modules/terminaltheme/terminaltheme.c +++ b/src/modules/terminaltheme/terminaltheme.c @@ -64,7 +64,7 @@ void ffGenerateTerminalThemeJsonConfig(FFTerminalThemeOptions* options, yyjson_m ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); } -void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalThemeOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFTerminalThemeResult result = {}; @@ -89,6 +89,16 @@ void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* option yyjson_mut_obj_add_bool(doc, bg, "dark", result.bg.dark); } +void ffInitTerminalThemeOptions(FFTerminalThemeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰔎"); +} + +void ffDestroyTerminalThemeOptions(FFTerminalThemeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffTerminalThemeModuleInfo = { .name = FF_TERMINALTHEME_MODULE_NAME, .description = "Print current terminal theme (foreground and background colors)", @@ -105,14 +115,3 @@ FFModuleBaseInfo ffTerminalThemeModuleInfo = { {"Terminal background type (Dark / Light)", "bg-type"}, })) }; - -void ffInitTerminalThemeOptions(FFTerminalThemeOptions* options) -{ - options->moduleInfo = ffTerminalThemeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰔎"); -} - -void ffDestroyTerminalThemeOptions(FFTerminalThemeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/terminaltheme/terminaltheme.h b/src/modules/terminaltheme/terminaltheme.h index d44826eee..dbe6ac192 100644 --- a/src/modules/terminaltheme/terminaltheme.h +++ b/src/modules/terminaltheme/terminaltheme.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TERMINALTHEME_MODULE_NAME "TerminalTheme" diff --git a/src/modules/theme/option.h b/src/modules/theme/option.h index 9c3b32a88..ca232bfb9 100644 --- a/src/modules/theme/option.h +++ b/src/modules/theme/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFThemeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFThemeOptions; + +static_assert(sizeof(FFThemeOptions) <= FF_OPTION_MAX_SIZE, "FFThemeOptions size exceeds maximum allowed size"); diff --git a/src/modules/theme/theme.c b/src/modules/theme/theme.c index 3b1448b28..f6cfd945b 100644 --- a/src/modules/theme/theme.c +++ b/src/modules/theme/theme.c @@ -86,6 +86,16 @@ void ffGenerateThemeJsonResult(FF_MAYBE_UNUSED FFThemeOptions* options, yyjson_m ffStrbufDestroy(&result.theme2); } +void ffInitThemeOptions(FFThemeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰉼"); +} + +void ffDestroyThemeOptions(FFThemeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffThemeModuleInfo = { .name = FF_THEME_MODULE_NAME, .description = "Print current theme of desktop environment", @@ -100,14 +110,3 @@ FFModuleBaseInfo ffThemeModuleInfo = { {"Theme part 2", "theme2"}, })) }; - -void ffInitThemeOptions(FFThemeOptions* options) -{ - options->moduleInfo = ffThemeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰉼"); -} - -void ffDestroyThemeOptions(FFThemeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/theme/theme.h b/src/modules/theme/theme.h index 4b9c24f49..6d677a2d0 100644 --- a/src/modules/theme/theme.h +++ b/src/modules/theme/theme.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_THEME_MODULE_NAME "Theme" diff --git a/src/modules/title/option.h b/src/modules/title/option.h index 9c3ea074b..16505d39b 100644 --- a/src/modules/title/option.h +++ b/src/modules/title/option.h @@ -1,16 +1,15 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTitleOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; - bool fqdn; FFstrbuf colorUser; FFstrbuf colorAt; FFstrbuf colorHost; + bool fqdn; } FFTitleOptions; + +static_assert(sizeof(FFTitleOptions) <= FF_OPTION_MAX_SIZE, "FFTitleOptions size exceeds maximum allowed size"); diff --git a/src/modules/title/title.c b/src/modules/title/title.c index b80cae4cc..8821ac2d5 100644 --- a/src/modules/title/title.c +++ b/src/modules/title/title.c @@ -140,6 +140,25 @@ void ffGenerateTitleJsonResult(FF_MAYBE_UNUSED FFTitleOptions* options, yyjson_m yyjson_mut_obj_add_strbuf(doc, obj, "userShell", &instance.state.platform.userShell); } +void ffInitTitleOptions(FFTitleOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + ffStrbufSetStatic(&options->moduleArgs.key, " "); + + options->fqdn = false; + ffStrbufInit(&options->colorUser); + ffStrbufInit(&options->colorAt); + ffStrbufInit(&options->colorHost); +} + +void ffDestroyTitleOptions(FFTitleOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); + ffStrbufDestroy(&options->colorUser); + ffStrbufDestroy(&options->colorAt); + ffStrbufDestroy(&options->colorHost); +} + FFModuleBaseInfo ffTitleModuleInfo = { .name = FF_TITLE_MODULE_NAME, .description = "Print title, which contains your user name, hostname", @@ -161,23 +180,3 @@ FFModuleBaseInfo ffTitleModuleInfo = { {"Full user name", "full-user-name"}, })) }; - -void ffInitTitleOptions(FFTitleOptions* options) -{ - options->moduleInfo = ffTitleModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - ffStrbufSetStatic(&options->moduleArgs.key, " "); - - options->fqdn = false; - ffStrbufInit(&options->colorUser); - ffStrbufInit(&options->colorAt); - ffStrbufInit(&options->colorHost); -} - -void ffDestroyTitleOptions(FFTitleOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); - ffStrbufDestroy(&options->colorUser); - ffStrbufDestroy(&options->colorAt); - ffStrbufDestroy(&options->colorHost); -} diff --git a/src/modules/title/title.h b/src/modules/title/title.h index 6b616ec31..4a41bcfe6 100644 --- a/src/modules/title/title.h +++ b/src/modules/title/title.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TITLE_MODULE_NAME "Title" diff --git a/src/modules/tpm/option.h b/src/modules/tpm/option.h index d98c21df2..19fb79029 100644 --- a/src/modules/tpm/option.h +++ b/src/modules/tpm/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFTPMOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFTPMOptions; + +static_assert(sizeof(FFTPMOptions) <= FF_OPTION_MAX_SIZE, "FFTPMOptions size exceeds maximum allowed size"); diff --git a/src/modules/tpm/tpm.c b/src/modules/tpm/tpm.c index 82eb04d51..fc447d160 100644 --- a/src/modules/tpm/tpm.c +++ b/src/modules/tpm/tpm.c @@ -59,7 +59,7 @@ void ffGenerateTPMJsonConfig(FFTPMOptions* options, yyjson_mut_doc* doc, yyjson_ ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs); } -void ffGenerateTPMJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +void ffGenerateTPMJsonResult(FF_MAYBE_UNUSED FFTPMOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) { FFTPMResult result = { .version = ffStrbufCreate(), @@ -81,6 +81,16 @@ void ffGenerateTPMJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_ ffStrbufDestroy(&result.description); } +void ffInitTPMOptions(FFTPMOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyTPMOptions(FFTPMOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffTPMModuleInfo = { .name = FF_TPM_MODULE_NAME, .description = "Print info of Trusted Platform Module (TPM) Security Device", @@ -95,14 +105,3 @@ FFModuleBaseInfo ffTPMModuleInfo = { {"TPM general description", "description"}, })) }; - -void ffInitTPMOptions(FFTPMOptions* options) -{ - options->moduleInfo = ffTPMModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyTPMOptions(FFTPMOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/tpm/tpm.h b/src/modules/tpm/tpm.h index fefcae96e..c5ef666df 100644 --- a/src/modules/tpm/tpm.h +++ b/src/modules/tpm/tpm.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_TPM_MODULE_NAME "TPM" diff --git a/src/modules/uptime/option.h b/src/modules/uptime/option.h index f047db76c..4235995c5 100644 --- a/src/modules/uptime/option.h +++ b/src/modules/uptime/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFUptimeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFUptimeOptions; + +static_assert(sizeof(FFUptimeOptions) <= FF_OPTION_MAX_SIZE, "FFUptimeOptions size exceeds maximum allowed size"); diff --git a/src/modules/uptime/uptime.c b/src/modules/uptime/uptime.c index 9738d8ac0..d0b489cac 100644 --- a/src/modules/uptime/uptime.c +++ b/src/modules/uptime/uptime.c @@ -93,6 +93,16 @@ void ffGenerateUptimeJsonResult(FF_MAYBE_UNUSED FFUptimeOptions* options, yyjson yyjson_mut_obj_add_strcpy(doc, obj, "bootTime", ffTimeToFullStr(result.bootTime)); } +void ffInitUptimeOptions(FFUptimeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyUptimeOptions(FFUptimeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffUptimeModuleInfo = { .name = FF_UPTIME_MODULE_NAME, .description = "Print how long system has been running", @@ -115,14 +125,3 @@ FFModuleBaseInfo ffUptimeModuleInfo = { {"Formatted uptime", "formatted"}, })) }; - -void ffInitUptimeOptions(FFUptimeOptions* options) -{ - options->moduleInfo = ffUptimeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyUptimeOptions(FFUptimeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/uptime/uptime.h b/src/modules/uptime/uptime.h index 7ffddb694..a12fcd549 100644 --- a/src/modules/uptime/uptime.h +++ b/src/modules/uptime/uptime.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_UPTIME_MODULE_NAME "Uptime" diff --git a/src/modules/users/option.h b/src/modules/users/option.h index af194fea2..16ea5e88f 100644 --- a/src/modules/users/option.h +++ b/src/modules/users/option.h @@ -1,14 +1,13 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFUsersOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool compact; bool myselfOnly; } FFUsersOptions; + +static_assert(sizeof(FFUsersOptions) <= FF_OPTION_MAX_SIZE, "FFUsersOptions size exceeds maximum allowed size"); diff --git a/src/modules/users/users.c b/src/modules/users/users.c index 4f0fc4cfa..cd82d359a 100644 --- a/src/modules/users/users.c +++ b/src/modules/users/users.c @@ -185,6 +185,19 @@ void ffGenerateUsersJsonResult(FFUsersOptions* options, yyjson_mut_doc* doc, yyj } } +void ffInitUsersOptions(FFUsersOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->compact = false; + options->myselfOnly = false; +} + +void ffDestroyUsersOptions(FFUsersOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffUsersModuleInfo = { .name = FF_USERS_MODULE_NAME, .description = "Print users currently logged in", @@ -210,17 +223,3 @@ FFModuleBaseInfo ffUsersModuleInfo = { {"Years fraction after login", "years-fraction"}, })) }; - -void ffInitUsersOptions(FFUsersOptions* options) -{ - options->moduleInfo = ffUsersModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->compact = false; - options->myselfOnly = false; -} - -void ffDestroyUsersOptions(FFUsersOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/users/users.h b/src/modules/users/users.h index c8c7f78e2..bc249bda1 100644 --- a/src/modules/users/users.h +++ b/src/modules/users/users.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_USERS_MODULE_NAME "Users" diff --git a/src/modules/version/option.h b/src/modules/version/option.h index 12c151be0..f3b68b4f2 100644 --- a/src/modules/version/option.h +++ b/src/modules/version/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFVersionOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFVersionOptions; + +static_assert(sizeof(FFVersionOptions) <= FF_OPTION_MAX_SIZE, "FFVersionOptions size exceeds maximum allowed size"); diff --git a/src/modules/version/version.c b/src/modules/version/version.c index 599978478..42b50e11e 100644 --- a/src/modules/version/version.c +++ b/src/modules/version/version.c @@ -97,6 +97,16 @@ void ffGenerateVersionJsonResult(FF_MAYBE_UNUSED FFVersionOptions* options, yyjs } } +void ffInitVersionOptions(FFVersionOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyVersionOptions(FFVersionOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffVersionModuleInfo = { .name = FF_VERSION_MODULE_NAME, .description = "Print Fastfetch version", @@ -119,14 +129,3 @@ FFModuleBaseInfo ffVersionModuleInfo = { {"Libc used when compiling", "libc"}, })) }; - -void ffInitVersionOptions(FFVersionOptions* options) -{ - options->moduleInfo = ffVersionModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyVersionOptions(FFVersionOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/version/version.h b/src/modules/version/version.h index 9228f99e8..1135e5394 100644 --- a/src/modules/version/version.h +++ b/src/modules/version/version.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_VERSION_MODULE_NAME "Version" diff --git a/src/modules/vulkan/option.h b/src/modules/vulkan/option.h index 132af5bbe..38ec20c99 100644 --- a/src/modules/vulkan/option.h +++ b/src/modules/vulkan/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFVulkanOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFVulkanOptions; + +static_assert(sizeof(FFVulkanOptions) <= FF_OPTION_MAX_SIZE, "FFVulkanOptions size exceeds maximum allowed size"); diff --git a/src/modules/vulkan/vulkan.c b/src/modules/vulkan/vulkan.c index f8740be65..331f91a61 100644 --- a/src/modules/vulkan/vulkan.c +++ b/src/modules/vulkan/vulkan.c @@ -128,6 +128,16 @@ void ffGenerateVulkanJsonResult(FF_MAYBE_UNUSED FFVulkanOptions* options, yyjson } } +void ffInitVulkanOptions(FFVulkanOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); +} + +void ffDestroyVulkanOptions(FFVulkanOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffVulkanModuleInfo = { .name = FF_VULKAN_MODULE_NAME, .description = "Print highest Vulkan version supported by the GPU", @@ -144,14 +154,3 @@ FFModuleBaseInfo ffVulkanModuleInfo = { {"Instance version", "instance-version"}, })) }; - -void ffInitVulkanOptions(FFVulkanOptions* options) -{ - options->moduleInfo = ffVulkanModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); -} - -void ffDestroyVulkanOptions(FFVulkanOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/vulkan/vulkan.h b/src/modules/vulkan/vulkan.h index 0a42bdd84..7a5d0f29d 100644 --- a/src/modules/vulkan/vulkan.h +++ b/src/modules/vulkan/vulkan.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_VULKAN_MODULE_NAME "Vulkan" diff --git a/src/modules/wallpaper/option.h b/src/modules/wallpaper/option.h index 539a57f9b..621699fa3 100644 --- a/src/modules/wallpaper/option.h +++ b/src/modules/wallpaper/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFWallpaperOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFWallpaperOptions; + +static_assert(sizeof(FFWallpaperOptions) <= FF_OPTION_MAX_SIZE, "FFWallpaperOptions size exceeds maximum allowed size"); diff --git a/src/modules/wallpaper/wallpaper.c b/src/modules/wallpaper/wallpaper.c index b69c75a61..fe7c3efc1 100644 --- a/src/modules/wallpaper/wallpaper.c +++ b/src/modules/wallpaper/wallpaper.c @@ -73,6 +73,16 @@ void ffGenerateWallpaperJsonResult(FF_MAYBE_UNUSED FFWallpaperOptions* options, yyjson_mut_obj_add_strbuf(doc, module, "result", &fullpath); } +void ffInitWallpaperOptions(FFWallpaperOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰸉"); +} + +void ffDestroyWallpaperOptions(FFWallpaperOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffWallpaperModuleInfo = { .name = FF_WALLPAPER_MODULE_NAME, .description = "Print image file path of current wallpaper", @@ -87,14 +97,3 @@ FFModuleBaseInfo ffWallpaperModuleInfo = { {"Full path", "full-path"}, })) }; - -void ffInitWallpaperOptions(FFWallpaperOptions* options) -{ - options->moduleInfo = ffWallpaperModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰸉"); -} - -void ffDestroyWallpaperOptions(FFWallpaperOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/wallpaper/wallpaper.h b/src/modules/wallpaper/wallpaper.h index 12876b481..3ca28bfcd 100644 --- a/src/modules/wallpaper/wallpaper.h +++ b/src/modules/wallpaper/wallpaper.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_WALLPAPER_MODULE_NAME "Wallpaper" diff --git a/src/modules/weather/option.h b/src/modules/weather/option.h index b8c7e7cad..76c3df11b 100644 --- a/src/modules/weather/option.h +++ b/src/modules/weather/option.h @@ -1,15 +1,14 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFWeatherOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFstrbuf location; FFstrbuf outputFormat; uint32_t timeout; } FFWeatherOptions; + +static_assert(sizeof(FFWeatherOptions) <= FF_OPTION_MAX_SIZE, "FFWeatherOptions size exceeds maximum allowed size"); diff --git a/src/modules/weather/weather.c b/src/modules/weather/weather.c index b86c687ee..e44c75c31 100644 --- a/src/modules/weather/weather.c +++ b/src/modules/weather/weather.c @@ -91,23 +91,8 @@ void ffGenerateWeatherJsonResult(FFWeatherOptions* options, yyjson_mut_doc* doc, yyjson_mut_obj_add_strbuf(doc, module, "result", &result); } -FFModuleBaseInfo ffWeatherModuleInfo = { - .name = FF_WEATHER_MODULE_NAME, - .description = "Print weather information", - .initOptions = (void*) ffInitWeatherOptions, - .destroyOptions = (void*) ffDestroyWeatherOptions, - .parseJsonObject = (void*) ffParseWeatherJsonObject, - .printModule = (void*) ffPrintWeather, - .generateJsonResult = (void*) ffGenerateWeatherJsonResult, - .generateJsonConfig = (void*) ffGenerateWeatherJsonConfig, - .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { - {"Weather result", "result"}, - })) -}; - void ffInitWeatherOptions(FFWeatherOptions* options) { - options->moduleInfo = ffWeatherModuleInfo; ffOptionInitModuleArg(&options->moduleArgs, "󰖙"); ffStrbufInit(&options->location); @@ -121,3 +106,17 @@ void ffDestroyWeatherOptions(FFWeatherOptions* options) ffStrbufDestroy(&options->outputFormat); } + +FFModuleBaseInfo ffWeatherModuleInfo = { + .name = FF_WEATHER_MODULE_NAME, + .description = "Print weather information", + .initOptions = (void*) ffInitWeatherOptions, + .destroyOptions = (void*) ffDestroyWeatherOptions, + .parseJsonObject = (void*) ffParseWeatherJsonObject, + .printModule = (void*) ffPrintWeather, + .generateJsonResult = (void*) ffGenerateWeatherJsonResult, + .generateJsonConfig = (void*) ffGenerateWeatherJsonConfig, + .formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) { + {"Weather result", "result"}, + })) +}; diff --git a/src/modules/weather/weather.h b/src/modules/weather/weather.h index 54c4bbde2..5b3c9739b 100644 --- a/src/modules/weather/weather.h +++ b/src/modules/weather/weather.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_WEATHER_MODULE_NAME "Weather" diff --git a/src/modules/wifi/option.h b/src/modules/wifi/option.h index 3628df69d..f74579267 100644 --- a/src/modules/wifi/option.h +++ b/src/modules/wifi/option.h @@ -1,13 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFWifiOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; } FFWifiOptions; + +static_assert(sizeof(FFWifiOptions) <= FF_OPTION_MAX_SIZE, "FFWifiOptions size exceeds maximum allowed size"); diff --git a/src/modules/wifi/wifi.c b/src/modules/wifi/wifi.c index f19e46f84..e7d411017 100644 --- a/src/modules/wifi/wifi.c +++ b/src/modules/wifi/wifi.c @@ -206,6 +206,18 @@ void ffGenerateWifiJsonResult(FF_MAYBE_UNUSED FFWifiOptions* options, yyjson_mut } } +void ffInitWifiOptions(FFWifiOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + + options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; +} + +void ffDestroyWifiOptions(FFWifiOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffWifiModuleInfo = { .name = FF_WIFI_MODULE_NAME, .description = "Print connected Wi-Fi info (SSID, connection and security protocol)", @@ -231,16 +243,3 @@ FFModuleBaseInfo ffWifiModuleInfo = { {"Connection channel band in GHz", "band"}, })) }; - -void ffInitWifiOptions(FFWifiOptions* options) -{ - options->moduleInfo = ffWifiModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - - options->percent = (FFPercentageModuleConfig) { 50, 20, 0 }; -} - -void ffDestroyWifiOptions(FFWifiOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/wifi/wifi.h b/src/modules/wifi/wifi.h index 4e517b1e2..0fcef5f1c 100644 --- a/src/modules/wifi/wifi.h +++ b/src/modules/wifi/wifi.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_WIFI_MODULE_NAME "Wifi" diff --git a/src/modules/wm/option.h b/src/modules/wm/option.h index b38ab7c3a..d213c9c3a 100644 --- a/src/modules/wm/option.h +++ b/src/modules/wm/option.h @@ -1,13 +1,12 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFWMOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; bool detectPlugin; } FFWMOptions; + +static_assert(sizeof(FFWMOptions) <= FF_OPTION_MAX_SIZE, "FFWMOptions size exceeds maximum allowed size"); diff --git a/src/modules/wm/wm.c b/src/modules/wm/wm.c index 0838f380b..6da7ea9d6 100644 --- a/src/modules/wm/wm.c +++ b/src/modules/wm/wm.c @@ -119,6 +119,17 @@ void ffGenerateWMJsonResult(FF_MAYBE_UNUSED FFWMOptions* options, yyjson_mut_doc yyjson_mut_obj_add_strbuf(doc, obj, "version", &version); } +void ffInitWMOptions(FFWMOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, ""); + options->detectPlugin = false; +} + +void ffDestroyWMOptions(FFWMOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffWMModuleInfo = { .name = FF_WM_MODULE_NAME, .description = "Print window manager name and version", @@ -136,15 +147,3 @@ FFModuleBaseInfo ffWMModuleInfo = { {"WM version", "version"}, })) }; - -void ffInitWMOptions(FFWMOptions* options) -{ - options->moduleInfo = ffWMModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, ""); - options->detectPlugin = false; -} - -void ffDestroyWMOptions(FFWMOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/wm/wm.h b/src/modules/wm/wm.h index 181fa9360..5b6556806 100644 --- a/src/modules/wm/wm.h +++ b/src/modules/wm/wm.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_WM_MODULE_NAME "WM" diff --git a/src/modules/wmtheme/option.h b/src/modules/wmtheme/option.h index b2b9fc5a8..b12f9f8b3 100644 --- a/src/modules/wmtheme/option.h +++ b/src/modules/wmtheme/option.h @@ -1,11 +1,10 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" typedef struct FFWMThemeOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; } FFWMThemeOptions; + +static_assert(sizeof(FFWMThemeOptions) <= FF_OPTION_MAX_SIZE, "FFWMThemeOptions size exceeds maximum allowed size"); diff --git a/src/modules/wmtheme/wmtheme.c b/src/modules/wmtheme/wmtheme.c index d10adc73b..d7e4178dc 100644 --- a/src/modules/wmtheme/wmtheme.c +++ b/src/modules/wmtheme/wmtheme.c @@ -62,6 +62,16 @@ void ffGenerateWMThemeJsonResult(FF_MAYBE_UNUSED FFWMThemeOptions* options, yyjs yyjson_mut_obj_add_strbuf(doc, module, "result", &themeOrError); } +void ffInitWMThemeOptions(FFWMThemeOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󰓸"); +} + +void ffDestroyWMThemeOptions(FFWMThemeOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffWMThemeModuleInfo = { .name = FF_WMTHEME_MODULE_NAME, .description = "Print current theme of window manager", @@ -75,14 +85,3 @@ FFModuleBaseInfo ffWMThemeModuleInfo = { {"WM theme", "result"}, })) }; - -void ffInitWMThemeOptions(FFWMThemeOptions* options) -{ - options->moduleInfo = ffWMThemeModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󰓸"); -} - -void ffDestroyWMThemeOptions(FFWMThemeOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/wmtheme/wmtheme.h b/src/modules/wmtheme/wmtheme.h index 354e72728..e3bad8ee0 100644 --- a/src/modules/wmtheme/wmtheme.h +++ b/src/modules/wmtheme/wmtheme.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_WMTHEME_MODULE_NAME "WMTheme" diff --git a/src/modules/zpool/option.h b/src/modules/zpool/option.h index ac4f8ff3f..49522b3be 100644 --- a/src/modules/zpool/option.h +++ b/src/modules/zpool/option.h @@ -1,14 +1,13 @@ #pragma once -// This file will be included in "fastfetch.h", do NOT put unnecessary things here - #include "common/option.h" #include "common/percent.h" typedef struct FFZpoolOptions { - FFModuleBaseInfo moduleInfo; FFModuleArgs moduleArgs; FFPercentageModuleConfig percent; } FFZpoolOptions; + +static_assert(sizeof(FFZpoolOptions) <= FF_OPTION_MAX_SIZE, "FFZpoolOptions size exceeds maximum allowed size"); diff --git a/src/modules/zpool/zpool.c b/src/modules/zpool/zpool.c index 49a6928c0..5b6eecf9f 100644 --- a/src/modules/zpool/zpool.c +++ b/src/modules/zpool/zpool.c @@ -164,6 +164,17 @@ void ffGenerateZpoolJsonResult(FF_MAYBE_UNUSED FFZpoolOptions* options, yyjson_m } } +void ffInitZpoolOptions(FFZpoolOptions* options) +{ + ffOptionInitModuleArg(&options->moduleArgs, "󱑛"); + options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; +} + +void ffDestroyZpoolOptions(FFZpoolOptions* options) +{ + ffOptionDestroyModuleArg(&options->moduleArgs); +} + FFModuleBaseInfo ffZpoolModuleInfo = { .name = FF_ZPOOL_MODULE_NAME, .description = "Print ZFS storage pools", @@ -184,15 +195,3 @@ FFModuleBaseInfo ffZpoolModuleInfo = { {"Fragmentation percentage bar", "fragmentation-percentage-bar"}, })) }; - -void ffInitZpoolOptions(FFZpoolOptions* options) -{ - options->moduleInfo = ffZpoolModuleInfo; - ffOptionInitModuleArg(&options->moduleArgs, "󱑛"); - options->percent = (FFPercentageModuleConfig) { 50, 80, 0 }; -} - -void ffDestroyZpoolOptions(FFZpoolOptions* options) -{ - ffOptionDestroyModuleArg(&options->moduleArgs); -} diff --git a/src/modules/zpool/zpool.h b/src/modules/zpool/zpool.h index bdc88ba90..7f282f253 100644 --- a/src/modules/zpool/zpool.h +++ b/src/modules/zpool/zpool.h @@ -1,6 +1,6 @@ #pragma once -#include "fastfetch.h" +#include "option.h" #define FF_ZPOOL_MODULE_NAME "Zpool" diff --git a/src/options/display.h b/src/options/display.h index 9fbe33d14..4193cd2c6 100644 --- a/src/options/display.h +++ b/src/options/display.h @@ -1,5 +1,6 @@ #pragma once +#include "common/percent.h" #include "util/FFstrbuf.h" typedef enum __attribute__((__packed__)) FFSizeBinaryPrefixType diff --git a/src/options/modules.c b/src/options/modules.c deleted file mode 100644 index 755f65a87..000000000 --- a/src/options/modules.c +++ /dev/null @@ -1,156 +0,0 @@ -#include "fastfetch.h" -#include "modules/modules.h" - -void ffOptionsInitModules(FFOptionsModules* options) -{ - ffInitBatteryOptions(&options->battery); - ffInitBiosOptions(&options->bios); - ffInitBluetoothOptions(&options->bluetooth); - ffInitBluetoothRadioOptions(&options->bluetoothRadio); - ffInitBoardOptions(&options->board); - ffInitBootmgrOptions(&options->bootmgr); - ffInitBreakOptions(&options->break_); - ffInitBrightnessOptions(&options->brightness); - ffInitBtrfsOptions(&options->btrfs); - ffInitCameraOptions(&options->camera); - ffInitCPUOptions(&options->cpu); - ffInitCPUUsageOptions(&options->cpuUsage); - ffInitCPUCacheOptions(&options->cpuCache); - ffInitChassisOptions(&options->chassis); - ffInitColorsOptions(&options->colors); - ffInitCommandOptions(&options->command); - ffInitCursorOptions(&options->cursor); - ffInitCustomOptions(&options->custom); - ffInitDEOptions(&options->de); - ffInitDateTimeOptions(&options->dateTime); - ffInitDiskOptions(&options->disk); - ffInitDiskIOOptions(&options->diskIo); - ffInitDisplayOptions(&options->display); - ffInitDNSOptions(&options->dns); - ffInitEditorOptions(&options->editor); - ffInitFontOptions(&options->font); - ffInitGPUOptions(&options->gpu); - ffInitGamepadOptions(&options->gamepad); - ffInitHostOptions(&options->host); - ffInitIconsOptions(&options->icons); - ffInitInitSystemOptions(&options->initSystem); - ffInitKernelOptions(&options->kernel); - ffInitKeyboardOptions(&options->keyboard); - ffInitLMOptions(&options->lm); - ffInitLoadavgOptions(&options->loadavg); - ffInitLocalIpOptions(&options->localIP); - ffInitLocaleOptions(&options->locale); - ffInitMediaOptions(&options->media); - ffInitMemoryOptions(&options->memory); - ffInitMonitorOptions(&options->monitor); - ffInitMouseOptions(&options->mouse); - ffInitNetIOOptions(&options->netIo); - ffInitOSOptions(&options->os); - ffInitOpenCLOptions(&options->openCL); - ffInitOpenGLOptions(&options->openGL); - ffInitPackagesOptions(&options->packages); - ffInitPhysicalDiskOptions(&options->physicalDisk); - ffInitPhysicalMemoryOptions(&options->physicalMemory); - ffInitPlayerOptions(&options->player); - ffInitPowerAdapterOptions(&options->powerAdapter); - ffInitProcessesOptions(&options->processes); - ffInitPublicIpOptions(&options->publicIP); - ffInitSeparatorOptions(&options->separator); - ffInitShellOptions(&options->shell); - ffInitSoundOptions(&options->sound); - ffInitSwapOptions(&options->swap); - ffInitTerminalOptions(&options->terminal); - ffInitTerminalFontOptions(&options->terminalFont); - ffInitTerminalSizeOptions(&options->terminalSize); - ffInitTerminalThemeOptions(&options->terminalTheme); - ffInitThemeOptions(&options->theme); - ffInitTitleOptions(&options->title); - ffInitTPMOptions(&options->tpm); - ffInitUptimeOptions(&options->uptime); - ffInitUsersOptions(&options->users); - ffInitVersionOptions(&options->version); - ffInitVulkanOptions(&options->vulkan); - ffInitWMOptions(&options->wm); - ffInitWMThemeOptions(&options->wmTheme); - ffInitWallpaperOptions(&options->wallpaper); - ffInitWeatherOptions(&options->weather); - ffInitWifiOptions(&options->wifi); - ffInitZpoolOptions(&options->zpool); -} - -void ffOptionsDestroyModules(FFOptionsModules* options) -{ - ffDestroyBatteryOptions(&options->battery); - ffDestroyBiosOptions(&options->bios); - ffDestroyBluetoothOptions(&options->bluetooth); - ffDestroyBluetoothRadioOptions(&options->bluetoothRadio); - ffDestroyBoardOptions(&options->board); - ffDestroyBootmgrOptions(&options->bootmgr); - ffDestroyBreakOptions(&options->break_); - ffDestroyBrightnessOptions(&options->brightness); - ffDestroyBtrfsOptions(&options->btrfs); - ffDestroyCameraOptions(&options->camera); - ffDestroyCPUOptions(&options->cpu); - ffDestroyCPUCacheOptions(&options->cpuCache); - ffDestroyCPUUsageOptions(&options->cpuUsage); - ffDestroyChassisOptions(&options->chassis); - ffDestroyColorsOptions(&options->colors); - ffDestroyCommandOptions(&options->command); - ffDestroyCursorOptions(&options->cursor); - ffDestroyCustomOptions(&options->custom); - ffDestroyDEOptions(&options->de); - ffDestroyDateTimeOptions(&options->dateTime); - ffDestroyDiskOptions(&options->disk); - ffDestroyDiskIOOptions(&options->diskIo); - ffDestroyDisplayOptions(&options->display); - ffDestroyDNSOptions(&options->dns); - ffDestroyEditorOptions(&options->editor); - ffDestroyFontOptions(&options->font); - ffDestroyGPUOptions(&options->gpu); - ffDestroyGamepadOptions(&options->gamepad); - ffDestroyHostOptions(&options->host); - ffDestroyIconsOptions(&options->icons); - ffDestroyInitSystemOptions(&options->initSystem); - ffDestroyKernelOptions(&options->kernel); - ffDestroyKeyboardOptions(&options->keyboard); - ffDestroyLMOptions(&options->lm); - ffDestroyLoadavgOptions(&options->loadavg); - ffDestroyLocalIpOptions(&options->localIP); - ffDestroyLocaleOptions(&options->locale); - ffDestroyMediaOptions(&options->media); - ffDestroyMemoryOptions(&options->memory); - ffDestroyMonitorOptions(&options->monitor); - ffDestroyMouseOptions(&options->mouse); - ffDestroyNetIOOptions(&options->netIo); - ffDestroyOSOptions(&options->os); - ffDestroyOpenCLOptions(&options->openCL); - ffDestroyOpenGLOptions(&options->openGL); - ffDestroyPhysicalDiskOptions(&options->physicalDisk); - ffDestroyPhysicalMemoryOptions(&options->physicalMemory); - ffDestroyPackagesOptions(&options->packages); - ffDestroyPlayerOptions(&options->player); - ffDestroyPowerAdapterOptions(&options->powerAdapter); - ffDestroyProcessesOptions(&options->processes); - ffDestroyPublicIpOptions(&options->publicIP); - ffDestroySeparatorOptions(&options->separator); - ffDestroyShellOptions(&options->shell); - ffDestroySoundOptions(&options->sound); - ffDestroySwapOptions(&options->swap); - ffDestroyTerminalOptions(&options->terminal); - ffDestroyTerminalFontOptions(&options->terminalFont); - ffDestroyTerminalSizeOptions(&options->terminalSize); - ffDestroyTerminalThemeOptions(&options->terminalTheme); - ffDestroyThemeOptions(&options->theme); - ffDestroyTitleOptions(&options->title); - ffDestroyTPMOptions(&options->tpm); - ffDestroyUptimeOptions(&options->uptime); - ffDestroyUsersOptions(&options->users); - ffDestroyVersionOptions(&options->version); - ffDestroyVulkanOptions(&options->vulkan); - ffDestroyWMOptions(&options->wm); - ffDestroyWMThemeOptions(&options->wmTheme); - ffDestroyWallpaperOptions(&options->wallpaper); - ffDestroyWeatherOptions(&options->weather); - ffDestroyWifiOptions(&options->wifi); - ffDestroyZpoolOptions(&options->zpool); -} diff --git a/src/options/modules.h b/src/options/modules.h deleted file mode 100644 index 4ff82f972..000000000 --- a/src/options/modules.h +++ /dev/null @@ -1,83 +0,0 @@ -#pragma once - -#include "modules/options.h" - -typedef struct FFOptionsModules -{ - FFBatteryOptions battery; - FFBiosOptions bios; - FFBluetoothOptions bluetooth; - FFBluetoothRadioOptions bluetoothRadio; - FFBoardOptions board; - FFBootmgrOptions bootmgr; - FFBreakOptions break_; - FFBrightnessOptions brightness; - FFBtrfsOptions btrfs; - FFCPUOptions cpu; - FFCPUCacheOptions cpuCache; - FFCPUUsageOptions cpuUsage; - FFCameraOptions camera; - FFChassisOptions chassis; - FFColorsOptions colors; - FFCommandOptions command; - FFCursorOptions cursor; - FFCustomOptions custom; - FFDEOptions de; - FFDateTimeOptions dateTime; - FFDiskOptions disk; - FFDiskIOOptions diskIo; - FFDisplayOptions display; - FFDNSOptions dns; - FFEditorOptions editor; - FFFontOptions font; - FFGPUOptions gpu; - FFGamepadOptions gamepad; - FFHostOptions host; - FFIconsOptions icons; - FFInitSystemOptions initSystem; - FFKernelOptions kernel; - FFKeyboardOptions keyboard; - FFLMOptions lm; - FFLoadavgOptions loadavg; - FFLocalIpOptions localIP; - FFLocaleOptions locale; - FFMediaOptions media; - FFMemoryOptions memory; - FFMonitorOptions monitor; - FFMouseOptions mouse; - FFNetIOOptions netIo; - FFOSOptions os; - FFOpenCLOptions openCL; - FFOpenGLOptions openGL; - FFPackagesOptions packages; - FFPhysicalDiskOptions physicalDisk; - FFPhysicalMemoryOptions physicalMemory; - FFPlayerOptions player; - FFPowerAdapterOptions powerAdapter; - FFProcessesOptions processes; - FFPublicIpOptions publicIP; - FFSeparatorOptions separator; - FFShellOptions shell; - FFSoundOptions sound; - FFSwapOptions swap; - FFTerminalOptions terminal; - FFTerminalFontOptions terminalFont; - FFTerminalSizeOptions terminalSize; - FFTerminalThemeOptions terminalTheme; - FFThemeOptions theme; - FFTitleOptions title; - FFTPMOptions tpm; - FFUptimeOptions uptime; - FFUsersOptions users; - FFVersionOptions version; - FFVulkanOptions vulkan; - FFWMOptions wm; - FFWMThemeOptions wmTheme; - FFWallpaperOptions wallpaper; - FFWeatherOptions weather; - FFWifiOptions wifi; - FFZpoolOptions zpool; -} FFOptionsModules; - -void ffOptionsInitModules(FFOptionsModules* options); -void ffOptionsDestroyModules(FFOptionsModules* options);