X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ftod.c;h=8f095aec661acae74af398ba4b1fbc212e8fff94;hb=c9068a49f52c7b42b49944852d6b93e95abb71dc;hp=2077111703deb842e067ce2d07c8973b85b49a42;hpb=f1e5fef536bdc2c5d84c4bc7852d6e948253ccaf;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/tod.c b/src/src/tod.c index 207711170..8f095aec6 100644 --- a/src/src/tod.c +++ b/src/src/tod.c @@ -1,5 +1,3 @@ -/* $Cambridge: exim/src/src/tod.c,v 1.5 2009/11/16 19:50:37 nm4 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ @@ -36,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 @@ -53,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; @@ -64,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)