summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2003-09-06 22:43:13 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2003-09-06 22:43:13 +0000
commit4312a1f65a485f01bf800b41063ef71867aa29f4 (patch)
tree6ec6baed33f53db9d52024a68fe40a8d9f96ca04 /lib
parenta6739e98980ee6d4f011cf4bb0637e5d1eb78866 (diff)
standards compliant strxfrm. much simpler too. fixes sorting in glib2.
ok deraadt@ espie@ marcm@
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/string/strxfrm.c20
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));
}