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 +/* + * 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 #include +#include + #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 }