Fastfetch: add --no-buffer option

This commit is contained in:
李通洲
2023-06-13 11:08:49 +08:00
parent 17b6ff1a6d
commit 043c41dfc7
9 changed files with 30 additions and 30 deletions
+4 -7
View File
@@ -51,6 +51,7 @@ static void defaultConfig(FFinstance* instance)
instance->config.pipe = false;
instance->config.multithreading = true;
instance->config.stat = false;
instance->config.noBuffer = false;
ffInitTitleOptions(&instance->config.title);
ffInitOSOptions(&instance->config.os);
@@ -175,7 +176,7 @@ static void resetConsole()
if(ffHideCursor)
fputs("\033[?25h", stdout);
#if defined(_WIN32) && defined(FF_ENABLE_BUFFER)
#if defined(_WIN32)
fflush(stdout);
#endif
}
@@ -207,9 +208,7 @@ void ffStart(FFinstance* instance)
ffHideCursor = instance->config.hideCursor && !instance->config.pipe;
#ifdef _WIN32
#ifdef FF_ENABLE_BUFFER
setvbuf(stdout, NULL, _IOFBF, 4096);
#endif
if (!instance->config.noBuffer) setvbuf(stdout, NULL, _IOFBF, 4096);
SetConsoleCtrlHandler(consoleHandler, TRUE);
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode = 0;
@@ -217,9 +216,7 @@ void ffStart(FFinstance* instance)
SetConsoleMode(hStdout, mode | ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
SetConsoleOutputCP(CP_UTF8);
#else
#ifndef FF_ENABLE_BUFFER
setvbuf(stdout, NULL, _IONBF, 0);
#endif
if (instance->config.noBuffer) setvbuf(stdout, NULL, _IONBF, 0);
struct sigaction action = { .sa_handler = exitSignalHandler };
sigaction(SIGINT, &action, NULL);
sigaction(SIGTERM, &action, NULL);
+4 -2
View File
@@ -266,8 +266,8 @@ static const char* printJsonConfig(FFinstance* instance)
printf("\033[s\033[1A\033[9999999C\033[%dD%s\033[u", len, str); // Save; Up 1; Right 9999999; Left <len>; Print <str>; Load
}
#if defined(_WIN32) && defined(FF_ENABLE_BUFFER)
fflush(stdout);
#if defined(_WIN32)
if (!instance->config.noBuffer) fflush(stdout);
#endif
}
@@ -380,6 +380,8 @@ const char* ffParseDisplayJsonConfig(FFinstance* instance)
}
else if (strcasecmp(key, "percentType") == 0)
config->percentType = (uint32_t) yyjson_get_uint(val);
else if (strcasecmp(key, "noBuffer") == 0)
config->noBuffer = yyjson_get_bool(val);
else
return "Unknown display property";
}