diff options
author | Ted Unangst <tedu@cvs.openbsd.org> | 2003-09-06 22:43:13 +0000 |
---|---|---|
committer | Ted Unangst <tedu@cvs.openbsd.org> | 2003-09-06 22:43:13 +0000 |
commit | 4312a1f65a485f01bf800b41063ef71867aa29f4 (patch) | |
tree | 6ec6baed33f53db9d52024a68fe40a8d9f96ca04 /lib/libc/string/strxfrm.c | |
parent | a6739e98980ee6d4f011cf4bb0637e5d1eb78866 (diff) |
standards compliant strxfrm. much simpler too. fixes sorting in glib2.
ok deraadt@ espie@ marcm@
Diffstat (limited to 'lib/libc/string/strxfrm.c')
-rw-r--r-- | lib/libc/string/strxfrm.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/lib/libc/string/strxfrm.c b/lib/libc/string/strxfrm.c index b7c8d4822d8..a2e2dbc4405 100644 --- a/lib/libc/string/strxfrm.c +++ b/lib/libc/string/strxfrm.c @@ -31,7 +31,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: strxfrm.c,v 1.4 2003/06/11 21:08:16 deraadt Exp $"; +static char *rcsid = "$OpenBSD: strxfrm.c,v 1.5 2003/09/06 22:43:12 tedu Exp $"; #endif /* LIBC_SCCS and not lint */ #include <string.h> @@ -44,23 +44,11 @@ static char *rcsid = "$OpenBSD: strxfrm.c,v 1.4 2003/06/11 21:08:16 deraadt Exp size_t strxfrm(char *dst, const char *src, size_t n) { - size_t r = 0; - int c; /* * Since locales are unimplemented, this is just a copy. */ - if (n != 0) { - while ((c = *src++) != 0) { - r++; - if (--n == 0) { - while (*src++ != 0) - r++; - break; - } - *dst++ = c; - } - *dst = 0; - } - return (r); + if (n == 0) + return (strlen(src)); + return (strlcpy(dst, src, n)); } |