Have a routine to do all the work of initializing libwiretap.

Have programs that use libwiretap call that routine rather than
separately calling some or all of init_open_routines(),
wtap_register_plugin_types(), and wtap_opttypes_initialize().

Also don't have routines internal to libwiretap call those.  Yes, this
means doing some initialization work when it isn't necessary, but
scattering on-demand calls throughout the code is a great way to forget
to make those calls.

Change-Id: I5828e1c5591c9d94fbb3eb0a0e54591e8fc61710
Reviewed-on: https://code.wireshark.org/review/19069
Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
Guy Harris 2016-12-04 13:42:07 -08:00
parent 51d23c6959
commit ab07f8e0f8
15 changed files with 37 additions and 49 deletions

View File

@ -1458,16 +1458,14 @@ main(int argc, char *argv[])
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
if ((init_progfile_dir_error = init_progfile_dir(argv[0], main))) {
g_warning("capinfos: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message, NULL, NULL, NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -130,16 +130,14 @@ main(int argc, char *argv[])
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
if ((init_progfile_dir_error = init_progfile_dir(argv[0], main))) {
g_warning("captype: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -1013,7 +1013,8 @@ main(int argc, char *argv[])
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register wiretap plugins */
@ -1021,9 +1022,6 @@ main(int argc, char *argv[])
g_warning("editcap: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -296,9 +296,8 @@ static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
#else
int err = 0;
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
wtap_register_plugin_types();
register_all_wiretap_modules();
#endif

View File

@ -297,7 +297,8 @@ main(int argc, char *argv[])
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register wiretap plugins */
@ -305,9 +306,6 @@ main(int argc, char *argv[])
g_warning("mergecap: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -132,7 +132,8 @@ main(int argc, char **argv)
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
cmdarg_err_init(failure_message, failure_message_cont);
@ -147,9 +148,6 @@ main(int argc, char **argv)
g_warning("randpkt: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -704,7 +704,7 @@ void randpkt_example_init(randpkt_example* example, char* produce_filename, int
pkt_rand = g_rand_new();
}
wtap_opttypes_initialize();
wtap_init();
if (strcmp(produce_filename, "-") == 0) {
/* Write to the standard output. */

View File

@ -219,7 +219,8 @@ main(int argc, char *argv[])
* Get credential information for later use.
*/
init_process_policies();
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register wiretap plugins */
@ -227,9 +228,6 @@ main(int argc, char *argv[])
g_warning("reordercap: init_progfile_dir(): %s", init_progfile_dir_error);
g_free(init_progfile_dir_error);
} else {
/* Register all the plugin types we have. */
wtap_register_plugin_types(); /* Types known to libwiretap */
init_report_err(failure_message,NULL,NULL,NULL);
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -499,7 +499,7 @@ main(int argc, char *argv[])
timestamp_set_precision(TS_PREC_AUTO);
timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register all the plugin types we have. */

View File

@ -876,12 +876,11 @@ main(int argc, char *argv[])
timestamp_set_precision(TS_PREC_AUTO);
timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register all the plugin types we have. */
epan_register_plugin_types(); /* Types known to libwireshark */
wtap_register_plugin_types(); /* Types known to libwiretap */
/* Scan for plugins. This does *not* call their registration routines;
that's done later. */

View File

@ -2287,12 +2287,11 @@ main(int argc, char *argv[])
g_free(init_progfile_dir_error);
}
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register all the plugin types we have. */
epan_register_plugin_types(); /* Types known to libwireshark */
wtap_register_plugin_types(); /* Types known to libwiretap */
codec_register_plugin_types(); /* Types known to libwscodecs */
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -537,12 +537,11 @@ int main(int argc, char *qt_argv[])
init_report_err(vfailure_alert_box, open_failure_alert_box,
read_failure_alert_box, write_failure_alert_box);
init_open_routines();
wtap_init();
#ifdef HAVE_PLUGINS
/* Register all the plugin types we have. */
epan_register_plugin_types(); /* Types known to libwireshark */
wtap_register_plugin_types(); /* Types known to libwiretap */
codec_register_plugin_types(); /* Types known to libwscodecs */
/* Scan for plugins. This does *not* call their registration routines;

View File

@ -478,8 +478,6 @@ init_open_routines(void)
void
wtap_register_open_info(struct open_info *oi, const gboolean first_routine)
{
init_open_routines();
if (!oi || !oi->name) {
g_error("No open_info name given to register");
return;
@ -517,7 +515,6 @@ void
wtap_deregister_open_info(const gchar *name)
{
guint i;
init_open_routines();
if (!name) {
g_error("Missing open_info name to de-register");
@ -543,7 +540,6 @@ gboolean
wtap_has_open_info(const gchar *name)
{
guint i;
init_open_routines();
if (!name) {
g_error("No name given to wtap_has_open_info!");
@ -587,7 +583,6 @@ unsigned int
open_info_name_to_type(const char *name)
{
unsigned int i;
init_open_routines();
if (!name)
return WTAP_TYPE_AUTO;
@ -735,8 +730,6 @@ wtap_open_offline(const char *filename, unsigned int type, int *err, char **err_
*err = 0;
*err_info = NULL;
init_open_routines();
/* open standard input if filename is '-' */
if (strcmp(filename, "-") == 0)
use_stdin = TRUE;

View File

@ -77,12 +77,9 @@ DIAG_ON(pedantic)
return TRUE;
}
void
static void
wtap_register_plugin_types(void)
{
/* Piggyback the initialization here for now */
wtap_opttypes_initialize();
add_plugin_type("libwiretap", check_for_wtap_plugin);
}
@ -940,14 +937,12 @@ static void wtap_init_encap_types(void) {
}
int wtap_get_num_encap_types(void) {
wtap_init_encap_types();
return wtap_num_encap_types;
}
int wtap_register_encap_type(const char* name, const char* short_name) {
struct encap_type_info e;
wtap_init_encap_types();
e.name = g_strdup(name);
e.short_name = g_strdup(short_name);
@ -1419,6 +1414,20 @@ wtap_seek_read(wtap *wth, gint64 seek_off,
return TRUE;
}
/*
* Initialize the library.
*/
void
wtap_init(void)
{
init_open_routines();
wtap_opttypes_initialize();
wtap_init_encap_types();
#ifdef HAVE_PLUGINS
wtap_register_plugin_types();
#endif
}
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*

View File

@ -1509,6 +1509,10 @@ struct file_type_subtype_info {
#define WTAP_TYPE_AUTO 0
/** Initialize the Wiretap library. */
WS_DLL_PUBLIC
void wtap_init(void);
/** On failure, "wtap_open_offline()" returns NULL, and puts into the
* "int" pointed to by its second argument:
*
@ -1947,8 +1951,6 @@ GSList *wtap_get_file_extension_type_extensions(guint extension_type);
/*** dynamically register new file types and encapsulations ***/
WS_DLL_PUBLIC
void wtap_register_plugin_types(void);
WS_DLL_PUBLIC
void register_all_wiretap_modules(void);
WS_DLL_PUBLIC
void wtap_register_file_type_extension(const struct file_extension_info *ei);