On 8/3/19 10:17 am, Andrew Gregory wrote:
On 03/04/19 at 04:46pm, Florian Wehner wrote:
The time logged is currently given as localtime without any time-zone information. This is confusing in various scenarios.
Examples: * If one is travelling across time-zones and the timestamps in the log appear out of order. * Comparing dates with `datediff` gives an offset by the time-zone
This patch would reformat the time-stamp to a full ISO-8601 version. It includes the 'T' separating date and time. This could be removed.
Old: [2019-03-04 16:15] New: [2019-03-04T16:15-05:00]
Signed-off-by: Florian Wehner <florian@whnr.de> --- lib/libalpm/log.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c index e46ad3c3..cf869a08 100644 --- a/lib/libalpm/log.c +++ b/lib/libalpm/log.c @@ -20,6 +20,7 @@
#include <stdio.h> #include <stdarg.h> +#include <stdlib.h> #include <errno.h> #include <syslog.h>
@@ -37,12 +38,17 @@ static int _alpm_log_leader(FILE *f, const char *prefix) { time_t t = time(NULL); + int tz_h, tz_m; struct tm *tm = localtime(&t);
+ /* Calculate the timezone offset ±hh:mm */ + tz_h = tm->tm_gmtoff/3600; + tz_m = abs(tm->tm_gmtoff - (tz_h*3600))/60;
What is tm_gmtoff? I can't find any mention of it in any documentation.
The tm_gmtoff field is derived from BSD and is a GNU library extension; So we can't use that. Allan