summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2005-11-14 22:59:08 +0000
committerPeter S. Mazinger <ps.m@gmx.net>2005-11-14 22:59:08 +0000
commit76cad786c8cd778a890ceb936b301d63d64093e4 (patch)
tree9dcf709702c03d4d8de0f7fbef1dbeb17cfdc9e7
parentf8703c6453b64fd74354a0851f6fb05795c31956 (diff)
Split up wstring.c and use attribute_hidden
-rw-r--r--libc/string/Makefile.in46
-rw-r--r--libc/string/memchr.c14
-rw-r--r--libc/string/memcmp.c16
-rw-r--r--libc/string/memcpy.c14
-rw-r--r--libc/string/memmove.c14
-rw-r--r--libc/string/mempcpy.c14
-rw-r--r--libc/string/memset.c14
-rw-r--r--libc/string/stpcpy.c14
-rw-r--r--libc/string/stpncpy.c14
-rw-r--r--libc/string/strcat.c14
-rw-r--r--libc/string/strchr.c16
-rw-r--r--libc/string/strchrnul.c14
-rw-r--r--libc/string/strcmp.c19
-rw-r--r--libc/string/strcpy.c14
-rw-r--r--libc/string/strcspn.c14
-rw-r--r--libc/string/strdup.c19
-rw-r--r--libc/string/strlcpy.c18
-rw-r--r--libc/string/strlen.c14
-rw-r--r--libc/string/strncat.c14
-rw-r--r--libc/string/strncmp.c14
-rw-r--r--libc/string/strncpy.c14
-rw-r--r--libc/string/strnlen.c14
-rw-r--r--libc/string/strpbrk.c14
-rw-r--r--libc/string/strrchr.c16
-rw-r--r--libc/string/strspn.c14
-rw-r--r--libc/string/strstr.c14
-rw-r--r--libc/string/strtok_r.c19
-rw-r--r--libc/string/wcpcpy.c15
-rw-r--r--libc/string/wcpncpy.c15
-rw-r--r--libc/string/wcscat.c15
-rw-r--r--libc/string/wcschr.c15
-rw-r--r--libc/string/wcschrnul.c15
-rw-r--r--libc/string/wcscmp.c20
-rw-r--r--libc/string/wcscpy.c15
-rw-r--r--libc/string/wcscspn.c15
-rw-r--r--libc/string/wcsdup.c20
-rw-r--r--libc/string/wcslcpy.c17
-rw-r--r--libc/string/wcslen.c15
-rw-r--r--libc/string/wcsncat.c15
-rw-r--r--libc/string/wcsncmp.c15
-rw-r--r--libc/string/wcsncpy.c15
-rw-r--r--libc/string/wcsnlen.c15
-rw-r--r--libc/string/wcspbrk.c15
-rw-r--r--libc/string/wcsrchr.c15
-rw-r--r--libc/string/wcsspn.c15
-rw-r--r--libc/string/wcsstr.c17
-rw-r--r--libc/string/wcstok.c20
-rw-r--r--libc/string/wmemchr.c15
-rw-r--r--libc/string/wmemcmp.c15
-rw-r--r--libc/string/wmemcpy.c15
-rw-r--r--libc/string/wmemmove.c15
-rw-r--r--libc/string/wmempcpy.c15
-rw-r--r--libc/string/wmemset.c15
-rw-r--r--libc/string/wstring.c373
54 files changed, 1123 insertions, 94 deletions
diff --git a/libc/string/Makefile.in b/libc/string/Makefile.in
index f2ae36c60..0adcaee39 100644
--- a/libc/string/Makefile.in
+++ b/libc/string/Makefile.in
@@ -10,23 +10,17 @@
include $(top_srcdir)libc/string/generic/Makefile.in
MSRC:=wstring.c
-MOBJ:= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o memchr.o memcmp.o \
- memcpy.o memmove.o mempcpy.o memrchr.o memset.o rawmemchr.o stpcpy.o \
- stpncpy.o strcasecmp.o strcasestr.o strcat.o strchrnul.o strchr.o \
- strcmp.o strcpy.o strcspn.o strdup.o strlen.o strncasecmp.o strncat.o \
- strncmp.o strncpy.o strndup.o strnlen.o strpbrk.o strrchr.o strsep.o \
- strspn.o strstr.o strtok.o strtok_r.o strerror.o __xpg_strerror_r.o \
+MOBJ:= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o \
+ memrchr.o rawmemchr.o strcasecmp.o strcasestr.o \
+ strncasecmp.o strndup.o strsep.o \
+ strtok.o strerror.o __xpg_strerror_r.o \
_string_syserrmsgs.o __glibc_strerror_r.o \
_string_syssigmsgs.o sys_siglist.o strsignal.o psignal.o \
- __xpg_basename.o strlcat.o strlcpy.o sys_errlist.o memmem.o
+ __xpg_basename.o strlcat.o sys_errlist.o memmem.o
MOBJW:=
ifeq ($(UCLIBC_HAS_WCHAR),y)
-MOBJW:= 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 \
- __wcslcpy.o \
+MOBJW:= wcscasecmp.o wcsncasecmp.o \
wcsxfrm.o strxfrm.o # wcscoll strcoll.o
endif
@@ -56,6 +50,30 @@ endif
STRING_DIR:=$(top_srcdir)libc/string
STRING_OUT:=$(top_builddir)libc/string
+STRING_WSRC:=$(filter-out $(STRING_DIR)/wstring.c,$(wildcard $(STRING_DIR)/w*.c))
+STRING_CSRC:=$(filter-out $(STRING_DIR)/wstring.c $(STRING_WSRC),$(wildcard $(STRING_DIR)/*.c))
+
+ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y)
+ifneq ($(strip $(STRING_ARCH_OBJS)),)
+MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ))
+STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_CSRC))
+STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_WSRC))
+endif
+endif
+
+ifeq ($(UCLIBC_HAS_STRING_GENERIC_OPT),y)
+ifneq ($(strip $(STRING_GENERIC_OBJS)),)
+MOBJ:=$(filter-out $(notdir $(STRING_GENERIC_OBJS)),$(MOBJ))
+STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_CSRC))
+STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_WSRC))
+endif
+endif
+
+
+STRING_COBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_CSRC))
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+STRING_WOBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_WSRC))
+endif
STRING_MSRC:=$(patsubst %.c,$(STRING_DIR)/%.c,$(MSRC))
STRING_MOBJ:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJ))
STRING_MOBJW:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJW))
@@ -65,7 +83,7 @@ STRING_MOBJWx:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJWx))
STRING_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_MOBJ))))
STRING_Wx:=$(STRING_MOBJW) $(STRING_MOBJx) $(STRING_MOBJWx)
-STRING_OBJS:=$(STRING_MOBJ) $(STRING_Wx)
+STRING_OBJS:=$(STRING_COBJ) $(STRING_WOBJ) $(STRING_MOBJ) $(STRING_Wx)
$(STRING_MOBJ): $(STRING_MSRC)
$(compile.m)
@@ -95,7 +113,7 @@ libc-a-y+=$(STRING_OBJS)
libc-so-y+=$(STRING_OBJS:.o=.os)
CFLAGS-multi-y+=$(STRING_DEF)
-libc-multi-y+=$(STRING_MSRC)
+libc-multi-y+=$(STRING_MSRC) $(STRING_CSRC) $(STRING_WSRC)
libc-nomulti-y+=$(STRING_Wx)
objclean-y+=string_objclean
diff --git a/libc/string/memchr.c b/libc/string/memchr.c
new file mode 100644
index 000000000..d0aa004d7
--- /dev/null
+++ b/libc/string/memchr.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_memchr
+#define Wmemchr __memchr
+
+#include "wstring.c"
+
+strong_alias(__memchr, memchr)
+
+#undef L_memchr
diff --git a/libc/string/memcmp.c b/libc/string/memcmp.c
new file mode 100644
index 000000000..5963dd174
--- /dev/null
+++ b/libc/string/memcmp.c
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_memcmp
+#define Wmemcmp __memcmp
+
+#include "wstring.c"
+
+strong_alias(__memcmp, memcmp)
+
+weak_alias(memcmp, bcmp)
+
+#undef L_memcmp
diff --git a/libc/string/memcpy.c b/libc/string/memcpy.c
new file mode 100644
index 000000000..6889271ae
--- /dev/null
+++ b/libc/string/memcpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_memcpy
+#define Wmemcpy __memcpy
+
+#include "wstring.c"
+
+strong_alias(__memcpy, memcpy)
+
+#undef L_memcpy
diff --git a/libc/string/memmove.c b/libc/string/memmove.c
new file mode 100644
index 000000000..0626ce1f5
--- /dev/null
+++ b/libc/string/memmove.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_memmove
+#define Wmemmove __memmove
+
+#include "wstring.c"
+
+strong_alias(__memmove, memmove)
+
+#undef L_memmove
diff --git a/libc/string/mempcpy.c b/libc/string/mempcpy.c
new file mode 100644
index 000000000..7fb1954cd
--- /dev/null
+++ b/libc/string/mempcpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_mempcpy
+#define Wmempcpy __mempcpy
+
+#include "wstring.c"
+
+strong_alias(__mempcpy, mempcpy)
+
+#undef L_mempcpy
diff --git a/libc/string/memset.c b/libc/string/memset.c
new file mode 100644
index 000000000..8a5d69ce8
--- /dev/null
+++ b/libc/string/memset.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_memset
+#define Wmemset __memset
+
+#include "wstring.c"
+
+strong_alias(__memset, memset)
+
+#undef L_memset
diff --git a/libc/string/stpcpy.c b/libc/string/stpcpy.c
new file mode 100644
index 000000000..c7baf5b9d
--- /dev/null
+++ b/libc/string/stpcpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_stpcpy
+#define Wstpcpy __stpcpy
+
+#include "wstring.c"
+
+strong_alias(__stpcpy, stpcpy)
+
+#undef L_stpcpy
diff --git a/libc/string/stpncpy.c b/libc/string/stpncpy.c
new file mode 100644
index 000000000..9875ad4cf
--- /dev/null
+++ b/libc/string/stpncpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_stpncpy
+#define Wstpncpy __stpncpy
+
+#include "wstring.c"
+
+strong_alias(__stpncpy, stpncpy)
+
+#undef L_stpncpy
diff --git a/libc/string/strcat.c b/libc/string/strcat.c
new file mode 100644
index 000000000..208501d66
--- /dev/null
+++ b/libc/string/strcat.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcat
+#define Wstrcat __strcat
+
+#include "wstring.c"
+
+strong_alias(__strcat, strcat)
+
+#undef L_strcat
diff --git a/libc/string/strchr.c b/libc/string/strchr.c
new file mode 100644
index 000000000..a58e1f56d
--- /dev/null
+++ b/libc/string/strchr.c
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strchr
+#define Wstrchr __strchr
+
+#include "wstring.c"
+
+strong_alias(__strchr, strchr)
+
+weak_alias(strchr, index)
+
+#undef L_strchr
diff --git a/libc/string/strchrnul.c b/libc/string/strchrnul.c
new file mode 100644
index 000000000..2656c2801
--- /dev/null
+++ b/libc/string/strchrnul.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strchrnul
+#define Wstrchrnul __strchrnul
+
+#include "wstring.c"
+
+strong_alias(__strchrnul, strchrnul)
+
+#undef L_strchrnul
diff --git a/libc/string/strcmp.c b/libc/string/strcmp.c
new file mode 100644
index 000000000..654ca302a
--- /dev/null
+++ b/libc/string/strcmp.c
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcmp
+#define Wstrcmp __strcmp
+
+#include "wstring.c"
+
+strong_alias(__strcmp, strcmp)
+
+#ifdef __LOCALE_C_ONLY
+weak_alias(__strcmp, __strcoll)
+strong_alias(__strcoll, strcoll)
+#endif
+
+#undef L_strcmp
diff --git a/libc/string/strcpy.c b/libc/string/strcpy.c
new file mode 100644
index 000000000..8dcdddde4
--- /dev/null
+++ b/libc/string/strcpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcpy
+#define Wstrcpy __strcpy
+
+#include "wstring.c"
+
+strong_alias(__strcpy, strcpy)
+
+#undef L_strcpy
diff --git a/libc/string/strcspn.c b/libc/string/strcspn.c
new file mode 100644
index 000000000..b8f8fdc08
--- /dev/null
+++ b/libc/string/strcspn.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcspn
+#define Wstrcspn __strcspn
+
+#include "wstring.c"
+
+strong_alias(__strcspn, strcspn)
+
+#undef L_strcspn
diff --git a/libc/string/strdup.c b/libc/string/strdup.c
new file mode 100644
index 000000000..2bf2462fb
--- /dev/null
+++ b/libc/string/strdup.c
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strdup
+#define Wstrdup __strdup
+
+#undef Wstrlen
+#undef Wstrcpy
+#define Wstrlen __strlen
+#define Wstrcpy __strcpy
+
+#include "wstring.c"
+
+strong_alias(__strdup, strdup)
+
+#undef L_strdup
diff --git a/libc/string/strlcpy.c b/libc/string/strlcpy.c
new file mode 100644
index 000000000..ebf135490
--- /dev/null
+++ b/libc/string/strlcpy.c
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strlcpy
+#define Wstrlcpy __strlcpy
+
+#include "wstring.c"
+
+strong_alias(__strlcpy, strlcpy)
+
+#ifdef __LOCALE_C_ONLY
+weak_alias(strlcpy, strxfrm)
+#endif
+
+#undef L_strlcpy
diff --git a/libc/string/strlen.c b/libc/string/strlen.c
new file mode 100644
index 000000000..282f34d93
--- /dev/null
+++ b/libc/string/strlen.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strlen
+#define Wstrlen __strlen
+
+#include "wstring.c"
+
+strong_alias(__strlen, strlen)
+
+#undef L_strlen
diff --git a/libc/string/strncat.c b/libc/string/strncat.c
new file mode 100644
index 000000000..623354305
--- /dev/null
+++ b/libc/string/strncat.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strncat
+#define Wstrncat __strncat
+
+#include "wstring.c"
+
+strong_alias(__strncat, strncat)
+
+#undef L_strncat
diff --git a/libc/string/strncmp.c b/libc/string/strncmp.c
new file mode 100644
index 000000000..d36003ab6
--- /dev/null
+++ b/libc/string/strncmp.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strncmp
+#define Wstrncmp __strncmp
+
+#include "wstring.c"
+
+strong_alias(__strncmp, strncmp)
+
+#undef L_strncmp
diff --git a/libc/string/strncpy.c b/libc/string/strncpy.c
new file mode 100644
index 000000000..c96be715e
--- /dev/null
+++ b/libc/string/strncpy.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strncpy
+#define Wstrncpy __strncpy
+
+#include "wstring.c"
+
+strong_alias(__strncpy, strncpy)
+
+#undef L_strncpy
diff --git a/libc/string/strnlen.c b/libc/string/strnlen.c
new file mode 100644
index 000000000..a480e29d1
--- /dev/null
+++ b/libc/string/strnlen.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strnlen
+#define Wstrnlen __strnlen
+
+#include "wstring.c"
+
+strong_alias(__strnlen, strnlen)
+
+#undef L_strnlen
diff --git a/libc/string/strpbrk.c b/libc/string/strpbrk.c
new file mode 100644
index 000000000..88e0b4051
--- /dev/null
+++ b/libc/string/strpbrk.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strpbrk
+#define Wstrpbrk __strpbrk
+
+#include "wstring.c"
+
+strong_alias(__strpbrk, strpbrk)
+
+#undef L_strpbrk
diff --git a/libc/string/strrchr.c b/libc/string/strrchr.c
new file mode 100644
index 000000000..374abb694
--- /dev/null
+++ b/libc/string/strrchr.c
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strrchr
+#define Wstrrchr __strrchr
+
+#include "wstring.c"
+
+strong_alias(__strrchr, strrchr)
+
+weak_alias(strrchr, rindex)
+
+#undef L_strrchr
diff --git a/libc/string/strspn.c b/libc/string/strspn.c
new file mode 100644
index 000000000..e03250593
--- /dev/null
+++ b/libc/string/strspn.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strspn
+#define Wstrspn __strspn
+
+#include "wstring.c"
+
+strong_alias(__strspn, strspn)
+
+#undef L_strspn
diff --git a/libc/string/strstr.c b/libc/string/strstr.c
new file mode 100644
index 000000000..f7ae4ffaf
--- /dev/null
+++ b/libc/string/strstr.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strstr
+#define Wstrstr __strstr
+
+#include "wstring.c"
+
+strong_alias(__strstr, strstr)
+
+#undef L_strstr
diff --git a/libc/string/strtok_r.c b/libc/string/strtok_r.c
new file mode 100644
index 000000000..3f92c034d
--- /dev/null
+++ b/libc/string/strtok_r.c
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strtok_r
+#define Wstrtok_r __strtok_r
+
+#undef Wstrspn
+#define Wstrspn __strspn
+#undef Wstrpbrk
+#define Wstrpbrk __strpbrk
+
+#include "wstring.c"
+
+strong_alias(__strtok_r, strtok_r)
+
+#undef L_strtok_r
diff --git a/libc/string/wcpcpy.c b/libc/string/wcpcpy.c
new file mode 100644
index 000000000..ca65b702a
--- /dev/null
+++ b/libc/string/wcpcpy.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_stpcpy
+#define WANT_WIDE
+#define Wstpcpy __wcpcpy
+
+#include "wstring.c"
+
+strong_alias(__wcpcpy, wcpcpy)
+
+#undef L_stpcpy
diff --git a/libc/string/wcpncpy.c b/libc/string/wcpncpy.c
new file mode 100644
index 000000000..ce942a63f
--- /dev/null
+++ b/libc/string/wcpncpy.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_stpncpy
+#define WANT_WIDE
+#define Wstpncpy __wcpncpy
+
+#include "wstring.c"
+
+strong_alias(__wcpncpy, wcpncpy)
+
+#undef L_stpncpy
diff --git a/libc/string/wcscat.c b/libc/string/wcscat.c
new file mode 100644
index 000000000..b2f189662
--- /dev/null
+++ b/libc/string/wcscat.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcat
+#define WANT_WIDE
+#define Wstrcat __wcscat
+
+#include "wstring.c"
+
+strong_alias(__wcscat, wcscat)
+
+#undef L_strcat
diff --git a/libc/string/wcschr.c b/libc/string/wcschr.c
new file mode 100644
index 000000000..6dbab9402
--- /dev/null
+++ b/libc/string/wcschr.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strchr
+#define WANT_WIDE
+#define Wstrchr __wcschr
+
+#include "wstring.c"
+
+strong_alias(__wcschr, wcschr)
+
+#undef L_strchr
diff --git a/libc/string/wcschrnul.c b/libc/string/wcschrnul.c
new file mode 100644
index 000000000..6d962c7af
--- /dev/null
+++ b/libc/string/wcschrnul.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strchrnul
+#define WANT_WIDE
+#define Wstrchrnul __wcschrnul
+
+#include "wstring.c"
+
+strong_alias(__wcschrnul, wcschrnul)
+
+#undef L_strchrnul
diff --git a/libc/string/wcscmp.c b/libc/string/wcscmp.c
new file mode 100644
index 000000000..5501a4dac
--- /dev/null
+++ b/libc/string/wcscmp.c
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcmp
+#define WANT_WIDE
+#define Wstrcmp __wcscmp
+
+#include "wstring.c"
+
+strong_alias(__wcscmp, wcscmp)
+
+#ifdef __LOCALE_C_ONLY
+weak_alias(__wcscmp, __wcscoll)
+strong_alias(__wcscoll, wcscoll)
+#endif
+
+#undef L_strcmp
diff --git a/libc/string/wcscpy.c b/libc/string/wcscpy.c
new file mode 100644
index 000000000..bf5ba0da2
--- /dev/null
+++ b/libc/string/wcscpy.c
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_strcpy
+#define WANT_WIDE
+#define Wstrcpy __wcscpy
+
+#include "wstring.c"
+
+strong_alias(__wcscpy, wcscpy)
+
+#undef L_