summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--capinfos.c18
-rw-r--r--captype.c18
-rw-r--r--dftest.c2
-rw-r--r--editcap.c17
-rw-r--r--mergecap.c18
-rw-r--r--randpkt.c19
-rw-r--r--reordercap.c18
-rw-r--r--tfshark.c2
-rw-r--r--tshark.c2
-rw-r--r--ui/gtk/main.c2
-rw-r--r--wireshark-qt.cpp2
-rw-r--r--wsutil/plugins.c29
-rw-r--r--wsutil/plugins.h6
13 files changed, 98 insertions, 55 deletions
diff --git a/capinfos.c b/capinfos.c
index 4b8debab94..9d0901da4d 100644
--- a/capinfos.c
+++ b/capinfos.c
@@ -1375,14 +1375,14 @@ print_usage(FILE *output)
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in capinfos.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
- return;
+ fprintf(stderr, "capinfos: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -1466,8 +1466,12 @@ main(int argc, char *argv[])
init_report_err(failure_message, NULL, NULL, NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most (non-wiretap)
+ plugins *should* fail to load (because we're not linked against
+ libwireshark and dissector plugins need libwireshark). */
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/captype.c b/captype.c
index 942bc59695..d83b21485c 100644
--- a/captype.c
+++ b/captype.c
@@ -70,14 +70,14 @@ print_usage(FILE *output)
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in captype.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
- return;
+ fprintf(stderr, "captype: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -141,8 +141,12 @@ main(int argc, char *argv[])
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most (non-wiretap)
+ plugins *should* fail to load (because we're not linked against
+ libwireshark and dissector plugins need libwireshark). */
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/dftest.c b/dftest.c
index 9b4276ecac..888bfd1fad 100644
--- a/dftest.c
+++ b/dftest.c
@@ -88,7 +88,7 @@ main(int argc, char **argv)
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */
- scan_plugins();
+ scan_plugins(REPORT_LOAD_FAILURE);
#endif
/* Register all dissectors; we must do this before checking for the
diff --git a/editcap.c b/editcap.c
index 70d0823199..da9c76d3c3 100644
--- a/editcap.c
+++ b/editcap.c
@@ -894,13 +894,14 @@ framenum_compare(gconstpointer a, gconstpointer b, gpointer user_data _U_)
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in editcap.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
+ fprintf(stderr, "editcap: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -1011,8 +1012,12 @@ main(int argc, char *argv[])
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most (non-wiretap)
+ plugins *should* fail to load (because we're not linked against
+ libwireshark and dissector plugins need libwireshark). */
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/mergecap.c b/mergecap.c
index c6c97619ef..089ef0254d 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -129,14 +129,14 @@ string_elem_print(gpointer data, gpointer not_used _U_)
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in mergecap.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
- return;
+ fprintf(stderr, "mergecap: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -310,8 +310,12 @@ main(int argc, char *argv[])
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most (non-wiretap)
+ plugins *should* fail to load (because we're not linked against
+ libwireshark and dissector plugins need libwireshark).*/
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/randpkt.c b/randpkt.c
index f604e77812..4346afb52c 100644
--- a/randpkt.c
+++ b/randpkt.c
@@ -49,14 +49,14 @@
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in randpkt.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
- return;
+ fprintf(stderr, "randpkt: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -141,8 +141,13 @@ main(int argc, char **argv)
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most
+ (non-wiretap) plugins *should* fail to load (because
+ we're not linked against libwireshark and dissector
+ plugins need libwireshark). */
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/reordercap.c b/reordercap.c
index 206a4888c8..e01f43c5fd 100644
--- a/reordercap.c
+++ b/reordercap.c
@@ -148,14 +148,14 @@ frames_compare(gconstpointer a, gconstpointer b)
#ifdef HAVE_PLUGINS
/*
- * Don't report failures to load plugins because most (non-wiretap) plugins
- * *should* fail to load (because we're not linked against libwireshark and
- * dissector plugins need libwireshark).
+ * General errors are reported with an console message in reordercap.
*/
static void
-failure_message(const char *msg_format _U_, va_list ap _U_)
+failure_message(const char *msg_format, va_list ap)
{
- return;
+ fprintf(stderr, "reordercap: ");
+ vfprintf(stderr, msg_format, ap);
+ fprintf(stderr, "\n");
}
#endif
@@ -231,8 +231,12 @@ main(int argc, char *argv[])
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;
- that's done later. */
- scan_plugins();
+ that's done later.
+
+ Don't report failures to load plugins because most (non-wiretap)
+ plugins *should* fail to load (because we're not linked against
+ libwireshark and dissector plugins need libwireshark). */
+ scan_plugins(DONT_REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/tfshark.c b/tfshark.c
index 4bea91c727..49cb26ab06 100644
--- a/tfshark.c
+++ b/tfshark.c
@@ -509,7 +509,7 @@ main(int argc, char *argv[])
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */
- scan_plugins();
+ scan_plugins(REPORT_LOAD_FAILURE);
#endif
diff --git a/tshark.c b/tshark.c
index 7a8c2d4d63..bb61320a0d 100644
--- a/tshark.c
+++ b/tshark.c
@@ -791,7 +791,7 @@ main(int argc, char *argv[])
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */
- scan_plugins();
+ scan_plugins(REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index 01de65a40c..5c17338400 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -2292,7 +2292,7 @@ main(int argc, char *argv[])
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */
- scan_plugins();
+ scan_plugins(REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/wireshark-qt.cpp b/wireshark-qt.cpp
index 22ceaa9d64..8a1564af71 100644
--- a/wireshark-qt.cpp
+++ b/wireshark-qt.cpp
@@ -542,7 +542,7 @@ int main(int argc, char *argv[])
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */
- scan_plugins();
+ scan_plugins(REPORT_LOAD_FAILURE);
/* Register all libwiretap plugin modules. */
register_all_wiretap_modules();
diff --git a/wsutil/plugins.c b/wsutil/plugins.c
index 8a390948f5..f2da1f57d2 100644
--- a/wsutil/plugins.c
+++ b/wsutil/plugins.c
@@ -143,7 +143,7 @@ call_plugin_callback(gpointer data, gpointer user_data)
}
static void
-plugins_scan_dir(const char *dirname)
+plugins_scan_dir(const char *dirname, plugin_load_failure_mode mode)
{
#define FILENAME_LEN 1024
WS_DIR *dir; /* scanned directory */
@@ -175,8 +175,21 @@ plugins_scan_dir(const char *dirname)
dirname, name);
if ((handle = g_module_open(filename, G_MODULE_BIND_LOCAL)) == NULL)
{
- report_failure("Couldn't load module %s: %s", filename,
- g_module_error());
+ /*
+ * Only report load failures if we were asked to.
+ *
+ * XXX - we really should put different types of plugins
+ * (libwiretap, libwireshark) in different subdirectories,
+ * give libwiretap and libwireshark init routines that
+ * load the plugins, and have them scan the appropriate
+ * subdirectories so tha we don't even *try* to, for
+ * example, load libwireshark plugins in programs that
+ * only use libwiretap.
+ */
+ if (mode == REPORT_LOAD_FAILURE) {
+ report_failure("Couldn't load module %s: %s", filename,
+ g_module_error());
+ }
continue;
}
@@ -241,7 +254,7 @@ plugins_scan_dir(const char *dirname)
* Scan for plugins.
*/
void
-scan_plugins(void)
+scan_plugins(plugin_load_failure_mode mode)
{
const char *plugin_dir;
const char *name;
@@ -264,7 +277,7 @@ scan_plugins(void)
{
if ((dir = ws_dir_open(plugin_dir, 0, NULL)) != NULL)
{
- plugins_scan_dir(plugin_dir);
+ plugins_scan_dir(plugin_dir, mode);
while ((file = ws_dir_read_name(dir)) != NULL)
{
name = ws_dir_get_name(file);
@@ -290,14 +303,14 @@ scan_plugins(void)
plugin_dir_path = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s",
plugin_dir, name);
}
- plugins_scan_dir(plugin_dir_path);
+ plugins_scan_dir(plugin_dir_path, mode);
g_free(plugin_dir_path);
}
ws_dir_close(dir);
}
}
else
- plugins_scan_dir(plugin_dir);
+ plugins_scan_dir(plugin_dir, mode);
/*
* If the program wasn't started with special privileges,
@@ -310,7 +323,7 @@ scan_plugins(void)
if (!started_with_special_privs())
{
plugins_pers_dir = get_plugins_pers_dir();
- plugins_scan_dir(plugins_pers_dir);
+ plugins_scan_dir(plugins_pers_dir, mode);
g_free(plugins_pers_dir);
}
}
diff --git a/wsutil/plugins.h b/wsutil/plugins.h
index 1d5f0b6fd9..677c6d3f0b 100644
--- a/wsutil/plugins.h
+++ b/wsutil/plugins.h
@@ -34,7 +34,11 @@ extern "C" {
typedef gboolean (*plugin_callback)(GModule *handle);
-WS_DLL_PUBLIC void scan_plugins(void);
+typedef enum {
+ REPORT_LOAD_FAILURE,
+ DONT_REPORT_LOAD_FAILURE
+} plugin_load_failure_mode;
+WS_DLL_PUBLIC void scan_plugins(plugin_load_failure_mode mode);
WS_DLL_PUBLIC void add_plugin_type(const char *type, plugin_callback callback);
typedef void (*plugin_description_callback)(const char *, const char *,
const char *, const char *,