tcpdump mailing list archives

tok2str() patch


From: "Gisle Vanem" <giva () bgnett no>
Date: Wed, 24 Mar 2004 20:26:19 +0100

tok2str() is in several files used multiple times in the same 
printf() statement. This doesn't work if all values 'v' are unknown.
I suggest we allow for max 4 buffer to be returned in a round-robin
fashion.

--- tcpdump-2004.03.24/util.c   Mon Dec 29 12:07:17 2003
+++ util.c      Wed Mar 24 20:22:23 2004
@@ -212,7 +212,9 @@
 tok2str(register const struct tok *lp, register const char *fmt,
        register int v)
 {
-       static char buf[128];
+       static char buf[4][128];
+       static int idx = 0;
+       char *ret;

        while (lp->s != NULL) {
                if (lp->v == v)
@@ -221,8 +223,10 @@
        }
        if (fmt == NULL)
                fmt = "#%d";
-       (void)snprintf(buf, sizeof(buf), fmt, v);
-       return (buf);
+       ret = buf[idx];
+       (void)snprintf(ret, sizeof(buf[0]), fmt, v);
+       idx = (idx+1) & 3;
+       return (const char*) ret;
 }

--gv


-
This is the TCPDUMP workers list. It is archived at
http://www.tcpdump.org/lists/workers/index.html
To unsubscribe use mailto:tcpdump-workers-request () tcpdump org?body=unsubscribe


Current thread: