aboutsummaryrefslogtreecommitdiffstats
path: root/mergecap.c
diff options
context:
space:
mode:
authorChris Maynard <Christopher.Maynard@GTECH.COM>2013-07-10 16:18:37 +0000
committerChris Maynard <Christopher.Maynard@GTECH.COM>2013-07-10 16:18:37 +0000
commitd602662b36b7322573e83fe80c3ab820992073c9 (patch)
tree5fda0e507b0a842f2851f5a8ab4814f23dfa168e /mergecap.c
parentd3e9ec675a21f9a52871c271855de7575868b792 (diff)
Add strnatcmp by Martin Pool for 'natural order' string comparisons, and make use of it in editcap and mergecap for listing encapsulation types. For example:
Before: user0 - USER 0 user1 - USER 1 user10 - USER 10 user11 - USER 11 user12 - USER 12 user13 - USER 13 user14 - USER 14 user15 - USER 15 user2 - USER 2 user3 - USER 3 user4 - USER 4 user5 - USER 5 user6 - USER 6 user7 - USER 7 user8 - USER 8 user9 - USER 9 After: user0 - USER 0 user1 - USER 1 user2 - USER 2 user3 - USER 3 user4 - USER 4 user5 - USER 5 user6 - USER 6 user7 - USER 7 user8 - USER 8 user9 - USER 9 user10 - USER 10 user11 - USER 11 user12 - USER 12 user13 - USER 13 user14 - USER 14 user15 - USER 15 svn path=/trunk/; revision=50482
Diffstat (limited to 'mergecap.c')
-rw-r--r--mergecap.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/mergecap.c b/mergecap.c
index 433518824f..74b0c004aa 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -47,6 +47,12 @@
#include "wsutil/wsgetopt.h"
#endif
+#define WS_BUILD_DLL
+#define RESET_SYMBOL_EXPORT /* wsutil/wsgetopt.h set export behavior above. */
+#include "epan/strnatcmp.h"
+#undef WS_BUILD_DLL
+#define RESET_SYMBOL_EXPORT
+
#include "svnversion.h"
#include "merge.h"
#include "wsutil/file_util.h"
@@ -145,6 +151,13 @@ string_compare(gconstpointer a, gconstpointer b)
((const struct string_elem *)b)->sstr);
}
+static gint
+string_nat_compare(gconstpointer a, gconstpointer b)
+{
+ return strnatcmp(((const struct string_elem *)a)->sstr,
+ ((const struct string_elem *)b)->sstr);
+}
+
static void
string_elem_print(gpointer data, gpointer not_used _U_)
{
@@ -186,7 +199,7 @@ list_encap_types(void) {
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);
+ list = g_slist_insert_sorted(list, &encaps[i], string_nat_compare);
}
}
g_slist_foreach(list, string_elem_print, NULL);