1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00
1997-11-04  Ulrich Drepper  <drepper@cygnus.com>

	* manual/filesys.texi: Correct description of return value for
	readdir_r.
	* sysdeps/unix/readdir_r.c (__readdir_r): Return value of errno
	not -1 in error case.
	* sysdeps/generic/readdir_r.c (__readdir_r): Return ENOSYS not -1.
	Reported by Jim Meyering <meyering@eng.ascend.com>.

1997-11-02  Paul Eggert  <eggert@twinsun.com>

	* strftime.c: Use host's underlying strftime to access
	locale-specific info.  This is useful e.g. when building GNU
	Emacs under Solaris 2.6.
	(weekday_name, month_name): Omit if HAVE_STRFTIME.
	(my_strftime): New macro, which names the strftime function that
	this source file produces.
	(strftime): #undef if emacs is defined; this works around Emacs 20.2's
	method of compiling with -Dstrftime=emacs_strftime.
	Also, declare as a function returning size_t, for similar reasons.
	(my_strftime): If HAVE_STRFTIME, use underlying strftime to handle
	locale-dependent formats like %a and %Ec.

1997-11-02  Paul Eggert  <eggert@twinsun.com>

	* strftime.c (memcpy_lowcase, memcpy_uppcase, strftime):
	Ensure that args to islower and isupper are valid unsigned
	chars, even if char is signed.

1997-11-04  Ulrich Drepper  <drepper@cygnus.com>

	* assert/Makefile (headers): Add assert.h, necessary after patch
	to Makefiles.
	* ctype/Makefile (headers): Likewise.
	* pwd/Makefile (headers): Likewise.
	* grp/Makefile (headers): Likewise.
	Patch by NIIBE Yutaka <gniibe@mri.co.jp>.

1997-11-04 03:08  Ulrich Drepper  <drepper@cygnus.com>

	* glibcbug.in: Add information about configured target.
	Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.

	* elf/dl-lookup.c (_dl_lookup_versioned_symbol): Be prepared for
	empty string as `reference_name' parameter.
	* elf/rtld.c: Don't set real program name in l_name of main object.

	* manual/creature.texi: Apply Paul Eggert's patch for better
	_POSIX_C_SOURCE description.

	* stdlib/strfmon.c: Fix numerous bugs in formatting.

	* time/strptime.c [%Y]: Treat all years, not only those which fit
	in time_t.
	[%Oy]: Really store value.
	Patches by Paul Eggert.

	* wcsmbs/wchar.h: Fix documentation bugs.  Declare wcsdup only
	is __USE_GNU.

1997-11-03 02:48  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/bits/errno.h: Remove all error definitions.  This
	is only meant as a stub.

1997-10-31  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/standalone/bits/errno.h: Copied from
	sysdeps/generic/bits/errno.h and added all know error codes that
	are used in glibc.

1997-11-03 02:23  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/make_siglist.c: Add comment to clarify use and
	make sure the correct _NSIG value is used.
	Patch by Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>.

1997-11-03 00:20  Ulrich Drepper  <drepper@cygnus.com>

	* intl/localealias.c (read_alias_file): Correct handling of line
	reader which sometimes skipped complete lines (PR 205).
	Optimize a bit by using mempcpy.

1997-11-02 16:59  Philipp Thomas  <kthomas@gwdg.de>

	* intl/localealias.c (read_alias_file): Correctly set map[].value
	instead of overwriting map[].alias

1997-11-02 15:32  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Add _IO_flockfile and _IO_funlockfile.
	Suggested by H.J. Lu <hjl@lucon.org>.

1997-11-02 15:17  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-error.c (_dl_signal_error): Use _strerror_internal instead
	of strerror.
	* assert/assert-perr.c: Use _strerror_internal directly instead of
	__strerror_r.
	Suggested by Joe Keane <jgk@jgk.org>.

1997-11-01 16:46  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* configure.in: Check for gcc-2.7.2 -pipe bug and hack around it
	(PR 245).

1997-11-01  Paul Eggert  <eggert@twinsun.com>

	* time/strptime.c (strptime_internal): Fix bug: %Oy forgot to
	assign tm_year.  Do not restrict %Y to years less than 2037 even
	on 32-bit time_t hosts, as strptime returns an int tm_year, not a
	time_t, and it's possible for programs to use the year without
	having to use time_t.

	non-directories in the list (PR 203).
This commit is contained in:
Ulrich Drepper
1997-11-04 03:00:40 +00:00
parent 1cab544423
commit 1618c59038
28 changed files with 581 additions and 192 deletions

7
BUGS
View File

@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete) List of known bugs (certainly very incomplete)
---------------------------------------------- ----------------------------------------------
Time-stamp: <1997-10-31T16:49:39+0100 drepper> Time-stamp: <1997-11-02T15:10:48+0100 drepper>
This following list contains those bugs which I'm aware of. Please This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one make sure that bugs you report are not listed here. If you can fix one
@ -58,11 +58,6 @@ Severity: [ *] to [***]
checked for errors, but the whole file containing the same checked for errors, but the whole file containing the same
category. category.
[PR libc/207] [PR libc/207]
[ *] configuring with CFLAGS="-pipe" configure doesn't work
with gcc. This seems to be a bug in gcc 2.7.2.x (egcs doesn't
have this bug).
[PR libc/245]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ulrich Drepper Ulrich Drepper
drepper@cygnus.com drepper@cygnus.com

116
ChangeLog
View File

@ -1,8 +1,122 @@
1997-11-04 Ulrich Drepper <drepper@cygnus.com>
* manual/filesys.texi: Correct description of return value for
readdir_r.
* sysdeps/unix/readdir_r.c (__readdir_r): Return value of errno
not -1 in error case.
* sysdeps/generic/readdir_r.c (__readdir_r): Return ENOSYS not -1.
Reported by Jim Meyering <meyering@eng.ascend.com>.
1997-11-02 Paul Eggert <eggert@twinsun.com>
* strftime.c: Use host's underlying strftime to access
locale-specific info. This is useful e.g. when building GNU
Emacs under Solaris 2.6.
(weekday_name, month_name): Omit if HAVE_STRFTIME.
(my_strftime): New macro, which names the strftime function that
this source file produces.
(strftime): #undef if emacs is defined; this works around Emacs 20.2's
method of compiling with -Dstrftime=emacs_strftime.
Also, declare as a function returning size_t, for similar reasons.
(my_strftime): If HAVE_STRFTIME, use underlying strftime to handle
locale-dependent formats like %a and %Ec.
1997-11-02 Paul Eggert <eggert@twinsun.com>
* strftime.c (memcpy_lowcase, memcpy_uppcase, strftime):
Ensure that args to islower and isupper are valid unsigned
chars, even if char is signed.
1997-11-04 Ulrich Drepper <drepper@cygnus.com>
* assert/Makefile (headers): Add assert.h, necessary after patch
to Makefiles.
* ctype/Makefile (headers): Likewise.
* pwd/Makefile (headers): Likewise.
* grp/Makefile (headers): Likewise.
Patch by NIIBE Yutaka <gniibe@mri.co.jp>.
1997-11-04 03:08 Ulrich Drepper <drepper@cygnus.com>
* glibcbug.in: Add information about configured target.
Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>.
* elf/dl-lookup.c (_dl_lookup_versioned_symbol): Be prepared for
empty string as `reference_name' parameter.
* elf/rtld.c: Don't set real program name in l_name of main object.
* manual/creature.texi: Apply Paul Eggert's patch for better
_POSIX_C_SOURCE description.
* stdlib/strfmon.c: Fix numerous bugs in formatting.
* time/strptime.c [%Y]: Treat all years, not only those which fit
in time_t.
[%Oy]: Really store value.
Patches by Paul Eggert.
* wcsmbs/wchar.h: Fix documentation bugs. Declare wcsdup only
is __USE_GNU.
1997-11-03 02:48 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/bits/errno.h: Remove all error definitions. This
is only meant as a stub.
1997-10-31 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/standalone/bits/errno.h: Copied from
sysdeps/generic/bits/errno.h and added all know error codes that
are used in glibc.
1997-11-03 02:23 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/make_siglist.c: Add comment to clarify use and
make sure the correct _NSIG value is used.
Patch by Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>.
1997-11-03 00:20 Ulrich Drepper <drepper@cygnus.com>
* intl/localealias.c (read_alias_file): Correct handling of line
reader which sometimes skipped complete lines (PR 205).
Optimize a bit by using mempcpy.
1997-11-02 16:59 Philipp Thomas <kthomas@gwdg.de>
* intl/localealias.c (read_alias_file): Correctly set map[].value
instead of overwriting map[].alias
1997-11-02 15:32 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add _IO_flockfile and _IO_funlockfile.
Suggested by H.J. Lu <hjl@lucon.org>.
1997-11-02 15:17 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-error.c (_dl_signal_error): Use _strerror_internal instead
of strerror.
* assert/assert-perr.c: Use _strerror_internal directly instead of
__strerror_r.
Suggested by Joe Keane <jgk@jgk.org>.
1997-11-01 16:46 Zack Weinberg <zack@rabi.phys.columbia.edu>
* configure.in: Check for gcc-2.7.2 -pipe bug and hack around it
(PR 245).
1997-11-01 Paul Eggert <eggert@twinsun.com>
* time/strptime.c (strptime_internal): Fix bug: %Oy forgot to
assign tm_year. Do not restrict %Y to years less than 2037 even
on 32-bit time_t hosts, as strptime returns an int tm_year, not a
time_t, and it's possible for programs to use the year without
having to use time_t.
1997-10-31 23:16 Ulrich Drepper <drepper@cygnus.com> 1997-10-31 23:16 Ulrich Drepper <drepper@cygnus.com>
* posix/glob.c (glob): If calling glob_in_dir for a list which was * posix/glob.c (glob): If calling glob_in_dir for a list which was
generated by a glob call disable GLOB_ERR since there might be generated by a glob call disable GLOB_ERR since there might be
non-directories in the list (PR203). non-directories in the list (PR 203).
* posix/glob.h (GLOB_ONLYDIR): New flag. * posix/glob.h (GLOB_ONLYDIR): New flag.
(__GLOB_FLAGS): Add GLOB_ONLYDIR. (__GLOB_FLAGS): Add GLOB_ONLYDIR.

View File

@ -20,6 +20,7 @@
# Sub-makefile for assert portion of the library. # Sub-makefile for assert portion of the library.
# #
subdir := assert subdir := assert
headers := assert.h
routines := assert assert-perr routines := assert assert-perr

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. /* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -22,6 +22,10 @@
#include <sysdep.h> #include <sysdep.h>
/* This is the internal function we use to generate the error string. */
extern char *_strerror_internal __P ((int, char *, size_t));
extern const char *__assert_program_name; /* In assert.c. */ extern const char *__assert_program_name; /* In assert.c. */
/* This function, when passed an error number, a filename, and a line /* This function, when passed an error number, a filename, and a line
@ -49,7 +53,7 @@ __assert_perror_fail (int errnum,
__assert_program_name ? ": " : "", __assert_program_name ? ": " : "",
file, line, file, line,
function ? function : "", function ? ": " : "", function ? function : "", function ? ": " : "",
__strerror_r (errnum, errbuf, sizeof errbuf)); _strerror_internal (errnum, errbuf, sizeof errbuf));
(void) fflush (stderr); (void) fflush (stderr);
abort (); abort ();

View File

@ -22,20 +22,15 @@
#undef __need_Emath #undef __need_Emath
#define __Emath_defined 1 #define __Emath_defined 1
# define EDOM 1 # define EDOM XXX <--- fill in what is actually needed
# define ERANGE 2 # define ERANGE XXX <--- fill in what is actually needed
#endif #endif
#ifdef _ERRNO_H #ifdef _ERRNO_H
# define ENOSYS 3 # error "Define here all the missing error messages for the port. These"
# define EINVAL 4 # error "must match the numbers of the kernel."
# define ESPIPE 5 # define Exxxx XXX
# define EBADF 6 ...
# define ENOMEM 7
# define EACCES 8
# define ENFILE 9
# define EMFILE 10
# define ENOMSG 11
#endif #endif
#define __set_errno(val) errno = (val) #define __set_errno(val) errno = (val)

195
configure vendored
View File

@ -558,14 +558,6 @@ else
ac_n= ac_c='\c' ac_t= ac_n= ac_c='\c' ac_t=
fi fi
if test -r /vmunix; then
kernel_id=`strings /vmunix | grep UNIX`
elif test -r /dynix; then
kernel_id=`strings /dynix | grep DYNIX`
else
kernel_id=
fi
@ -760,7 +752,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi fi
echo $ac_n "checking host system type""... $ac_c" 1>&6 echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:764: checking host system type" >&5 echo "configure:756: checking host system type" >&5
host_alias=$host host_alias=$host
case "$host_alias" in case "$host_alias" in
@ -879,7 +871,7 @@ fi
# This can take a while to compute. # This can take a while to compute.
sysdep_dir=$srcdir/sysdeps sysdep_dir=$srcdir/sysdeps
echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
echo "configure:883: checking sysdep dirs" >&5 echo "configure:875: checking sysdep dirs" >&5
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
@ -1080,7 +1072,7 @@ echo "$ac_t""sysdeps/generic" 1>&6
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh. # ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:1084: checking for a BSD compatible install" >&5 echo "configure:1076: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
@ -1134,7 +1126,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
INSTALL='\$(..)./install-sh -c' INSTALL='\$(..)./install-sh -c'
fi fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
echo "configure:1138: checking whether ln -s works" >&5 echo "configure:1130: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1159,7 +1151,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1163: checking for $ac_word" >&5 echo "configure:1155: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1192,7 +1184,7 @@ test -n "$MSGFMT" || MSGFMT=":"
# Extract the first word of "gcc", so it can be a program name with args. # Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2 set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1196: checking for $ac_word" >&5 echo "configure:1188: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1221,7 +1213,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args. # Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2 set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1225: checking for $ac_word" >&5 echo "configure:1217: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1269,7 +1261,7 @@ fi
fi fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:1273: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 echo "configure:1265: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@ -1279,11 +1271,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
cross_compiling=$ac_cv_prog_cc_cross cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1283 "configure" #line 1275 "configure"
#include "confdefs.h" #include "confdefs.h"
main(){return(0);} main(){return(0);}
EOF EOF
if { (eval echo configure:1287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then if { (eval echo configure:1279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler. # If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then if (./conftest; exit) 2>/dev/null; then
@ -1306,13 +1298,13 @@ else
cross_linkable=yes cross_linkable=yes
fi fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:1310: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "configure:1302: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
echo "configure:1316: checking whether we are using GNU C" >&5 echo "configure:1308: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1321,7 +1313,7 @@ else
yes; yes;
#endif #endif
EOF EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes ac_cv_prog_gcc=yes
else else
ac_cv_prog_gcc=no ac_cv_prog_gcc=no
@ -1338,7 +1330,7 @@ if test $ac_cv_prog_gcc = yes; then
yes; yes;
#endif #endif
EOF EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1342: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
if test -z "$CFLAGS"; then if test -z "$CFLAGS"; then
CFLAGS="-g -O2" CFLAGS="-g -O2"
fi fi
@ -1350,7 +1342,7 @@ else
fi fi
echo $ac_n "checking build system type""... $ac_c" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:1354: checking build system type" >&5 echo "configure:1346: checking build system type" >&5
build_alias=$build build_alias=$build
case "$build_alias" in case "$build_alias" in
@ -1373,7 +1365,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1377: checking for $ac_word" >&5 echo "configure:1369: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1404,7 +1396,7 @@ done
fi fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1408: checking how to run the C preprocessor" >&5 echo "configure:1400: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory. # On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then if test -n "$CPP" && test -d "$CPP"; then
CPP= CPP=
@ -1419,13 +1411,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser, # On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. # not just through cpp.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1423 "configure" #line 1415 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1436,13 +1428,13 @@ else
rm -rf conftest* rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp" CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1440 "configure" #line 1432 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1446: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1475,7 +1467,7 @@ LD=`$CC -print-file-name=ld`
# Determine whether we are using GNU binutils. # Determine whether we are using GNU binutils.
echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
echo "configure:1479: checking whether $AS is GNU as" >&5 echo "configure:1471: checking whether $AS is GNU as" >&5
if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1493,7 +1485,7 @@ rm -f a.out
gnu_as=$libc_cv_prog_as_gnu gnu_as=$libc_cv_prog_as_gnu
echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6 echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
echo "configure:1497: checking whether $LD is GNU ld" >&5 echo "configure:1489: checking whether $LD is GNU ld" >&5
if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1517,7 +1509,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2 set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1521: checking for $ac_word" >&5 echo "configure:1513: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1548,7 +1540,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1552: checking for $ac_word" >&5 echo "configure:1544: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1579,7 +1571,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args. # Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2 set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1583: checking for $ac_word" >&5 echo "configure:1575: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1614,7 +1606,7 @@ fi
# Extract the first word of "bash", so it can be a program name with args. # Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2 set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1618: checking for $ac_word" >&5 echo "configure:1610: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1655,7 +1647,7 @@ if test "$BASH" = no; then
# Extract the first word of "ksh", so it can be a program name with args. # Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2 set dummy ksh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1659: checking for $ac_word" >&5 echo "configure:1651: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1701,7 +1693,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1705: checking for $ac_word" >&5 echo "configure:1697: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1736,7 +1728,7 @@ test -n "$PERL" || PERL="no"
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
echo "configure:1740: checking for signed size_t type" >&5 echo "configure:1732: checking for signed size_t type" >&5
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1760,12 +1752,12 @@ EOF
fi fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
echo "configure:1764: checking for libc-friendly stddef.h" >&5 echo "configure:1756: checking for libc-friendly stddef.h" >&5
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1769 "configure" #line 1761 "configure"
#include "confdefs.h" #include "confdefs.h"
#define __need_size_t #define __need_size_t
#define __need_wchar_t #define __need_wchar_t
@ -1780,7 +1772,7 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort (); if (&size == NULL || &wchar == NULL) abort ();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
libc_cv_friendly_stddef=yes libc_cv_friendly_stddef=yes
else else
@ -1799,7 +1791,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
echo "configure:1803: checking whether we need to use -P to assemble .S files" >&5 echo "configure:1795: checking whether we need to use -P to assemble .S files" >&5
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1821,8 +1813,44 @@ if test $libc_cv_need_minus_P = yes; then
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives." asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi fi
# gcc 2.7.x has a bug where if -pipe is set, the assembler will always
# be told to read stdin. This causes the compiler to hang when fed an
# .s file.
if test $ac_cv_prog_gcc = yes; then
case `${CC-cc} -v 2>&1` in
*2.7*)
# We must check this even if -pipe is not given here, because the user
# might do `make CFLAGS=-pipe'.
echo $ac_n "checking for gcc 2.7.x -pipe bug""... $ac_c" 1>&6
echo "configure:1826: checking for gcc 2.7.x -pipe bug" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_pipe_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat >conftest.s <<EOF
foo:
EOF
if ${CC-cc} -pipe -c conftest.s <conftest.s 2>/dev/null; then
libc_cv_gcc_pipe_bug=no
else
libc_cv_gcc_pipe_bug=yes
fi
rm -f conftest*
fi
echo "$ac_t""$libc_cv_gcc_pipe_bug" 1>&6
if test $libc_cv_gcc_pipe_bug = yes; then
makeCC="${CC-cc} -B\$(common-objpfx)"
makeCFLAGS=$CFLAGS
CFLAGS=`echo $CFLAGS |sed 's/-pipe//'`
fi;;
*) libc_cv_gcc_pipe_bug=no;;
esac
else
libc_cv_gcc_pipe_bug=no
fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
echo "configure:1826: checking for assembler global-symbol directive" >&5 echo "configure:1854: checking for assembler global-symbol directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1852,7 +1880,7 @@ EOF
fi fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
echo "configure:1856: checking for .set assembler directive" >&5 echo "configure:1884: checking for .set assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1886,7 +1914,7 @@ EOF
fi fi
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
echo "configure:1890: checking for .symver assembler directive" >&5 echo "configure:1918: checking for .symver assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1905,7 +1933,7 @@ fi
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
echo "configure:1909: checking for ld --version-script" >&5 echo "configure:1937: checking for ld --version-script" >&5
if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1924,7 +1952,7 @@ EOF
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-nostartfiles -nostdlib -nostartfiles -nostdlib
-Wl,--version-script,conftest.map -Wl,--version-script,conftest.map
1>&5'; { (eval echo configure:1928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; 1>&5'; { (eval echo configure:1956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
then then
libc_cv_ld_version_script_option=yes libc_cv_ld_version_script_option=yes
else else
@ -1955,7 +1983,7 @@ fi
if test $elf = yes; then if test $elf = yes; then
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
echo "configure:1959: checking for .previous assembler directive" >&5 echo "configure:1987: checking for .previous assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1963,7 +1991,7 @@ else
.section foo_section .section foo_section
.previous .previous
EOF EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:1967: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:1995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_previous_directive=yes libc_cv_asm_previous_directive=yes
else else
libc_cv_asm_previous_directive=no libc_cv_asm_previous_directive=no
@ -1979,7 +2007,7 @@ EOF
else else
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
echo "configure:1983: checking for .popsection assembler directive" >&5 echo "configure:2011: checking for .popsection assembler directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1987,7 +2015,7 @@ else
.pushsection foo_section .pushsection foo_section
.popsection .popsection
EOF EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:1991: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_asm_popsection_directive=yes libc_cv_asm_popsection_directive=yes
else else
libc_cv_asm_popsection_directive=no libc_cv_asm_popsection_directive=no
@ -2007,12 +2035,12 @@ fi
if test $elf != yes; then if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
echo "configure:2011: checking for .init and .fini sections" >&5 echo "configure:2039: checking for .init and .fini sections" >&5
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2016 "configure" #line 2044 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
@ -2021,7 +2049,7 @@ asm (".section .init");
asm (".text"); asm (".text");
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
libc_cv_have_initfini=yes libc_cv_have_initfini=yes
else else
@ -2049,19 +2077,19 @@ if test $elf = yes; then
else else
if test $ac_cv_prog_cc_works = yes; then if test $ac_cv_prog_cc_works = yes; then
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
echo "configure:2053: checking for _ prefix on C symbol names" >&5 echo "configure:2081: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2058 "configure" #line 2086 "configure"
#include "confdefs.h" #include "confdefs.h"
asm ("_glibc_foobar:"); asm ("_glibc_foobar:");
int main() { int main() {
glibc_foobar (); glibc_foobar ();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then if { (eval echo configure:2093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest* rm -rf conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
else else
@ -2076,17 +2104,17 @@ fi
echo "$ac_t""$libc_cv_asm_underscores" 1>&6 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
else else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
echo "configure:2080: checking for _ prefix on C symbol names" >&5 echo "configure:2108: checking for _ prefix on C symbol names" >&5
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2085 "configure" #line 2113 "configure"
#include "confdefs.h" #include "confdefs.h"
void underscore_test(void) { void underscore_test(void) {
return; } return; }
EOF EOF
if { (eval echo configure:2090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if grep _underscore_test conftest* >/dev/null; then if grep _underscore_test conftest* >/dev/null; then
rm -f conftest* rm -f conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
@ -2119,7 +2147,7 @@ if test $elf = yes; then
libc_cv_asm_weakext_directive=no libc_cv_asm_weakext_directive=no
else else
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
echo "configure:2123: checking for assembler .weak directive" >&5 echo "configure:2151: checking for assembler .weak directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2142,7 +2170,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
echo "configure:2146: checking for assembler .weakext directive" >&5 echo "configure:2174: checking for assembler .weakext directive" >&5
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2179,7 +2207,7 @@ EOF
fi fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
echo "configure:2183: checking for ld --no-whole-archive" >&5 echo "configure:2211: checking for ld --no-whole-archive" >&5
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2190,7 +2218,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive -nostdlib -nostartfiles -Wl,--no-whole-archive
-o conftest conftest.c 1>&5'; { (eval echo configure:2194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -o conftest conftest.c 1>&5'; { (eval echo configure:2222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_ld_no_whole_archive=yes libc_cv_ld_no_whole_archive=yes
else else
libc_cv_ld_no_whole_archive=no libc_cv_ld_no_whole_archive=no
@ -2201,7 +2229,7 @@ fi
echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6 echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6 echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
echo "configure:2205: checking for gcc -fno-exceptions" >&5 echo "configure:2233: checking for gcc -fno-exceptions" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2212,7 +2240,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fno-exceptions -nostdlib -nostartfiles -fno-exceptions
-o conftest conftest.c 1>&5'; { (eval echo configure:2216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -o conftest conftest.c 1>&5'; { (eval echo configure:2244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_no_exceptions=yes libc_cv_gcc_no_exceptions=yes
else else
libc_cv_gcc_no_exceptions=no libc_cv_gcc_no_exceptions=no
@ -2223,12 +2251,12 @@ fi
echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6 echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
echo "configure:2227: checking for DWARF2 unwind info support" >&5 echo "configure:2255: checking for DWARF2 unwind info support" >&5
if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<EOF cat > conftest.c <<EOF
#line 2232 "configure" #line 2260 "configure"
static char __EH_FRAME_BEGIN__; static char __EH_FRAME_BEGIN__;
_start () _start ()
{ {
@ -2249,7 +2277,7 @@ __bzero () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -nostdlib -nostartfiles
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:2253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_gcc_dwarf2_unwind_info=yes libc_cv_gcc_dwarf2_unwind_info=yes
else else
libc_cv_gcc_dwarf2_unwind_info=no libc_cv_gcc_dwarf2_unwind_info=no
@ -2307,7 +2335,7 @@ if test "$uname" = "sysdeps/generic"; then
fi fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
echo "configure:2311: checking OS release for uname" >&5 echo "configure:2339: checking OS release for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2329,7 +2357,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release" uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
echo "configure:2333: checking OS version for uname" >&5 echo "configure:2361: checking OS version for uname" >&5
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2351,7 +2379,7 @@ else
fi fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
echo "configure:2355: checking stdio selection" >&5 echo "configure:2383: checking stdio selection" >&5
case $stdio in case $stdio in
libio) cat >> confdefs.h <<\EOF libio) cat >> confdefs.h <<\EOF
@ -2363,7 +2391,7 @@ esac
echo "$ac_t""$stdio" 1>&6 echo "$ac_t""$stdio" 1>&6
echo $ac_n "checking ldap selection""... $ac_c" 1>&6 echo $ac_n "checking ldap selection""... $ac_c" 1>&6
echo "configure:2367: checking ldap selection" >&5 echo "configure:2395: checking ldap selection" >&5
case $add_ons in case $add_ons in
*ldap*) *ldap*)
@ -2428,6 +2456,21 @@ fi
VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h` VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
if test $libc_cv_gcc_pipe_bug = yes; then
realCC=$CC
CC=$makeCC
CFLAGS=$makeCFLAGS
fi
if test -r /vmunix; then
kernel_id=`strings /vmunix | grep UNIX`
elif test -r /dynix; then
kernel_id=`strings /dynix | grep DYNIX`
else
kernel_id=
fi
trap '' 1 2 15 trap '' 1 2 15
cat > confcache <<\EOF cat > confcache <<\EOF
# This file is a shell script that caches the results of configure # This file is a shell script that caches the results of configure
@ -2867,10 +2910,16 @@ while test -n "$ac_sources"; do
done done
EOF EOF
cat >> $CONFIG_STATUS <<EOF cat >> $CONFIG_STATUS <<EOF
realCC=$realCC
echo '$config_vars' >> config.make; test -d bits || mkdir bits echo '$config_vars' >> config.make; test -d bits || mkdir bits
EOF EOF
cat >> $CONFIG_STATUS <<\EOF cat >> $CONFIG_STATUS <<\EOF
if test "$realCC"; then
sed -e 's/%{pipe:-}/%|/g' `$realCC -print-file-name=specs` >specsT
mv specsT specs
fi
exit 0 exit 0
EOF EOF
chmod +x $CONFIG_STATUS chmod +x $CONFIG_STATUS

View File

@ -500,6 +500,35 @@ if test $libc_cv_need_minus_P = yes; then
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives." asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi fi
# gcc 2.7.x has a bug where if -pipe is set, the assembler will always
# be told to read stdin. This causes the compiler to hang when fed an
# .s file.
if test $ac_cv_prog_gcc = yes; then
case `${CC-cc} -v 2>&1` in
*2.7*)
# We must check this even if -pipe is not given here, because the user
# might do `make CFLAGS=-pipe'.
AC_CACHE_CHECK(for gcc 2.7.x -pipe bug, libc_cv_gcc_pipe_bug, [dnl
cat >conftest.s <<EOF
foo:
EOF
if ${CC-cc} -pipe -c conftest.s <conftest.s 2>/dev/null; then
libc_cv_gcc_pipe_bug=no
else
libc_cv_gcc_pipe_bug=yes
fi
rm -f conftest*])
if test $libc_cv_gcc_pipe_bug = yes; then
makeCC="${CC-cc} -B\$(common-objpfx)"
makeCFLAGS=$CFLAGS
CFLAGS=`echo $CFLAGS |sed 's/-pipe//'`
fi;;
*) libc_cv_gcc_pipe_bug=no;;
esac
else
libc_cv_gcc_pipe_bug=no
fi
AC_CACHE_CHECK(for assembler global-symbol directive, AC_CACHE_CHECK(for assembler global-symbol directive,
libc_cv_asm_global_directive, [dnl libc_cv_asm_global_directive, [dnl
libc_cv_asm_global_directive=UNKNOWN libc_cv_asm_global_directive=UNKNOWN
@ -958,5 +987,16 @@ fi
VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h` VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
AC_SUBST(VERSION) AC_SUBST(VERSION)
if test $libc_cv_gcc_pipe_bug = yes; then
realCC=$CC
CC=$makeCC
CFLAGS=$makeCFLAGS
fi
AC_OUTPUT_COMMANDS([
if test "$realCC"; then
sed -e 's/%{pipe:-}/%|/g' `$realCC -print-file-name=specs` >specsT
mv specsT specs
fi], [realCC=$realCC])
AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, , AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
[echo '$config_vars' >> config.make; test -d bits || mkdir bits]) [echo '$config_vars' >> config.make; test -d bits || mkdir bits])

View File

@ -20,6 +20,7 @@
# Sub-makefile for ctype portion of the library. # Sub-makefile for ctype portion of the library.
# #
subdir := ctype subdir := ctype
headers := ctype.h
routines := ctype ctype-extn ctype_l routines := ctype ctype-extn ctype_l
aux := ctype-info aux := ctype-info

View File

@ -23,6 +23,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
/* This is the internal function we use to generate the error string. */
extern char *_strerror_internal __P ((int, char *, size_t));
/* This structure communicates state between _dl_catch_error and /* This structure communicates state between _dl_catch_error and
_dl_signal_error. */ _dl_signal_error. */
struct catch struct catch
@ -74,11 +77,14 @@ _dl_signal_error (int errcode,
{ {
/* Lossage while resolving the program's own symbols is always fatal. */ /* Lossage while resolving the program's own symbols is always fatal. */
extern char **_dl_argv; /* Set in rtld.c at startup. */ extern char **_dl_argv; /* Set in rtld.c at startup. */
char buffer[1024];
_dl_sysdep_fatal (_dl_argv[0] ?: "<program name unknown>", _dl_sysdep_fatal (_dl_argv[0] ?: "<program name unknown>",
": error in loading shared libraries: ", ": error in loading shared libraries: ",
objname ?: "", objname ? ": " : "", objname ?: "", objname ? ": " : "",
errstring, errcode ? ": " : "", errstring, errcode ? ": " : "",
errcode ? strerror (errcode) : "", "\n", NULL); (errcode
? _strerror_internal (errcode, buffer, sizeof buffer)
: ""), "\n", NULL);
} }
} }
@ -93,7 +99,7 @@ _dl_catch_error (char **errstring,
/* We need not handle `receiver' since setting a `catch' is handled /* We need not handle `receiver' since setting a `catch' is handled
before it. */ before it. */
/* Some systems (.e.g, SPARC) handle constructors to local variables /* Some systems (e.g., SPARC) handle constructors to local variables
inefficient. So we initialize `c' by hand. */ inefficient. So we initialize `c' by hand. */
c.errstring = NULL; c.errstring = NULL;
c.objname = NULL; c.objname = NULL;

View File

@ -279,6 +279,7 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
const struct r_found_version *version, const struct r_found_version *version,
int reloc_type) int reloc_type)
{ {
extern char **_dl_argv;
const unsigned long int hash = _dl_elf_hash (undef_name); const unsigned long int hash = _dl_elf_hash (undef_name);
struct sym_val current_value = { 0, NULL }; struct sym_val current_value = { 0, NULL };
struct link_map **scope; struct link_map **scope;
@ -295,7 +296,9 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
if (res < 0) if (res < 0)
/* Oh, oh. The file named in the relocation entry does not /* Oh, oh. The file named in the relocation entry does not
contain the needed symbol. */ contain the needed symbol. */
_dl_signal_error (0, reference_name, _dl_signal_error (0, (*reference_name
? reference_name
: (_dl_argv[0] ?: "<main program>")),
make_string ("symbol ", undef_name, ", version ", make_string ("symbol ", undef_name, ", version ",
version->name, version->name,
" not defined in file ", " not defined in file ",

View File

@ -395,8 +395,7 @@ of this helper program; chances are you did not intend to run this program.\n",
{ {
/* Create a link_map for the executable itself. /* Create a link_map for the executable itself.
This will be what dlopen on "" returns. */ This will be what dlopen on "" returns. */
main_map = _dl_new_object (_dl_argv[0] ?: (char *) "<main program>", main_map = _dl_new_object ((char *) "", "", lt_executable);
"", lt_executable);
if (main_map == NULL) if (main_map == NULL)
_dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL); _dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL);
main_map->l_phdr = phdr; main_map->l_phdr = phdr;

View File

@ -8,6 +8,7 @@
VERSION="@VERSION@" VERSION="@VERSION@"
BUGGLIBC="bugs@gnu.org" BUGGLIBC="bugs@gnu.org"
ADDONS="@subdirs@" ADDONS="@subdirs@"
HOST="@host@"
PATH=/bin:/usr/bin:/usr/local/bin:$PATH PATH=/bin:/usr/bin:/usr/local/bin:$PATH
export PATH export PATH
@ -119,6 +120,7 @@ ${ORGANIZATION- $ORGANIZATION_C}
>Release: libc-${VERSION} >Release: libc-${VERSION}
>Environment: >Environment:
$ENVIRONMENT_C $ENVIRONMENT_C
`[ -n "$HOST" ] && echo Host type: $HOST`
`[ -n "$SYSTEM" ] && echo System: $SYSTEM` `[ -n "$SYSTEM" ] && echo System: $SYSTEM`
`[ -n "$ARCH" ] && echo Architecture: $ARCH` `[ -n "$ARCH" ] && echo Architecture: $ARCH`
`[ -n "$MACHINE" ] && echo Machine: $MACHINE` `[ -n "$MACHINE" ] && echo Machine: $MACHINE`

View File

@ -20,6 +20,7 @@
# Sub-makefile for grp portion of the library. # Sub-makefile for grp portion of the library.
# #
subdir := grp subdir := grp
headers := grp.h
routines := fgetgrent initgroups setgroups \ routines := fgetgrent initgroups setgroups \
getgrent getgrgid getgrnam \ getgrent getgrgid getgrnam \

View File

@ -84,6 +84,9 @@ void free ();
# define strcasecmp __strcasecmp # define strcasecmp __strcasecmp
# define strdup __strdup # define strdup __strdup
# define mempcpy __mempcpy
# define HAVE_MEMPCPY 1
/* We need locking here since we can be called from different palces. */ /* We need locking here since we can be called from different palces. */
# include <bits/libc-lock.h> # include <bits/libc-lock.h>
@ -231,8 +234,13 @@ read_alias_file (fname, fname_len)
full_fname = (char *) alloca (fname_len + sizeof aliasfile); full_fname = (char *) alloca (fname_len + sizeof aliasfile);
ADD_BLOCK (block_list, full_fname); ADD_BLOCK (block_list, full_fname);
#ifdef HAVE_MEMPCPY
mempcpy (mempcpy (full_fname, fname, fname_len),
aliasfile, sizeof aliasfile);
#else
memcpy (full_fname, fname, fname_len); memcpy (full_fname, fname, fname_len);
memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
#endif
fp = fopen (full_fname, "r"); fp = fopen (full_fname, "r");
if (fp == NULL) if (fp == NULL)
@ -254,10 +262,23 @@ read_alias_file (fname, fname_len)
char *value; char *value;
char *cp; char *cp;
if (fgets (buf, BUFSIZ, fp) == NULL) if (fgets (buf, sizeof buf, fp) == NULL)
/* EOF reached. */ /* EOF reached. */
break; break;
/* Possibly not the whole line fits into the buffer. Ignore
the rest of the line. */
if (strchr (buf, '\n') == NULL)
{
char altbuf[BUFSIZ];
do
if (fgets (altbuf, sizeof altbuf, fp) == NULL)
/* Make sure the inner loop will be left. The outer loop
will exit at the `feof' test. */
break;
while (strchr (altbuf, '\n') == NULL);
}
cp = buf; cp = buf;
/* Ignore leading white space. */ /* Ignore leading white space. */
while (isspace (cp[0])) while (isspace (cp[0]))
@ -324,7 +345,7 @@ read_alias_file (fname, fname_len)
alias, alias_len); alias, alias_len);
string_space_act += alias_len; string_space_act += alias_len;
map[nmap].alias = memcpy (&string_space[string_space_act], map[nmap].value = memcpy (&string_space[string_space_act],
value, value_len); value, value_len);
string_space_act += value_len; string_space_act += value_len;
@ -332,17 +353,6 @@ read_alias_file (fname, fname_len)
++added; ++added;
} }
} }
/* Possibly not the whole line fits into the buffer. Ignore
the rest of the line. */
while (strchr (cp, '\n') == NULL)
{
cp = buf;
if (fgets (buf, BUFSIZ, fp) == NULL)
/* Make sure the inner loop will be left. The outer loop
will exit at the `feof' test. */
*cp = '\n';
}
} }
/* Should we test for ferror()? I think we have to silently ignore /* Should we test for ferror()? I think we have to silently ignore

View File

@ -86,7 +86,7 @@ GLIBC_2.0 {
_IO_seekmark; _IO_unsave_markers; _IO_str_overflow; _IO_seekmark; _IO_unsave_markers; _IO_str_overflow;
_IO_str_underflow; _IO_str_init_static; _IO_str_init_readonly; _IO_str_underflow; _IO_str_init_static; _IO_str_init_readonly;
_IO_str_seekoff; _IO_str_pbackfail; _IO_file_jumps; _IO_str_seekoff; _IO_str_pbackfail; _IO_file_jumps;
_IO_peekc_locked; _IO_peekc_locked; _IO_flockfile; _IO_funlockfile;
__vsscanf; __vfscanf; __vsnprintf; __vsscanf; __vfscanf; __vsnprintf;
_rpc_dtablesize; _null_auth; _seterr_reply; _rpc_dtablesize; _null_auth; _seterr_reply;
__res_randomid; __res_randomid;

View File

@ -25,17 +25,36 @@ self-contained way.
If you define this macro, then the functionality from the POSIX.1 If you define this macro, then the functionality from the POSIX.1
standard (IEEE Standard 1003.1) is available, as well as all of the standard (IEEE Standard 1003.1) is available, as well as all of the
@w{ISO C} facilities. @w{ISO C} facilities.
The state of @code{_POSIX_SOURCE} is irrelevant if you define the
macro @code{_POSIX_C_SOURCE} to a positive integer.
@end defvr @end defvr
@comment (none) @comment (none)
@comment POSIX.2 @comment POSIX.2
@defvr Macro _POSIX_C_SOURCE Define this macro to a positive integer to control which POSIX
If you define this macro with a value of @code{1}, then the functionality is made available. The greater the value of this macro,
functionality from the POSIX.1 standard (IEEE Standard 1003.1) is made the more functionality is made available.
available. If you define this macro with a value of @code{2}, then both
the functionality from the POSIX.1 standard and the functionality from If you define this macro to a value greater than or equal to @code{1},
the POSIX.2 standard (IEEE Standard 1003.2) are made available. This is then the functionality from the 1990 edition of the POSIX.1 standard
in addition to the @w{ISO C} facilities. (IEEE Standard 1003.1-1990) is made available.
If you define this macro to a value greater than or equal to @code{2},
then the functionality from the 1992 edition of the POSIX.2 standard
(IEEE Standard 1003.2-1992) is made available.
If you define this macro to a value greater than or equal to @code{199309L},
then the functionality from the 1993 edition of the POSIX.1b standard
(IEEE Standard 1003.1b-1993) is made available.
Greater values for @code{_POSIX_C_SOURCE} will enable future extensions.
The POSIX standards process will define these values as necessary, and
the GNU C Library should support them some time after they become standardized.
The 1996 edition of POSIX.1 (ISO/IEC 9945-1: 1996) states that
if you define @code{_POSIX_C_SOURCE} to a value greater than
or equal to @code{199506L}, then the functionality from the 1996
edition is made available.
The Single Unix Specification specify that setting this macro to the The Single Unix Specification specify that setting this macro to the
value @code{199506L} selects all the values specified by the POSIX value @code{199506L} selects all the values specified by the POSIX

View File

@ -351,8 +351,8 @@ The return value is @code{0} in case the next entry was read
successfully. In this case a pointer to the result is returned in successfully. In this case a pointer to the result is returned in
*@var{result}. It is not required that *@var{result} is the same as *@var{result}. It is not required that *@var{result} is the same as
@var{entry}. If something goes wrong while executing @code{readdir_r} @var{entry}. If something goes wrong while executing @code{readdir_r}
the function returns @code{-1}. The @code{errno} variable is set like the function returns a value indicating the error (as described for
described for @code{readdir}. @code{readdir}).
@strong{Portability Note:} On some systems, @code{readdir_r} may not @strong{Portability Note:} On some systems, @code{readdir_r} may not
return a terminated string as the file name even if no @code{d_reclen} return a terminated string as the file name even if no @code{d_reclen}

View File

@ -20,6 +20,7 @@
# Sub-makefile for pwd portion of the library. # Sub-makefile for pwd portion of the library.
# #
subdir := pwd subdir := pwd
headers := pwd.h
routines := fgetpwent getpw putpwent \ routines := fgetpwent getpw putpwent \
getpwent getpwnam getpwuid \ getpwent getpwnam getpwuid \

View File

@ -204,7 +204,8 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
va_end (ap); va_end (ap);
return -1; return -1;
} }
n_sign_posn = 5; /* This is a else unused value. */ p_sign_posn = 0;
n_sign_posn = 0;
continue; continue;
case '!': /* Don't print the currency symbol. */ case '!': /* Don't print the currency symbol. */
print_curr_symbol = 0; print_curr_symbol = 0;
@ -218,6 +219,13 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
break; break;
} }
/* If not specified by the format string now find the values for
the format specification. */
if (p_sign_posn == -1)
p_sign_posn = *_NL_CURRENT (LC_MONETARY, P_SIGN_POSN);
if (n_sign_posn == -1)
n_sign_posn = *_NL_CURRENT (LC_MONETARY, N_SIGN_POSN);
if (isdigit (*fmt)) if (isdigit (*fmt))
{ {
/* Parse field width. */ /* Parse field width. */
@ -341,13 +349,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
sign_char = '-'; sign_char = '-';
cs_precedes = *_NL_CURRENT (LC_MONETARY, N_CS_PRECEDES); cs_precedes = *_NL_CURRENT (LC_MONETARY, N_CS_PRECEDES);
sep_by_space = *_NL_CURRENT (LC_MONETARY, N_SEP_BY_SPACE); sep_by_space = *_NL_CURRENT (LC_MONETARY, N_SEP_BY_SPACE);
/* If the '(' flag is not given use the sign position from sign_posn = n_sign_posn;
the current locale. */
if (n_sign_posn == -1)
sign_posn = *_NL_CURRENT (LC_MONETARY, N_SIGN_POSN);
else
/* This means use parentheses. */
sign_posn = 0;
} }
else else
{ {
@ -358,13 +360,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
sign_char = ' '; sign_char = ' ';
cs_precedes = *_NL_CURRENT (LC_MONETARY, P_CS_PRECEDES); cs_precedes = *_NL_CURRENT (LC_MONETARY, P_CS_PRECEDES);
sep_by_space = *_NL_CURRENT (LC_MONETARY, P_SEP_BY_SPACE); sep_by_space = *_NL_CURRENT (LC_MONETARY, P_SEP_BY_SPACE);
if (n_sign_posn == -1) sign_posn = p_sign_posn;
sign_posn = *_NL_CURRENT (LC_MONETARY, P_SIGN_POSN);
else
/* Here we don't set SIGN_POSN to 0 because we don'want to
print <SP> instead of the braces and this is what the
value 5 means. */
sign_posn = 5;
} }
/* Set default values for unspecified information. */ /* Set default values for unspecified information. */
@ -384,9 +380,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
startp = dest; /* Remember start so we can compute length. */ startp = dest; /* Remember start so we can compute length. */
if (sign_posn == 0) if (sign_posn == 0)
out_char (left_paren); out_char (is_negative ? left_paren : ' ');
if (sign_posn == 5) /* This is for positive number and ( flag. */
out_char (' ');
if (cs_precedes) if (cs_precedes)
{ {
@ -495,9 +489,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
} }
if (sign_posn == 0) if (sign_posn == 0)
out_char (right_paren); out_char (is_negative ? right_paren : ' ');
if (sign_posn == 5)
out_char (' '); /* This is for positive number and ( flag. */
/* Now test whether the output width is filled. */ /* Now test whether the output width is filled. */
if (dest - startp < width) if (dest - startp < width)

View File

@ -22,20 +22,15 @@
#undef __need_Emath #undef __need_Emath
#define __Emath_defined 1 #define __Emath_defined 1
# define EDOM 1 # define EDOM XXX <--- fill in what is actually needed
# define ERANGE 2 # define ERANGE XXX <--- fill in what is actually needed
#endif #endif
#ifdef _ERRNO_H #ifdef _ERRNO_H
# define ENOSYS 3 # error "Define here all the missing error messages for the port. These"
# define EINVAL 4 # error "must match the numbers of the kernel."
# define ESPIPE 5 # define Exxxx XXX
# define EBADF 6 ...
# define ENOMEM 7
# define EACCES 8
# define ENFILE 9
# define EMFILE 10
# define ENOMSG 11
#endif #endif
#define __set_errno(val) errno = (val) #define __set_errno(val) errno = (val)

View File

@ -17,6 +17,11 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <stdio.h> #include <stdio.h>
/* Include signal.h now so that we can safely reinclude it again in
signame.c later on. We completely override the definitions, we
just have to be sure that the include guard in signal.h keeps it
from redefining the signal values. */
#include <signal.h> #include <signal.h>
/* Get this configuration's defns of the signal numbers. */ /* Get this configuration's defns of the signal numbers. */
@ -32,6 +37,9 @@
#define HAVE_PSIGNAL #define HAVE_PSIGNAL
#define sys_siglist my_siglist /* Avoid clash with signal.h. */ #define sys_siglist my_siglist /* Avoid clash with signal.h. */
#undef NSIG
#define NSIG _NSIG /* make sure that the value from SIGNUM_H is used. */
#include "signame.c" #include "signame.c"

View File

@ -27,7 +27,7 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
{ {
__set_errno (ENOSYS); __set_errno (ENOSYS);
*result = NULL; *result = NULL;
return -1; return ENOSYS;
} }
weak_alias (__readdir_r, readdir_r) weak_alias (__readdir_r, readdir_r)

View File

@ -0,0 +1,62 @@
/* Copyright (C) 1991, 1994, 1996, 1997 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
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. */
/* This file defines the `errno' constants. */
#if !defined __Emath_defined && (defined _ERRNO_H || defined __need_Emath)
#undef __need_Emath
#define __Emath_defined 1
# define EDOM 1
# define ERANGE 2
#endif
#ifdef _ERRNO_H
# define ENOSYS 3
# define EINVAL 4
# define ESPIPE 5
# define EBADF 6
# define ENOMEM 7
# define EACCES 8
# define ENFILE 9
# define EMFILE 10
# define ENOMSG 11
# define ENAMETOOLONG 12
# define ELOOP 13
# define ENOMSG 14
# define E2BIG 15
# define EINTR 16
# define EILSEQ 17
# define ENOEXEC 18
# define ENOENT 19
# define EPROTOTYPE 20
# define ESRCH 21
# define EPERM 22
# define EEXIST 23
# define ENOTDIR 24
# define ESTALE 25
# define ENOTTY 26
# define EISDIR 27
# define EOPNOTSUPP 28
# define EAGAIN 29
# define EIO 30
# define ENOSPC 31
# define EBUSY 32
#endif
#define __set_errno(val) errno = (val)

View File

@ -103,6 +103,6 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
__libc_lock_unlock (dirp->lock); __libc_lock_unlock (dirp->lock);
return dp != NULL ? 0 : -1; return dp != NULL ? 0 : errno;
} }
weak_alias (__readdir_r, readdir_r) weak_alias (__readdir_r, readdir_r)

View File

@ -12,4 +12,4 @@ kernel_termios.h
sys/acct.h sys/acct.h
sys/io.h sys/io.h
sys/procfs.h sys/procfs.h
xstatconv.c xstatconv.c

View File

@ -275,7 +275,7 @@ memcpy_lowcase (dest, src, len)
size_t len; size_t len;
{ {
while (len-- > 0) while (len-- > 0)
dest[len] = TOLOWER (src[len]); dest[len] = TOLOWER ((unsigned char) src[len]);
return dest; return dest;
} }
@ -288,7 +288,7 @@ memcpy_uppcase (dest, src, len)
size_t len; size_t len;
{ {
while (len-- > 0) while (len-- > 0)
dest[len] = TOUPPER (src[len]); dest[len] = TOUPPER ((unsigned char) src[len]);
return dest; return dest;
} }
@ -348,7 +348,7 @@ iso_week_days (yday, wday)
} }
#ifndef _NL_CURRENT #if !(defined _NL_CURRENT || HAVE_STRFTIME)
static char const weekday_name[][10] = static char const weekday_name[][10] =
{ {
"Sunday", "Monday", "Tuesday", "Wednesday", "Sunday", "Monday", "Tuesday", "Wednesday",
@ -362,13 +362,27 @@ static char const month_name[][10] =
#endif #endif
#ifdef emacs
# define my_strftime emacs_strftime
/* Emacs 20.2 uses `-Dstrftime=emacs_strftime' when compiling,
because that's how strftime used to be configured.
Undo this, since it gets in the way of accessing the underlying strftime,
which is needed for things like %Ec in Solaris.
The following two lines can be removed once Emacs stops compiling with
`-Dstrftime=emacs_strftime'. */
# undef strftime
size_t strftime __P ((char *, size_t, const char *, const struct tm *));
#else
# define my_strftime strftime
#endif
#if !defined _LIBC && HAVE_TZNAME && HAVE_TZSET #if !defined _LIBC && HAVE_TZNAME && HAVE_TZSET
/* Solaris 2.5 tzset sometimes modifies the storage returned by localtime. /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime.
Work around this bug by copying *tp before it might be munged. */ Work around this bug by copying *tp before it might be munged. */
size_t _strftime_copytm __P ((char *, size_t, const char *, size_t _strftime_copytm __P ((char *, size_t, const char *,
const struct tm *)); const struct tm *));
size_t size_t
strftime (s, maxsize, format, tp) my_strftime (s, maxsize, format, tp)
char *s; char *s;
size_t maxsize; size_t maxsize;
const char *format; const char *format;
@ -378,10 +392,8 @@ static char const month_name[][10] =
tmcopy = *tp; tmcopy = *tp;
return _strftime_copytm (s, maxsize, format, &tmcopy); return _strftime_copytm (s, maxsize, format, &tmcopy);
} }
# ifdef strftime # undef my_strftime
# undef strftime # define my_strftime(S, Maxsize, Format, Tp) \
# endif
# define strftime(S, Maxsize, Format, Tp) \
_strftime_copytm (S, Maxsize, Format, Tp) _strftime_copytm (S, Maxsize, Format, Tp)
#endif #endif
@ -393,7 +405,7 @@ static char const month_name[][10] =
anywhere, so to determine how many characters would be anywhere, so to determine how many characters would be
written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */ written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */
size_t size_t
strftime (s, maxsize, format, tp) my_strftime (s, maxsize, format, tp)
char *s; char *s;
size_t maxsize; size_t maxsize;
const char *format; const char *format;
@ -411,6 +423,7 @@ strftime (s, maxsize, format, tp)
size_t am_len = strlen (a_month); size_t am_len = strlen (a_month);
size_t ap_len = strlen (ampm); size_t ap_len = strlen (ampm);
#else #else
# if !HAVE_STRFTIME
const char *const f_wkday = weekday_name[tp->tm_wday]; const char *const f_wkday = weekday_name[tp->tm_wday];
const char *const f_month = month_name[tp->tm_mon]; const char *const f_month = month_name[tp->tm_mon];
const char *const a_wkday = f_wkday; const char *const a_wkday = f_wkday;
@ -419,9 +432,12 @@ strftime (s, maxsize, format, tp)
size_t aw_len = 3; size_t aw_len = 3;
size_t am_len = 3; size_t am_len = 3;
size_t ap_len = 2; size_t ap_len = 2;
# endif
#endif #endif
#if defined _NL_CURRENT || !HAVE_STRFTIME
size_t wkday_len = strlen (f_wkday); size_t wkday_len = strlen (f_wkday);
size_t month_len = strlen (f_month); size_t month_len = strlen (f_month);
#endif
const char *zone; const char *zone;
size_t zonelen; size_t zonelen;
size_t i = 0; size_t i = 0;
@ -475,6 +491,7 @@ strftime (s, maxsize, format, tp)
int to_lowcase = 0; int to_lowcase = 0;
int to_uppcase = 0; int to_uppcase = 0;
int change_case = 0; int change_case = 0;
int format_char;
#if DO_MULTIBYTE #if DO_MULTIBYTE
@ -603,7 +620,8 @@ strftime (s, maxsize, format, tp)
} }
/* Now do the specified format. */ /* Now do the specified format. */
switch (*f) format_char = *f;
switch (format_char)
{ {
#define DO_NUMBER(d, v) \ #define DO_NUMBER(d, v) \
digits = width == -1 ? d : width; \ digits = width == -1 ? d : width; \
@ -626,8 +644,12 @@ strftime (s, maxsize, format, tp)
to_uppcase = 1; to_uppcase = 1;
to_lowcase = 0; to_lowcase = 0;
} }
#if defined _NL_CURRENT || !HAVE_STRFTIME
cpy (aw_len, a_wkday); cpy (aw_len, a_wkday);
break; break;
#else
goto underlying_strftime;
#endif
case 'A': case 'A':
if (modifier != 0) if (modifier != 0)
@ -637,15 +659,23 @@ strftime (s, maxsize, format, tp)
to_uppcase = 1; to_uppcase = 1;
to_lowcase = 0; to_lowcase = 0;
} }
#if defined _NL_CURRENT || !HAVE_STRFTIME
cpy (wkday_len, f_wkday); cpy (wkday_len, f_wkday);
break; break;
#else
goto underlying_strftime;
#endif
case 'b': case 'b':
case 'h': /* POSIX.2 extension. */ case 'h': /* POSIX.2 extension. */
if (modifier != 0) if (modifier != 0)
goto bad_format; goto bad_format;
#if defined _NL_CURRENT || !HAVE_STRFTIME
cpy (am_len, a_month); cpy (am_len, a_month);
break; break;
#else
goto underlying_strftime;
#endif
case 'B': case 'B':
if (modifier != 0) if (modifier != 0)
@ -655,8 +685,12 @@ strftime (s, maxsize, format, tp)
to_uppcase = 1; to_uppcase = 1;
to_lowcase = 0; to_lowcase = 0;
} }
#if defined _NL_CURRENT || !HAVE_STRFTIME
cpy (month_len, f_month); cpy (month_len, f_month);
break; break;
#else
goto underlying_strftime;
#endif
case 'c': case 'c':
if (modifier == 'O') if (modifier == 'O')
@ -666,32 +700,58 @@ strftime (s, maxsize, format, tp)
&& *(subfmt = _NL_CURRENT (LC_TIME, ERA_D_T_FMT)) != '\0')) && *(subfmt = _NL_CURRENT (LC_TIME, ERA_D_T_FMT)) != '\0'))
subfmt = _NL_CURRENT (LC_TIME, D_T_FMT); subfmt = _NL_CURRENT (LC_TIME, D_T_FMT);
#else #else
# if HAVE_STRFTIME
goto underlying_strftime;
# else
subfmt = "%a %b %e %H:%M:%S %Y"; subfmt = "%a %b %e %H:%M:%S %Y";
# endif
#endif #endif
subformat: subformat:
{ {
char *old_start = p; char *old_start = p;
size_t len = strftime (NULL, maxsize - i, subfmt, tp); size_t len = my_strftime (NULL, maxsize - i, subfmt, tp);
if (len == 0 && *subfmt) if (len == 0 && *subfmt)
return 0; return 0;
add (len, strftime (p, maxsize - i, subfmt, tp)); add (len, my_strftime (p, maxsize - i, subfmt, tp));
if (to_uppcase) if (to_uppcase)
while (old_start < p) while (old_start < p)
{ {
*old_start = TOUPPER (*old_start); *old_start = TOUPPER ((unsigned char) *old_start);
++old_start; ++old_start;
} }
} }
break; break;
#if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY)
underlying_strftime:
{
/* The relevant information is available only via the
underlying strftime implementation, so use that. */
char ufmt[4];
char *u = ufmt;
char ubuf[1024]; /* enough for any single format in practice */
size_t len;
*u++ = '%';
if (modifier != 0)
*u++ = modifier;
*u++ = format_char;
*u = '\0';
len = strftime (ubuf, sizeof ubuf, ufmt, tp);
if (len == 0)
return 0;
cpy (len, ubuf);
}
break;
#endif
case 'C': /* POSIX.2 extension. */ case 'C': /* POSIX.2 extension. */
if (modifier == 'O') if (modifier == 'O')
goto bad_format; goto bad_format;
#if HAVE_STRUCT_ERA_ENTRY
if (modifier == 'E') if (modifier == 'E')
{ {
#if HAVE_STRUCT_ERA_ENTRY
struct era_entry *era = _nl_get_era_entry (tp); struct era_entry *era = _nl_get_era_entry (tp);
if (era) if (era)
{ {
@ -699,8 +759,13 @@ strftime (s, maxsize, format, tp)
cpy (len, era->name_fmt); cpy (len, era->name_fmt);
break; break;
} }
} #else
# if HAVE_STRFTIME
goto underlying_strftime;
# endif
#endif #endif
}
{ {
int year = tp->tm_year + TM_YEAR_BASE; int year = tp->tm_year + TM_YEAR_BASE;
DO_NUMBER (1, year / 100 - (year % 100 < 0)); DO_NUMBER (1, year / 100 - (year % 100 < 0));
@ -714,8 +779,13 @@ strftime (s, maxsize, format, tp)
&& *(subfmt = _NL_CURRENT (LC_TIME, ERA_D_FMT)) != '\0')) && *(subfmt = _NL_CURRENT (LC_TIME, ERA_D_FMT)) != '\0'))
subfmt = _NL_CURRENT (LC_TIME, D_FMT); subfmt = _NL_CURRENT (LC_TIME, D_FMT);
goto subformat; goto subformat;
#endif #else
# if HAVE_STRFTIME
goto underlying_strftime;
# else
/* Fall through. */ /* Fall through. */
# endif
#endif
case 'D': /* POSIX.2 extension. */ case 'D': /* POSIX.2 extension. */
if (modifier != 0) if (modifier != 0)
goto bad_format; goto bad_format;
@ -745,9 +815,9 @@ strftime (s, maxsize, format, tp)
do_number: do_number:
/* Format the number according to the MODIFIER flag. */ /* Format the number according to the MODIFIER flag. */
#ifdef _NL_CURRENT
if (modifier == 'O' && 0 <= number_value) if (modifier == 'O' && 0 <= number_value)
{ {
#ifdef _NL_CURRENT
/* Get the locale specific alternate representation of /* Get the locale specific alternate representation of
the number NUMBER_VALUE. If none exist NULL is returned. */ the number NUMBER_VALUE. If none exist NULL is returned. */
const char *cp = _nl_get_alt_digit (number_value); const char *cp = _nl_get_alt_digit (number_value);
@ -761,8 +831,12 @@ strftime (s, maxsize, format, tp)
break; break;
} }
} }
} #else
# if HAVE_STRFTIME
goto underlying_strftime;
# endif
#endif #endif
}
{ {
unsigned int u = number_value; unsigned int u = number_value;
@ -852,6 +926,9 @@ strftime (s, maxsize, format, tp)
case 'P': case 'P':
to_lowcase = 1; to_lowcase = 1;
#if !defined _NL_CURRENT && HAVE_STRFTIME
format_char = 'p';
#endif
/* FALLTHROUGH */ /* FALLTHROUGH */
case 'p': case 'p':
@ -860,8 +937,12 @@ strftime (s, maxsize, format, tp)
to_uppcase = 0; to_uppcase = 0;
to_lowcase = 1; to_lowcase = 1;
} }
#if defined _NL_CURRENT || !HAVE_STRFTIME
cpy (ap_len, ampm); cpy (ap_len, ampm);
break; break;
#else
goto underlying_strftime;
#endif
case 'R': /* GNU extension. */ case 'R': /* GNU extension. */
subfmt = "%H:%M"; subfmt = "%H:%M";
@ -927,8 +1008,13 @@ strftime (s, maxsize, format, tp)
&& *(subfmt = _NL_CURRENT (LC_TIME, ERA_T_FMT)) != '\0')) && *(subfmt = _NL_CURRENT (LC_TIME, ERA_T_FMT)) != '\0'))
subfmt = _NL_CURRENT (LC_TIME, T_FMT); subfmt = _NL_CURRENT (LC_TIME, T_FMT);
goto subformat; goto subformat;
#endif #else
# if HAVE_STRFTIME
goto underlying_strftime;
# else
/* Fall through. */ /* Fall through. */
# endif
#endif
case 'T': /* POSIX.2 extension. */ case 'T': /* POSIX.2 extension. */
subfmt = "%H:%M:%S"; subfmt = "%H:%M:%S";
goto subformat; goto subformat;
@ -1000,26 +1086,30 @@ strftime (s, maxsize, format, tp)
DO_NUMBER (1, tp->tm_wday); DO_NUMBER (1, tp->tm_wday);
case 'Y': case 'Y':
#if HAVE_STRUCT_ERA_ENTRY
if (modifier == 'E') if (modifier == 'E')
{ {
#if HAVE_STRUCT_ERA_ENTRY
struct era_entry *era = _nl_get_era_entry (tp); struct era_entry *era = _nl_get_era_entry (tp);
if (era) if (era)
{ {
subfmt = strchr (era->name_fmt, '\0') + 1; subfmt = strchr (era->name_fmt, '\0') + 1;
goto subformat; goto subformat;
} }
} #else
# if HAVE_STRFTIME
goto underlying_strftime;
# endif
#endif #endif
}
if (modifier == 'O') if (modifier == 'O')
goto bad_format; goto bad_format;
else else
DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE); DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
case 'y': case 'y':
#if HAVE_STRUCT_ERA_ENTRY
if (modifier == 'E') if (modifier == 'E')
{ {
#if HAVE_STRUCT_ERA_ENTRY
struct era_entry *era = _nl_get_era_entry (tp); struct era_entry *era = _nl_get_era_entry (tp);
if (era) if (era)
{ {
@ -1027,8 +1117,12 @@ strftime (s, maxsize, format, tp)
DO_NUMBER (1, (era->offset DO_NUMBER (1, (era->offset
+ (era->direction == '-' ? -delta : delta))); + (era->direction == '-' ? -delta : delta)));
} }
} #else
# if HAVE_STRFTIME
goto underlying_strftime;
# endif
#endif #endif
}
DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100);
case 'Z': case 'Z':

View File

@ -549,10 +549,7 @@ strptime_internal (buf, format, tm, decided)
break; break;
case 'Y': case 'Y':
/* Match year including century number. */ /* Match year including century number. */
if (sizeof (time_t) > 4) get_number (0, 9999);
get_number (0, 9999);
else
get_number (0, 2036);
tm->tm_year = val - 1900; tm->tm_year = val - 1900;
break; break;
case 'Z': case 'Z':
@ -712,6 +709,7 @@ strptime_internal (buf, format, tm, decided)
case 'y': case 'y':
/* Match year within century using alternate numeric symbols. */ /* Match year within century using alternate numeric symbols. */
get_alt_number (0, 99); get_alt_number (0, 99);
tm->tm_year = val >= 69 ? val : val + 100;
break; break;
default: default:
return NULL; return NULL;

View File

@ -127,10 +127,10 @@ extern int __wcscoll_l __P ((__const wchar_t *__s1, __const wchar_t *__s2,
`wcscoll' to the original strings. */ `wcscoll' to the original strings. */
extern size_t __wcsxfrm_l __P ((wchar_t *__s1, __const wchar_t *__s2, extern size_t __wcsxfrm_l __P ((wchar_t *__s1, __const wchar_t *__s2,
size_t __n, __locale_t __loc)); size_t __n, __locale_t __loc));
#endif
/* Duplicate S, returning an identical malloc'd string. */ /* Duplicate S, returning an identical malloc'd string. */
extern wchar_t *wcsdup __P ((__const wchar_t *__s)); extern wchar_t *wcsdup __P ((__const wchar_t *__s));
#endif
/* Find the first occurrence of WC in WCS. */ /* Find the first occurrence of WC in WCS. */
extern wchar_t *wcschr __P ((__const wchar_t *__wcs, wchar_t __wc)); extern wchar_t *wcschr __P ((__const wchar_t *__wcs, wchar_t __wc));
@ -138,11 +138,11 @@ extern wchar_t *wcschr __P ((__const wchar_t *__wcs, wchar_t __wc));
extern wchar_t *wcsrchr __P ((__const wchar_t *__wcs, wchar_t __wc)); extern wchar_t *wcsrchr __P ((__const wchar_t *__wcs, wchar_t __wc));
/* Return the length of the initial segmet of WCS which /* Return the length of the initial segmet of WCS which
consists entirely of wide-characters not in REJECT. */ consists entirely of wide characters not in REJECT. */
extern size_t wcscspn __P ((__const wchar_t *__wcs, extern size_t wcscspn __P ((__const wchar_t *__wcs,
__const wchar_t *__reject)); __const wchar_t *__reject));
/* Return the length of the initial segmet of WCS which /* Return the length of the initial segmet of WCS which
consists entirely of wide-characters in ACCEPT. */ consists entirely of wide characters in ACCEPT. */
extern size_t wcsspn __P ((__const wchar_t *__wcs, __const wchar_t *__accept)); extern size_t wcsspn __P ((__const wchar_t *__wcs, __const wchar_t *__accept));
/* Find the first occurrence in WCS of any character in ACCEPT. */ /* Find the first occurrence in WCS of any character in ACCEPT. */
extern wchar_t *wcspbrk __P ((__const wchar_t *__wcs, extern wchar_t *wcspbrk __P ((__const wchar_t *__wcs,
@ -155,27 +155,27 @@ extern wchar_t *wcstok __P ((wchar_t *__restrict __s,
__const wchar_t *__restrict __delim, __const wchar_t *__restrict __delim,
wchar_t **__restrict __ptr)); wchar_t **__restrict __ptr));
/* Return the number of wide-characters in S. */ /* Return the number of wide characters in S. */
extern size_t wcslen __P ((__const wchar_t *__s)); extern size_t wcslen __P ((__const wchar_t *__s));
/* Search N bytes of S for C. */ /* Search N wide characters of S for C. */
extern wchar_t *wmemchr __P ((__const wchar_t *__s, wchar_t __c, size_t __n)); extern wchar_t *wmemchr __P ((__const wchar_t *__s, wchar_t __c, size_t __n));
/* Compare N bytes of S1 and S2. */ /* Compare N wide characters of S1 and S2. */
extern int wmemcmp __P ((__const wchar_t *__restrict __s1, extern int wmemcmp __P ((__const wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n)); __const wchar_t *__restrict __s2, size_t __n));
/* Copy N bytes of SRC to DEST. */ /* Copy N wide characters of SRC to DEST. */
extern wchar_t *wmemcpy __P ((wchar_t *__restrict __s1, extern wchar_t *wmemcpy __P ((wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n)); __const wchar_t *__restrict __s2, size_t __n));
/* Copy N bytes of SRC to DEST, guaranteeing /* Copy N wide characters of SRC to DEST, guaranteeing
correct behavior for overlapping strings. */ correct behavior for overlapping strings. */
extern wchar_t *wmemmove __P ((wchar_t *__s1, __const wchar_t *__s2, extern wchar_t *wmemmove __P ((wchar_t *__s1, __const wchar_t *__s2,
size_t __n)); size_t __n));
/* Set N bytes of S to C. */ /* Set N wide characters of S to C. */
extern wchar_t *wmemset __P ((wchar_t *__s, wchar_t __c, size_t __n)); extern wchar_t *wmemset __P ((wchar_t *__s, wchar_t __c, size_t __n));