summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editcap.c2
-rw-r--r--mergecap.c4
-rw-r--r--wsutil/strnatcmp.c19
-rw-r--r--wsutil/strnatcmp.h4
4 files changed, 18 insertions, 11 deletions
diff --git a/editcap.c b/editcap.c
index 96e91fea26..31a76f981e 100644
--- a/editcap.c
+++ b/editcap.c
@@ -800,7 +800,7 @@ string_compare(gconstpointer a, gconstpointer b)
static gint
string_nat_compare(gconstpointer a, gconstpointer b)
{
- return strnatcmp(((const struct string_elem *)a)->sstr,
+ return ws_ascii_strnatcmp(((const struct string_elem *)a)->sstr,
((const struct string_elem *)b)->sstr);
}
diff --git a/mergecap.c b/mergecap.c
index 94c8661252..31d7c5efda 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -149,8 +149,8 @@ string_compare(gconstpointer a, gconstpointer b)
static gint
string_nat_compare(gconstpointer a, gconstpointer b)
{
- return strnatcmp(((const struct string_elem *)a)->sstr,
- ((const struct string_elem *)b)->sstr);
+ return ws_ascii_strnatcmp(((const struct string_elem *)a)->sstr,
+ ((const struct string_elem *)b)->sstr);
}
static void
diff --git a/wsutil/strnatcmp.c b/wsutil/strnatcmp.c
index 7db1c8cadd..8c8347378c 100644
--- a/wsutil/strnatcmp.c
+++ b/wsutil/strnatcmp.c
@@ -32,10 +32,17 @@
* negative chars in their default char type.
*/
-#include <ctype.h>
+/*
+ * Modified 2014-10-29 to use the g_ascii_XXX() routines; this avoids
+ * locale-dependent behavior. The routine names were changed to
+ * ws_ascii_XXX() to reflect this.
+ */
+
#include <string.h>
#include <stdio.h>
+#include <glib.h>
+
#include "strnatcmp.h"
@@ -44,21 +51,21 @@
static int
nat_isdigit(nat_char a)
{
- return isdigit((unsigned char) a);
+ return g_ascii_isdigit(a);
}
static int
nat_isspace(nat_char a)
{
- return isspace((unsigned char) a);
+ return g_ascii_isspace(a);
}
static nat_char
nat_toupper(nat_char a)
{
- return toupper((unsigned char) a);
+ return g_ascii_toupper(a);
}
@@ -172,14 +179,14 @@ static int strnatcmp0(nat_char const *a, nat_char const *b, int fold_case)
}
-int strnatcmp(nat_char const *a, nat_char const *b)
+int ws_ascii_strnatcmp(nat_char const *a, nat_char const *b)
{
return strnatcmp0(a, b, 0);
}
/* Compare, recognizing numeric string and ignoring case. */
-int strnatcasecmp(nat_char const *a, nat_char const *b)
+int ws_ascii_strnatcasecmp(nat_char const *a, nat_char const *b)
{
return strnatcmp0(a, b, 1);
}
diff --git a/wsutil/strnatcmp.h b/wsutil/strnatcmp.h
index 31249cd666..cd175c0347 100644
--- a/wsutil/strnatcmp.h
+++ b/wsutil/strnatcmp.h
@@ -37,8 +37,8 @@ extern "C" {
* functions in strnatcmp.c */
typedef char nat_char;
-WS_DLL_PUBLIC int strnatcmp(nat_char const *a, nat_char const *b);
-WS_DLL_PUBLIC int strnatcasecmp(nat_char const *a, nat_char const *b);
+WS_DLL_PUBLIC int ws_ascii_strnatcmp(nat_char const *a, nat_char const *b);
+WS_DLL_PUBLIC int ws_ascii_strnatcasecmp(nat_char const *a, nat_char const *b);
#ifdef __cplusplus
}