]> The Tcpdump Group git mirrors - tcpdump/blobdiff - util.c
- add support for return code values
[tcpdump] / util.c
diff --git a/util.c b/util.c
index 69015610e3a5ae4cea33f99d4ea3c75c22e60fda..06820a353d1bf807ed34fcce56a0b038cece37e8 100644 (file)
--- 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.93 2004-04-29 02:15:16 mcr Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -209,11 +209,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 +219,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 +246,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;