Browse code

introduce logg_noflush: flush only on warnings and errors

c4w: no need to flush on each debug message, just flush on errors/warnings.

Török Edvin authored on 2010/11/10 05:41:48
Showing 3 changed files
... ...
@@ -80,7 +80,7 @@ pthread_mutex_t mdprintf_mutex = PTHREAD_MUTEX_INITIALIZER;
80 80
 
81 81
 FILE *logg_fp = NULL;
82 82
 
83
-short int logg_verbose = 0, logg_nowarn = 0, logg_lock = 1, logg_time = 0, logg_foreground = 1;
83
+short int logg_verbose = 0, logg_nowarn = 0, logg_lock = 1, logg_time = 0, logg_foreground = 1, logg_noflush = 0;
84 84
 unsigned int logg_size = 0;
85 85
 const char *logg_file = NULL;
86 86
 #if defined(USE_SYSLOG) && !defined(C_AIX)
... ...
@@ -329,6 +329,7 @@ int logg(const char *str, ...)
329 329
 	}
330 330
 
331 331
 	if(logg_fp) {
332
+	    char flush = !logg_noflush;
332 333
             /* Need to avoid logging time for verbose messages when logverbose
333 334
                is not set or we get a bunch of timestamps in the log without
334 335
                newlines... */
... ...
@@ -343,9 +344,11 @@ int logg(const char *str, ...)
343 343
 
344 344
 	    if(*buff == '!') {
345 345
 		fprintf(logg_fp, "ERROR: %s", buff + 1);
346
+		flush = 1;
346 347
 	    } else if(*buff == '^') {
347 348
 		if(!logg_nowarn)
348 349
 		    fprintf(logg_fp, "WARNING: %s", buff + 1);
350
+		flush = 1;
349 351
 	    } else if(*buff == '*' || *buff == '$') {
350 352
 		    fprintf(logg_fp, "%s", buff + 1);
351 353
 	    } else if(*buff == '#' || *buff == '~') {
... ...
@@ -353,7 +356,8 @@ int logg(const char *str, ...)
353 353
 	    } else
354 354
 		fprintf(logg_fp, "%s", buff);
355 355
 
356
-	    fflush(logg_fp);
356
+	    if (flush)
357
+		fflush(logg_fp);
357 358
 	}
358 359
     }
359 360
 
... ...
@@ -40,7 +40,7 @@ int logg(const char *str, ...);
40 40
 #endif
41 41
 
42 42
 void logg_close(void);
43
-extern short int logg_verbose, logg_nowarn, logg_lock, logg_time;
43
+extern short int logg_verbose, logg_nowarn, logg_lock, logg_time, logg_noflush;
44 44
 extern unsigned int logg_size;
45 45
 extern const char *logg_file;
46 46
 
... ...
@@ -61,6 +61,7 @@ BOOL init() {
61 61
     logg_time = 1;
62 62
     logg_size = -1;
63 63
     logg_file = strdup(whereami);
64
+    logg_noflush = 1;/* only flush on errors and warnings */
64 65
     if(!logg_file)
65 66
 	return FALSE;
66 67
     if(logg("ClamAV core initialized\n"))