diff options
author | Tor Andersson <tor@ghostscript.com> | 2005-03-30 10:45:21 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2005-03-30 10:45:21 +0200 |
commit | 5f4d61903ee8fc514ed7e23eac4d5ac6409ff760 (patch) | |
tree | a824aa883d9d5df072c17ec0a2ac4a2b5074c2c0 /fitz/util_strlcpy.c | |
parent | ee154f16bd09a43359967f7e7b86c3677c09461d (diff) | |
download | mupdf-5f4d61903ee8fc514ed7e23eac4d5ac6409ff760.tar.xz |
rename and shuffle -- part 2
Diffstat (limited to 'fitz/util_strlcpy.c')
-rw-r--r-- | fitz/util_strlcpy.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/fitz/util_strlcpy.c b/fitz/util_strlcpy.c new file mode 100644 index 00000000..73416ae1 --- /dev/null +++ b/fitz/util_strlcpy.c @@ -0,0 +1,32 @@ +/* Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ + +#include <string.h> + +int strlcpy(char *dst, const char *src, int siz) +{ + register char *d = dst; + register const char *s = src; + register int n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0 && --n != 0) { + do { + if ((*d++ = *s++) == 0) + break; + } while (--n != 0); + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return(s - src - 1); /* count does not include NUL */ +} + |