From 1cda1eb653d74d644e8fb7d523a6c3114fdf4403 Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Sat, 27 Feb 2021 18:30:05 +0100 Subject: [PATCH] refactored internal state keeping --- CMakeLists.txt | 24 +++++++-- src/fastfetch.c | 88 ++++++++++++++++++-------------- src/fastfetch.h | 84 ++++++++++++++++-------------- src/flashfetch.c | 42 +++++++++++++++ src/logo.c | 44 ++++++++-------- src/modules/battery.c | 16 +++--- src/modules/break.c | 4 +- src/modules/colors.c | 6 +-- src/modules/cpu.c | 14 +++-- src/modules/desktopenvironment.c | 7 ++- src/modules/disk.c | 6 +-- src/modules/font.c | 12 ++--- src/modules/gpu.c | 10 ++-- src/modules/host.c | 10 ++-- src/modules/icons.c | 12 ++--- src/modules/kernel.c | 6 +-- src/modules/locale.c | 8 +-- src/modules/memory.c | 6 +-- src/modules/os.c | 10 ++-- src/modules/packages.c | 4 +- src/modules/resolution.c | 12 ++--- src/modules/seperator.c | 6 +-- src/modules/shell.c | 8 +-- src/modules/terminal.c | 14 ++--- src/modules/theme.c | 12 ++--- src/modules/title.c | 8 +-- src/modules/uptime.c | 14 ++--- src/util.c | 44 +++++++--------- 28 files changed, 304 insertions(+), 227 deletions(-) create mode 100644 src/flashfetch.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 6076b3f53..024094922 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,7 @@ include_directories( ${PROJECT_SOURCE_DIR}/src ) -add_executable(${PROJECT_NAME} - src/fastfetch.c +set(SRCS src/util.c src/logo.c src/modules/break.c @@ -53,7 +52,26 @@ add_executable(${PROJECT_NAME} src/modules/colors.c ) -target_link_libraries(${PROJECT_NAME} +add_executable(fastfetch + src/fastfetch.c + ${SRCS} +) + +target_link_libraries(fastfetch + ${CMAKE_DL_LIBS} + pci +) + +add_executable(flashfetch + src/flashfetch.c + ${SRCS} +) + +target_compile_definitions(flashfetch PUBLIC + FASTFETCH_BUILD_FLASHFETCH +) + +target_link_libraries(flashfetch ${CMAKE_DL_LIBS} pci ) \ No newline at end of file diff --git a/src/fastfetch.c b/src/fastfetch.c index 582157d01..d1bfa7c25 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -47,7 +47,7 @@ static void printCommandHelp(const char* command) printf("No specific help for command %s provided\n", command); } -static void parseArguments(int argc, char** argv, FFstate* state) +static void parseArguments(int argc, char** argv, FFconfig* config) { bool colorText = true; @@ -74,12 +74,12 @@ static void parseArguments(int argc, char** argv, FFstate* state) } else if(strcmp(argv[i], "--print-logos") == 0) { - ffPrintLogos(state->colorLogo); + ffPrintLogos(config->colorLogo); exit(0); } else if(strcmp(argv[i], "--show-errors") == 0) { - state->showErrors = true; + config->showErrors = true; } else if(strcmp(argv[i], "-l") == 0 || strcmp(argv[i], "--logo") == 0) { @@ -89,7 +89,7 @@ static void parseArguments(int argc, char** argv, FFstate* state) exit(41); } - ffLoadLogoSet(state, argv[i + 1]); + ffLoadLogoSet(config, argv[i + 1]); ++i; } else if(strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--color") == 0) @@ -105,7 +105,7 @@ static void parseArguments(int argc, char** argv, FFstate* state) printf("Error: max color string length is 28, %zu given\n", len); exit(43); } - sprintf(state->color, "\033[%sm", argv[i + 1]); + sprintf(config->color, "\033[%sm", argv[i + 1]); ++i; } else if(strcmp(argv[i], "-s") == 0 || strcmp(argv[i], "--seperator") == 0) @@ -115,7 +115,7 @@ static void parseArguments(int argc, char** argv, FFstate* state) printf("Error: usage: %s \n", argv[i]); exit(44); } - if(sscanf(argv[i + 1], "%hd", &state->logo_seperator) != 1) + if(sscanf(argv[i + 1], "%hd", &config->logo_seperator) != 1) { printf("Error: couldn't parse %s to uint16_t\n", argv[i + 1]); exit(45); @@ -129,7 +129,7 @@ static void parseArguments(int argc, char** argv, FFstate* state) printf("Error: usage: %s \n", argv[i]); exit(46); } - if(sscanf(argv[i + 1], "%hi", &state->offsetx) != 1) + if(sscanf(argv[i + 1], "%hi", &config->offsetx) != 1) { printf("Error: couldn't parse %s to int16_t\n", argv[i + 1]); exit(47); @@ -138,16 +138,16 @@ static void parseArguments(int argc, char** argv, FFstate* state) } else if(strcmp(argv[i], "-r") == 0 || strcmp(argv[i], "--recache") == 0) { - state->recache = true; + config->recache = true; } else if(strcmp(argv[i], "--no-color") == 0) { colorText = false; - state->colorLogo = false; + config->colorLogo = false; } else if(strcmp(argv[i], "--no-color-logo") == 0) { - state->colorLogo = false; + config->colorLogo = false; } else { @@ -156,42 +156,54 @@ static void parseArguments(int argc, char** argv, FFstate* state) } } - ffLoadLogo(state); //We need to do this here, because of --no-color + ffLoadLogo(config); //We need to do this here, because of --no-color if(colorText) - strcpy(state->color, state->logo.color); + strcpy(config->color, config->logo.color); else - state->color[0] = '\0'; + config->color[0] = '\0'; +} + +static void defaultConfig(FFconfig* config) +{ + config->logo_seperator = 4; + config->offsetx = 0; + config->titleLength = 20; // This is overwritten by ffPrintTitle + config->colorLogo = true; + config->showErrors = false; + config->recache = false; } int main(int argc, char** argv) { - FFstate state; - ffInitState(&state); - parseArguments(argc, argv, &state); + FFinstance instance; + ffInitState(&instance.state); + defaultConfig(&instance.config); + + parseArguments(argc, argv, &instance.config); //Start the printing - ffPrintTitle(&state); - ffPrintSeperator(&state); - ffPrintOS(&state); - ffPrintHost(&state); - ffPrintKernel(&state); - ffPrintUptime(&state); - ffPrintPackages(&state); - ffPrintShell(&state); - ffPrintResolution(&state); - ffPrintDesktopEnvironment(&state); - ffPrintTheme(&state); - ffPrintIcons(&state); - ffPrintFont(&state); - ffPrintTerminal(&state); - ffPrintCPU(&state); - ffPrintGPU(&state); - ffPrintMemory(&state); - ffPrintDisk(&state); - ffPrintBattery(&state); - ffPrintLocale(&state); - ffPrintBreak(&state); - ffPrintColors(&state); + ffPrintTitle(&instance); + ffPrintSeperator(&instance); + ffPrintOS(&instance); + ffPrintHost(&instance); + ffPrintKernel(&instance); + ffPrintUptime(&instance); + ffPrintPackages(&instance); + ffPrintShell(&instance); + ffPrintResolution(&instance); + ffPrintDesktopEnvironment(&instance); + ffPrintTheme(&instance); + ffPrintIcons(&instance); + ffPrintFont(&instance); + ffPrintTerminal(&instance); + ffPrintCPU(&instance); + ffPrintGPU(&instance); + ffPrintMemory(&instance); + ffPrintDisk(&instance); + ffPrintBattery(&instance); + ffPrintLocale(&instance); + ffPrintBreak(&instance); + ffPrintColors(&instance); return 0; } diff --git a/src/fastfetch.h b/src/fastfetch.h index 9187ebed9..275fa39ba 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -28,12 +28,8 @@ typedef struct FFlogo char color[32]; } FFlogo; -typedef struct FFstate +typedef struct FFconfig { - //Actual state stuff - uint8_t current_row; - - //Configuration stuff FFlogo logo; uint16_t logo_seperator; int16_t offsetx; @@ -42,51 +38,65 @@ typedef struct FFstate bool colorLogo; bool showErrors; bool recache; +} FFconfig; - //Common stuff +typedef struct FFstate +{ + uint8_t current_row; struct passwd* passwd; struct utsname utsname; struct sysinfo sysinfo; } FFstate; +typedef struct FFinstance +{ + FFconfig config; + FFstate state; +} FFinstance; + //Util functions void ffInitState(FFstate* state); -void ffPrintLogoLine(FFstate* state); -void ffPrintKey(FFstate* state, const char* key); -void ffPrintLogoAndKey(FFstate* state, const char* key); +void ffPrintKey(FFconfig* config, const char* key); +void ffPrintLogoAndKey(FFinstance* instance, const char* key); void ffParsePropFile(const char* file, const char* regex, char* buffer); -void ffParsePropFileHome(FFstate* state, const char* relativeFile, const char* regex, char* buffer); +void ffParsePropFileHome(FFinstance* instance, const char* relativeFile, const char* regex, char* buffer); void ffPrintGtkPretty(const char* gtk2, const char* gtk3, const char* gtk4); -void ffPrintError(FFstate* state, const char* key, const char* message); -bool ffPrintCachedValue(FFstate* state, const char* key); -void ffPrintAndSaveCachedValue(FFstate* state, const char* key, const char* value); +void ffPrintError(FFinstance* instance, const char* key, const char* message); +bool ffPrintCachedValue(FFinstance* instance, const char* key); +void ffPrintAndSaveCachedValue(FFinstance* instance, const char* key, const char* value); -void ffLoadLogoSet(FFstate* state, const char* logo); -void ffLoadLogo(FFstate* state); +//Logo functions +void ffLoadLogoSet(FFconfig* config, const char* logo); +void ffLoadLogo(FFconfig* config); +void ffPrintLogoLine(FFinstance* instance); + +#ifndef FLASHFETCH_BUILD_FLASHFATCH void ffListLogos(); void ffPrintLogos(bool color); +#endif -void ffPrintBreak(FFstate* state); -void ffPrintTitle(FFstate* state); -void ffPrintSeperator(FFstate* state); -void ffPrintOS(FFstate* state); -void ffPrintHost(FFstate* state); -void ffPrintKernel(FFstate* state); -void ffPrintUptime(FFstate* state); -void ffPrintPackages(FFstate* state); -void ffPrintShell(FFstate* state); -void ffPrintResolution(FFstate* state); -void ffPrintDesktopEnvironment(FFstate* state); -void ffPrintTheme(FFstate* state); -void ffPrintIcons(FFstate* state); -void ffPrintFont(FFstate* state); -void ffPrintTerminal(FFstate* state); -void ffPrintCPU(FFstate* state); -void ffPrintGPU(FFstate* state); -void ffPrintMemory(FFstate* state); -void ffPrintDisk(FFstate* state); -void ffPrintBattery(FFstate* state); -void ffPrintLocale(FFstate* state); -void ffPrintColors(FFstate* state); +//Module functions +void ffPrintBreak(FFinstance* state); +void ffPrintTitle(FFinstance* state); +void ffPrintSeperator(FFinstance* state); +void ffPrintOS(FFinstance* state); +void ffPrintHost(FFinstance* state); +void ffPrintKernel(FFinstance* state); +void ffPrintUptime(FFinstance* state); +void ffPrintPackages(FFinstance* state); +void ffPrintShell(FFinstance* state); +void ffPrintResolution(FFinstance* state); +void ffPrintDesktopEnvironment(FFinstance* state); +void ffPrintTheme(FFinstance* state); +void ffPrintIcons(FFinstance* state); +void ffPrintFont(FFinstance* state); +void ffPrintTerminal(FFinstance* state); +void ffPrintCPU(FFinstance* state); +void ffPrintGPU(FFinstance* state); +void ffPrintMemory(FFinstance* state); +void ffPrintDisk(FFinstance* state); +void ffPrintBattery(FFinstance* state); +void ffPrintLocale(FFinstance* state); +void ffPrintColors(FFinstance* state); #endif \ No newline at end of file diff --git a/src/flashfetch.c b/src/flashfetch.c new file mode 100644 index 000000000..edee52cf4 --- /dev/null +++ b/src/flashfetch.c @@ -0,0 +1,42 @@ +#include "fastfetch.h" + +int main(int argc, char** argv) +{ + FFinstance instance; + ffInitState(&instance.state); + + instance.config.logo_seperator = 4; + instance.config.offsetx = 0; + instance.config.titleLength = 20; // This is overwritten by ffPrintTitle + instance.config.colorLogo = true; + instance.config.showErrors = false; + instance.config.recache = false; + ffLoadLogoSet(&instance.config, "arch"); + + //Printing + + ffPrintTitle(&instance); + ffPrintSeperator(&instance); + ffPrintOS(&instance); + ffPrintHost(&instance); + ffPrintKernel(&instance); + ffPrintUptime(&instance); + ffPrintPackages(&instance); + ffPrintShell(&instance); + ffPrintResolution(&instance); + ffPrintDesktopEnvironment(&instance); + ffPrintTheme(&instance); + ffPrintIcons(&instance); + ffPrintFont(&instance); + ffPrintTerminal(&instance); + ffPrintCPU(&instance); + ffPrintGPU(&instance); + ffPrintMemory(&instance); + ffPrintDisk(&instance); + ffPrintBattery(&instance); + ffPrintLocale(&instance); + ffPrintBreak(&instance); + ffPrintColors(&instance); + + return 0; +} \ No newline at end of file diff --git a/src/logo.c b/src/logo.c index afe485a25..605bc26ac 100644 --- a/src/logo.c +++ b/src/logo.c @@ -67,65 +67,67 @@ static void loadArchLogo(FFlogo* logo, bool doColor) sprintf(logo->chars[19], FASTFETCH_TEXT_MODIFIER_BOLT"%s.` `/"FASTFETCH_TEXT_MODIFIER_RESET, color); } -void ffLoadLogoSet(FFstate* state, const char* logo) +void ffLoadLogoSet(FFconfig* config, const char* logo) { if(strcasecmp(logo, "none") == 0) { - loadNoneLogo(&state->logo); - state->logo_seperator = 0; //This is wanted in most cases, so just set it + loadNoneLogo(&config->logo); + config->logo_seperator = 0; //This is wanted in most cases, so just set it } else if(strcasecmp(logo, "arch") == 0) { - loadArchLogo(&state->logo, state->colorLogo); + loadArchLogo(&config->logo, config->colorLogo); } else { - if(state->showErrors) + if(config->showErrors) printf(FASTFETCH_TEXT_MODIFIER_ERROR"Error: unknown logo: %s"FASTFETCH_TEXT_MODIFIER_RESET"\n", logo); - loadUnknownLogo(&state->logo); + loadUnknownLogo(&config->logo); } } -void ffLoadLogo(FFstate* state) +void ffLoadLogo(FFconfig* config) { char id[256]; ffParsePropFile("/etc/os-release", "ID=%[^\n]", id); if(id[0] == '\0') { - if(state->showErrors) + if(config->showErrors) puts(FASTFETCH_TEXT_MODIFIER_ERROR"Error: \"ID=%[^\\n]\" not found in \"/etc/os-release\""FASTFETCH_TEXT_MODIFIER_RESET); - loadUnknownLogo(&state->logo); + loadUnknownLogo(&config->logo); } else { - ffLoadLogoSet(state, id); + ffLoadLogoSet(config, id); } } -void ffPrintLogoLine(FFstate* state) +void ffPrintLogoLine(FFinstance* instance) { - for(int16_t i = 0; i < state->offsetx; i++) + for(int16_t i = 0; i < instance->config.offsetx; i++) putchar(' '); - int16_t cut = state->offsetx >= 0 ? 0 : - (state->logo.width > state->offsetx * -1 ? state->offsetx * -1 : state->logo.width); + int16_t cut = instance->config.offsetx >= 0 ? 0 : + (instance->config.logo.width > instance->config.offsetx * -1 ? instance->config.offsetx * -1 : instance->config.logo.width); - if(state->current_row < state->logo.height) + if(instance->state.current_row < instance->config.logo.height) { - printf(state->logo.chars[state->current_row] + cut); + printf(instance->config.logo.chars[instance->state.current_row] + cut); } else { - for(uint8_t i = 0; i < state->logo.width - cut; i++) + for(uint8_t i = 0; i < instance->config.logo.width - cut; i++) putchar(' '); } - for(uint16_t i = 0; i < state->logo_seperator; i++) + for(uint16_t i = 0; i < instance->config.logo_seperator; i++) putchar(' '); - ++state->current_row; + ++instance->state.current_row; } +#ifndef FASTFETCH_BUILD_FLASHFETCH + static FFlogo* getLogos(uint8_t* size, bool color) { #define FASTFETCH_LOGO_AMOUNT 3 @@ -163,4 +165,6 @@ void ffPrintLogos(bool doColor) puts(logos[i].chars[k]); putchar('\n'); } -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/src/modules/battery.c b/src/modules/battery.c index c273562e3..563f8a343 100644 --- a/src/modules/battery.c +++ b/src/modules/battery.c @@ -1,20 +1,20 @@ #include "fastfetch.h" -void ffPrintBattery(FFstate* state) +void ffPrintBattery(FFinstance* instance) { int scanned; FILE* fullFile = fopen("/sys/class/power_supply/BAT0/charge_full", "r"); if(fullFile == NULL) { - ffPrintError(state, "Battery", "fopen(\"/sys/class/power_supply/BAT0/charge_full\", \"r\") == NULL"); + ffPrintError(instance, "Battery", "fopen(\"/sys/class/power_supply/BAT0/charge_full\", \"r\") == NULL"); return; } uint32_t full; scanned = fscanf(fullFile, "%u", &full); if(scanned != 1) { - ffPrintError(state, "Battery", "fscanf(fullFile, \"%u\", &full) != 1"); + ffPrintError(instance, "Battery", "fscanf(fullFile, \"%u\", &full) != 1"); return; } fclose(fullFile); @@ -22,14 +22,14 @@ void ffPrintBattery(FFstate* state) FILE* nowFile = fopen("/sys/class/power_supply/BAT0/charge_now", "r"); if(nowFile == NULL) { - ffPrintError(state, "Battery", "fopen(\"/sys/class/power_supply/BAT0/charge_now\", \"r\") == NULL"); + ffPrintError(instance, "Battery", "fopen(\"/sys/class/power_supply/BAT0/charge_now\", \"r\") == NULL"); return; } uint32_t now; scanned = fscanf(nowFile, "%u", &now); if(scanned != 1) { - ffPrintError(state, "Battery", "fscanf(nowFile, \"%u\", &now) != 1"); + ffPrintError(instance, "Battery", "fscanf(nowFile, \"%u\", &now) != 1"); return; } fclose(nowFile); @@ -37,20 +37,20 @@ void ffPrintBattery(FFstate* state) FILE* statusFile = fopen("/sys/class/power_supply/BAT0/status", "r"); if(statusFile == NULL) { - ffPrintError(state, "Battery", "fopen(\"/sys/class/power_supply/BAT0/status\", \"r\") == NULL"); + ffPrintError(instance, "Battery", "fopen(\"/sys/class/power_supply/BAT0/status\", \"r\") == NULL"); return; } char status[256]; scanned = fscanf(statusFile, "%s", status); if(scanned != 1) { - ffPrintError(state, "Battery", "fscanf(statusFile, \"%u\", &status) != 1"); + ffPrintError(instance, "Battery", "fscanf(statusFile, \"%u\", &status) != 1"); return; } fclose(statusFile); uint32_t percentage = (now / (double) full) * 100; - ffPrintLogoAndKey(state, "Battery"); + ffPrintLogoAndKey(instance, "Battery"); printf("%u%% [%s]\n", percentage, status); } \ No newline at end of file diff --git a/src/modules/break.c b/src/modules/break.c index 733fdaf85..717ec3f7c 100644 --- a/src/modules/break.c +++ b/src/modules/break.c @@ -1,7 +1,7 @@ #include "fastfetch.h" -void ffPrintBreak(FFstate* state) +void ffPrintBreak(FFinstance* instance) { - ffPrintLogoLine(state); + ffPrintLogoLine(instance); putchar('\n'); } \ No newline at end of file diff --git a/src/modules/colors.c b/src/modules/colors.c index 7ac43edee..a6f655750 100644 --- a/src/modules/colors.c +++ b/src/modules/colors.c @@ -1,15 +1,15 @@ #include "fastfetch.h" -void ffPrintColors(FFstate* state) +void ffPrintColors(FFinstance* instance) { - ffPrintLogoLine(state); + ffPrintLogoLine(instance); for(uint8_t i = 0; i < 8; i++) printf("\033[4%dm ", i); puts("\033[0m"); - ffPrintLogoLine(state); + ffPrintLogoLine(instance); for(uint8_t i = 8; i < 16; i++) printf("\033[48;5;%dm ", i); diff --git a/src/modules/cpu.c b/src/modules/cpu.c index bcb2d8943..d27feeb48 100644 --- a/src/modules/cpu.c +++ b/src/modules/cpu.c @@ -1,31 +1,29 @@ #include "fastfetch.h" -#include - -void ffPrintCPU(FFstate* state) +void ffPrintCPU(FFinstance* instance) { - if(ffPrintCachedValue(state, "CPU")) + if(ffPrintCachedValue(instance, "CPU")) return; char name[256]; ffParsePropFile("/proc/cpuinfo", "model name%*s %[^\n]", name); if(name[0] == '\0') { - ffPrintError(state, "CPU", "\"model name%*s %[^\\n]\" not found in \"/proc/cpuinfo\""); + ffPrintError(instance, "CPU", "\"model name%*s %[^\\n]\" not found in \"/proc/cpuinfo\""); return; } FILE* frequencyFile = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r"); if(frequencyFile == NULL) { - ffPrintError(state, "CPU", "fopen(\"/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq\", \"r\") == NULL"); + ffPrintError(instance, "CPU", "fopen(\"/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq\", \"r\") == NULL"); return; } uint32_t frequency; int scanned = fscanf(frequencyFile, "%u", &frequency); if(scanned != 1) { - ffPrintError(state, "CPU", "fscanf(frequencyFile, \"%s\", frequency) != 1"); + ffPrintError(instance, "CPU", "fscanf(frequencyFile, \"%s\", frequency) != 1"); return; } fclose(frequencyFile); @@ -36,5 +34,5 @@ void ffPrintCPU(FFstate* state) char value[1024]; sprintf(value, "%s (%i) @ %.9gGHz", name, get_nprocs(), ghz); - ffPrintAndSaveCachedValue(state, "CPU", value); + ffPrintAndSaveCachedValue(instance, "CPU", value); } \ No newline at end of file diff --git a/src/modules/desktopenvironment.c b/src/modules/desktopenvironment.c index 335813595..f9d3a3a4d 100644 --- a/src/modules/desktopenvironment.c +++ b/src/modules/desktopenvironment.c @@ -1,7 +1,6 @@ #include "fastfetch.h" #include -#include static void printKDE() { @@ -16,16 +15,16 @@ static void printKDE() printf("KDE Plasma %s", version); } -void ffPrintDesktopEnvironment(FFstate* state) +void ffPrintDesktopEnvironment(FFinstance* instance) { const char* currentDesktop = getenv("XDG_CURRENT_DESKTOP"); if(currentDesktop == NULL) { - ffPrintError(state, "DE", "getenv(\"XDG_CURRENT_DESKTOP\") == NULL"); + ffPrintError(instance, "DE", "getenv(\"XDG_CURRENT_DESKTOP\") == NULL"); return; } - ffPrintLogoAndKey(state, "DE"); + ffPrintLogoAndKey(instance, "DE"); if(strcmp(currentDesktop, "KDE") == 0) printKDE(); diff --git a/src/modules/disk.c b/src/modules/disk.c index ea1c27db6..19b3d71a2 100644 --- a/src/modules/disk.c +++ b/src/modules/disk.c @@ -2,13 +2,13 @@ #include -void ffPrintDisk(FFstate* state) +void ffPrintDisk(FFinstance* instance) { struct statvfs fs; int ret = statvfs("/", &fs); if(ret != 0) { - ffPrintError(state, "Disk (/)", "statvfs(\"/\", &fs) != 0"); + ffPrintError(instance, "Disk (/)", "statvfs(\"/\", &fs) != 0"); return; } @@ -20,6 +20,6 @@ void ffPrintDisk(FFstate* state) const uint32_t percentage = (used / (double) total) * 100.0; - ffPrintLogoAndKey(state, "Disk (/)"); + ffPrintLogoAndKey(instance, "Disk (/)"); printf("%uGB / %uGB (%u%%)\n", used, total, percentage); } \ No newline at end of file diff --git a/src/modules/font.c b/src/modules/font.c index a5cbc0a50..79d0c6527 100644 --- a/src/modules/font.c +++ b/src/modules/font.c @@ -16,13 +16,13 @@ static void parseFont(char* font, char* buffer) sprintf(buffer, "%s (%spt)", name, size); } -void ffPrintFont(FFstate* state) +void ffPrintFont(FFinstance* instance) { char plasma[256]; - ffParsePropFileHome(state, ".config/kdeglobals", "font=%[^\n]", plasma); + ffParsePropFileHome(instance, ".config/kdeglobals", "font=%[^\n]", plasma); char gtk2[256]; - ffParsePropFileHome(state, ".gtkrc-2.0", "gtk-font-name=\"%[^\"]+", gtk2); + ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-font-name=\"%[^\"]+", gtk2); char gtk2Pretty[256]; if(gtk2[0] == '\0') @@ -31,7 +31,7 @@ void ffPrintFont(FFstate* state) parseFont(gtk2, gtk2Pretty); char gtk3[256]; - ffParsePropFileHome(state, ".config/gtk-3.0/settings.ini", "gtk-font-name=%[^\n]", gtk3); + ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-font-name=%[^\n]", gtk3); char gtk3Pretty[256]; if(gtk3[0] == '\0') @@ -40,7 +40,7 @@ void ffPrintFont(FFstate* state) parseFont(gtk3, gtk3Pretty); char gtk4[256]; - ffParsePropFileHome(state, ".config/gtk-4.0/settings.ini", "gtk-font-name=%[^\n]", gtk4); + ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-font-name=%[^\n]", gtk4); char gtk4Pretty[256]; if(gtk4Pretty[0] == '\0') @@ -48,7 +48,7 @@ void ffPrintFont(FFstate* state) else parseFont(gtk4, gtk4Pretty); - ffPrintLogoAndKey(state, "Font"); + ffPrintLogoAndKey(instance, "Font"); if(plasma[0] == '\0') { diff --git a/src/modules/gpu.c b/src/modules/gpu.c index 537145c93..ffa19dfa2 100644 --- a/src/modules/gpu.c +++ b/src/modules/gpu.c @@ -3,12 +3,12 @@ #include #include -static void handleGPU(FFstate* state, struct pci_access* pacc, struct pci_dev* dev, uint16_t counter) +static void handleGPU(FFinstance* instance, struct pci_access* pacc, struct pci_dev* dev, uint16_t counter) { char key[8]; sprintf(key, "GPU%hu", counter); - if(ffPrintCachedValue(state, key)) + if(ffPrintCachedValue(instance, key)) return; char gpu[1024]; @@ -31,10 +31,10 @@ static void handleGPU(FFstate* state, struct pci_access* pacc, struct pci_dev* d strcat(gpu, name); - ffPrintAndSaveCachedValue(state, key, gpu); + ffPrintAndSaveCachedValue(instance, key, gpu); } -void ffPrintGPU(FFstate* state) +void ffPrintGPU(FFinstance* instance) { uint16_t counter = 0; @@ -54,7 +54,7 @@ void ffPrintGPU(FFstate* state) strcmp("3D controller", class) == 0 || strcmp("Display controller", class) == 0 ) { - handleGPU(state, pacc, dev, counter++); + handleGPU(instance, pacc, dev, counter++); } } pci_cleanup(pacc); diff --git a/src/modules/host.c b/src/modules/host.c index e8fff1cf9..73e7cec52 100644 --- a/src/modules/host.c +++ b/src/modules/host.c @@ -2,9 +2,9 @@ #include -void ffPrintHost(FFstate* state) +void ffPrintHost(FFinstance* instance) { - if(ffPrintCachedValue(state, "Host")) + if(ffPrintCachedValue(instance, "Host")) return; char host[1024]; @@ -12,12 +12,12 @@ void ffPrintHost(FFstate* state) FILE* nameFile = fopen("/sys/devices/virtual/dmi/id/product_name", "r"); if(nameFile == NULL) { - ffPrintError(state, "Host", "fopen(\"/sys/devices/virtual/dmi/id/product_name\", \"r\") == NULL"); + ffPrintError(instance, "Host", "fopen(\"/sys/devices/virtual/dmi/id/product_name\", \"r\") == NULL"); return; } if(fscanf(nameFile, "%[^\n]", host) != 1) { - ffPrintError(state, "Host", "fscanf(nameFile, \"%[^\\n]\", name) != 1"); + ffPrintError(instance, "Host", "fscanf(nameFile, \"%[^\\n]\", name) != 1"); return; } fclose(nameFile); @@ -31,5 +31,5 @@ void ffPrintHost(FFstate* state) fclose(versionFile); } - ffPrintAndSaveCachedValue(state, "Host", host); + ffPrintAndSaveCachedValue(instance, "Host", host); } \ No newline at end of file diff --git a/src/modules/icons.c b/src/modules/icons.c index d817b601b..8885be525 100644 --- a/src/modules/icons.c +++ b/src/modules/icons.c @@ -2,27 +2,27 @@ #include -void ffPrintIcons(FFstate* state) +void ffPrintIcons(FFinstance* instance) { char plasma[256]; - ffParsePropFileHome(state, ".config/kdeglobals", "Theme=%[^\n]", plasma); + ffParsePropFileHome(instance, ".config/kdeglobals", "Theme=%[^\n]", plasma); char gtk2[256]; - ffParsePropFileHome(state, ".gtkrc-2.0", "gtk-icon-theme-name=\"%[^\"]+", gtk2); + ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-icon-theme-name=\"%[^\"]+", gtk2); if(gtk2[0] == '\0') strcpy(gtk2, "Adwaita"); char gtk3[256]; - ffParsePropFileHome(state, ".config/gtk-3.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk3); + ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk3); if(gtk3[0] == '\0') strcpy(gtk3, "Adwaita"); char gtk4[256]; - ffParsePropFileHome(state, ".config/gtk-4.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk4); + ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk4); if(gtk4[0] == '\0') strcpy(gtk4, "Adwaita"); - ffPrintLogoAndKey(state, "Icons"); + ffPrintLogoAndKey(instance, "Icons"); if(plasma[0] == '\0') printf("Breeze [Plasma], "); diff --git a/src/modules/kernel.c b/src/modules/kernel.c index 9caf40142..a9b16e6b5 100644 --- a/src/modules/kernel.c +++ b/src/modules/kernel.c @@ -1,7 +1,7 @@ #include "fastfetch.h" -void ffPrintKernel(FFstate* state) +void ffPrintKernel(FFinstance* instance) { - ffPrintLogoAndKey(state, "Kernel"); - printf("%s\n", state->utsname.release); + ffPrintLogoAndKey(instance, "Kernel"); + printf("%s\n", instance->state.utsname.release); } \ No newline at end of file diff --git a/src/modules/locale.c b/src/modules/locale.c index 5016c349d..df9176441 100644 --- a/src/modules/locale.c +++ b/src/modules/locale.c @@ -1,17 +1,17 @@ #include "fastfetch.h" -void ffPrintLocale(FFstate* state) +void ffPrintLocale(FFinstance* instance) { - if(ffPrintCachedValue(state, "Locale")) + if(ffPrintCachedValue(instance, "Locale")) return; char locale[256]; ffParsePropFile("/etc/locale.conf", "LANG=%[^\n]", locale); if(locale[0] == '\0') { - ffPrintError(state, "Locale", "\"LANG=%[^\\n]\" not found in \"/etc/locale.conf\""); + ffPrintError(instance, "Locale", "\"LANG=%[^\\n]\" not found in \"/etc/locale.conf\""); return; } - ffPrintAndSaveCachedValue(state, "Locale", locale); + ffPrintAndSaveCachedValue(instance, "Locale", locale); } \ No newline at end of file diff --git a/src/modules/memory.c b/src/modules/memory.c index eb8f8b36e..8686f6416 100644 --- a/src/modules/memory.c +++ b/src/modules/memory.c @@ -1,11 +1,11 @@ #include "fastfetch.h" // Impl by: https://github.com/sam-barr/paleofetch/blob/b7c58a52c0de39b53c9b5f417889a5886d324bfa/paleofetch.c#L544 -void ffPrintMemory(FFstate* state) +void ffPrintMemory(FFinstance* instance) { FILE* meminfo = fopen("/proc/meminfo", "r"); if(meminfo == NULL) { - ffPrintError(state, "Memory", "fopen(\"/proc/meminfo\", \"r\") == NULL"); + ffPrintError(instance, "Memory", "fopen(\"/proc/meminfo\", \"r\") == NULL"); return; } @@ -30,6 +30,6 @@ void ffPrintMemory(FFstate* state) uint32_t total_mem = total / 1024; uint8_t percentage = (uint8_t) ((used_mem / (double) total_mem) * 100); - ffPrintLogoAndKey(state, "Memory"); + ffPrintLogoAndKey(instance, "Memory"); printf("%uMiB / %uMiB (%u%%)\n", used_mem, total_mem, percentage); } \ No newline at end of file diff --git a/src/modules/os.c b/src/modules/os.c index 262fdc22b..a89013366 100644 --- a/src/modules/os.c +++ b/src/modules/os.c @@ -1,20 +1,20 @@ #include "fastfetch.h" -void ffPrintOS(FFstate* state) +void ffPrintOS(FFinstance* instance) { - if(ffPrintCachedValue(state, "OS")) + if(ffPrintCachedValue(instance, "OS")) return; char name[256]; ffParsePropFile("/etc/os-release", "NAME=\"%[^\"]+", name); if(name[0] == '\0') { - ffPrintError(state, "OS", "\"NAME=\\\"%[^\\\"]+\" not found in \"/etc/os-release\""); + ffPrintError(instance, "OS", "\"NAME=\\\"%[^\\\"]+\" not found in \"/etc/os-release\""); return; } char os[1024]; - sprintf(os, "%s %s", name, state->utsname.machine); + sprintf(os, "%s %s", name, instance->state.utsname.machine); - ffPrintAndSaveCachedValue(state, "OS", os); + ffPrintAndSaveCachedValue(instance, "OS", os); } \ No newline at end of file diff --git a/src/modules/packages.c b/src/modules/packages.c index a83b5ba8c..e2033867f 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -31,9 +31,9 @@ static void printPacmanPackages() printf("%i (pacman) ", nums); } -void ffPrintPackages(FFstate* state) +void ffPrintPackages(FFinstance* instance) { - ffPrintLogoAndKey(state, "Packages"); + ffPrintLogoAndKey(instance, "Packages"); printPacmanPackages(); putchar('\n'); } \ No newline at end of file diff --git a/src/modules/resolution.c b/src/modules/resolution.c index 0983cffb8..bf36a6578 100644 --- a/src/modules/resolution.c +++ b/src/modules/resolution.c @@ -34,29 +34,29 @@ short getCurrentRate(Display* display) return currentRate; } -void ffPrintResolution(FFstate* state) +void ffPrintResolution(FFinstance* instance) { - if(ffPrintCachedValue(state, "Resolution")) + if(ffPrintCachedValue(instance, "Resolution")) return; void* x11 = dlopen("libX11.so", RTLD_LAZY); if(x11 == NULL) { - ffPrintError(state, "Resolution", "dlopen(\"libX11.so\", RTLD_LAZY) == NULL"); + ffPrintError(instance, "Resolution", "dlopen(\"libX11.so\", RTLD_LAZY) == NULL"); return; } Display*(*ffXOpenDisplay)(const char*) = dlsym(x11, "XOpenDisplay"); if(ffXOpenDisplay == NULL) { - ffPrintError(state, "Resolution", "dlsym(x11, \"XOpenDisplay\") == NULL"); + ffPrintError(instance, "Resolution", "dlsym(x11, \"XOpenDisplay\") == NULL"); return; } Display* display = ffXOpenDisplay(NULL); if(display == NULL) { - ffPrintError(state, "Resolution", "ffXOpenDisplay(NULL) == NULL"); + ffPrintError(instance, "Resolution", "ffXOpenDisplay(NULL) == NULL"); return; } @@ -73,5 +73,5 @@ void ffPrintResolution(FFstate* state) else sprintf(resolution, "%ix%i @ %dHz", screen->width, screen->height, currentRate); - ffPrintAndSaveCachedValue(state, "Resolution", resolution); + ffPrintAndSaveCachedValue(instance, "Resolution", resolution); } \ No newline at end of file diff --git a/src/modules/seperator.c b/src/modules/seperator.c index 71de3a09a..8d6195cb4 100644 --- a/src/modules/seperator.c +++ b/src/modules/seperator.c @@ -1,10 +1,10 @@ #include "fastfetch.h" -void ffPrintSeperator(FFstate* state) +void ffPrintSeperator(FFinstance* instance) { - ffPrintLogoLine(state); + ffPrintLogoLine(instance); - for(uint8_t i = 0; i < state->titleLength; i++) + for(uint8_t i = 0; i < instance->config.titleLength; i++) putchar('-'); putchar('\n'); } \ No newline at end of file diff --git a/src/modules/shell.c b/src/modules/shell.c index 1287ee79d..8be5e3199 100644 --- a/src/modules/shell.c +++ b/src/modules/shell.c @@ -2,15 +2,15 @@ #include -void ffPrintShell(FFstate* state) +void ffPrintShell(FFinstance* instance) { - if(ffPrintCachedValue(state, "Shell")) + if(ffPrintCachedValue(instance, "Shell")) return; char* shellPath = getenv("SHELL"); if(shellPath == NULL) { - ffPrintError(state, "Shell", "getenv(\"SHELL\") == NULL"); + ffPrintError(instance, "Shell", "getenv(\"SHELL\") == NULL"); return; } @@ -21,5 +21,5 @@ void ffPrintShell(FFstate* state) else if(shellName[0] == '/') ++shellName; - ffPrintAndSaveCachedValue(state, "Shell", shellName); + ffPrintAndSaveCachedValue(instance, "Shell", shellName); } \ No newline at end of file diff --git a/src/modules/terminal.c b/src/modules/terminal.c index f934d8271..c7a61a5df 100644 --- a/src/modules/terminal.c +++ b/src/modules/terminal.c @@ -2,7 +2,7 @@ #include -void printTerminalName(FFstate* state, const char* pid) +void printTerminalName(FFinstance* instance, const char* pid) { char file[256]; sprintf(file, "/proc/%s/stat", pid); @@ -12,7 +12,7 @@ void printTerminalName(FFstate* state, const char* pid) { char error[300]; sprintf(error, "fopen(\"%s\", \"r\") == NULL", file); - ffPrintError(state, "Terminal", error); + ffPrintError(instance, "Terminal", error); return; } @@ -20,7 +20,7 @@ void printTerminalName(FFstate* state, const char* pid) char ppid[256]; if(fscanf(stat, "%*s (%[^)])%*s%s", name, ppid) != 2) { - ffPrintError(state, "Terminal", "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2"); + ffPrintError(instance, "Terminal", "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2"); return; } @@ -37,11 +37,11 @@ void printTerminalName(FFstate* state, const char* pid) strcmp(name, "doas") == 0 || strcmp(name, "strace") == 0 ) { - printTerminalName(state, ppid); + printTerminalName(instance, ppid); return; } - ffPrintLogoAndKey(state, "Terminal"); + ffPrintLogoAndKey(instance, "Terminal"); if( strcmp(name, "systemd") == 0 || @@ -56,9 +56,9 @@ void printTerminalName(FFstate* state, const char* pid) } } -void ffPrintTerminal(FFstate* state) +void ffPrintTerminal(FFinstance* instance) { char ppid[256]; sprintf(ppid, "%i", getppid()); - printTerminalName(state, ppid); + printTerminalName(instance, ppid); } diff --git a/src/modules/theme.c b/src/modules/theme.c index fd0cb097a..2d9485c97 100644 --- a/src/modules/theme.c +++ b/src/modules/theme.c @@ -2,27 +2,27 @@ #include -void ffPrintTheme(FFstate* state) +void ffPrintTheme(FFinstance* instance) { char plasma[256]; - ffParsePropFileHome(state, ".config/kdeglobals", "Name=%[^\n]", plasma); + ffParsePropFileHome(instance, ".config/kdeglobals", "Name=%[^\n]", plasma); char gtk2[256]; - ffParsePropFileHome(state, ".gtkrc-2.0", "gtk-theme-name=\"%[^\"]+", gtk2); + ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-theme-name=\"%[^\"]+", gtk2); if(gtk2[0] == '\0') strcpy(gtk2, "Raleigh"); char gtk3[256]; - ffParsePropFileHome(state, ".config/gtk-3.0/settings.ini", "gtk-theme-name=%[^\n]", gtk3); + ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-theme-name=%[^\n]", gtk3); if(gtk3[0] == '\0') strcpy(gtk3, "Adwaita"); char gtk4[256]; - ffParsePropFileHome(state, ".config/gtk-4.0/settings.ini", "gtk-theme-name=%[^\n]", gtk4); + ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-theme-name=%[^\n]", gtk4); if(gtk4[0] == '\0') strcpy(gtk4, "Adwaita"); - ffPrintLogoAndKey(state, "Theme"); + ffPrintLogoAndKey(instance, "Theme"); if(plasma[0] == '\0') printf("Breeze [Plasma], "); diff --git a/src/modules/title.c b/src/modules/title.c index 7a055c4b3..1f8d88e4b 100644 --- a/src/modules/title.c +++ b/src/modules/title.c @@ -2,16 +2,16 @@ #include -void ffPrintTitle(FFstate* state) +void ffPrintTitle(FFinstance* instance) { char hostname[256]; gethostname(hostname, 256); - state->titleLength = strlen(state->passwd->pw_name) + 1 + strlen(hostname); + instance->config.titleLength = strlen(instance->state.passwd->pw_name) + 1 + strlen(hostname); - ffPrintLogoLine(state); + ffPrintLogoLine(instance); printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET"@"FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET"\n", - state->color, state->passwd->pw_name, state->color, hostname + instance->config.color, instance->state.passwd->pw_name, instance->config.color, hostname ); } \ No newline at end of file diff --git a/src/modules/uptime.c b/src/modules/uptime.c index 597a217ca..65f2e9d64 100644 --- a/src/modules/uptime.c +++ b/src/modules/uptime.c @@ -1,18 +1,18 @@ #include "fastfetch.h" -void ffPrintUptime(FFstate* state) +void ffPrintUptime(FFinstance* instance) { - ffPrintLogoAndKey(state, "Uptime"); + ffPrintLogoAndKey(instance, "Uptime"); - if(state->sysinfo.uptime < 60) + if(instance->state.sysinfo.uptime < 60) { - printf("%ld seconds\n", state->sysinfo.uptime); + printf("%ld seconds\n", instance->state.sysinfo.uptime); return; } - int days = state->sysinfo.uptime / 86400; - int hours = (state->sysinfo.uptime - (days * 86400)) / 3600; - int minutes = (state->sysinfo.uptime - (days * 86400) - (hours * 3600)) / 60; + int days = instance->state.sysinfo.uptime / 86400; + int hours = (instance->state.sysinfo.uptime - (days * 86400)) / 3600; + int minutes = (instance->state.sysinfo.uptime - (days * 86400) - (hours * 3600)) / 60; if(days > 0) printf("%d day%s, ", days, days <= 1 ? "" : "s"); diff --git a/src/util.c b/src/util.c index ca663fedb..ff8b3da13 100644 --- a/src/util.c +++ b/src/util.c @@ -12,23 +12,17 @@ void ffInitState(FFstate* state) state->passwd = getpwuid(getuid()); uname(&state->utsname); sysinfo(&state->sysinfo); - state->logo_seperator = 4; - state->offsetx = 0; - state->titleLength = 20; // This is overwritten by ffPrintTitle - state->colorLogo = true; - state->showErrors = false; - state->recache = false; } -void ffPrintKey(FFstate* state, const char* key) +void ffPrintKey(FFconfig* config, const char* key) { - printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET": ", state->color, key); + printf(FASTFETCH_TEXT_MODIFIER_BOLT"%s%s"FASTFETCH_TEXT_MODIFIER_RESET": ", config->color, key); } -void ffPrintLogoAndKey(FFstate* state, const char* key) +void ffPrintLogoAndKey(FFinstance* instance, const char* key) { - ffPrintLogoLine(state); - ffPrintKey(state, key); + ffPrintLogoLine(instance); + ffPrintKey(&instance->config, key); } void ffParsePropFile(const char* fileName, const char* regex, char* buffer) @@ -52,10 +46,10 @@ void ffParsePropFile(const char* fileName, const char* regex, char* buffer) free(line); } -void ffParsePropFileHome(FFstate* state, const char* relativeFile, const char* regex, char* buffer) +void ffParsePropFileHome(FFinstance* instance, const char* relativeFile, const char* regex, char* buffer) { char absolutePath[512]; - strcpy(absolutePath, state->passwd->pw_dir); + strcpy(absolutePath, instance->state.passwd->pw_dir); strcat(absolutePath, "/"); strcat(absolutePath, relativeFile); @@ -108,21 +102,21 @@ void ffPrintGtkPretty(const char* gtk2, const char* gtk3, const char* gtk4) } } -void ffPrintError(FFstate* state, const char* key, const char* message) +void ffPrintError(FFinstance* instance, const char* key, const char* message) { - if(!state->showErrors) + if(!instance->config.showErrors) return; - ffPrintLogoAndKey(state, key); + ffPrintLogoAndKey(instance, key); printf(FASTFETCH_TEXT_MODIFIER_ERROR"%s\n"FASTFETCH_TEXT_MODIFIER_RESET, message); } -static void getCacheFileName(FFstate* state, const char* key, char* buffer) +static void getCacheFileName(FFinstance* instance, const char* key, char* buffer) { const char* xdgCache = getenv("XDG_CACHE_HOME"); if(xdgCache == NULL) { - strcpy(buffer, state->passwd->pw_dir); + strcpy(buffer, instance->state.passwd->pw_dir); strcat(buffer, "/.cache"); } else @@ -138,13 +132,13 @@ static void getCacheFileName(FFstate* state, const char* key, char* buffer) strcat(buffer, key); } -bool ffPrintCachedValue(FFstate* state, const char* key) +bool ffPrintCachedValue(FFinstance* instance, const char* key) { - if(state->recache) + if(instance->config.recache) return false; char fileName[256]; - getCacheFileName(state, key, fileName); + getCacheFileName(instance, key, fileName); int fd = open(fileName, O_RDONLY); if(fd == -1) @@ -160,19 +154,19 @@ bool ffPrintCachedValue(FFstate* state, const char* key) value[readed] = '\0'; //Somehow read doesn't alway do this - ffPrintLogoAndKey(state, key); + ffPrintLogoAndKey(instance, key); puts(value); return true; } -void ffPrintAndSaveCachedValue(FFstate* state, const char* key, const char* value) +void ffPrintAndSaveCachedValue(FFinstance* instance, const char* key, const char* value) { - ffPrintLogoAndKey(state, key); + ffPrintLogoAndKey(instance, key); puts(value); char fileName[256]; - getCacheFileName(state, key, fileName); + getCacheFileName(instance, key, fileName); int fd = open(fileName, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); if(fd == -1)