diff options
author | Andres Freund <andres@anarazel.de> | 2017-10-09 15:20:42 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2017-10-09 15:20:42 -0700 |
commit | 8a241792f968ed5be6cf4d41e32c0d264f6c0c65 (patch) | |
tree | 80391a1d37c432548e50d07a58a484278c202f74 /src/common/string.c | |
parent | 71c75ddfbb277362bf62dc5b1645c3903e16bc34 (diff) | |
download | postgresql-8a241792f968ed5be6cf4d41e32c0d264f6c0c65.tar.gz postgresql-8a241792f968ed5be6cf4d41e32c0d264f6c0c65.zip |
Add pg_strnlen() a portable implementation of strlen.
As the OS version is likely going to be more optimized, fall back to
it if available, as detected by configure.
Diffstat (limited to 'src/common/string.c')
-rw-r--r-- | src/common/string.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/common/string.c b/src/common/string.c index 159d9ea7b62..901821f3d87 100644 --- a/src/common/string.c +++ b/src/common/string.c @@ -41,3 +41,23 @@ pg_str_endswith(const char *str, const char *end) str += slen - elen; return strcmp(str, end) == 0; } + + +/* + * Portable version of posix' strnlen. + * + * Returns the number of characters before a null-byte in the string pointed + * to by str, unless there's no null-byte before maxlen. In the latter case + * maxlen is returned. + */ +#ifndef HAVE_STRNLEN +size_t +pg_strnlen(const char *str, size_t maxlen) +{ + const char *p = str; + + while (maxlen-- > 0 && *p) + p++; + return p - str; +} +#endif |