summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/basic/utf8.c23
-rw-r--r--src/basic/utf8.h7
2 files changed, 10 insertions, 20 deletions
diff --git a/src/basic/utf8.c b/src/basic/utf8.c
index fd1e96c68c..4d1b31f26d 100644
--- a/src/basic/utf8.c
+++ b/src/basic/utf8.c
@@ -271,27 +271,14 @@ char *utf8_escape_non_printable_full(const char *str, size_t console_width, bool
return str_realloc(p);
}
-char *ascii_is_valid(const char *str) {
- /* Check whether the string consists of valid ASCII bytes,
- * i.e values between 0 and 127, inclusive. */
+char* ascii_is_valid_n(const char *str, size_t len) {
+ /* Check whether the string consists of valid ASCII bytes, i.e values between 1 and 127, inclusive.
+ * Stops at len, or NUL byte if len is SIZE_MAX. */
assert(str);
- for (const char *p = str; *p; p++)
- if ((unsigned char) *p >= 128)
- return NULL;
-
- return (char*) str;
-}
-
-char *ascii_is_valid_n(const char *str, size_t len) {
- /* Very similar to ascii_is_valid(), but checks exactly len
- * bytes and rejects any NULs in that range. */
-
- assert(str);
-
- for (size_t i = 0; i < len; i++)
- if ((unsigned char) str[i] >= 128 || str[i] == 0)
+ for (size_t i = 0; len != SIZE_MAX ? i < len : str[i] != '\0'; i++)
+ if ((unsigned char) str[i] >= 128 || str[i] == '\0')
return NULL;
return (char*) str;
diff --git a/src/basic/utf8.h b/src/basic/utf8.h
index fbd3318987..301c50cc2f 100644
--- a/src/basic/utf8.h
+++ b/src/basic/utf8.h
@@ -18,8 +18,11 @@ char* utf8_is_valid_n(const char *str, size_t len_bytes) _pure_;
static inline char* utf8_is_valid(const char *str) {
return utf8_is_valid_n(str, SIZE_MAX);
}
-char *ascii_is_valid(const char *s) _pure_;
-char *ascii_is_valid_n(const char *str, size_t len);
+
+char* ascii_is_valid_n(const char *str, size_t len) _pure_;
+static inline char* ascii_is_valid(const char *str) {
+ return ascii_is_valid_n(str, SIZE_MAX);
+}
int utf8_to_ascii(const char *str, char replacement_char, char **ret);