Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 14 Mar 2002 20:48:50 +0000 (20:48 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 14 Mar 2002 20:48:50 +0000 (20:48 +0000)
2002-03-14  Jakub Jelinek  <jakub@redhat.com>

* locale/broken_cur_max.c (__ctype_get_mb_cur_max): Use nl_langinfo.
* locale/Versions (_nl_current_LC_COLLATE, _nl_current_LC_CTYPE):
Remove.

2002-03-14  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/generic/mp_clz_tab.c: New file.
* sysdeps/i386/mp_clz_tab.c: New file.
* sysdeps/hppa/mp_clz_tab.c: New file.
* sysdeps/powerpc/mp_clz_tab.c: New file.
* stdlib/Makefile (aux): Revert last patch.
* math/Makefile (gmp-objs): Likewise.

2002-03-13  Paul Eggert  <eggert@twinsun.com>

* time/strftime.c: Comment fixes for references to obsolescent
standards, In most cases the simplest fix is to remove the
confusing comments.  Cross-referencing all the standards properly
is a bit of a pain, and it should be enough to put that info in
the documentation as I did in my recent time.texi patch.

2002-03-13  Paul Eggert  <eggert@twinsun.com>

* manual/time.texi (Formatting Calendar Time):
ISO C99 also specifies the E and O modifiers.
%P is a GNU extension, and is not in ISO C99.
Mention that %r is equivalent to %I:%M:%S %p in the POSIX locale.
%T is also in ISO C99.
The RFC 822 example is not valid in arbitrary locales.
Reword the POSIX.2 wording slightly, to make it a bit clearer
that POSIX.2 formats are also supported by later POSIX versions.
If a format was introduced in ISO C99 it is also required by
POSIX.1-2001.

ChangeLog
locale/Versions
locale/broken_cur_max.c
manual/time.texi
math/Makefile
stdlib/Makefile
sysdeps/generic/mp_clz_tab.c [new file with mode: 0644]
sysdeps/hppa/mp_clz_tab.c [new file with mode: 0644]
sysdeps/i386/mp_clz_tab.c [new file with mode: 0644]
sysdeps/powerpc/mp_clz_tab.c [new file with mode: 0644]
time/strftime.c

index 6811be8..ca6b9c9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2002-03-14  Jakub Jelinek  <jakub@redhat.com>
+
+       * locale/broken_cur_max.c (__ctype_get_mb_cur_max): Use nl_langinfo.
+       * locale/Versions (_nl_current_LC_COLLATE, _nl_current_LC_CTYPE):
+       Remove.
+
+2002-03-14  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/generic/mp_clz_tab.c: New file.
+       * sysdeps/i386/mp_clz_tab.c: New file.
+       * sysdeps/hppa/mp_clz_tab.c: New file.
+       * sysdeps/powerpc/mp_clz_tab.c: New file.
+       * stdlib/Makefile (aux): Revert last patch.
+       * math/Makefile (gmp-objs): Likewise.
+
+2002-03-13  Paul Eggert  <eggert@twinsun.com>
+
+       * time/strftime.c: Comment fixes for references to obsolescent
+       standards, In most cases the simplest fix is to remove the
+       confusing comments.  Cross-referencing all the standards properly
+       is a bit of a pain, and it should be enough to put that info in
+       the documentation as I did in my recent time.texi patch.
+
+2002-03-13  Paul Eggert  <eggert@twinsun.com>
+
+       * manual/time.texi (Formatting Calendar Time):
+       ISO C99 also specifies the E and O modifiers.
+       %P is a GNU extension, and is not in ISO C99.
+       Mention that %r is equivalent to %I:%M:%S %p in the POSIX locale.
+       %T is also in ISO C99.
+       The RFC 822 example is not valid in arbitrary locales.
+       Reword the POSIX.2 wording slightly, to make it a bit clearer
+       that POSIX.2 formats are also supported by later POSIX versions.
+       If a format was introduced in ISO C99 it is also required by
+       POSIX.1-2001.
+
 2002-03-13  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/gnu/errlist.awk: Define _sys_errlist_internal and
index 6bce99f..094a392 100644 (file)
@@ -50,6 +50,5 @@ libc {
     # global variables
     __collate_element_hash; __collate_element_strings;
     __collate_symbol_classes; __collate_symbol_hash; __collate_symbol_strings;
-    _nl_current_LC_COLLATE; _nl_current_LC_CTYPE;
   }
 }
index c997bec..bfdec32 100644 (file)
@@ -44,7 +44,8 @@
 size_t
 __ctype_get_mb_cur_max (void)
 {
-  size_t correct_value = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX);
+  union locale_data_value u;
 
-  return ((size_t []) { 1, 1, 1, 2, 2, 3, 4 })[correct_value];
+  u.string = nl_langinfo (_NL_CTYPE_MB_CUR_MAX);
+  return ((size_t []) { 1, 1, 1, 2, 2, 3, 4 })[u.word];
 }
index eb5a361..e16a729 100644 (file)
@@ -1143,7 +1143,8 @@ the result is written right adjusted and space padded to the given
 size.
 
 An optional modifier can follow the optional flag and width
-specification.  The modifiers, which are POSIX.2 extensions, are:
+specification.  The modifiers, which were first standardized by
+POSIX.2-1992 and by @w{ISO C99}, are:
 
 @table @code
 @item E
@@ -1185,7 +1186,7 @@ The preferred calendar time representation for the current locale.
 The century of the year.  This is equivalent to the greatest integer not
 greater than the year divided by 100.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %d
 The day of the month as a decimal number (range @code{01} through @code{31}).
@@ -1193,19 +1194,19 @@ The day of the month as a decimal number (range @code{01} through @code{31}).
 @item %D
 The date using the format @code{%m/%d/%y}.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %e
 The day of the month like with @code{%d}, but padded with blank (range
 @code{ 1} through @code{31}).
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %F
 The date using the format @code{%Y-%m-%d}.  This is the form specified
 in the @w{ISO 8601} standard and is the preferred form for all uses.
 
-This format is a @w{ISO C99} extension.
+This format was first standardized by @w{ISO C99} and by POSIX.1-2001.
 
 @item %g
 The year corresponding to the ISO week number, but without the century
@@ -1213,7 +1214,7 @@ The year corresponding to the ISO week number, but without the century
 as @code{%y}, except that if the ISO week number (see @code{%V}) belongs
 to the previous or next year, that year is used instead.
 
-This format was introduced in @w{ISO C99}.
+This format was first standardized by @w{ISO C99} and by POSIX.1-2001.
 
 @item %G
 The year corresponding to the ISO week number.  This has the same format
@@ -1221,14 +1222,14 @@ and value as @code{%Y}, except that if the ISO week number (see
 @code{%V}) belongs to the previous or next year, that year is used
 instead.
 
-This format was introduced in @w{ISO C99} but was previously available
-as a GNU extension.
+This format was first standardized by @w{ISO C99} and by POSIX.1-2001
+but was previously available as a GNU extension.
 
 @item %h
 The abbreviated month name according to the current locale.  The action
 is the same as for @code{%b}.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %H
 The hour as a decimal number, using a 24-hour clock (range @code{00} through
@@ -1262,7 +1263,7 @@ The minute as a decimal number (range @code{00} through @code{59}).
 @item %n
 A single @samp{\n} (newline) character.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %p
 Either @samp{AM} or @samp{PM}, according to the given time value; or the
@@ -1278,19 +1279,19 @@ Either @samp{am} or @samp{pm}, according to the given time value; or the
 corresponding strings for the current locale, printed in lowercase
 characters.  Noon is treated as @samp{pm} and midnight as @samp{am}.
 
-This format was introduced in @w{ISO C99} but was previously available
-as a GNU extension.
+This format is a GNU extension.
 
 @item %r
 The complete calendar time using the AM/PM format of the current locale.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
+In the POSIX locale, this format is equivalent to @code{%I:%M:%S %p}.
 
 @item %R
 The hour and minute in decimal numbers using the format @code{%H:%M}.
 
-This format was introduced in @w{ISO C99} but was previously available
-as a GNU extension.
+This format was first standardized by @w{ISO C99} and by POSIX.1-2001
+but was previously available as a GNU extension.
 
 @item %s
 The number of seconds since the epoch, i.e., since 1970-01-01 00:00:00 UTC.
@@ -1304,18 +1305,18 @@ The seconds as a decimal number (range @code{00} through @code{60}).
 @item %t
 A single @samp{\t} (tabulator) character.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %T
 The time of day using decimal numbers using the format @code{%H:%M:%S}.
 
-This format is a POSIX.2 extension.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %u
 The day of the week as a decimal number (range @code{1} through
 @code{7}), Monday being @code{1}.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %U
 The week number of the current year as a decimal number (range @code{00}
@@ -1334,7 +1335,7 @@ The week before week @code{01} of a year is the last week (@code{52} or
 @code{53}) of the previous year even if it contains days from the new
 year.
 
-This format is a POSIX.2 extension and also appears in @w{ISO C99}.
+This format was first standardized by POSIX.2-1992 and by @w{ISO C99}.
 
 @item %w
 The day of the week as a decimal number (range @code{0} through
@@ -1365,10 +1366,10 @@ before the year @code{1} are numbered @code{0}, @code{-1}, and so on.
 @code{-0600} or @code{+0100}), or nothing if no time zone is
 determinable.
 
-This format was introduced in @w{ISO C99} but was previously available
-as a GNU extension.
+This format was first standardized by @w{ISO C99} and by POSIX.1-2001
+but was previously available as a GNU extension.
 
-A full @w{RFC 822} timestamp is generated by the format
+In the POSIX locale, a full @w{RFC 822} timestamp is generated by the format
 @w{@samp{"%a, %d %b %Y %H:%M:%S %z"}} (or the equivalent
 @w{@samp{"%a, %d %b %Y %T %z"}}).
 
index f7e88f6..2887aed 100644 (file)
@@ -183,7 +183,7 @@ o = .os
 endif
 gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%$o,\
                      add_n sub_n cmp addmul_1 mul_1 mul_n divmod_1 \
-                     lshift rshift udiv_qrnnd inlines)
+                     lshift rshift mp_clz_tab udiv_qrnnd inlines)
 $(objpfx)atest-exp: $(gmp-objs)
 $(objpfx)atest-sincos: $(gmp-objs)
 $(objpfx)atest-exp2: $(gmp-objs)
index b92e031..ab6c8bf 100644 (file)
@@ -70,9 +70,7 @@ mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h
 routines := $(strip $(routines) $(mpn-routines))       \
            dbl2mpn ldbl2mpn                            \
            mpn2flt mpn2dbl mpn2ldbl
-# mp_clz seems not to be used.  At least on x86.  If removing the file
-# does not cause problem clean this up and actually remove the file.
-aux := fpioconst# mp_clz_tab
+aux := fpioconst mp_clz_tab
 distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h
 
 generated += isomac isomac.out
diff --git a/sysdeps/generic/mp_clz_tab.c b/sysdeps/generic/mp_clz_tab.c
new file mode 100644 (file)
index 0000000..520ea31
--- /dev/null
@@ -0,0 +1,37 @@
+/* __clz_tab -- support for longlong.h
+   Copyright (C) 1991, 1993, 1994, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.  Its master source is NOT part of
+   the C library, however.  The master source lives in the GNU MP Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#if 0
+#include "gmp.h"
+#include "gmp-impl.h"
+#endif
+
+const
+unsigned char __clz_tab[] =
+{
+  0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+};
diff --git a/sysdeps/hppa/mp_clz_tab.c b/sysdeps/hppa/mp_clz_tab.c
new file mode 100644 (file)
index 0000000..52d0638
--- /dev/null
@@ -0,0 +1 @@
+/* __clz_tab not needed on hppa.  */
diff --git a/sysdeps/i386/mp_clz_tab.c b/sysdeps/i386/mp_clz_tab.c
new file mode 100644 (file)
index 0000000..860f98c
--- /dev/null
@@ -0,0 +1 @@
+/* __clz_tab not needed on i386.  */
diff --git a/sysdeps/powerpc/mp_clz_tab.c b/sysdeps/powerpc/mp_clz_tab.c
new file mode 100644 (file)
index 0000000..4b5f29b
--- /dev/null
@@ -0,0 +1 @@
+/* __clz_tab not needed on powerpc.  */
index bcbe4a8..bae952a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000, 2001, 2002 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
@@ -535,9 +535,8 @@ my_strftime (s, maxsize, format, tp ut_argument)
     }
   else
     {
-      /* POSIX.1 8.1.1 requires that whenever strftime() is called, the
-        time zone names contained in the external variable `tzname' shall
-        be set as if the tzset() function had been called.  */
+      /* POSIX.1 requires that local time zone information is used as
+        though strftime called tzset.  */
 # if HAVE_TZSET
       tzset ();
 # endif
@@ -756,7 +755,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
 #endif
 
        case L_('b'):
-       case L_('h'):           /* POSIX.2 extension.  */
+       case L_('h'):
          if (change_case)
            {
              to_uppcase = 1;
@@ -851,7 +850,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
          break;
 #endif
 
-       case L_('C'):           /* POSIX.2 extension.  */
+       case L_('C'):
          if (modifier == L_('O'))
            goto bad_format;
          if (modifier == L_('E'))
@@ -898,7 +897,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
          /* Fall through.  */
 # endif
 #endif
-       case L_('D'):           /* POSIX.2 extension.  */
+       case L_('D'):
          if (modifier != 0)
            goto bad_format;
          subfmt = L_("%m/%d/%y");
@@ -910,7 +909,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
 
          DO_NUMBER (2, tp->tm_mday);
 
-       case L_('e'):           /* POSIX.2 extension.  */
+       case L_('e'):
          if (modifier == L_('E'))
            goto bad_format;
 
@@ -1042,7 +1041,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
 
          DO_NUMBER (2, tp->tm_mon + 1);
 
-       case L_('n'):           /* POSIX.2 extension.  */
+       case L_('n'):
          add (1, *p = L_('\n'));
          break;
 
@@ -1066,11 +1065,11 @@ my_strftime (s, maxsize, format, tp ut_argument)
          goto underlying_strftime;
 #endif
 
-       case L_('R'):           /* ISO C99 extension.  */
+       case L_('R'):
          subfmt = L_("%H:%M");
          goto subformat;
 
-       case L_('r'):           /* POSIX.2 extension.  */
+       case L_('r'):
 #ifdef _NL_CURRENT
          if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
                                                       NLW(T_FMT_AMPM)))
@@ -1141,15 +1140,15 @@ my_strftime (s, maxsize, format, tp ut_argument)
          /* Fall through.  */
 # endif
 #endif
-       case L_('T'):           /* POSIX.2 extension.  */
+       case L_('T'):
          subfmt = L_("%H:%M:%S");
          goto subformat;
 
-       case L_('t'):           /* POSIX.2 extension.  */
+       case L_('t'):
          add (1, *p = L_('\t'));
          break;
 
-       case L_('u'):           /* POSIX.2 extension.  */
+       case L_('u'):
          DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1);
 
        case L_('U'):
@@ -1159,8 +1158,8 @@ my_strftime (s, maxsize, format, tp ut_argument)
          DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7);
 
        case L_('V'):
-       case L_('g'):           /* ISO C99 extension.  */
-       case L_('G'):           /* ISO C99 extension.  */
+       case L_('g'):
+       case L_('G'):
          if (modifier == L_('E'))
            goto bad_format;
          {
@@ -1268,7 +1267,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
            zone = tzname[tp->tm_isdst];
 #endif
          if (! zone)
-           zone = "";          /* POSIX.2 requires the empty string here.  */
+           zone = "";
 
 #ifdef COMPILE_WIDE
          {
@@ -1284,7 +1283,7 @@ my_strftime (s, maxsize, format, tp ut_argument)
 #endif
          break;
 
-       case L_('z'):           /* ISO C99 extension.  */
+       case L_('z'):
          if (tp->tm_isdst < 0)
            break;