aboutsummaryrefslogtreecommitdiffstats
path: root/src/string_utils.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-11-13 11:47:36 +0100
committerDavid Robillard <d@drobilla.net>2020-11-13 12:53:18 +0100
commit353b92d13d3ab6276998239c827287151e16bc8d (patch)
treea655eb89d8ccc1d90fe393c09c26b67a2dcc54f5 /src/string_utils.h
parent3558d21c9239c3eb43a2229e1fbfd45dbd2a56ef (diff)
downloadserd-353b92d13d3ab6276998239c827287151e16bc8d.tar.gz
serd-353b92d13d3ab6276998239c827287151e16bc8d.tar.bz2
serd-353b92d13d3ab6276998239c827287151e16bc8d.zip
Remove use of C character class functions that may use locale
Some of these cause warnings, and should never have been used in the first place since they depend on locale.
Diffstat (limited to 'src/string_utils.h')
-rw-r--r--src/string_utils.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/string_utils.h b/src/string_utils.h
index b80bf5aa..b4c2702e 100644
--- a/src/string_utils.h
+++ b/src/string_utils.h
@@ -20,7 +20,6 @@
#include "serd/serd.h"
#include <assert.h>
-#include <ctype.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
@@ -75,6 +74,12 @@ is_space(const char c)
}
static inline bool
+is_print(const int c)
+{
+ return c >= 0x20 && c <= 0x7E;
+}
+
+static inline bool
is_base64(const uint8_t c)
{
return is_alpha(c) || is_digit(c) || c == '+' || c == '/' || c == '=';
@@ -93,11 +98,17 @@ serd_substrlen(const uint8_t* str,
size_t* n_bytes,
SerdNodeFlags* flags);
+static inline char
+serd_to_upper(const char c)
+{
+ return (char)((c >= 'a' && c <= 'z') ? c - 32 : c);
+}
+
static inline int
serd_strncasecmp(const char* s1, const char* s2, size_t n)
{
for (; n > 0 && *s2; s1++, s2++, --n) {
- if (toupper(*s1) != toupper(*s2)) {
+ if (serd_to_upper(*s1) != serd_to_upper(*s2)) {
return ((*(const uint8_t*)s1 < *(const uint8_t*)s2) ? -1 : +1);
}
}