diff --git a/CHANGELOG.md b/CHANGELOG.md index 669f7ac346..7b14c03292 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# 2.8.8 + +Bugfixes: +* Fix old fish version compatibility (#744) +* Fix truncated texts in `--help format` (#745) +* Fix old vulkan-header and libdrm library compatibility (#748, Linux) +* Fix possible segfaults in `--help *-format` (#749) +* Fix invalid resolution detection when using libdrm (Linux, Display) +* Fix segfault when `/sys/devices/system/cpu/cpufreq/` doesn't exist (#750, CPU, Linux) +* Don't detect `SessionLeader` as terminal (Terminal, Linux) +* Fix detection of client IP (Users, Linux) + # 2.8.7 Bugfixes: diff --git a/CMakeLists.txt b/CMakeLists.txt index aff9a5a7fa..a68bb140dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url project(fastfetch - VERSION 2.8.7 + VERSION 2.8.8 LANGUAGES C DESCRIPTION "Fast neofetch-like system information tool" HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch" @@ -233,10 +233,9 @@ endif() fastfetch_encode_c_string("${DATATEXT_JSON_HELP}" DATATEXT_JSON_HELP) fastfetch_load_text(src/data/structure.txt DATATEXT_STRUCTURE) -fastfetch_load_text(src/data/help.txt DATATEXT_HELP) +fastfetch_load_text(src/data/help_footer.txt DATATEXT_HELP_FOOTER) fastfetch_load_text(src/data/help_color.txt DATATEXT_HELP_COLOR) fastfetch_load_text(src/data/help_format.txt DATATEXT_HELP_FORMAT) -fastfetch_load_text(src/data/help_config.txt DATATEXT_HELP_CONFIG) configure_file(src/fastfetch_config.h.in fastfetch_config.h @ONLY) configure_file(src/fastfetch_datatext.h.in fastfetch_datatext.h @ONLY) diff --git a/README.md b/README.md index 5e9bfd63cf..ea6199edb8 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,10 @@ There are [screenshots on different platforms](https://github.com/fastfetch-cli/ ### Linux -* Ubuntu: `ppa:zhangsongcui3371/fastfetch` -* Debian / Ubuntu: Download `fastfetch--Linux.deb` from [Github release page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and `dpkg -i fastfetch--Linux.deb` +Some distros packaged a outdated fastfetch version. Older version is not supported, please always ensure that the latest version is used. + +* Ubuntu: [`ppa:zhangsongcui3371/fastfetch`](https://launchpad.net/~zhangsongcui3371/+archive/ubuntu/fastfetch) (for Ubuntu 22.04 or above) +* Debian / Ubuntu: Download `fastfetch--Linux.deb` from [Github release page](https://github.com/fastfetch-cli/fastfetch/releases/latest) and `dpkg -i fastfetch--Linux.deb` (for Ubuntu 22.04 or above and Debian 12 or above). * Arch Linux: `sudo pacman -S fastfetch`. You can also find fastfetch [on the AUR](https://aur.archlinux.org/packages/fastfetch-git). * Fedora: `sudo dnf install fastfetch` * Gentoo: `sudo emerge --ask app-misc/fastfetch` diff --git a/completions/fish b/completions/fish index de53371782..a078a795a4 100755 --- a/completions/fish +++ b/completions/fish @@ -1,7 +1,7 @@ #!/usr/bin/env fish if not type -q fastfetch - return + exit end complete -c fastfetch -f diff --git a/src/common/commandoption.c b/src/common/commandoption.c index 21ecf95826..e05cdbf92c 100644 --- a/src/common/commandoption.c +++ b/src/common/commandoption.c @@ -26,7 +26,7 @@ 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); + ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); // Cannot use `ffStrbufSetStatic` here because we will modify the string if(ffStrbufContainIgnCaseS(&data->structure, FF_CPUUSAGE_MODULE_NAME)) ffPrepareCPUUsage(); @@ -118,7 +118,7 @@ static void parseStructureCommand( } } - ffPrintErrorString(line, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, ""); + ffPrintError(line, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, ""); } void ffPrintCommandOption(FFdata* data, yyjson_mut_doc* jsonDoc) @@ -168,7 +168,7 @@ void ffMigrateCommandOptionToJsonc(FFdata* data, yyjson_mut_doc* jsonDoc) { //If we don't have a custom structure, use the default one if(data->structure.length == 0) - ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); + ffStrbufAppendS(&data->structure, FASTFETCH_DATATEXT_STRUCTURE); // Cannot use `ffStrbufSetStatic` here because we will modify the string //Parse the structure and call the modules uint32_t startIndex = 0; diff --git a/src/common/format.h b/src/common/format.h index 969de6c36e..d05921d104 100644 --- a/src/common/format.h +++ b/src/common/format.h @@ -24,3 +24,7 @@ typedef struct FFformatarg void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg); void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t numArgs, const FFformatarg* arguments); +#define FF_PARSE_FORMAT_STRING_CHECKED(buffer, formatstr, numArgs, arguments) do {\ + static_assert(sizeof(arguments) / sizeof(*(arguments)) == (numArgs), "Invalid number of format arguments");\ + ffParseFormatString((buffer), (formatstr), (numArgs), (arguments));\ +} while (0) diff --git a/src/common/jsonconfig.c b/src/common/jsonconfig.c index f0d20da25a..3131cd7503 100644 --- a/src/common/jsonconfig.c +++ b/src/common/jsonconfig.c @@ -235,6 +235,6 @@ void ffPrintJsonConfig(bool prepare, yyjson_mut_doc* jsonDoc) yyjson_mut_doc_set_root(jsonDoc, obj); } else - ffPrintErrorString("JsonConfig", 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "%s", error); + ffPrintError("JsonConfig", 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "%s", error); } } diff --git a/src/common/printing.c b/src/common/printing.c index 90830568c3..2eaf41a162 100644 --- a/src/common/printing.c +++ b/src/common/printing.c @@ -37,9 +37,9 @@ void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, const FFModu else { FF_STRBUF_AUTO_DESTROY key = ffStrbufCreate(); - ffParseFormatString(&key, &moduleArgs->key, 1, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &moduleArgs->key, 1, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT8, &moduleIndex} - }); + })); ffStrbufWriteTo(&key, stdout); } @@ -60,7 +60,7 @@ void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, const FFModu } } -void ffPrintFormatString(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, uint32_t numArgs, const FFformatarg* arguments) +void ffPrintFormat(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, uint32_t numArgs, const FFformatarg* arguments) { FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate(); if (moduleArgs) @@ -93,7 +93,7 @@ static void printError(const char* moduleName, uint8_t moduleIndex, const FFModu putchar('\n'); } -void ffPrintErrorString(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, const char* message, ...) +void ffPrintError(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, const char* message, ...) { va_list arguments; va_start(arguments, message); @@ -101,14 +101,6 @@ void ffPrintErrorString(const char* moduleName, uint8_t moduleIndex, const FFMod va_end(arguments); } -void ffPrintError(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, const char* message, ...) -{ - va_list arguments; - va_start(arguments, message); - printError(moduleName, moduleIndex, moduleArgs, FF_PRINT_TYPE_DEFAULT, message, arguments); - va_end(arguments); -} - void ffPrintColor(const FFstrbuf* colorValue) { //If the color is not set, this would reset in \033[m, which resets everything. diff --git a/src/common/printing.h b/src/common/printing.h index 5b8d1b6ad1..ad02b8047f 100644 --- a/src/common/printing.h +++ b/src/common/printing.h @@ -12,14 +12,17 @@ typedef enum FFPrintType { } FFPrintType; void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType); -void ffPrintFormatString(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, uint32_t numArgs, const FFformatarg* arguments); -static inline void ffPrintFormat(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, uint32_t numArgs, const FFformatarg* arguments) -{ - ffPrintFormatString(moduleName, moduleIndex, moduleArgs, FF_PRINT_TYPE_DEFAULT, numArgs, arguments); -} -FF_C_PRINTF(5, 6) void ffPrintErrorString(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, const char* message, ...); -FF_C_PRINTF(4, 5) void ffPrintError(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, const char* message, ...); +void ffPrintFormat(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, uint32_t numArgs, const FFformatarg* arguments); +#define FF_PRINT_FORMAT_CHECKED(moduleName, moduleIndex, moduleArgs, printType, numArgs, arguments) do {\ + static_assert(sizeof(arguments) / sizeof(*(arguments)) == (numArgs), "Invalid number of format arguments");\ + ffPrintFormat((moduleName), (moduleIndex), (moduleArgs), (printType), (numArgs), (arguments));\ +} while (0) +FF_C_PRINTF(5, 6) void ffPrintError(const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFPrintType printType, const char* message, ...); void ffPrintColor(const FFstrbuf* colorValue); void ffPrintCharTimes(char c, uint32_t times); void ffPrintModuleFormatHelp(const char* name, const char* def, uint32_t numArgs, const char* args[]); +#define FF_PRINT_MODULE_FORMAT_HELP_CHECKED(moduleName, def, numArgs, args) do {\ + static_assert(sizeof(args) / sizeof(*(args)) == (numArgs), "Invalid number of format arguments");\ + ffPrintModuleFormatHelp((moduleName), (def), (numArgs), (args));\ +} while (0) diff --git a/src/data/help_config.txt b/src/data/help_config.txt deleted file mode 100644 index edaf576dd7..0000000000 --- a/src/data/help_config.txt +++ /dev/null @@ -1,8 +0,0 @@ -Usage: fastfetch -c - -Loads a config file. A config file contains one flag per line. Empty lines or lines starting with # are ignored. -If the file is relative it looks in the following order: - - relative to the current working directory - - relative to ~/.local/share/fastfetch/presets/ - - relative to /usr/share/fastfetch/presets/ -Fastfetch provides some default presets. List them with "fastfetch --list-presets". diff --git a/src/data/help.txt b/src/data/help_footer.txt similarity index 100% rename from src/data/help.txt rename to src/data/help_footer.txt diff --git a/src/data/help_format.txt b/src/data/help_format.txt index 5d622a3d5c..4d135eae28 100644 --- a/src/data/help_format.txt +++ b/src/data/help_format.txt @@ -1,15 +1,15 @@ A format string is a string that contains placeholders for values. These placeholders begin with a '{', containing the index of the value, and end with a '}'. -For example the format string "Values: {1} ({2})", with the values "First" and "My second val", will produce +For example the format string "Values: {1} ({2})", with the values "First" and "My second val", will produce "Values: First (My second val)". The format string can contain placeholders in any order and have multiple occurrences. To include spaces when setting from the command line, surround the whole string with double quotes ("). If the value index is missing, meaning the placeholder is "{}", an internal counter sets the value index. This means that the format string "Values: {1} ({2})" is equivalent to "Values: {} ({})". -Note that this counter only counts empty placeholders, so the format string "{2} {} {}" will contain the second v +Note that this counter only counts empty placeholders, so the format string "{2} {} {}" will contain the second value, then the first, and then the second again. -To make formatting easier, a double open curly brace ("{{") will be printed as a single open curly brace and not -If a value index is misformatted or wants a non-existing value, it will be printed as is, with the curly braces aro +To make formatting easier, a double open curly brace ("{{") will be printed as a single open curly brace and not counted as the beginning of a placeholder. +If a value index is misformatted or wants a non-existing value, it will be printed as is, with the curly braces around it. If the last placeholder isn't closed, it will be treated like it was at the end of the format string. To only print something if a variable is set, use "{?} ... {?}". @@ -17,7 +17,7 @@ For example, to only print a second value if it is set, use "{?2} Second value: If a "{?}" is found without an opener, it is printed as is. To only print something if a variable is not set, do the same as with if, just replace every '?' with a '!'. -For example to print a fallback for a second value if it is not set, use "{?2}{2}{?}{/2}Second value fallback{/}" +For example to print a fallback for a second value if it is not set, use "{?2}{2}{?}{/2}Second value fallback{/}". To stop formatting at any point in the format string, use "{-}". @@ -25,7 +25,7 @@ To print something with color, start a placeholder with a '#' and then the linux "\033[" at the start, and an 'm' at the end is automatically added, so don't do that. A "{#}" is equivalent to a "{#0}" and resets everything to normal. For example to print something pink and underline, use "{#4;35}...{#}". -Information about what the numbers mean can be found here: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Sele +Information about what the numbers mean can be found here: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters. Which escape codes are supported and how they look is defined by your terminal. If a format string evaluates to an empty value, the whole line in the output will be discarded. diff --git a/src/detection/cpu/cpu_linux.c b/src/detection/cpu/cpu_linux.c index d21401f9f8..00936133a0 100644 --- a/src/detection/cpu/cpu_linux.c +++ b/src/detection/cpu/cpu_linux.c @@ -107,6 +107,8 @@ static bool detectFrequency(FFCPUResult* cpu) { FF_STRBUF_AUTO_DESTROY path = ffStrbufCreateS("/sys/devices/system/cpu/cpufreq/"); FF_AUTO_CLOSE_DIR DIR* dir = opendir(path.chars); + if (!dir) return false; + FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate(); uint32_t baseLen = path.length; bool flag = false; diff --git a/src/detection/displayserver/linux/drm.c b/src/detection/displayserver/linux/drm.c index 8de938fcd5..f76df154b2 100644 --- a/src/detection/displayserver/linux/drm.c +++ b/src/detection/displayserver/linux/drm.c @@ -143,7 +143,7 @@ static inline const char* drmType2Name(uint32_t connector_type) return "DPI"; case DRM_MODE_CONNECTOR_WRITEBACK: return "Writeback"; - case DRM_MODE_CONNECTOR_SPI: + case 19 /*DRM_MODE_CONNECTOR_SPI*/: return "SPI"; case 20 /*DRM_MODE_CONNECTOR_USB*/: return "USB"; @@ -250,8 +250,8 @@ static const char* drmConnectLibdrm(FFDisplayServerResult* result) drmModeCrtc* crtc = ffdrmModeGetCrtc(fd, encoder->crtc_id); if (crtc) { - width = crtc->mode.vdisplay; - height = crtc->mode.hdisplay; + width = crtc->mode.hdisplay; + height = crtc->mode.vdisplay; refreshRate = crtc->mode.vrefresh; if (refreshRate == 0) { diff --git a/src/detection/terminalshell/terminalshell_linux.c b/src/detection/terminalshell/terminalshell_linux.c index 8af68f5989..00aabad330 100644 --- a/src/detection/terminalshell/terminalshell_linux.c +++ b/src/detection/terminalshell/terminalshell_linux.c @@ -231,6 +231,7 @@ static pid_t getShellInfo(FFShellResult* result, pid_t pid) ffStrEquals(name, "ltrace") || ffStrEquals(name, "perf") || ffStrEquals(name, "guake-wrapped") || + ffStrEquals(name, "SessionLeader") || // #750 ffStrContainsIgnCase(name, "debug") || ffStrContainsIgnCase(name, "not-found") || ffStrEndsWith(name, ".sh") diff --git a/src/detection/users/users_linux.c b/src/detection/users/users_linux.c index f10b9559d2..695a6a724c 100644 --- a/src/detection/users/users_linux.c +++ b/src/detection/users/users_linux.c @@ -10,6 +10,10 @@ #define setutxent setutent #define getutxent getutent #endif +#ifdef __linux__ + #include + #include +#endif const char* ffDetectUsers(FFlist* users) { @@ -33,11 +37,11 @@ const char* ffDetectUsers(FFlist* users) ffStrbufInitS(&user->hostName, n->ut_host); ffStrbufInitS(&user->sessionName, n->ut_line); #ifdef __linux__ - if(n->ut_addr_v6[0] || n->ut_addr_v6[1] || n->ut_addr_v6[2] || n->ut_addr_v6[3]) - ffStrbufInitF(&user->clientIp, "%u.%u.%u.%u", n->ut_addr_v6[0], n->ut_addr_v6[1], n->ut_addr_v6[2], n->ut_addr_v6[3]); - else - #endif + // https://www.linuxquestions.org/questions/programming-9/get-the-ip-addr-out-from-an-int32_t-value-287687/#post1458622 + ffStrbufInitS(&user->clientIp, inet_ntoa((struct in_addr) { .s_addr = (in_addr_t) n->ut_addr_v6[0] })); + #else ffStrbufInit(&user->clientIp); + #endif user->loginTime = (uint64_t) n->ut_tv.tv_sec * 1000 + (uint64_t) n->ut_tv.tv_usec / 1000; } diff --git a/src/detection/vulkan/vulkan.c b/src/detection/vulkan/vulkan.c index 5492882c73..d43e47acd9 100644 --- a/src/detection/vulkan/vulkan.c +++ b/src/detection/vulkan/vulkan.c @@ -18,7 +18,7 @@ static inline void applyVulkanVersion(uint32_t vulkanVersion, FFVersion* ffVersi ffVersion->patch = VK_VERSION_PATCH(vulkanVersion); } -static void applyDriverName(VkPhysicalDeviceDriverProperties* properties, FFstrbuf* result) +static void applyDriverName(VkPhysicalDeviceDriverPropertiesKHR* properties, FFstrbuf* result) { if(!ffStrSet(properties->driverName)) return; @@ -127,8 +127,8 @@ static const char* detectVulkan(FFVulkanResult* result) //On VK 1.1 and up, we use vkGetPhysicalDeviceProperties2, so we can put VkPhysicalDeviceDriverProperties in the pNext chain. //This is required to get the driver name and conformance version. - VkPhysicalDeviceDriverProperties driverProperties = { - .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + VkPhysicalDeviceDriverPropertiesKHR driverProperties = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, }; VkPhysicalDeviceProperties2 physicalDeviceProperties = { .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, diff --git a/src/fastfetch.c b/src/fastfetch.c index 8b4f85b405..07220e0ba0 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -135,7 +135,7 @@ static void printFullHelp() } yyjson_doc_free(doc); - puts("\n" FASTFETCH_DATATEXT_HELP); + puts("\n" FASTFETCH_DATATEXT_HELP_FOOTER); } static bool printSpecificCommandHelp(const char* command) diff --git a/src/fastfetch_datatext.h.in b/src/fastfetch_datatext.h.in index dc21811db0..647c7c7b03 100644 --- a/src/fastfetch_datatext.h.in +++ b/src/fastfetch_datatext.h.in @@ -5,7 +5,7 @@ #define FASTFETCH_DATATEXT_JSON_HELP @DATATEXT_JSON_HELP@ #define FASTFETCH_DATATEXT_STRUCTURE @DATATEXT_STRUCTURE@ -#define FASTFETCH_DATATEXT_HELP @DATATEXT_HELP@ +#define FASTFETCH_DATATEXT_HELP_FOOTER @DATATEXT_HELP_FOOTER@ #define FASTFETCH_DATATEXT_HELP_COLOR @DATATEXT_HELP_COLOR@ #define FASTFETCH_DATATEXT_HELP_FORMAT @DATATEXT_HELP_FORMAT@ #define FASTFETCH_DATATEXT_HELP_CONFIG @DATATEXT_HELP_CONFIG@ diff --git a/src/modules/battery/battery.c b/src/modules/battery/battery.c index 39f43b1d27..7a5c82ebbe 100644 --- a/src/modules/battery/battery.c +++ b/src/modules/battery/battery.c @@ -7,7 +7,7 @@ #include "modules/battery/battery.h" #include "util/stringUtils.h" -#define FF_BATTERY_NUM_FORMAT_ARGS 8 +#define FF_BATTERY_NUM_FORMAT_ARGS 9 static void printBattery(FFBatteryOptions* options, FFBatteryResult* result, uint8_t index) { @@ -61,7 +61,7 @@ static void printBattery(FFBatteryOptions* options, FFBatteryResult* result, uin ffPercentAppendNum(&capacityStr, result->capacity, options->percent, false); FF_STRBUF_AUTO_DESTROY tempStr = ffStrbufCreate(); ffTempsAppendNum(result->temperature, &tempStr, options->tempConfig); - ffPrintFormat(FF_BATTERY_MODULE_NAME, index, &options->moduleArgs, FF_BATTERY_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_BATTERY_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_BATTERY_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result->manufacturer}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->modelName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->technology}, @@ -71,7 +71,7 @@ static void printBattery(FFBatteryOptions* options, FFBatteryResult* result, uin {FF_FORMAT_ARG_TYPE_UINT, &result->cycleCount}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->serial}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->manufactureDate}, - }); + })); } } @@ -83,7 +83,7 @@ void ffPrintBattery(FFBatteryOptions* options) if (error) { - ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else { @@ -100,7 +100,7 @@ void ffPrintBattery(FFBatteryOptions* options) ffStrbufDestroy(&result->manufactureDate); } if(results.length == 0) - ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, "No batteries found"); + ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No batteries found"); } } @@ -155,7 +155,7 @@ void ffParseBatteryJsonObject(FFBatteryOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_BATTERY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -216,7 +216,7 @@ void ffGenerateBatteryJsonResult(FFBatteryOptions* options, yyjson_mut_doc* doc, void ffPrintBatteryHelpFormat(void) { - ffPrintModuleFormatHelp(FF_BATTERY_MODULE_NAME, "{4}, {5}", FF_BATTERY_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_BATTERY_MODULE_NAME, "{4}, {5}", FF_BATTERY_NUM_FORMAT_ARGS, ((const char* []) { "Battery manufactor", "Battery model", "Battery technology", @@ -226,7 +226,7 @@ void ffPrintBatteryHelpFormat(void) "Battery cycle count", "Battery serial number", "Battery manufactor date", - }); + })); } void ffInitBatteryOptions(FFBatteryOptions* options) diff --git a/src/modules/bios/bios.c b/src/modules/bios/bios.c index eb901f726c..b135b958b2 100644 --- a/src/modules/bios/bios.c +++ b/src/modules/bios/bios.c @@ -21,13 +21,13 @@ void ffPrintBios(FFBiosOptions* options) if(error) { - ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); goto exit; } if(bios.version.length == 0) { - ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, "bios_version is not set."); + ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "bios_version is not set."); goto exit; } @@ -43,9 +43,9 @@ void ffPrintBios(FFBiosOptions* options) else { ffStrbufClear(&key); - ffParseFormatString(&key, &options->moduleArgs.key, 3, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 1, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &bios.type}, - }); + })); } if(options->moduleArgs.outputFormat.length == 0) @@ -59,13 +59,13 @@ void ffPrintBios(FFBiosOptions* options) } else { - ffPrintFormat(key.chars, 0, &options->moduleArgs, FF_BIOS_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_BIOS_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &bios.date}, {FF_FORMAT_ARG_TYPE_STRBUF, &bios.release}, {FF_FORMAT_ARG_TYPE_STRBUF, &bios.vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &bios.version}, {FF_FORMAT_ARG_TYPE_STRBUF, &bios.type}, - }); + })); } exit: @@ -99,7 +99,7 @@ void ffParseBiosJsonObject(FFBiosOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_BIOS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -151,13 +151,13 @@ void ffGenerateBiosJsonResult(FF_MAYBE_UNUSED FFBiosOptions* options, yyjson_mut void ffPrintBiosHelpFormat(void) { - ffPrintModuleFormatHelp(FF_BIOS_MODULE_NAME, "{4} ({2})", FF_BIOS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_BIOS_MODULE_NAME, "{4} ({2})", FF_BIOS_NUM_FORMAT_ARGS, ((const char* []) { "bios date", "bios release", "bios vendor", "bios version", "firmware type", - }); + })); } void ffInitBiosOptions(FFBiosOptions* options) diff --git a/src/modules/bluetooth/bluetooth.c b/src/modules/bluetooth/bluetooth.c index 02c14975cd..37f62bb604 100644 --- a/src/modules/bluetooth/bluetooth.c +++ b/src/modules/bluetooth/bluetooth.c @@ -32,12 +32,12 @@ static void printDevice(FFBluetoothOptions* options, const FFBluetoothResult* de FF_STRBUF_AUTO_DESTROY percentageStr = ffStrbufCreate(); ffPercentAppendNum(&percentageStr, device->battery, options->percent, false); - ffPrintFormat(FF_BLUETOOTH_MODULE_NAME, index, &options->moduleArgs, FF_BLUETOOTH_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_BLUETOOTH_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_BLUETOOTH_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &device->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->address}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->type}, {FF_FORMAT_ARG_TYPE_STRBUF, &percentageStr} - }); + })); } } @@ -48,7 +48,7 @@ void ffPrintBluetooth(FFBluetoothOptions* options) if(error) { - ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else { @@ -64,7 +64,7 @@ void ffPrintBluetooth(FFBluetoothOptions* options) if(filtered.length == 0) { - ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, "No bluetooth devices found"); + ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No bluetooth devices found"); } for(uint32_t i = 0; i < filtered.length; i++) @@ -123,7 +123,7 @@ void ffParseBluetoothJsonObject(FFBluetoothOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_BLUETOOTH_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -175,12 +175,12 @@ void ffGenerateBluetoothJsonResult(FF_MAYBE_UNUSED FFBluetoothOptions* options, void ffPrintBluetoothHelpFormat(void) { - ffPrintModuleFormatHelp(FF_BLUETOOTH_MODULE_NAME, "{1} ({4})", FF_BLUETOOTH_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_BLUETOOTH_MODULE_NAME, "{1} ({4})", FF_BLUETOOTH_NUM_FORMAT_ARGS, ((const char* []) { "Name", "Address", "Type", "Battery percentage" - }); + })); } void ffInitBluetoothOptions(FFBluetoothOptions* options) diff --git a/src/modules/board/board.c b/src/modules/board/board.c index 81a6636097..4cbc21840c 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -4,7 +4,7 @@ #include "modules/board/board.h" #include "util/stringUtils.h" -#define FF_BOARD_NUM_FORMAT_ARGS 3 +#define FF_BOARD_NUM_FORMAT_ARGS 4 void ffPrintBoard(FFBoardOptions* options) { @@ -17,13 +17,13 @@ void ffPrintBoard(FFBoardOptions* options) const char* error = ffDetectBoard(&result); if(error) { - ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); goto exit; } if(result.name.length == 0) { - ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "board_name is not set."); + ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "board_name is not set."); goto exit; } @@ -37,12 +37,12 @@ void ffPrintBoard(FFBoardOptions* options) } else { - ffPrintFormat(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, FF_BOARD_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_BOARD_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result.name}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.version}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.serial}, - }); + })); } exit: @@ -75,7 +75,7 @@ void ffParseBoardJsonObject(FFBoardOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -124,12 +124,12 @@ void ffGenerateBoardJsonResult(FF_MAYBE_UNUSED FFBoardOptions* options, yyjson_m void ffPrintBoardHelpFormat(void) { - ffPrintModuleFormatHelp(FF_BOARD_MODULE_NAME, "{1} ({3})", FF_BOARD_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_BOARD_MODULE_NAME, "{1} ({3})", FF_BOARD_NUM_FORMAT_ARGS, ((const char* []) { "board name", "board vendor", "board version", "board serial number", - }); + })); } void ffInitBoardOptions(FFBoardOptions* options) diff --git a/src/modules/brightness/brightness.c b/src/modules/brightness/brightness.c index 454a580d6f..55548f902c 100644 --- a/src/modules/brightness/brightness.c +++ b/src/modules/brightness/brightness.c @@ -15,13 +15,13 @@ void ffPrintBrightness(FFBrightnessOptions* options) if(error) { - ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(result.length == 0) { - ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, "No result is detected."); + ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No result is detected."); return; } @@ -37,10 +37,10 @@ void ffPrintBrightness(FFBrightnessOptions* options) else { uint32_t moduleIndex = result.length == 1 ? 0 : index + 1; - ffParseFormatString(&key, &options->moduleArgs.key, 2, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 2, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &moduleIndex}, {FF_FORMAT_ARG_TYPE_STRBUF, &item->name} - }); + })); } const double percent = (item->current - item->min) / (item->max - item->min) * 100; @@ -69,13 +69,13 @@ void ffPrintBrightness(FFBrightnessOptions* options) { FF_STRBUF_AUTO_DESTROY valueStr = ffStrbufCreate(); ffPercentAppendNum(&valueStr, percent, options->percent, false); - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_BRIGHTNESS_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_BRIGHTNESS_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &valueStr}, {FF_FORMAT_ARG_TYPE_STRBUF, &item->name}, {FF_FORMAT_ARG_TYPE_DOUBLE, &item->max}, {FF_FORMAT_ARG_TYPE_DOUBLE, &item->min}, {FF_FORMAT_ARG_TYPE_DOUBLE, &item->current}, - }); + })); } ffStrbufClear(&key); @@ -125,7 +125,7 @@ void ffParseBrightnessJsonObject(FFBrightnessOptions* options, yyjson_val* modul if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_BRIGHTNESS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -180,13 +180,13 @@ void ffGenerateBrightnessJsonResult(FF_MAYBE_UNUSED FFBrightnessOptions* options void ffPrintBrightnessHelpFormat(void) { - ffPrintModuleFormatHelp(FF_BRIGHTNESS_MODULE_NAME, "{1}", FF_BRIGHTNESS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_BRIGHTNESS_MODULE_NAME, "{1}", FF_BRIGHTNESS_NUM_FORMAT_ARGS, ((const char* []) { "Screen brightness (percentage)", "Screen name", "Maximum brightness value", "Minimum brightness value", "Current brightness value", - }); + })); } void ffInitBrightnessOptions(FFBrightnessOptions* options) diff --git a/src/modules/camera/camera.c b/src/modules/camera/camera.c index 47f369295b..c976ac7641 100644 --- a/src/modules/camera/camera.c +++ b/src/modules/camera/camera.c @@ -5,7 +5,7 @@ #include "modules/camera/camera.h" #include "util/stringUtils.h" -#define FF_CAMERA_NUM_FORMAT_ARGS 5 +#define FF_CAMERA_NUM_FORMAT_ARGS 6 static void printDevice(FFCameraOptions* options, const FFCameraResult* device, uint8_t index) { @@ -27,14 +27,14 @@ static void printDevice(FFCameraOptions* options, const FFCameraResult* device, } else { - ffPrintFormat(FF_CAMERA_MODULE_NAME, index, &options->moduleArgs, FF_CAMERA_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_CAMERA_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_CAMERA_NUM_FORMAT_ARGS, (((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &device->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->colorspace}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->id}, {FF_FORMAT_ARG_TYPE_UINT, &device->width}, {FF_FORMAT_ARG_TYPE_UINT, &device->height}, - }); + }))); } } @@ -45,13 +45,13 @@ void ffPrintCamera(FFCameraOptions* options) if (error) { - ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if (result.length == 0) { - ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, "No camera found"); + ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No camera found"); return; } @@ -92,7 +92,7 @@ void ffParseCameraJsonObject(FFCameraOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CAMERA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -138,14 +138,14 @@ void ffGenerateCameraJsonResult(FF_MAYBE_UNUSED FFCameraOptions* options, yyjson void ffPrintCameraHelpFormat(void) { - ffPrintModuleFormatHelp(FF_CAMERA_MODULE_NAME, "{1} ({4}px x {5}px)", FF_CAMERA_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_CAMERA_MODULE_NAME, "{1} ({4}px x {5}px)", FF_CAMERA_NUM_FORMAT_ARGS, ((const char* []) { "Device name", "Vendor", "Color space", "Identifier", "Width (in px)", "Height (in px)", - }); + })); } void ffInitCameraOptions(FFCameraOptions* options) diff --git a/src/modules/chassis/chassis.c b/src/modules/chassis/chassis.c index 4966053a17..b24009b42d 100644 --- a/src/modules/chassis/chassis.c +++ b/src/modules/chassis/chassis.c @@ -4,7 +4,7 @@ #include "modules/chassis/chassis.h" #include "util/stringUtils.h" -#define FF_CHASSIS_NUM_FORMAT_ARGS 3 +#define FF_CHASSIS_NUM_FORMAT_ARGS 4 void ffPrintChassis(FFChassisOptions* options) { @@ -18,13 +18,13 @@ void ffPrintChassis(FFChassisOptions* options) if(error) { - ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); goto exit; } if(result.type.length == 0) { - ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "chassis_type is not set by O.E.M."); + ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "chassis_type is not set by O.E.M."); goto exit; } @@ -38,12 +38,12 @@ void ffPrintChassis(FFChassisOptions* options) } else { - ffPrintFormat(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, FF_CHASSIS_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_CHASSIS_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result.type}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.version}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.serial}, - }); + })); } exit: @@ -76,7 +76,7 @@ void ffParseChassisJsonObject(FFChassisOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CHASSIS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -125,12 +125,12 @@ void ffGenerateChassisJsonResult(FF_MAYBE_UNUSED FFChassisOptions* options, yyjs void ffPrintChassisHelpFormat(void) { - ffPrintModuleFormatHelp(FF_CHASSIS_MODULE_NAME, "{1}", FF_CHASSIS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_CHASSIS_MODULE_NAME, "{1}", FF_CHASSIS_NUM_FORMAT_ARGS, ((const char* []) { "chassis type", "chassis vendor", "chassis version", "chassis serial number", - }); + })); } void ffInitChassisOptions(FFChassisOptions* options) diff --git a/src/modules/colors/colors.c b/src/modules/colors/colors.c index 35e2ad16b7..872f911115 100644 --- a/src/modules/colors/colors.c +++ b/src/modules/colors/colors.c @@ -88,7 +88,7 @@ void ffPrintColors(FFColorsOptions* options) if (!flag) { - ffPrintError(FF_COLORS_MODULE_NAME, 0, &options->moduleArgs, "%s", "Nothing to print"); + ffPrintError(FF_COLORS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", "Nothing to print"); } } @@ -166,7 +166,7 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s value: %s", key, error); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s value: %s", key, error); else options->symbol = (FFColorsSymbol) value; continue; @@ -181,7 +181,7 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) if (ffStrEqualsIgnCase(key, "block")) { if (!yyjson_is_obj(val)) - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s value: must be an object", key); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s value: must be an object", key); else { yyjson_val* width = yyjson_obj_get(val, "width"); @@ -192,15 +192,15 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) if (range) { if (!yyjson_is_arr(range) || yyjson_arr_size(range) != 2) - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: must be an array of 2 elements", key); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: must be an array of 2 elements", key); else { uint8_t start = (uint8_t) yyjson_get_uint(yyjson_arr_get(range, 0)); uint8_t end = (uint8_t) yyjson_get_uint(yyjson_arr_get(range, 1)); if (start > end) - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: range[0] > range[1]", key); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: range[0] > range[1]", key); else if (end > 15) - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: range[1] > 15", key); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s.range value: range[1] > 15", key); else { options->block.range[0] = start; @@ -212,7 +212,7 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) continue; } - ffPrintErrorString(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); + ffPrintError(FF_COLORS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); } } diff --git a/src/modules/command/command.c b/src/modules/command/command.c index 9970455adb..c57e910840 100644 --- a/src/modules/command/command.c +++ b/src/modules/command/command.c @@ -22,13 +22,13 @@ void ffPrintCommand(FFCommandOptions* options) if(error) { - ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(!result.length) { - ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, "No result printed"); + ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No result printed"); return; } @@ -39,9 +39,9 @@ void ffPrintCommand(FFCommandOptions* options) } else { - ffPrintFormat(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, FF_COMMAND_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_COMMAND_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result} - }); + })); } } @@ -92,7 +92,7 @@ void ffParseCommandJsonObject(FFCommandOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_COMMAND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -141,9 +141,9 @@ void ffGenerateCommandJsonResult(FF_MAYBE_UNUSED FFCommandOptions* options, yyjs void ffPrintCommandHelpFormat(void) { - ffPrintModuleFormatHelp(FF_COMMAND_MODULE_NAME, "{1}", FF_COMMAND_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_COMMAND_MODULE_NAME, "{1}", FF_COMMAND_NUM_FORMAT_ARGS, ((const char* []) { "Command result" - }); + })); } void ffInitCommandOptions(FFCommandOptions* options) diff --git a/src/modules/cpu/cpu.c b/src/modules/cpu/cpu.c index c7ee463e89..2813103133 100644 --- a/src/modules/cpu/cpu.c +++ b/src/modules/cpu/cpu.c @@ -21,11 +21,11 @@ void ffPrintCPU(FFCPUOptions* options) if(error) { - ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else if(cpu.vendor.length == 0 && cpu.name.length == 0 && cpu.coresOnline <= 1) { - ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, "No CPU detected"); + ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No CPU detected"); } else { @@ -63,7 +63,7 @@ void ffPrintCPU(FFCPUOptions* options) { FF_STRBUF_AUTO_DESTROY tempStr = ffStrbufCreate(); ffTempsAppendNum(cpu.temperature, &tempStr, options->tempConfig); - ffPrintFormat(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, FF_CPU_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_CPU_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &cpu.name}, {FF_FORMAT_ARG_TYPE_STRBUF, &cpu.vendor}, {FF_FORMAT_ARG_TYPE_UINT16, &cpu.coresPhysical}, @@ -72,7 +72,7 @@ void ffPrintCPU(FFCPUOptions* options) {FF_FORMAT_ARG_TYPE_DOUBLE, &cpu.frequencyMin}, {FF_FORMAT_ARG_TYPE_DOUBLE, &cpu.frequencyMax}, {FF_FORMAT_ARG_TYPE_STRBUF, &tempStr} - }); + })); } } @@ -121,7 +121,7 @@ void ffParseCPUJsonObject(FFCPUOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -181,7 +181,7 @@ void ffGenerateCPUJsonResult(FFCPUOptions* options, yyjson_mut_doc* doc, yyjson_ void ffPrintCPUHelpFormat(void) { - ffPrintModuleFormatHelp(FF_CPU_MODULE_NAME, "{1} ({5}) @ {7} GHz", FF_CPU_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_CPU_MODULE_NAME, "{1} ({5}) @ {7} GHz", FF_CPU_NUM_FORMAT_ARGS, ((const char* []) { "Name", "Vendor", "Physical core count", @@ -190,7 +190,7 @@ void ffPrintCPUHelpFormat(void) "Min frequency", "Max frequency", "Temperature (formatted)" - }); + })); } void ffInitCPUOptions(FFCPUOptions* options) diff --git a/src/modules/cpuusage/cpuusage.c b/src/modules/cpuusage/cpuusage.c index be852f0768..0909763f7c 100644 --- a/src/modules/cpuusage/cpuusage.c +++ b/src/modules/cpuusage/cpuusage.c @@ -15,7 +15,7 @@ void ffPrintCPUUsage(FFCPUUsageOptions* options) if(error) { - ffPrintError(FF_CPUUSAGE_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_CPUUSAGE_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -79,13 +79,13 @@ void ffPrintCPUUsage(FFCPUUsageOptions* options) ffPercentAppendNum(&minStr, minValue, options->percent, false); FF_STRBUF_AUTO_DESTROY maxStr = ffStrbufCreate(); ffPercentAppendNum(&maxStr, maxValue, options->percent, false); - ffPrintFormat(FF_CPUUSAGE_DISPLAY_NAME, 0, &options->moduleArgs, FF_CPUUSAGE_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_CPUUSAGE_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_CPUUSAGE_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &avgStr}, {FF_FORMAT_ARG_TYPE_STRBUF, &maxStr}, {FF_FORMAT_ARG_TYPE_UINT, &maxIndex}, {FF_FORMAT_ARG_TYPE_STRBUF, &minStr}, {FF_FORMAT_ARG_TYPE_UINT, &minIndex}, - }); + })); } } @@ -130,7 +130,7 @@ void ffParseCPUUsageJsonObject(FFCPUUsageOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_CPUUSAGE_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CPUUSAGE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -166,13 +166,13 @@ void ffGenerateCPUUsageJsonResult(FF_MAYBE_UNUSED FFCPUUsageOptions* options, yy void ffPrintCPUUsageHelpFormat(void) { - ffPrintModuleFormatHelp(FF_CPUUSAGE_MODULE_NAME, "{1}", FF_CPUUSAGE_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_CPUUSAGE_MODULE_NAME, "{1}", FF_CPUUSAGE_NUM_FORMAT_ARGS, ((const char* []) { "CPU usage (percentage, average)", "CPU usage (percentage, maximum)", "CPU core index of maximum usage", "CPU usage (percentage, minimum)", "CPU core index of minimum usage", - }); + })); } void ffInitCPUUsageOptions(FFCPUUsageOptions* options) diff --git a/src/modules/cursor/cursor.c b/src/modules/cursor/cursor.c index f3d1517655..5493762800 100644 --- a/src/modules/cursor/cursor.c +++ b/src/modules/cursor/cursor.c @@ -16,7 +16,7 @@ void ffPrintCursor(FFCursorOptions* options) ffDetectCursor(&result); if(result.error.length) - ffPrintError(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, "%s", result.error.chars); + ffPrintError(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", result.error.chars); else { ffStrbufRemoveIgnCaseEndS(&result.theme, "cursors"); @@ -38,10 +38,10 @@ void ffPrintCursor(FFCursorOptions* options) } else { - ffPrintFormat(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, FF_CURSOR_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_CURSOR_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result.theme}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.size} - }); + })); } } @@ -73,7 +73,7 @@ void ffParseCursorJsonObject(FFCursorOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CURSOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -112,10 +112,10 @@ void ffGenerateCursorJsonResult(FF_MAYBE_UNUSED FFCursorOptions* options, yyjson void ffPrintCursorHelpFormat(void) { - ffPrintModuleFormatHelp(FF_CURSOR_MODULE_NAME, "{1} ({2}px)", FF_CURSOR_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_CURSOR_MODULE_NAME, "{1} ({2}px)", FF_CURSOR_NUM_FORMAT_ARGS, ((const char* []) { "Cursor theme", "Cursor size" - }); + })); } void ffInitCursorOptions(FFCursorOptions* options) diff --git a/src/modules/custom/custom.c b/src/modules/custom/custom.c index 01eaaa3f5a..b68e19bb90 100644 --- a/src/modules/custom/custom.c +++ b/src/modules/custom/custom.c @@ -8,7 +8,7 @@ void ffPrintCustom(FFCustomOptions* options) { if (options->moduleArgs.outputFormat.length == 0) { - ffPrintError(FF_CUSTOM_MODULE_NAME, 0, &options->moduleArgs, "output format must be set for custom module"); + ffPrintError(FF_CUSTOM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "output format must be set for custom module"); return; } @@ -48,7 +48,7 @@ void ffParseCustomJsonObject(FFCustomOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_CUSTOM_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_CUSTOM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } diff --git a/src/modules/datetime/datetime.c b/src/modules/datetime/datetime.c index 25a685538f..edaca593d4 100644 --- a/src/modules/datetime/datetime.c +++ b/src/modules/datetime/datetime.c @@ -65,7 +65,7 @@ void ffPrintDateTimeFormat(struct tm* tm, const FFModuleArgs* moduleArgs) strftime(result.offsetFromUtc, sizeof(result.offsetFromUtc), "%z", tm); strftime(result.timezoneName, sizeof(result.timezoneName), "%Z", tm); - ffPrintFormat(FF_DATETIME_DISPLAY_NAME, 0, moduleArgs, FF_DATETIME_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_DATETIME_DISPLAY_NAME, 0, moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_DATETIME_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_UINT16, &result.year}, // 1 {FF_FORMAT_ARG_TYPE_UINT8, &result.yearShort}, // 2 {FF_FORMAT_ARG_TYPE_UINT8, &result.month}, // 3 @@ -88,7 +88,7 @@ void ffPrintDateTimeFormat(struct tm* tm, const FFModuleArgs* moduleArgs) {FF_FORMAT_ARG_TYPE_STRING, result.secondPretty}, // 20 {FF_FORMAT_ARG_TYPE_STRING, result.offsetFromUtc}, // 21 {FF_FORMAT_ARG_TYPE_STRING, result.timezoneName}, // 22 - }); + })); } void ffPrintDateTime(FFDateTimeOptions* options) @@ -106,7 +106,7 @@ void ffPrintDateTime(FFDateTimeOptions* options) char buffer[32]; if (strftime(buffer, sizeof(buffer), "%F %T", tm) == 0) //yyyy-MM-dd HH:mm:ss { - ffPrintError(FF_DATETIME_DISPLAY_NAME, 0, &options->moduleArgs, "strftime() failed"); + ffPrintError(FF_DATETIME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "strftime() failed"); return; } @@ -138,7 +138,7 @@ void ffParseDateTimeJsonObject(FFDateTimeOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_DATETIME_DISPLAY_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_DATETIME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -157,7 +157,7 @@ void ffGenerateDateTimeJsonResult(FF_MAYBE_UNUSED FFDateTimeOptions* options, yy void ffPrintDateTimeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_DATETIME_MODULE_NAME, "{1}-{4}-{11} {14}:{18}:{20}", FF_DATETIME_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_DATETIME_MODULE_NAME, "{1}-{4}-{11} {14}:{18}:{20}", FF_DATETIME_NUM_FORMAT_ARGS, ((const char* []) { "year", "last two digits of year", "month", @@ -180,7 +180,7 @@ void ffPrintDateTimeHelpFormat(void) "second with leading zero", "offset from UTC in the ISO 8601 format", "locale-dependent timezone name or abbreviation", - }); + })); } void ffInitDateTimeOptions(FFDateTimeOptions* options) diff --git a/src/modules/de/de.c b/src/modules/de/de.c index e71b3334bd..b9e84a96b9 100644 --- a/src/modules/de/de.c +++ b/src/modules/de/de.c @@ -13,7 +13,7 @@ void ffPrintDE(FFDEOptions* options) if(result->dePrettyName.length == 0) { - ffPrintError(FF_DE_MODULE_NAME, 0, &options->moduleArgs, "No DE found"); + ffPrintError(FF_DE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No DE found"); return; } @@ -36,11 +36,11 @@ void ffPrintDE(FFDEOptions* options) } else { - ffPrintFormat(FF_DE_MODULE_NAME, 0, &options->moduleArgs, FF_DE_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_DE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_DE_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->deProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->dePrettyName}, {FF_FORMAT_ARG_TYPE_STRBUF, &version} - }); + })); } } @@ -79,7 +79,7 @@ void ffParseDEJsonObject(FFDEOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_DE_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_DE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -115,11 +115,11 @@ void ffGenerateDEJsonResult(FF_MAYBE_UNUSED FFDEOptions* options, yyjson_mut_doc void ffPrintDEHelpFormat(void) { - ffPrintModuleFormatHelp(FF_DE_MODULE_NAME, "{2} {3}", FF_DE_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_DE_MODULE_NAME, "{2} {3}", FF_DE_NUM_FORMAT_ARGS, ((const char* []) { "DE process name", "DE pretty name", "DE version" - }); + })); } void ffInitDEOptions(FFDEOptions* options) diff --git a/src/modules/disk/disk.c b/src/modules/disk/disk.c index ea209dcea7..b5137fa95b 100644 --- a/src/modules/disk/disk.c +++ b/src/modules/disk/disk.c @@ -34,11 +34,11 @@ static void printDisk(FFDiskOptions* options, const FFDisk* disk) } else { - ffParseFormatString(&key, &options->moduleArgs.key, 3, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 3, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &disk->mountpoint}, {FF_FORMAT_ARG_TYPE_STRBUF, &disk->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &disk->mountFrom}, - }); + })); } FF_STRBUF_AUTO_DESTROY usedPretty = ffStrbufCreate(); @@ -112,7 +112,7 @@ static void printDisk(FFDiskOptions* options, const FFDisk* disk) bool isExternal = !!(disk->type & FF_DISK_VOLUME_TYPE_EXTERNAL_BIT); bool isHidden = !!(disk->type & FF_DISK_VOLUME_TYPE_HIDDEN_BIT); bool isReadOnly = !!(disk->type & FF_DISK_VOLUME_TYPE_READONLY_BIT); - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISK_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISK_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &usedPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &totalPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &bytesPercentageStr}, @@ -124,7 +124,7 @@ static void printDisk(FFDiskOptions* options, const FFDisk* disk) {FF_FORMAT_ARG_TYPE_STRBUF, &disk->filesystem}, {FF_FORMAT_ARG_TYPE_STRBUF, &disk->name}, {FF_FORMAT_ARG_TYPE_BOOL, &isReadOnly}, - }); + })); } } @@ -139,7 +139,7 @@ static void printMountpoint(FFDiskOptions* options, const FFlist* disks, const c } } - ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, "No disk found for mountpoint: %s", mountpoint); + ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No disk found for mountpoint: %s", mountpoint); } static void printMountpoints(FFDiskOptions* options, const FFlist* disks) @@ -183,7 +183,7 @@ void ffPrintDisk(FFDiskOptions* options) if(error) { - ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else { @@ -360,7 +360,7 @@ void ffParseDiskJsonObject(FFDiskOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_DISK_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -453,7 +453,7 @@ void ffGenerateDiskJsonResult(FFDiskOptions* options, yyjson_mut_doc* doc, yyjso void ffPrintDiskHelpFormat(void) { - ffPrintModuleFormatHelp(FF_DISK_MODULE_NAME, "{1} / {2} ({3}) - {9}", FF_DISK_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_DISK_MODULE_NAME, "{1} / {2} ({3}) - {9}", FF_DISK_NUM_FORMAT_ARGS, ((const char* []) { "Size used", "Size total", "Size percentage", @@ -462,8 +462,10 @@ void ffPrintDiskHelpFormat(void) "Files percentage", "True if external volume", "True if hidden volume", - "Filesystem" - }); + "Filesystem", + "Label / name", + "True if read-only", + })); } void ffInitDiskOptions(FFDiskOptions* options) diff --git a/src/modules/diskio/diskio.c b/src/modules/diskio/diskio.c index 4afa051cef..dc45f4c973 100644 --- a/src/modules/diskio/diskio.c +++ b/src/modules/diskio/diskio.c @@ -22,11 +22,11 @@ static void formatKey(const FFDiskIOOptions* options, FFDiskIOResult* dev, uint3 else { ffStrbufClear(key); - ffParseFormatString(key, &options->moduleArgs.key, 2, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(key, &options->moduleArgs.key, 3, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &index}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->devPath}, - }); + })); } } @@ -37,7 +37,7 @@ void ffPrintDiskIO(FFDiskIOOptions* options) if(error) { - ffPrintError(FF_DISKIO_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_DISKIO_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -74,7 +74,7 @@ void ffPrintDiskIO(FFDiskIOOptions* options) ffParseSize(dev->bytesWritten, &buffer2); if (!options->detectTotal) ffStrbufAppendS(&buffer, "/s"); - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISKIO_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISKIO_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &buffer}, {FF_FORMAT_ARG_TYPE_STRBUF, &buffer2}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->name}, @@ -83,7 +83,7 @@ void ffPrintDiskIO(FFDiskIOOptions* options) {FF_FORMAT_ARG_TYPE_UINT64, &dev->bytesWritten}, {FF_FORMAT_ARG_TYPE_UINT64, &dev->readCount}, {FF_FORMAT_ARG_TYPE_UINT64, &dev->writeCount}, - }); + })); } ++index; } @@ -142,7 +142,7 @@ void ffParseDiskIOJsonObject(FFDiskIOOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_DISKIO_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_DISKIO_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -192,7 +192,7 @@ void ffGenerateDiskIOJsonResult(FFDiskIOOptions* options, yyjson_mut_doc* doc, y void ffPrintDiskIOHelpFormat(void) { - ffPrintModuleFormatHelp(FF_DISKIO_MODULE_NAME, "{1} (R) - {2} (W)", FF_DISKIO_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_DISKIO_MODULE_NAME, "{1} (R) - {2} (W)", FF_DISKIO_NUM_FORMAT_ARGS, ((const char* []) { "Size of data read [per second] (formatted)", "Size of data written [per second] (formatted)", "Device name", @@ -201,7 +201,7 @@ void ffPrintDiskIOHelpFormat(void) "Size of data written [per second] (in bytes)", "Number of reads", "Number of writes", - }); + })); } void ffInitDiskIOOptions(FFDiskIOOptions* options) diff --git a/src/modules/display/display.c b/src/modules/display/display.c index 35540eea81..98bc3ac353 100644 --- a/src/modules/display/display.c +++ b/src/modules/display/display.c @@ -4,7 +4,7 @@ #include "modules/display/display.h" #include "util/stringUtils.h" -#define FF_DISPLAY_NUM_FORMAT_ARGS 8 +#define FF_DISPLAY_NUM_FORMAT_ARGS 9 static int sortByNameAsc(FFDisplayResult* a, FFDisplayResult* b) { @@ -22,7 +22,7 @@ void ffPrintDisplay(FFDisplayOptions* options) if(dsResult->displays.length == 0) { - ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, "Couldn't detect display"); + ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Couldn't detect display"); return; } @@ -89,11 +89,11 @@ void ffPrintDisplay(FFDisplayOptions* options) } else { - ffParseFormatString(&key, &options->moduleArgs.key, 3, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 3, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &moduleIndex}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->name}, {FF_FORMAT_ARG_TYPE_STRING, displayType}, - }); + })); } if(options->moduleArgs.outputFormat.length == 0) @@ -125,7 +125,7 @@ void ffPrintDisplay(FFDisplayOptions* options) } else { - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISPLAY_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_DISPLAY_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_UINT, &result->width}, {FF_FORMAT_ARG_TYPE_UINT, &result->height}, {FF_FORMAT_ARG_TYPE_DOUBLE, &result->refreshRate}, @@ -135,7 +135,7 @@ void ffPrintDisplay(FFDisplayOptions* options) {FF_FORMAT_ARG_TYPE_STRING, displayType}, {FF_FORMAT_ARG_TYPE_UINT, &result->rotation}, {FF_FORMAT_ARG_TYPE_BOOL, &result->primary}, - }); + })); } } } @@ -205,7 +205,7 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, "Invalid %s value: %s", key, error); + ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error); else options->compactType = (FFDisplayCompactType) value; continue; @@ -227,13 +227,13 @@ void ffParseDisplayJsonObject(FFDisplayOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, "Invalid %s value: %s", key, error); + ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error); else options->order = (FFDisplayOrder) value; continue; } - ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_DISPLAY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -309,7 +309,7 @@ void ffGenerateDisplayJsonResult(FF_MAYBE_UNUSED FFDisplayOptions* options, yyjs void ffPrintDisplayHelpFormat(void) { - ffPrintModuleFormatHelp(FF_DISPLAY_MODULE_NAME, "{1}x{2} @ {3}Hz (as {4}x{5}) [{7}]", FF_DISPLAY_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_DISPLAY_MODULE_NAME, "{1}x{2} @ {3}Hz (as {4}x{5}) [{7}]", FF_DISPLAY_NUM_FORMAT_ARGS, ((const char* []) { "Screen width (in pixels)", "Screen height (in pixels)", "Screen refresh rate (in Hz)", @@ -318,7 +318,8 @@ void ffPrintDisplayHelpFormat(void) "Screen name", "Screen type (builtin, external or unknown)", "Screen rotation (in degrees)", - }); + "True if being the primary screen", + })); } void ffInitDisplayOptions(FFDisplayOptions* options) diff --git a/src/modules/font/font.c b/src/modules/font/font.c index 3b1f1029a9..4cfeeb6d9f 100644 --- a/src/modules/font/font.c +++ b/src/modules/font/font.c @@ -17,7 +17,7 @@ void ffPrintFont(FFFontOptions* options) if(error) { - ffPrintError(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else { @@ -28,13 +28,13 @@ void ffPrintFont(FFFontOptions* options) } else { - ffPrintFormat(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_FONT_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &font.fonts[0]}, {FF_FORMAT_ARG_TYPE_STRBUF, &font.fonts[1]}, {FF_FORMAT_ARG_TYPE_STRBUF, &font.fonts[2]}, {FF_FORMAT_ARG_TYPE_STRBUF, &font.fonts[3]}, {FF_FORMAT_ARG_TYPE_STRBUF, &font.display}, - }); + })); } } @@ -66,7 +66,7 @@ void ffParseFontJsonObject(FFFontOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_FONT_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -106,13 +106,13 @@ void ffGenerateFontJsonResult(FF_MAYBE_UNUSED FFFontOptions* options, yyjson_mut void ffPrintFontHelpFormat(void) { - ffPrintModuleFormatHelp(FF_FONT_MODULE_NAME, "{5}", FF_FONT_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_FONT_MODULE_NAME, "{5}", FF_FONT_NUM_FORMAT_ARGS, ((const char* []) { "Font 1", "Font 2", "Font 3", "Font 4", "Combined fonts" - }); + })); } void ffInitFontOptions(FFFontOptions* options) diff --git a/src/modules/gamepad/gamepad.c b/src/modules/gamepad/gamepad.c index e50fb22d76..ccba952b21 100644 --- a/src/modules/gamepad/gamepad.c +++ b/src/modules/gamepad/gamepad.c @@ -5,7 +5,7 @@ #include "modules/gamepad/gamepad.h" #include "util/stringUtils.h" -#define FF_GAMEPAD_NUM_FORMAT_ARGS 2 +#define FF_GAMEPAD_NUM_FORMAT_ARGS 3 static void printDevice(FFGamepadOptions* options, const FFGamepadDevice* device, uint8_t index) { @@ -28,11 +28,11 @@ static void printDevice(FFGamepadOptions* options, const FFGamepadDevice* device FF_STRBUF_AUTO_DESTROY percentageStr = ffStrbufCreate(); ffPercentAppendNum(&percentageStr, device->battery, options->percent, false); - ffPrintFormat(FF_GAMEPAD_MODULE_NAME, index, &options->moduleArgs, FF_GAMEPAD_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_GAMEPAD_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_GAMEPAD_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &device->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->serial}, {FF_FORMAT_ARG_TYPE_STRBUF, &percentageStr}, - }); + })); } } @@ -44,13 +44,13 @@ void ffPrintGamepad(FFGamepadOptions* options) if(error) { - ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(!result.length) { - ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, "No devices detected"); + ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No devices detected"); return; } @@ -92,7 +92,7 @@ void ffParseGamepadJsonObject(FFGamepadOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_GAMEPAD_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -141,11 +141,11 @@ void ffGenerateGamepadJsonResult(FF_MAYBE_UNUSED FFGamepadOptions* options, yyjs void ffPrintGamepadHelpFormat(void) { - ffPrintModuleFormatHelp(FF_GAMEPAD_MODULE_NAME, "{1} ({3})", FF_GAMEPAD_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_GAMEPAD_MODULE_NAME, "{1} ({3})", FF_GAMEPAD_NUM_FORMAT_ARGS, ((const char* []) { "Name", "Serial number", "Battery percentage", - }); + })); } void ffInitGamepadOptions(FFGamepadOptions* options) diff --git a/src/modules/gpu/gpu.c b/src/modules/gpu/gpu.c index 7c3d5b55f4..aa63b16ddc 100644 --- a/src/modules/gpu/gpu.c +++ b/src/modules/gpu/gpu.c @@ -75,7 +75,7 @@ static void printGPUResult(FFGPUOptions* options, uint8_t index, const FFGPUResu { FF_STRBUF_AUTO_DESTROY tempStr = ffStrbufCreate(); ffTempsAppendNum(gpu->temperature, &tempStr, options->tempConfig); - ffPrintFormat(FF_GPU_MODULE_NAME, index, &options->moduleArgs, FF_GPU_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_GPU_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_GPU_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &gpu->vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &gpu->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &gpu->driver}, @@ -88,7 +88,7 @@ static void printGPUResult(FFGPUOptions* options, uint8_t index, const FFGPUResu {FF_FORMAT_ARG_TYPE_UINT64, &gpu->shared.used}, {FF_FORMAT_ARG_TYPE_STRBUF, &gpu->platformApi}, {FF_FORMAT_ARG_TYPE_DOUBLE, &gpu->frequency}, - }); + })); } } @@ -98,7 +98,7 @@ void ffPrintGPU(FFGPUOptions* options) const char* error = ffDetectGPU(options, &gpus); if (error) { - ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -120,7 +120,7 @@ void ffPrintGPU(FFGPUOptions* options) printGPUResult(options, selectedGPUs.length == 1 ? 0 : (uint8_t) (i + 1), * (const FFGPUResult**) ffListGet(&selectedGPUs, i)); if(selectedGPUs.length == 0) - ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, "No GPUs found"); + ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No GPUs found"); FF_LIST_FOR_EACH(FFGPUResult, gpu, gpus) { @@ -206,7 +206,7 @@ void ffParseGPUJsonObject(FFGPUOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, "Invalid %s value: %s", key, error); + ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error); else options->hideType = (FFGPUType) value; continue; @@ -215,7 +215,7 @@ void ffParseGPUJsonObject(FFGPUOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_GPU_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -332,7 +332,7 @@ void ffGenerateGPUJsonResult(FFGPUOptions* options, yyjson_mut_doc* doc, yyjson_ void ffPrintGPUHelpFormat(void) { - ffPrintModuleFormatHelp(FF_GPU_MODULE_NAME, "{1} {2}", FF_GPU_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_GPU_MODULE_NAME, "{1} {2}", FF_GPU_NUM_FORMAT_ARGS, ((const char* []) { "GPU vendor", "GPU name", "GPU driver", @@ -345,7 +345,7 @@ void ffPrintGPUHelpFormat(void) "GPU used shared memory", "The platform API that GPU supports", "Current frequency in GHz", - }); + })); } void ffInitGPUOptions(FFGPUOptions* options) diff --git a/src/modules/host/host.c b/src/modules/host/host.c index 08f11c8e77..3c93f128bb 100644 --- a/src/modules/host/host.c +++ b/src/modules/host/host.c @@ -20,13 +20,13 @@ void ffPrintHost(FFHostOptions* options) const char* error = ffDetectHost(&host); if(error) { - ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); goto exit; } if(host.family.length == 0 && host.name.length == 0) { - ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, "neither product_family nor product_name is set by O.E.M."); + ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "neither product_family nor product_name is set by O.E.M."); goto exit; } @@ -48,7 +48,7 @@ void ffPrintHost(FFHostOptions* options) } else { - ffPrintFormat(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_HOST_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_HOST_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &host.family}, {FF_FORMAT_ARG_TYPE_STRBUF, &host.name}, {FF_FORMAT_ARG_TYPE_STRBUF, &host.version}, @@ -56,7 +56,7 @@ void ffPrintHost(FFHostOptions* options) {FF_FORMAT_ARG_TYPE_STRBUF, &host.vendor}, {FF_FORMAT_ARG_TYPE_STRBUF, &host.serial}, {FF_FORMAT_ARG_TYPE_STRBUF, &host.uuid}, - }); + })); } exit: @@ -92,7 +92,7 @@ void ffParseHostJsonObject(FFHostOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -149,7 +149,7 @@ void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut void ffPrintHostHelpFormat(void) { - ffPrintModuleFormatHelp(FF_HOST_MODULE_NAME, "{2} {3}", FF_HOST_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_HOST_MODULE_NAME, "{2} {3}", FF_HOST_NUM_FORMAT_ARGS, ((const char* []) { "product family", "product name", "product version", @@ -157,7 +157,7 @@ void ffPrintHostHelpFormat(void) "product vendor", "product serial number", "product uuid", - }); + })); } void ffInitHostOptions(FFHostOptions* options) diff --git a/src/modules/icons/icons.c b/src/modules/icons/icons.c index 8da7ebc282..771b64576b 100644 --- a/src/modules/icons/icons.c +++ b/src/modules/icons/icons.c @@ -13,7 +13,7 @@ void ffPrintIcons(FFIconsOptions* options) if(error) { - ffPrintError(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -24,9 +24,9 @@ void ffPrintIcons(FFIconsOptions* options) } else { - ffPrintFormat(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, FF_ICONS_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_ICONS_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &icons} - }); + })); } } @@ -53,7 +53,7 @@ void ffParseIconsJsonObject(FFIconsOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_ICONS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -81,9 +81,9 @@ void ffGenerateIconsJsonResult(FF_MAYBE_UNUSED FFIconsOptions* options, yyjson_m void ffPrintIconsHelpFormat(void) { - ffPrintModuleFormatHelp(FF_ICONS_MODULE_NAME, "{1}", FF_ICONS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_ICONS_MODULE_NAME, "{1}", FF_ICONS_NUM_FORMAT_ARGS, ((const char* []) { "Combined icons" - }); + })); } void ffInitIconsOptions(FFIconsOptions* options) diff --git a/src/modules/kernel/kernel.c b/src/modules/kernel/kernel.c index c25d75fe41..2839af7a0c 100644 --- a/src/modules/kernel/kernel.c +++ b/src/modules/kernel/kernel.c @@ -3,7 +3,7 @@ #include "modules/kernel/kernel.h" #include "util/stringUtils.h" -#define FF_KERNEL_NUM_FORMAT_ARGS 4 +#define FF_KERNEL_NUM_FORMAT_ARGS 5 void ffPrintKernel(FFKernelOptions* options) { @@ -20,13 +20,13 @@ void ffPrintKernel(FFKernelOptions* options) } else { - ffPrintFormat(FF_KERNEL_MODULE_NAME, 0, &options->moduleArgs, FF_KERNEL_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_KERNEL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_KERNEL_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &platform->systemName}, {FF_FORMAT_ARG_TYPE_STRBUF, &platform->systemRelease}, {FF_FORMAT_ARG_TYPE_STRBUF, &platform->systemVersion}, {FF_FORMAT_ARG_TYPE_STRBUF, &platform->systemArchitecture}, {FF_FORMAT_ARG_TYPE_STRBUF, &platform->systemDisplayVersion} - }); + })); } } @@ -53,7 +53,7 @@ void ffParseKernelJsonObject(FFKernelOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_KERNEL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_KERNEL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -77,11 +77,13 @@ void ffGenerateKernelJsonResult(FF_MAYBE_UNUSED FFKernelOptions* options, yyjson void ffPrintKernelHelpFormat(void) { - ffPrintModuleFormatHelp(FF_KERNEL_MODULE_NAME, "{2}", FF_KERNEL_NUM_FORMAT_ARGS, (const char* []) { - "Kernel sysname", - "Kernel release", - "Kernel version" - }); + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_KERNEL_MODULE_NAME, "{2}", FF_KERNEL_NUM_FORMAT_ARGS, ((const char* []) { + "Sysname", + "Release", + "Version", + "Architecture", + "Display version", + })); } void ffInitKernelOptions(FFKernelOptions* options) diff --git a/src/modules/lm/lm.c b/src/modules/lm/lm.c index f3652a4651..24e497bcf8 100644 --- a/src/modules/lm/lm.c +++ b/src/modules/lm/lm.c @@ -16,13 +16,13 @@ void ffPrintLM(FFLMOptions* options) if(error) { - ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(result.service.length == 0) { - ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, "No LM service found"); + ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No LM service found"); return; } @@ -38,11 +38,11 @@ void ffPrintLM(FFLMOptions* options) } else { - ffPrintFormat(FF_LM_MODULE_NAME, 0, &options->moduleArgs, FF_LM_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_LM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_LM_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result.service}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.type}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.version}, - }); + })); } ffStrbufDestroy(&result.service); ffStrbufDestroy(&result.type); @@ -72,7 +72,7 @@ void ffParseLMJsonObject(FFLMOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_LM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -117,11 +117,11 @@ void ffGenerateLMJsonResult(FF_MAYBE_UNUSED FFLMOptions* options, yyjson_mut_doc void ffPrintLMHelpFormat(void) { - ffPrintModuleFormatHelp(FF_LM_MODULE_NAME, "{1} {3} ({2})", FF_LM_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_LM_MODULE_NAME, "{1} {3} ({2})", FF_LM_NUM_FORMAT_ARGS, ((const char* []) { "LM service", "LM type", "LM version" - }); + })); } void ffInitLMOptions(FFLMOptions* options) diff --git a/src/modules/locale/locale.c b/src/modules/locale/locale.c index 4baeb3d26c..c797eba34e 100644 --- a/src/modules/locale/locale.c +++ b/src/modules/locale/locale.c @@ -13,7 +13,7 @@ void ffPrintLocale(FFLocaleOptions* options) ffDetectLocale(&locale); if(locale.length == 0) { - ffPrintError(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, "No locale found"); + ffPrintError(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No locale found"); return; } @@ -24,9 +24,9 @@ void ffPrintLocale(FFLocaleOptions* options) } else { - ffPrintFormat(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, FF_LOCALE_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_LOCALE_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &locale} - }); + })); } } @@ -53,7 +53,7 @@ void ffParseLocaleJsonObject(FFLocaleOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_LOCALE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -81,9 +81,9 @@ void ffGenerateLocaleJsonResult(FF_MAYBE_UNUSED FFLocaleOptions* options, yyjson void ffPrintLocaleHelpFormat(void) { - ffPrintModuleFormatHelp(FF_LOCALE_MODULE_NAME, "{1}", FF_LOCALE_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_LOCALE_MODULE_NAME, "{1}", FF_LOCALE_NUM_FORMAT_ARGS, ((const char* []) { "Locale code" - }); + })); } void ffInitLocaleOptions(FFLocaleOptions* options) diff --git a/src/modules/localip/localip.c b/src/modules/localip/localip.c index 2b0e25dc4f..4541154e17 100644 --- a/src/modules/localip/localip.c +++ b/src/modules/localip/localip.c @@ -25,11 +25,11 @@ static void formatKey(const FFLocalIpOptions* options, FFLocalIpResult* ip, uint else { ffStrbufClear(key); - ffParseFormatString(key, &options->moduleArgs.key, 3, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(key, &options->moduleArgs.key, 3, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &index}, {FF_FORMAT_ARG_TYPE_STRBUF, &ip->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &ip->mac}, - }); + })); } } @@ -66,13 +66,13 @@ void ffPrintLocalIp(FFLocalIpOptions* options) if(error) { - ffPrintError(FF_LOCALIP_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_LOCALIP_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(results.length == 0) { - ffPrintError(FF_LOCALIP_DISPLAY_NAME, 0, &options->moduleArgs, "Failed to detect any IPs"); + ffPrintError(FF_LOCALIP_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Failed to detect any IPs"); return; } @@ -110,13 +110,13 @@ void ffPrintLocalIp(FFLocalIpOptions* options) } else { - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_LOCALIP_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_LOCALIP_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &ip->ipv4}, {FF_FORMAT_ARG_TYPE_STRBUF, &ip->ipv6}, {FF_FORMAT_ARG_TYPE_STRBUF, &ip->mac}, {FF_FORMAT_ARG_TYPE_STRBUF, &ip->name}, {FF_FORMAT_ARG_TYPE_BOOL, &ip->defaultRoute}, - }); + })); } ++index; } @@ -268,7 +268,7 @@ void ffParseLocalIpJsonObject(FFLocalIpOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_LOCALIP_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_LOCALIP_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -345,13 +345,13 @@ void ffGenerateLocalIpJsonResult(FF_MAYBE_UNUSED FFLocalIpOptions* options, yyjs void ffPrintLocalIpHelpFormat(void) { - ffPrintModuleFormatHelp(FF_LOCALIP_MODULE_NAME, "{1}", FF_LOCALIP_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_LOCALIP_MODULE_NAME, "{1}", FF_LOCALIP_NUM_FORMAT_ARGS, ((const char* []) { "Local IPv4 address", "Local IPv6 address", "Physical (MAC) address", "Interface name", "Is default route" - }); + })); } void ffInitLocalIpOptions(FFLocalIpOptions* options) diff --git a/src/modules/media/media.c b/src/modules/media/media.c index d816d44f23..22c1a2f94d 100644 --- a/src/modules/media/media.c +++ b/src/modules/media/media.c @@ -49,7 +49,7 @@ void ffPrintMedia(FFMediaOptions* options) if(media->error.length > 0) { - ffPrintError(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, "%s", media->error.chars); + ffPrintError(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", media->error.chars); return; } @@ -95,13 +95,13 @@ void ffPrintMedia(FFMediaOptions* options) } else { - ffPrintFormat(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, FF_MEDIA_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_MEDIA_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &songPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->song}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->artist}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->album}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->status} - }); + })); } } @@ -128,7 +128,7 @@ void ffParseMediaJsonObject(FFMediaOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_MEDIA_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -159,13 +159,13 @@ void ffGenerateMediaJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_m void ffPrintMediaHelpFormat(void) { - ffPrintModuleFormatHelp(FF_MEDIA_MODULE_NAME, "{3} - {1} ({5})", FF_MEDIA_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_MEDIA_MODULE_NAME, "{3} - {1} ({5})", FF_MEDIA_NUM_FORMAT_ARGS, ((const char* []) { "Pretty media name", "Media name", "Artist name", "Album name", "Status", - }); + })); } void ffInitMediaOptions(FFMediaOptions* options) diff --git a/src/modules/memory/memory.c b/src/modules/memory/memory.c index e7bd5c1054..52ec97939b 100644 --- a/src/modules/memory/memory.c +++ b/src/modules/memory/memory.c @@ -15,7 +15,7 @@ void ffPrintMemory(FFMemoryOptions* options) if(error) { - ffPrintError(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -58,11 +58,11 @@ void ffPrintMemory(FFMemoryOptions* options) { FF_STRBUF_AUTO_DESTROY percentageStr = ffStrbufCreate(); ffPercentAppendNum(&percentageStr, percentage, options->percent, false); - ffPrintFormat(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, FF_MEMORY_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_MEMORY_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &usedPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &totalPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &percentageStr}, - }); + })); } } @@ -95,7 +95,7 @@ void ffParseMemoryJsonObject(FFMemoryOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_MEMORY_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -127,11 +127,11 @@ void ffGenerateMemoryJsonResult(FF_MAYBE_UNUSED FFMemoryOptions* options, yyjson void ffPrintMemoryHelpFormat(void) { - ffPrintModuleFormatHelp(FF_MEMORY_MODULE_NAME, "{1} / {2} ({3})", FF_MEMORY_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_MEMORY_MODULE_NAME, "{1} / {2} ({3})", FF_MEMORY_NUM_FORMAT_ARGS, ((const char* []) { "Used size", "Total size", - "Percentage used" - }); + "Percentage used", + })); } void ffInitMemoryOptions(FFMemoryOptions* options) diff --git a/src/modules/monitor/monitor.c b/src/modules/monitor/monitor.c index 776d4fd187..cc4d82eed4 100644 --- a/src/modules/monitor/monitor.c +++ b/src/modules/monitor/monitor.c @@ -6,7 +6,7 @@ #include -#define FF_MONITOR_NUM_FORMAT_ARGS 7 +#define FF_MONITOR_NUM_FORMAT_ARGS 10 void ffPrintMonitor(FFMonitorOptions* options) { @@ -16,13 +16,13 @@ void ffPrintMonitor(FFMonitorOptions* options) if(error) { - ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(!result.length) { - ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, "No physical display detected"); + ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No physical display detected"); return; } @@ -41,10 +41,10 @@ void ffPrintMonitor(FFMonitorOptions* options) else { uint32_t moduleIndex = result.length == 1 ? 0 : index + 1; - ffParseFormatString(&key, &options->moduleArgs.key, 2, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, 2, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &moduleIndex}, {FF_FORMAT_ARG_TYPE_STRBUF, &display->name}, - }); + })); } if(options->moduleArgs.outputFormat.length == 0) @@ -68,7 +68,7 @@ void ffPrintMonitor(FFMonitorOptions* options) else buf[0] = '\0'; - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_MONITOR_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_MONITOR_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &display->name}, {FF_FORMAT_ARG_TYPE_UINT, &display->width}, {FF_FORMAT_ARG_TYPE_UINT, &display->height}, @@ -79,7 +79,7 @@ void ffPrintMonitor(FFMonitorOptions* options) {FF_FORMAT_ARG_TYPE_UINT16, &display->manufactureYear}, {FF_FORMAT_ARG_TYPE_UINT16, &display->manufactureWeek}, {FF_FORMAT_ARG_TYPE_STRING, buf}, - }); + })); } ffStrbufDestroy(&display->name); @@ -110,7 +110,7 @@ void ffParseMonitorJsonObject(FFMonitorOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_MONITOR_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -179,17 +179,18 @@ void ffGenerateMonitorJsonResult(FF_MAYBE_UNUSED FFMonitorOptions* options, yyjs void ffPrintMonitorHelpFormat(void) { - ffPrintModuleFormatHelp(FF_MONITOR_MODULE_NAME, "{2}x{3} px - {4}x{5} mm ({6} inches, {7} ppi)", FF_MONITOR_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_MONITOR_MODULE_NAME, "{2}x{3} px - {4}x{5} mm ({6} inches, {7} ppi)", FF_MONITOR_NUM_FORMAT_ARGS, ((const char* []) { "Display name", - "Display native resolution width in pixels", - "Display native resolution height in pixels", - "Display physical width in millimeters", - "Display physical height in millimeters", - "Display physical diagonal length in inches", + "Native resolution width in pixels", + "Native resolution height in pixels", + "Physical width in millimeters", + "Physical height in millimeters", + "Physical diagonal length in inches", + "Pixels per inch (PPI)", "Year of manufacturing", "Nth week of manufacturing in the year", "Serial number", - }); + })); } void ffInitMonitorOptions(FFMonitorOptions* options) diff --git a/src/modules/netio/netio.c b/src/modules/netio/netio.c index ffee3e23d3..e230536ecd 100644 --- a/src/modules/netio/netio.c +++ b/src/modules/netio/netio.c @@ -25,10 +25,10 @@ static void formatKey(const FFNetIOOptions* options, FFNetIOResult* inf, uint32_ else { ffStrbufClear(key); - ffParseFormatString(key, &options->moduleArgs.key, 2, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(key, &options->moduleArgs.key, 2, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &index}, {FF_FORMAT_ARG_TYPE_STRBUF, &inf->name}, - }); + })); } } @@ -39,7 +39,7 @@ void ffPrintNetIO(FFNetIOOptions* options) if(error) { - ffPrintError(FF_NETIO_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_NETIO_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -79,7 +79,7 @@ void ffPrintNetIO(FFNetIOOptions* options) ffParseSize(inf->txBytes, &buffer2); if (!options->detectTotal) ffStrbufAppendS(&buffer2, "/s"); - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_NETIO_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_NETIO_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &buffer}, {FF_FORMAT_ARG_TYPE_STRBUF, &buffer2}, {FF_FORMAT_ARG_TYPE_STRBUF, &inf->name}, @@ -92,7 +92,7 @@ void ffPrintNetIO(FFNetIOOptions* options) {FF_FORMAT_ARG_TYPE_UINT64, &inf->txErrors}, {FF_FORMAT_ARG_TYPE_UINT64, &inf->rxDrops}, {FF_FORMAT_ARG_TYPE_UINT64, &inf->txDrops}, - }); + })); } ++index; } @@ -162,7 +162,7 @@ void ffParseNetIOJsonObject(FFNetIOOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_NETIO_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_NETIO_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -218,7 +218,7 @@ void ffGenerateNetIOJsonResult(FFNetIOOptions* options, yyjson_mut_doc* doc, yyj void ffPrintNetIOHelpFormat(void) { - ffPrintModuleFormatHelp(FF_NETIO_MODULE_NAME, "{1} (IN) - {2} (OUT)", FF_NETIO_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_NETIO_MODULE_NAME, "{1} (IN) - {2} (OUT)", FF_NETIO_NUM_FORMAT_ARGS, ((const char* []) { "Size of data received [per second] (formatted)", "Size of data sent [per second] (formatted)", "Interface name", @@ -231,7 +231,7 @@ void ffPrintNetIOHelpFormat(void) "Number of errors sent [per second]", "Number of packets dropped when receiving [per second]", "Number of packets dropped when sending [per second]", - }); + })); } void ffInitNetIOOptions(FFNetIOOptions* options) diff --git a/src/modules/opencl/opencl.c b/src/modules/opencl/opencl.c index f5c563129f..ed8e053c55 100644 --- a/src/modules/opencl/opencl.c +++ b/src/modules/opencl/opencl.c @@ -16,7 +16,7 @@ void ffPrintOpenCL(FFOpenCLOptions* options) const char* error = ffDetectOpenCL(&opencl); if(error != NULL) - ffPrintError(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); else { if(options->moduleArgs.outputFormat.length == 0) @@ -26,11 +26,11 @@ void ffPrintOpenCL(FFOpenCLOptions* options) } else { - ffPrintFormat(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, FF_OPENCL_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_OPENCL_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &opencl.version}, {FF_FORMAT_ARG_TYPE_STRBUF, &opencl.device}, {FF_FORMAT_ARG_TYPE_STRBUF, &opencl.vendor}, - }); + })); } } @@ -62,7 +62,7 @@ void ffParseOpenCLJsonObject(FFOpenCLOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_OPENCL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -102,11 +102,11 @@ void ffGenerateOpenCLJsonResult(FF_MAYBE_UNUSED FFOpenCLOptions* options, yyjson void ffPrintOpenCLHelpFormat(void) { - ffPrintModuleFormatHelp(FF_OPENCL_MODULE_NAME, "{1}", FF_OPENCL_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_OPENCL_MODULE_NAME, "{1}", FF_OPENCL_NUM_FORMAT_ARGS, ((const char* []) { "version", "device", "vendor" - }); + })); } void ffInitOpenCLOptions(FFOpenCLOptions* options) diff --git a/src/modules/opengl/opengl.c b/src/modules/opengl/opengl.c index 2925a42e4e..17fbe52c4e 100644 --- a/src/modules/opengl/opengl.c +++ b/src/modules/opengl/opengl.c @@ -17,7 +17,7 @@ void ffPrintOpenGL(FFOpenGLOptions* options) const char* error = ffDetectOpenGL(options, &result); if(error) { - ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -28,12 +28,12 @@ void ffPrintOpenGL(FFOpenGLOptions* options) } else { - ffPrintFormat(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, FF_OPENGL_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_OPENGL_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result.version}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.renderer}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.vendor}, - {FF_FORMAT_ARG_TYPE_STRBUF, &result.slv} - }); + {FF_FORMAT_ARG_TYPE_STRBUF, &result.slv}, + })); } ffStrbufDestroy(&result.version); @@ -90,14 +90,14 @@ void ffParseOpenGLJsonObject(FFOpenGLOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, "Invalid %s value: %s", key, error); + ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error); else options->library = (FFOpenGLLibrary) value; continue; } #endif - ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_OPENGL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -160,12 +160,12 @@ void ffGenerateOpenGLJsonResult(FF_MAYBE_UNUSED FFOpenGLOptions* options, yyjson void ffPrintOpenGLHelpFormat(void) { - ffPrintModuleFormatHelp(FF_OPENGL_MODULE_NAME, "{1}", FF_OPENGL_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_OPENGL_MODULE_NAME, "{1}", FF_OPENGL_NUM_FORMAT_ARGS, ((const char* []) { "version", "renderer", "vendor", "shading language version" - }); + })); } void ffInitOpenGLOptions(FFOpenGLOptions* options) diff --git a/src/modules/os/os.c b/src/modules/os/os.c index c7dad4b389..2bcc6f00af 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -101,7 +101,7 @@ void ffPrintOS(FFOSOptions* options) if(os->name.length == 0 && os->prettyName.length == 0 && os->id.length == 0) { - ffPrintError(FF_OS_MODULE_NAME, 0, &options->moduleArgs, "Could not detect OS"); + ffPrintError(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Could not detect OS"); return; } @@ -119,7 +119,7 @@ void ffPrintOS(FFOSOptions* options) } else { - ffPrintFormat(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_OS_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_OS_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &instance.state.platform.systemName}, {FF_FORMAT_ARG_TYPE_STRBUF, &os->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &os->prettyName}, @@ -132,7 +132,7 @@ void ffPrintOS(FFOSOptions* options) {FF_FORMAT_ARG_TYPE_STRBUF, &os->codename}, {FF_FORMAT_ARG_TYPE_STRBUF, &os->buildID}, {FF_FORMAT_ARG_TYPE_STRBUF, &instance.state.platform.systemArchitecture} - }); + })); } } @@ -159,7 +159,7 @@ void ffParseOSJsonObject(FFOSOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_OS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -196,7 +196,7 @@ void ffGenerateOSJsonResult(FF_MAYBE_UNUSED FFOSOptions* options, yyjson_mut_doc void ffPrintOSHelpFormat(void) { - ffPrintModuleFormatHelp(FF_OS_MODULE_NAME, "{3} {10} {12}", FF_OS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_OS_MODULE_NAME, "{3} {10} {12}", FF_OS_NUM_FORMAT_ARGS, ((const char* []) { "Name of the kernel (Linux, WIN32_NT, Darwin, FreeBSD)", "Name of the OS", "Pretty name of the OS", @@ -209,7 +209,7 @@ void ffPrintOSHelpFormat(void) "Version codename of the OS", "Build ID of the OS", "Architecture of the OS" - }); + })); } void ffInitOSOptions(FFOSOptions* options) diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 2b17c0804a..b81cd3b2cd 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -15,7 +15,7 @@ void ffPrintPackages(FFPackagesOptions* options) if(error) { - ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -69,7 +69,7 @@ void ffPrintPackages(FFPackagesOptions* options) } else { - ffPrintFormat(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PACKAGES_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_PACKAGES_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &counts.all}, {FF_FORMAT_ARG_TYPE_UINT, &counts.pacman}, {FF_FORMAT_ARG_TYPE_STRBUF, &counts.pacmanBranch}, @@ -95,7 +95,7 @@ void ffPrintPackages(FFPackagesOptions* options) {FF_FORMAT_ARG_TYPE_UINT, &counts.paludis}, {FF_FORMAT_ARG_TYPE_UINT, &counts.winget}, {FF_FORMAT_ARG_TYPE_UINT, &counts.opkg}, - }); + })); } ffStrbufDestroy(&counts.pacmanBranch); @@ -175,7 +175,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) { if (!yyjson_is_null(val) && !yyjson_is_arr(val)) { - ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, "Invalid JSON value for %s", key); + ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid JSON value for %s", key); continue; } @@ -215,7 +215,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) } } - ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -300,7 +300,7 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy void ffPrintPackagesHelpFormat(void) { - ffPrintModuleFormatHelp(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (flatpak-system), {15} (flatpack-user), {16} (snap), {17} (brew), {18} (brew-cask), {19} (MacPorts), {20} (scoop), {21} (choco), {22} (pkgtool), {23} (paludis), {24} (winget), {25} (opkg)", FF_PACKAGES_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (flatpak-system), {15} (flatpack-user), {16} (snap), {17} (brew), {18} (brew-cask), {19} (MacPorts), {20} (scoop), {21} (choco), {22} (pkgtool), {23} (paludis), {24} (winget), {25} (opkg)", FF_PACKAGES_NUM_FORMAT_ARGS, ((const char* []) { "Number of all packages", "Number of pacman packages", "Pacman branch on manjaro", @@ -326,7 +326,7 @@ void ffPrintPackagesHelpFormat(void) "Number of paludis packages", "Number of winget packages", "Number of opkg packages" - }); + })); } void ffInitPackagesOptions(FFPackagesOptions* options) diff --git a/src/modules/physicaldisk/physicaldisk.c b/src/modules/physicaldisk/physicaldisk.c index 96d0c2c120..c8f62692a3 100644 --- a/src/modules/physicaldisk/physicaldisk.c +++ b/src/modules/physicaldisk/physicaldisk.c @@ -7,7 +7,7 @@ #include "util/stringUtils.h" #define FF_PHYSICALDISK_DISPLAY_NAME "Physical Disk" -#define FF_PHYSICALDISK_NUM_FORMAT_ARGS 9 +#define FF_PHYSICALDISK_NUM_FORMAT_ARGS 10 static int sortDevices(const FFPhysicalDiskResult* left, const FFPhysicalDiskResult* right) { @@ -23,11 +23,11 @@ static void formatKey(const FFPhysicalDiskOptions* options, FFPhysicalDiskResult else { ffStrbufClear(key); - ffParseFormatString(key, &options->moduleArgs.key, 2, (FFformatarg[]){ + FF_PARSE_FORMAT_STRING_CHECKED(key, &options->moduleArgs.key, 3, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &index}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->devPath}, - }); + })); } } @@ -38,7 +38,7 @@ void ffPrintPhysicalDisk(FFPhysicalDiskOptions* options) if(error) { - ffPrintError(FF_PHYSICALDISK_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_PHYSICALDISK_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -108,7 +108,7 @@ void ffPrintPhysicalDisk(FFPhysicalDiskOptions* options) if (dev->type & FF_PHYSICALDISK_TYPE_READWRITE) readOnlyType = "Read-write"; ffParseSize(dev->size, &buffer); - ffPrintFormatString(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_PHYSICALDISK_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, FF_PHYSICALDISK_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &buffer}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->interconnect}, @@ -119,7 +119,7 @@ void ffPrintPhysicalDisk(FFPhysicalDiskOptions* options) {FF_FORMAT_ARG_TYPE_STRING, readOnlyType}, {FF_FORMAT_ARG_TYPE_STRBUF, &dev->revision}, {FF_FORMAT_ARG_TYPE_DOUBLE, &tempStr}, - }); + })); } ++index; } @@ -175,7 +175,7 @@ void ffParsePhysicalDiskJsonObject(FFPhysicalDiskOptions* options, yyjson_val* m if (ffTempsParseJsonObject(key, val, &options->temp, &options->tempConfig)) continue; - ffPrintError(FF_PHYSICALDISK_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_PHYSICALDISK_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -252,7 +252,7 @@ void ffGeneratePhysicalDiskJsonResult(FFPhysicalDiskOptions* options, yyjson_mut void ffPrintPhysicalDiskHelpFormat(void) { - ffPrintModuleFormatHelp(FF_PHYSICALDISK_MODULE_NAME, "{1}", FF_PHYSICALDISK_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PHYSICALDISK_MODULE_NAME, "{1}", FF_PHYSICALDISK_NUM_FORMAT_ARGS, ((const char* []) { "Device size (formatted)", "Device name", "Device interconnect type", @@ -263,7 +263,7 @@ void ffPrintPhysicalDiskHelpFormat(void) "Device kind (Read-only or Read-write)", "Product revision", "Device temperature (formatted)", - }); + })); } void ffInitPhysicalDiskOptions(FFPhysicalDiskOptions* options) diff --git a/src/modules/player/player.c b/src/modules/player/player.c index 8eae597057..ea3af7fa2c 100644 --- a/src/modules/player/player.c +++ b/src/modules/player/player.c @@ -15,7 +15,7 @@ void ffPrintPlayer(FFPlayerOptions* options) if(media->error.length > 0) { - ffPrintError(FF_PLAYER_DISPLAY_NAME, 0, &options->moduleArgs, "%s", media->error.chars); + ffPrintError(FF_PLAYER_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", media->error.chars); return; } @@ -64,12 +64,12 @@ void ffPrintPlayer(FFPlayerOptions* options) } else { - ffPrintFormat(FF_PLAYER_DISPLAY_NAME, 0, &options->moduleArgs, FF_PLAYER_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_PLAYER_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_PLAYER_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &playerPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->player}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->playerId}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->url} - }); + })); } } @@ -96,7 +96,7 @@ void ffParsePlayerJsonObject(FFPlayerOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_PLAYER_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_PLAYER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -126,12 +126,12 @@ void ffGeneratePlayerJsonResult(FF_MAYBE_UNUSED FFMediaOptions* options, yyjson_ void ffPrintPlayerHelpFormat(void) { - ffPrintModuleFormatHelp(FF_PLAYER_MODULE_NAME, "{1}", FF_PLAYER_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PLAYER_MODULE_NAME, "{1}", FF_PLAYER_NUM_FORMAT_ARGS, ((const char* []) { "Pretty player name", "Player name", "Player Identifier", "URL name" - }); + })); } void ffInitPlayerOptions(FFPlayerOptions* options) diff --git a/src/modules/poweradapter/poweradapter.c b/src/modules/poweradapter/poweradapter.c index 5bc8a0556a..6fbf87d3ec 100644 --- a/src/modules/poweradapter/poweradapter.c +++ b/src/modules/poweradapter/poweradapter.c @@ -15,11 +15,11 @@ void ffPrintPowerAdapter(FFPowerAdapterOptions* options) if (error) { - ffPrintError(FF_POWERADAPTER_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_POWERADAPTER_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); } else if(results.length == 0) { - ffPrintError(FF_POWERADAPTER_DISPLAY_NAME, 0, &options->moduleArgs, "No power adapters found"); + ffPrintError(FF_POWERADAPTER_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No power adapters found"); } else { @@ -38,14 +38,14 @@ void ffPrintPowerAdapter(FFPowerAdapterOptions* options) } else { - ffPrintFormat(FF_POWERADAPTER_DISPLAY_NAME, i, &options->moduleArgs, FF_POWERADAPTER_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_POWERADAPTER_DISPLAY_NAME, i, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_POWERADAPTER_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_INT, &result->watts}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->manufacturer}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->modelName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->description}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->serial}, - }); + })); } ffStrbufDestroy(&result->manufacturer); @@ -88,7 +88,7 @@ void ffParsePowerAdapterJsonObject(FFPowerAdapterOptions* options, yyjson_val* m if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_POWERADAPTER_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_POWERADAPTER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -124,14 +124,14 @@ void ffGeneratePowerAdapterJsonResult(FF_MAYBE_UNUSED FFPowerAdapterOptions* opt void ffPrintPowerAdapterHelpFormat(void) { - ffPrintModuleFormatHelp(FF_POWERADAPTER_MODULE_NAME, "{1}W", FF_POWERADAPTER_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_POWERADAPTER_MODULE_NAME, "{1}W", FF_POWERADAPTER_NUM_FORMAT_ARGS, ((const char* []) { "PowerAdapter watts", "PowerAdapter name", "PowerAdapter manufacturer", "PowerAdapter model", - "PowerAdapter description" - "PowerAdapter serial number" - }); + "PowerAdapter description", + "PowerAdapter serial number", + })); } void ffInitPowerAdapterOptions(FFPowerAdapterOptions* options) diff --git a/src/modules/processes/processes.c b/src/modules/processes/processes.c index d255c08638..34ed40afc7 100644 --- a/src/modules/processes/processes.c +++ b/src/modules/processes/processes.c @@ -13,7 +13,7 @@ void ffPrintProcesses(FFProcessesOptions* options) if(error) { - ffPrintError(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -25,9 +25,9 @@ void ffPrintProcesses(FFProcessesOptions* options) } else { - ffPrintFormat(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, FF_PROCESSES_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_PROCESSES_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &numProcesses} - }); + })); } } @@ -54,7 +54,7 @@ void ffParseProcessesJsonObject(FFProcessesOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_PROCESSES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -82,7 +82,7 @@ void ffGenerateProcessesJsonResult(FF_MAYBE_UNUSED FFProcessesOptions* options, void ffPrintProcessesHelpFormat(void) { - ffPrintModuleFormatHelp(FF_PROCESSES_MODULE_NAME, "{1}", FF_PROCESSES_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PROCESSES_MODULE_NAME, "{1}", FF_PROCESSES_NUM_FORMAT_ARGS, (const char* []) { "Count" }); } diff --git a/src/modules/publicip/publicip.c b/src/modules/publicip/publicip.c index da7c4fc9af..eb5a41b0a5 100644 --- a/src/modules/publicip/publicip.c +++ b/src/modules/publicip/publicip.c @@ -5,7 +5,7 @@ #include "util/stringUtils.h" #define FF_PUBLICIP_DISPLAY_NAME "Public IP" -#define FF_PUBLICIP_NUM_FORMAT_ARGS 1 +#define FF_PUBLICIP_NUM_FORMAT_ARGS 2 void ffPrintPublicIp(FFPublicIpOptions* options) { @@ -16,7 +16,7 @@ void ffPrintPublicIp(FFPublicIpOptions* options) if (error) { - ffPrintError(FF_PUBLICIP_DISPLAY_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_PUBLICIP_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -30,10 +30,10 @@ void ffPrintPublicIp(FFPublicIpOptions* options) } else { - ffPrintFormat(FF_PUBLICIP_DISPLAY_NAME, 0, &options->moduleArgs, FF_PUBLICIP_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_PUBLICIP_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_PUBLICIP_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result.ip}, {FF_FORMAT_ARG_TYPE_STRBUF, &result.location}, - }); + })); } ffStrbufDestroy(&result.ip); @@ -87,7 +87,7 @@ void ffParsePublicIpJsonObject(FFPublicIpOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_PUBLICIP_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_PUBLICIP_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -125,10 +125,10 @@ void ffGeneratePublicIpJsonResult(FFPublicIpOptions* options, yyjson_mut_doc* do void ffPrintPublicIpHelpFormat(void) { - ffPrintModuleFormatHelp(FF_PUBLICIP_MODULE_NAME, "{1} ({2})", FF_PUBLICIP_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PUBLICIP_MODULE_NAME, "{1} ({2})", FF_PUBLICIP_NUM_FORMAT_ARGS, ((const char* []) { "Public IP address", "Location" - }); + })); } void ffInitPublicIpOptions(FFPublicIpOptions* options) diff --git a/src/modules/separator/separator.c b/src/modules/separator/separator.c index fc675438da..538b651f48 100644 --- a/src/modules/separator/separator.c +++ b/src/modules/separator/separator.c @@ -105,7 +105,7 @@ void ffParseSeparatorJsonObject(FFSeparatorOptions* options, yyjson_val* module) continue; } - ffPrintErrorString(FF_SEPARATOR_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); + ffPrintError(FF_SEPARATOR_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); } } diff --git a/src/modules/shell/shell.c b/src/modules/shell/shell.c index c3e4fcc1ac..8056ae854d 100644 --- a/src/modules/shell/shell.c +++ b/src/modules/shell/shell.c @@ -4,7 +4,7 @@ #include "modules/shell/shell.h" #include "util/stringUtils.h" -#define FF_SHELL_NUM_FORMAT_ARGS 6 +#define FF_SHELL_NUM_FORMAT_ARGS 8 void ffPrintShell(FFShellOptions* options) { @@ -12,7 +12,7 @@ void ffPrintShell(FFShellOptions* options) if(result->processName.length == 0) { - ffPrintError(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, "Couldn't detect shell"); + ffPrintError(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Couldn't detect shell"); return; } @@ -31,7 +31,7 @@ void ffPrintShell(FFShellOptions* options) } else { - ffPrintFormat(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, FF_SHELL_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_SHELL_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result->processName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->exe}, {FF_FORMAT_ARG_TYPE_STRING, result->exeName}, @@ -40,7 +40,7 @@ void ffPrintShell(FFShellOptions* options) {FF_FORMAT_ARG_TYPE_STRBUF, &result->prettyName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->exePath}, {FF_FORMAT_ARG_TYPE_INT, &result->tty}, - }); + })); } } @@ -67,7 +67,7 @@ void ffParseShellJsonObject(FFShellOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_SHELL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -106,7 +106,7 @@ void ffGenerateShellJsonResult(FF_MAYBE_UNUSED FFShellOptions* options, yyjson_m void ffPrintShellHelpFormat(void) { - ffPrintModuleFormatHelp(FF_SHELL_MODULE_NAME, "{3} {4}", FF_SHELL_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_SHELL_MODULE_NAME, "{3} {4}", FF_SHELL_NUM_FORMAT_ARGS, ((const char* []) { "Shell process name", "The first argument of the command line when running the shell", "Shell base name of arg0", @@ -114,7 +114,8 @@ void ffPrintShellHelpFormat(void) "Shell pid", "Shell pretty name", "Shell full exe path", - }); + "Shell tty used", + })); } void ffInitShellOptions(FFShellOptions* options) diff --git a/src/modules/sound/sound.c b/src/modules/sound/sound.c index 31a9d32ea2..39b9c3ec35 100644 --- a/src/modules/sound/sound.c +++ b/src/modules/sound/sound.c @@ -49,12 +49,12 @@ static void printDevice(FFSoundOptions* options, const FFSoundDevice* device, ui FF_STRBUF_AUTO_DESTROY percentageStr = ffStrbufCreate(); ffPercentAppendNum(&percentageStr, device->volume, options->percent, false); - ffPrintFormat(FF_SOUND_MODULE_NAME, index, &options->moduleArgs, FF_SOUND_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_SOUND_MODULE_NAME, index, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_SOUND_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_BOOL, &device->main}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &percentageStr}, {FF_FORMAT_ARG_TYPE_STRBUF, &device->identifier} - }); + })); } } @@ -66,7 +66,7 @@ void ffPrintSound(FFSoundOptions* options) if(error) { - ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -86,7 +86,7 @@ void ffPrintSound(FFSoundOptions* options) if(filtered.length == 0) { - ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, "No active sound devices found"); + ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No active sound devices found"); return; } @@ -150,7 +150,7 @@ void ffParseSoundJsonObject(FFSoundOptions* options, yyjson_val* module) {}, }); if (error) - ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, "Invalid %s value: %s", key, error); + ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid %s value: %s", key, error); else options->soundType = (FFSoundType) value; continue; @@ -159,7 +159,7 @@ void ffParseSoundJsonObject(FFSoundOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_SOUND_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -231,12 +231,12 @@ void ffGenerateSoundJsonResult(FF_MAYBE_UNUSED FFSoundOptions* options, yyjson_m void ffPrintSoundHelpFormat(void) { - ffPrintModuleFormatHelp(FF_SOUND_MODULE_NAME, "{2} ({3}%)", FF_SOUND_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_SOUND_MODULE_NAME, "{2} ({3}%)", FF_SOUND_NUM_FORMAT_ARGS, ((const char* []) { "Is main sound device", "Device name", "Volume", "Identifier" - }); + })); } void ffInitSoundOptions(FFSoundOptions* options) diff --git a/src/modules/swap/swap.c b/src/modules/swap/swap.c index cb4cad7f28..36b4c8df61 100644 --- a/src/modules/swap/swap.c +++ b/src/modules/swap/swap.c @@ -15,7 +15,7 @@ void ffPrintSwap(FFSwapOptions* options) if(error) { - ffPrintError(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -67,11 +67,11 @@ void ffPrintSwap(FFSwapOptions* options) { FF_STRBUF_AUTO_DESTROY percentageStr = ffStrbufCreate(); ffPercentAppendNum(&percentageStr, percentage, options->percent, false); - ffPrintFormat(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, FF_SWAP_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_SWAP_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &usedPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &totalPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &percentageStr}, - }); + })); } } @@ -104,7 +104,7 @@ void ffParseSwapJsonObject(FFSwapOptions* options, yyjson_val* module) if (ffPercentParseJsonObject(key, val, &options->percent)) continue; - ffPrintError(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_SWAP_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -136,11 +136,11 @@ void ffGenerateSwapJsonResult(FF_MAYBE_UNUSED FFSwapOptions* options, yyjson_mut void ffPrintSwapHelpFormat(void) { - ffPrintModuleFormatHelp(FF_SWAP_MODULE_NAME, "{1} / {2} ({3})", FF_SWAP_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_SWAP_MODULE_NAME, "{1} / {2} ({3})", FF_SWAP_NUM_FORMAT_ARGS, ((const char* []) { "Used size", "Total size", "Percentage used" - }); + })); } void ffInitSwapOptions(FFSwapOptions* options) diff --git a/src/modules/terminal/terminal.c b/src/modules/terminal/terminal.c index d73d0c1d36..fb5defdeb6 100644 --- a/src/modules/terminal/terminal.c +++ b/src/modules/terminal/terminal.c @@ -14,7 +14,7 @@ void ffPrintTerminal(FFTerminalOptions* options) if(result->processName.length == 0) { - ffPrintError(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, "Couldn't detect terminal"); + ffPrintError(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Couldn't detect terminal"); return; } @@ -29,7 +29,7 @@ void ffPrintTerminal(FFTerminalOptions* options) } else { - ffPrintFormat(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, FF_TERMINAL_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_TERMINAL_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->processName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->exe}, {FF_FORMAT_ARG_TYPE_STRING, result->exeName}, @@ -38,7 +38,7 @@ void ffPrintTerminal(FFTerminalOptions* options) {FF_FORMAT_ARG_TYPE_STRBUF, &result->version}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->exePath}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->tty}, - }); + })); } } @@ -65,7 +65,7 @@ void ffParseTerminalJsonObject(FFTerminalOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_TERMINAL_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -101,7 +101,7 @@ void ffGenerateTerminalJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options, yy void ffPrintTerminalHelpFormat(void) { - ffPrintModuleFormatHelp(FF_TERMINAL_MODULE_NAME, "{5} {6}", FF_TERMINAL_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_TERMINAL_MODULE_NAME, "{5} {6}", FF_TERMINAL_NUM_FORMAT_ARGS, ((const char* []) { "Terminal process name", "The first argument of the command line when running the terminal", "Terminal base name of arg0", @@ -110,7 +110,7 @@ void ffPrintTerminalHelpFormat(void) "Terminal version", "Terminal full exe path", "Terminal tty / pts used", - }); + })); } void ffInitTerminalOptions(FFTerminalOptions* options) diff --git a/src/modules/terminalfont/terminalfont.c b/src/modules/terminalfont/terminalfont.c index 191df08f46..944f18fdba 100644 --- a/src/modules/terminalfont/terminalfont.c +++ b/src/modules/terminalfont/terminalfont.c @@ -16,7 +16,7 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options) if(!ffDetectTerminalFont(&terminalFont)) { - ffPrintError(FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, "%s", terminalFont.error.chars); + ffPrintError(FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", terminalFont.error.chars); } else { @@ -33,12 +33,12 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options) } else { - ffPrintFormat(FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, FF_TERMINALFONT_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_TERMINALFONT_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &terminalFont.font.pretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &terminalFont.font.name}, {FF_FORMAT_ARG_TYPE_STRBUF, &terminalFont.font.size}, {FF_FORMAT_ARG_TYPE_LIST, &terminalFont.font.styles} - }); + })); } } @@ -70,7 +70,7 @@ void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* m if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_TERMINALFONT_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_TERMINALFONT_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -123,12 +123,12 @@ void ffGenerateTerminalFontJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options void ffPrintTerminalFontHelpFormat(void) { - ffPrintModuleFormatHelp(FF_TERMINALFONT_MODULE_NAME, "{1}", FF_TERMINALFONT_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_TERMINALFONT_MODULE_NAME, "{1}", FF_TERMINALFONT_NUM_FORMAT_ARGS, ((const char* []) { "Terminal font combined", "Terminal font name", "Terminal font size", "Terminal font styles" - }); + })); } void ffInitTerminalFontOptions(FFTerminalFontOptions* options) diff --git a/src/modules/terminalsize/terminalsize.c b/src/modules/terminalsize/terminalsize.c index bc2bfa9ca5..c54bf52d00 100644 --- a/src/modules/terminalsize/terminalsize.c +++ b/src/modules/terminalsize/terminalsize.c @@ -13,7 +13,7 @@ void ffPrintTerminalSize(FFTerminalSizeOptions* options) if(!ffDetectTerminalSize(&result)) { - ffPrintError(FF_TERMINALSIZE_DISPLAY_NAME, 0, &options->moduleArgs, "Failed to detect terminal size"); + ffPrintError(FF_TERMINALSIZE_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Failed to detect terminal size"); } else { @@ -29,12 +29,12 @@ void ffPrintTerminalSize(FFTerminalSizeOptions* options) } else { - ffPrintFormat(FF_TERMINALSIZE_DISPLAY_NAME, 0, &options->moduleArgs, FF_TERMINALSIZE_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_TERMINALSIZE_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_TERMINALSIZE_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT16, &result.rows}, {FF_FORMAT_ARG_TYPE_UINT16, &result.columns}, {FF_FORMAT_ARG_TYPE_UINT16, &result.width}, {FF_FORMAT_ARG_TYPE_UINT16, &result.height} - }); + })); } } } @@ -62,7 +62,7 @@ void ffParseTerminalSizeJsonObject(FFTerminalSizeOptions* options, yyjson_val* m if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_TERMINALSIZE_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_TERMINALSIZE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -93,12 +93,12 @@ void ffGenerateTerminalSizeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* options void ffPrintTerminalSizeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_TERMINALSIZE_MODULE_NAME, "{1} columns x {2} rows ({3}px x {4}px)", FF_TERMINALSIZE_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_TERMINALSIZE_MODULE_NAME, "{1} columns x {2} rows ({3}px x {4}px)", FF_TERMINALSIZE_NUM_FORMAT_ARGS, ((const char* []) { "Terminal rows", "Terminal columns", "Terminal width (in pixels)", "Terminal height (in pixels)" - }); + })); } void ffInitTerminalSizeOptions(FFTerminalSizeOptions* options) diff --git a/src/modules/terminaltheme/terminaltheme.c b/src/modules/terminaltheme/terminaltheme.c index 43e76c65cc..76510f644e 100644 --- a/src/modules/terminaltheme/terminaltheme.c +++ b/src/modules/terminaltheme/terminaltheme.c @@ -15,7 +15,7 @@ void ffPrintTerminalTheme(FFTerminalThemeOptions* options) if(!ffDetectTerminalTheme(&result)) { - ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, "Failed to detect terminal theme"); + ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Failed to detect terminal theme"); } else { @@ -32,12 +32,12 @@ void ffPrintTerminalTheme(FFTerminalThemeOptions* options) char fg[32], bg[32]; snprintf(fg, sizeof(fg), "#%02" PRIX16 "%02" PRIX16 "%02" PRIX16, result.fg.r, result.fg.g, result.fg.b); snprintf(bg, sizeof(bg), "#%02" PRIX16 "%02" PRIX16 "%02" PRIX16, result.bg.r, result.bg.g, result.bg.b); - ffPrintFormat(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_TERMINALTHEME_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_TERMINALTHEME_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, fg}, {FF_FORMAT_ARG_TYPE_STRING, result.fg.dark ? "Dark" : "Light"}, {FF_FORMAT_ARG_TYPE_STRING, bg}, {FF_FORMAT_ARG_TYPE_STRING, result.bg.dark ? "Dark" : "Light"}, - }); + })); } } } @@ -65,7 +65,7 @@ void ffParseTerminalThemeJsonObject(FFTerminalThemeOptions* options, yyjson_val* if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_TERMINALTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -104,12 +104,12 @@ void ffGenerateTerminalThemeJsonResult(FF_MAYBE_UNUSED FFTerminalOptions* option void ffPrintTerminalThemeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_TERMINALTHEME_MODULE_NAME, "{1} (FG) {3} (BG) [{4}]", FF_TERMINALTHEME_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_TERMINALTHEME_MODULE_NAME, "{1} (FG) {3} (BG) [{4}]", FF_TERMINALTHEME_NUM_FORMAT_ARGS, ((const char* []) { "Terminal foreground color", "Terminal foreground type (Dark / Light)", "Terminal background color", "Terminal background type (Dark / Light)", - }); + })); } void ffInitTerminalThemeOptions(FFTerminalThemeOptions* options) diff --git a/src/modules/theme/theme.c b/src/modules/theme/theme.c index 1380283bf4..3d29027806 100644 --- a/src/modules/theme/theme.c +++ b/src/modules/theme/theme.c @@ -13,7 +13,7 @@ void ffPrintTheme(FFThemeOptions* options) if(error) { - ffPrintError(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -24,9 +24,9 @@ void ffPrintTheme(FFThemeOptions* options) } else { - ffPrintFormat(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, FF_THEME_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_THEME_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &theme} - }); + })); } } @@ -53,7 +53,7 @@ void ffParseThemeJsonObject(FFThemeOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_THEME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -81,9 +81,9 @@ void ffGenerateThemeJsonResult(FF_MAYBE_UNUSED FFThemeOptions* options, yyjson_m void ffPrintThemeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_THEME_MODULE_NAME, "{1}", FF_THEME_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_THEME_MODULE_NAME, "{1}", FF_THEME_NUM_FORMAT_ARGS, ((const char* []) { "Combined themes" - }); + })); } void ffInitThemeOptions(FFThemeOptions* options) diff --git a/src/modules/title/title.c b/src/modules/title/title.c index 073bed3448..661d099cf8 100644 --- a/src/modules/title/title.c +++ b/src/modules/title/title.c @@ -56,7 +56,7 @@ void ffPrintTitle(FFTitleOptions* options) } else { - ffPrintFormat(FF_TITLE_MODULE_NAME, 0, &options->moduleArgs, FF_TITLE_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_TITLE_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_TITLE_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &instance.state.platform.userName}, {FF_FORMAT_ARG_TYPE_STRBUF, &hostName}, {FF_FORMAT_ARG_TYPE_STRBUF, &instance.state.platform.homeDir}, @@ -65,7 +65,7 @@ void ffPrintTitle(FFTitleOptions* options) {FF_FORMAT_ARG_TYPE_STRBUF, &userNameColored}, {FF_FORMAT_ARG_TYPE_STRBUF, &atColored}, {FF_FORMAT_ARG_TYPE_STRBUF, &hostNameColored}, - }); + })); } } @@ -139,7 +139,7 @@ void ffParseTitleJsonObject(FFTitleOptions* options, yyjson_val* module) continue; } - ffPrintErrorString(FF_TITLE_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); + ffPrintError(FF_TITLE_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Unknown JSON key %s", key); } } @@ -181,7 +181,7 @@ void ffGenerateTitleJsonResult(FF_MAYBE_UNUSED FFTitleOptions* options, yyjson_m void ffPrintTitleHelpFormat(void) { - ffPrintModuleFormatHelp(FF_TITLE_MODULE_NAME, "{6}{7}{8}", FF_TITLE_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_TITLE_MODULE_NAME, "{6}{7}{8}", FF_TITLE_NUM_FORMAT_ARGS, ((const char* []) { "User name", "Host name", "Home directory", @@ -190,7 +190,7 @@ void ffPrintTitleHelpFormat(void) "User name (colored)", "@ symbol (colored)", "Host name (colored)" - }); + })); } void ffInitTitleOptions(FFTitleOptions* options) diff --git a/src/modules/uptime/uptime.c b/src/modules/uptime/uptime.c index 02d9a9ae59..791e7b8daa 100644 --- a/src/modules/uptime/uptime.c +++ b/src/modules/uptime/uptime.c @@ -14,7 +14,7 @@ void ffPrintUptime(FFUptimeOptions* options) if(error) { - ffPrintError(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -77,7 +77,7 @@ void ffPrintUptime(FFUptimeOptions* options) } else { - ffPrintFormat(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, FF_UPTIME_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_UPTIME_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &days}, {FF_FORMAT_ARG_TYPE_UINT, &hours}, {FF_FORMAT_ARG_TYPE_UINT, &minutes}, @@ -85,7 +85,7 @@ void ffPrintUptime(FFUptimeOptions* options) {FF_FORMAT_ARG_TYPE_UINT, &milliseconds}, {FF_FORMAT_ARG_TYPE_UINT64, &result.uptime}, {FF_FORMAT_ARG_TYPE_UINT64, &result.bootTime}, - }); + })); } } @@ -112,7 +112,7 @@ void ffParseUptimeJsonObject(FFUptimeOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_UPTIME_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -142,12 +142,15 @@ void ffGenerateUptimeJsonResult(FF_MAYBE_UNUSED FFUptimeOptions* options, yyjson void ffPrintUptimeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_UPTIME_MODULE_NAME, "{1} days {2} hours {3} mins", FF_UPTIME_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_UPTIME_MODULE_NAME, "{1} days {2} hours {3} mins", FF_UPTIME_NUM_FORMAT_ARGS, ((const char* []) { "Days", "Hours", "Minutes", - "Seconds" - }); + "Seconds", + "Milliseconds", + "Uptime in unix timestamp (ms)", + "Boot time in unix timestamp (ms)", + })); } void ffInitUptimeOptions(FFUptimeOptions* options) diff --git a/src/modules/users/users.c b/src/modules/users/users.c index 0f7a2b189c..d77b3b7f59 100644 --- a/src/modules/users/users.c +++ b/src/modules/users/users.c @@ -8,7 +8,7 @@ #pragma GCC diagnostic ignored "-Wformat" // warning: unknown conversion type character 'F' in format -#define FF_USERS_NUM_FORMAT_ARGS 1 +#define FF_USERS_NUM_FORMAT_ARGS 5 void ffPrintUsers(FFUsersOptions* options) { @@ -18,13 +18,13 @@ void ffPrintUsers(FFUsersOptions* options) if(error) { - ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(users.length == 0) { - ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, "%s", "Unable to detect any users"); + ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", "Unable to detect any users"); return; } @@ -74,13 +74,13 @@ void ffPrintUsers(FFUsersOptions* options) { FFUserResult* user = (FFUserResult*)ffListGet(&users, i); - ffPrintFormat(FF_USERS_MODULE_NAME, users.length == 1 ? 0 : (uint8_t) (i + 1), &options->moduleArgs, FF_USERS_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_USERS_MODULE_NAME, users.length == 1 ? 0 : (uint8_t) (i + 1), &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_USERS_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &user->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &user->hostName}, {FF_FORMAT_ARG_TYPE_STRBUF, &user->sessionName}, {FF_FORMAT_ARG_TYPE_STRBUF, &user->clientIp}, {FF_FORMAT_ARG_TYPE_UINT64, &user->loginTime}, - }); + })); } } @@ -128,7 +128,7 @@ void ffParseUsersJsonObject(FFUsersOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_USERS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -178,13 +178,13 @@ void ffGenerateUsersJsonResult(FF_MAYBE_UNUSED FFUsersOptions* options, yyjson_m void ffPrintUsersHelpFormat(void) { - ffPrintModuleFormatHelp(FF_USERS_MODULE_NAME, "{1}@{2} - login time {5}", FF_USERS_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_USERS_MODULE_NAME, "{1}@{2} - login time {5}", FF_USERS_NUM_FORMAT_ARGS, ((const char* []) { "User name", "Host name", "Session name", "Client IP", "Login Time" - }); + })); } void ffInitUsersOptions(FFUsersOptions* options) diff --git a/src/modules/version/version.c b/src/modules/version/version.c index 6d27d94cf5..2c8dee161b 100644 --- a/src/modules/version/version.c +++ b/src/modules/version/version.c @@ -31,7 +31,7 @@ void ffPrintVersion(FFVersionOptions* options) } } - ffPrintFormat(FF_VERSION_MODULE_NAME, 0, &options->moduleArgs, FF_VERSION_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_VERSION_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_VERSION_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, result.projectName}, {FF_FORMAT_ARG_TYPE_STRING, result.version}, {FF_FORMAT_ARG_TYPE_STRING, result.versionTweak}, @@ -41,7 +41,7 @@ void ffPrintVersion(FFVersionOptions* options) {FF_FORMAT_ARG_TYPE_STRING, result.compileTime}, {FF_FORMAT_ARG_TYPE_STRING, result.compiler}, {FF_FORMAT_ARG_TYPE_STRBUF, &buf}, - }); + })); } } @@ -68,7 +68,7 @@ void ffParseVersionJsonObject(FFVersionOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_VERSION_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_VERSION_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -114,7 +114,7 @@ void ffGenerateVersionJsonResult(FF_MAYBE_UNUSED FFVersionOptions* options, yyjs void ffPrintVersionHelpFormat(void) { - ffPrintModuleFormatHelp(FF_VERSION_MODULE_NAME, "{1} {2}{3} ({5})", FF_VERSION_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_VERSION_MODULE_NAME, "{1} {2}{3} ({5})", FF_VERSION_NUM_FORMAT_ARGS, ((const char* []) { "Project name", "Version", "Version tweak", @@ -124,7 +124,7 @@ void ffPrintVersionHelpFormat(void) "Date time when compiling", "Compiler used", "Libc used" - }); + })); } void ffInitVersionOptions(FFVersionOptions* options) diff --git a/src/modules/vulkan/vulkan.c b/src/modules/vulkan/vulkan.c index 24b5497daa..5f9557f2cf 100644 --- a/src/modules/vulkan/vulkan.c +++ b/src/modules/vulkan/vulkan.c @@ -5,7 +5,7 @@ #include "modules/vulkan/vulkan.h" #include "util/stringUtils.h" -#define FF_VULKAN_NUM_FORMAT_ARGS 3 +#define FF_VULKAN_NUM_FORMAT_ARGS 4 void ffPrintVulkan(FFVulkanOptions* options) { @@ -13,7 +13,7 @@ void ffPrintVulkan(FFVulkanOptions* options) if(vulkan->error) { - ffPrintError(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, "%s", vulkan->error); + ffPrintError(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", vulkan->error); return; } @@ -43,11 +43,12 @@ void ffPrintVulkan(FFVulkanOptions* options) } else { - ffPrintFormat(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, FF_VULKAN_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_VULKAN_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->driver}, {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->apiVersion}, - {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->conformanceVersion} - }); + {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->conformanceVersion}, + {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->instanceVersion}, + })); } } @@ -74,7 +75,7 @@ void ffParseVulkanJsonObject(FFVulkanOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_VULKAN_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -144,12 +145,12 @@ void ffGenerateVulkanJsonResult(FF_MAYBE_UNUSED FFVulkanOptions* options, yyjson void ffPrintVulkanHelpFormat(void) { - ffPrintModuleFormatHelp(FF_VULKAN_MODULE_NAME, "{2} - {1}", FF_VULKAN_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_VULKAN_MODULE_NAME, "{2} - {1}", FF_VULKAN_NUM_FORMAT_ARGS, ((const char* []) { "Driver name", "API version", "Conformance version", "Instance version", - }); + })); } void ffInitVulkanOptions(FFVulkanOptions* options) diff --git a/src/modules/wallpaper/wallpaper.c b/src/modules/wallpaper/wallpaper.c index 6559929fb0..5e0afbe348 100644 --- a/src/modules/wallpaper/wallpaper.c +++ b/src/modules/wallpaper/wallpaper.c @@ -24,7 +24,7 @@ void ffPrintWallpaper(FFWallpaperOptions* options) if(error) { - ffPrintError(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -35,10 +35,10 @@ void ffPrintWallpaper(FFWallpaperOptions* options) } else { - ffPrintFormat(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, FF_WALLPAPER_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WALLPAPER_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, filename}, {FF_FORMAT_ARG_TYPE_STRBUF, &fullpath}, - }); + })); } } @@ -65,7 +65,7 @@ void ffParseWallpaperJsonObject(FFWallpaperOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_WALLPAPER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -91,9 +91,10 @@ void ffGenerateWallpaperJsonResult(FF_MAYBE_UNUSED FFWallpaperOptions* options, void ffPrintWallpaperHelpFormat(void) { - ffPrintModuleFormatHelp(FF_WALLPAPER_MODULE_NAME, "{1}", FF_WALLPAPER_NUM_FORMAT_ARGS, (const char* []) { - "Wallpaper image file" - }); + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_WALLPAPER_MODULE_NAME, "{1}", FF_WALLPAPER_NUM_FORMAT_ARGS, ((const char* []) { + "File name", + "Full path", + })); } void ffInitWallpaperOptions(FFWallpaperOptions* options) diff --git a/src/modules/weather/weather.c b/src/modules/weather/weather.c index 3bb8d5e025..ccb1f22dbe 100644 --- a/src/modules/weather/weather.c +++ b/src/modules/weather/weather.c @@ -13,7 +13,7 @@ void ffPrintWeather(FFWeatherOptions* options) if(error) { - ffPrintError(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } @@ -25,9 +25,9 @@ void ffPrintWeather(FFWeatherOptions* options) } else { - ffPrintFormat(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, FF_WEATHER_NUM_FORMAT_ARGS, (FFformatarg[]) { + FF_PRINT_FORMAT_CHECKED(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WEATHER_NUM_FORMAT_ARGS, ((FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result} - }); + })); } } @@ -90,7 +90,7 @@ void ffParseWeatherJsonObject(FFWeatherOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_WEATHER_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -127,9 +127,9 @@ void ffGenerateWeatherJsonResult(FFWeatherOptions* options, yyjson_mut_doc* doc, void ffPrintWeatherHelpFormat(void) { - ffPrintModuleFormatHelp(FF_WEATHER_MODULE_NAME, "{1}", FF_WEATHER_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_WEATHER_MODULE_NAME, "{1}", FF_WEATHER_NUM_FORMAT_ARGS, ((const char* []) { "Weather result" - }); + })); } void ffInitWeatherOptions(FFWeatherOptions* options) diff --git a/src/modules/wifi/wifi.c b/src/modules/wifi/wifi.c index 0f4a58ae55..49367e101c 100644 --- a/src/modules/wifi/wifi.c +++ b/src/modules/wifi/wifi.c @@ -13,12 +13,12 @@ void ffPrintWifi(FFWifiOptions* options) const char* error = ffDetectWifi(&result); if(error) { - ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, "%s", error); + ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%s", error); return; } if(!result.length) { - ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, "No Wifi interfaces found"); + ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No Wifi interfaces found"); return; } @@ -46,7 +46,7 @@ void ffPrintWifi(FFWifiOptions* options) } else { - ffPrintFormat(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_WIFI_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_WIFI_MODULE_NAME, moduleIndex, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WIFI_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.description}, {FF_FORMAT_ARG_TYPE_STRBUF, &item->inf.status}, {FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.status}, @@ -57,7 +57,7 @@ void ffPrintWifi(FFWifiOptions* options) {FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.rxRate}, {FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.txRate}, {FF_FORMAT_ARG_TYPE_STRBUF, &item->conn.security}, - }); + })); } ffStrbufDestroy(&item->inf.description); @@ -93,7 +93,7 @@ void ffParseWifiJsonObject(FFWifiOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_WIFI_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -154,7 +154,7 @@ void ffGenerateWifiJsonResult(FF_MAYBE_UNUSED FFWifiOptions* options, yyjson_mut void ffPrintWifiHelpFormat(void) { - ffPrintModuleFormatHelp(FF_WIFI_MODULE_NAME, "{4} - {10}", FF_WIFI_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_WIFI_MODULE_NAME, "{4} - {10}", FF_WIFI_NUM_FORMAT_ARGS, ((const char* []) { "Interface description", "Interface status", "Connection status", @@ -165,7 +165,7 @@ void ffPrintWifiHelpFormat(void) "Connection RX rate", "Connection TX rate", "Connection Security algorithm" - }); + })); } void ffInitWifiOptions(FFWifiOptions* options) diff --git a/src/modules/wm/wm.c b/src/modules/wm/wm.c index b8cdd04c33..dd0f02b26a 100644 --- a/src/modules/wm/wm.c +++ b/src/modules/wm/wm.c @@ -13,7 +13,7 @@ void ffPrintWM(FFWMOptions* options) if(result->wmPrettyName.length == 0) { - ffPrintError(FF_WM_MODULE_NAME, 0, &options->moduleArgs, "No WM found"); + ffPrintError(FF_WM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "No WM found"); return; } @@ -45,12 +45,12 @@ void ffPrintWM(FFWMOptions* options) } else { - ffPrintFormat(FF_WM_MODULE_NAME, 0, &options->moduleArgs, FF_WM_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_WM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WM_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmPrettyName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmProtocolName}, {FF_FORMAT_ARG_TYPE_STRBUF, &pluginName}, - }); + })); } } @@ -89,7 +89,7 @@ void ffParseWMJsonObject(FFWMOptions* options, yyjson_val* module) continue; } - ffPrintError(FF_WM_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_WM_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -127,12 +127,12 @@ void ffGenerateWMJsonResult(FF_MAYBE_UNUSED FFWMOptions* options, yyjson_mut_doc void ffPrintWMHelpFormat(void) { - ffPrintModuleFormatHelp(FF_WM_MODULE_NAME, "{2} ({3})", FF_WM_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_WM_MODULE_NAME, "{2} ({3})", FF_WM_NUM_FORMAT_ARGS, ((const char* []) { "WM process name", "WM pretty name", "WM protocol name", "WM plugin name" - }); + })); } void ffInitWMOptions(FFWMOptions* options) diff --git a/src/modules/wmtheme/wmtheme.c b/src/modules/wmtheme/wmtheme.c index a7ca585ce8..74f0326ca4 100644 --- a/src/modules/wmtheme/wmtheme.c +++ b/src/modules/wmtheme/wmtheme.c @@ -19,14 +19,14 @@ void ffPrintWMTheme(FFWMThemeOptions* options) } else { - ffPrintFormat(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_WMTHEME_NUM_FORMAT_ARGS, (FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_WMTHEME_NUM_FORMAT_ARGS, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &themeOrError} - }); + })); } } else { - ffPrintError(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, "%*s", themeOrError.length, themeOrError.chars); + ffPrintError(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "%*s", themeOrError.length, themeOrError.chars); } } @@ -53,7 +53,7 @@ void ffParseWMThemeJsonObject(FFWMThemeOptions* options, yyjson_val* module) if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) continue; - ffPrintError(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); + ffPrintError(FF_WMTHEME_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key); } } @@ -79,9 +79,9 @@ void ffGenerateWMThemeJsonResult(FF_MAYBE_UNUSED FFWMThemeOptions* options, yyjs void ffPrintWMthemeHelpFormat(void) { - ffPrintModuleFormatHelp(FF_WMTHEME_MODULE_NAME, "{1}", FF_WMTHEME_NUM_FORMAT_ARGS, (const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_WMTHEME_MODULE_NAME, "{1}", FF_WMTHEME_NUM_FORMAT_ARGS, ((const char* []) { "WM theme" - }); + })); } void ffInitWMThemeOptions(FFWMThemeOptions* options)