From 1bbcd9ad0ddc94a1b3a226395e3a9d430535a5fa Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Sun, 8 Jan 2023 12:30:36 +0100 Subject: [PATCH] Look for logo files in /fastfetch/logos/ too #375 --- src/logo/logo.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/logo/logo.c b/src/logo/logo.c index e460ba55e..dd9f7ddd5 100644 --- a/src/logo/logo.c +++ b/src/logo/logo.c @@ -285,12 +285,38 @@ static void logoPrintData(FFinstance* instance, bool doColorReplacement) { logoApplyColorsDetected(instance); } +static bool loadLogoFile(const FFinstance* instance, FFstrbuf* buffer) +{ + if(ffAppendFileBuffer(instance->config.logo.source.chars, buffer)) + return true; + + FFstrbuf fullPath; + ffStrbufInit(&fullPath); + + FF_LIST_FOR_EACH(FFstrbuf, dataDir, instance->state.dataDirs) + { + //We need to copy it, because multiple threads might be using dataDirs at the same time + ffStrbufSet(&fullPath, dataDir); + ffStrbufAppendS(&fullPath, "fastfetch/logos/"); + ffStrbufAppend(&fullPath, &instance->config.logo.source); + + if(ffAppendFileBuffer(fullPath.chars, buffer)) + { + ffStrbufDestroy(&fullPath); + return true; + } + } + + ffStrbufDestroy(&fullPath); + return false; +} + static bool logoPrintFileIfExists(FFinstance* instance, bool doColorReplacement, bool raw) { FFstrbuf content; ffStrbufInit(&content); - if(!ffAppendFileBuffer(instance->config.logo.source.chars, &content)) + if(!loadLogoFile(instance, &content)) { ffStrbufDestroy(&content); fputs("Logo: Failed to load file content from logo source\n", stderr);