diff options
author | Ed Warnicke <hagbard@physics.rutgers.edu> | 2001-04-01 03:18:41 +0000 |
---|---|---|
committer | Ed Warnicke <hagbard@physics.rutgers.edu> | 2001-04-01 03:18:41 +0000 |
commit | c832ac2c35ff7c39882b0700808580912a365364 (patch) | |
tree | 9d7da71f90e656fadad511883b5ab3757a93d98f /epan/value_string.c | |
parent | 7e26a1681c32754b0aa03549682ebcf034471db7 (diff) | |
download | wireshark-c832ac2c35ff7c39882b0700808580912a365364.tar.gz wireshark-c832ac2c35ff7c39882b0700808580912a365364.tar.bz2 wireshark-c832ac2c35ff7c39882b0700808580912a365364.zip |
Moved the value_string structures and function from packet.{c,h} into
a separate value_string.{c,h}.
svn path=/trunk/; revision=3221
Diffstat (limited to 'epan/value_string.c')
-rw-r--r-- | epan/value_string.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/epan/value_string.c b/epan/value_string.c new file mode 100644 index 0000000000..66e0150e66 --- /dev/null +++ b/epan/value_string.c @@ -0,0 +1,90 @@ +/* value_string.c + * Routines for value_strings + * + * $Id: value_string.c,v 1.1 2001/04/01 03:18:41 hagbard Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@zing.org> + * Copyright 1998 Gerald Combs + * + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdio.h> + +#ifdef NEED_SNPRINTF_H +# include "snprintf.h" +#endif +#include "to_str.h" +#include "value_string.h" + +/* Tries to match val against each element in the value_string array vs. + Returns the associated string ptr on a match. + Formats val with fmt, and returns the resulting string, on failure. */ +gchar* +val_to_str(guint32 val, const value_string *vs, const char *fmt) { + gchar *ret; + static gchar str[3][64]; + static gchar *cur; + + ret = match_strval(val, vs); + if (ret != NULL) + return ret; + if (cur == &str[0][0]) { + cur = &str[1][0]; + } else if (cur == &str[1][0]) { + cur = &str[2][0]; + } else { + cur = &str[0][0]; + } + snprintf(cur, 64, fmt, val); + return cur; +} + +/* Tries to match val against each element in the value_string array vs. + Returns the associated string ptr on a match, or NULL on failure. */ +gchar* +match_strval(guint32 val, const value_string *vs) { + gint i = 0; + + while (vs[i].strptr) { + if (vs[i].value == val) + return(vs[i].strptr); + i++; + } + + return(NULL); +} + +/* Generate a string describing an enumerated bitfield (an N-bit field + with various specific values having particular names). */ +const char * +decode_enumerated_bitfield(guint32 val, guint32 mask, int width, + const value_string *tab, const char *fmt) +{ + static char buf[1025]; + char *p; + + p = decode_bitfield_value(buf, val, mask, width); + sprintf(p, fmt, val_to_str(val & mask, tab, "Unknown")); + return buf; +} + + |