summaryrefslogtreecommitdiff
path: root/mergecap.c
diff options
context:
space:
mode:
authorChris Maynard <Christopher.Maynard@GTECH.COM>2011-12-22 21:52:16 +0000
committerChris Maynard <Christopher.Maynard@GTECH.COM>2011-12-22 21:52:16 +0000
commit618b231e1929c9cb067b55a27604fe34aeeb1583 (patch)
tree2d51d94f85eeb89cf0041df1a98d46d9a75bf871 /mergecap.c
parentfe290f10f623cf56cec7abab509957811b052e31 (diff)
downloadwireshark-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.c65
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