This is the mail archive of the
newlib@sources.redhat.com
mailing list for the newlib project.
Re: [PATCH] Adding wcs* and wmem* in libc/string.
- From: Kazuhiro Fujieda <fujieda at jaist dot ac dot jp>
- To: newlib at sources dot redhat dot com
- Date: 02 Sep 2002 02:01:30 +0900
- Subject: Re: [PATCH] Adding wcs* and wmem* in libc/string.
- References: <s1shehdvctf.fsf@jaist.ac.jp>
- Reply-to: newlib at sources dot redhat dot com
In the last patch, I left a wrong and unnecessary type cast in
each of wcscmp and wcsncmp. I didn't understand why these type
casts are necessary in NetBSD C library and how wchar_t is
defined in newlib.
The following patch remove the type casts, then it add
definitions of WCHAR_MAX and WCHAR_MIN (C90Amend1/C99
requires these definitions in wchar.h).
2002-09-02 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
* libc/string/wcscmp.c: Delete wrong and unnecessary type cast.
* libc/string/wcsncmp.c: Ditto.
* libc/include/wchar.h: Add WCHAR_MAX and WCHAR_MIN definitions.
diff -u cygwin-i18n/newlib/libc/include/wchar.h:1.1.1.2 cygwin-i18n/newlib/libc/include/wchar.h:1.1.2.5
--- cygwin-i18n/newlib/libc/include/wchar.h:1.1.1.2 Fri Aug 30 05:58:11 2002
+++ cygwin-i18n/newlib/libc/include/wchar.h Mon Sep 2 00:49:28 2002
@@ -19,6 +19,20 @@
# define WEOF ((wint_t)-1)
#endif
+#ifndef WCHAR_MIN
+#define WCHAR_MIN 0
+#endif
+
+#ifndef WCHAR_MAX
+#ifdef CYGWIN
+/* assume wchar_t = ushort and the max is the last char in UCS-2. */
+#define WCHAR_MAX USHRT_MAX
+#else
+/* assume wchar_t = int and the max is the last char in UCS-4. */
+#define WCHAR_MAX INT_MAX
+#endif
+#endif
+
#ifndef MBSTATE_T
#define MBSTATE_T
typedef _mbstate_t mbstate_t;
Index: cygwin-i18n/newlib/libc/string/wcscmp.c
diff -u cygwin-i18n/newlib/libc/string/wcscmp.c:1.1.1.1 cygwin-i18n/newlib/libc/string/wcscmp.c:1.1.2.6
--- cygwin-i18n/newlib/libc/string/wcscmp.c:1.1.1.1 Fri Aug 30 05:58:17 2002
+++ cygwin-i18n/newlib/libc/string/wcscmp.c Mon Sep 2 01:29:57 2002
@@ -78,6 +78,5 @@
while (*s1 == *s2++)
if (*s1++ == 0)
return (0);
- /* XXX assumes wchar_t = short */
- return (*(_CONST unsigned short *) s1 - *(_CONST unsigned short *) --s2);
+ return (*s1 - *--s2);
}
Index: cygwin-i18n/newlib/libc/string/wcsncmp.c
diff -u cygwin-i18n/newlib/libc/string/wcsncmp.c:1.1.1.1 cygwin-i18n/newlib/libc/string/wcsncmp.c:1.1.2.5
--- cygwin-i18n/newlib/libc/string/wcsncmp.c:1.1.1.1 Fri Aug 30 05:58:17 2002
+++ cygwin-i18n/newlib/libc/string/wcsncmp.c Mon Sep 2 01:29:57 2002
@@ -80,9 +80,7 @@
{
if (*s1 != *s2++)
{
- /* XXX assumes wchar_t = short */
- return (*(_CONST unsigned short *) s1 -
- *(_CONST unsigned short *) --s2);
+ return (*s1 - *--s2);
}
if (*s1++ == 0)
break;
____
| AIST Kazuhiro Fujieda <fujieda@jaist.ac.jp>
| HOKURIKU Center for Information Science
o_/ 1990 Japan Advanced Institute of Science and Technology