diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2018-06-21 17:35:13 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2018-06-21 17:35:13 +0000 |
commit | e38b830780d47a9014e09015c4acdb1a3f6d3416 (patch) | |
tree | 7f5c9f409459e5ebf2895d5bb7c31ea9718fe2d7 /sys/libkern | |
parent | e5c331cf78d21157a97d66162256f66697fa79f5 (diff) | |
download | src-e38b830780d47a9014e09015c4acdb1a3f6d3416.tar.gz src-e38b830780d47a9014e09015c4acdb1a3f6d3416.zip |
Sync strlcpy with userland version, again
No functional change.
Please remember to update libkern copies of libc functions when you update
libc.
Sponsored by: Dell EMC Isilon
Notes
Notes:
svn path=/head/; revision=335498
Diffstat (limited to 'sys/libkern')
-rw-r--r-- | sys/libkern/strlcpy.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/sys/libkern/strlcpy.c b/sys/libkern/strlcpy.c index 767077213670..477fae5ec00d 100644 --- a/sys/libkern/strlcpy.c +++ b/sys/libkern/strlcpy.c @@ -1,7 +1,7 @@ -/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ +/* $OpenBSD: strlcpy.c,v 1.12 2015/01/15 03:54:12 millert Exp $ */ -/*- - * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> +/* + * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -23,32 +23,31 @@ __FBSDID("$FreeBSD$"); #include <sys/libkern.h> /* - * 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. + * Copy string src to buffer dst of size dsize. At most dsize-1 + * chars will be copied. Always NUL terminates (unless dsize == 0). + * Returns strlen(src); if retval >= dsize, truncation occurred. */ size_t -strlcpy(char * __restrict dst, const char * __restrict src, size_t siz) +strlcpy(char * __restrict dst, const char * __restrict src, size_t dsize) { - char *d = dst; - const char *s = src; - size_t n = siz; + const char *osrc = src; + size_t nleft = dsize; - /* Copy as many bytes as will fit */ - if (n != 0) { - while (--n != 0) { - if ((*d++ = *s++) == '\0') + /* Copy as many bytes as will fit. */ + if (nleft != 0) { + while (--nleft != 0) { + if ((*dst++ = *src++) == '\0') break; } } - /* 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++) + /* Not enough room in dst, add NUL and traverse rest of src. */ + if (nleft == 0) { + if (dsize != 0) + *dst = '\0'; /* NUL-terminate dst */ + while (*src++) ; } - return(s - src - 1); /* count does not include NUL */ + return(src - osrc - 1); /* count does not include NUL */ } |