diff options
author | João Valverde <joao.valverde@tecnico.ulisboa.pt> | 2017-09-18 16:25:20 +0100 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2017-09-20 16:41:21 +0000 |
commit | 25ba538bc50ff3a824185cca532f4e0feb4f8ec4 (patch) | |
tree | c2df4d54627a48815479f168900f195156e20f37 /wsutil | |
parent | f1501b82a7354de76a8d3833db2aa8fa8b9d62e0 (diff) |
plugins: Be more descriptive in "about wireshark"->"folders"
Display separate entries for binary plugins and lua scripts.
This is explained in the user guide, that the binary folder is
a subfolder of the lua folder, but it's probably a good idea to be more
explicit about it, at the risk of cluttering the interface a bit.
Move GeoIP information down because it seems the least important.
Add helper functions to provide plugin version subdir.
Change some #ifdefs while at it for legibility.
Change-Id: Ieb8665df029b3c14de19e2c973bd9b1cc4ec4621
Reviewed-on: https://code.wireshark.org/review/23609
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'wsutil')
-rw-r--r-- | wsutil/filesystem.c | 46 | ||||
-rw-r--r-- | wsutil/filesystem.h | 10 | ||||
-rw-r--r-- | wsutil/plugins.c | 10 |
3 files changed, 46 insertions, 20 deletions
diff --git a/wsutil/filesystem.c b/wsutil/filesystem.c index fd0964975a..ea4629091b 100644 --- a/wsutil/filesystem.c +++ b/wsutil/filesystem.c @@ -935,7 +935,6 @@ get_datafile_dir(void) return datafile_dir; } -#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) /* * Find the directory where the plugins are stored. * @@ -959,11 +958,14 @@ get_datafile_dir(void) * configure script. */ static char *plugin_dir = NULL; +static char *plugin_dir_with_version = NULL; static char *plugin_pers_dir = NULL; +static char *plugin_pers_dir_with_version = NULL; static void init_plugin_dir(void) { +#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) #ifdef _WIN32 /* * On Windows, the data file directory is the installation @@ -1032,45 +1034,61 @@ init_plugin_dir(void) } } #endif +#endif /* defined(HAVE_PLUGINS) || defined(HAVE_LUA) */ } static void init_plugin_pers_dir(void) { +#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) #ifdef _WIN32 plugin_pers_dir = get_persconffile_path(PLUGINS_DIR_NAME, FALSE); #else plugin_pers_dir = g_build_filename(g_get_home_dir(), ".local/lib/wireshark/" PLUGINS_DIR_NAME, (gchar *)NULL); #endif +#endif /* defined(HAVE_PLUGINS) || defined(HAVE_LUA) */ } -#endif /* HAVE_PLUGINS || HAVE_LUA */ - /* * Get the directory in which the plugins are stored. */ const char * get_plugins_dir(void) { -#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) - if (!plugin_dir) init_plugin_dir(); + if (!plugin_dir) + init_plugin_dir(); return plugin_dir; -#else - return NULL; -#endif +} + +const char * +get_plugins_dir_with_version(void) +{ + if (!plugin_dir) + init_plugin_dir(); + if (plugin_dir && !plugin_dir_with_version) + plugin_dir_with_version = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%d.%d", + plugin_dir, VERSION_MAJOR, VERSION_MINOR); + return plugin_dir_with_version; } /* Get the personal plugin dir */ const char * get_plugins_pers_dir(void) { -#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) if (!plugin_pers_dir) init_plugin_pers_dir(); return plugin_pers_dir; -#else - return NULL; -#endif +} + +const char * +get_plugins_pers_dir_with_version(void) +{ + if (!plugin_pers_dir) + init_plugin_pers_dir(); + if (plugin_pers_dir && !plugin_pers_dir_with_version) + plugin_pers_dir_with_version = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%d.%d", + plugin_pers_dir, VERSION_MAJOR, VERSION_MINOR); + return plugin_pers_dir_with_version; } #if defined(HAVE_EXTCAP) @@ -2244,8 +2262,12 @@ free_progdirs(void) #if defined(HAVE_PLUGINS) || defined(HAVE_LUA) g_free(plugin_dir); plugin_dir = NULL; + g_free(plugin_dir_with_version); + plugin_dir_with_version = NULL; g_free(plugin_pers_dir); plugin_pers_dir = NULL; + g_free(plugin_pers_dir_with_version); + plugin_pers_dir_with_version = NULL; #endif #ifdef HAVE_EXTCAP g_free(extcap_dir); diff --git a/wsutil/filesystem.h b/wsutil/filesystem.h index 9357a437ad..18f6f19913 100644 --- a/wsutil/filesystem.h +++ b/wsutil/filesystem.h @@ -56,11 +56,21 @@ WS_DLL_PUBLIC const char *get_progfile_dir(void); WS_DLL_PUBLIC const char *get_plugins_dir(void); /* + * Append VERSION_MAJOR.VERSION_MINOR to the plugin dir. + */ +WS_DLL_PUBLIC const char *get_plugins_dir_with_version(void); + +/* * Get the personal plugin dir. */ WS_DLL_PUBLIC const char *get_plugins_pers_dir(void); /* + * Append VERSION_MAJOR.VERSION_MINOR to the plugin personal dir. + */ +WS_DLL_PUBLIC const char *get_plugins_pers_dir_with_version(void); + +/* * Get the directory in which extcap hooks are stored; this must not be called * before init_progfile_dir() is called, as they might be stored in a * subdirectory of the program file directory. diff --git a/wsutil/plugins.c b/wsutil/plugins.c index 6febafbf07..479b8b7c23 100644 --- a/wsutil/plugins.c +++ b/wsutil/plugins.c @@ -341,10 +341,7 @@ scan_plugins(plugin_load_failure_mode mode) } else { - plugin_dir_path = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%d.%d", - get_plugins_dir(), VERSION_MAJOR, VERSION_MINOR); - plugins_scan_dir(plugin_dir_path, mode); - g_free(plugin_dir_path); + plugins_scan_dir(get_plugins_dir_with_version(), mode); } /* @@ -357,10 +354,7 @@ scan_plugins(plugin_load_failure_mode mode) */ if (!started_with_special_privs()) { - plugin_dir_path = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%d.%d", - get_plugins_pers_dir(), VERSION_MAJOR, VERSION_MINOR); - plugins_scan_dir(plugin_dir_path, mode); - g_free(plugin_dir_path); + plugins_scan_dir(get_plugins_pers_dir_with_version(), mode); } } } |