]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update. cvs/libc-ud-971103
authorUlrich Drepper <drepper@redhat.com>
Tue, 4 Nov 1997 03:00:40 +0000 (03:00 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 4 Nov 1997 03:00:40 +0000 (03:00 +0000)
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).

28 files changed:
BUGS
ChangeLog
assert/Makefile
assert/assert-perr.c
bits/errno.h
configure
configure.in
ctype/Makefile
elf/dl-error.c
elf/dl-lookup.c
elf/rtld.c
glibcbug.in
grp/Makefile
intl/localealias.c
libc.map
manual/creature.texi
manual/filesys.texi
pwd/Makefile
stdlib/strfmon.c
sysdeps/generic/bits/errno.h
sysdeps/generic/make_siglist.c
sysdeps/generic/readdir_r.c
sysdeps/standalone/bits/errno.h [new file with mode: 0644]
sysdeps/unix/readdir_r.c
sysdeps/unix/sysv/linux/alpha/Dist
time/strftime.c
time/strptime.c
wcsmbs/wchar.h

diff --git a/BUGS b/BUGS
index 701acf0e0022440d96268db517bc875a7b482826..efe407b4c5ff912f5d71aef5d7f5b1989ae3541e 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,7 +1,7 @@
            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
 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
        category.
        [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
 drepper@cygnus.com
index 1b9fa7de1ada26f446add6ea3c401e672a79099d..6b54555f5ec0cba8dbcd4fb74e4442c39c87324e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * 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
-       non-directories in the list (PR203).
+       non-directories in the list (PR 203).
 
        * posix/glob.h (GLOB_ONLYDIR): New flag.
        (__GLOB_FLAGS): Add GLOB_ONLYDIR.
index 208a71a9480e900d72c30bde1fa1d6ee9f319a5a..57804575026c0db3bd671664df0c80098e2a3990 100644 (file)
@@ -20,6 +20,7 @@
 #      Sub-makefile for assert portion of the library.
 #
 subdir := assert
+headers        := assert.h
 
 routines := assert assert-perr
 
index c62ae467acf75766ab4546fe86d39b092eff99c3..246727ee94617ce132dc2fc37b8bb22e13cf152d 100644 (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.
 
    The GNU C Library is free software; you can redistribute it and/or
 #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.  */
 
 /* This function, when passed an error number, a filename, and a line
@@ -49,7 +53,7 @@ __assert_perror_fail (int errnum,
                  __assert_program_name ? ": " : "",
                  file, line,
                  function ? function : "", function ? ": " : "",
-                 __strerror_r (errnum, errbuf, sizeof errbuf));
+                 _strerror_internal (errnum, errbuf, sizeof errbuf));
   (void) fflush (stderr);
 
   abort ();
index cb61da78365e4dfe9dc0a494850868c8a282e600..622c2c9de446e501a21a186cfcff8ef924c246b0 100644 (file)
 #undef __need_Emath
 #define        __Emath_defined 1
 
-# define EDOM  1
-# define ERANGE        2
+# define EDOM  XXX     <--- fill in what is actually needed
+# define ERANGE        XXX     <--- fill in what is actually needed
 #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
+# error "Define here all the missing error messages for the port.  These"
+# error "must match the numbers of the kernel."
+# define Exxxx XXX
+...
 #endif
 
 #define __set_errno(val) errno = (val)
index 3b1a1390e91a4fec4819f9ca8418f8c97f0d82dc..2955226441a9bb534bcdf0f06a1564b2830e5f22 100755 (executable)
--- a/configure
+++ b/configure
@@ -558,14 +558,6 @@ else
   ac_n= ac_c='\c' ac_t=
 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
 
 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
 case "$host_alias" in
@@ -879,7 +871,7 @@ fi
 # This can take a while to compute.
 sysdep_dir=$srcdir/sysdeps
 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.
 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"
 # ./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 "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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1134,7 +1126,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
   INSTALL='\$(..)./install-sh -c'
 fi
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1159,7 +1151,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1192,7 +1184,7 @@ test -n "$MSGFMT" || MSGFMT=":"
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 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.
 set dummy cc; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1269,7 +1261,7 @@ fi
 fi
 
 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
 # 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
 
 cat > conftest.$ac_ext <<EOF
-#line 1283 "configure"
+#line 1275 "configure"
 #include "confdefs.h"
 main(){return(0);}
 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
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1306,13 +1298,13 @@ else
  cross_linkable=yes
 fi
 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
 
 cross_compiling=$ac_cv_prog_cc_cross
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1321,7 +1313,7 @@ else
   yes;
 #endif
 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
 else
   ac_cv_prog_gcc=no
@@ -1338,7 +1330,7 @@ if test $ac_cv_prog_gcc = yes; then
   yes;
 #endif
 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
       CFLAGS="-g -O2"
     fi
@@ -1350,7 +1342,7 @@ else
 fi
 
 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
 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.
 set dummy $ac_prog; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1404,7 +1396,7 @@ done
 fi
 
 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.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1419,13 +1411,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1423 "configure"
+#line 1415 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 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`
 if test -z "$ac_err"; then
   :
@@ -1436,13 +1428,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1440 "configure"
+#line 1432 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 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`
 if test -z "$ac_err"; then
   :
@@ -1475,7 +1467,7 @@ LD=`$CC -print-file-name=ld`
 
 # Determine whether we are using GNU binutils.
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1493,7 +1485,7 @@ rm -f a.out
 gnu_as=$libc_cv_prog_as_gnu
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1517,7 +1509,7 @@ fi
 # 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
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1548,7 +1540,7 @@ fi
 # 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
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 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.
 set dummy ranlib; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1614,7 +1606,7 @@ fi
 # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 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.
 set dummy ksh; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1701,7 +1693,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1736,7 +1728,7 @@ test -n "$PERL" || PERL="no"
 
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1760,12 +1752,12 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1769 "configure"
+#line 1761 "configure"
 #include "confdefs.h"
 #define __need_size_t
 #define __need_wchar_t
@@ -1780,7 +1772,7 @@ size_t size; wchar_t wchar;
 if (&size == NULL || &wchar == NULL) abort ();
 ; return 0; }
 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*
   libc_cv_friendly_stddef=yes
 else
@@ -1799,7 +1791,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 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."
 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 "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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1852,7 +1880,7 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1886,7 +1914,7 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1905,7 +1933,7 @@ fi
 
 echo "$ac_t""$libc_cv_asm_symver_directive" 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1924,7 +1952,7 @@ EOF
     if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
                                        -nostartfiles -nostdlib
                                        -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
       libc_cv_ld_version_script_option=yes
     else
@@ -1955,7 +1983,7 @@ fi
 
 if test $elf = yes; then
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1963,7 +1991,7 @@ else
 .section foo_section
 .previous
 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
   else
     libc_cv_asm_previous_directive=no
@@ -1979,7 +2007,7 @@ EOF
 
   else
     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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1987,7 +2015,7 @@ else
 .pushsection foo_section
 .popsection
 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
     else
       libc_cv_asm_popsection_directive=no
@@ -2007,12 +2035,12 @@ fi
 
 if test $elf != yes; then
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2016 "configure"
+#line 2044 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2021,7 +2049,7 @@ asm (".section .init");
                                    asm (".text");
 ; return 0; }
 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*
   libc_cv_have_initfini=yes
 else
@@ -2049,19 +2077,19 @@ if test $elf = yes; then
 else
   if test $ac_cv_prog_cc_works = yes; then
     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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2058 "configure"
+#line 2086 "configure"
 #include "confdefs.h"
 asm ("_glibc_foobar:");
 int main() {
 glibc_foobar ();
 ; return 0; }
 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*
   libc_cv_asm_underscores=yes
 else
@@ -2076,17 +2104,17 @@ fi
 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
   else
     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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2085 "configure"
+#line 2113 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 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
     rm -f conftest*
     libc_cv_asm_underscores=yes
@@ -2119,7 +2147,7 @@ if test $elf = yes; then
   libc_cv_asm_weakext_directive=no
 else
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2142,7 +2170,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
 
 if test $libc_cv_asm_weak_directive = no; then
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2179,7 +2207,7 @@ EOF
 fi
 
 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2190,7 +2218,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
                            -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
 else
   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_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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2212,7 +2240,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
                            -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
 else
   libc_cv_gcc_no_exceptions=no
@@ -2223,12 +2251,12 @@ fi
 echo "$ac_t""$libc_cv_gcc_no_exceptions" 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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 2232 "configure"
+#line 2260 "configure"
 static char __EH_FRAME_BEGIN__;
 _start ()
 {
@@ -2249,7 +2277,7 @@ __bzero () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
                            -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
 else
   libc_cv_gcc_dwarf2_unwind_info=no
@@ -2307,7 +2335,7 @@ if test "$uname" = "sysdeps/generic"; then
   fi
 
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2329,7 +2357,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
   uname_release="$libc_cv_uname_release"
 
   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
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2351,7 +2379,7 @@ else
 fi
 
 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
 libio) cat >> confdefs.h <<\EOF
@@ -2363,7 +2391,7 @@ esac
 echo "$ac_t""$stdio" 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
 *ldap*)
@@ -2428,6 +2456,21 @@ fi
 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
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -2867,10 +2910,16 @@ while test -n "$ac_sources"; do
 done
 EOF
 cat >> $CONFIG_STATUS <<EOF
+realCC=$realCC
 echo '$config_vars' >> config.make; test -d bits || mkdir bits
 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
 EOF
 chmod +x $CONFIG_STATUS
index 3f810bd1a83eaa46b8b567ab2fa6a2c0578702a9..d0659bf478d98a8a8cd5e9d0ea5e41addc679c17 100644 (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."
 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,
               libc_cv_asm_global_directive, [dnl
 libc_cv_asm_global_directive=UNKNOWN
@@ -958,5 +987,16 @@ fi
 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
 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}, ,
           [echo '$config_vars' >> config.make; test -d bits || mkdir bits])
index a17ce2c4459c328588733f41f5490d28edf0424f..8907db8eab32482c03eaa363dd1ff5cd3cee27bb 100644 (file)
@@ -20,6 +20,7 @@
 #      Sub-makefile for ctype portion of the library.
 #
 subdir := ctype
+headers        := ctype.h
 
 routines       := ctype ctype-extn ctype_l
 aux            := ctype-info
index 72af85985da5c53887c5425295381ffb170f57bd..5e76d7d7d81c816272ff53e70df6358ac10fedab 100644 (file)
@@ -23,6 +23,9 @@
 #include <stdlib.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
    _dl_signal_error.  */
 struct catch
@@ -74,11 +77,14 @@ _dl_signal_error (int errcode,
     {
       /* Lossage while resolving the program's own symbols is always fatal.  */
       extern char **_dl_argv;  /* Set in rtld.c at startup.  */
+      char buffer[1024];
       _dl_sysdep_fatal (_dl_argv[0] ?: "<program name unknown>",
                        ": error in loading shared libraries: ",
                        objname ?: "", objname ? ": " : "",
                        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
      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.  */
   c.errstring = NULL;
   c.objname   = NULL;
index 2ec7e3a44605fa9173b08de58f5a5023fd62d9cd..ef344794c5476289f55283b3862fbb515c8081cc 100644 (file)
@@ -279,6 +279,7 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
                             const struct r_found_version *version,
                             int reloc_type)
 {
+  extern char **_dl_argv;
   const unsigned long int hash = _dl_elf_hash (undef_name);
   struct sym_val current_value = { 0, NULL };
   struct link_map **scope;
@@ -295,7 +296,9 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
       if (res < 0)
        /* Oh, oh.  The file named in the relocation entry does not
           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 ",
                                       version->name,
                                       " not defined in file ",
index 48d8575c891df1ac14921eb8fd2b8b8d1a5389d1..b1538aa893fa4f9fb8da30d704662a1842b34f32 100644 (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.
         This will be what dlopen on "" returns.  */
-      main_map = _dl_new_object (_dl_argv[0] ?: (char *) "<main program>",
-                                "", lt_executable);
+      main_map = _dl_new_object ((char *) "", "", lt_executable);
       if (main_map == NULL)
        _dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL);
       main_map->l_phdr = phdr;
index 1d7eed760477b9b1f03d7bbdf6aac4604b62f661..69496b6e1ab1f0752a30004511ef5b1b71f4193f 100644 (file)
@@ -8,6 +8,7 @@
 VERSION="@VERSION@"
 BUGGLIBC="bugs@gnu.org"
 ADDONS="@subdirs@"
+HOST="@host@"
 
 PATH=/bin:/usr/bin:/usr/local/bin:$PATH
 export PATH
@@ -119,6 +120,7 @@ ${ORGANIZATION- $ORGANIZATION_C}
 >Release:      libc-${VERSION}
 >Environment:
        $ENVIRONMENT_C
+`[ -n "$HOST" ] && echo Host type: $HOST`
 `[ -n "$SYSTEM" ] && echo System: $SYSTEM`
 `[ -n "$ARCH" ] && echo Architecture: $ARCH`
 `[ -n "$MACHINE" ] && echo Machine: $MACHINE`
index 20b58fb08cf1bf11d8ccd331fd32295373ce590c..8c63a4c65e11c52eb62db040b615adc5ed3683f3 100644 (file)
@@ -20,6 +20,7 @@
 #      Sub-makefile for grp portion of the library.
 #
 subdir := grp
+headers := grp.h
 
 routines := fgetgrent initgroups setgroups \
            getgrent getgrgid getgrnam \
index 05832f0e368b428dc0c5dbfd1531a6d05c023fce..58ed2708aec988b39bee771629533aa1d07f6e68 100644 (file)
@@ -84,6 +84,9 @@ void free ();
 # define strcasecmp __strcasecmp
 # define strdup __strdup
 
+# define mempcpy __mempcpy
+# define HAVE_MEMPCPY  1
+
 /* We need locking here since we can be called from different palces.  */
 # include <bits/libc-lock.h>
 
@@ -231,8 +234,13 @@ read_alias_file (fname, fname_len)
 
   full_fname = (char *) alloca (fname_len + sizeof aliasfile);
   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_len], aliasfile, sizeof aliasfile);
+#endif
 
   fp = fopen (full_fname, "r");
   if (fp == NULL)
@@ -254,10 +262,23 @@ read_alias_file (fname, fname_len)
       char *value;
       char *cp;
 
-      if (fgets (buf, BUFSIZ, fp) == NULL)
+      if (fgets (buf, sizeof buf, fp) == NULL)
        /* EOF reached.  */
        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;
       /* Ignore leading white space.  */
       while (isspace (cp[0]))
@@ -324,7 +345,7 @@ read_alias_file (fname, fname_len)
                                        alias, 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);
              string_space_act += value_len;
 
@@ -332,17 +353,6 @@ read_alias_file (fname, fname_len)
              ++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
index 57ac588ae352538a9a678c755980930775f5138e..d77be204394bab72ccbff04257c7b9c7f1b5ac49 100644 (file)
--- a/libc.map
+++ b/libc.map
@@ -86,7 +86,7 @@ GLIBC_2.0 {
     _IO_seekmark; _IO_unsave_markers; _IO_str_overflow;
     _IO_str_underflow; _IO_str_init_static; _IO_str_init_readonly;
     _IO_str_seekoff; _IO_str_pbackfail; _IO_file_jumps;
-    _IO_peekc_locked;
+    _IO_peekc_locked; _IO_flockfile; _IO_funlockfile;
     __vsscanf; __vfscanf; __vsnprintf;
     _rpc_dtablesize; _null_auth; _seterr_reply;
     __res_randomid;
index 03f79ede967032fef70006db9dae50100fbc2ddf..1efd1f5a7d1d840e5c8bb69dc5c275fbc0e22b0c 100644 (file)
@@ -25,17 +25,36 @@ self-contained way.
 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
 @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
 
 @comment (none)
 @comment POSIX.2
-@defvr Macro _POSIX_C_SOURCE
-If you define this macro with a value of @code{1}, then the
-functionality from the POSIX.1 standard (IEEE Standard 1003.1) is made
-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
-the POSIX.2 standard (IEEE Standard 1003.2) are made available.  This is
-in addition to the @w{ISO C} facilities.
+Define this macro to a positive integer to control which POSIX
+functionality is made available.  The greater the value of this macro,
+the more functionality is made available.
+
+If you define this macro to a value greater than or equal to @code{1},
+then the functionality from the 1990 edition of the POSIX.1 standard
+(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
 value @code{199506L} selects all the values specified by the POSIX
index c33bad892e1b3b5e3bf610293f0fb8641128e3a3..2921a53111d76e2fb0c5aebfc3b9f64218eaddd9 100644 (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
 *@var{result}.  It is not required that *@var{result} is the same as
 @var{entry}.  If something goes wrong while executing @code{readdir_r}
-the function returns @code{-1}.  The @code{errno} variable is set like
-described for @code{readdir}.
+the function returns a value indicating the error (as described for
+@code{readdir}).
 
 @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}
index 337263246b5768ce56da04f44922a80aa505a58b..6b3eeab61aa8a6150d7adf9048bf9a33ea0ab2d2 100644 (file)
@@ -20,6 +20,7 @@
 #      Sub-makefile for pwd portion of the library.
 #
 subdir := pwd
+headers := pwd.h
 
 routines := fgetpwent getpw putpwent \
            getpwent getpwnam getpwuid \
index c956ae3040339d88f6ae255a231c6672692afe31..4f8b5b70afab31c3e8ce81217a573df72478564a 100644 (file)
@@ -204,7 +204,8 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
                  va_end (ap);
                  return -1;
                }
-             n_sign_posn = 5;  /* This is a else unused value.  */
+             p_sign_posn = 0;
+             n_sign_posn = 0;
              continue;
            case '!':                   /* Don't print the currency symbol.  */
              print_curr_symbol = 0;
@@ -218,6 +219,13 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
          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))
        {
          /* Parse field width.  */
@@ -341,13 +349,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
            sign_char = '-';
          cs_precedes = *_NL_CURRENT (LC_MONETARY, N_CS_PRECEDES);
          sep_by_space = *_NL_CURRENT (LC_MONETARY, N_SEP_BY_SPACE);
-         /* If the '(' flag is not given use the sign position from
-            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;
+         sign_posn = n_sign_posn;
        }
       else
        {
@@ -358,13 +360,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
            sign_char = ' ';
          cs_precedes = *_NL_CURRENT (LC_MONETARY, P_CS_PRECEDES);
          sep_by_space = *_NL_CURRENT (LC_MONETARY, P_SEP_BY_SPACE);
-         if (n_sign_posn == -1)
-           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;
+         sign_posn = p_sign_posn;
        }
 
       /* 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.  */
 
       if (sign_posn == 0)
-       out_char (left_paren);
-      if (sign_posn == 5)      /* This is for positive number and ( flag.  */
-       out_char (' ');
+       out_char (is_negative ? left_paren : ' ');
 
       if (cs_precedes)
        {
@@ -495,9 +489,7 @@ __strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
          }
 
       if (sign_posn == 0)
-       out_char (right_paren);
-      if (sign_posn == 5)
-       out_char (' ');         /* This is for positive number and ( flag.  */
+       out_char (is_negative ? right_paren : ' ');
 
       /* Now test whether the output width is filled.  */
       if (dest - startp < width)
index cb61da78365e4dfe9dc0a494850868c8a282e600..622c2c9de446e501a21a186cfcff8ef924c246b0 100644 (file)
 #undef __need_Emath
 #define        __Emath_defined 1
 
-# define EDOM  1
-# define ERANGE        2
+# define EDOM  XXX     <--- fill in what is actually needed
+# define ERANGE        XXX     <--- fill in what is actually needed
 #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
+# error "Define here all the missing error messages for the port.  These"
+# error "must match the numbers of the kernel."
+# define Exxxx XXX
+...
 #endif
 
 #define __set_errno(val) errno = (val)
index b670baf434ed482237c5488b62ba16369a17f1cc..2cfd4988dde33197f3266368f60fa5fbb3cab4cd 100644 (file)
    Boston, MA 02111-1307, USA.  */
 
 #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>
 
 /* Get this configuration's defns of the signal numbers.  */
@@ -32,6 +37,9 @@
 #define HAVE_PSIGNAL
 #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"
 
 
index ae14d18160e800c1974fa2225c770692d29c1f36..41bf87fca211d3fd1d7091da2dbfe93c017296c4 100644 (file)
@@ -27,7 +27,7 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
 {
   __set_errno (ENOSYS);
   *result = NULL;
-  return -1;
+  return ENOSYS;
 }
 weak_alias (__readdir_r, readdir_r)
 
diff --git a/sysdeps/standalone/bits/errno.h b/sysdeps/standalone/bits/errno.h
new file mode 100644 (file)
index 0000000..30eec43
--- /dev/null
@@ -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)
index fa26db6381f68850e1f6a7c2e5d0cf24cabea804..a4462f73e77b1ab7c5b9dd1cdbf845257aacfb90 100644 (file)
@@ -103,6 +103,6 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
 
   __libc_lock_unlock (dirp->lock);
 
-  return dp != NULL ? 0 : -1;
+  return dp != NULL ? 0 : errno;
 }
 weak_alias (__readdir_r, readdir_r)
index ebbf300eaccbf63c77ab71e5d31e44c841522b3e..715fda7bd3280f38b88bd6878c373d95d9de230a 100644 (file)
@@ -12,4 +12,4 @@ kernel_termios.h
 sys/acct.h
 sys/io.h
 sys/procfs.h
-xstatconv.c
\ No newline at end of file
+xstatconv.c
index 1da36e12d6d489f77acd387911e897120ff1ab48..fdf0500a9243ccf1c75c5649feaba3720d67aee7 100644 (file)
@@ -275,7 +275,7 @@ memcpy_lowcase (dest, src, len)
      size_t len;
 {
   while (len-- > 0)
-    dest[len] = TOLOWER (src[len]);
+    dest[len] = TOLOWER ((unsigned char) src[len]);
   return dest;
 }
 
@@ -288,7 +288,7 @@ memcpy_uppcase (dest, src, len)
      size_t len;
 {
   while (len-- > 0)
-    dest[len] = TOUPPER (src[len]);
+    dest[len] = TOUPPER ((unsigned char) src[len]);
   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] =
   {
     "Sunday", "Monday", "Tuesday", "Wednesday",
@@ -362,13 +362,27 @@ static char const month_name[][10] =
 #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
   /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime.
      Work around this bug by copying *tp before it might be munged.  */
   size_t _strftime_copytm __P ((char *, size_t, const char *,
                                const struct tm *));
   size_t
-  strftime (s, maxsize, format, tp)
+  my_strftime (s, maxsize, format, tp)
       char *s;
       size_t maxsize;
       const char *format;
@@ -378,10 +392,8 @@ static char const month_name[][10] =
     tmcopy = *tp;
     return _strftime_copytm (s, maxsize, format, &tmcopy);
   }
-# ifdef strftime
-#  undef strftime
-# endif
-# define strftime(S, Maxsize, Format, Tp) \
+# undef my_strftime
+# define my_strftime(S, Maxsize, Format, Tp) \
   _strftime_copytm (S, Maxsize, Format, Tp)
 #endif
 
@@ -393,7 +405,7 @@ static char const month_name[][10] =
    anywhere, so to determine how many characters would be
    written, use NULL for S and (size_t) UINT_MAX for MAXSIZE.  */
 size_t
-strftime (s, maxsize, format, tp)
+my_strftime (s, maxsize, format, tp)
       char *s;
       size_t maxsize;
       const char *format;
@@ -411,6 +423,7 @@ strftime (s, maxsize, format, tp)
   size_t am_len = strlen (a_month);
   size_t ap_len = strlen (ampm);
 #else
+# if !HAVE_STRFTIME
   const char *const f_wkday = weekday_name[tp->tm_wday];
   const char *const f_month = month_name[tp->tm_mon];
   const char *const a_wkday = f_wkday;
@@ -419,9 +432,12 @@ strftime (s, maxsize, format, tp)
   size_t aw_len = 3;
   size_t am_len = 3;
   size_t ap_len = 2;
+# endif
 #endif
+#if defined _NL_CURRENT || !HAVE_STRFTIME
   size_t wkday_len = strlen (f_wkday);
   size_t month_len = strlen (f_month);
+#endif
   const char *zone;
   size_t zonelen;
   size_t i = 0;
@@ -475,6 +491,7 @@ strftime (s, maxsize, format, tp)
       int to_lowcase = 0;
       int to_uppcase = 0;
       int change_case = 0;
+      int format_char;
 
 #if DO_MULTIBYTE
 
@@ -603,7 +620,8 @@ strftime (s, maxsize, format, tp)
        }
 
       /* Now do the specified format.  */
-      switch (*f)
+      format_char = *f;
+      switch (format_char)
        {
 #define DO_NUMBER(d, v) \
          digits = width == -1 ? d : width;                                   \
@@ -626,8 +644,12 @@ strftime (s, maxsize, format, tp)
              to_uppcase = 1;
              to_lowcase = 0;
            }
+#if defined _NL_CURRENT || !HAVE_STRFTIME
          cpy (aw_len, a_wkday);
          break;
+#else
+         goto underlying_strftime;
+#endif
 
        case 'A':
          if (modifier != 0)
@@ -637,15 +659,23 @@ strftime (s, maxsize, format, tp)
              to_uppcase = 1;
              to_lowcase = 0;
            }
+#if defined _NL_CURRENT || !HAVE_STRFTIME
          cpy (wkday_len, f_wkday);
          break;
+#else
+         goto underlying_strftime;
+#endif
 
        case 'b':
        case 'h':               /* POSIX.2 extension.  */
          if (modifier != 0)
            goto bad_format;
+#if defined _NL_CURRENT || !HAVE_STRFTIME
          cpy (am_len, a_month);
          break;
+#else
+         goto underlying_strftime;
+#endif
 
        case 'B':
          if (modifier != 0)
@@ -655,8 +685,12 @@ strftime (s, maxsize, format, tp)
              to_uppcase = 1;
              to_lowcase = 0;
            }
+#if defined _NL_CURRENT || !HAVE_STRFTIME
          cpy (month_len, f_month);
          break;
+#else
+         goto underlying_strftime;
+#endif
 
        case 'c':
          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, D_T_FMT);
 #else
+# if HAVE_STRFTIME
+         goto underlying_strftime;
+# else
          subfmt = "%a %b %e %H:%M:%S %Y";
+# endif
 #endif
 
        subformat:
          {
            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)
              return 0;
-           add (len, strftime (p, maxsize - i, subfmt, tp));
+           add (len, my_strftime (p, maxsize - i, subfmt, tp));
 
            if (to_uppcase)
              while (old_start < p)
                {
-                 *old_start = TOUPPER (*old_start);
+                 *old_start = TOUPPER ((unsigned char) *old_start);
                  ++old_start;
                }
          }
          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.  */
          if (modifier == 'O')
            goto bad_format;
-#if HAVE_STRUCT_ERA_ENTRY
          if (modifier == 'E')
            {
+#if HAVE_STRUCT_ERA_ENTRY
              struct era_entry *era = _nl_get_era_entry (tp);
              if (era)
                {
@@ -699,8 +759,13 @@ strftime (s, maxsize, format, tp)
                  cpy (len, era->name_fmt);
                  break;
                }
-           }
+#else
+# if HAVE_STRFTIME
+             goto underlying_strftime;
+# endif
 #endif
+           }
+
          {
            int year = tp->tm_year + TM_YEAR_BASE;
            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, D_FMT);
          goto subformat;
-#endif
+#else
+# if HAVE_STRFTIME
+         goto underlying_strftime;
+# else
          /* Fall through.  */
+# endif
+#endif
        case 'D':               /* POSIX.2 extension.  */
          if (modifier != 0)
            goto bad_format;
@@ -745,9 +815,9 @@ strftime (s, maxsize, format, tp)
        do_number:
          /* Format the number according to the MODIFIER flag.  */
 
-#ifdef _NL_CURRENT
          if (modifier == 'O' && 0 <= number_value)
            {
+#ifdef _NL_CURRENT
              /* Get the locale specific alternate representation of
                 the number NUMBER_VALUE.  If none exist NULL is returned.  */
              const char *cp = _nl_get_alt_digit (number_value);
@@ -761,8 +831,12 @@ strftime (s, maxsize, format, tp)
                      break;
                    }
                }
-           }
+#else
+# if HAVE_STRFTIME
+             goto underlying_strftime;
+# endif
 #endif
+           }
          {
            unsigned int u = number_value;
 
@@ -852,6 +926,9 @@ strftime (s, maxsize, format, tp)
 
        case 'P':
          to_lowcase = 1;
+#if !defined _NL_CURRENT && HAVE_STRFTIME
+         format_char = 'p';
+#endif
          /* FALLTHROUGH */
 
        case 'p':
@@ -860,8 +937,12 @@ strftime (s, maxsize, format, tp)
              to_uppcase = 0;
              to_lowcase = 1;
            }
+#if defined _NL_CURRENT || !HAVE_STRFTIME
          cpy (ap_len, ampm);
          break;
+#else
+         goto underlying_strftime;
+#endif
 
        case 'R':               /* GNU extension.  */
          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, T_FMT);
          goto subformat;
-#endif
+#else
+# if HAVE_STRFTIME
+         goto underlying_strftime;
+# else
          /* Fall through.  */
+# endif
+#endif
        case 'T':               /* POSIX.2 extension.  */
          subfmt = "%H:%M:%S";
          goto subformat;
@@ -1000,26 +1086,30 @@ strftime (s, maxsize, format, tp)
          DO_NUMBER (1, tp->tm_wday);
 
        case 'Y':
-#if HAVE_STRUCT_ERA_ENTRY
          if (modifier == 'E')
            {
+#if HAVE_STRUCT_ERA_ENTRY
              struct era_entry *era = _nl_get_era_entry (tp);
              if (era)
                {
                  subfmt = strchr (era->name_fmt, '\0') + 1;
                  goto subformat;
                }
-           }
+#else
+# if HAVE_STRFTIME
+             goto underlying_strftime;
+# endif
 #endif
+           }
          if (modifier == 'O')
            goto bad_format;
          else
            DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
 
        case 'y':
-#if HAVE_STRUCT_ERA_ENTRY
          if (modifier == 'E')
            {
+#if HAVE_STRUCT_ERA_ENTRY
              struct era_entry *era = _nl_get_era_entry (tp);
              if (era)
                {
@@ -1027,8 +1117,12 @@ strftime (s, maxsize, format, tp)
                  DO_NUMBER (1, (era->offset
                                 + (era->direction == '-' ? -delta : delta)));
                }
-           }
+#else
+# if HAVE_STRFTIME
+             goto underlying_strftime;
+# endif
 #endif
+           }
          DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100);
 
        case 'Z':
index 30b015620d0e5b778adec43c7ec308b2fa72b5ea..36f42c9355dc74609ac1f565ead729ca1f6fcac7 100644 (file)
@@ -549,10 +549,7 @@ strptime_internal (buf, format, tm, decided)
          break;
        case 'Y':
          /* Match year including century number.  */
-         if (sizeof (time_t) > 4)
-           get_number (0, 9999);
-         else
-           get_number (0, 2036);
+         get_number (0, 9999);
          tm->tm_year = val - 1900;
          break;
        case 'Z':
@@ -712,6 +709,7 @@ strptime_internal (buf, format, tm, decided)
            case 'y':
              /* Match year within century using alternate numeric symbols.  */
              get_alt_number (0, 99);
+             tm->tm_year = val >= 69 ? val : val + 100;
              break;
            default:
              return NULL;
index c7ab5094488ebcbb79cdaa1b583319f455c20540..82e51faf62e44547d66da3f681ba92fc9c3bdd3e 100644 (file)
@@ -127,10 +127,10 @@ extern int __wcscoll_l __P ((__const wchar_t *__s1, __const wchar_t *__s2,
    `wcscoll' to the original strings.  */
 extern size_t __wcsxfrm_l __P ((wchar_t *__s1, __const wchar_t *__s2,
                                size_t __n, __locale_t __loc));
-#endif
 
 /* Duplicate S, returning an identical malloc'd string.  */
 extern wchar_t *wcsdup __P ((__const wchar_t *__s));
+#endif
 
 /* Find the first occurrence of WC in WCS.  */
 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));
 
 /* 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,
                            __const wchar_t *__reject));
 /* 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));
 /* Find the first occurrence in WCS of any character in ACCEPT.  */
 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,
                             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));
 
 
-/* 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));
 
-/* Compare N bytes of S1 and S2.  */
+/* Compare N wide characters of S1 and S2.  */
 extern int wmemcmp __P ((__const wchar_t *__restrict __s1,
                         __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,
                              __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.  */
 extern wchar_t *wmemmove __P ((wchar_t *__s1, __const wchar_t *__s2,
                               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));