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>
This commit is contained in:
João Valverde 2017-09-18 16:25:20 +01:00 committed by João Valverde
parent f1501b82a7
commit 25ba538bc5
7 changed files with 121 additions and 67 deletions

View File

@ -74,7 +74,9 @@ libwsutil.so.0 libwsutil0 #MINVER#
get_persconffile_path@Base 1.12.0~rc1
get_persdatafile_dir@Base 1.12.0~rc1
get_plugins_dir@Base 2.5.0
get_plugins_dir_with_version@Base 2.5.0
get_plugins_pers_dir@Base 1.12.0~rc1
get_plugins_pers_dir_with_version@Base 2.5.0
get_positive_int@Base 1.99.0
get_profile_name@Base 1.12.0~rc1
get_profiles_dir@Base 1.12.0~rc1

View File

@ -611,12 +611,31 @@ about_folders(void)
constpath = get_progfile_dir();
printf("%-21s\t%s\n", "Program:", constpath);
#if defined(HAVE_PLUGINS) || defined(HAVE_LUA)
#ifdef HAVE_PLUGINS
/* pers plugins */
printf("%-21s\t%s\n", "Personal Plugins:", get_plugins_pers_dir());
printf("%-21s\t%s\n", "Personal Plugins:", get_plugins_pers_dir_with_version());
/* global plugins */
printf("%-21s\t%s\n", "Global Plugins:", get_plugins_dir());
printf("%-21s\t%s\n", "Global Plugins:", get_plugins_dir_with_version());
#endif
#ifdef HAVE_LUA
/* pers lua plugins */
printf("%-21s\t%s\n", "Personal Lua Plugins:", get_plugins_pers_dir());
/* global lua plugins */
printf("%-21s\t%s\n", "Global Lua Plugins:", get_plugins_dir());
#endif
#ifdef HAVE_EXTCAP
/* Extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++)
printf("%-21s\t%s\n", "Extcap path:", g_strstrip(resultArray[i]));
g_strfreev(resultArray);
#endif
#ifdef HAVE_GEOIP
@ -644,17 +663,6 @@ about_folders(void)
g_free(path);
#endif
#ifdef HAVE_EXTCAP
/* Extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++)
printf("%-21s\t%s\n", "Extcap path:", g_strstrip(resultArray[i]));
g_strfreev(resultArray);
#endif
}
int

View File

@ -458,14 +458,36 @@ about_folders_page_new(void)
about_folders_row(table, "Program", constpath,
"program files");
#if defined(HAVE_PLUGINS) || defined(HAVE_LUA)
#ifdef HAVE_PLUGINS
/* pers plugins */
about_folders_row(table, "Personal Plugins", get_plugins_pers_dir(),
"dissector plugins");
about_folders_row(table, "Personal Plugins", get_plugins_pers_dir_with_version(),
"binary plugins");
/* global plugins */
about_folders_row(table, "Global Plugins", get_plugins_dir(),
"dissector plugins");
about_folders_row(table, "Global Plugins", get_plugins_dir_with_version(),
"binary plugins");
#endif
#ifdef HAVE_LUA
/* pers plugins */
about_folders_row(table, "Personal Lua Plugins", get_plugins_pers_dir(),
"lua scripts");
/* global plugins */
about_folders_row(table, "Global Lua Plugins", get_plugins_dir(),
"lua scripts");
#endif
#ifdef HAVE_EXTCAP
/* extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++)
about_folders_row(table, "Extcap path", g_strstrip(resultArray[i]),
"Extcap Plugins search path");
g_strfreev(resultArray);
#endif
#ifdef HAVE_GEOIP
@ -494,18 +516,6 @@ about_folders_page_new(void)
g_free(path);
#endif
#ifdef HAVE_EXTCAP
/* extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++)
about_folders_row(table, "Extcap path", g_strstrip(resultArray[i]),
"Extcap Plugins search path");
g_strfreev(resultArray);
#endif
gtk_container_add(GTK_CONTAINER(scrolledwindow), table);
return scrolledwindow;

View File

@ -224,12 +224,33 @@ AboutDialog::AboutDialog(QWidget *parent) :
/* program */
message += about_folders_row("Program", get_progfile_dir(), "program files");
#if defined(HAVE_PLUGINS) || defined(HAVE_LUA)
#ifdef HAVE_PLUGINS
/* pers plugins */
message += about_folders_row("Personal Plugins", get_plugins_pers_dir(), "dissector plugins");
message += about_folders_row("Personal Plugins", get_plugins_pers_dir_with_version(), "binary plugins");
/* global plugins */
message += about_folders_row("Global Plugins", get_plugins_dir(), "dissector plugins");
message += about_folders_row("Global Plugins", get_plugins_dir_with_version(), "binary plugins");
#endif
#ifdef HAVE_LUA
/* pers plugins */
message += about_folders_row("Personal Lua Plugins", get_plugins_pers_dir(), "lua scripts");
/* global plugins */
message += about_folders_row("Global Lua Plugins", get_plugins_dir(), "lua scripts");
#endif
#ifdef HAVE_EXTCAP
/* Extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++) {
message += about_folders_row("Extcap path", g_strstrip(resultArray[i]),
"Extcap Plugins search path");
}
g_strfreev(resultArray);
#endif
#ifdef HAVE_GEOIP
@ -260,19 +281,6 @@ AboutDialog::AboutDialog(QWidget *parent) :
g_free(path);
#endif
#ifdef HAVE_EXTCAP
/* Extcap */
constpath = get_extcap_dir();
resultArray = g_strsplit(constpath, G_SEARCHPATH_SEPARATOR_S, 10);
for(i = 0; resultArray[i]; i++) {
message += about_folders_row("Extcap path", g_strstrip(resultArray[i]),
"Extcap Plugins search path");
}
g_strfreev(resultArray);
#endif
message += "</table>";
ui->label_folders->setText(message);

View File

@ -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);

View File

@ -55,11 +55,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

View File

@ -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);
}
}
}