aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extcap.c35
-rw-r--r--extcap.h4
-rw-r--r--ui/gtk/about_dlg.c6
-rw-r--r--ui/qt/splash_overlay.cpp9
4 files changed, 51 insertions, 3 deletions
diff --git a/extcap.c b/extcap.c
index 87a584d98a..3c7956732b 100644
--- a/extcap.c
+++ b/extcap.c
@@ -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)
diff --git a/extcap.h b/extcap.h
index 95e567d6c2..d066d9d2a9 100644
--- a/extcap.h
+++ b/extcap.h
@@ -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();