Skip to content
Snippets Groups Projects
Commit 350479ff authored by Benoit Rat's avatar Benoit Rat Committed by Adam Wujek
Browse files

tools: wr_date: improve get function

Use gmtime instead of localtime (TAI should never used localtime)
Add verbose option to also display linux time
parent 4bc75e18
Branches
Tags
No related merge requests found
......@@ -129,7 +129,7 @@ int wrdate_get(struct PPSG_WB *pps, int tohost)
unsigned long taih, tail, nsec, tmp1, tmp2;
uint64_t tai;
time_t t;
struct timeval tv;
struct timeval hw,sw;
struct tm tm;
char utcs[64], tais[64];
int tai_offset;
......@@ -137,10 +137,10 @@ int wrdate_get(struct PPSG_WB *pps, int tohost)
tai_offset = get_kern_leaps();
if (opt_not) {
gettimeofday(&tv, NULL);
gettimeofday(&sw, NULL);
taih = 0;
tail = tv.tv_sec + tai_offset;
nsec = tv.tv_usec * 1000;
tail = sw.tv_sec + tai_offset;
nsec = sw.tv_usec * 1000;
} else {
taih = pps->CNTR_UTCHI;
......@@ -151,25 +151,33 @@ int wrdate_get(struct PPSG_WB *pps, int tohost)
tmp2 = pps->CNTR_UTCLO;
} while((tmp1 != taih) || (tmp2 != tail));
}
gettimeofday(&sw, NULL);
tai = (uint64_t)(taih) << 32 | tail;
/* Before printing (which takes time), set host time if so asked to */
if (tohost) {
tv.tv_sec = tai - tai_offset;
tv.tv_usec = nsec / 1000;
if (settimeofday(&tv, NULL))
hw.tv_sec = tai - tai_offset;
hw.tv_usec = nsec / 1000;
if (settimeofday(&hw, NULL))
fprintf(stderr, "wr_date: settimeofday(): %s\n",
strerror(errno));
}
t = tai; localtime_r(&t, &tm);
t = tai; gmtime_r(&t, &tm);
strftime(tais, sizeof(tais), "%Y-%m-%d %H:%M:%S", &tm);
t -= tai_offset; localtime_r(&t, &tm);
t -= tai_offset; gmtime_r(&t, &tm);
strftime(utcs, sizeof(utcs), "%Y-%m-%d %H:%M:%S", &tm);
printf("%lli.%09li TAI\n"
"%s.%09li TAI\n"
"%s.%09li UTC\n", tai, nsec, tais, nsec, utcs, nsec);
if(opt_verbose)
{
gmtime_r(&(sw.tv_sec), &tm);
strftime(utcs, sizeof(utcs), "%Y-%m-%d %H:%M:%S", &tm);
printf("%s.%09li UTC (linux)\n", utcs, sw.tv_usec*1000);
}
return 0;
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment