X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/dedd2e68e500e3fc1b8427cb04d9347c4a78d373..814765d31c7cf9bf8753cdb2c908f516608c72ee:/util.c diff --git a/util.c b/util.c index e830a084..326eae49 100644 --- a/util.c +++ b/util.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.60 1999-11-21 09:37:05 fenner Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.61 1999-11-22 07:25:27 fenner Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -163,6 +163,34 @@ ts_print(register const struct timeval *tvp) } } +/* + * Print a relative number of seconds (e.g. hold time, prune timer) + * in the form 5m1s. This does no truncation, so 32230861 seconds + * is represented as 1y1w1d1h1m1s. + */ +void +relts_print(int secs) +{ + static char *lengths[]={"y","w","d","h","m","s"}; + static int seconds[]={31536000,604800,86400,3600,60,1}; + char **l = lengths; + int *s = seconds; + int len; + int i; + + if (secs == 0) { + (void)printf("0s"); + return; + } + while (secs) { + if (secs >= *s) { + (void)printf("%d%s", secs / *s, *l); + secs -= (secs / *s) * *s; + } + s++; l++; + } +} + /* * Convert a token value to a string; use "fmt" if not found. */