Config: add --list-config-paths option

This commit is contained in:
李通洲 2023-01-02 16:51:11 +08:00
parent 3caa92c567
commit 0d722ebe0b
No known key found for this signature in database
GPG Key ID: 3570F9F0F4410388
5 changed files with 32 additions and 0 deletions

View File

@ -8,6 +8,7 @@ Features:
* Raw image file as logo support (@CarterLi)
* Look for config files in `$LOCALAPPDATA` (Windows)
* Look for config files in `~/Library/Preferences` (macOS)
* Add `--list-config-paths` option which list search paths of config files
Logos:
* Raspbian (@IamNoRobot, #373)

View File

@ -4,6 +4,7 @@ Informative options:
-h,--help: Show this message
-h,--help <command>: Show help for a specific command
-v,--version: Show the version of fastfetch
--list-config-paths: List search paths of config files
--list-logos: List available logos
--list-modules: List available modules
--list-presets: List presets fastfetch knows about; they can be loaded with --load-config (+)

View File

@ -538,6 +538,15 @@ static inline void listAvailablePresets(FFinstance* instance)
ffStrbufDestroy(&folder);
}
static void listConfigPaths(FFinstance* instance)
{
FF_LIST_FOR_EACH(FFstrbuf, folder, instance->state.configDirs)
{
ffStrbufAppendS(folder, "fastfetch/config.conf");
printf("%s%s\n", folder->chars, ffFileExists(folder->chars, S_IFREG) ? " (*)" : "");
}
}
static void parseOption(FFinstance* instance, FFdata* data, const char* key, const char* value);
static bool parseConfigFile(FFinstance* instance, FFdata* data, const char* path)
@ -902,6 +911,11 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con
listAvailablePresets(instance);
exit(0);
}
else if(strcasecmp(subkey, "-config-paths") == 0)
{
listConfigPaths(instance);
exit(0);
}
else if(strcasecmp(subkey, "-features") == 0)
{
ffListFeatures();

View File

@ -45,6 +45,12 @@ static inline void ffListSort(FFlist* list, int(*compar)(const void*, const void
qsort(list->data, list->length, list->elementSize, compar);
}
#define FF_LIST_FOR_EACH(itemType, itemVarName, listVar) \
assert(sizeof(itemType) == (listVar).elementSize); \
for(itemType* itemVarName = (itemType*)(listVar).data; \
itemVarName - (itemType*)(listVar).data < (listVar).length; \
++itemVarName)
#if defined(_WIN32) || defined(__APPLE__)
#define FF_LIST_AUTO_DESTROY FFlist __attribute__((__cleanup__(ffListDestroy)))
#endif

View File

@ -40,6 +40,10 @@ int main(void)
VERIFY(list.capacity == 0);
VERIFY(list.length == 0);
//forEach
FF_LIST_FOR_EACH(uint32_t, item, list)
VERIFY(false);
//add
for (uint32_t i = 1; i <= FF_LIST_DEFAULT_ALLOC + 1; ++i)
{
@ -61,6 +65,12 @@ int main(void)
VERIFY(*(uint32_t*)ffListGet(&list, i - 1) == i);
}
uint32_t sum = 0;
//forEach
FF_LIST_FOR_EACH(uint32_t, item, list)
sum += *item;
VERIFY(sum == (1 + FF_LIST_DEFAULT_ALLOC + 1) * (FF_LIST_DEFAULT_ALLOC + 1) / 2);
// ffListFirstIndexComp
uint32_t n = 10;
VERIFY(ffListFirstIndexComp(&list, &n, numEqualsAdapter) == 9);