mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
TerminalFont: don't use singleton
Singleton doesn't work well with JSON config
This commit is contained in:
@@ -374,20 +374,18 @@ static bool detectTerminalFontCommon(const FFinstance* instance, const FFTermina
|
||||
return true;
|
||||
}
|
||||
|
||||
const FFTerminalFontResult* ffDetectTerminalFont(const FFinstance* instance)
|
||||
bool ffDetectTerminalFont(const FFinstance* instance, FFTerminalFontResult* result)
|
||||
{
|
||||
FF_DETECTION_INTERNAL_GUARD(FFTerminalFontResult,
|
||||
ffStrbufInit(&result.error);
|
||||
const FFTerminalShellResult* terminalShell = ffDetectTerminalShell(instance);
|
||||
|
||||
const FFTerminalShellResult* terminalShell = ffDetectTerminalShell(instance);
|
||||
if(terminalShell->terminalProcessName.length == 0)
|
||||
ffStrbufAppendS(&result->error, "Terminal font needs successful terminal detection");
|
||||
|
||||
if(terminalShell->terminalProcessName.length == 0)
|
||||
ffStrbufAppendS(&result.error, "Terminal font needs successful terminal detection");
|
||||
else if(!detectTerminalFontCommon(instance, terminalShell, result))
|
||||
ffDetectTerminalFontPlatform(instance, terminalShell, result);
|
||||
|
||||
else if(!detectTerminalFontCommon(instance, terminalShell, &result))
|
||||
ffDetectTerminalFontPlatform(instance, terminalShell, &result);
|
||||
if(result->error.length == 0 && result->font.pretty.length == 0)
|
||||
ffStrbufAppendF(&result->error, "Unknown terminal: %s", terminalShell->terminalProcessName.chars);
|
||||
|
||||
if(result.error.length == 0 && result.font.pretty.length == 0)
|
||||
ffStrbufAppendF(&result.error, "Unknown terminal: %s", terminalShell->terminalProcessName.chars);
|
||||
);
|
||||
return result->error.length == 0;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,6 @@ typedef struct FFTerminalFontResult
|
||||
FFfont font;
|
||||
} FFTerminalFontResult;
|
||||
|
||||
const FFTerminalFontResult* ffDetectTerminalFont(const FFinstance* instance);
|
||||
bool ffDetectTerminalFont(const FFinstance* instance, FFTerminalFontResult* result);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,28 +8,33 @@
|
||||
|
||||
void ffPrintTerminalFont(FFinstance* instance, FFTerminalFontOptions* options)
|
||||
{
|
||||
const FFTerminalFontResult* terminalFont = ffDetectTerminalFont(instance);
|
||||
FFTerminalFontResult terminalFont;
|
||||
ffStrbufInit(&terminalFont.error);
|
||||
|
||||
if(terminalFont->error.length > 0)
|
||||
if(!ffDetectTerminalFont(instance, &terminalFont))
|
||||
{
|
||||
ffPrintError(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, "%s", terminalFont->error.chars);
|
||||
return;
|
||||
}
|
||||
|
||||
if(options->moduleArgs.outputFormat.length == 0)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs.key);
|
||||
ffStrbufPutTo(&terminalFont->font.pretty, stdout);
|
||||
ffPrintError(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, "%s", terminalFont.error.chars);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintFormat(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, 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}
|
||||
});
|
||||
if(options->moduleArgs.outputFormat.length == 0)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs.key);
|
||||
ffStrbufPutTo(&terminalFont.font.pretty, stdout);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintFormat(instance, FF_TERMINALFONT_DISPLAY_NAME, 0, &options->moduleArgs, 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}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
ffStrbufDestroy(&terminalFont.error);
|
||||
ffFontDestroy(&terminalFont.font);
|
||||
}
|
||||
|
||||
void ffInitTerminalFontOptions(FFTerminalFontOptions* options)
|
||||
|
||||
Reference in New Issue
Block a user