X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ftod.c;h=5f451ba96de445e6b52a60b01f5a04a9ed4bc8dd;hb=f10e2052dc60814e241eda952149459674906cdf;hp=c6afb713eb2bd1706e9100ebe8d0d9c6d8d27583;hpb=3634fc257bd0667daef14d72005cd87c735bbb24;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/tod.c b/src/src/tod.c index c6afb713e..5f451ba96 100644 --- a/src/src/tod.c +++ b/src/src/tod.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2009 */ +/* Copyright (c) University of Cambridge 1995 - 2014 */ /* See the file NOTICE for conditions of use and distribution. */ /* A function for returning the time of day in various formats */ @@ -34,6 +34,7 @@ option. Argument: type of timestamp required: tod_bsdin BSD inbox format tod_epoch Unix epoch format + tod_epochl Unix epoch/usec format tod_full full date and time tod_log log file data line format, with zone if log_timezone is TRUE @@ -51,9 +52,20 @@ Returns: pointer to fixed buffer containing the timestamp uschar * tod_stamp(int type) { -time_t now = time(NULL); +time_t now; struct tm *t; +if (type == tod_epoch_l) + { + struct timeval tv; + gettimeofday(&tv, NULL); + /* Unix epoch/usec format */ + (void) sprintf(CS timebuf, TIME_T_FMT "%06ld", tv.tv_sec, (long) tv.tv_usec ); + return timebuf; + } + +now = time(NULL); + /* Vary log type according to timezone requirement */ if (type == tod_log) type = log_timezone? tod_log_zone : tod_log_bare; @@ -62,8 +74,8 @@ if (type == tod_log) type = log_timezone? tod_log_zone : tod_log_bare; else if (type == tod_epoch) { - (void) sprintf(CS timebuf, "%d", (int)now); /* Unix epoch format */ - return timebuf; + (void) sprintf(CS timebuf, TIME_T_FMT, now); /* Unix epoch format */ + return timebuf; /* NB the above will be wrong if time_t is FP */ } else if (type == tod_zulu)