diff options
Diffstat (limited to 'src/system.h')
-rw-r--r-- | src/system.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/system.h b/src/system.h index 5e3b3cbde..6907603e6 100644 --- a/src/system.h +++ b/src/system.h @@ -626,6 +626,20 @@ The following directory is part of the cycle:\n %s\n"), \ } \ while (0) +/* Like stpncpy, but do ensure that the result is NUL-terminated, + and do not NUL-pad out to LEN. I.e., when strnlen (src, len) == len, + this function writes a NUL byte into dest[len]. Thus, the destination + buffer must be at least LEN+1 bytes long. */ +static inline char * +stzncpy (char *dest, char const *src, size_t len) +{ + char const *src_end = src + len; + while (src < src_end && *src) + *dest++ = *src++; + *dest = 0; + return dest; +} + #ifndef ARRAY_CARDINALITY # define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array)) #endif |