Acquiring the data and updating rrdtool database takes some time. Use
the same timestamp for both so that the times are consistent.
Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>
-static int write_to_logfile(struct rrd_database *rrd, const char *data)
+static int write_to_logfile(struct rrd_database *rrd, const char *data, time_t now)
int fd, ret;
int spacing, i;
char filename[1024];
int fd, ret;
int spacing, i;
char filename[1024];
if (rrd->logfile_timestamp_fmt)
time_stamp_fmt = rrd->logfile_timestamp_fmt;
if (rrd->logfile_timestamp_fmt)
time_stamp_fmt = rrd->logfile_timestamp_fmt;
- strftime(filename, sizeof(filename), rrd->logfile, localtime(&t));
+ strftime(filename, sizeof(filename), rrd->logfile, localtime(&now));
fd = open(filename, O_RDWR | O_APPEND | O_CREAT | O_CLOEXEC, 0644);
if (fd < 0) {
fd = open(filename, O_RDWR | O_APPEND | O_CREAT | O_CLOEXEC, 0644);
if (fd < 0) {
- strftime(logstr, sizeof(logstr), time_stamp_fmt, localtime(&t));
+ strftime(logstr, sizeof(logstr), time_stamp_fmt, localtime(&now));
str_ptr = logstr + strlen(logstr);
str_ptr = logstr + strlen(logstr);
+ time_t now = time(NULL);
bzero(data, sizeof(data));
bzero(data, sizeof(data));
- l = sprintf(data, "%zd:", time(NULL));
+ l = sprintf(data, "%zd:", now);
if (rrd->parser && rrd->parser->parse) {
rrd->parser->parse(data + l, rrd->parser_data,
if (rrd->parser && rrd->parser->parse) {
rrd->parser->parse(data + l, rrd->parser_data,
pr_info("Data: %s\n", data);
sanitize_rrd_update_data(data + l);
pr_info("Data: %s\n", data);
sanitize_rrd_update_data(data + l);
- write_to_logfile(rrd, data);
+ write_to_logfile(rrd, data, now);