basic/utf8: modernize ascii_is_valid_n, make ascii_is_valid static inline

This commit is contained in:
Mike Yuan
2024-06-16 19:07:35 +02:00
parent 7ff7161044
commit 4d06bf5922
2 changed files with 10 additions and 20 deletions
+5 -18
View File
@@ -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;