mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-08 14:10:11 +01:00
Modules: refactor module option handling for static allocation
Moves module option structs out of global config and removes dynamic allocation, using static buffers and size assertions for safer, simpler management. Refactors module initialization and destruction to work with isolated option structs, eliminating the need for the previous modules container and related code. Unifies module option header usage and updates detection logic to leverage statically-sized option buffers, improving encapsulation and maintainability. Simplifies module function signatures and reduces coupling between modules and config. Enhances future extensibility and reliability by enforcing max size constraints and removing unnecessary indirections.
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
// This file will be included in "fastfetch.h", do NOT put unnecessary things here
|
||||
|
||||
#include "common/option.h"
|
||||
|
||||
typedef struct FFTitleOptions
|
||||
{
|
||||
FFModuleBaseInfo moduleInfo;
|
||||
FFModuleArgs moduleArgs;
|
||||
|
||||
bool fqdn;
|
||||
FFstrbuf colorUser;
|
||||
FFstrbuf colorAt;
|
||||
FFstrbuf colorHost;
|
||||
bool fqdn;
|
||||
} FFTitleOptions;
|
||||
|
||||
static_assert(sizeof(FFTitleOptions) <= FF_OPTION_MAX_SIZE, "FFTitleOptions size exceeds maximum allowed size");
|
||||
|
||||
+19
-20
@@ -140,6 +140,25 @@ void ffGenerateTitleJsonResult(FF_MAYBE_UNUSED FFTitleOptions* options, yyjson_m
|
||||
yyjson_mut_obj_add_strbuf(doc, obj, "userShell", &instance.state.platform.userShell);
|
||||
}
|
||||
|
||||
void ffInitTitleOptions(FFTitleOptions* options)
|
||||
{
|
||||
ffOptionInitModuleArg(&options->moduleArgs, "");
|
||||
ffStrbufSetStatic(&options->moduleArgs.key, " ");
|
||||
|
||||
options->fqdn = false;
|
||||
ffStrbufInit(&options->colorUser);
|
||||
ffStrbufInit(&options->colorAt);
|
||||
ffStrbufInit(&options->colorHost);
|
||||
}
|
||||
|
||||
void ffDestroyTitleOptions(FFTitleOptions* options)
|
||||
{
|
||||
ffOptionDestroyModuleArg(&options->moduleArgs);
|
||||
ffStrbufDestroy(&options->colorUser);
|
||||
ffStrbufDestroy(&options->colorAt);
|
||||
ffStrbufDestroy(&options->colorHost);
|
||||
}
|
||||
|
||||
FFModuleBaseInfo ffTitleModuleInfo = {
|
||||
.name = FF_TITLE_MODULE_NAME,
|
||||
.description = "Print title, which contains your user name, hostname",
|
||||
@@ -161,23 +180,3 @@ FFModuleBaseInfo ffTitleModuleInfo = {
|
||||
{"Full user name", "full-user-name"},
|
||||
}))
|
||||
};
|
||||
|
||||
void ffInitTitleOptions(FFTitleOptions* options)
|
||||
{
|
||||
options->moduleInfo = ffTitleModuleInfo;
|
||||
ffOptionInitModuleArg(&options->moduleArgs, "");
|
||||
ffStrbufSetStatic(&options->moduleArgs.key, " ");
|
||||
|
||||
options->fqdn = false;
|
||||
ffStrbufInit(&options->colorUser);
|
||||
ffStrbufInit(&options->colorAt);
|
||||
ffStrbufInit(&options->colorHost);
|
||||
}
|
||||
|
||||
void ffDestroyTitleOptions(FFTitleOptions* options)
|
||||
{
|
||||
ffOptionDestroyModuleArg(&options->moduleArgs);
|
||||
ffStrbufDestroy(&options->colorUser);
|
||||
ffStrbufDestroy(&options->colorAt);
|
||||
ffStrbufDestroy(&options->colorHost);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "fastfetch.h"
|
||||
#include "option.h"
|
||||
|
||||
#define FF_TITLE_MODULE_NAME "Title"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user