Make the "-G" flag take an argument. If no arugment is specified, or if

the argument is "fields", dump out a table of the fields, as we
currently do; if the argument is "protocols", dump out a table of the
protocols.

svn path=/trunk/; revision=5462
This commit is contained in:
Guy Harris 2002-05-14 10:15:12 +00:00
parent eb4f9a696c
commit e390d7e0cc
4 changed files with 69 additions and 23 deletions

View File

@ -1,7 +1,7 @@
/* proto.c
* Routines for protocol tree
*
* $Id: proto.c,v 1.68 2002/05/09 23:50:28 gram Exp $
* $Id: proto.c,v 1.69 2002/05/14 10:15:10 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -2946,12 +2946,34 @@ proto_find_field_from_offset(proto_tree *tree, guint offset, tvbuff_t *tvb)
return offsearch.finfo;
}
/* Dumps the protocols in the registration database to stdout. An independent
* program can take this output and format it into nice tables or HTML or
* whatever.
*
* There is one record per line. The fields are tab-delimited.
*
* Field 1 = protocol name
* Field 2 = protocol short name
* Field 3 = protocol filter name
*/
void
proto_registrar_dump_protocols(void)
{
protocol_t *protocol;
int i;
void *cookie;
for (i = proto_get_first_protocol(&cookie); i != -1;
i = proto_get_next_protocol(&cookie)) {
protocol = find_protocol_by_id(i);
printf("%s\t%s\t%s\n", protocol->name, protocol->short_name,
protocol->filter_name);
}
}
/* Dumps the contents of the registration database to stdout. An indepedent program can take
* this output and format it into nice tables or HTML or whatever.
/* Dumps the contents of the registration database to stdout. An indepedent
* program can take this output and format it into nice tables or HTML or
* whatever.
*
* There is one record per line. Each record is either a protocol or a header
* field, differentiated by the first field. The fields are tab-delimited.
@ -2971,7 +2993,7 @@ proto_find_field_from_offset(proto_tree *tree, guint offset, tvbuff_t *tvb)
* Field 5 = parent protocol abbreviation
*/
void
proto_registrar_dump(void)
proto_registrar_dump_fields(void)
{
header_field_info *hfinfo, *parent_hfinfo;
int i, len;

View File

@ -1,7 +1,7 @@
/* proto.h
* Definitions for protocol display
*
* $Id: proto.h,v 1.31 2002/04/29 07:55:31 guy Exp $
* $Id: proto.h,v 1.32 2002/05/14 10:15:10 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -554,8 +554,11 @@ extern gboolean proto_check_for_protocol_or_field(proto_tree* tree, int id);
* tree. */
extern GPtrArray* proto_get_finfo_ptr_array(proto_tree *tree, int hfindex);
/* Dumps a glossary of the protocol registrations to STDOUT */
extern void proto_registrar_dump_protocols(void);
/* Dumps a glossary of the protocol and field registrations to STDOUT */
extern void proto_registrar_dump(void);
extern void proto_registrar_dump_fields(void);
/* Points to the first element of an array of Booleans, indexed by
a subtree item type; that array element is TRUE if subtrees of

View File

@ -1,6 +1,6 @@
/* main.c
*
* $Id: main.c,v 1.247 2002/05/03 03:30:15 guy Exp $
* $Id: main.c,v 1.248 2002/05/14 10:15:12 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -1254,17 +1254,19 @@ main(int argc, char *argv[])
#endif
/* Register all dissectors; we must do this before checking for the
"-G" flag, as the "-G" flag dumps a list of fields registered
by the dissectors, and we must do it before we read the preferences,
in case any dissectors register preferences. */
"-G" flag, as the "-G" flag dumps information registered by the
dissectors, and we must do it before we read the preferences, in
case any dissectors register preferences. */
epan_init(PLUGIN_DIR,register_all_protocols,register_all_protocol_handoffs);
/* Now register the preferences for any non-dissector modules.
We must do that before we read the preferences as well. */
prefs_register_modules();
/* If invoked with the "-G" flag, we dump out a glossary of
display filter symbols.
/* If invoked with the "-G" flag, we dump out information based on
the argument to the "-G" flag; if no argument is specified,
for backwards compatibility we dump out a glossary of display
filter symbols.
We must do this before calling "gtk_init()", because "gtk_init()"
tries to open an X display, and we don't want to have to do any X
@ -1281,9 +1283,19 @@ main(int argc, char *argv[])
you must give it as "-G", nothing more, nothing less;
any arguments after the "-G" flag will not be used. */
the first argument after the "-G" flag, if present, will be used
to specify the information to dump;
arguments after that will not be used. */
if (argc >= 2 && strcmp(argv[1], "-G") == 0) {
proto_registrar_dump();
if (argc == 2)
proto_registrar_dump_fields();
else {
if (strcmp(argv[2], "fields") == 0)
proto_registrar_dump_fields();
else if (strcmp(argv[2], "protocols") == 0)
proto_registrar_dump_protocols();
}
exit(0);
}

View File

@ -1,6 +1,6 @@
/* tethereal.c
*
* $Id: tethereal.c,v 1.135 2002/03/31 20:56:59 guy Exp $
* $Id: tethereal.c,v 1.136 2002/05/14 10:15:09 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -321,22 +321,31 @@ main(int argc, char *argv[])
char badopt;
/* Register all dissectors; we must do this before checking for the
"-G" flag, as the "-G" flag dumps a list of fields registered
by the dissectors, and we must do it before we read the preferences,
in case any dissectors register preferences. */
"-G" flag, as the "-G" flag dumps information registered by the
dissectors, and we must do it before we read the preferences, in
case any dissectors register preferences. */
epan_init(PLUGIN_DIR,register_all_protocols,register_all_protocol_handoffs);
/* Now register the preferences for any non-dissector modules.
We must do that before we read the preferences as well. */
prefs_register_modules();
/* If invoked with the "-G" flag, we dump out a glossary of
display filter symbols.
/* If invoked with the "-G" flag, we dump out information based on
the argument to the "-G" flag; if no argument is specified,
for backwards compatibility we dump out a glossary of display
filter symbols.
We do this here to mirror what happens in the GTK+ version, although
it's not necessary here. */
if (argc >= 2 && strcmp(argv[1], "-G") == 0) {
proto_registrar_dump();
if (argc == 2)
proto_registrar_dump_fields();
else {
if (strcmp(argv[2], "fields") == 0)
proto_registrar_dump_fields();
else if (strcmp(argv[2], "protocols") == 0)
proto_registrar_dump_protocols();
}
exit(0);
}