summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog39
-rw-r--r--FAQ.in8
-rw-r--r--NEWS6
-rw-r--r--PROJECTS8
-rw-r--r--README-alpha4
-rw-r--r--README.template2
-rw-r--r--libio/strops.c84
-rw-r--r--locale/iso-4217.def2
-rw-r--r--manual/maint.texi8
-rw-r--r--manual/texinfo.tex336
-rw-r--r--nscd/nscd_getgr_r.c7
-rw-r--r--nscd/nscd_getpw_r.c7
-rw-r--r--posix/getconf.c12
-rw-r--r--sysdeps/posix/fpathconf.c20
-rw-r--r--sysdeps/posix/pathconf.c20
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h41
17 files changed, 377 insertions, 229 deletions
diff --git a/ChangeLog b/ChangeLog
index c250d0788b..dfa32c7fb3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,42 @@
+1998-03-04 16:12  H.J. Lu  <hjl@gnu.org>
+
+	* libio/strops.c (_IO_str_seekoff): Handle MODE == 0.
+
+1998-03-04 16:19  Ulrich Drepper  <drepper@cygnus.com>
+
+	* nscd/nscd_getgr_r.c: Follow nscd_getpw_r.c change.
+
+1998-03-04  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* nscd/nscd_getpw_r.c (nscd_open_socket): Safe and reset errno so
+	that a failure to connect to nscd doesn't change errno.
+
+1998-03-04  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* manual/maint.texi (Reporting Bugs): Change
+	bug-glibc@prep.ai.mit.edu to bug-glibc@gnu.org.
+
+	* locale/iso-4217.def: Likewise
+
+1998-03-04 12:43  Ulrich Drepper  <drepper@cygnus.com>
+
+	* manual/texinfo.tex: Updated.
+
+1998-03-03  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* sysdeps/posix/fpathconf.c: Don't modify errno for an undefined
+	value.
+	* sysdeps/posix/pathconf.c: Likewise.
+	* posix/getconf.c: Print `undefined' if pathconf returns -1
+	without setting errno.
+
+1998-03-04  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Fix cut&paste
+	problem.
+	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: New file.
+	Patches by Elliot Lee <sopwith@cuc.edu>.
+
 1998-03-04 09:43  Ulrich Drepper  <drepper@cygnus.com>
 
 	* elf/link.h (struct link_map): Add new field l_reloc_result.
diff --git a/FAQ.in b/FAQ.in
index fb3e5ac235..32c35ebaf0 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -50,8 +50,8 @@ you are really interested in porting it, contact
 GNU CC are used to increase portability and speed.
 
 GNU CC is found, like all other GNU packages, on
-	ftp://prep.ai.mit.edu/pub/gnu
-and the many mirror sites.  prep is always overloaded, so try to find
+	ftp://ftp.gnu.org/pub/gnu
+and the many mirror sites.  ftp.gnu.org is always overloaded, so try to find
 a local mirror first.
 
 You always should try to use the latest official release.  Older
@@ -114,7 +114,7 @@ in configparms.  Later versions of egcs may fix these problems.
 
 * GNU gettext.  This package contains the tools needed to construct
   `message catalog' files containing translated versions of system
-  messages. See ftp://prep.ai.mit.edu/pub/gnu or better any mirror
+  messages. See ftp://ftp.gnu.org/pub/gnu or better any mirror
   site.  (We distribute compiled message catalogs, but they may not be
   updated in patches.)
 
@@ -882,7 +882,7 @@ only using the headers and library functions defined in the standard.
 	or higher is required for this script'.  What can I do?
 
 {UD} You have to get the specified autoconf version (or a later one)
-from your favorite mirror of prep.ai.mit.edu.
+from your favorite mirror of ftp.gnu.org.
 
 ??	When I try to compile code which uses IPv6 headers and
 	definitions on my Linux 2.x.y system I am in trouble.
diff --git a/NEWS b/NEWS
index 3456d1d501..5da5bfc05c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,11 +1,11 @@
-GNU C Library NEWS -- history of user-visible changes.  1998-02-09
+GNU C Library NEWS -- history of user-visible changes.  1998-03-04
 
 Copyright (C) 1992, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send GNU C library bug reports using the `glibcbug' script to
 <bugs@gnu.org>.  Questions and suggestions should be send to
-<bug-glibc@prep.ai.mit.edu>.
+<bug-glibc@gnu.org>.
 
 Version 2.1
 
@@ -52,6 +52,8 @@ Version 2.1
 * Optimized string functions have been added.
 
 * The localedata addon is now part of glibc.
+
+* An implementation of profiling shared libraries was added by Ulrich Drepper.
 
 Version 2.0.5
 
diff --git a/PROJECTS b/PROJECTS
index 7aa57e11f9..b9bd305cb9 100644
--- a/PROJECTS
+++ b/PROJECTS
@@ -1,9 +1,9 @@
 Open jobs for finishing GNU libc:
 ---------------------------------
-Status: January 1998
+Status: March 1998
 
 If you have time and talent to take over any of the jobs below please
-contact <bug-glibc@prep.ai.mit.edu>
+contact <bug-glibc@gnu.org>.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -33,8 +33,8 @@ contact <bug-glibc@prep.ai.mit.edu>
      users can immediately benefit from this.
 
      Take a look at the matrix in
-	ftp://prep.ai.mit.edu/pub/gnu/ABOUT-NLS
-     for the current status (of course better use a mirror of prep).
+	ftp://ftp.gnu.org/pub/gnu/ABOUT-NLS
+     for the current status (of course better use a mirror of ftp.gnu.org).
 
 
 [ 6] Write `long double' versions of the math functions.  This should be
diff --git a/README-alpha b/README-alpha
index d13b9f7191..6ac0dca2c0 100644
--- a/README-alpha
+++ b/README-alpha
@@ -120,7 +120,7 @@ these directories.  If a new version of an add-on is available it is normally
 required for the corresponding snapshot so always pay attention for these.
 
 Note that we provide GNU gzip compressed files only.  You can ftp gzip
-from prep.ai.mit.edu in directory pub/gnu.
+from ftp.gnu.org in directory pub/gnu.
 
 In some cases the dates for diffs and snapshots do not match like in the
 example above.  The full release is for 970921 but the patch is for
@@ -167,7 +167,7 @@ developers.  No questions about installation problems or other simple topics
 are wanted nor will they be answered.
 
 Do *not* send any questions about the snapshots or patches specific to the
-snapshots to bug-glibc@prep.ai.mit.edu.  Nobody there will have any idea what
+snapshots to bug-glibc@gnu.org.  Nobody there will have any idea what
 you are talking about and it will just cause confusion.
 
 
diff --git a/README.template b/README.template
index 25bfd8cb41..5c7484b9e3 100644
--- a/README.template
+++ b/README.template
@@ -57,7 +57,7 @@ can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no
 [129.240.64.21], or another archive site outside the USA.  Archive
 maintainers are encouraged to copy this distribution to their archives
 outside the USA.  Please get it from ftp.ifi.uio.no; transferring this
-distribution from prep.ai.mit.edu (or any other site in the USA) to a
+distribution from ftp.gnu.org (or any other site in the USA) to a
 site outside the USA is in violation of US export laws.
 
 Beside the separate crypt tar file there are some more add-ons which can be
diff --git a/libio/strops.c b/libio/strops.c
index 01f8d6eeb7..b079c9fc29 100644
--- a/libio/strops.c
+++ b/libio/strops.c
@@ -212,51 +212,65 @@ _IO_str_seekoff (fp, offset, dir, mode)
      int dir;
      int mode;
 {
-  _IO_ssize_t cur_size = _IO_str_count (fp);
-  _IO_fpos64_t new_pos = EOF;
+  _IO_fpos64_t new_pos;
 
   if (mode == 0 && (fp->_flags & _IO_TIED_PUT_GET))
     mode = (fp->_flags & _IO_CURRENTLY_PUTTING ? _IOS_OUTPUT : _IOS_INPUT);
 
-  /* Move the get pointer, if requested. */
-  if (mode & _IOS_INPUT)
+  if (mode == 0)
     {
-      switch (dir)
+      /* Don't move any pointers. But there is no clear indication what
+	 mode FP is in. Let's guess. */
+      if (fp->_IO_file_flags & _IO_NO_WRITES)
+        new_pos = fp->_IO_read_ptr - fp->_IO_read_base;
+      else
+        new_pos = fp->_IO_write_ptr - fp->_IO_write_base;
+    }
+  else
+    {
+      _IO_ssize_t cur_size = _IO_str_count(fp);
+      new_pos = EOF;
+
+      /* Move the get pointer, if requested. */
+      if (mode & _IOS_INPUT)
 	{
-	case _IO_seek_end:
-	  offset += cur_size;
-	  break;
-	case _IO_seek_cur:
-	  offset += fp->_IO_read_ptr - fp->_IO_read_base;
-	  break;
-	default: /* case _IO_seek_set: */
-	  break;
+	  switch (dir)
+	    {
+	    case _IO_seek_end:
+	      offset += cur_size;
+	      break;
+	    case _IO_seek_cur:
+	      offset += fp->_IO_read_ptr - fp->_IO_read_base;
+	      break;
+	    default: /* case _IO_seek_set: */
+	      break;
+	    }
+	  if (offset < 0 || (_IO_ssize_t) offset > cur_size)
+	    return EOF;
+	  fp->_IO_read_ptr = fp->_IO_read_base + offset;
+	  fp->_IO_read_end = fp->_IO_read_base + cur_size;
+	  new_pos = offset;
 	}
-      if (offset < 0 || (_IO_ssize_t) offset > cur_size)
-	return EOF;
-      fp->_IO_read_ptr = fp->_IO_read_base + offset;
-      fp->_IO_read_end = fp->_IO_read_base + cur_size;
-      new_pos = offset;
-    }
 
-  /* Move the put pointer, if requested. */
-  if (mode & _IOS_OUTPUT)
-    {
-      switch (dir)
+      /* Move the put pointer, if requested. */
+      if (mode & _IOS_OUTPUT)
 	{
-	case _IO_seek_end:
-	  offset += cur_size;
-	  break;
-	case _IO_seek_cur:
-	  offset += fp->_IO_write_ptr - fp->_IO_write_base;
-	  break;
-	default: /* case _IO_seek_set: */
-	  break;
+	  switch (dir)
+	    {
+	    case _IO_seek_end:
+	      offset += cur_size;
+	      break;
+	    case _IO_seek_cur:
+	      offset += fp->_IO_write_ptr - fp->_IO_write_base;
+	      break;
+	    default: /* case _IO_seek_set: */
+	      break;
+	    }
+	  if (offset < 0 || (_IO_ssize_t) offset > cur_size)
+	    return EOF;
+	  fp->_IO_write_ptr = fp->_IO_write_base + offset;
+	  new_pos = offset;
 	}
-      if (offset < 0 || (_IO_ssize_t) offset > cur_size)
-	return EOF;
-      fp->_IO_write_ptr = fp->_IO_write_base + offset;
-      new_pos = offset;
     }
   return new_pos;
 }
diff --git a/locale/iso-4217.def b/locale/iso-4217.def
index d7a0f37482..5d01def0f7 100644
--- a/locale/iso-4217.def
+++ b/locale/iso-4217.def
@@ -2,7 +2,7 @@
  * Defines the valid international currency symbols according to ISO 4217.
  * This is used in monetary.c(monetary_check).
  *
- * If you find something missing or wrong contact <bug-glibc@prep.ai.mit.edu>
+ * If you find something missing or wrong contact <bug-glibc@gnu.org>
  *
  * !!! The list has to be sorted !!!
  */
diff --git a/manual/maint.texi b/manual/maint.texi
index 7cb735534d..560b04e75b 100644
--- a/manual/maint.texi
+++ b/manual/maint.texi
@@ -307,7 +307,7 @@ Since no one has volunteered to test and fix the above configurations,
 these are not supported at the moment.  It's expected that these don't
 work anymore.  Porting the library is not hard.  If you are interested
 in doing a port, please contact the glibc maintainers by sending
-electronic mail to @email{bug-glibc@@prep.ai.mit.edu}.
+electronic mail to @email{bug-glibc@@gnu.org}.
 
 Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486},
 @samp{i586}, or @samp{i686}.  All of those configurations produce a
@@ -369,8 +369,7 @@ conform to the ISO and POSIX standards (@pxref{Standards and
 Portability}), that is definitely a bug.  Report it!@refill
 
 Send bug reports to the Internet address
-@email{bug-glibc@@prep.ai.mit.edu} or the UUCP path
-@email{mit-eddie!prep.ai.mit.edu!bug-glibc}.  If you have other problems
+@email{bug-glibc@@gnu.org}.  If you have other problems
 with installation or use, please report those as well.@refill
 
 If you are not sure how a function should behave, and this manual
@@ -378,8 +377,7 @@ doesn't tell you, that's a bug in the manual.  Report that too!  If the
 function's behavior disagrees with the manual, then either the library
 or the manual has a bug, so report the disagreement.  If you find any
 errors or omissions in this manual, please report them to the Internet
-address @email{bug-glibc-manual@@prep.ai.mit.edu} or the UUCP path
-@email{mit-eddie!prep.ai.mit.edu!bug-glibc-manual}.
+address @email{bug-glibc-manual@@prep.ai.mit.edu}.
 
 @node Source Layout
 @appendixsec Adding New Functions
diff --git a/manual/texinfo.tex b/manual/texinfo.tex
index 35bc0b0c72..4ed3a5b8c5 100644
--- a/manual/texinfo.tex
+++ b/manual/texinfo.tex
@@ -1,32 +1,40 @@
-%% TeX macros to handle Texinfo files.
-%% $Id: texinfo.tex,v 2.212 1997/08/04 14:14:11 drepper Exp $
-
-%  Copyright (C) 1985, 86, 88, 90, 91, 92, 93,
-%                94, 95, 96, 97 Free Software Foundation, Inc.
-
-%This texinfo.tex file is free software; you can redistribute it and/or
-%modify it under the terms of the GNU General Public License as
-%published by the Free Software Foundation; either version 2, or (at
-%your option) any later version.
-
-%This texinfo.tex file 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
-%General Public License for more details.
-
-%You should have received a copy of the GNU General Public License
-%along with this texinfo.tex file; see the file COPYING.  If not, write
-%to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-%Boston, MA 02111-1307, USA.
-
-
-%In other words, you are welcome to use, share and improve this program.
-%You are forbidden to forbid anyone else to use, share and improve
-%what you give them.   Help stamp out software-hoarding!
-
-
-% Send bug reports to bug-texinfo@prep.ai.mit.edu.
-% Please include a *precise* test case in each bug report.
+% texinfo.tex -- TeX macros to handle Texinfo files.
+% $Id: texinfo.tex,v 2.213 1998/03/04 17:13:03 drepper Exp $
+%
+% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
+% Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2, or (at
+% your option) any later version.
+%
+% This texinfo.tex file 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
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this texinfo.tex file; see the file COPYING.  If not, write
+% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+% Boston, MA 02111-1307, USA.
+%
+% In other words, you are welcome to use, share and improve this program.
+% You are forbidden to forbid anyone else to use, share and improve
+% what you give them.   Help stamp out software-hoarding!
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+% ftp://ftp.cs.umb.edu/pub/tex/texinfo.tex
+% /home/gd/gnu/doc/texinfo.tex on the GNU machines.
+% 
+% Send bug reports to bug-texinfo@gnu.org.
+% Please include a precise test case in each bug report,
+% including a complete document with which we can reproduce the problem.
+% 
+% Texinfo macros (with @macro) are *not* supported by texinfo.tex.  You
+% have to run makeinfo -E to expand macros first; the texi2dvi script
+% does this.
 
 
 % Make it possible to create a .fmt file just by loading this file:
@@ -36,7 +44,7 @@
 
 % This automatically updates the version number based on RCS.
 \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 2.212 $
+\deftexinfoversion$Revision: 2.213 $
 \message{Loading texinfo package [Version \texinfoversion]:}
 
 % If in a .fmt file, print the version number
@@ -54,7 +62,8 @@
 \let\ptexdot=\.
 \let\ptexdots=\dots
 \let\ptexend=\end
-\let\ptexequiv = \equiv
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
 \let\ptexi=\i
 \let\ptexlbrace=\{
 \let\ptexrbrace=\}
@@ -441,14 +450,11 @@
 % @. is an end-of-sentence period.
 \def\.{.\spacefactor=3000 }
 
-% @enddots{} is an end-of-sentence ellipsis.
-\gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000}
-
 % @! is an end-of-sentence bang.
-\gdef\!{!\spacefactor=3000 }
+\def\!{!\spacefactor=3000 }
 
 % @? is an end-of-sentence query.
-\gdef\?{?\spacefactor=3000 }
+\def\?{?\spacefactor=3000 }
 
 % @w prevents a word break.  Without the \leavevmode, @w at the
 % beginning of a paragraph, when TeX is still in vertical mode, would
@@ -573,9 +579,27 @@ where each line of input produces a line of output.}
 
 \let\br = \par
 
-% @dots{}  output some dots
+% @dots{} output an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in a typewriter
+% font as three actual period characters.
+%
+\def\dots{\hbox to 1.5em{%
+  \hskip 0pt plus 0.25fil minus 0.25fil
+  .\hss.\hss.%
+  \hskip 0pt plus 0.5fil minus 0.5fil
+}}
+
+% @enddots{} is an end-of-sentence ellipsis.
+% 
+\def\enddots{%
+  \hbox to 2em{%
+    \hskip 0pt plus 0.25fil minus 0.25fil
+    .\hss.\hss.\hss.%
+    \hskip 0pt plus 0.5fil minus 0.5fil
+  }%
+  \spacefactor=3000
+}
 
-\def\dots{$\ldots$}
 
 % @page    forces the start of a new page
 
@@ -1236,7 +1260,7 @@ where each line of input produces a line of output.}
   \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
   \let\tenttsl=\titlettsl
   \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts #1}}
+\def\titlefont#1{{\titlefonts\rm #1}}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
   \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
@@ -1263,6 +1287,10 @@ where each line of input produces a line of output.}
 %
 \textfonts
 
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
 % Count depth in font-changes, for error checks
 \newcount\fontdepth \fontdepth=0
 
@@ -1300,15 +1328,15 @@ where each line of input produces a line of output.}
   \null
 }
 \let\ttfont=\t
-\def\samp #1{`\tclose{#1}'\null}
+\def\samp#1{`\tclose{#1}'\null}
 \setfont\smallrm\rmshape{8}{1000}
 \font\smallsy=cmsy9
 \def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{%
-  \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{%
+  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
     \vbox{\hrule\kern-0.4pt
-     \hbox{\raise0.4pt\hbox{\vphantom{$\langle$}}#1}}%
+     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
     \kern-0.4pt\hrule}%
-  \kern-.06em\raise0.4pt\hbox{$\rangle$}}}}
+  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
 % The old definition, with no lozenge:
 %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
 \def\ctrl #1{{\tt \rawbackslash \hat}#1}
@@ -1421,7 +1449,7 @@ where each line of input produces a line of output.}
 
 % rms does not like the angle brackets --karl, 17may97.
 % So now @email is just like @uref.
-%\def\email#1{$\langle${\tt #1}$\rangle$}
+%\def\email#1{\angleleft{\tt #1}\angleright}
 \let\email=\uref
 
 % Check if we are currently using a typewriter font.  Since all the
@@ -2043,10 +2071,7 @@ July\or August\or September\or October\or November\or December\fi
 % @multitablelinespace is space to leave between table items, baseline
 %                                                            to baseline.
 %   0pt means it depends on current normal line spacing.
-
-%%%%
-% Dimensions
-
+%
 \newskip\multitableparskip
 \newskip\multitableparindent
 \newdimen\multitablecolspace
@@ -2056,15 +2081,15 @@ July\or August\or September\or October\or November\or December\fi
 \multitablecolspace=12pt
 \multitablelinespace=0pt
 
-%%%%
 % Macros used to set up halign preamble:
+% 
 \let\endsetuptable\relax
 \def\xendsetuptable{\endsetuptable}
 \let\columnfractions\relax
 \def\xcolumnfractions{\columnfractions}
 \newif\ifsetpercent
 
-%% 2/1/96, to allow fractions to be given with more than one digit.
+% 2/1/96, to allow fractions to be given with more than one digit.
 \def\pickupwholefraction#1 {\global\advance\colcount by1 %
 \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}%
 \setuptable}
@@ -2090,80 +2115,84 @@ July\or August\or September\or October\or November\or December\fi
 \ifx\go\pickupwholefraction\else\let\go\setuptable\fi%
 \fi\go}
 
-%%%%
 % multitable syntax
 \def\tab{&\hskip1sp\relax} % 2/2/96
                            % tiny skip here makes sure this column space is
                            % maintained, even if it is never used.
 
-
-%%%%
 % @multitable ... @end multitable definitions:
 
 \def\multitable{\parsearg\dotable}
-
 \def\dotable#1{\bgroup
-\let\item\cr
-\tolerance=9500
-\hbadness=9500
-\setmultitablespacing
-\parskip=\multitableparskip
-\parindent=\multitableparindent
-\overfullrule=0pt
-\global\colcount=0\relax%
-\def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}%
- % To parse everything between @multitable and @item :
-\setuptable#1 \endsetuptable
- % Need to reset this to 0 after \setuptable.
-\global\colcount=0\relax%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
-\halign\bgroup&\global\advance\colcount by 1\relax%
-\multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \multitablecolspace to all columns after
- % the first one.
- %  If a template has been used, we will add \multitablecolspace
- % to the width of each template entry.
- %  If user has set preamble in terms of percent of \hsize
- % we will use that dimension as the width of the column, and
- % the \leftskip will keep entries from bumping into each other.
- % Table will start at left margin and final column will justify at
- % right margin.
-\ifnum\colcount=1
-\else
-  \ifsetpercent
+  \vskip\parskip
+  \let\item\crcr
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}%
+  %
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % \everycr will reset column counter, \colcount, at the end of
+  % each line. Every column entry will cause \colcount to advance by one.
+  % The table preamble
+  % looks at the current \colcount to find the correct column width.
+  \everycr{\noalign{%
+  %
+  % \filbreak%% keeps underfull box messages off when table breaks over pages.
+  % Maybe so, but it also creates really weird page breaks when the table
+  % breaks over pages. Wouldn't \vfil be better?  Wait until the problem
+  % manifests itself, so it can be fixed for real --karl.
+    \global\colcount=0\relax}}%
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup&\global\advance\colcount by 1\relax
+    \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
+  %
+  % In order to keep entries from bumping into each other
+  % we will add a \leftskip of \multitablecolspace to all columns after
+  % the first one.
+  % 
+  % If a template has been used, we will add \multitablecolspace
+  % to the width of each template entry.
+  % 
+  % If the user has set preamble in terms of percent of \hsize we will
+  % use that dimension as the width of the column, and the \leftskip
+  % will keep entries from bumping into each other.  Table will start at
+  % left margin and final column will justify at right margin.
+  % 
+  % Make sure we don't inherit \rightskip from the outer environment.
+  \rightskip=0pt
+  \ifnum\colcount=1
+    % The first column will be indented with the surrounding text.
+    \advance\hsize by\leftskip
   \else
-   % If user has <not> set preamble in terms of percent of \hsize
-   % we will advance \hsize by \multitablecolspace
-  \advance\hsize by \multitablecolspace
+    \ifsetpercent \else
+      % If user has not set preamble in terms of percent of \hsize
+      % we will advance \hsize by \multitablecolspace.
+      \advance\hsize by \multitablecolspace
+    \fi
+   % In either case we will make \leftskip=\multitablecolspace:
+  \leftskip=\multitablecolspace
   \fi
- % In either case we will make \leftskip=\multitablecolspace:
-\leftskip=\multitablecolspace
-\fi
- % Ignoring space at the beginning and end avoids an occasional spurious
- % blank line, when TeX decides to break the line at the space before the
- % box from the multistrut, so the strut ends up on a line by itself.
- % For example:
- % @multitable @columnfractions .11 .89
- % @item @code{#}
- % @tab Legal holiday which is valid in major parts of the whole country.
- % Is automatically provided with highlighting sequences respectively marking
- % characters.
- \noindent\ignorespaces##\unskip\multistrut}\cr
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column  entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
-\global\everycr{\noalign{%
-% \filbreak%% keeps underfull box messages off when table breaks over pages.
-% Maybe so, but it also creates really weird page breaks when the table
-% breaks over pages Wouldn't \vfil be better?  Wait until the problem
-% manifests itself, so it can be fixed for real --karl.
-\global\colcount=0\relax}}
+  % Ignoring space at the beginning and end avoids an occasional spurious
+  % blank line, when TeX decides to break the line at the space before the
+  % box from the multistrut, so the strut ends up on a line by itself.
+  % For example:
+  % @multitable @columnfractions .11 .89
+  % @item @code{#}
+  % @tab Legal holiday which is valid in major parts of the whole country.
+  % Is automatically provided with highlighting sequences respectively marking
+  % characters.
+  \noindent\ignorespaces##\unskip\multistrut}\cr
 }
 
 \def\setmultitablespacing{% test to see if user has set \multitablelinespace.
@@ -2510,6 +2539,11 @@ width0pt\relax} \fi
   \indexbreaks
   %
   % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
   \openin 1 \jobname.#1s
   \ifeof 1
     % \enddoublecolumns gets confused if there is no text in the index,
@@ -2531,7 +2565,6 @@ width0pt\relax} \fi
       % to make right now.
       \def\indexbackslash{\rawbackslashxx}%
       \catcode`\\ = 0
-      \catcode`\@ = 11
       \escapechar = `\\
       \begindoublecolumns
       \input \jobname.#1s
@@ -3427,11 +3460,12 @@ width0pt\relax} \fi
 % the index entries, but we want to suppress hyphenation here.  (We
 % can't do that in the \entry macro, since index entries might consist
 % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-%
-% \turnoffactive is for the sake of @" used for umlauts.
 \def\tocentry#1#2{\begingroup
   \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
-  \entry{\turnoffactive #1}{\turnoffactive #2}%
+  % Do not use \turnoffactive in these arguments.  Since the toc is
+  % typeset in cmr, so characters such as _ would come out wrong; we
+  % have to do the usual translation tricks.
+  \entry{#1}{#2}%
 \endgroup}
 
 % Space between chapter (or whatever) number and the title.
@@ -3497,30 +3531,35 @@ width0pt\relax} \fi
 % But \@ or @@ will get a plain tex @ character.
 
 \def\tex{\begingroup
-\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
-\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
-\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
-\catcode `\%=14
-\catcode 43=12 % plus
-\catcode`\"=12
-\catcode`\==12
-\catcode`\|=12
-\catcode`\<=12
-\catcode`\>=12
-\escapechar=`\\
-%
-\let\,=\ptexcomma
-\let\{=\ptexlbrace
-\let\}=\ptexrbrace
-\let\.=\ptexdot
-\let\*=\ptexstar
-\let\dots=\ptexdots
-\def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-\def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-\def\@{@}%
-\let\bullet=\ptexbullet
-\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext
-%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
+  \catcode `\%=14
+  \catcode 43=12 % plus
+  \catcode`\"=12
+  \catcode`\==12
+  \catcode`\|=12
+  \catcode`\<=12
+  \catcode`\>=12
+  \escapechar=`\\
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\{=\ptexlbrace
+  \let\}=\ptexrbrace
+  \let\*=\ptexstar
+  \let\t=\ptext
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
 \let\Etex=\endgroup}
 
 % Define @lisp ... @endlisp.
@@ -4373,7 +4412,7 @@ width0pt\relax} \fi
 \def\refx#1#2{%
   \expandafter\ifx\csname X#1\endcsname\relax
     % If not defined, say something at least.
-    $\langle$un\-de\-fined$\rangle$%
+    \angleleft un\-de\-fined\angleright
     \ifhavexrefs
       \message{\linenumber Undefined cross reference `#1'.}%
     \else
@@ -4390,10 +4429,13 @@ width0pt\relax} \fi
 }
 
 % This is the macro invoked by entries in the aux file.
-\def\xrdef #1#2{{%
-  \catcode`\'=\other
-  \expandafter\gdef\csname X#1\endcsname{#2}%
-}}
+% 
+\def\xrdef#1{\begingroup
+  % Reenable \ as an escape while reading the second argument.
+  \catcode`\\ = 0
+  \afterassignment\endgroup
+  \expandafter\gdef\csname X#1\endcsname
+}
 
 % Read the last existing aux file, if any.  No error if none exists.
 \def\readauxfile{\begingroup
@@ -4617,7 +4659,7 @@ width0pt\relax} \fi
 % Check for and read epsf.tex up front.  If we read it only at @image
 % time, we might be inside a group, and then its definitions would get
 % undone and the next image would fail.
-\openin 1 = xepsf.tex
+\openin 1 = epsf.tex
 \ifeof 1 \else
   \closein 1
   \def\epsfannounce{\toks0 = }% do not bother showing banner
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index f133530f9f..596e31fcde 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -67,16 +67,21 @@ nscd_open_socket (void)
 {
   struct sockaddr_un addr;
   int sock;
+  int saved_errno = errno;
 
   sock = socket (PF_UNIX, SOCK_STREAM, 0);
   if (sock < 0)
-    return -1;
+    {
+      __set_errno (saved_errno);
+      return -1;
+    }
 
   addr.sun_family = AF_UNIX;
   strcpy (addr.sun_path, _PATH_NSCDSOCKET);
   if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
     {
       close (sock);
+      __set_errno (saved_errno);
       return -1;
     }
 
diff --git a/nscd/nscd_getpw_r.c b/nscd/nscd_getpw_r.c
index c956abc3b4..4fc78e1f89 100644
--- a/nscd/nscd_getpw_r.c
+++ b/nscd/nscd_getpw_r.c
@@ -67,16 +67,21 @@ nscd_open_socket (void)
 {
   struct sockaddr_un addr;
   int sock;
+  int saved_errno = errno;
 
   sock = socket (PF_UNIX, SOCK_STREAM, 0);
   if (sock < 0)
-    return -1;
+    {
+      __set_errno (saved_errno);
+      return -1;
+    }
 
   addr.sun_family = AF_UNIX;
   strcpy (addr.sun_path, _PATH_NSCDSOCKET);
   if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
     {
       close (sock);
+      __set_errno (saved_errno);
       return -1;
     }
 
diff --git a/posix/getconf.c b/posix/getconf.c
index 8aaa75ba67..4c3d9174ba 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -282,11 +282,17 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
 	  case PATHCONF:
 	    if (argc < 3)
 	      usage ();
+	    errno = 0;
 	    value = pathconf (argv[2], c->call_name);
 	    if (value == -1)
-	      error (3, errno, "pathconf: %s", argv[2]);
-
-	    printf ("%ld\n", value);
+	      {
+		if (errno)
+		  error (3, errno, "pathconf: %s", argv[2]);
+		else
+		  puts (_("undefined"));
+	      }
+	    else
+	      printf ("%ld\n", value);
 	    exit (0);
 
 	  case SYSCONF:
diff --git a/sysdeps/posix/fpathconf.c b/sysdeps/posix/fpathconf.c
index 1a2c3742e9..31e1d4bbfa 100644
--- a/sysdeps/posix/fpathconf.c
+++ b/sysdeps/posix/fpathconf.c
@@ -45,7 +45,6 @@ __fpathconf (fd, name)
 #ifdef	LINK_MAX
       return LINK_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -53,7 +52,6 @@ __fpathconf (fd, name)
 #ifdef	MAX_CANON
       return MAX_CANON;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -61,7 +59,6 @@ __fpathconf (fd, name)
 #ifdef	MAX_INPUT
       return MAX_INPUT;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -69,14 +66,21 @@ __fpathconf (fd, name)
 #ifdef	NAME_MAX
       {
 	struct statfs buf;
+	int save_errno = errno;
 
 	if (__fstatfs (fd, &buf) < 0)
-	  return errno == ENOSYS ? NAME_MAX : -1;
+	  {
+	    if (errno == ENOSYS)
+	      {
+		errno = save_errno;
+		return NAME_MAX;
+	      }
+	    return -1;
+	  }
 	else
 	  return buf.f_namelen;
       }
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -84,7 +88,6 @@ __fpathconf (fd, name)
 #ifdef	PATH_MAX
       return PATH_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -92,7 +95,6 @@ __fpathconf (fd, name)
 #ifdef	PIPE_BUF
       return PIPE_BUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -142,13 +144,9 @@ __fpathconf (fd, name)
 #ifdef	SOCK_MAXBUF
       return SOCK_MAXBUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
     }
-
-  __set_errno (ENOSYS);
-  return -1;
 }
 
 weak_alias (__fpathconf, fpathconf)
diff --git a/sysdeps/posix/pathconf.c b/sysdeps/posix/pathconf.c
index c06906679d..fe2ac8d905 100644
--- a/sysdeps/posix/pathconf.c
+++ b/sysdeps/posix/pathconf.c
@@ -43,7 +43,6 @@ __pathconf (const char *path, int name)
 #ifdef	LINK_MAX
       return LINK_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -51,7 +50,6 @@ __pathconf (const char *path, int name)
 #ifdef	MAX_CANON
       return MAX_CANON;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -59,7 +57,6 @@ __pathconf (const char *path, int name)
 #ifdef	MAX_INPUT
       return MAX_INPUT;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -67,14 +64,21 @@ __pathconf (const char *path, int name)
 #ifdef	NAME_MAX
       {
 	struct statfs buf;
+	int save_errno = errno;
 
 	if (__statfs (path, &buf) < 0)
-	  return errno == ENOSYS ? NAME_MAX : -1;
+	  {
+	    if (errno == ENOSYS)
+	      {
+		errno = save_errno;
+		return NAME_MAX;
+	      }
+	    return -1;
+	  }
 	else
 	  return buf.f_namelen;
       }
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -82,7 +86,6 @@ __pathconf (const char *path, int name)
 #ifdef	PATH_MAX
       return PATH_MAX;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -90,7 +93,6 @@ __pathconf (const char *path, int name)
 #ifdef	PIPE_BUF
       return PIPE_BUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
 
@@ -140,13 +142,9 @@ __pathconf (const char *path, int name)
 #ifdef	SOCK_MAXBUF
       return SOCK_MAXBUF;
 #else
-      __set_errno (ENOSYS);
       return -1;
 #endif
     }
-
-  __set_errno (ENOSYS);
-  return -1;
 }
 
 weak_alias (__pathconf, pathconf)
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
index a6655bf897..58dac5f2b6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
@@ -42,8 +42,8 @@
 	   vector will have to be laid out to allow for this	\
 	   test :-(.  */					\
 	if (((ElfW(auxv_t) *)_test)->a_type <= AT_PHDR)		\
+	  (auxp) = (ElfW(auxv_t) *) _tmp;			\
       }								\
-    (auxp) = (ElfW(auxv_t) *) _tmp;				\
   } while (0)
 
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
new file mode 100644
index 0000000000..09ab317b9b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -0,0 +1,41 @@
+/* Copyright (C) 1997, 1998 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.  */
+
+#ifndef _SYS_UCONTEXT_H
+#define _SYS_UCONTEXT_H	1
+
+#include <features.h>
+#include <signal.h>
+
+/* We need the signal context definitions even if they are not used
+   included in <signal.h>.  */
+#include <bits/sigcontext.h>
+
+typedef struct sigcontext mcontext_t;
+
+/* Userlevel context.  */
+typedef struct ucontext
+  {
+    unsigned long int uc_flags;
+    struct ucontext *uc_links;
+    stack_t uc_stack;
+    mcontext_t uc_mcontext;
+    __sigset_t uc_sigmask;
+  } ucontext_t;
+
+#endif /* sys/ucontext.h */