From ac52ea1afbadb99376599e8d5ceedfeb931aa399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sat, 5 Apr 2025 08:37:18 +0800 Subject: [PATCH] Fastfetch: fix loading example configs from presets directory Fix #1672 --- src/fastfetch.c | 47 ++++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/fastfetch.c b/src/fastfetch.c index 5ebb2b707..19ff6a982 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -466,38 +466,31 @@ static void optionParseConfigFile(FFdata* data, const char* key, const char* val if (parseJsoncFile(absolutePath.chars, strictJson)) return; - if (!ffStrbufContainC(&absolutePath, '/') - #ifdef _WIN32 - && !ffStrbufContainC(&absolutePath, '\\') - #endif - ) + //Try to load as a relative path + + FF_LIST_FOR_EACH(FFstrbuf, path, instance.state.platform.dataDirs) { - //Try to load as a relative path + ffStrbufSet(&absolutePath, path); + ffStrbufAppendS(&absolutePath, "fastfetch/presets/"); + ffStrbufAppendS(&absolutePath, value); + if (needExtension) + ffStrbufAppendS(&absolutePath, ".jsonc"); - FF_LIST_FOR_EACH(FFstrbuf, path, instance.state.platform.dataDirs) - { - ffStrbufSet(&absolutePath, path); - ffStrbufAppendS(&absolutePath, "fastfetch/presets/"); - ffStrbufAppendS(&absolutePath, value); - if (needExtension) - ffStrbufAppendS(&absolutePath, ".jsonc"); + if (parseJsoncFile(absolutePath.chars, strictJson)) return; + } - if (parseJsoncFile(absolutePath.chars, strictJson)) return; - } + //Try to load as a relative path with the directory of fastfetch binary - //Try to load as a relative path with the directory of fastfetch binary + if (instance.state.platform.exePath.length) + { + ffStrbufSet(&absolutePath, &instance.state.platform.exePath); + ffStrbufSubstrBeforeLastC(&absolutePath, '/'); + ffStrbufAppendS(&absolutePath, "/"); + ffStrbufAppendS(&absolutePath, value); + if (needExtension) + ffStrbufAppendS(&absolutePath, ".jsonc"); - if (instance.state.platform.exePath.length) - { - ffStrbufSet(&absolutePath, &instance.state.platform.exePath); - ffStrbufSubstrBeforeLastC(&absolutePath, '/'); - ffStrbufAppendS(&absolutePath, "/"); - ffStrbufAppendS(&absolutePath, value); - if (needExtension) - ffStrbufAppendS(&absolutePath, ".jsonc"); - - if (parseJsoncFile(absolutePath.chars, strictJson)) return; - } + if (parseJsoncFile(absolutePath.chars, strictJson)) return; } //File not found