X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/388842b5e4f834e769951b1c25fc206c96563e42..5cc4c57d4320f80c059506eccd5ad7fa3d97c66f:/util.c?ds=sidebyside diff --git a/util.c b/util.c index 69015610..97d35272 100644 --- a/util.c +++ b/util.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.90 2003-12-29 11:07:17 hannes Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.94 2004-06-15 23:05:06 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -116,19 +116,25 @@ ts_print(register const struct timeval *tvp) static unsigned b_sec; static unsigned b_usec; - switch(tflag) { - case 1: /* Default */ + switch (tflag) { + + case 0: /* Default */ s = (tvp->tv_sec + thiszone) % 86400; (void)printf("%02d:%02d:%02d.%06u ", s / 3600, (s % 3600) / 60, s % 60, (unsigned)tvp->tv_usec); break; - case -1: /* Unix timeval style */ + + case 1: /* No time stamp */ + break; + + case 2: /* Unix timeval style */ (void)printf("%u.%06u ", (unsigned)tvp->tv_sec, (unsigned)tvp->tv_usec); break; - case -2: + + case 3: /* Microseconds since previous packet */ if (b_sec == 0) { printf("000000 "); } else { @@ -146,7 +152,8 @@ ts_print(register const struct timeval *tvp) b_sec = tvp->tv_sec; b_usec = tvp->tv_usec; break; - case -3: /* Default + Date*/ + + case 4: /* Default + Date*/ s = (tvp->tv_sec + thiszone) % 86400; Time = (tvp->tv_sec + thiszone) - s; tm = gmtime (&Time); @@ -209,11 +216,9 @@ print_unknown_data(const u_char *cp,const char *ident,int len) * Convert a token value to a string; use "fmt" if not found. */ const char * -tok2str(register const struct tok *lp, register const char *fmt, - register int v) +tok2strbuf(register const struct tok *lp, register const char *fmt, + register int v, char *buf, size_t bufsize) { - static char buf[128]; - while (lp->s != NULL) { if (lp->v == v) return (lp->s); @@ -221,8 +226,25 @@ tok2str(register const struct tok *lp, register const char *fmt, } if (fmt == NULL) fmt = "#%d"; - (void)snprintf(buf, sizeof(buf), fmt, v); - return (buf); + + (void)snprintf(buf, bufsize, fmt, v); + return (const char *)buf; +} + +/* + * Convert a token value to a string; use "fmt" if not found. + */ +const char * +tok2str(register const struct tok *lp, register const char *fmt, + register int v) +{ + static char buf[4][128]; + static int idx = 0; + char *ret; + + ret = buf[idx]; + idx = (idx+1) & 3; + return tok2strbuf(lp, fmt, v, ret, sizeof(buf[0])); } /* @@ -231,7 +253,7 @@ tok2str(register const struct tok *lp, register const char *fmt, */ char * bittok2str(register const struct tok *lp, register const char *fmt, - register int v) + register int v) { static char buf[256]; /* our stringbuffer */ int buflen=0;