@@ -126,6 +126,7 @@ static void defaultConfig(FFinstance* instance)
126126 instance -> config .hideCursor = true;
127127 instance -> config .escapeBedrock = true;
128128 instance -> config .glType = FF_GL_TYPE_AUTO ;
129+ instance -> config .pipe = false;
129130
130131 ffStrbufInitA (& instance -> config .osFormat , 0 );
131132 ffStrbufInitA (& instance -> config .osKey , 0 );
@@ -240,29 +241,29 @@ void ffInitInstance(FFinstance* instance)
240241 defaultConfig (instance );
241242}
242243
243- static void resetConsole (bool disableLinewrap , bool hideCursor )
244+ static volatile bool ffDisableLinewrap = true;
245+ static volatile bool ffHideCursor = true;
246+
247+ static void resetConsole ()
244248{
245- if (disableLinewrap )
249+ if (ffDisableLinewrap )
246250 fputs ("\033[?7h" , stdout );
247251
248- if (hideCursor )
252+ if (ffHideCursor )
249253 fputs ("\033[?25h" , stdout );
250254}
251255
252- static volatile bool ffDisableLinewrap = true;
253- static volatile bool ffHideCursor = true;
254-
255256static void exitSignalHandler (int signal )
256257{
257258 FF_UNUSED (signal );
258- resetConsole (ffDisableLinewrap , ffHideCursor );
259+ resetConsole ();
259260 exit (0 );
260261}
261262
262263void ffStart (FFinstance * instance )
263264{
264- ffDisableLinewrap = instance -> config .disableLinewrap ;
265- ffHideCursor = instance -> config .hideCursor ;
265+ ffDisableLinewrap = instance -> config .disableLinewrap && ! instance -> config . pipe ;
266+ ffHideCursor = instance -> config .hideCursor && ! instance -> config . pipe ;
266267
267268 struct sigaction action = {};
268269 action .sa_handler = exitSignalHandler ;
@@ -272,24 +273,28 @@ void ffStart(FFinstance* instance)
272273 sigaction (SIGQUIT , & action , NULL );
273274
274275 //We do the cache validation here, so we can skip it if --recache is given
275- ffCacheValidate (instance );
276+ if (!instance -> config .recache )
277+ ffCacheValidate (instance );
276278
277279 //reset everything to default before we start printing
278- fputs (FASTFETCH_TEXT_MODIFIER_RESET , stdout );
280+ if (!instance -> config .pipe )
281+ fputs (FASTFETCH_TEXT_MODIFIER_RESET , stdout );
279282
280- if (instance -> config . hideCursor )
283+ if (ffHideCursor )
281284 fputs ("\033[?25l" , stdout );
282285
283- if (instance -> config . disableLinewrap )
286+ if (ffDisableLinewrap )
284287 fputs ("\033[?7l" , stdout );
285288
286289 ffPrintLogo (instance );
287290}
288291
289292void ffFinish (FFinstance * instance )
290293{
291- ffPrintRemainingLogo (instance );
292- resetConsole (instance -> config .disableLinewrap , instance -> config .hideCursor );
294+ if (instance -> config .logoPrintRemaining )
295+ ffPrintRemainingLogo (instance );
296+
297+ resetConsole ();
293298}
294299
295300//Must be in a file compiled with the libfastfetch target, because the FF_HAVE* macros are not defined for the executable targets
0 commit comments