thermferm/logger.c

changeset 61
2810e55ac99d
parent 51
a03b6dac5398
child 62
dc22cb54babd
--- a/thermferm/logger.c	Sat May 31 12:00:40 2014 +0200
+++ b/thermferm/logger.c	Wed Jun 04 16:00:35 2014 +0200
@@ -22,6 +22,8 @@
 
 #include "thermferm.h"
 
+char		check[10240] = "";
+
 
 void logger(char *filename, char *progname, char *data)
 {
@@ -37,16 +39,19 @@
 
     gettimeofday(&now, NULL);
     localtime_r(&now.tv_sec, &ptm);
+    outstr = calloc(10240, sizeof(char));
+    snprintf(outstr, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data);
 
-    if ((logfile = fopen(name, "a+"))) {
-	outstr = calloc(10240, sizeof(char));
-	snprintf(outstr, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data);
-	fprintf(logfile, outstr);
-	fclose(logfile);
-	free(outstr);
-	outstr = NULL;
-    } else {
+    if (strcmp(check, outstr)) {
+	snprintf(check, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data);
+    	if ((logfile = fopen(name, "a+"))) {
+	    fprintf(logfile, outstr);
+	    fclose(logfile);
+	    free(outstr);
+	    outstr = NULL;
+    	} else {
 	    syslog(LOG_NOTICE, "logger: cannot open %s for writing", name);
+    	}
     }
 
     free(name);

mercurial