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.
This commit is contained in:
Ulrich Drepper 2002-03-14 20:48:50 +00:00
parent 1897bc3f93
commit ba737b94fd
11 changed files with 121 additions and 47 deletions

View File

@ -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

View 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;
}
}

View 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];
}

View 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"}}).

View 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)

View 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

View File

@ -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,
};

View File

@ -0,0 +1 @@
/* __clz_tab not needed on hppa. */

View File

@ -0,0 +1 @@
/* __clz_tab not needed on i386. */

View File

@ -0,0 +1 @@
/* __clz_tab not needed on powerpc. */

View 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;