Introduce FFPlatform

This commit is contained in:
Linus Dierheimer
2023-01-15 15:57:26 +01:00
parent dd77ebe11e
commit a1d8e3e598
39 changed files with 622 additions and 560 deletions
+2 -2
View File
@@ -158,9 +158,9 @@ static void detectGTK(const FFinstance* instance, const char* version, FFGTKResu
FFstrbuf baseDir;
ffStrbufInitA(&baseDir, 64);
for(uint32_t i = 0; i < instance->state.configDirs.length; i++)
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance->state.platform.configDirs)
{
ffStrbufSet(&baseDir, ffListGet(&instance->state.configDirs, i));
ffStrbufSet(&baseDir, configDir);
detectGTKFromConfigDir(&baseDir, version, result);
if(allPropertiesSet(result))
break;
-2
View File
@@ -17,8 +17,6 @@ typedef struct FFOSResult
FFstrbuf versionID;
FFstrbuf codename;
FFstrbuf buildID;
FFstrbuf systemName;
FFstrbuf architecture;
} FFOSResult;
const FFOSResult* ffDetectOS(const FFinstance* instance);
-4
View File
@@ -23,10 +23,6 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufInit(&os->buildID);
ffSettingsGetAndroidProperty("ro.build.id", &os->buildID);
ffStrbufInitS(&os->systemName, instance->state.utsname.sysname);
ffStrbufInitS(&os->architecture, instance->state.utsname.machine);
ffStrbufInit(&os->idLike);
ffStrbufInit(&os->variant);
ffStrbufInit(&os->variantID);
-4
View File
@@ -61,8 +61,6 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufInit(&os->id);
ffStrbufInit(&os->prettyName);
ffStrbufInit(&os->versionID);
ffStrbufInit(&os->systemName);
ffStrbufInit(&os->architecture);
ffStrbufInitA(&os->codename, 0);
ffStrbufInitA(&os->idLike, 0);
@@ -82,8 +80,6 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufAppend(&os->prettyName, &os->name);
ffStrbufAppend(&os->versionID, &os->version);
ffSysctlGetString("kern.ostype", &os->systemName);
ffSysctlGetString("hw.machine", &os->architecture);
parseOSXSoftwareLicense(os);
}
-5
View File
@@ -138,11 +138,6 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufInit(&os->versionID);
ffStrbufInit(&os->codename);
ffStrbufInit(&os->buildID);
ffStrbufInit(&os->systemName);
ffStrbufInit(&os->architecture);
ffStrbufSetS(&os->systemName, instance->state.utsname.sysname);
ffStrbufSetS(&os->architecture, instance->state.utsname.machine);
detectOS(os, instance);
-5
View File
@@ -56,8 +56,6 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufInit(&os->versionID);
ffStrbufInit(&os->codename);
ffStrbufInit(&os->buildID);
ffStrbufInit(&os->systemName);
ffStrbufInit(&os->architecture);
if(getOsNameByWinbrand(&os->variant) && getOsNameByWmi(&os->variant))
return;
@@ -106,7 +104,4 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
}
ffStrbufAppendF(&os->id, "%*s %*s", os->prettyName.length, os->prettyName.chars, os->version.length, os->version.chars);
ffStrbufSetS(&os->architecture, instance->state.utsname.machine);
ffStrbufSetS(&os->systemName, instance->state.utsname.sysname);
}
+1 -1
View File
@@ -339,7 +339,7 @@ void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result)
result->rpm = getRpmFromLibrpm(instance);
#endif
ffStrbufSetS(&baseDir, instance->state.passwd->pw_dir);
ffStrbufSet(&baseDir, &instance->state.platform.homeDir);
result->nixUser = getNixPackages(&baseDir, "/.nix-profile");
ffStrbufDestroy(&baseDir);
+2 -2
View File
@@ -88,9 +88,9 @@ static void detectPlasma(const FFinstance* instance, FFQtResult* result)
FFstrbuf baseDir;
ffStrbufInitA(&baseDir, 64);
for(uint32_t i = 0; i < instance->state.configDirs.length; i++)
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance->state.platform.configDirs)
{
ffStrbufSet(&baseDir, ffListGet(&instance->state.configDirs, i));
ffStrbufSet(&baseDir, configDir);
ffStrbufAppendS(&baseDir, "kdeglobals");
if(detectPlasmaFromFile(baseDir.chars, result))
@@ -149,7 +149,9 @@ static void detectDeepinTerminal(const FFinstance* instance, FFTerminalFontResul
ffStrbufInit(&fontSize);
FFstrbuf profile;
ffStrbufInitF(&profile, "%s/.config/deepin/deepin-terminal/config.conf", instance->state.passwd->pw_dir);
ffStrbufInit(&profile);
ffStrbufAppend(&profile, &instance->state.platform.homeDir);
ffStrbufAppendS(&profile, ".config/deepin/deepin-terminal/config.conf"); //TODO: Use config dirs
FILE* file = fopen(profile.chars, "r");
if(file)
@@ -261,10 +261,7 @@ static void getTerminalFromEnv(FFTerminalShellResult* result)
static void getUserShellFromEnv(const FFinstance* instance, FFTerminalShellResult* result)
{
if(instance->state.passwd->pw_shell[0] != '\0')
ffStrbufAppendS(&result->userShellExe, instance->state.passwd->pw_shell);
else
ffStrbufAppendS(&result->userShellExe, getenv("SHELL"));
ffStrbufSet(&result->userShellExe, &instance->state.platform.userShell);
if(result->userShellExe.length == 0)
return;
-66
View File
@@ -1,66 +0,0 @@
#include "fastfetch.h"
#include "detection/title.h"
#include "common/thread.h"
#include <limits.h>
#include <unistd.h>
#ifndef HOST_NAME_MAX
#define HOST_NAME_MAX 64
#endif
#ifdef __linux__
#include <netdb.h>
static void detectFQDN(FFTitleResult* title)
{
struct addrinfo hints = {0};
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
struct addrinfo* info = NULL;
if(getaddrinfo(title->hostname.chars, "80", &hints, &info) == 0)
{
struct addrinfo* current = info;
while(title->fqdn.length == 0 && current != NULL)
{
ffStrbufAppendS(&title->fqdn, current->ai_canonname);
current = current->ai_next;
}
freeaddrinfo(info);
}
}
#endif
const FFTitleResult* ffDetectTitle(const FFinstance* instance)
{
static FFTitleResult result;
static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER;
static bool init = false;
ffThreadMutexLock(&mutex);
if(init)
{
ffThreadMutexUnlock(&mutex);
return &result;
}
init = true;
ffStrbufInit(&result.userName);
ffStrbufAppendS(&result.userName, instance->state.passwd->pw_name);
ffStrbufInitA(&result.hostname, HOST_NAME_MAX);
ffStrbufAppendS(&result.hostname, instance->state.utsname.nodename);
ffStrbufInitA(&result.fqdn, HOST_NAME_MAX);
#ifdef __linux__
detectFQDN(&result);
#endif
if(result.fqdn.length == 0)
ffStrbufAppend(&result.fqdn, &result.hostname);
ffThreadMutexUnlock(&mutex);
return &result;
}
-17
View File
@@ -1,17 +0,0 @@
#pragma once
#ifndef FF_INCLUDED_detection_title
#define FF_INCLUDED_detection_title
#include "fastfetch.h"
typedef struct FFTitleResult
{
FFstrbuf userName;
FFstrbuf hostname;
FFstrbuf fqdn; //Fully qualified domain name
} FFTitleResult;
const FFTitleResult* ffDetectTitle(const FFinstance* instance);
#endif
+2 -2
View File
@@ -131,9 +131,9 @@ static bool detectOpenbox(FFinstance* instance, const FFstrbuf* dePrettyName, FF
{
FFstrbuf absolutePath;
ffStrbufInitA(&absolutePath, 64);
ffStrbufAppendS(&absolutePath, instance->state.passwd->pw_dir);
ffStrbufAppendC(&absolutePath, '/');
ffStrbufAppend(&absolutePath, &instance->state.platform.homeDir);
//TODO: use config dirs
if(ffStrbufIgnCaseCompS(dePrettyName, "LXQT") == 0)
ffStrbufAppendS(&absolutePath, ".config/openbox/lxqt-rc.xml");
else if(ffStrbufIgnCaseCompS(dePrettyName, "LXDE") == 0)