#include <stdio.h>
#include <stdlib.h>
+#include <time.h>
#include "nest/bird.h"
btime rt = current_real_time() - dt;
int v1 = !fmt->limit || (dt < fmt->limit);
- tm_format_real_time(x, v1 ? fmt->fmt1 : fmt->fmt2, rt);
+ if (!tm_format_real_time(x, TM_DATETIME_BUFFER_SIZE, v1 ? fmt->fmt1 : fmt->fmt2, rt))
+ strcpy(x, "<error>");
}
/* Replace %f in format string with usec scaled to requested precision */
return str - buf;
}
-void
-tm_format_real_time(char *x, const char *fmt, btime t)
+int
+tm_format_real_time(char *x, size_t max, const char *fmt, btime t)
{
s64 t1 = t TO_S;
s64 t2 = t - t1 S;
time_t ts = t1;
struct tm tm;
if (!localtime_r(&ts, &tm))
- goto err;
+ return 0;
byte tbuf[TM_DATETIME_BUFFER_SIZE];
- if (!strfusec(tbuf, TM_DATETIME_BUFFER_SIZE, fmt, t2))
- goto err;
-
- if (!strftime(x, TM_DATETIME_BUFFER_SIZE, tbuf, &tm))
- goto err;
+ if (!strfusec(tbuf, max, fmt, t2))
+ return 0;
- return;
+ if (!strftime(x, max, tbuf, &tm))
+ return 0;
-err:
- strcpy(x, "<error>");
+ return 1;
}