aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-01-02 16:24:41 -0500
committerMichael Mann <mmann78@netscape.net>2017-01-02 23:16:34 +0000
commitab075d356342b1f652ec56cf178104e16f68f4dd (patch)
tree50e6a5b7e65c2868cac0b42c6fac7f8f08e19250
parentc950ebdd0fe3938c4e8087ef1bce6d365d9de1f6 (diff)
Use g_slist_find_custom instead of g_slist_nth when just looking for item in list.
Change-Id: Ida3c5d5826f0ca01a25052a67f1460ff4686008f Reviewed-on: https://code.wireshark.org/review/19513 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/export_object.c23
-rw-r--r--epan/follow.c23
-rw-r--r--epan/packet.c22
-rw-r--r--epan/rtd_table.c23
-rw-r--r--epan/srt_table.c23
5 files changed, 68 insertions, 46 deletions
diff --git a/epan/export_object.c b/epan/export_object.c
index 5c7d38fb6e..495609b6b1 100644
--- a/epan/export_object.c
+++ b/epan/export_object.c
@@ -86,19 +86,24 @@ export_object_gui_reset_cb get_eo_reset_func(register_eo_t* eo)
return eo->reset_cb;
}
+static gint
+find_matching_eo(gconstpointer arg1, gconstpointer arg2)
+{
+ register_eo_t *eo = (register_eo_t*)arg1;
+ const gchar *name = (const gchar *)arg2;
+
+ return strcmp(proto_get_protocol_filter_name(eo->proto_id), name);
+}
+
register_eo_t* get_eo_by_name(const char* name)
{
- guint i, size = g_slist_length(registered_eo_tables);
- register_eo_t* eo;
- GSList *slist;
+ GSList *found_eo;
- for (i = 0; i < size; i++) {
- slist = g_slist_nth(registered_eo_tables, i);
- eo = (register_eo_t*)slist->data;
+ found_eo = g_slist_find_custom(registered_eo_tables,
+ (gpointer)name, find_matching_eo);
- if (strcmp(name, proto_get_protocol_filter_name(eo->proto_id)) == 0)
- return eo;
- }
+ if (found_eo)
+ return (register_eo_t*)found_eo->data;
return NULL;
}
diff --git a/epan/follow.c b/epan/follow.c
index c7859736e3..415d3e7efc 100644
--- a/epan/follow.c
+++ b/epan/follow.c
@@ -120,19 +120,24 @@ follow_tap_func get_follow_tap_handler(register_follow_t* follower)
}
+static gint
+find_matching_follower(gconstpointer arg1, gconstpointer arg2)
+{
+ register_follow_t *follower = (register_follow_t *)arg1;
+ const gchar *name = (const gchar *)arg2;
+
+ return strcmp(proto_get_protocol_short_name(find_protocol_by_id(follower->proto_id)), name);
+}
+
register_follow_t* get_follow_by_name(const char* proto_short_name)
{
- guint i, size = g_slist_length(registered_followers);
- register_follow_t *follower;
- GSList *slist;
+ GSList *found_follower;
- for (i = 0; i < size; i++) {
- slist = g_slist_nth(registered_followers, i);
- follower = (register_follow_t*)slist->data;
+ found_follower = g_slist_find_custom(registered_followers,
+ (gpointer)proto_short_name, find_matching_follower);
- if (strcmp(proto_short_name, proto_get_protocol_short_name(find_protocol_by_id(follower->proto_id))) == 0)
- return follower;
- }
+ if (found_follower)
+ return (register_follow_t*)found_follower->data;
return NULL;
}
diff --git a/epan/packet.c b/epan/packet.c
index 67ebb65f4b..56b64e62b8 100644
--- a/epan/packet.c
+++ b/epan/packet.c
@@ -3046,11 +3046,18 @@ void call_heur_dissector_direct(heur_dtbl_entry_t *heur_dtbl_entry, tvbuff_t *tv
}
+static gint
+find_matching_proto_name(gconstpointer arg1, gconstpointer arg2)
+{
+ const char *protocol_name = (const char*)arg1;
+ const gchar *name = (const gchar *)arg2;
+
+ return strcmp(protocol_name, name);
+}
+
gboolean register_depend_dissector(const char* parent, const char* dependent)
{
- guint i, list_size;
GSList *list_entry;
- const char *protocol_name;
depend_dissector_list_t sub_dissectors;
if ((parent == NULL) || (dependent == NULL))
@@ -3068,14 +3075,9 @@ gboolean register_depend_dissector(const char* parent, const char* dependent)
}
/* Verify that sub-dissector is not already in the list */
- list_size = g_slist_length(sub_dissectors->dissectors);
- for (i = 0; i < list_size; i++)
- {
- list_entry = g_slist_nth(sub_dissectors->dissectors, i);
- protocol_name = (const char*)list_entry->data;
- if (strcmp(dependent, protocol_name) == 0)
- return TRUE; /* Dependency already exists */
- }
+ list_entry = g_slist_find_custom(sub_dissectors->dissectors, (gpointer)dependent, find_matching_proto_name);
+ if (list_entry != NULL)
+ return TRUE; /* Dependency already exists */
sub_dissectors->dissectors = g_slist_prepend(sub_dissectors->dissectors, (gpointer)g_strdup(dependent));
return TRUE;
diff --git a/epan/rtd_table.c b/epan/rtd_table.c
index a93bb18815..d8cc80f3fe 100644
--- a/epan/rtd_table.c
+++ b/epan/rtd_table.c
@@ -130,19 +130,24 @@ void reset_rtd_table(rtd_stat_table* table, rtd_gui_reset_cb gui_callback, void
}
+static gint
+find_matching_rtd(gconstpointer arg1, gconstpointer arg2)
+{
+ register_rtd_t *rtd = (register_rtd_t*)arg1;
+ const gchar *name = (const gchar *)arg2;
+
+ return strcmp(proto_get_protocol_filter_name(rtd->proto_id), name);
+}
+
register_rtd_t* get_rtd_table_by_name(const char* name)
{
- guint i, size = g_slist_length(registered_rtd_tables);
- register_rtd_t* rtd;
- GSList *slist;
+ GSList *found_rtd;
- for (i = 0; i < size; i++) {
- slist = g_slist_nth(registered_rtd_tables, i);
- rtd = (register_rtd_t*)slist->data;
+ found_rtd = g_slist_find_custom(registered_rtd_tables,
+ (gpointer)name, find_matching_rtd);
- if (strcmp(name, proto_get_protocol_filter_name(rtd->proto_id)) == 0)
- return rtd;
- }
+ if (found_rtd)
+ return (register_rtd_t*)found_rtd->data;
return NULL;
}
diff --git a/epan/srt_table.c b/epan/srt_table.c
index 2a583df5d3..63d58cca20 100644
--- a/epan/srt_table.c
+++ b/epan/srt_table.c
@@ -139,19 +139,24 @@ void reset_srt_table(GArray* srt_array, srt_gui_reset_cb gui_callback, void *cal
static GSList *registered_srt_tables = NULL;
+static gint
+find_matching_srt(gconstpointer arg1, gconstpointer arg2)
+{
+ register_srt_t *srt = (register_srt_t*)arg1;
+ const gchar *name = (const gchar *)arg2;
+
+ return strcmp(proto_get_protocol_filter_name(srt->proto_id), name);
+}
+
register_srt_t* get_srt_table_by_name(const char* name)
{
- guint i, size = g_slist_length(registered_srt_tables);
- register_srt_t* srt;
- GSList *slist;
+ GSList *found_srt;
- for (i = 0; i < size; i++) {
- slist = g_slist_nth(registered_srt_tables, i);
- srt = (register_srt_t*)slist->data;
+ found_srt = g_slist_find_custom(registered_srt_tables,
+ (gpointer)name, find_matching_srt);
- if (strcmp(name, proto_get_protocol_filter_name(srt->proto_id)) == 0)
- return srt;
- }
+ if (found_srt)
+ return (register_srt_t*)found_srt->data;
return NULL;
}