diff options
author | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2011-12-22 21:52:16 +0000 |
---|---|---|
committer | Chris Maynard <Christopher.Maynard@GTECH.COM> | 2011-12-22 21:52:16 +0000 |
commit | 618b231e1929c9cb067b55a27604fe34aeeb1583 (patch) | |
tree | 2d51d94f85eeb89cf0041df1a98d46d9a75bf871 /mergecap.c | |
parent | fe290f10f623cf56cec7abab509957811b052e31 (diff) | |
download | wireshark-618b231e1929c9cb067b55a27604fe34aeeb1583.tar.gz |
Alphabetize the list of encapsulation types via "mergecap -T" as well as the list of capture file types via "mergecap -F".
svn path=/trunk/; revision=40282
Diffstat (limited to 'mergecap.c')
-rw-r--r-- | mergecap.c | 65 |
1 files changed, 51 insertions, 14 deletions
diff --git a/mergecap.c b/mergecap.c index 0061622b95..bb95f2aaf3 100644 --- a/mergecap.c +++ b/mergecap.c @@ -135,28 +135,65 @@ usage(void) fprintf(stderr, " -v verbose output.\n"); } -static void list_capture_types(void) { - int i; +struct string_elem { + const char *sstr; /* The short string */ + const char *lstr; /* The long string */ +}; + +static gint +string_compare(gconstpointer a, gconstpointer b) +{ + return strcmp(((const struct string_elem *)a)->sstr, + ((const struct string_elem *)b)->sstr); +} + +static void +string_elem_print(gpointer data, gpointer not_used _U_) +{ + fprintf(stderr, " %s - %s\n", + ((struct string_elem *)data)->sstr, + ((struct string_elem *)data)->lstr); +} - fprintf(stderr, "mergecap: The available capture file types for \"F\":\n"); - for (i = 0; i < WTAP_NUM_FILE_TYPES; i++) { - if (wtap_dump_can_open(i)) - fprintf(stderr, " %s - %s\n", - wtap_file_type_short_string(i), wtap_file_type_string(i)); +static void +list_capture_types(void) { + int i; + struct string_elem *captypes; + GSList *list = NULL; + + captypes = g_malloc(sizeof(struct string_elem) * WTAP_NUM_FILE_TYPES); + + fprintf(stderr, "mergecap: The available capture file types for the \"-F\" flag are:\n"); + for (i = 0; i < WTAP_NUM_FILE_TYPES; i++) { + if (wtap_dump_can_open(i)) { + captypes[i].sstr = wtap_file_type_short_string(i); + captypes[i].lstr = wtap_file_type_string(i); + list = g_slist_insert_sorted(list, &captypes[i], string_compare); } + } + g_slist_foreach(list, string_elem_print, NULL); + g_slist_free(list); + g_free(captypes); } -static void list_encap_types(void) { +static void +list_encap_types(void) { int i; - const char *string; + struct string_elem *encaps; + GSList *list = NULL; - fprintf(stderr, "mergecap: The available encapsulation types for \"T\":\n"); + encaps = g_malloc(sizeof(struct string_elem) * WTAP_NUM_ENCAP_TYPES); + fprintf(stderr, "mergecap: The available encapsulation types for the \"-T\" flag are:\n"); for (i = 0; i < WTAP_NUM_ENCAP_TYPES; i++) { - string = wtap_encap_short_string(i); - if (string != NULL) - fprintf(stderr, " %s - %s\n", - string, wtap_encap_string(i)); + encaps[i].sstr = wtap_encap_short_string(i); + if (encaps[i].sstr != NULL) { + encaps[i].lstr = wtap_encap_string(i); + list = g_slist_insert_sorted(list, &encaps[i], string_compare); + } } + g_slist_foreach(list, string_elem_print, NULL); + g_slist_free(list); + g_free(encaps); } int |