diff options
-rw-r--r-- | extcap.c | 35 | ||||
-rw-r--r-- | extcap.h | 4 | ||||
-rw-r--r-- | ui/gtk/about_dlg.c | 6 | ||||
-rw-r--r-- | ui/qt/splash_overlay.cpp | 9 |
4 files changed, 51 insertions, 3 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) @@ -63,6 +63,10 @@ struct _extcap_arg; extern "C" { #endif /* __cplusplus */ +/* Count the number of extcap binaries */ +guint +extcap_count(void); + /* Registers preferences for all interfaces */ void extcap_register_preferences(void); diff --git a/ui/gtk/about_dlg.c b/ui/gtk/about_dlg.c index 802d9c6a79..5568f602ff 100644 --- a/ui/gtk/about_dlg.c +++ b/ui/gtk/about_dlg.c @@ -39,6 +39,9 @@ #ifdef HAVE_LUA #include <epan/wslua/init_wslua.h> #endif +#ifdef HAVE_EXTCAP +#include "../../extcap.h" +#endif #include "../../log.h" #include "../../register.h" @@ -258,6 +261,9 @@ splash_update(register_action_e action, const char *message, gpointer client_dat #ifdef HAVE_LUA ul_count += wslua_count_plugins (); /* get count of lua plugins */ #endif +#ifdef HAVE_EXTCAP + ul_count += extcap_count(); /* get count of extcap binaries */ +#endif } main_lb = (GtkWidget *)g_object_get_data(G_OBJECT(win), "protocol_label"); diff --git a/ui/qt/splash_overlay.cpp b/ui/qt/splash_overlay.cpp index 36d814d4f0..2b9785c55f 100644 --- a/ui/qt/splash_overlay.cpp +++ b/ui/qt/splash_overlay.cpp @@ -33,6 +33,10 @@ #include "epan/wslua/init_wslua.h" #endif +#ifdef HAVE_EXTCAP +#include "../../extcap.h" +#endif + // Uncomment to slow the update progress //#define THROTTLE_STARTUP 1 @@ -58,7 +62,10 @@ SplashOverlay::SplashOverlay(QWidget *parent) : // RA_DISSECTORS -> RA_PLUGIN_REGISTER) minus two. int register_add = 5; #ifdef HAVE_LUA - register_add += wslua_count_plugins(); /* get count of lua plugins */ + register_add += wslua_count_plugins(); /* get count of lua plugins */ +#endif +#ifdef HAVE_EXTCAP + register_add += extcap_count(); /* get count of extcap binaries */ #endif so_ui_->progressBar->setMaximum((int)register_count() + register_add); elapsed_timer_.start(); |