summaryrefslogtreecommitdiffstats
path: root/usr.sbin/tcpdump/util.c
diff options
context:
space:
mode:
authorprocter <procter@openbsd.org>2019-01-26 00:53:57 +0000
committerprocter <procter@openbsd.org>2019-01-26 00:53:57 +0000
commit1648765d836aa55cea00bc9e8782bce128def950 (patch)
tree4dcd4e1d881a7fdc2301b24ff933b4c2e78ea36b /usr.sbin/tcpdump/util.c
parentbuild ccp(4) on ramdisks (diff)
downloadwireguard-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.c32
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;
}
}