X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fslog.c;h=99eb536d1954a9996163bd112ded7089ef9bb1d8;hb=8a73e67a25fc6035e4fabacaa20a65dee016d659;hp=e35898c31cae4fae8d1b3c73a7faf5ca5302d892;hpb=1ea7dfe115b5ae6f117636ad2d0ec366985b69f1;p=psensor.git diff --git a/src/lib/slog.c b/src/lib/slog.c index e35898c..99eb536 100644 --- a/src/lib/slog.c +++ b/src/lib/slog.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2013 jeanfi@gmail.com + * Copyright (C) 2010-2014 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -33,19 +33,38 @@ #include "bool.h" #include "config.h" -#include "log.h" +#include +#include "ptime.h" #include "slog.h" static FILE *file; -static struct timeval stv; static double *last_values; static int period; static struct psensor **sensors; static pthread_mutex_t *sensors_mutex; static pthread_t thread; +static time_t st; static const char *DEFAULT_FILENAME = "sensors.log"; +static char *time_to_str(time_t *t) +{ + struct tm lt; + char *str; + + if (!localtime_r(t, <)) + return NULL; + + str = malloc(64); + + if (strftime(str, 64, "%s", <)) { + return str; + } else { + free(str); + return NULL; + } +} + static char *get_default_path() { char *home, *path, *dir; @@ -71,7 +90,7 @@ static char *get_default_path() static bool slog_open(const char *path, struct psensor **sensors) { - char *lpath; + char *lpath, *t; if (file) { log_err(_("Sensor log file already open.")); @@ -91,12 +110,10 @@ static bool slog_open(const char *path, struct psensor **sensors) if (!file) return 0; - if (gettimeofday(&stv, NULL)) { - log_err(_("gettimeofday failed.")); - return 0; - } + st = time(NULL); + t = time_to_str(&st); - fprintf(file, "I,%ld,%s\n", stv.tv_sec, VERSION); + fprintf(file, "I,%s,%s\n", t, VERSION); while (*sensors) { fprintf(file, "S,%s,%x\n", (*sensors)->id, (*sensors)->type); @@ -131,7 +148,7 @@ static void slog_write_sensors(struct psensor **sensors) last_values = malloc(count * sizeof(double)); } - fprintf(file, "%ld", tv.tv_sec - stv.tv_sec); + fprintf(file, "%ld", (long int)(tv.tv_sec - st)); for (i = 0; i < count; i++) { v = psensor_get_current_value(sensors[i]);