aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-03-03 23:06:16 +0000
committerUlrich Drepper <drepper@redhat.com>1999-03-03 23:06:16 +0000
commite4d0709f6d32c51f19d6f0b7c66b37061153a6ca (patch)
treef8309035908aedd8b49f3c5ed21a71108007a38b
parentd52852dacda32704c210c17a50070b03cdfda059 (diff)
downloadglibc-e4d0709f6d32c51f19d6f0b7c66b37061153a6ca.zip
glibc-e4d0709f6d32c51f19d6f0b7c66b37061153a6ca.tar.gz
glibc-e4d0709f6d32c51f19d6f0b7c66b37061153a6ca.tar.bz2
Update.
1999-03-03 Ulrich Drepper <drepper@cygnus.com> * wcsmbs/wcsmbsload.c (add_slashes): Rename to norm_add_slashes and fold string to uppercase [PR libc/1005].
-rw-r--r--ChangeLog5
-rw-r--r--wcsmbs/wcsmbsload.c16
2 files changed, 15 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 5415467..8b5dd0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1999-03-03 Ulrich Drepper <drepper@cygnus.com>
+
+ * wcsmbs/wcsmbsload.c (add_slashes): Rename to norm_add_slashes
+ and fold string to uppercase [PR libc/1005].
+
1999-03-03 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf/dl-load.c (lose): Fix return type.
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c
index a8412e3..725652d 100644
--- a/wcsmbs/wcsmbsload.c
+++ b/wcsmbs/wcsmbsload.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@@ -17,6 +17,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#include <ctype.h>
#include <langinfo.h>
#include <limits.h>
#include <stdlib.h>
@@ -111,7 +112,7 @@ getfct (const char *to, const char *from)
/* The gconv functions expects the name to be complete, including the
trailing shashes if necessary. */
-#define add_slashes(str) \
+#define norm_add_slashes(str) \
({ \
const char *cp = str; \
char *result; \
@@ -122,8 +123,10 @@ getfct (const char *to, const char *from)
if (*cp++ == '/') \
++cnt; \
\
- result = alloca (cp - str + 3); \
- tmp = __mempcpy (result, str, cp - str); \
+ tmp = result = alloca (cp - str + 3); \
+ cp = str; \
+ while (*cp != '\0') \
+ *tmp++ = _toupper (*cp++); \
if (cnt < 2) \
{ \
*tmp++ = '/'; \
@@ -171,8 +174,9 @@ __wcsmbs_load_conv (const struct locale_data *new_category)
charset_name =
new_category->values[_NL_ITEM_INDEX(CODESET)].string;
- /* Add the slashes necessary for a complete lookup. */
- complete_name = add_slashes (charset_name);
+ /* Normalize the name and add the slashes necessary for a
+ complete lookup. */
+ complete_name = norm_add_slashes (charset_name);
__wcsmbs_gconv_fcts.tomb = getfct (complete_name, "INTERNAL");
__wcsmbs_gconv_fcts.towc = getfct ("INTERNAL", complete_name);