diff options
author | Manuel Novoa III <mjn3@codepoet.org> | 2002-11-08 04:21:58 +0000 |
---|---|---|
committer | Manuel Novoa III <mjn3@codepoet.org> | 2002-11-08 04:21:58 +0000 |
commit | 5dcc4c2e25452b932e3c45bf25cfb89db461bba7 (patch) | |
tree | 513e3fb2e31564ac07dd4ffbd976893aa73d74f5 | |
parent | 4edebd1e22b835ff075719c228b099559c7e346d (diff) |
Added some temporary "stubs" for collation.
strcoll is an alias for strcmp.
strxfrm is an alias for strlcpy.
wcscoll is an alias for wcscmp.
wcsxfrm is implemented as a wchar version of strlcpy.
Real locale-dependent implementations are coming soon.
-rw-r--r-- | libc/string/Makefile | 9 | ||||
-rw-r--r-- | libc/string/strxfrm.c | 47 | ||||
-rw-r--r-- | libc/string/wstring.c | 32 |
3 files changed, 28 insertions, 60 deletions
diff --git a/libc/string/Makefile b/libc/string/Makefile index 7bd2ea3dd..088058ebe 100644 --- a/libc/string/Makefile +++ b/libc/string/Makefile @@ -38,13 +38,10 @@ MOBJW= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o memchr.o memcmp.o \ MOBJW2= wcscasecmp.o wcscat.o wcschrnul.o wcschr.o wcscmp.o wcscpy.o wcscspn.o \ wcsdup.o wcslen.o wcsncasecmp.o wcsncat.o wcsncmp.o wcsncpy.o \ wcsnlen.o wcspbrk.o wcsrchr.o wcsspn.o wcsstr.o wcstok.o wmemchr.o \ - wmemcmp.o wmemcpy.o wmemmove.o wmempcpy.o wmemset.o wcpcpy.o wcpncpy.o + wmemcmp.o wmemcpy.o wmemmove.o wmempcpy.o wmemset.o wcpcpy.o wcpncpy.o \ + wcsxfrm.o # wcscoll -# wcscoll wcsxfrm - -CSRC=strxfrm.c -COBJS=$(patsubst %.c,%.o, $(CSRC)) -OBJS=$(MOBJ) $(MOBJ1) $(MOBJ2) $(COBJS) $(MOBJW) +OBJS=$(MOBJ) $(MOBJ1) $(MOBJ2) $(MOBJW) ifeq ($(UCLIBC_HAS_WCHAR),y) OBJS += $(MOBJW2) diff --git a/libc/string/strxfrm.c b/libc/string/strxfrm.c deleted file mode 100644 index 5acb824c3..000000000 --- a/libc/string/strxfrm.c +++ /dev/null @@ -1,47 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* strxfrm for uClibc - * - * Copyright (C) 2002 by Erik Andersen <andersen@uclibc.org> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU Library General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License - * for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include <string.h> - -size_t strxfrm(char *dst, const char *src, size_t len) -{ - size_t length; - register char *ptr1, *ptr2; - - length = len; - ptr1 = (char *) dst; - ptr2 = (char *) src; - while (length--) { - if (*ptr2) - *ptr1++ = *ptr2++; - else - *ptr1++ = '\0'; - } - /* The first while loop should have done much of the heavy - * lifting for us. This second look will finish the job if - * that is necessary */ - while (*ptr2) - ptr2++; - length = (ptr2 - src); - - if (length<len) - return(length); - return(len); -} diff --git a/libc/string/wstring.c b/libc/string/wstring.c index ab6bd4169..531b1c9fd 100644 --- a/libc/string/wstring.c +++ b/libc/string/wstring.c @@ -627,12 +627,17 @@ int Wmemcmp(const Wvoid *s1, const Wvoid *s2, size_t n) #ifdef L_strcmp -#ifndef L_wcscmp +#ifdef L_wcscmp +#ifdef __UCLIBC_MJN3_ONLY__ +#warning implement wcscoll and remove weak alias (or enable for C locale only) +#endif +weak_alias(wcscmp,wcscoll); +#else /* L_wcscmp */ #ifdef __UCLIBC_MJN3_ONLY__ #warning implement strcoll and remove weak alias (or enable for C locale only) #endif weak_alias(strcmp,strcoll); -#endif +#endif /* L_wcscmp */ int Wstrcmp(register const Wchar *s1, register const Wchar *s2) { @@ -1918,18 +1923,31 @@ size_t strlcat(register char *__restrict dst, #endif /**********************************************************************/ +#ifdef L_wcsxfrm +#define L_strlcpy +#define Wstrlcpy wcsxfrm +#endif + #ifdef L_strlcpy +#ifndef L_wcsxfrm +#define Wstrlcpy strlcpy +#ifdef __UCLIBC_MJN3_ONLY__ +#warning implement wcscoll and remove weak alias (or enable for C locale only) +#endif +weak_alias(strlcpy,strxfrm); +#endif + /* OpenBSD function: * Copy at most n-1 chars from src to dst and nul-terminate dst. * Returns strlen(src), so truncation occurred if the return value is >= n. */ -size_t strlcpy(register char *__restrict dst, - register const char *__restrict src, - size_t n) +size_t Wstrlcpy(register Wchar *__restrict dst, + register const Wchar *__restrict src, + size_t n) { - const char *src0 = src; - char dummy[1]; + const Wchar *src0 = src; + Wchar dummy[1]; if (!n) { dst = dummy; |