diff options
author | Guy Harris <guy@alum.mit.edu> | 2017-01-04 14:10:16 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2017-01-04 22:10:48 +0000 |
commit | 26430ff647eff817aebdf7425f866f6d7f0f9860 (patch) | |
tree | f6545f703f207fe9f0b84d723823dd3db50143bd /extcap.c | |
parent | f7124f64a8bafe70cb52cfeb225265d229befa66 (diff) |
Include extcap binaries in the count of things to point out during startup.
The GTK+ version, at least, crashes if there are more "doing XXX..."
items put up than the calculated count, so, now that we're putting up
items for extcap binaries, we need to count the extcap binaries.
Clean up some stuff we found doing this (indentation, a _U_ on something
that's used).
Change-Id: I1f88042b64ce4b9ae352de37689677c694e3770b
Reviewed-on: https://code.wireshark.org/review/19549
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'extcap.c')
-rw-r--r-- | extcap.c | 35 |
1 files changed, 33 insertions, 2 deletions
@@ -89,6 +89,37 @@ static GHashTable *extcap_prefs_dynamic_vals = NULL; typedef gboolean(*extcap_cb_t)(const gchar *extcap, const gchar *ifname, gchar *output, void *data, gchar **err_str); +guint extcap_count(void) +{ + const char *dirname = get_extcap_dir(); + GDir *dir; + guint count; + + count = 0; + + if ((dir = g_dir_open(dirname, 0, NULL)) != NULL) + { + GString *extcap_path = NULL; + const gchar *file; + + extcap_path = g_string_new(""); + while ((file = g_dir_read_name(dir)) != NULL) + { + /* full path to extcap binary */ + g_string_printf(extcap_path, "%s" G_DIR_SEPARATOR_S "%s", dirname, file); + /* treat anything executable as an extcap binary */ + if (g_file_test(extcap_path->str, G_FILE_TEST_IS_EXECUTABLE)) + { + count++; + } + } + + g_dir_close(dir); + g_string_free(extcap_path, TRUE); + } + return count; +} + static gboolean extcap_if_exists(const gchar *ifname) { @@ -175,11 +206,10 @@ extcap_tool_add(const gchar *extcap, const extcap_interface *interface) /* Note: args does not need to be NULL-terminated. */ static void extcap_foreach(gint argc, gchar **args, extcap_cb_t cb, - void *cb_data, char **err_str, const char *ifname _U_) + void *cb_data, char **err_str, const char *ifname) { const char *dirname = get_extcap_dir(); GDir *dir; - const gchar *file; gboolean keep_going; keep_going = TRUE; @@ -187,6 +217,7 @@ static void extcap_foreach(gint argc, gchar **args, extcap_cb_t cb, if ((dir = g_dir_open(dirname, 0, NULL)) != NULL) { GString *extcap_path = NULL; + const gchar *file; extcap_path = g_string_new(""); while (keep_going && (file = g_dir_read_name(dir)) != NULL) |