diff options
author | 2019-01-26 00:53:57 +0000 | |
---|---|---|
committer | 2019-01-26 00:53:57 +0000 | |
commit | 1648765d836aa55cea00bc9e8782bce128def950 (patch) | |
tree | 4dcd4e1d881a7fdc2301b24ff933b4c2e78ea36b /usr.sbin/tcpdump/util.c | |
parent | build ccp(4) on ramdisks (diff) | |
download | wireguard-openbsd-1648765d836aa55cea00bc9e8782bce128def950.tar.xz wireguard-openbsd-1648765d836aa55cea00bc9e8782bce128def950.zip |
fix microsecond output of timestamp deltas (-tttt)
Diffstat (limited to 'usr.sbin/tcpdump/util.c')
-rw-r--r-- | usr.sbin/tcpdump/util.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/usr.sbin/tcpdump/util.c b/usr.sbin/tcpdump/util.c index cc384d18835..a344e7b9ae0 100644 --- a/usr.sbin/tcpdump/util.c +++ b/usr.sbin/tcpdump/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.27 2015/11/16 00:16:39 mmcc Exp $ */ +/* $OpenBSD: util.c,v 1.28 2019/01/26 00:53:57 procter Exp $ */ /* * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 @@ -118,8 +118,8 @@ ts_print(const struct bpf_timeval *tvp) int s; #define TSBUFLEN 32 static char buf[TSBUFLEN]; - static struct bpf_timeval last; - struct timeval diff; + static struct timeval last; + struct timeval diff, cur; time_t t; if (Iflag && device) @@ -129,28 +129,26 @@ ts_print(const struct bpf_timeval *tvp) break; case -1: /* Unix timeval style */ - (void)printf("%u.%06u ", - (u_int32_t)tvp->tv_sec, (u_int32_t)tvp->tv_usec); + (void)printf("%u.%06u ", tvp->tv_sec, tvp->tv_usec); break; case -2: - t=tvp->tv_sec; + t = tvp->tv_sec; strftime(buf, TSBUFLEN, "%b %d %T", priv_localtime(&t)); - printf("%s.%06u ", buf, (u_int32_t)tvp->tv_usec); + (void)printf("%s.%06u ", buf, tvp->tv_usec); break; - case -3: - case -4: - /* time since first/last frame */ - timersub(tvp, &last, &diff); - (void)printf("%u.%06u ", - (u_int32_t)diff.tv_sec, (u_int32_t)diff.tv_usec); - if (tflag == -3 || (last.tv_sec == 0 && last.tv_usec == 0)) - last = *tvp; + case -3: /* last frame time delta */ + case -4: /* first frame time delta */ + cur.tv_sec = tvp->tv_sec; + cur.tv_usec = tvp->tv_usec; + timersub(&cur, &last, &diff); + (void)printf("%lld.%06ld ", diff.tv_sec, diff.tv_usec); + if (!timerisset(&last) || tflag == -3) + last = cur; break; default: - /* Default */ s = (tvp->tv_sec + thiszone) % 86400; (void)printf("%02d:%02d:%02d.%06u ", - s / 3600, (s % 3600) / 60, s % 60, (u_int32_t)tvp->tv_usec); + s / 3600, (s % 3600) / 60, s % 60, tvp->tv_usec); break; } } |