Files
fastfetch/src/util/platform/FFPlatform.c
T

90 lines
3.0 KiB
C
Raw Normal View History

2023-01-15 15:57:26 +01:00
#include "FFPlatform_private.h"
2023-02-01 15:56:25 +01:00
#include "util/stringUtils.h"
#include "common/io/io.h"
2023-01-15 15:57:26 +01:00
void ffPlatformInit(FFPlatform* platform)
{
ffStrbufInit(&platform->homeDir);
ffStrbufInit(&platform->cacheDir);
ffListInit(&platform->configDirs, sizeof(FFstrbuf));
ffListInit(&platform->dataDirs, sizeof(FFstrbuf));
ffStrbufInit(&platform->userName);
ffStrbufInit(&platform->hostName);
ffStrbufInit(&platform->domainName);
ffStrbufInit(&platform->userShell);
ffStrbufInit(&platform->systemName);
ffStrbufInit(&platform->systemRelease);
ffStrbufInit(&platform->systemVersion);
ffStrbufInit(&platform->systemArchitecture);
2023-01-15 16:06:50 +01:00
ffPlatformInitImpl(platform);
2023-01-15 15:57:26 +01:00
if(platform->domainName.length == 0)
ffStrbufAppend(&platform->domainName, &platform->hostName);
if(platform->systemName.length == 0)
{
#if defined(__linux__)
ffStrbufAppendS(&platform->systemName, "Linux");
#elif defined(__FreeBSD__)
ffStrbufAppendS(&platform->systemName, "FreeBSD");
#elif defined(__APPLE__)
ffStrbufAppendS(&platform->systemName, "Darwin");
#elif defined(_WIN32)
2023-01-15 15:57:26 +01:00
ffStrbufAppendS(&platform->systemName, "Windows_NT");
#else
ffStrbufAppendS(&platform->systemName, "Unknown");
2023-01-15 15:57:26 +01:00
#endif
}
if(platform->systemArchitecture.length == 0)
2023-01-16 01:20:10 +08:00
ffStrbufAppendS(&platform->systemArchitecture, "Unknown");
2023-01-15 15:57:26 +01:00
}
void ffPlatformDestroy(FFPlatform* platform)
{
ffStrbufDestroy(&platform->homeDir);
ffStrbufDestroy(&platform->cacheDir);
FF_LIST_FOR_EACH(FFstrbuf, dir, platform->configDirs)
ffStrbufDestroy(dir);
ffListDestroy(&platform->configDirs);
FF_LIST_FOR_EACH(FFstrbuf, dir, platform->dataDirs)
ffStrbufDestroy(dir);
ffListDestroy(&platform->dataDirs);
ffStrbufDestroy(&platform->userName);
ffStrbufDestroy(&platform->hostName);
ffStrbufDestroy(&platform->domainName);
ffStrbufDestroy(&platform->userShell);
2023-01-16 00:35:48 +08:00
ffStrbufDestroy(&platform->systemArchitecture);
ffStrbufDestroy(&platform->systemName);
ffStrbufDestroy(&platform->systemRelease);
ffStrbufDestroy(&platform->systemVersion);
2023-01-15 15:57:26 +01:00
}
void ffPlatformPathAddAbsolute(FFlist* dirs, const char* path)
{
if (!ffPathExists(path, FF_PATHTYPE_DIRECTORY))
return;
2023-01-15 15:57:26 +01:00
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreateS(path);
ffStrbufEnsureEndsWithC(&buffer, '/');
if (!ffListContains(dirs, &buffer, (void*) ffStrbufEqual))
ffStrbufInitMove((FFstrbuf*) ffListAdd(dirs), &buffer);
2023-01-15 15:57:26 +01:00
}
void ffPlatformPathAddHome(FFlist* dirs, const FFPlatform* platform, const char* suffix)
2023-01-15 15:57:26 +01:00
{
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreateA(64);
ffStrbufAppend(&buffer, &platform->homeDir);
ffStrbufAppendS(&buffer, suffix);
ffStrbufEnsureEndsWithC(&buffer, '/');
if (ffPathExists(buffer.chars, FF_PATHTYPE_DIRECTORY) && !ffListContains(dirs, &buffer, (void*) ffStrbufEqual))
ffStrbufInitMove((FFstrbuf*) ffListAdd(dirs), &buffer);
2023-01-15 15:57:26 +01:00
}