diff -r dc3d953a218f -r 2810e55ac99d thermferm/logger.c --- 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);