From b5454c28bf46dc290ee5d0f385396f205ea3a4be Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Sun, 9 May 2021 12:30:10 +0200 Subject: [PATCH] unified some terminal font methods --- src/common/format.c | 2 +- src/modules/terminalfont.c | 45 ++++++++++++++------------------------ 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/src/common/format.c b/src/common/format.c index b32ca4600..27f926e79 100644 --- a/src/common/format.c +++ b/src/common/format.c @@ -9,7 +9,7 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg) else if(formatarg->type == FF_FORMAT_ARG_TYPE_UINT8) ffStrbufAppendF(buffer, "%hhu", *(uint8_t*)formatarg->value); else if(formatarg->type == FF_FORMAT_ARG_TYPE_STRING) - ffStrbufAppendF(buffer, "%s", (const char*)formatarg->value); + ffStrbufAppendS(buffer, (const char*)formatarg->value); else if(formatarg->type == FF_FORMAT_ARG_TYPE_STRBUF) ffStrbufAppend(buffer, (FFstrbuf*)formatarg->value); else if(formatarg->type == FF_FORMAT_ARG_TYPE_DOUBLE) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index fcc594dd8..33f28bb11 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -30,6 +30,19 @@ static void printTerminalFont(FFinstance* instance, const char* font) ffStrbufDestroy(&pretty); } +static void printTerminalFontFromConfigFile(FFinstance* instance, const char* configFile, const char* regex) +{ + char font[128]; + ffParsePropFileConfig(instance, configFile, regex, font); + if(font[0] == '\0') + { + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"%s\" in \"$XDG_CONFIG_HOME/%s\"", regex, configFile); + return; + } + + printTerminalFont(instance, font); +} + static void printKonsole(FFinstance* instance) { char profile[128]; @@ -54,19 +67,6 @@ static void printKonsole(FFinstance* instance) printTerminalFont(instance, font); } -static void printXFCE4Terminal(FFinstance* instance) -{ - char font[128]; - ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]", font); - if(font[0] == '\0') - { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"FontName=%%[^\\n]\" in \".config/xfce4/terminal/terminalrc\""); - return; - } - - printTerminalFont(instance, font); -} - static void printTilixTerminal(FFinstance* instance) { // Note - Subject to change when DConf/GSettings fix their implementations of defaults/relocatable schemas respectively const char* fontName = NULL; @@ -107,19 +107,6 @@ static void printTilixTerminal(FFinstance* instance) ffStrbufDestroy(&key); } -static void printLxTerminal(FFinstance* instance) -{ - char font[128]; - ffParsePropFileConfig(instance, "lxterminal/lxterminal.conf", "fontname=%[^\n]", font); - if(font[0] == '\0') - { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"fontname=%%[^\\n]\" in \".config/lxterminal/lxterminal.conf\""); - return; - } - - printTerminalFont(instance, font); -} - static void printTTY(FFinstance* instance) { FFstrbuf font; @@ -155,11 +142,11 @@ void ffPrintTerminalFont(FFinstance* instance) if(ffStrbufIgnCaseCompS(&result->exeName, "konsole") == 0) printKonsole(instance); else if(ffStrbufIgnCaseCompS(&result->exeName, "xfce4-terminal") == 0) - printXFCE4Terminal(instance); + printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); + else if(ffStrbufIgnCaseCompS(&result->exeName, "lxterminal") == 0) + printTerminalFontFromConfigFile(instance, "lxterminal/lxterminal.conf", "fontname=%[^\n]"); else if(ffStrbufIgnCaseCompS(&result->exeName, "tilix") == 0) printTilixTerminal(instance); - else if(ffStrbufIgnCaseCompS(&result->exeName, "lxterminal") == 0) - printLxTerminal(instance); else if(ffStrbufStartsWithIgnCaseS(&result->exeName, "/dev/tty")) printTTY(instance); else