Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 5 Jan 2000 07:47:25 +0000 (07:47 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 5 Jan 2000 07:47:25 +0000 (07:47 +0000)
* locale/programs/stringtrans.c: Removed.
* locale/programs/stringtrans.h: Removed.

* locale/findlocale.c (_nl_find_locale): Don't try using mmap is
_POSIX_MAPPED_FILES is not defined.

* locale/findlocale.c (_nl_find_locale): Correct memory allocation
for loc_name copy.

* locale/setlocale.c (new_composite_name): Use _nl_C_name and
_nl_POSIX_name instead of "C" and "POSIX" strings.

ChangeLog
locale/findlocale.c
locale/programs/stringtrans.c [deleted file]
locale/programs/stringtrans.h [deleted file]
locale/setlocale.c

index 72e6a12..cf45d2b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,19 @@
 2000-01-04  Ulrich Drepper  <drepper@cygnus.com>
 
+       * locale/programs/stringtrans.c: Removed.
+       * locale/programs/stringtrans.h: Removed.
+
+       * locale/findlocale.c (_nl_find_locale): Don't try using mmap is
+       _POSIX_MAPPED_FILES is not defined.
+
+       * locale/findlocale.c (_nl_find_locale): Correct memory allocation
+       for loc_name copy.
+
+       * locale/setlocale.c (new_composite_name): Use _nl_C_name and
+       _nl_POSIX_name instead of "C" and "POSIX" strings.
+
        * ctype/ctype-info.c (__ctype32_tolower): Use _nl_C_CTYPE_tolower.
        (__ctype32_toupper): Use _nl_C_CTYPE_toupper.
-
        * locale/C-ctype.c (_nl_C_LC_CTYPE_tolower32): Removed.  We can
        reuse the _nl_C_LC_CTYPE_tolower table.
        (_nl_C_LC_CTYPE_toupper32): Likewise.
index 9cb2206..979b90f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -21,7 +21,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <sys/mman.h>
+#ifdef _POSIX_MAPPED_FILES
+# include <sys/mman.h>
+#endif
 
 #include "localeinfo.h"
 
@@ -86,7 +88,7 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
     loc_name = (char *) *name;
 
   /* Make a writable copy of the locale name.  */
-  loc_name = __strdup (loc_name);
+  loc_name = strdupa (loc_name);
 
   /* LOCALE can consist of up to four recognized parts for the XPG syntax:
 
@@ -135,11 +137,6 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
        /* This means we are out of core.  */
        return NULL;
     }
-  else
-    /* If the addressed locale is already available it should be
-       freed.  If we would not do this switching back and force
-       between two locales would slowly eat up all memory.  */
-    free ((void *) loc_name);
 
   /* The space for normalized_codeset is dynamically allocated.  Free it.  */
   if (mask & XPG_NORM_CODESET)
@@ -215,6 +212,7 @@ _nl_remove_locale (int locale, struct locale_data *data)
       /* Free the name.  */
       free ((char *) data->name);
 
+#ifdef _POSIX_MAPPED_FILES
       /* Really delete the data.  First delete the real data.  */
       if (data->mmaped)
        {
@@ -227,6 +225,7 @@ _nl_remove_locale (int locale, struct locale_data *data)
            }
        }
       else
+#endif /* _POSIX_MAPPED_FILES */
        /* The memory was malloced.  */
        free ((void *) data->filedata);
 
diff --git a/locale/programs/stringtrans.c b/locale/programs/stringtrans.c
deleted file mode 100644 (file)
index b810129..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
-
-   The GNU C Library 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.
-
-   The GNU C Library 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 the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <assert.h>
-#include <stdlib.h>
-
-#include "charset.h"
-#include "stringtrans.h"
-
-
-/* Global variable.  */
-enum encoding_method encoding_method = ENC_UCS4;
-
-
-void *xmalloc (size_t __n);
-void *xrealloc (void *__p, size_t __n);
-
-
-#define ADDC(ch)                                                             \
-  do                                                                         \
-    {                                                                        \
-      char *cp;                                                                      \
-      if (bufact + (encoding_method == ENC_UCS4 ? 4 : 1) >= bufmax)          \
-       {                                                                     \
-         bufmax *= 2;                                                        \
-         buf = xrealloc (buf, bufmax);                                       \
-       }                                                                     \
-      cp = &buf[bufact];                                                     \
-      if (encode_char (ch, &cp) < 0)                                         \
-       {                                                                     \
-         free (buf);                                                         \
-         return NULL;                                                        \
-       }                                                                     \
-      bufact = cp - buf;                                                     \
-    }                                                                        \
-  while (0)
-
-
-char *
-translate_string (char *str, struct charset_t *charset)
-{
-  char *buf;
-  size_t bufact = 0;
-  size_t bufmax = 56;
-
-  buf = (char *) xmalloc (bufmax);
-
-  while (str[0] != '\0')
-    {
-      char *tp;
-      unsigned int value;
-
-      if (str[0] != '<')
-       {
-         ADDC (*str++);
-         continue;
-       }
-
-      tp = &str[1];
-      while (tp[0] != '\0' && tp[0] != '>')
-       if (tp[0] == '\\')
-         if (tp[1] != '\0')
-           tp += 2;
-         else
-           ++tp;
-       else
-         ++tp;
-
-      if (tp[0] == '\0')
-       {
-         free (buf);
-         return NULL;
-       }
-
-      value = charset_find_value (&charset->char_table, str + 1,
-                                 tp - (str + 1));
-      if ((wchar_t) value == ILLEGAL_CHAR_VALUE)
-       {
-         free (buf);
-         return NULL;
-       }
-      else
-       /* Encode string using current method.  */
-       ADDC (value);
-
-      str = &tp[1];
-    }
-
-  ADDC ('\0');
-
-  return buf;
-}
-
-
-int
-encode_char (unsigned int value, char **cpp)
-{
-  switch (encoding_method)
-    {
-    case ENC_UCS1:
-      if (value > 255)
-       return -1;
-      *(*cpp)++ = (char) value;
-      break;
-
-    case ENC_UCS4:
-#if __BYTE_ORDER == __BIG_ENDIAN
-      *(*cpp)++ = (char) (value >> 24);
-      *(*cpp)++ = (char) ((value >> 16) & 0xff);
-      *(*cpp)++ = (char) ((value >> 8) & 0xff);
-      *(*cpp)++ = (char) (value & 0xff);
-#else
-      *(*cpp)++ = (char) (value & 0xff);
-      *(*cpp)++ = (char) ((value >>= 8) & 0xff);
-      *(*cpp)++ = (char) ((value >>= 8) & 0xff);
-      *(*cpp)++ = (char) ((value >>= 8) & 0xff);
-#endif
-      break;
-
-    default:
-      return -1;
-    }
-
-  return 0;
-}
diff --git a/locale/programs/stringtrans.h b/locale/programs/stringtrans.h
deleted file mode 100644 (file)
index 2237032..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
-
-   The GNU C Library 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.
-
-   The GNU C Library 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 the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef _TRANSLATE_H
-#define _TRANSLATE_H 1
-
-enum encoding_method
-{
-  ENC_UCS1,
-  ENC_UCS4
-};
-
-
-extern enum encoding_method encoding_method;
-
-
-char *translate_string (char *__str, struct charset_t *__charset);
-
-int encode_char (unsigned int __value, char **__cpp);
-
-
-#endif /* translate.h */
index 1fdc94f..0bf9eee 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 95-99, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -154,8 +154,8 @@ new_composite_name (int category, const char *newnames[__LC_LAST])
   if (same)
     {
       /* All the categories use the same name.  */
-      if (strcmp (newnames[0], "C") == 0
-         || strcmp (newnames[0], "POSIX") == 0)
+      if (strcmp (newnames[0], _nl_C_name) == 0
+         || strcmp (newnames[0], _nl_POSIX_name) == 0)
        return (char *) _nl_C_name;
 
       new = malloc (last_len + 1);