20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
21 *****************************************************************************/ |
21 *****************************************************************************/ |
22 |
22 |
23 #include "thermferm.h" |
23 #include "thermferm.h" |
24 |
24 |
25 //char check[10240] = ""; |
|
26 |
|
27 |
25 |
28 void logger(char *filename, char *progname, char *data) |
26 void logger(char *filename, char *progname, char *data) |
29 { |
27 { |
30 struct timeval now; |
28 struct timeval now; |
31 struct tm ptm; |
29 struct tm ptm; |
32 char *outstr = NULL, *name = NULL; |
30 char *outstr = NULL, *name = NULL; |
33 FILE *logfile; |
31 FILE *logfile; |
34 |
32 |
35 name = xstrcpy((char *)"/var/local/log/"); |
33 if (getenv((char *)"USER") == NULL) { |
|
34 name = xstrcpy((char *)"/root"); |
|
35 } else { |
|
36 name = xstrcpy(getenv((char *)"HOME")); |
|
37 } |
|
38 name = xstrcat(name, (char *)"/."); |
36 name = xstrcat(name, progname); |
39 name = xstrcat(name, progname); |
37 name = xstrcat(name, (char *)"/"); |
40 name = xstrcat(name, (char *)"/log/"); |
|
41 mkdirs(name, 0755); |
38 name = xstrcat(name, filename); |
42 name = xstrcat(name, filename); |
39 |
43 |
40 gettimeofday(&now, NULL); |
44 gettimeofday(&now, NULL); |
41 localtime_r(&now.tv_sec, &ptm); |
45 localtime_r(&now.tv_sec, &ptm); |
42 outstr = calloc(10240, sizeof(char)); |
46 outstr = calloc(10240, sizeof(char)); |
43 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); |
47 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); |
44 |
48 |
45 // if (strcmp(check, outstr)) { |
49 if ((logfile = fopen(name, "a+"))) { |
46 // 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); |
50 fprintf(logfile, outstr); |
47 if ((logfile = fopen(name, "a+"))) { |
51 fclose(logfile); |
48 fprintf(logfile, outstr); |
52 } else { |
49 fclose(logfile); |
53 syslog(LOG_NOTICE, "logger: cannot open %s for writing", name); |
50 } else { |
54 } |
51 syslog(LOG_NOTICE, "logger: cannot open %s for writing", name); |
|
52 } |
|
53 // } |
|
54 |
55 |
55 free(outstr); |
56 free(outstr); |
56 outstr = NULL; |
57 outstr = NULL; |
57 free(name); |
58 free(name); |
58 name = NULL; |
59 name = NULL; |