diff options
author | David Robillard <d@drobilla.net> | 2020-11-13 11:47:36 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-11-13 12:53:18 +0100 |
commit | 353b92d13d3ab6276998239c827287151e16bc8d (patch) | |
tree | a655eb89d8ccc1d90fe393c09c26b67a2dcc54f5 /src/string_utils.h | |
parent | 3558d21c9239c3eb43a2229e1fbfd45dbd2a56ef (diff) | |
download | serd-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.h | 15 |
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); } } |