time_t generalized_to_unix_time(const char *str);
int get_server_zone_offset(void);
int set_server_zone_offset(time_t t);
+char *timeval_string(TALLOC_CTX *ctx, const struct timeval *tp, bool hires);
char *current_timestring(TALLOC_CTX *ctx, bool hires);
void srv_put_dos_date(char *buf,int offset,time_t unixdate);
void srv_put_dos_date2(char *buf,int offset, time_t unixdate);
Return the date and time as a string
****************************************************************************/
-char *current_timestring(TALLOC_CTX *ctx, bool hires)
+char *timeval_string(TALLOC_CTX *ctx, const struct timeval *tp, bool hires)
{
fstring TimeBuf;
- struct timeval tp;
time_t t;
struct tm *tm;
- if (hires) {
- GetTimeOfDay(&tp);
- t = (time_t)tp.tv_sec;
- } else {
- t = time(NULL);
- }
+ t = (time_t)tp->tv_sec;
tm = localtime(&t);
if (!tm) {
if (hires) {
slprintf(TimeBuf,
sizeof(TimeBuf)-1,
"%ld.%06ld seconds since the Epoch",
- (long)tp.tv_sec,
- (long)tp.tv_usec);
+ (long)tp->tv_sec,
+ (long)tp->tv_usec);
} else {
slprintf(TimeBuf,
sizeof(TimeBuf)-1,
slprintf(TimeBuf+strlen(TimeBuf),
sizeof(TimeBuf)-1 - strlen(TimeBuf),
".%06ld",
- (long)tp.tv_usec);
+ (long)tp->tv_usec);
} else {
strftime(TimeBuf,sizeof(TimeBuf)-1,"%Y/%m/%d %H:%M:%S",tm);
}
sizeof(TimeBuf)-1,
"%s.%06ld",
asct ? asct : "unknown",
- (long)tp.tv_usec);
+ (long)tp->tv_usec);
} else {
const char *asct = asctime(tm);
fstrcpy(TimeBuf, asct ? asct : "unknown");
return talloc_strdup(ctx, TimeBuf);
}
+char *current_timestring(TALLOC_CTX *ctx, bool hires)
+{
+ struct timeval tv;
+
+ GetTimeOfDay(&tv);
+ return timeval_string(ctx, &tv, hires);
+}
/*******************************************************************
Put a dos date into a buffer (time/date format).