Index: patches/glibc-2.7-branch_update-1.patch
===================================================================
--- patches/glibc-2.7-branch_update-1.patch	(revision f844709ec7d94b934bb47df0e7acee2577443f72)
+++ patches/glibc-2.7-branch_update-1.patch	(revision f844709ec7d94b934bb47df0e7acee2577443f72)
@@ -0,0 +1,2046 @@
+Submitted By: Jim Gifford (jim at linuxfromscratch dot org)
+Date: 10-25-2007
+Initial Package Version: 2.7
+Origin: Upstream
+Upstream Status: Applied
+Description: This is a branch update for Glibc-2.7, and should be
+             rechecked periodically. See the 'Changelog' and 'localedata/ChangeLog'
+             for specific details.
+
+diff -Naur glibc-2.7.orig/ChangeLog glibc-2.7/ChangeLog
+--- glibc-2.7.orig/ChangeLog	2007-10-17 17:09:32.000000000 -0700
++++ glibc-2.7/ChangeLog	2007-10-21 22:03:58.000000000 -0700
+@@ -1,3 +1,17 @@
++2007-10-21  Andreas Jaeger  <aj@suse.de>
++
++	* manual/texinfo.tex: Update to latest version.
++
++	* manual/sysinfo.texi (System Parameters): Fix Formatting.
++
++	* manual/arith.texi (Status bit operations): Fix formatting.
++
++	* manual/errno.texi (Error Messages): Fix formatting.
++
++	* manual/sysinfo.texi (System Parameters): Fix formatting.
++
++	* manual/libc.texinfo: Update VERSION and UPDATED.
++
+ 2007-10-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* sysdeps/x86_64/memset.S (bzero): Renamed to __bzero.  Add
+diff -Naur glibc-2.7.orig/manual/arith.texi glibc-2.7/manual/arith.texi
+--- glibc-2.7.orig/manual/arith.texi	2004-10-05 20:02:14.000000000 -0700
++++ glibc-2.7/manual/arith.texi	2007-10-21 22:03:58.000000000 -0700
+@@ -778,8 +778,7 @@
+ 
+ @comment fenv.h
+ @comment ISO
+-@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int
+-@var{excepts})
++@deftypefun int fesetexceptflag (const fexcept_t *@var{flagp}, int @var{excepts})
+ This function restores the flags for the exceptions indicated by
+ @var{excepts} to the values stored in the variable pointed to by
+ @var{flagp}.
+diff -Naur glibc-2.7.orig/manual/errno.texi glibc-2.7/manual/errno.texi
+--- glibc-2.7.orig/manual/errno.texi	2007-07-21 23:53:48.000000000 -0700
++++ glibc-2.7/manual/errno.texi	2007-10-21 22:03:58.000000000 -0700
+@@ -1494,7 +1494,7 @@
+ 
+ @comment error.h
+ @comment GNU
+-@deftypevar {void (*} error_print_progname ) (void)
++@deftypevar {void (*) error_print_progname } (void)
+ If the @code{error_print_progname} variable is defined to a non-zero
+ value the function pointed to is called by @code{error} or
+ @code{error_at_line}.  It is expected to print the program name or do
+diff -Naur glibc-2.7.orig/manual/libc.texinfo glibc-2.7/manual/libc.texinfo
+--- glibc-2.7.orig/manual/libc.texinfo	2007-07-30 18:53:58.000000000 -0700
++++ glibc-2.7/manual/libc.texinfo	2007-10-21 22:03:58.000000000 -0700
+@@ -19,8 +19,8 @@
+ 
+ @c sold 0.06/1.09, print run out 21may96
+ @set EDITION 0.11
+-@set VERSION 2.6
+-@set UPDATED 2006-12-03
++@set VERSION 2.7
++@set UPDATED 2007-09-09
+ @set ISBN 1-882114-55-8
+ 
+ @copying
+diff -Naur glibc-2.7.orig/manual/sysinfo.texi glibc-2.7/manual/sysinfo.texi
+--- glibc-2.7.orig/manual/sysinfo.texi	2006-11-10 13:10:22.000000000 -0800
++++ glibc-2.7/manual/sysinfo.texi	2007-10-21 22:03:58.000000000 -0700
+@@ -1066,8 +1066,7 @@
+ 
+ @comment sysctl.h
+ @comment BSD
+-@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval},
+-        size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
++@deftypefun int sysctl (int *@var{names}, int @var{nlen}, void *@var{oldval}, size_t *@var{oldlenp}, void *@var{newval}, size_t @var{newlen})
+ 
+ @code{sysctl} gets or sets a specified system parameter.  There are so
+ many of these parameters that it is not practical to list them all here,
+diff -Naur glibc-2.7.orig/manual/texinfo.tex glibc-2.7/manual/texinfo.tex
+--- glibc-2.7.orig/manual/texinfo.tex	2005-02-15 20:23:16.000000000 -0800
++++ glibc-2.7/manual/texinfo.tex	2007-10-21 22:03:58.000000000 -0700
+@@ -3,11 +3,11 @@
+ % Load plain if necessary, i.e., if running under initex.
+ \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+ %
+-\def\texinfoversion{2004-11-25.16}
++\def\texinfoversion{2006-11-08.17}
+ %
+ % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+-% Foundation, Inc.
++% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 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
+@@ -21,8 +21,8 @@
+ %
+ % 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.
++% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++% Boston, MA 02110-1301, USA.
+ %
+ % As a special exception, when this file is read by TeX when processing
+ % a Texinfo source document, you may use the result without
+@@ -153,20 +153,22 @@
+ \ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+ \ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+ 
+-% In some macros, we cannot use the `\? notation---the left quote is
+-% in some cases the escape char.
++% Since the category of space is not known, we have to be careful.
++\chardef\spacecat = 10
++\def\spaceisspace{\catcode`\ =\spacecat}
++
++% sometimes characters are active, so we need control sequences.
+ \chardef\colonChar = `\:
+ \chardef\commaChar = `\,
++\chardef\dashChar  = `\-
+ \chardef\dotChar   = `\.
+ \chardef\exclamChar= `\!
++\chardef\lquoteChar= `\`
+ \chardef\questChar = `\?
++\chardef\rquoteChar= `\'
+ \chardef\semiChar  = `\;
+ \chardef\underChar = `\_
+ 
+-\chardef\spaceChar = `\ %
+-\chardef\spacecat = 10
+-\def\spaceisspace{\catcode\spaceChar=\spacecat}
+-
+ % Ignore a token.
+ %
+ \def\gobble#1{}
+@@ -302,10 +304,14 @@
+     % take effect in \write's, yet the group defined by the \vbox ends
+     % before the \shipout runs.
+     %
+-    \escapechar = `\\     % use backslash in output files.
+     \indexdummies         % don't expand commands in the output.
+     \normalturnoffactive  % \ in index entries must not stay \, e.g., if
+-                   % the page break happens to be in the middle of an example.
++               % the page break happens to be in the middle of an example.
++               % We don't want .vr (or whatever) entries like this:
++               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
++               % "\acronym" won't work when it's read back in;
++               % it needs to be 
++               % {\code {{\tt \backslashcurfont }acronym}
+     \shipout\vbox{%
+       % Do this early so pdf references go to the beginning of the page.
+       \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+@@ -333,9 +339,9 @@
+       \pagebody{#1}%
+       \ifdim\ht\footlinebox > 0pt
+         % Only leave this space if the footline is nonempty.
+-        % (We lessened \vsize for it in \oddfootingxxx.)
++        % (We lessened \vsize for it in \oddfootingyyy.)
+         % The \baselineskip=24pt in plain's \makefootline has no effect.
+-        \vskip 2\baselineskip
++        \vskip 24pt
+         \unvbox\footlinebox
+       \fi
+       %
+@@ -356,7 +362,7 @@
+       \egroup % \vbox from first cropmarks clause
+       \fi
+     }% end of \shipout\vbox
+-  }% end of group with \normalturnoffactive
++  }% end of group with \indexdummies
+   \advancepageno
+   \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+ }
+@@ -391,7 +397,7 @@
+ %
+ \def\parsearg{\parseargusing{}}
+ \def\parseargusing#1#2{%
+-  \def\next{#2}%
++  \def\argtorun{#2}%
+   \begingroup
+     \obeylines
+     \spaceisspace
+@@ -422,8 +428,7 @@
+ \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+   \def\temp{#3}%
+   \ifx\temp\empty
+-    % We cannot use \next here, as it holds the macro to run;
+-    % thus we reuse \temp.
++    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+     \let\temp\finishparsearg
+   \else
+     \let\temp\argcheckspaces
+@@ -435,14 +440,14 @@
+ % If a _delimited_ argument is enclosed in braces, they get stripped; so
+ % to get _exactly_ the rest of the line, we had to prevent such situation.
+ % We prepended an \empty token at the very beginning and we expand it now,
+-% just before passing the control to \next.
++% just before passing the control to \argtorun.
+ % (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+ % either the null string, or it ends with \^^M---thus there is no danger
+ % that a pair of braces would be stripped.
+ %
+ % But first, we have to remove the trailing space token.
+ %
+-\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
++\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+ 
+ % \parseargdef\foo{...}
+ %	is roughly equivalent to
+@@ -566,7 +571,7 @@
+ \let\}=\myrbrace
+ \begingroup
+   % Definitions to produce \{ and \} commands for indices,
+-  % and @{ and @} for the aux file.
++  % and @{ and @} for the aux/toc files.
+   \catcode`\{ = \other \catcode`\} = \other
+   \catcode`\[ = 1 \catcode`\] = 2
+   \catcode`\! = 0 \catcode`\\ = \other
+@@ -647,13 +652,28 @@
+ \let\/=\allowbreak
+ 
+ % @. is an end-of-sentence period.
+-\def\.{.\spacefactor=3000 }
++\def\.{.\spacefactor=\endofsentencespacefactor\space}
+ 
+ % @! is an end-of-sentence bang.
+-\def\!{!\spacefactor=3000 }
++\def\!{!\spacefactor=\endofsentencespacefactor\space}
+ 
+ % @? is an end-of-sentence query.
+-\def\?{?\spacefactor=3000 }
++\def\?{?\spacefactor=\endofsentencespacefactor\space}
++
++% @frenchspacing on|off  says whether to put extra space after punctuation.
++% 
++\def\onword{on}
++\def\offword{off}
++%
++\parseargdef\frenchspacing{%
++  \def\temp{#1}%
++  \ifx\temp\onword \plainfrenchspacing
++  \else\ifx\temp\offword \plainnonfrenchspacing
++  \else
++    \errhelp = \EMsimple
++    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
++  \fi\fi
++}
+ 
+ % @w prevents a word break.  Without the \leavevmode, @w at the
+ % beginning of a paragraph, when TeX is still in vertical mode, would
+@@ -1031,9 +1051,9 @@
+ % _ active, and distinguish by seeing if the current family is \slfam,
+ % which is what @var uses.
+ {
+-  \catcode\underChar = \active
++  \catcode`\_ = \active
+   \gdef\mathunderscore{%
+-    \catcode\underChar=\active
++    \catcode`\_=\active
+     \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+   }
+ }
+@@ -1076,15 +1096,24 @@
+ \def\minus{$-$}
+ 
+ % @dots{} outputs 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.
++% We do .5em per period so that it has the same spacing in the cm
++% typewriter fonts as three actual period characters; on the other hand,
++% in other typewriter fonts three periods are wider than 1.5em.  So do
++% whichever is larger.
+ %
+ \def\dots{%
+   \leavevmode
+-  \hbox to 1.5em{%
+-    \hskip 0pt plus 0.25fil
+-    .\hfil.\hfil.%
+-    \hskip 0pt plus 0.5fil
++  \setbox0=\hbox{...}% get width of three periods
++  \ifdim\wd0 > 1.5em
++    \dimen0 = \wd0
++  \else
++    \dimen0 = 1.5em
++  \fi
++  \hbox to \dimen0{%
++    \hskip 0pt plus.25fil
++    .\hskip 0pt plus1fil
++    .\hskip 0pt plus1fil
++    .\hskip 0pt plus.5fil
+   }%
+ }
+ 
+@@ -1092,7 +1121,7 @@
+ %
+ \def\enddots{%
+   \dots
+-  \spacefactor=3000
++  \spacefactor=\endofsentencespacefactor
+ }
+ 
+ % @comma{} is so commas can be inserted into text without messing up
+@@ -1176,13 +1205,98 @@
+     \fi
+   \fi
+ \fi
+-%
++
++% PDF uses PostScript string constants for the names of xref targets,
++% for display in the outlines, and in other places.  Thus, we have to
++% double any backslashes.  Otherwise, a name like "\node" will be
++% interpreted as a newline (\n), followed by o, d, e.  Not good.
++% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
++% (and related messages, the final outcome is that it is up to the TeX
++% user to double the backslashes and otherwise make the string valid, so
++% that's what we do).
++
++% double active backslashes.
++% 
++{\catcode`\@=0 \catcode`\\=\active
++ @gdef@activebackslashdouble{%
++   @catcode`@\=@active
++   @let\=@doublebackslash}
++}
++
++% To handle parens, we must adopt a different approach, since parens are
++% not active characters.  hyperref.dtx (which has the same problem as
++% us) handles it with this amazing macro to replace tokens.  I've
++% tinkered with it a little for texinfo, but it's definitely from there.
++% 
++% #1 is the tokens to replace.
++% #2 is the replacement.
++% #3 is the control sequence with the string.
++% 
++\def\HyPsdSubst#1#2#3{%
++  \def\HyPsdReplace##1#1##2\END{%
++    ##1%
++    \ifx\\##2\\%
++    \else
++      #2%
++      \HyReturnAfterFi{%
++        \HyPsdReplace##2\END
++      }%
++    \fi
++  }%
++  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
++}
++\long\def\HyReturnAfterFi#1\fi{\fi#1}
++
++% #1 is a control sequence in which to do the replacements.
++\def\backslashparens#1{%
++  \xdef#1{#1}% redefine it as its expansion; the definition is simply
++             % \lastnode when called from \setref -> \pdfmkdest.
++  \HyPsdSubst{(}{\realbackslash(}{#1}%
++  \HyPsdSubst{)}{\realbackslash)}{#1}%
++}
++
++\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
++with PDF output, and none of those formats could be found.  (.eps cannot
++be supported due to the design of the PDF format; use regular TeX (DVI
++output) for that.)}
++
+ \ifpdf
+   \input pdfcolor
+   \pdfcatalog{/PageMode /UseOutlines}%
++  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+   \def\dopdfimage#1#2#3{%
+-    \def\imagewidth{#2}%
+-    \def\imageheight{#3}%
++    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
++    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
++    %
++    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
++    % others).  Let's try in that order.
++    \let\pdfimgext=\empty
++    \begingroup
++      \openin 1 #1.png \ifeof 1
++        \openin 1 #1.jpg \ifeof 1
++          \openin 1 #1.jpeg \ifeof 1
++            \openin 1 #1.JPG \ifeof 1
++              \openin 1 #1.pdf \ifeof 1
++                \errhelp = \nopdfimagehelp
++                \errmessage{Could not find image file #1 for pdf}%
++              \else
++                \gdef\pdfimgext{pdf}%
++              \fi
++            \else
++              \gdef\pdfimgext{JPG}%
++            \fi
++          \else
++            \gdef\pdfimgext{jpeg}%
++          \fi
++        \else
++          \gdef\pdfimgext{jpg}%
++        \fi
++      \else
++        \gdef\pdfimgext{png}%
++      \fi
++      \closein 1
++    \endgroup
++    %
+     % without \immediate, pdftex seg faults when the same image is
+     % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+     \ifnum\pdftexversion < 14
+@@ -1190,24 +1304,29 @@
+     \else
+       \immediate\pdfximage
+     \fi
+-      \ifx\empty\imagewidth\else width \imagewidth \fi
+-      \ifx\empty\imageheight\else height \imageheight \fi
++      \ifdim \wd0 >0pt width \imagewidth \fi
++      \ifdim \wd2 >0pt height \imageheight \fi
+       \ifnum\pdftexversion<13
+-         #1.pdf%
++         #1.\pdfimgext
+        \else
+-         {#1.pdf}%
++         {#1.\pdfimgext}%
+        \fi
+     \ifnum\pdftexversion < 14 \else
+       \pdfrefximage \pdflastximage
+     \fi}
+   \def\pdfmkdest#1{{%
+-    % We have to set dummies so commands such as @code in a section title
+-    % aren't expanded.
++    % We have to set dummies so commands such as @code, and characters
++    % such as \, aren't expanded when present in a section title.
+     \atdummies
+-    \normalturnoffactive
+-    \pdfdest name{#1} xyz%
+-  }}
+-  \def\pdfmkpgn#1{#1}
++    \activebackslashdouble
++    \def\pdfdestname{#1}%
++    \backslashparens\pdfdestname
++    \pdfdest name{\pdfdestname} xyz%
++  }}%
++  %
++  % used to mark target names; must be expandable.
++  \def\pdfmkpgn#1{#1}%
++  %
+   \let\linkcolor = \Blue  % was Cyan, but that seems light?
+   \def\endlink{\Black\pdfendlink}
+   % Adding outlines to PDF; macros for calculating structure of outlines
+@@ -1218,20 +1337,31 @@
+     \advance\tempnum by 1
+     \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+   %
+-  % #1 is the section text.  #2 is the pdf expression for the number
+-  % of subentries (or empty, for subsubsections).  #3 is the node
+-  % text, which might be empty if this toc entry had no
+-  % corresponding node.  #4 is the page number.
++  % #1 is the section text, which is what will be displayed in the
++  % outline by the pdf viewer.  #2 is the pdf expression for the number
++  % of subentries (or empty, for subsubsections).  #3 is the node text,
++  % which might be empty if this toc entry had no corresponding node.
++  % #4 is the page number
+   %
+   \def\dopdfoutline#1#2#3#4{%
+     % Generate a link to the node text if that exists; else, use the
+     % page number.  We could generate a destination for the section
+     % text in the case where a section has no node, but it doesn't
+-    % seem worthwhile, since most documents are normally structured.
++    % seem worth the trouble, since most documents are normally structured.
+     \def\pdfoutlinedest{#3}%
+-    \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
++    \ifx\pdfoutlinedest\empty
++      \def\pdfoutlinedest{#4}%
++    \else
++      % Doubled backslashes in the name.
++      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
++       \backslashparens\pdfoutlinedest}%
++    \fi
+     %
+-    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
++    % Also double the backslashes in the display string.
++    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
++     \backslashparens\pdfoutlinetext}%
++    %
++    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+   }
+   %
+   \def\pdfmakeoutlines{%
+@@ -1272,7 +1402,7 @@
+       \def\unnsecentry{\numsecentry}%
+       \def\unnsubsecentry{\numsubsecentry}%
+       \def\unnsubsubsecentry{\numsubsubsecentry}%
+-      \input \jobname.toc
++      \readdatafile{toc}%
+       %
+       % Read toc second time, this time actually producing the outlines.
+       % The `-' means take the \expnumber as the absolute number of
+@@ -1298,41 +1428,12 @@
+       % their "best" equivalent, based on the @documentencoding.  Right
+       % now, I guess we'll just let the pdf reader have its way.
+       \indexnofonts
+-      \turnoffactive
++      \setupdatafile
++      \catcode`\\=\active \otherbackslash
+       \input \jobname.toc
+     \endgroup
+   }
+   %
+-  \def\makelinks #1,{%
+-    \def\params{#1}\def\E{END}%
+-    \ifx\params\E
+-      \let\nextmakelinks=\relax
+-    \else
+-      \let\nextmakelinks=\makelinks
+-      \ifnum\lnkcount>0,\fi
+-      \picknum{#1}%
+-      \startlink attr{/Border [0 0 0]}
+-        goto name{\pdfmkpgn{\the\pgn}}%
+-      \linkcolor #1%
+-      \advance\lnkcount by 1%
+-      \endlink
+-    \fi
+-    \nextmakelinks
+-  }
+-  \def\picknum#1{\expandafter\pn#1}
+-  \def\pn#1{%
+-    \def\p{#1}%
+-    \ifx\p\lbrace
+-      \let\nextpn=\ppn
+-    \else
+-      \let\nextpn=\ppnn
+-      \def\first{#1}
+-    \fi
+-    \nextpn
+-  }
+-  \def\ppn#1{\pgn=#1\gobble}
+-  \def\ppnn{\pgn=\first}
+-  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
+   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+     \ifx\PP\D\let\nextsp\relax
+     \else\let\nextsp\skipspaces
+@@ -1347,9 +1448,17 @@
+   \else
+     \let \startlink \pdfstartlink
+   \fi
++  % make a live url in pdf output.
+   \def\pdfurl#1{%
+     \begingroup
+-      \normalturnoffactive\def\@{@}%
++      % it seems we really need yet another set of dummies; have not
++      % tried to figure out what each command should do in the context
++      % of @url.  for now, just make @/ a no-op, that's the only one
++      % people have actually reported a problem with.
++      % 
++      \normalturnoffactive
++      \def\@{@}%
++      \let\/=\empty
+       \makevalueexpandable
+       \leavevmode\Red
+       \startlink attr{/Border [0 0 0]}%
+@@ -1419,6 +1528,7 @@
+ % We don't need math for this font style.
+ \def\ttsl{\setfontstyle{ttsl}}
+ 
++
+ % Default leading.
+ \newdimen\textleading  \textleading = 13.2pt
+ 
+@@ -1440,11 +1550,13 @@
+   }%
+ }
+ 
++
+ % Set the font macro #1 to the font named #2, adding on the
+ % specified font prefix (normally `cm').
+ % #3 is the font's design size, #4 is a scale factor
+ \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+ 
++
+ % Use cm as the default font prefix.
+ % To specify the font prefix, you must define \fontprefix
+ % before you read in texinfo.tex.
+@@ -1468,6 +1580,10 @@
+ \def\scshape{csc}
+ \def\scbshape{csc}
+ 
++% Definitions for a main text size of 11pt.  This is the default in
++% Texinfo.
++% 
++\def\definetextfontsizexi{
+ % Text fonts (11.2pt, magstep1).
+ \def\textnominalsize{11pt}
+ \edef\mainmagstep{\magstephalf}
+@@ -1581,6 +1697,165 @@
+ \font\reducedi=cmmi10
+ \font\reducedsy=cmsy10
+ 
++% reset the current fonts
++\textfonts
++\rm
++} % end of 11pt text font size definitions
++
++
++% Definitions to make the main text be 10pt Computer Modern, with
++% section, chapter, etc., sizes following suit.  This is for the GNU
++% Press printing of the Emacs 22 manual.  Maybe other manuals in the
++% future.  Used with @smallbook, which sets the leading to 12pt.
++% 
++\def\definetextfontsizex{%
++% Text fonts (10pt).
++\def\textnominalsize{10pt}
++\edef\mainmagstep{1000}
++\setfont\textrm\rmshape{10}{\mainmagstep}
++\setfont\texttt\ttshape{10}{\mainmagstep}
++\setfont\textbf\bfshape{10}{\mainmagstep}
++\setfont\textit\itshape{10}{\mainmagstep}
++\setfont\textsl\slshape{10}{\mainmagstep}
++\setfont\textsf\sfshape{10}{\mainmagstep}
++\setfont\textsc\scshape{10}{\mainmagstep}
++\setfont\textttsl\ttslshape{10}{\mainmagstep}
++\font\texti=cmmi10 scaled \mainmagstep
++\font\textsy=cmsy10 scaled \mainmagstep
++
++% A few fonts for @defun names and args.
++\setfont\defbf\bfshape{10}{\magstephalf}
++\setfont\deftt\ttshape{10}{\magstephalf}
++\setfont\defttsl\ttslshape{10}{\magstephalf}
++\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
++
++% Fonts for indices, footnotes, small examples (9pt).
++\def\smallnominalsize{9pt}
++\setfont\smallrm\rmshape{9}{1000}
++\setfont\smalltt\ttshape{9}{1000}
++\setfont\smallbf\bfshape{10}{900}
++\setfont\smallit\itshape{9}{1000}
++\setfont\smallsl\slshape{9}{1000}
++\setfont\smallsf\sfshape{9}{1000}
++\setfont\smallsc\scshape{10}{900}
++\setfont\smallttsl\ttslshape{10}{900}
++\font\smalli=cmmi9
++\font\smallsy=cmsy9
++
++% Fonts for small examples (8pt).
++\def\smallernominalsize{8pt}
++\setfont\smallerrm\rmshape{8}{1000}
++\setfont\smallertt\ttshape{8}{1000}
++\setfont\smallerbf\bfshape{10}{800}
++\setfont\smallerit\itshape{8}{1000}
++\setfont\smallersl\slshape{8}{1000}
++\setfont\smallersf\sfshape{8}{1000}
++\setfont\smallersc\scshape{10}{800}
++\setfont\smallerttsl\ttslshape{10}{800}
++\font\smalleri=cmmi8
++\font\smallersy=cmsy8
++
++% Fonts for title page (20.4pt):
++\def\titlenominalsize{20pt}
++\setfont\titlerm\rmbshape{12}{\magstep3}
++\setfont\titleit\itbshape{10}{\magstep4}
++\setfont\titlesl\slbshape{10}{\magstep4}
++\setfont\titlett\ttbshape{12}{\magstep3}
++\setfont\titlettsl\ttslshape{10}{\magstep4}
++\setfont\titlesf\sfbshape{17}{\magstep1}
++\let\titlebf=\titlerm
++\setfont\titlesc\scbshape{10}{\magstep4}
++\font\titlei=cmmi12 scaled \magstep3
++\font\titlesy=cmsy10 scaled \magstep4
++\def\authorrm{\secrm}
++\def\authortt{\sectt}
++
++% Chapter fonts (14.4pt).
++\def\chapnominalsize{14pt}
++\setfont\chaprm\rmbshape{12}{\magstep1}
++\setfont\chapit\itbshape{10}{\magstep2}
++\setfont\chapsl\slbshape{10}{\magstep2}
++\setfont\chaptt\ttbshape{12}{\magstep1}
++\setfont\chapttsl\ttslshape{10}{\magstep2}
++\setfont\chapsf\sfbshape{12}{\magstep1}
++\let\chapbf\chaprm
++\setfont\chapsc\scbshape{10}{\magstep2}
++\font\chapi=cmmi12 scaled \magstep1
++\font\chapsy=cmsy10 scaled \magstep2
++
++% Section fonts (12pt).
++\def\secnominalsize{12pt}
++\setfont\secrm\rmbshape{12}{1000}
++\setfont\secit\itbshape{10}{\magstep1}
++\setfont\secsl\slbshape{10}{\magstep1}
++\setfont\sectt\ttbshape{12}{1000}
++\setfont\secttsl\ttslshape{10}{\magstep1}
++\setfont\secsf\sfbshape{12}{1000}
++\let\secbf\secrm
++\setfont\secsc\scbshape{10}{\magstep1}
++\font\seci=cmmi12 
++\font\secsy=cmsy10 scaled \magstep1
++
++% Subsection fonts (10pt).
++\def\ssecnominalsize{10pt}
++\setfont\ssecrm\rmbshape{10}{1000}
++\setfont\ssecit\itbshape{10}{1000}
++\setfont\ssecsl\slbshape{10}{1000}
++\setfont\ssectt\ttbshape{10}{1000}
++\setfont\ssecttsl\ttslshape{10}{1000}
++\setfont\ssecsf\sfbshape{10}{1000}
++\let\ssecbf\ssecrm
++\setfont\ssecsc\scbshape{10}{1000}
++\font\sseci=cmmi10
++\font\ssecsy=cmsy10
++
++% Reduced fonts for @acro in text (9pt).
++\def\reducednominalsize{9pt}
++\setfont\reducedrm\rmshape{9}{1000}
++\setfont\reducedtt\ttshape{9}{1000}
++\setfont\reducedbf\bfshape{10}{900}
++\setfont\reducedit\itshape{9}{1000}
++\setfont\reducedsl\slshape{9}{1000}
++\setfont\reducedsf\sfshape{9}{1000}
++\setfont\reducedsc\scshape{10}{900}
++\setfont\reducedttsl\ttslshape{10}{900}
++\font\reducedi=cmmi9
++\font\reducedsy=cmsy9
++
++% reduce space between paragraphs
++\divide\parskip by 2
++
++% reset the current fonts
++\textfonts
++\rm
++} % end of 10pt text font size definitions
++
++
++% We provide the user-level command
++%   @fonttextsize 10
++% (or 11) to redefine the text font size.  pt is assumed.
++% 
++\def\xword{10}
++\def\xiword{11}
++%
++\parseargdef\fonttextsize{%
++  \def\textsizearg{#1}%
++  \wlog{doing @fonttextsize \textsizearg}%
++  %
++  % Set \globaldefs so that documents can use this inside @tex, since
++  % makeinfo 4.8 does not support it, but we need it nonetheless.
++  % 
++ \begingroup \globaldefs=1
++  \ifx\textsizearg\xword \definetextfontsizex
++  \else \ifx\textsizearg\xiword \definetextfontsizexi
++  \else
++    \errhelp=\EMsimple
++    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
++  \fi\fi
++ \endgroup
++}
++
++
+ % In order for the font changes to affect most math symbols and letters,
+ % we have to define the \textfont of the standard families.  Since
+ % texinfo doesn't allow for producing subscripts and superscripts except
+@@ -1691,7 +1966,7 @@
+ 
+ % Set up the default fonts, so we can use them for creating boxes.
+ %
+-\textfonts \rm
++\definetextfontsizexi
+ 
+ % Define these so they can be easily changed for other fonts.
+ \def\angleleft{$\langle$}
+@@ -1749,14 +2024,21 @@
+ % sometimes \x has an active definition that messes things up.
+ %
+ \catcode`@=11
+-  \def\frenchspacing{%
++  \def\plainfrenchspacing{%
+     \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+     \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
++    \def\endofsentencespacefactor{1000}% for @. and friends
++  }
++  \def\plainnonfrenchspacing{%
++    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
++    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
++    \def\endofsentencespacefactor{3000}% for @. and friends
+   }
+ \catcode`@=\other
++\def\endofsentencespacefactor{3000}% default
+ 
+ \def\t#1{%
+-  {\tt \rawbackslash \frenchspacing #1}%
++  {\tt \rawbackslash \plainfrenchspacing #1}%
+   \null
+ }
+ \def\samp#1{`\tclose{#1}'\null}
+@@ -1768,6 +2050,7 @@
+      \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+     \kern-0.4pt\hrule}%
+   \kern-.06em\raise0.4pt\hbox{\angleright}}}}
++\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+ % The old definition, with no lozenge:
+ %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+ \def\ctrl #1{{\tt \rawbackslash \hat}#1}
+@@ -1793,7 +2076,7 @@
+     \nohyphenation
+     %
+     \rawbackslash
+-    \frenchspacing
++    \plainfrenchspacing
+     #1%
+   }%
+   \null
+@@ -1809,12 +2092,21 @@
+ % and arrange explicitly to hyphenate at a dash.
+ %  -- rms.
+ {
+-  \catcode`\-=\active
+-  \catcode`\_=\active
++  \catcode`\-=\active \catcode`\_=\active
++  \catcode`\'=\active \catcode`\`=\active
+   %
+   \global\def\code{\begingroup
+-    \catcode`\-=\active \let-\codedash
+-    \catcode`\_=\active \let_\codeunder
++    \catcode\rquoteChar=\active \catcode\lquoteChar=\active
++    \let'\codequoteright \let`\codequoteleft
++    %
++    \catcode\dashChar=\active  \catcode\underChar=\active
++    \ifallowcodebreaks
++     \let-\codedash
++     \let_\codeunder
++    \else
++     \let-\realdash
++     \let_\realunder
++    \fi
+     \codex
+   }
+ }
+@@ -1834,6 +2126,28 @@
+ }
+ \def\codex #1{\tclose{#1}\endgroup}
+ 
++% An additional complication: the above will allow breaks after, e.g.,
++% each of the four underscores in __typeof__.  This is undesirable in
++% some manuals, especially if they don't have long identifiers in
++% general.  @allowcodebreaks provides a way to control this.
++% 
++\newif\ifallowcodebreaks  \allowcodebreakstrue
++
++\def\keywordtrue{true}
++\def\keywordfalse{false}
++
++\parseargdef\allowcodebreaks{%
++  \def\txiarg{#1}%
++  \ifx\txiarg\keywordtrue
++    \allowcodebreakstrue
++  \else\ifx\txiarg\keywordfalse
++    \allowcodebreaksfalse
++  \else
++    \errhelp = \EMsimple
++    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
++  \fi\fi
++}
++
+ % @kbd is like @code, except that if the argument is just one @key command,
+ % then @kbd has no effect.
+ 
+@@ -1841,16 +2155,16 @@
+ %   `example' (@kbd uses ttsl only inside of @example and friends),
+ %   or `code' (@kbd uses normal tty font always).
+ \parseargdef\kbdinputstyle{%
+-  \def\arg{#1}%
+-  \ifx\arg\worddistinct
++  \def\txiarg{#1}%
++  \ifx\txiarg\worddistinct
+     \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+-  \else\ifx\arg\wordexample
++  \else\ifx\txiarg\wordexample
+     \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+-  \else\ifx\arg\wordcode
++  \else\ifx\txiarg\wordcode
+     \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+   \else
+     \errhelp = \EMsimple
+-    \errmessage{Unknown @kbdinputstyle option `\arg'}%
++    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+   \fi\fi\fi
+ }
+ \def\worddistinct{distinct}
+@@ -1962,7 +2276,7 @@
+ % 
+ \def\abbr#1{\doabbr #1,,\finish}
+ \def\doabbr#1,#2,#3\finish{%
+-  {\frenchspacing #1}%
++  {\plainfrenchspacing #1}%
+   \def\temp{#2}%
+   \ifx\temp\empty \else
+     \space ({\unsepspaces \ignorespaces \temp \unskip})%
+@@ -2000,7 +2314,7 @@
+ \def\eurofont{%
+   % We set the font at each command, rather than predefining it in
+   % \textfonts and the other font-switching commands, so that
+-  % installations which never need the symbold don't have to have the
++  % installations which never need the symbol don't have to have the
+   % font installed.
+   % 
+   % There is only one designed size (nominal 10pt), so we always scale
+@@ -2031,6 +2345,10 @@
+     }$%
+ }
+ 
++% @textdegree - the normal degrees sign.
++%
++\def\textdegree{$^\circ$}
++
+ % Laurent Siebenmann reports \Orb undefined with:
+ %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+ % so we'll define it if necessary.
+@@ -2202,8 +2520,8 @@
+   %
+   % Leave some space for the footline.  Hopefully ok to assume
+   % @evenfooting will not be used by itself.
+-  \global\advance\pageheight by -\baselineskip
+-  \global\advance\vsize by -\baselineskip
++  \global\advance\pageheight by -12pt
++  \global\advance\vsize by -12pt
+ }
+ 
+ \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+@@ -2862,6 +3180,7 @@
+ 
+ \def\doignore#1{\begingroup
+   % Scan in ``verbatim'' mode:
++  \obeylines
+   \catcode`\@ = \other
+   \catcode`\{ = \other
+   \catcode`\} = \other
+@@ -2882,16 +3201,16 @@
+   \gdef\dodoignore#1{%
+     % #1 contains the command name as a string, e.g., `ifinfo'.
+     %
+-    % Define a command to find the next `@end #1', which must be on a line
+-    % by itself.
+-    \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
++    % Define a command to find the next `@end #1'.
++    \long\def\doignoretext##1^^M@end #1{%
++      \doignoretextyyy##1^^M@#1\_STOP_}%
++    %
+     % And this command to find another #1 command, at the beginning of a
+     % line.  (Otherwise, we would consider a line `@c @ifset', for
+     % example, to count as an @ifset for nesting.)
+     \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+     %
+     % And now expand that command.
+-    \obeylines %
+     \doignoretext ^^M%
+   }%
+ }
+@@ -2921,7 +3240,12 @@
+ }
+ 
+ % Finish off ignored text.
+-\def\enddoignore{\endgroup\ignorespaces}
++{ \obeylines%
++  % Ignore anything after the last `@end #1'; this matters in verbatim
++  % environments, where otherwise the newline after an ignored conditional
++  % would result in a blank line in the output.
++  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
++}
+ 
+ 
+ % @set VAR sets the variable VAR to an empty value.
+@@ -3121,42 +3445,50 @@
+ % we have to laboriously prevent expansion for those that we don't.
+ %
+ \def\indexdummies{%
++  \escapechar = `\\     % use backslash in output files.
+   \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+   \def\ {\realbackslash\space }%
++  %
+   % Need these in case \tex is in effect and \{ is a \delimiter again.
+   % But can't use \lbracecmd and \rbracecmd because texindex assumes
+   % braces and backslashes are used only as delimiters.
+   \let\{ = \mylbrace
+   \let\} = \myrbrace
+   %
+-  % \definedummyword defines \#1 as \realbackslash #1\space, thus
+-  % effectively preventing its expansion.  This is used only for control
+-  % words, not control letters, because the \space would be incorrect
+-  % for control characters, but is needed to separate the control word
+-  % from whatever follows.
+-  %
+-  % For control letters, we have \definedummyletter, which omits the
+-  % space.
+-  %
+-  % These can be used both for control words that take an argument and
+-  % those that do not.  If it is followed by {arg} in the input, then
+-  % that will dutifully get written to the index (or wherever).
+-  %
+-  \def\definedummyword##1{%
+-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
+-  }%
+-  \def\definedummyletter##1{%
+-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
+-  }%
+-  \let\definedummyaccent\definedummyletter
++  % I don't entirely understand this, but when an index entry is
++  % generated from a macro call, the \endinput which \scanmacro inserts
++  % causes processing to be prematurely terminated.  This is,
++  % apparently, because \indexsorttmp is fully expanded, and \endinput
++  % is an expandable command.  The redefinition below makes \endinput
++  % disappear altogether for that purpose -- although logging shows that
++  % processing continues to some further point.  On the other hand, it
++  % seems \endinput does not hurt in the printed index arg, since that
++  % is still getting written without apparent harm.
++  % 
++  % Sample source (mac-idx3.tex, reported by Graham Percival to
++  % help-texinfo, 22may06):
++  % @macro funindex {WORD}
++  % @findex xyz
++  % @end macro
++  % ...
++  % @funindex commtest
++  % 
++  % The above is not enough to reproduce the bug, but it gives the flavor.
++  % 
++  % Sample whatsit resulting:
++  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
++  % 
++  % So:
++  \let\endinput = \empty
+   %
+   % Do the redefinitions.
+   \commondummies
+ }
+ 
+-% For the aux file, @ is the escape character.  So we want to redefine
+-% everything using @ instead of \realbackslash.  When everything uses
+-% @, this will be simpler.
++% For the aux and toc files, @ is the escape character.  So we want to
++% redefine everything using @ as the escape character (instead of
++% \realbackslash, still used for index files).  When everything uses @,
++% this will be simpler.
+ %
+ \def\atdummies{%
+   \def\@{@@}%
+@@ -3164,147 +3496,152 @@
+   \let\{ = \lbraceatcmd
+   \let\} = \rbraceatcmd
+   %
+-  % (See comments in \indexdummies.)
+-  \def\definedummyword##1{%
+-    \expandafter\def\csname ##1\endcsname{@##1\space}%
+-  }%
+-  \def\definedummyletter##1{%
+-    \expandafter\def\csname ##1\endcsname{@##1}%
+-  }%
+-  \let\definedummyaccent\definedummyletter
+-  %
+   % Do the redefinitions.
+   \commondummies
++  \otherbackslash
+ }
+ 
+-% Called from \indexdummies and \atdummies.  \definedummyword and
+-% \definedummyletter must be defined first.
++% Called from \indexdummies and \atdummies.
+ %
+ \def\commondummies{%
+   %
+-  \normalturnoffactive
++  % \definedummyword defines \#1 as \string\#1\space, thus effectively
++  % preventing its expansion.  This is used only for control% words,
++  % not control letters, because the \space would be incorrect for
++  % control characters, but is needed to separate the control word
++  % from whatever follows.
++  %
++  % For control letters, we have \definedummyletter, which omits the
++  % space.
++  %
++  % These can be used both for control words that take an argument and
++  % those that do not.  If it is followed by {arg} in the input, then
++  % that will dutifully get written to the index (or wherever).
++  %
++  \def\definedummyword  ##1{\def##1{\string##1\space}}%
++  \def\definedummyletter##1{\def##1{\string##1}}%
++  \let\definedummyaccent\definedummyletter
+   %
+   \commondummiesnofonts
+   %
+-  \definedummyletter{_}%
++  \definedummyletter\_%
+   %
+   % Non-English letters.
+-  \definedummyword{AA}%
+-  \definedummyword{AE}%
+-  \definedummyword{L}%
+-  \definedummyword{OE}%
+-  \definedummyword{O}%
+-  \definedummyword{aa}%
+-  \definedummyword{ae}%
+-  \definedummyword{l}%
+-  \definedummyword{oe}%
+-  \definedummyword{o}%
+-  \definedummyword{ss}%
+-  \definedummyword{exclamdown}%
+-  \definedummyword{questiondown}%
+-  \definedummyword{ordf}%
+-  \definedummyword{ordm}%
++  \definedummyword\AA
++  \definedummyword\AE
++  \definedummyword\L
++  \definedummyword\OE
++  \definedummyword\O
++  \definedummyword\aa
++  \definedummyword\ae
++  \definedummyword\l
++  \definedummyword\oe
++  \definedummyword\o
++  \definedummyword\ss
++  \definedummyword\exclamdown
++  \definedummyword\questiondown
++  \definedummyword\ordf
++  \definedummyword\ordm
+   %
+   % Although these internal commands shouldn't show up, sometimes they do.
+-  \definedummyword{bf}%
+-  \definedummyword{gtr}%
+-  \definedummyword{hat}%
+-  \definedummyword{less}%
+-  \definedummyword{sf}%
+-  \definedummyword{sl}%
+-  \definedummyword{tclose}%
+-  \definedummyword{tt}%
++  \definedummyword\bf
++  \definedummyword\gtr
++  \definedummyword\hat
++  \definedummyword\less
++  \definedummyword\sf
++  \definedummyword\sl
++  \definedummyword\tclose
++  \definedummyword\tt
+   %
+-  \definedummyword{LaTeX}%
+-  \definedummyword{TeX}%
++  \definedummyword\LaTeX
++  \definedummyword\TeX
+   %
+   % Assorted special characters.
+-  \definedummyword{bullet}%
+-  \definedummyword{comma}%
+-  \definedummyword{copyright}%
+-  \definedummyword{registeredsymbol}%
+-  \definedummyword{dots}%
+-  \definedummyword{enddots}%
+-  \definedummyword{equiv}%
+-  \definedummyword{error}%
+-  \definedummyword{euro}%
+-  \definedummyword{expansion}%
+-  \definedummyword{minus}%
+-  \definedummyword{pounds}%
+-  \definedummyword{point}%
+-  \definedummyword{print}%
+-  \definedummyword{result}%
++  \definedummyword\bullet
++  \definedummyword\comma
++  \definedummyword\copyright
++  \definedummyword\registeredsymbol
++  \definedummyword\dots
++  \definedummyword\enddots
++  \definedummyword\equiv
++  \definedummyword\error
++  \definedummyword\euro
++  \definedummyword\expansion
++  \definedummyword\minus
++  \definedummyword\pounds
++  \definedummyword\point
++  \definedummyword\print
++  \definedummyword\result
++  \definedummyword\textdegree
++  %
++  % We want to disable all macros so that they are not expanded by \write.
++  \macrolist
++  %
++  \normalturnoffactive
+   %
+   % Handle some cases of @value -- where it does not contain any
+   % (non-fully-expandable) commands.
+   \makevalueexpandable
+-  %
+-  % Normal spaces, not active ones.
+-  \unsepspaces
+-  %
+-  % No macro expansion.
+-  \turnoffmacros
+ }
+ 
+ % \commondummiesnofonts: common to \commondummies and \indexnofonts.
+ %
+-% Better have this without active chars.
+-{
+-  \catcode`\~=\other
+-  \gdef\commondummiesnofonts{%
+-    % Control letters and accents.
+-    \definedummyletter{!}%
+-    \definedummyaccent{"}%
+-    \definedummyaccent{'}%
+-    \definedummyletter{*}%
+-    \definedummyaccent{,}%
+-    \definedummyletter{.}%
+-    \definedummyletter{/}%
+-    \definedummyletter{:}%
+-    \definedummyaccent{=}%
+-    \definedummyletter{?}%
+-    \definedummyaccent{^}%
+-    \definedummyaccent{`}%
+-    \definedummyaccent{~}%
+-    \definedummyword{u}%
+-    \definedummyword{v}%
+-    \definedummyword{H}%
+-    \definedummyword{dotaccent}%
+-    \definedummyword{ringaccent}%
+-    \definedummyword{tieaccent}%
+-    \definedummyword{ubaraccent}%
+-    \definedummyword{udotaccent}%
+-    \definedummyword{dotless}%
+-    %
+-    % Texinfo font commands.
+-    \definedummyword{b}%
+-    \definedummyword{i}%
+-    \definedummyword{r}%
+-    \definedummyword{sc}%
+-    \definedummyword{t}%
+-    %
+-    % Commands that take arguments.
+-    \definedummyword{acronym}%
+-    \definedummyword{cite}%
+-    \definedummyword{code}%
+-    \definedummyword{command}%
+-    \definedummyword{dfn}%
+-    \definedummyword{emph}%
+-    \definedummyword{env}%
+-    \definedummyword{file}%
+-    \definedummyword{kbd}%
+-    \definedummyword{key}%
+-    \definedummyword{math}%
+-    \definedummyword{option}%
+-    \definedummyword{samp}%
+-    \definedummyword{strong}%
+-    \definedummyword{tie}%
+-    \definedummyword{uref}%
+-    \definedummyword{url}%
+-    \definedummyword{var}%
+-    \definedummyword{verb}%
+-    \definedummyword{w}%
+-  }
++\def\commondummiesnofonts{%
++  % Control letters and accents.
++  \definedummyletter\!%
++  \definedummyaccent\"%
++  \definedummyaccent\'%
++  \definedummyletter\*%
++  \definedummyaccent\,%
++  \definedummyletter\.%
++  \definedummyletter\/%
++  \definedummyletter\:%
++  \definedummyaccent\=%
++  \definedummyletter\?%
++  \definedummyaccent\^%
++  \definedummyaccent\`%
++  \definedummyaccent\~%
++  \definedummyword\u
++  \definedummyword\v
++  \definedummyword\H
++  \definedummyword\dotaccent
++  \definedummyword\ringaccent
++  \definedummyword\tieaccent
++  \definedummyword\ubaraccent
++  \definedummyword\udotaccent
++  \definedummyword\dotless
++  %
++  % Texinfo font commands.
++  \definedummyword\b
++  \definedummyword\i
++  \definedummyword\r
++  \definedummyword\sc
++  \definedummyword\t
++  %
++  % Commands that take arguments.
++  \definedummyword\acronym
++  \definedummyword\cite
++  \definedummyword\code
++  \definedummyword\command
++  \definedummyword\dfn
++  \definedummyword\emph
++  \definedummyword\env
++  \definedummyword\file
++  \definedummyword\kbd
++  \definedummyword\key
++  \definedummyword\math
++  \definedummyword\option
++  \definedummyword\pxref
++  \definedummyword\ref
++  \definedummyword\samp
++  \definedummyword\strong
++  \definedummyword\tie
++  \definedummyword\uref
++  \definedummyword\url
++  \definedummyword\var
++  \definedummyword\verb
++  \definedummyword\w
++  \definedummyword\xref
+ }
+ 
+ % \indexnofonts is used when outputting the strings to sort the index
+@@ -3314,13 +3651,9 @@
+ %
+ \def\indexnofonts{%
+   % Accent commands should become @asis.
+-  \def\definedummyaccent##1{%
+-    \expandafter\let\csname ##1\endcsname\asis
+-  }%
++  \def\definedummyaccent##1{\let##1\asis}%
+   % We can just ignore other control letters.
+-  \def\definedummyletter##1{%
+-    \expandafter\def\csname ##1\endcsname{}%
+-  }%
++  \def\definedummyletter##1{\let##1\empty}%
+   % Hopefully, all control words can become @asis.
+   \let\definedummyword\definedummyaccent
+   %
+@@ -3373,9 +3706,19 @@
+   \def\point{.}%
+   \def\print{-|}%
+   \def\result{=>}%
++  \def\textdegree{degrees}%
+   %
+-  % Don't write macro names.
+-  \emptyusermacros
++  % We need to get rid of all macros, leaving only the arguments (if present).
++  % Of course this is not nearly correct, but it is the best we can do for now.
++  % makeinfo does not expand macros in the argument to @deffn, which ends up
++  % writing an index entry, and texindex isn't prepared for an index sort entry
++  % that starts with \.
++  % 
++  % Since macro invocations are followed by braces, we can just redefine them
++  % to take a single TeX argument.  The case of a macro invocation that
++  % goes to end-of-line is not handled.
++  % 
++  \macrolist
+ }
+ 
+ \let\indexbackslash=0  %overridden during \printindex.
+@@ -3422,7 +3765,6 @@
+   %
+   % Remember, we are within a group.
+   \indexdummies % Must do this here, since \bf, etc expand at this stage
+-  \escapechar=`\\
+   \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+       % so it will be output as is; and it will print as backslash.
+   %
+@@ -3713,9 +4055,9 @@
+   \endgroup
+ }
+ 
+-% Like \dotfill except takes at least 1 em.
++% Like plain.tex's \dotfill, except uses up at least 1 em.
+ \def\indexdotfill{\cleaders
+-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
++  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+ 
+ \def\primary #1{\line{#1\hfil}}
+ 
+@@ -4289,14 +4631,17 @@
+     \ifx\temptype\Ynothingkeyword
+       \setbox0 = \hbox{}%
+       \def\toctype{unnchap}%
+-      \def\thischapter{#1}%
++      \gdef\thischapternum{}%
++      \gdef\thischapter{#1}%
+     \else\ifx\temptype\Yomitfromtockeyword
+       \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+       \def\toctype{omit}%
+-      \xdef\thischapter{}%
++      \gdef\thischapternum{}%
++      \gdef\thischapter{}%
+     \else\ifx\temptype\Yappendixkeyword
+       \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+       \def\toctype{app}%
++      \xdef\thischapternum{\appendixletter}%
+       % We don't substitute the actual chapter name into \thischapter
+       % because we don't want its macros evaluated now.  And we don't
+       % use \thissection because that changes with each section.
+@@ -4306,6 +4651,7 @@
+     \else
+       \setbox0 = \hbox{#3\enspace}%
+       \def\toctype{numchap}%
++      \xdef\thischapternum{\the\chapno}%
+       \xdef\thischapter{\putwordChapter{} \the\chapno:
+                         \noexpand\thischaptername}%
+     \fi\fi\fi
+@@ -4417,13 +4763,21 @@
+       \gdef\thissection{#1}%
+     \fi\fi\fi
+     %
+-    % Write the toc entry (before \donoderef).  See comments in \chfplain.
++    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
+     \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+     %
+     % Write the node reference (= pdf destination for pdftex).
+-    % Again, see comments in \chfplain.
++    % Again, see comments in \chapmacro.
+     \donoderef{#3}%
+     %
++    % Interline glue will be inserted when the vbox is completed.
++    % That glue will be a valid breakpoint for the page, since it'll be
++    % preceded by a whatsit (usually from the \donoderef, or from the
++    % \writetocentry if there was no node).  We don't want to allow that
++    % break, since then the whatsits could end up on page n while the
++    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
++    \nobreak
++    %
+     % Output the actual section heading.
+     \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+           \hangindent=\wd0  % zero if no section number
+@@ -4482,11 +4836,11 @@
+     \fi
+     %
+     \iflinks
+-      \toks0 = {#2}%
+-      \toks2 = \expandafter{\lastnode}%
+-      \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
+-                               {\the\toks2}{\noexpand\folio}}}%
+-      \temp
++      {\atdummies
++       \edef\temp{%
++         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
++       \temp
++      }%
+     \fi
+   \fi
+   %
+@@ -4499,6 +4853,31 @@
+   \ifpdf \global\pdfmakepagedesttrue \fi
+ }
+ 
++
++% These characters do not print properly in the Computer Modern roman
++% fonts, so we must take special care.  This is more or less redundant
++% with the Texinfo input format setup at the end of this file.
++% 
++\def\activecatcodes{%
++  \catcode`\"=\active
++  \catcode`\$=\active
++  \catcode`\<=\active
++  \catcode`\>=\active
++  \catcode`\\=\active
++  \catcode`\^=\active
++  \catcode`\_=\active
++  \catcode`\|=\active
++  \catcode`\~=\active
++}
++
++
++% Read the toc file, which is essentially Texinfo input.
++\def\readtocfile{%
++  \setupdatafile
++  \activecatcodes
++  \input \jobname.toc
++}
++
+ \newskip\contentsrightmargin \contentsrightmargin=1in
+ \newcount\savepageno
+ \newcount\lastnegativepageno \lastnegativepageno = -1
+@@ -4520,11 +4899,7 @@
+   %
+   \savepageno = \pageno
+   \begingroup                  % Set up to handle contents files properly.
+-    \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
+-    % We can't do this, because then an actual ^ in a section
+-    % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
+-    %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
+-    \raggedbottom             % Worry more about breakpoints than the bottom.
++    \raggedbottom              % Worry more about breakpoints than the bottom.
+     \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+     %
+     % Roman numerals for page numbers.
+@@ -4537,7 +4912,7 @@
+   \startcontents{\putwordTOC}%
+     \openin 1 \jobname.toc
+     \ifeof 1 \else
+-      \input \jobname.toc
++      \readtocfile
+     \fi
+     \vfill \eject
+     \contentsalignmacro % in case @setchapternewpage odd is in effect
+@@ -4575,7 +4950,7 @@
+     \let\unnsubsubsecentry = \numsecentry
+     \openin 1 \jobname.toc
+     \ifeof 1 \else
+-      \input \jobname.toc
++      \readtocfile
+     \fi
+     \closein 1
+     \vfill \eject
+@@ -4717,7 +5092,7 @@
+ {\tentt \global\dimen0 = 3em}% Width of the box.
+ \dimen2 = .55pt % Thickness of rules
+ % The text. (`r' is open on the right, `e' somewhat less so on the left.)
+-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
++\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+ %
+ \setbox\errorbox=\hbox to \dimen0{\hfil
+    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+@@ -4765,6 +5140,7 @@
+   \let\/=\ptexslash
+   \let\*=\ptexstar
+   \let\t=\ptext
++  \let\frenchspacing=\plainfrenchspacing
+   %
+   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+   \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+@@ -4810,7 +5186,8 @@
+ 
+ \let\afterenvbreak = \aboveenvbreak
+ 
+-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
++% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
++% also clear it, so that its embedded environments do the narrowing again.
+ \let\nonarrowing=\relax
+ 
+ % @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+@@ -4847,7 +5224,7 @@
+ 				% each corner char, and rule thickness
+   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+   % Flag to tell @lisp, etc., not to narrow margin.
+-  \let\nonarrowing=\comment
++  \let\nonarrowing = t%
+   \vbox\bgroup
+       \baselineskip=0pt\parskip=0pt\lineskip=0pt
+       \carttop
+@@ -4887,11 +5264,11 @@
+   \parskip = 0pt
+   \parindent = 0pt
+   \emergencystretch = 0pt % don't try to avoid overfull boxes
+-  % @cartouche defines \nonarrowing to inhibit narrowing
+-  % at next level down.
+   \ifx\nonarrowing\relax
+     \advance \leftskip by \lispnarrowing
+     \exdentamount=\lispnarrowing
++  \else
++    \let\nonarrowing = \relax
+   \fi
+   \let\exdent=\nofillexdent
+ }
+@@ -4938,11 +5315,10 @@
+ %
+ \maketwodispenvs {lisp}{example}{%
+   \nonfillstart
+-  \tt
++  \tt\quoteexpand
+   \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+   \gobble       % eat return
+ }
+-
+ % @display/@smalldisplay: same as @lisp except keep current font.
+ %
+ \makedispenv {display}{%
+@@ -4991,6 +5367,7 @@
+     \advance\leftskip by \lispnarrowing
+     \advance\rightskip by \lispnarrowing
+     \exdentamount = \lispnarrowing
++  \else
+     \let\nonarrowing = \relax
+   \fi
+   \parsearg\quotationlabel
+@@ -5069,6 +5446,34 @@
+ \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+ %
+ \def\starttabbox{\setbox0=\hbox\bgroup}
++
++% Allow an option to not replace quotes with a regular directed right
++% quote/apostrophe (char 0x27), but instead use the undirected quote
++% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
++% the default, but it works for pasting with more pdf viewers (at least
++% evince), the lilypond developers report.  xpdf does work with the
++% regular 0x27.  
++% 
++\def\codequoteright{%
++  \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
++    '%
++  \else
++    \char'15
++  \fi
++}
++%
++% and a similar option for the left quote char vs. a grave accent.
++% Modern fonts display ASCII 0x60 as a grave accent, so some people like
++% the code environments to do likewise.
++% 
++\def\codequoteleft{%
++  \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
++    `%
++  \else
++    \char'22
++  \fi
++}
++%
+ \begingroup
+   \catcode`\^^I=\active
+   \gdef\tabexpand{%
+@@ -5081,15 +5486,25 @@
+       \wd0=\dimen0 \box0 \starttabbox
+     }%
+   }
++  \catcode`\'=\active
++  \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
++  %
++  \catcode`\`=\active
++  \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
++  %
++  \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+ \endgroup
++
++% start the verbatim environment.
+ \def\setupverbatim{%
++  \let\nonarrowing = t%
+   \nonfillstart
+-  \advance\leftskip by -\defbodyindent
+   % Easiest (and conventionally used) font for verbatim
+   \tt
+   \def\par{\leavevmode\egroup\box0\endgraf}%
+   \catcode`\`=\active
+   \tabexpand
++  \quoteexpand
+   % Respect line breaks,
+   % print special symbols as themselves, and
+   % make each space count
+@@ -5539,7 +5954,6 @@
+     \spaceisspace
+     %
+     % Append \endinput to make sure that TeX does not see the ending newline.
+-    %
+     % I've verified that it is necessary both for e-TeX and for ordinary TeX
+     %							--kasal, 29nov03
+     \scantokens{#1\endinput}%
+@@ -5554,8 +5968,19 @@
+ \newcount\paramno   % Count of parameters
+ \newtoks\macname    % Macro name
+ \newif\ifrecursive  % Is it recursive?
+-\def\macrolist{}    % List of all defined macros in the form
+-                    % \do\macro1\do\macro2...
++
++% List of all defined macros in the form
++%    \definedummyword\macro1\definedummyword\macro2...
++% Currently is also contains all @aliases; the list can be split
++% if there is a need.
++\def\macrolist{}
++
++% Add the macro to \macrolist
++\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
++\def\addtomacrolistxxx#1{%
++     \toks0 = \expandafter{\macrolist\definedummyword#1}%
++     \xdef\macrolist{\the\toks0}%
++}
+ 
+ % Utility routines.
+ % This does \let #1 = #2, with \csnames; that is,
+@@ -5653,10 +6078,7 @@
+      \else \errmessage{Macro name \the\macname\space already defined}\fi
+      \global\cslet{macsave.\the\macname}{\the\macname}%
+      \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+-     % Add the macroname to \macrolist
+-     \toks0 = \expandafter{\macrolist\do}%
+-     \xdef\macrolist{\the\toks0
+-       \expandafter\noexpand\csname\the\macname\endcsname}%
++     \addtomacrolist{\the\macname}%
+   \fi
+   \begingroup \macrobodyctxt
+   \ifrecursive \expandafter\parsermacbody
+@@ -5670,7 +6092,7 @@
+     % Remove the macro name from \macrolist:
+     \begingroup
+       \expandafter\let\csname#1\endcsname \relax
+-      \let\do\unmacrodo
++      \let\definedummyword\unmacrodo
+       \xdef\macrolist{\macrolist}%
+     \endgroup
+   \else
+@@ -5682,10 +6104,10 @@
+ % macro definitions that have been changed to \relax.
+ %
+ \def\unmacrodo#1{%
+-  \ifx#1\relax
++  \ifx #1\relax
+     % remove this
+   \else
+-    \noexpand\do \noexpand #1%
++    \noexpand\definedummyword \noexpand#1%
+   \fi
+ }
+ 
+@@ -5798,30 +6220,11 @@
+ % {.  If so it reads up to the closing }, if not, it reads the whole
+ % line.  Whatever was read is then fed to the next control sequence
+ % as an argument (by \parsebrace or \parsearg)
+-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
++\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+ \def\braceorlinexxx{%
+   \ifx\nchar\bgroup\else
+     \expandafter\parsearg
+-  \fi \next}
+-
+-% We want to disable all macros during \shipout so that they are not
+-% expanded by \write.
+-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
+-  \edef\next{\macrolist}\expandafter\endgroup\next}
+-
+-% For \indexnofonts, we need to get rid of all macros, leaving only the
+-% arguments (if present).  Of course this is not nearly correct, but it
+-% is the best we can do for now.  makeinfo does not expand macros in the
+-% argument to @deffn, which ends up writing an index entry, and texindex
+-% isn't prepared for an index sort entry that starts with \.
+-% 
+-% Since macro invocations are followed by braces, we can just redefine them
+-% to take a single TeX argument.  The case of a macro invocation that
+-% goes to end-of-line is not handled.
+-% 
+-\def\emptyusermacros{\begingroup
+-  \def\do##1{\let\noexpand##1=\noexpand\asis}%
+-  \edef\next{\macrolist}\expandafter\endgroup\next}
++  \fi \macnamexxx}
+ 
+ 
+ % @alias.
+@@ -5832,6 +6235,7 @@
+ \def\aliasyyy #1=#2\relax{%
+   {%
+     \expandafter\let\obeyedspace=\empty
++    \addtomacrolist{#1}%
+     \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+   }%
+   \next
+@@ -5901,8 +6305,6 @@
+   \iflinks
+     {%
+       \atdummies  % preserve commands, but don't expand them
+-      \turnoffactive
+-      \otherbackslash
+       \edef\writexrdef##1##2{%
+ 	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+ 	  ##1}{##2}}% these are parameters of \writexrdef
+@@ -5956,13 +6358,17 @@
+   \ifpdf
+     \leavevmode
+     \getfilename{#4}%
+-    {\turnoffactive \otherbackslash
++    {\turnoffactive
++     % See comments at \activebackslashdouble.
++     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
++      \backslashparens\pdfxrefdest}%
++     %
+      \ifnum\filenamelength>0
+        \startlink attr{/Border [0 0 0]}%
+-         goto file{\the\filename.pdf} name{#1}%
++         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+      \else
+        \startlink attr{/Border [0 0 0]}%
+-         goto name{\pdfmkpgn{#1}}%
++         goto name{\pdfmkpgn{\pdfxrefdest}}%
+      \fi
+     }%
+     \linkcolor
+@@ -5976,7 +6382,6 @@
+     % include an _ in the xref name, etc.
+     \indexnofonts
+     \turnoffactive
+-    \otherbackslash
+     \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+       \csname XR#1-title\endcsname
+   }%
+@@ -5984,7 +6389,7 @@
+     % If the user specified the print name (third arg) to the ref,
+     % print it instead of our usual "Figure 1.2".
+     \ifdim\wd0 = 0pt
+-      \refx{#1-snt}%
++      \refx{#1-snt}{}%
+     \else
+       \printedrefname
+     \fi
+@@ -6011,7 +6416,7 @@
+       % into the usual \leavevmode...\vrule stuff for purposes of
+       % printing. So we \turnoffactive for the \refx-snt, back on for the
+       % printing, back off for the \refx-pg.
+-      {\turnoffactive \otherbackslash
++      {\turnoffactive
+        % Only output a following space if the -snt ref is nonempty; for
+        % @unnumbered and @anchor, it won't be.
+        \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+@@ -6024,7 +6429,7 @@
+       ,\space
+       %
+       % output the `page 3'.
+-      \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
++      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+     \fi
+   \fi
+   \endlink
+@@ -6127,13 +6532,13 @@
+ \def\tryauxfile{%
+   \openin 1 \jobname.aux
+   \ifeof 1 \else
+-    \readauxfile
++    \readdatafile{aux}%
+     \global\havexrefstrue
+   \fi
+   \closein 1
+ }
+ 
+-\def\readauxfile{\begingroup
++\def\setupdatafile{%
+   \catcode`\^^@=\other
+   \catcode`\^^A=\other
+   \catcode`\^^B=\other
+@@ -6202,11 +6607,11 @@
+   %
+   % Make the characters 128-255 be printing characters.
+   {%
+-    \count 1=128
++    \count1=128
+     \def\loop{%
+-      \catcode\count 1=\other
+-      \advance\count 1 by 1
+-      \ifnum \count 1<256 \loop \fi
++      \catcode\count1=\other
++      \advance\count1 by 1
++      \ifnum \count1<256 \loop \fi
+     }%
+   }%
+   %
+@@ -6214,10 +6619,13 @@
+   \catcode`\{=1
+   \catcode`\}=2
+   \catcode`\@=0
+-  %
+-  \input \jobname.aux
+-\endgroup}
++}
+ 
++\def\readdatafile#1{%
++\begingroup
++  \setupdatafile
++  \input\jobname.#1
++\endgroup}
+ 
+ \message{insertions,}
+ % including footnotes.
+@@ -6411,7 +6819,7 @@
+     % above and below.
+     \nobreak\vskip\parskip
+     \nobreak
+-    \line\bgroup\hss
++    \line\bgroup
+   \fi
+   %
+   % Output the image.
+@@ -6424,7 +6832,7 @@
+     \epsfbox{#1.eps}%
+   \fi
+   %
+-  \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
++  \ifimagevmode \egroup \bigbreak \fi  % space after the image
+ \endgroup}
+ 
+ 
+@@ -6564,7 +6972,8 @@
+       % \floatlabel-lof.  Besides \floatident, we include the short
+       % caption if specified, else the full caption if specified, else nothing.
+       {%
+-        \atdummies \turnoffactive \otherbackslash
++        \atdummies
++        %
+         % since we read the caption text in the macro world, where ^^M
+         % is turned into a normal character, we have to scan it back, so
+         % we don't write the literal three characters "^^M" into the aux file.
+@@ -6585,8 +6994,9 @@
+   %
+   % place the captured inserts
+   %
+-  % BEWARE: when the floats start float, we have to issue warning whenever an
+-  % insert appears inside a float which could possibly float. --kasal, 26may04
++  % BEWARE: when the floats start floating, we have to issue warning
++  % whenever an insert appears inside a float which could possibly
++  % float. --kasal, 26may04
+   %
+   \checkinserts
+ }
+@@ -6754,9 +7164,9 @@
+   \fi
+ }
+ 
+-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
+-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
+-% physical page width.
++% Parameters in order: 1) textheight; 2) textwidth;
++% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
++% 7) physical page height; 8) physical page width.
+ %
+ % We also call \setleading{\textleading}, so the caller should define
+ % \textleading.  The caller should also set \parskip.
+@@ -6803,7 +7213,7 @@
+                     {11in}{8.5in}%
+ }}
+ 
+-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
++% Use @smallbook to reset parameters for 7x9.25 trim size.
+ \def\smallbook{{\globaldefs = 1
+   \parskip = 2pt plus 1pt
+   \textleading = 12pt
+@@ -6820,6 +7230,24 @@
+   \defbodyindent = .5cm
+ }}
+ 
++% Use @smallerbook to reset parameters for 6x9 trim size.
++% (Just testing, parameters still in flux.)
++\def\smallerbook{{\globaldefs = 1
++  \parskip = 1.5pt plus 1pt
++  \textleading = 12pt
++  %
++  \internalpagesizes{7.4in}{4.8in}%
++                    {-.2in}{-.4in}%
++                    {0pt}{14pt}%
++                    {9in}{6in}%
++  %
++  \lispnarrowing = 0.25in
++  \tolerance = 700
++  \hfuzz = 1pt
++  \contentsrightmargin = 0pt
++  \defbodyindent = .4cm
++}}
++
+ % Use @afourpaper to print on European A4 paper.
+ \def\afourpaper{{\globaldefs = 1
+   \parskip = 3pt plus 2pt minus 1pt
+@@ -6972,6 +7400,7 @@
+ 
+ \catcode`\_=\active
+ \def_{\ifusingtt\normalunderscore\_}
++\let\realunder=_
+ % Subroutine for the previous macro.
+ \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+ 
+@@ -6994,6 +7423,13 @@
+ % \otherifyactive is called near the end of this file.
+ \def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+ 
++% Used sometimes to turn off (effectively) the active characters even after
++% parsing them.
++\def\turnoffactive{%
++  \normalturnoffactive
++  \otherbackslash
++}
++
+ \catcode`\@=0
+ 
+ % \backslashcurfont outputs one backslash character in current font,
+@@ -7001,27 +7437,29 @@
+ \global\chardef\backslashcurfont=`\\
+ \global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+ 
++% \realbackslash is an actual character `\' with catcode other, and
++% \doublebackslash is two of them (for the pdf outlines).
++{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
++
++% In texinfo, backslash is an active character; it prints the backslash
++% in fixed width font.
++\catcode`\\=\active
++@def@normalbackslash{{@tt@backslashcurfont}}
++% On startup, @fixbackslash assigns:
++%  @let \ = @normalbackslash
++
+ % \rawbackslash defines an active \ to do \backslashcurfont.
+ % \otherbackslash defines an active \ to be a literal `\' character with
+ % catcode other.
+-{\catcode`\\=\active
+- @gdef@rawbackslash{@let\=@backslashcurfont}
+- @gdef@otherbackslash{@let\=@realbackslash}
+-}
+-
+-% \realbackslash is an actual character `\' with catcode other.
+-{\catcode`\\=\other @gdef@realbackslash{\}}
++@gdef@rawbackslash{@let\=@backslashcurfont}
++@gdef@otherbackslash{@let\=@realbackslash}
+ 
+-% \normalbackslash outputs one backslash in fixed width font.
+-\def\normalbackslash{{\tt\backslashcurfont}}
+-
+-\catcode`\\=\active
+-
+-% Used sometimes to turn off (effectively) the active characters
+-% even after parsing them.
+-@def@turnoffactive{%
++% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
++% the literal character `\'.
++% 
++@def@normalturnoffactive{%
++  @let\=@normalbackslash
+   @let"=@normaldoublequote
+-  @let\=@realbackslash
+   @let~=@normaltilde
+   @let^=@normalcaret
+   @let_=@normalunderscore
+@@ -7033,12 +7471,6 @@
+   @unsepspaces
+ }
+ 
+-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+-% the literal character `\'.  (Thus, \ is not expandable when this is in
+-% effect.)
+-%
+-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
+-
+ % Make _ and + \other characters, temporarily.
+ % This is canceled by @fixbackslash.
+ @otherifyactive
+@@ -7051,9 +7483,9 @@
+ @global@let\ = @eatinput
+ 
+ % On the other hand, perhaps the file did not have a `\input texinfo'. Then
+-% the first `\{ in the file would cause an error. This macro tries to fix
++% the first `\' in the file would cause an error. This macro tries to fix
+ % that, assuming it is called before the first `\' could plausibly occur.
+-% Also back turn on active characters that might appear in the input
++% Also turn back on active characters that might appear in the input
+ % file name, in case not using a pre-dumped format.
+ %
+ @gdef@fixbackslash{%
+diff -Naur glibc-2.7.orig/nptl/sysdeps/powerpc/tcb-offsets.sym glibc-2.7/nptl/sysdeps/powerpc/tcb-offsets.sym
+--- glibc-2.7.orig/nptl/sysdeps/powerpc/tcb-offsets.sym	2007-05-26 13:13:18.000000000 -0700
++++ glibc-2.7/nptl/sysdeps/powerpc/tcb-offsets.sym	2007-10-25 20:52:42.000000000 -0700
+@@ -15,4 +15,7 @@
+ PID				thread_offsetof (pid)
+ TID				thread_offsetof (tid)
+ POINTER_GUARD			(offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
+-PRIVATE_FUTEX_OFFSET		thread_offsetof (header.private_futex)
++#ifndef __ASSUME_PRIVATE_FUTEX
++PRIVATE_FUTEX_OFFSET		offsetof (tcbhead_t, private_futex)
++#endif
++
