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);