aboutsummaryrefslogtreecommitdiffstats
path: root/epan/value_string.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2005-06-26 19:56:52 +0000
committerGuy Harris <guy@alum.mit.edu>2005-06-26 19:56:52 +0000
commitab797734ddebd50f40deae437f27392ca4651c92 (patch)
tree82a95df0652f9df59634fd7a7f8dd36026fa4ea7 /epan/value_string.c
parent2b07720c2fde93c0ee91e88969e76493ee7f86de (diff)
Get rid of the private "my_match_strval()" routine in many dissectors;
add a "match_strval_idx()" routine that does the same thing, and have "match_strval()" call it. Make those routines, and "val_to_str()", return a "const" pointer. Update dissectors as necessary to squelch compiler warnings produced by that. Use "val_to_str()" rather than using "match_strval()" and then, if the result is null, substituting a specific string. Clean up some other "match_strval()"/"val_to_str()" usages. Add a null pointer check in the NDPS dissector's "attribute_value()" routine, as it's not clear that "global_attribute_name" won't be null at that point. Make some global variables in the AFS4INT dissector local. Make some routines not used outside the module they're in static. Make some tables "static const". Clean up white space. Fix Gerald's address in some files. svn path=/trunk/; revision=14786
Diffstat (limited to 'epan/value_string.c')
-rw-r--r--epan/value_string.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/epan/value_string.c b/epan/value_string.c
index e7aa117159..d2874379de 100644
--- a/epan/value_string.c
+++ b/epan/value_string.c
@@ -4,10 +4,9 @@
* $Id$
*
* Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@zing.org>
+ * By Gerald Combs <gerald@ethereal.com>
* 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
@@ -38,9 +37,9 @@
/* 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*
+const gchar*
val_to_str(guint32 val, const value_string *vs, const char *fmt) {
- gchar *ret;
+ const gchar *ret;
static gchar str[3][64];
static gchar *cur;
@@ -62,23 +61,32 @@ val_to_str(guint32 val, const value_string *vs, const char *fmt) {
}
/* 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) {
+ Returns the associated string ptr, and sets "*idx" to the index in
+ that table, on a match, and returns NULL, and sets "*idx" to -1,
+ on failure. */
+const gchar*
+match_strval_idx(guint32 val, const value_string *vs, gint *idx) {
gint i = 0;
while (vs[i].strptr) {
- if (vs[i].value == val)
- /* XXX - the correct implementation would be to use the return type:
- "const gchar *", but this would require to change most calls of this
- function which are (directly and indirectly) *a lot* */
- return( (gchar *) vs[i].strptr);
+ if (vs[i].value == val) {
+ *idx = i;
+ return(vs[i].strptr);
+ }
i++;
}
+ *idx = -1;
return(NULL);
}
+/* Like match_strval_idx(), but doesn't return the index. */
+const gchar*
+match_strval(guint32 val, const value_string *vs) {
+ gint ignore_me;
+ return match_strval_idx(val, vs, &ignore_me);
+}
+
/* Generate a string describing an enumerated bitfield (an N-bit field
with various specific values having particular names). */
const char *