mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
(svn r21133) -Add: function to check the validity of a string (without modifying it)
This commit is contained in:
parent
8cd48767f9
commit
17b514ccd1
@ -162,6 +162,29 @@ void str_validate(char *str, const char *last, bool allow_newlines, bool ignore)
|
|||||||
*dst = '\0';
|
*dst = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool StrValid(const char *str, const char *last)
|
||||||
|
{
|
||||||
|
/* Assume the ABSOLUTE WORST to be in str as it comes from the outside. */
|
||||||
|
|
||||||
|
while (str <= last && *str != '\0') {
|
||||||
|
size_t len = Utf8EncodedCharLen(*str);
|
||||||
|
/* Encoded length is 0 if the character isn't known.
|
||||||
|
* The length check is needed to prevent Utf8Decode to read
|
||||||
|
* over the terminating '\0' if that happens to be placed
|
||||||
|
* within the encoding of an UTF8 character. */
|
||||||
|
if (len == 0 || str + len > last) return false;
|
||||||
|
|
||||||
|
WChar c;
|
||||||
|
len = Utf8Decode(&c, str);
|
||||||
|
if (!IsPrintable(c) || (c >= SCC_SPRITE_START && c <= SCC_SPRITE_END)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
str += len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *str == '\0';
|
||||||
|
}
|
||||||
|
|
||||||
void str_strip_colours(char *str)
|
void str_strip_colours(char *str)
|
||||||
{
|
{
|
||||||
|
@ -117,6 +117,15 @@ void str_strip_colours(char *str);
|
|||||||
/** Convert the given string to lowercase, only works with ASCII! */
|
/** Convert the given string to lowercase, only works with ASCII! */
|
||||||
void strtolower(char *str);
|
void strtolower(char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given string is valid, i.e. contains only
|
||||||
|
* valid (printable) characters and is properly terminated.
|
||||||
|
* @param str The string to validate.
|
||||||
|
* @param last The last character of the string, i.e. the string
|
||||||
|
* must be terminated here or earlier.
|
||||||
|
*/
|
||||||
|
bool StrValid(const char *str, const char *last);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a string buffer is empty.
|
* Check if a string buffer is empty.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user