diff options
author | Jim Young <jyoung@gsu.edu> | 2016-12-02 00:56:22 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-12-03 12:47:05 +0000 |
commit | 50489fd279637e24b742a1ceaec0282974d07a18 (patch) | |
tree | 815115ef8f0f52aec614eef81cef434755a916da | |
parent | db7c6286169015a727024e86eb270722127125bb (diff) |
tshark: Add -G folders report
Add a new tshark feature to generate a folders report. The folders report
is essentially the information presented by Wireshark's About / Folders page
in a TAB delimited format.
Change-Id: Ic4b3d332b4bdaa7e6b7aad1e9cc5dd18413aada6
Reviewed-on: https://code.wireshark.org/review/19002
Petri-Dish: Jim Young <jim.young.ws@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | doc/tshark.pod | 7 | ||||
-rw-r--r-- | tshark.c | 98 |
2 files changed, 105 insertions, 0 deletions
diff --git a/doc/tshark.pod b/doc/tshark.pod index baa78e8cea..4138d9b1f5 100644 --- a/doc/tshark.pod +++ b/doc/tshark.pod @@ -422,6 +422,13 @@ The fields are tab-delimited. * Field 7 = bitmask: format: hex: 0x.... * Field 8 = blurb describing field +B<folders> Dumps various folders used by tshark. This is essentially the +same data reported in Wireshark's About | Folders tab. +There is one record per line. The fields are tab-delimited. + + * Field 1 = Folder type (e.g "Personal configuration:") + * Field 2 = Folder location (e.g. "/home/vagrant/.config/wireshark/") + B<ftypes> Dumps the "ftypes" (fundamental types) understood by tshark. There is one record per line. The fields are tab-delimited. @@ -88,6 +88,12 @@ #include "ui/cli/tap-exportobject.h" #include "ui/tap_export_pdu.h" #include "ui/dissect_opts.h" +#if defined(HAVE_LIBSMI) +#include "epan/oids.h" +#endif +#if defined(HAVE_GEOIP) +#include "epan/geoip_db.h" +#endif #include "register.h" #include "filter_files.h" #include <epan/epan_dissect.h> @@ -446,6 +452,7 @@ glossary_option_help(void) fprintf(output, "Preference reports:\n"); fprintf(output, " -G currentprefs dump current preferences and exit\n"); fprintf(output, " -G defaultprefs dump default preferences and exit\n"); + fprintf(output, " -G folders dump about:folders\n"); fprintf(output, "\n"); } @@ -529,6 +536,95 @@ get_tshark_runtime_version_info(GString *str) epan_get_runtime_version_info(str); } +static void +about_folders(void) +{ + const char *constpath; + char *path; +#if defined(HAVE_LIBSMI) || defined(HAVE_GEOIP) || defined(HAVE_EXTCAP) + gint i; + gchar **resultArray; +#endif + + /* "file open" */ + + /* + * Fetching the "File" dialogs folder not implemented. + * This is arguably just a pwd for a ui/cli . + */ + + /* temp */ + printf("%-21s\t%s\n", "Temp:", g_get_tmp_dir()); + + /* pers conf */ + path = get_persconffile_path("", FALSE); + printf("%-21s\t%s\n", "Personal configuration:", path); + g_free(path); + + /* global conf */ + constpath = get_datafile_dir(); + if (constpath != NULL) { + printf("%-21s\t%s\n", "Global configuration:", constpath); + } + + /* system */ + constpath = get_systemfile_dir(); + printf("%-21s\t%s\n", "System:", constpath); + + /* program */ + constpath = get_progfile_dir(); + printf("%-21s\t%s\n", "Program:", constpath); + +#if defined(HAVE_PLUGINS) || defined(HAVE_LUA) + /* pers plugins */ + path = get_plugins_pers_dir(); + + printf("%-21s\t%s\n", "Personal Plugins:", path); + + g_free(path); + + /* global plugins */ + printf("%-21s\t%s\n", "Global Plugins:", get_plugin_dir()); +#endif + +#ifdef HAVE_GEOIP + /* GeoIP */ + path = geoip_db_get_paths(); + + resultArray = g_strsplit(path, G_SEARCHPATH_SEPARATOR_S, 10); + + for(i = 0; resultArray[i]; i++) + printf("%-21s\t%s\n", "GeoIP path:", g_strstrip(resultArray[i])); + + g_strfreev(resultArray); + g_free(path); +#endif + +#ifdef HAVE_LIBSMI + /* SMI MIBs/PIBs */ + path = oid_get_default_mib_path(); + resultArray = g_strsplit(path, G_SEARCHPATH_SEPARATOR_S, 10); + + for(i = 0; resultArray[i]; i++) + printf("%-21s\t%s\n", "MIB/PIB path:", g_strstrip(resultArray[i])); + + g_strfreev(resultArray); + 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 main(int argc, char *argv[]) { @@ -854,6 +950,8 @@ main(int argc, char *argv[]) return proto_registrar_dump_fieldcount(); } else if (strcmp(argv[2], "fields") == 0) proto_registrar_dump_fields(); + else if (strcmp(argv[2], "folders") == 0) + about_folders(); else if (strcmp(argv[2], "ftypes") == 0) proto_registrar_dump_ftypes(); else if (strcmp(argv[2], "heuristic-decodes") == 0) |