summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--manual/texinfo.tex485
-rw-r--r--timezone/africa30
-rw-r--r--timezone/antarctica12
-rw-r--r--timezone/asia10
-rw-r--r--timezone/australasia17
-rw-r--r--timezone/europe129
-rw-r--r--timezone/iso3166.tab11
-rw-r--r--timezone/northamerica10
-rw-r--r--timezone/tzselect.ksh12
-rw-r--r--timezone/zone.tab7
11 files changed, 546 insertions, 187 deletions
diff --git a/ChangeLog b/ChangeLog
index f56182caca..4489a8a414 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,16 @@
 
 	* manual/texinfo.tex: Update to last available version.
 
+	* timezone/africa: Update from tzdata1998e.
+	* timezone/antarctica: Likewise.
+	* timezone/asia: Likewise.
+	* timezone/australasia: Likewise.
+	* timezone/europe: Likewise.
+	* timezone/iso3166.tab: Likewise.
+	* timezone/northamerica: Likewise.
+	* timezone/tzselect.ksh: Likewise.
+	* timezone/zone.tab: Likewise.
+
 1998-05-27  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/unix/sysv/linux/i386/chown.c: Fix comment.
diff --git a/manual/texinfo.tex b/manual/texinfo.tex
index bd5c5522d0..2d29734ef0 100644
--- a/manual/texinfo.tex
+++ b/manual/texinfo.tex
@@ -1,5 +1,5 @@
 % texinfo.tex -- TeX macros to handle Texinfo files.
-% $Id: texinfo.tex,v 2.214 1998/04/13 16:40:45 drepper Exp $
+% $Id: texinfo.tex,v 2.215 1998/05/29 09:03:23 drepper Exp $
 %
 % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
 % Free Software Foundation, Inc.
@@ -27,7 +27,7 @@
 % reports; you can get the latest version from:
 % /home/gd/gnu/doc/texinfo.tex on the GNU machines.
 % ftp://ftp.gnu.org/pub/gnu/texinfo.tex
-% (and all GNU mirrors)
+% (and all GNU mirrors, see ftp://ftp.gnu.org/pub/gnu/README.mirrors)
 % ftp://tug.org/tex/texinfo.tex
 % ftp://ctan.org/macros/texinfo/texinfo.tex
 % (and all CTAN mirrors, finger ctan@tug.org for a list).
@@ -60,7 +60,7 @@
 
 % This automatically updates the version number based on RCS.
 \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 2.214 $
+\deftexinfoversion$Revision: 2.215 $
 \message{Loading texinfo package [Version \texinfoversion]:}
 
 % If in a .fmt file, print the version number
@@ -98,18 +98,20 @@
 % starts a new line in the output.
 \newlinechar = `^^J
 
-% Set up fixed words for English.
-\ifx\putwordChapter\undefined{\gdef\putwordChapter{Chapter}}\fi%
-\def\putwordInfo{Info}%
-\ifx\putwordSee\undefined{\gdef\putwordSee{See}}\fi%
-\ifx\putwordsee\undefined{\gdef\putwordsee{see}}\fi%
-\ifx\putwordfile\undefined{\gdef\putwordfile{file}}\fi%
-\ifx\putwordpage\undefined{\gdef\putwordpage{page}}\fi%
-\ifx\putwordsection\undefined{\gdef\putwordsection{section}}\fi%
-\ifx\putwordSection\undefined{\gdef\putwordSection{Section}}\fi%
-\ifx\putwordTableofContents\undefined{\gdef\putwordTableofContents{Table of Contents}}\fi%
-\ifx\putwordShortContents\undefined{\gdef\putwordShortContents{Short Contents}}\fi%
-\ifx\putwordAppendix\undefined{\gdef\putwordAppendix{Appendix}}\fi%
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined  \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined     \gdef\putwordfile{file}\fi
+\ifx\putwordInfo\undefined     \gdef\putwordfile{Info}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordon\undefined       \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined     \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined  \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined  \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined      \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined      \gdef\putwordSee{See}\fi
+\ifx\putwordShortContents\undefined  \gdef\putwordShortContents{Short Contents}\fi
+\ifx\putwordTableofContents\undefined\gdef\putwordTableofContents{Table of Contents}\fi
 
 % Ignore a token.
 %
@@ -963,13 +965,24 @@ where each line of input produces a line of output.}
 \def\value{\begingroup
   \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
   \valuexxx}
-\def\valuexxx#1{%
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we \let\value to this in \indexdummies).  Ones
+% whose names contain - or _ still won't work, but we can't do anything
+% about that.  The command has to be fully expandable, since the result
+% winds up in the index file.  This means that if the variable's value
+% contains other Texinfo commands, it's almost certain it will fail
+% (although perhaps we could fix that with sufficient work to do a
+% one-level expansion on the result, instead of complete).
+% 
+\def\expandablevalue#1{%
   \expandafter\ifx\csname SET#1\endcsname\relax
-    {\{No value for ``#1''\}}%
+    {[No value for ``#1'']v}%
   \else
     \csname SET#1\endcsname
   \fi
-\endgroup}
+}
 
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
@@ -1077,12 +1090,21 @@ where each line of input produces a line of output.}
 % @refill is a no-op.
 \let\refill=\relax
 
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
 % @setfilename is done at the beginning of every texinfo file.
 % So open here the files we need to have open while reading the input.
 % This makes it possible to make a .fmt file for texinfo.
 \def\setfilename{%
-   \readauxfile
-   \opencontents
+   \iflinks 
+     \readauxfile
+     \opencontents
+   \fi % \openindices needs to do some work in any case.
    \openindices
    \fixbackslash  % Turn off hack to swallow `\input texinfo'.
    \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
@@ -1896,7 +1918,7 @@ July\or August\or September\or October\or November\or December\fi
 \def\itemize{\parsearg\itemizezzz}
 
 \def\itemizezzz #1{%
-  \begingroup % ended by the @end itemsize
+  \begingroup % ended by the @end itemize
   \itemizey {#1}{\Eitemize}
 }
 
@@ -2262,12 +2284,14 @@ width0pt\relax} \fi
 % the file that accumulates this index.  The file's extension is foo.
 % The name of an index should be no more than 2 characters long
 % for the sake of vms.
-
-\def\newindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
-\noexpand\doindex {#1}}
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
 }
 
 % @defindex foo  ==  \newindex{foo}
@@ -2276,11 +2300,13 @@ width0pt\relax} \fi
 
 % Define @defcodeindex, like @defindex except put all entries in @code.
 
-\def\newcodeindex #1{
-\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
-\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-\expandafter\xdef\csname#1index\endcsname{%     % Define \xxxindex
-\noexpand\docodeindex {#1}}
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}
 }
 
 \def\defcodeindex{\parsearg\newcodeindex}
@@ -2325,6 +2351,7 @@ width0pt\relax} \fi
 \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
 
 \def\indexdummies{%
+\def\ { }%
 % Take care of the plain tex accent commands.
 \def\"{\realbackslash "}%
 \def\`{\realbackslash `}%
@@ -2366,7 +2393,6 @@ width0pt\relax} \fi
 \def\gtr{\realbackslash gtr}%
 \def\less{\realbackslash less}%
 \def\hat{\realbackslash hat}%
-%\def\char{\realbackslash char}%
 \def\TeX{\realbackslash TeX}%
 \def\dots{\realbackslash dots }%
 \def\result{\realbackslash result}%
@@ -2393,7 +2419,12 @@ width0pt\relax} \fi
 \def\kbd##1{\realbackslash kbd {##1}}%
 \def\dfn##1{\realbackslash dfn {##1}}%
 \def\emph##1{\realbackslash emph {##1}}%
-\def\value##1{\realbackslash value {##1}}%
+%
+% Handle some cases of @value -- where the variable name does not
+% contain - or _, and the value does not contain any
+% (non-fully-expandable) commands.
+\let\value = \expandablevalue
+%
 \unsepspaces
 }
 
@@ -2466,14 +2497,24 @@ width0pt\relax} \fi
 % so we do not become unable to do a definition.
 
 {\catcode`\@=0 \catcode`\\=\other
-@gdef@realbackslash{\}}
+ @gdef@realbackslash{\}}
 
 \let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% For \ifx comparisons.
+\def\emptymacro{\empty}
 
-\let\SETmarginindex=\relax %initialize!
-% workhorse for all \fooindexes
-% #1 is name of index, #2 is stuff to put there
-\def\doind #1#2{%
+% Most index entries go through here, but \dosubind is the general case.
+% 
+\def\doind#1#2{\dosubind{#1}{#2}\empty}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% \empty if called from \doind, as we usually are.  The main exception
+% is with defuns, which call us directly.
+% 
+\def\dosubind#1#2#3{%
   % Put the index entry in the margin if desired.
   \ifx\SETmarginindex\relax\else
     \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
@@ -2484,13 +2525,22 @@ width0pt\relax} \fi
       \indexdummies % Must do this here, since \bf, etc expand at this stage
       \escapechar=`\\
       {%
-        \let\folio=0% We will expand all macros now EXCEPT \folio.
+        \let\folio = 0% We will expand all macros now EXCEPT \folio.
         \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
         % so it will be output as is; and it will print as backslash.
         %
+        \def\thirdarg{#3}%
+        %
+        % If third arg is present, precede it with space in sort key.
+        \ifx\thirdarg\emptymacro
+          \let\subentry = \empty
+        \else
+          \def\subentry{ #3}%
+        \fi
+        %
         % First process the index-string with all font commands turned off
         % to get the string to sort by.
-        {\indexnofonts \xdef\indexsorttmp{#2}}%
+        {\indexnofonts \xdef\indexsorttmp{#2\subentry}}%
         %
         % Now produce the complete index entry, with both the sort key and the
         % original text, including any font commands.
@@ -2499,33 +2549,35 @@ width0pt\relax} \fi
           \write\csname#1indfile\endcsname{%
             \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
         }%
-        \temp
+        %
+        % If third (subentry) arg is present, add it to the index string.
+        \ifx\thirdarg\emptymacro \else
+          \toks0 = {#3}%
+          \edef\temp{\temp{\the\toks0}}%
+        \fi
+        %
+        % If a skip is the last thing on the list now, preserve it
+        % by backing up by \lastskip, doing the \write, then inserting
+        % the skip again.  Otherwise, the whatsit generated by the
+        % \write will make \lastskip zero.  The result is that sequences
+        % like this:
+        % @end defun
+        % @tindex whatever
+        % @defun ...
+        % will have extra space inserted, because the \medbreak in the
+        % start of the @defun won't see the skip inserted by the @end of
+        % the previous defun.
+        \iflinks
+          \skip0 = \lastskip \ifdim\lastskip = 0pt \else \vskip-\lastskip \fi
+          \temp
+          \ifdim\skip0 = 0pt \else \vskip\skip0 \fi
+        \fi
       }%
     }%
     \penalty\count255
   }%
 }
 
-\def\dosubind #1#2#3{%
-{\count10=\lastpenalty %
-{\indexdummies % Must do this here, since \bf, etc expand at this stage
-\escapechar=`\\%
-{\let\folio=0%
-\def\rawbackslashxx{\indexbackslash}%
-%
-% Now process the index-string once, with all font commands turned off,
-% to get the string to sort the index by.
-{\indexnofonts
-\xdef\temp1{#2 #3}%
-}%
-% Now produce the complete index entry.  We process the index-string again,
-% this time with font commands expanded, to get what to print in the index.
-\edef\temp{%
-\write \csname#1indfile\endcsname{%
-\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
-\temp }%
-}\penalty\count10}}
-
 % The index entry written in the file actually looks like
 %  \entry {sortstring}{page}{topic}
 % or
@@ -2949,7 +3001,7 @@ width0pt\relax} \fi
 \toks0 = {#1}%
 \edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp  %
+\iflinks \write\contentsfile\temp \fi
 \donoderef %
 \global\let\section = \numberedsec
 \global\let\subsection = \numberedsubsec
@@ -2970,7 +3022,7 @@ width0pt\relax} \fi
 \edef\temp{{\realbackslash chapentry{\the\toks0}%
   {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp  %
+\iflinks \write\contentsfile\temp \fi
 \appendixnoderef %
 \global\let\section = \appendixsec
 \global\let\subsection = \appendixsubsec
@@ -3005,7 +3057,7 @@ width0pt\relax} \fi
 \toks0 = {#1}%
 \edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp  %
+\iflinks \write\contentsfile\temp \fi
 \unnumbnoderef %
 \global\let\section = \unnumberedsec
 \global\let\subsection = \unnumberedsubsec
@@ -3022,7 +3074,7 @@ width0pt\relax} \fi
 \edef\temp{{\realbackslash secentry %
 {\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \donoderef %
 \penalty 10000 %
 }}
@@ -3038,7 +3090,7 @@ width0pt\relax} \fi
 \edef\temp{{\realbackslash secentry %
 {\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \appendixnoderef %
 \penalty 10000 %
 }}
@@ -3051,7 +3103,7 @@ width0pt\relax} \fi
 \toks0 = {#1}%
 \edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \unnumbnoderef %
 \penalty 10000 %
 }}
@@ -3066,7 +3118,7 @@ width0pt\relax} \fi
 \edef\temp{{\realbackslash subsecentry %
 {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \donoderef %
 \penalty 10000 %
 }}
@@ -3081,7 +3133,7 @@ width0pt\relax} \fi
 \edef\temp{{\realbackslash subsecentry %
 {\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \appendixnoderef %
 \penalty 10000 %
 }}
@@ -3094,7 +3146,7 @@ width0pt\relax} \fi
 \toks0 = {#1}%
 \edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \unnumbnoderef %
 \penalty 10000 %
 }}
@@ -3111,7 +3163,7 @@ width0pt\relax} \fi
   {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
   {\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \donoderef %
 \penalty 10000 %
 }}
@@ -3128,7 +3180,7 @@ width0pt\relax} \fi
   {\appendixletter}
   {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \appendixnoderef %
 \penalty 10000 %
 }}
@@ -3141,7 +3193,7 @@ width0pt\relax} \fi
 \toks0 = {#1}%
 \edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}%
 \escapechar=`\\%
-\write \contentsfile \temp %
+\iflinks \write\contentsfile\temp \fi
 \unnumbnoderef %
 \penalty 10000 %
 }}
@@ -3924,7 +3976,12 @@ width0pt\relax} \fi
 \catcode 61=\active % 61 is `='
 \obeylines\activeparens\spacesplit#3}
 
-\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
+% #1 is the \E... control sequence to end the definition (which we define).
+% #2 is the \...x control sequence for consecutive fns (which we define).
+% #3 is the control sequence to call to resume processing.
+% #4, delimited by the space, is the class name.
+% 
+\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
 \medbreak %
 % Define the end token that this defining construct specifies
 % so that it will exit this group.
@@ -3935,6 +3992,24 @@ width0pt\relax} \fi
 \exdentamount=\defbodyindent
 \begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
 
+% @deftypemethod has an extra argument that nothing else does.  Sigh.
+% #1 is the \E... control sequence to end the definition (which we define).
+% #2 is the \...x control sequence for consecutive fns (which we define).
+% #3 is the control sequence to call to resume processing.
+% #4, delimited by the space, is the class name.
+% #5 is the method's return type.
+% 
+\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
+
 \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
 \medbreak %
 % Define the end token that this defining construct specifies
@@ -4152,39 +4227,46 @@ width0pt\relax} \fi
 \def\defspecx #1 {\errmessage{@defspecx in invalid context}}
 \def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}}
 \def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}}
+\def\deftypefunx #1 {\errmessage{@deftypeunx in invalid context}}
 
 % @defmethod, and so on
 
-% @defop {Funny Method} foo-class frobnicate argument
+% @defop CATEGORY CLASS OPERATION ARG...
 
 \def\defop #1 {\def\defoptype{#1}%
 \defopparsebody\Edefop\defopx\defopheader\defoptype}
 
 \def\defopheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
+\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index
 \begingroup\defname {#2}{\defoptype{} on #1}%
 \defunargs {#3}\endgroup %
 }
 
-% @deftypemethod foo-class return-type foo-method args
+% @deftypemethod CLASS RETURN-TYPE METHOD ARG...
 %
 \def\deftypemethod{%
-  \defmethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
+  \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
 %
 % #1 is the class name, #2 the data type, #3 the method name, #4 the args.
 \def\deftypemethodheader#1#2#3#4{%
-  \deftypefnheaderx{Method on #1}{#2}#3 #4\relax
+  \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
+  \begingroup
+    \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}%
+    \deftypefunargs{#4}%
+  \endgroup
 }
 
 % @defmethod == @defop Method
-
+%
 \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-
-\def\defmethodheader #1#2#3{%
-\dosubind {fn}{\code{#2}}{on #1}% entry in function index
-\begingroup\defname {#2}{Method on #1}%
-\defunargs {#3}\endgroup %
+%
+% #1 is the class name, #2 the method name, #3 the args.
+\def\defmethodheader#1#2#3{%
+  \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
+  \begingroup
+    \defname{#2}{\putwordMethodon\ \code{#1}}%
+    \defunargs{#3}%
+  \endgroup
 }
 
 % @defcv {Class Option} foo-class foo-flag
@@ -4301,7 +4383,205 @@ width0pt\relax} \fi
 \def\deftpx #1 {\errmessage{@deftpx in invalid context}}
 
 
-\message{cross reference,}
+\message{macros,}
+% @macro.
+% The basic scheme is as follows:
+% We read the first line and split it up into macro name and parameter
+% list.  We then walk the parameter list defining control sequences
+% named \MAC@<macro name><parameter name>.  Each expands to another
+% control sequence named \MAC@<macro name>.<parameter number>.  Those
+% control sequences will be defined at macro runtime to be the
+% parameter expansion text.
+%
+% The body is then read in as a single argument in a context where \
+% is an active character, and the cs \MACb.<macro name> is defined as
+% the macro body.  The active character \ takes one argument delimited
+% by another \, and uses it to index the table of macro arguments
+% described above.
+%
+% Finally, we define a control sequence \<macro name> which calls one
+% of the six (!) macro execution commands.  These six commands
+% correspond to recursive and nonrecursive macros with no, one, and
+% many arguments.  They all take one argument, <macro name>, set up
+% the environment appropriately, and call the real macro.
+%
+% \macsave@<macro name> holds the old definition of \<macro name>.  
+
+\newcount\paramno
+\newtoks\macname
+
+% This does \let #1 = #2, except with \csnames.
+\def\cslet#1#2{%
+\expandafter\expandafter\expandafter
+\let
+\expandafter\expandafter
+\csname#1\endcsname
+\csname#2\endcsname}
+
+% We have to play lots of games with the catcodes.  Initially { and }
+% are made `other' so that \splitarg (below) can use them as argument
+% delimiters.  Then - is made a letter so that \iimacro can recognize
+% @allow-recursion.
+\def\macro{\bgroup\catcode`\{=\other\catcode`\}=\other\parsearg\imacro}
+\def\imacro#1{\egroup  % started in \macro
+  \splitarg{#1}%         now \macname is the macname and \toks0 the arglist
+  \paramno=0%
+  \edef\tmp{\the\toks0}%
+  \ifx\tmp\empty       % no arguments
+  \else
+     \expandafter\parsemargdef \the\toks0;% 
+  \fi
+  \bgroup\catcode`\-=11\global\futurelet\nxt\iimacro}
+
+% \imacro has noted whether the macro takes one, two, or many
+% arguments (in \paramno). \iimacro figures out whether it's
+% recursive, and then uses the argument count and the recursivity to
+% select one of the six macro execution sequences.  Then we save the
+% original definition of @foo in \macsave@foo, and define @foo to call
+% the selected execution sequence.  \edef conveniently just expands
+% the token registers, not the deep structure.
+\def\iimacro{%
+  \egroup % started in \imacro
+  \ifx\nxt\allowrecur
+    \let\next\parserbody
+    \toks0=\expandafter{\csname dormacro\ifcase\paramno na\or oa\fi\endcsname}%
+  \else
+    \let\next\parsebody
+    \toks0=\expandafter{\csname domacro\ifcase\paramno na\or oa\fi\endcsname}%
+  \fi
+  \expandafter\ifx \csname macsave@\the\macname\endcsname \relax
+    \cslet{macsave@\the\macname}{\the\macname}%
+  \else
+    \errmessage{warning: redefining macro \the\macname}%
+  \fi
+  \expandafter\edef\csname\the\macname\endcsname{\the\toks0{\the\macname}}%
+\next}
+
+% @allow-recursion is noticed and handled by \iimacro.  It should
+% never actually be executed.  It has two names so we don't need
+% strange catcodes while defining \iimacro.
+\def\allowrecur{\errmessage{Internal error: \noexpand\allowrecur executed}}
+{\catcode`\-=11\global\let\allow-recursion\allowrecur}
+
+% unmacro just restores the old meaning; the MAC@<macname> macros
+% remain defined.  (Memory leak!)  \norecurse is defined below, near
+% the execution commands.
+\def\unmacro{\parsearg\iunmacro}
+\def\iunmacro#1{\macname={#1} \norecurse}
+
+% We need {} to be ordinary inside these commands. [] are temporary
+% grouping symbols.
+\begingroup
+\catcode`\{=\other \catcode`\}=\other
+\catcode`\[=1  \catcode`\]=2
+
+% @macro can be called with or without a brace-surrounded macro
+% argument list.  These three sequences extract the macro name and arg
+% list in hopefully all cases.  *Note, anything on the line after the
+% first pair of braces will be thrown out.
+\gdef\splitarg#1[\isplitarg|#1 {}|]
+\gdef\isplitarg|#1 {#2}#3|[%
+  \toks0=[#2]%
+  \edef\tmp[\the\toks0]%
+  \ifx\tmp\empty
+     \isplitargnospaces|#1{}|%
+  \else
+     \macname=[#1]%
+  \fi]
+\gdef\isplitargnospaces|#1{#2}#3|[\macname=[#1] \toks0=[#2]]
+
+% \parsebrace gets around the situation produced by \braceorline
+% (below) where the { has the wrong catcode because of \futurelet.
+% The \egroup matches a \bgroup in \braceorline.
+\gdef\parsebrace#1{#2}[\egroup\let\next=#1\next[#2]]
+
+\global\let\brace={ % used by \braceorline, below
+
+\endgroup
+
+
+% Argument parsing.
+% These routines iterate over a comma-separated list defining
+% tokens that map macro formal to actual parameters.
+% \parsemargdef sets the formal -> positional correspondence at macro
+% definition time; \parsemarg sets positional -> actual at runtime.
+%
+% The definitions are not symmetric because the callers have the
+% argument list in different places (token register and #arg)
+\def\parsemargdef#1;{\paramno=0\iparsemargdef#1,;,}
+\def\iparsemargdef#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\iparsemargdef
+    \advance\paramno by 1%
+    \expandafter\edef\csname MAC@\the\macname#1\endcsname
+      {\csname MAC@\the\macname.\the\paramno\endcsname}%
+  \fi\next}
+
+\def\parsemarg#1{\paramno=1\iparsemarg#1,;,}
+\def\iparsemarg#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\iparsemarg
+    \expandafter\def\csname MAC@\the\macname.\the\paramno\endcsname{#1}%
+    \advance\paramno by 1%
+  \fi\next}
+
+% Argument substitution.
+% \ is active when the body is read and tokenized; it converts its
+% argument to a macro-argument name and expands it.  We use | as a
+% temporary escape character.
+{
+\catcode`\|=0 |catcode`|\=|active
+|gdef\#1\{|csname MAC@|the|macname#1|endcsname}
+}
+
+% These sequences read and save the macro body.  \parserbody absorbs
+% the @allow-recursion in its argument, and then falls through to
+% \parsebody.
+\def\parsebody{\begingroup\catcode`\\=\active\iparsebody}
+\def\parserbody#1{\parsebody}
+
+% \iparsebody reads the entire macro in as an argument.  \ was made
+% active by \parsebody while the reading occurs.
+\long\def\iparsebody#1 \end macro% The space eats the final CR.
+{\endgroup % started in \parsebody
+\expandafter\def\csname MACb.\the\macname \endcsname{#1}}
+
+% These six sequences execute recursive and nonrecursive macros of no,
+% one, and many arguments.  We need to distinguish one arg from many
+% args because a one-argument macro invoked with no arguments gets the
+% rest of the line as its argument.
+%
+% Please note that all macros are executed inside a group, so any
+% changes made by a macro (@set, etc.) won't stick.
+\def\dormacrona#1{\begingroup\macname={#1}\idomacro{}}
+\def\dormacrooa#1{\begingroup\macname={#1}\braceorline}
+\def\dormacro#1{\begingroup\macname={#1}\idomacro}
+
+\def\domacrona#1{\begingroup\macname={#1}\norecurse\idomacro{}}
+\def\domacrooa#1{\begingroup\macname={#1}\norecurse\braceorline}
+\def\domacro#1{\begingroup\macname={#1}\norecurse\idomacro}
+
+% some helpers:
+\def\norecurse{\cslet{\the\macname}{macsave@\the\macname}}
+\def\idomacro#1{\parsemarg{#1}\csname MACb.\the\macname\endcsname\endgroup}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to \idomacro.  \parsebrace is
+% defined above, near \splitarg, in a strange catcode environment;
+% this is necessary because \futurelet freezes the catcode of the
+% peeked-at character.
+\def\braceorline{\bgroup
+\catcode`\{=\other\catcode`\}=\other \futurelet\nxt\ibraceorline}
+\def\ibraceorline{%
+\ifx\nxt\brace
+    \expandafter\parsebrace 
+  \else
+    \egroup \expandafter\parsearg 
+  \fi \idomacro}
+
+
+\message{cross references,}
 \newwrite\auxfile
 
 \newif\ifhavexrefs    % True if xref values are known.
@@ -4394,7 +4674,9 @@ width0pt\relax} \fi
   {\let\folio=0
    \normalturnoffactive
    \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
-   \next
+   \iflinks
+     \next
+   \fi
   }%
 }
 
@@ -4448,12 +4730,14 @@ width0pt\relax} \fi
   \expandafter\ifx\csname X#1\endcsname\relax
     % If not defined, say something at least.
     \angleleft un\-de\-fined\angleright
-    \ifhavexrefs
-      \message{\linenumber Undefined cross reference `#1'.}%
-    \else
-      \ifwarnedxrefs\else
-        \global\warnedxrefstrue
-        \message{Cross reference values unknown; you must run TeX again.}%
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
       \fi
     \fi
   \else
@@ -4696,7 +4980,9 @@ width0pt\relax} \fi
 \openin 1 = epsf.tex
 \ifeof 1 \else
   \closein 1
-  \def\epsfannounce{\toks0 = }% do not bother showing banner
+  % Do not bother showing banner with post-v2.7 epsf.tex (available in
+  % doc/epsf.tex until it shows up on ctan).
+  \def\epsfannounce{\toks0 = }%
   \input epsf.tex
 \fi
 %
@@ -4726,7 +5012,12 @@ width0pt\relax} \fi
   % \epsfbox itself resets \epsf?size at each figure.
   \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
   \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
-  \epsfbox{#1.eps}%
+  % If the image is by itself, center it.
+  \ifvmode
+    \centerline{\epsfbox{#1.eps}}%
+  \else
+    \epsfbox{#1.eps}%
+  \fi
 }
 
 % End of control word definitions.
diff --git a/timezone/africa b/timezone/africa
index 8286e6f62f..a38818f659 100644
--- a/timezone/africa
+++ b/timezone/africa
@@ -1,4 +1,4 @@
-# @(#)africa	7.23
+# @(#)africa	7.24
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
@@ -105,9 +105,6 @@ Zone	Africa/Luanda	0:52:56	-	LMT	1892
 			0:52:04	-	LMT	1911 May 26 # Luanda Mean Time?
 			1:00	-	WAT
 
-# Bassas da India
-# uninhabited
-
 # Benin
 # Whitman says they switched to 1:00 in 1946, not 1934; go with Shanks.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -240,9 +237,6 @@ Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
 			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
 			3:00	-	EAT
 
-# Europa Island
-# uninhabited
-
 # Gabon
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Africa/Libreville	0:37:48 -	LMT	1912
@@ -264,9 +258,6 @@ Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
 Zone	Africa/Accra	-0:00:52 -	LMT	1918
 			 0:00	Ghana	%s
 
-# Glorioso Is
-# uninhabited
-
 # Guinea
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Conakry	-0:54:52 -	LMT	1912
@@ -280,9 +271,6 @@ Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
 			-1:00	-	WAT	1975
 			 0:00	-	GMT
 
-# Juan de Nova
-# uninhabited
-
 # Kenya
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
@@ -450,6 +438,19 @@ Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
 			4:00	-	RET	# Reunion Time
+#
+# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
+# The following information about them is taken from
+# <a href="http://www.outre-mer.gouv.fr/domtom/ile.htm">
+# Iles Eparses
+# </a>
+# (1997-07-22, in French).  We have no info about their time zone histories.
+#
+# Bassas da India - uninhabited
+# Europa Island - inhabited from 1905 to 1910 by two families
+# Glorioso Is - inhabited until at least 1958
+# Juan de Nova - uninhabited
+# Tromelin - inhabited until at least 1958
 
 # Rwanda
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -553,9 +554,6 @@ Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
 Zone	Africa/Lome	0:04:52 -	LMT	1893
 			0:00	-	GMT
 
-# Tromelin
-# uninhabited
-
 # Tunisia
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Tunisia	1939	only	-	Apr	15	23:00s	1:00	S
diff --git a/timezone/antarctica b/timezone/antarctica
index c4dc3e4180..f5422b2bf1 100644
--- a/timezone/antarctica
+++ b/timezone/antarctica
@@ -1,4 +1,4 @@
-# @(#)antarctica	7.13
+# @(#)antarctica	7.14
 
 # From Paul Eggert (1997-03-28):
 # To keep things manageable, we list only locations occupied year-round;
@@ -41,18 +41,24 @@ Rule	ChileAQ	1970	max	-	Mar	Sun>=9	0:00	0	-
 #
 # year-round bases
 # Casey, Bailey Peninsula, since 1969
-# Davis, Vestfold Hills, since 1957-01-13 (except 1965-01 -  1969-02)
+# Davis, Vestfold Hills, since 1957-01-13 (except 1964-11 - 1969-02)
 # Mawson, Holme Bay, since 1954-02-13
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Antarctica/Casey	0	-	___	1969
 			8:00	-	WST	# Western (Aus) Standard Time
-#Zone Antartica/Davis	unknown
+Zone Antarctica/Davis	0	-	___	1957 Jan 13
+			7:00	-	DAVT	1964 Nov # Davis Time
+			0	-	___	1969 Feb
+			7:00	-	DAVT
 Zone Antarctica/Mawson	0	-	___	1954 Feb 13
 			6:00	-	MAWT	# Mawson Time
 # References:
 # <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
 # Casey Weather (1998-02-26)
 # </a>
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html">
+# Davis Station, Antarctica (1998-02-26)
+# </a>
 # <a href="http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html">
 # Mawson Station, Antarctica (1998-02-25)
 # </a>
diff --git a/timezone/asia b/timezone/asia
index 8d667cc99e..fae16c6995 100644
--- a/timezone/asia
+++ b/timezone/asia
@@ -1,4 +1,4 @@
-# @(#)asia	7.38
+# @(#)asia	7.39
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
@@ -881,6 +881,14 @@ Zone	Asia/Karachi	4:28:12 -	LMT	1907
 # to Palestine's rules.  If you have more info about this, please
 # send it to tz@elsie.nci.nih.gov for incorporation into future editions.
 
+# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
+# forwarded by Ephraim Silverberg:
+#
+# Despite the fact that Israel changed over to daylight savings time
+# last week, the PLO Authority (PA) has decided not to turn its clocks
+# one-hour forward at this time.  As a sign of independence from Israeli rule,
+# the PA has decided to implement DST in April.
+
 # These rules for Egypt are stolen from the `africa' file.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
diff --git a/timezone/australasia b/timezone/australasia
index 810c10d618..f82121e125 100644
--- a/timezone/australasia
+++ b/timezone/australasia
@@ -1,4 +1,4 @@
-# @(#)australasia	7.41
+# @(#)australasia	7.43
 # This file also includes Pacific islands.
 
 # Notes are at the end of this file
@@ -158,9 +158,6 @@ Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
 			10:30	LH	LHST
 
 # Australian miscellany
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
-			7:00	-	CXT	# Christmas Island Time
 #
 # Ashmore Is, Cartier
 # no indigenous inhabitants; only seasonal caretakers
@@ -178,6 +175,10 @@ Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
 # Manihiki, Penrhyn, Rakehanga
 # no information
 
+# Christmas
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
+			7:00	-	CXT	# Christmas Island Time
 
 # Cook Is
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -207,6 +208,8 @@ Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
 			 -9:30	-	MART	# Marquesas Time
 Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
 			-10:00	-	TAHT	# Tahiti Time
+# Clipperton (near North America) is administered from French Polynesia;
+# it is uninhabited.
 
 # Guam
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -402,6 +405,12 @@ Zone Pacific/Johnston	-10:00	-	HST
 # Kingman
 # uninhabited
 
+# Midway
+Zone Pacific/Midway	-11:49:28 -	LMT	1901
+			-11:00	-	NST	1967 Apr	# N=Nome
+			-11:00	-	BST	1983 Nov 30	# B=Bering
+			-11:00	-	SST			# S=Samoa
+
 # Palmyra
 # uninhabited since World War II; was probably like Pacific/Kiritimati
 
diff --git a/timezone/europe b/timezone/europe
index 0f2398f677..5e920e8366 100644
--- a/timezone/europe
+++ b/timezone/europe
@@ -1,4 +1,4 @@
-# %W%
+# @(#)europe	7.54
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
@@ -147,7 +147,7 @@
 # time of sunrise and sunset in The Times, when BDST was in effect, and
 # if you find a zone reference it will say, "All times B.D.S.T."
 
-# From Peter Ilieve <peter@aldie.co.uk> (1998-01-12):
+# From Peter Ilieve <peter@aldie.co.uk> (1998-04-19):
 # The following list attempts to show the complete history of Summer Time
 # legislation in the United Kingdom, and has quite a bit to say about
 # the Isle of Man and the Channel Islands as well.
@@ -200,7 +200,7 @@
 # seen it I don't know if it used Greenwich mean time, some other definition,
 # or just said that Isle of Man time would be the same as in Great Britain.
 #
-# - The Isle of Man (War Legislation) Act, 1914 (4 & 5 Geo. 5. c. 62) (???)
+# - The Isle of Man (War Legislation) Act, 1914 (4 & 5 Geo. 5. c. 62)
 #
 # Gives the power, by Order in Council, to extend wartime legislation
 # to the Isle of Man.
@@ -258,6 +258,14 @@
 #
 # The matching Isle of Man Order for 1918 with the same dates and times.
 #
+# - The Termination of the Present War (Definition) Act, 1918
+#   (8 & 9 Geo. 5. c. 59)
+#
+# This gave power to specify a legal end date for the war just ended,
+# which would affect things like the Summer Time Act, 1916, which applied
+# only in wartime. This date was to be close to the date of formal
+# ratification of the treaty or treaties of peace.
+#
 # - S.R.&O. 1919, No. 297
 #
 # An Order made under the Summer Time Act, 1916 giving dates
@@ -285,12 +293,12 @@
 # Monday 25 October (the time remaining 02:00 GMT). The 1989 Green
 # Paper (Cm 722) says this was done because of a coal strike.
 #
-# - The War Emergency Laws (Continuance) Act, 1920 (10 & 11 Geo. 5. c. 5) (???)
+# - The War Emergency Laws (Continuance) Act, 1920 (10 Geo. 5. c. 5)
 #
 # This extends the power to make Orders under the Summer Time Act, 1916
 # for a period of 12 months after the termination of the war.
-# I haven't seen this one so I don't know when it came into force, or
-# when the law deemed the termination of the war to have been.
+# Came into force on 31 March 1920. Although the war had been over for more
+# than 12 months by then the legal end date had not yet been set.
 #
 # - S.R.&O. 1921, No. 363
 #
@@ -302,11 +310,16 @@
 #
 # The matching Isle of Man Order for 1921 with the same dates and times.
 #
-# - S.R.&O. 1922, No. 264 (???)
+# - S.R.&O. 1922, No. 264
 #
-# This probably defines Summer Time for 1922 as the Summer Time Act, 1922
-# was passed after the start date. Dates from Cm 722:
-#   1922: 26 March to 8 October
+# An Order made under the Summer Time Act, 1916 and the War
+# Emergency Laws (Continuance) Act, 1920 giving dates for Summer Time
+# in 1921 of Sunday 26 March to Sunday 8 October, both at 02:00 GMT.
+# It also mentions the arrangements for defining the legal end date
+# for the late war. An Order was made on 10 August 1921, under the
+# Termination of the Present War (Definition) Act, 1918, setting
+# a date of 31 August 1921. This means the powers of the Summer Time
+# Act, 1916 would finally expire on 31 August 1922.
 #
 # - S.R.&O. 1922, No. 290 (???)
 #
@@ -327,7 +340,7 @@
 # dated 13 October 1922. It revokes (among other things) the Order extending
 # the Summer Time Act, 1916 to the Isle of Man.
 #
-# - The Expiring Laws Continuance Act, 1923 (13 & 14 Geo. 5. c. 37) (jsm)
+# - The Expiring Laws Continuance Act, 1923 (13 & 14 Geo. 5. c. 37)
 #
 # This extended the Summer Time Act, 1922 (among other things) until
 # 31 December 1924.
@@ -359,15 +372,16 @@
 # These were made under the Emergency Powers (Defence) Act, 1939.
 # They change the end date to be the day after the third Saturday in November.
 #
-# - S.R.&O. 1940, No. 1883
+# - S.R.&O. 1940, No. 172
 #
 # An Order in Council amending the Defence (Summer Time) Regulations, 1939.
+# It changed the start date to the day after the fourth Saturday in February
+# (ie. 25 Feb 1940).
+#
+# - S.R.&O. 1940, No. 1883
+#
+# Another Order amending the Defence (Summer Time) Regulations, 1939.
 # This continues summer time throughout the year after it starts in 1940.
-# There was another Order (S.R.&O. 1940, No. 172) that I assume had merely
-# changed the dates, to start on 4 February, and was then superseded by this
-# one. I haven't seen No. 172 so I don't know what end date it would have
-# specified. The dates from Cm 722:
-#   1940: Summer Time starts on 4 February
 #
 # - S.R.&O. 1941, No. 476
 #
@@ -385,15 +399,20 @@
 #
 # - S.R.&O. 1944, No. 932
 #
-# This changed the end date of Double Summer Time to 17 September 1944.
-# (I don't have the text of this, just a note of what it did, the text almost
-# certainly had the `day after the nth Saturday' form.)
+# Another Order amending the Defence (Summer Time) Regulations, 1939.
+# This changed the end date of Double Summer Time to the day after the
+# third Saturday in September (ie. 17 September 1944).
+#
+# - S.R.&O. 1945, No. 312
 #
-# - S.R.&O. 1945, No. 312 (???)
+# Another Order amending the Defence (Summer Time) Regulations, 1939.
+# This changes the start and end dates of Double Summer Time to the
+# day after the first Sunday in April and the day after the second Saturday
+# in July (ie. Mon 2 April to Sun 15 July).
 #
-# Probably defines the dates of Double Summer Time in 1945.
-# I do have this quote from Hansard (the official record of the United Kingdom
-# Parliament), Oral Answers, 1 March 1945, cols 1559--60:
+# I have this quote from Hansard (the official record of the United Kingdom
+# Parliament), Oral Answers, 1 March 1945, cols 1559--60, explaining the
+# unusual start on a Monday:
 #
 #  `58. Major Sir Goronwy Owen asked the Secretary of State for the Home
 #   Department if he is now able to state the Government's proposals
@@ -410,15 +429,13 @@
 #   Sunday, but in the night of Sunday-Monday so that it will operate from
 #   Monday, 2nd April.'
 #
-# Cm 722 gives dates of:
-#   1945: Double Summer time: 2 April to 15 July
-#   1945: Summer Time ends on 7 October
-#
 # - S.R.&O. 1945, No. 1208
 #
 # An Order under the Emergency Powers (Defence) Acts, 1939 and 1940 revoking
 # a long list of things, including the Defence (Summer Time) Regulations, 1939.
 # This meant that Summer Time reverted to being set by the 1922 and 1925 Acts.
+# It was made on 28 September, early enough to end Summer Time on the
+# date defined by the 1925 Act: 7 October.
 #
 # - The Summer Time Act, 1947 (10 & 11 Geo. 6. c. 16)
 #
@@ -431,21 +448,36 @@
 # both to vary the dates and to continue Double Summer Time. It applied
 # to the Isle of Man and the Channel Islands.
 #
-# - Summer Time Order, 1948 (S.I. 1948/495) (???)
-# - Summer Time Order, 1949 (S.I. 1949/373) (???)
-# - Summer Time Order, 1950 (S.I. 1950/518) (???)
-# - Summer Time Order, 1951 (S.I. 1951/430) (???)
-# - Summer Time Order, 1952 (S.I. 1952/451) (???)
-#
-# These presumably give the dates of Summer Time for the relevent years.
-# There was no Double Summer Time. The dates given in the 1989 Green Paper
-# for these years are:
-#   1948: 14 March to 31 October
-#   1949: 3 April to 30 October
-#   1950: 16 April to 22 October
-#   1951: 15 April to 21 October
-#   1952: 20 April to 26 October
-# After 1952 things revert back to the 1922 and 1925 Acts.
+# - Summer Time Order, 1948 (S.I. 1948/495)
+#
+# An Order made under the Summer Time Act, 1947. Gave dates for 1948 of
+# 14 March and 31 October, both at 02:00 GMT.
+#
+# Although the 1947 Act had legislated for Double Summer Time, this was
+# not continued after 1947.
+#
+# - Summer Time Order, 1949 (S.I. 1949/373)
+#
+# Another Order made under the Summer Time Act, 1947. Gave dates for 1949
+# of 3 April and 30 October, both at 02:00 GMT.
+#
+# - Summer Time Order, 1950 (S.I. 1950/518)
+#
+# Another Order made under the Summer Time Act, 1947. Gave dates for 1950
+# of 16 April and 22 October, both at 02:00 GMT.
+#
+# - Summer Time Order, 1951 (S.I. 1951/430)
+#
+# Another Order made under the Summer Time Act, 1947. Gave dates for 1951
+# of 15 April and 21 October, both at 02:00 GMT.
+#
+# - Summer Time Order, 1952 (S.I. 1952/451)
+#
+# Another Order made under the Summer Time Act, 1947. Gave dates for 1952
+# of 20 April and 26 October, both at 02:00 GMT.
+#
+# This is the last of this run of Orders, so for 1953 things reverted
+# to the 1922 and 1925 Acts.
 #
 # - The Interpretation Act (Northern Ireland), 1954 (1954 c. 33 (N.I.)) (???)
 #
@@ -659,7 +691,9 @@
 #   2000: 26 March to 29 October
 #   2001: 25 March to 28 October
 #
+# <a href="http://www.hmso.gov.uk/si/si1997/97298201.htm">
 # - Summer Time Order 1997 (S.I. 1997/2982)
+# </a>
 #
 # Implements the eighth Directive. Has the same text about the Isle of Man,
 # Guernsey and Jersey as the 1994 Order.
@@ -757,7 +791,7 @@ Rule	GB-Eire	1939	only	-	Apr	Sun>=16	2:00s	1:00	BST
 # S.R.&O. 1939, No. 1379
 Rule	GB-Eire	1939	only	-	Nov	Sun>=16	2:00s	0	GMT
 # S.R.&O. 1940, No. 172 and No. 1883
-Rule	GB-Eire	1940	only	-	Feb	25	2:00s	1:00	BST
+Rule	GB-Eire	1940	only	-	Feb	Sun>=23	2:00s	1:00	BST
 # S.R.&O. 1941, No. 476
 Rule	GB-Eire	1941	only	-	May	Sun>=2	1:00s	2:00	BDST
 Rule	GB-Eire	1941	1943	-	Aug	Sun>=9	1:00s	1:00	BST
@@ -766,9 +800,9 @@ Rule	GB-Eire	1942	1944	-	Apr	Sun>=2	1:00s	2:00	BDST
 # S.R.&O. 1944, No. 932
 Rule	GB-Eire	1944	only	-	Sep	Sun>=16	1:00s	1:00	BST
 # S.R.&O. 1945, No. 312
-Rule	GB-Eire	1945	only	-	Apr	 2	1:00s	2:00	BDST
+Rule	GB-Eire	1945	only	-	Apr	Mon>=2	1:00s	2:00	BDST
+Rule	GB-Eire	1945	only	-	Jul	Sun>=9	1:00s	1:00	BST
 # S.R.&O. 1945, No. 1208
-Rule	GB-Eire	1945	only	-	Jul	15	1:00s	1:00	BST
 Rule	GB-Eire	1945	1946	-	Oct	Sun>=2	2:00s	0	GMT
 Rule	GB-Eire	1946	only	-	Apr	Sun>=9	2:00s	1:00	BST
 # The Summer Time Act, 1947
@@ -778,9 +812,10 @@ Rule	GB-Eire	1947	only	-	Aug	10	1:00s	1:00	BST
 Rule	GB-Eire	1947	only	-	Nov	 2	2:00s	0	GMT
 # Summer Time Order, 1948 (S.I. 1948/495)
 Rule	GB-Eire	1948	only	-	Mar	14	2:00s	1:00	BST
-Rule	GB-Eire	1948	1949	-	Oct	lastSun	2:00s	0	GMT
+Rule	GB-Eire	1948	only	-	Oct	31	2:00s	0	GMT
 # Summer Time Order, 1949 (S.I. 1949/373)
 Rule	GB-Eire	1949	only	-	Apr	 3	2:00s	1:00	BST
+Rule	GB-Eire	1949	only	-	Oct	30	2:00s	0	GMT
 # Summer Time Order, 1950 (S.I. 1950/518)
 # Summer Time Order, 1951 (S.I. 1951/430)
 # Summer Time Order, 1952 (S.I. 1952/451)
diff --git a/timezone/iso3166.tab b/timezone/iso3166.tab
index 6eb4d318db..a3b2bee9fa 100644
--- a/timezone/iso3166.tab
+++ b/timezone/iso3166.tab
@@ -3,12 +3,16 @@
 # From Paul Eggert <eggert@twinsun.com> (1996-09-03):
 #
 # This file contains a table with the following columns:
-# 1.  ISO 3166 2-character country code.
+# 1.  ISO 3166-1:1997 2-character country code.  See: 
 # 2.  The usual English name for the country,
 #	chosen so that alphabetic sorting of subsets produces helpful lists.
+#	This is not the same as the English name in the ISO 3166 tables.
 #
-# For France in Europe, we follow common practice and use FR,
-# even though FX might be more technically correct.
+# The PS code below has been reserved for Palestine by the ISO;
+# however, the code is not yet officially assigned to Palestine.  Please see
+# <a href="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/ISO-3166-background">
+# Cord Wischhoefer, Country Code Elements for Palestine (1996-07-24)
+# </a>.
 #
 # Columns are separated by a single tab.
 # The table is sorted by country code.
@@ -191,6 +195,7 @@ PL	Poland
 PM	St Pierre & Miquelon
 PN	Pitcairn
 PR	Puerto Rico
+PS	Palestine
 PT	Portugal
 PW	Palau
 PY	Paraguay
diff --git a/timezone/northamerica b/timezone/northamerica
index baaf84095a..042be035d7 100644
--- a/timezone/northamerica
+++ b/timezone/northamerica
@@ -1,4 +1,4 @@
-# @(#)northamerica	7.39
+# @(#)northamerica	7.40
 # also includes Central America and the Caribbean
 
 # This data is by no means authoritative; if you think you know better,
@@ -262,11 +262,6 @@ Zone Pacific/Honolulu	-10:31:26 -	LMT	1900 Jan  1 12:00
 			-10:30	US	H%sT	1947 Jun  8 2:00
 			-10:00	-	HST
 
-Zone Pacific/Midway	-11:49:28 -	LMT	1901
-			-11:00	-	NST	1967 Apr	# N=Nome
-			-11:00	-	BST	1983 Nov 30	# B=Bering
-			-11:00	-	SST			# S=Samoa
-
 # Now we turn to US areas that have diverged from the consensus since 1970.
 
 # Arizona mostly uses MST.
@@ -1102,9 +1097,6 @@ Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
 			-5:07	-	KMT	1912 Feb    # Kingston Mean Time
 			-5:00	-	EST
 
-# Clipperton
-# uninhabited
-
 # Costa Rica
 # Shanks gives some very odd dates for 1991, and stops there.
 # For now, we won't guess further.
diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
index 031cda1de6..010a0deb32 100644
--- a/timezone/tzselect.ksh
+++ b/timezone/tzselect.ksh
@@ -10,21 +10,25 @@
 # If your host lacks the Korn shell,
 # you can use either of the following free programs instead:
 #
+#	<a href=ftp://ftp.gnu.org/pub/gnu/>
 #	Bourne-Again shell (bash)
-#	<URL:ftp://ftp.gnu.ai.mit.edu/pub/gnu/>
+#	</a>
 #
+#	<a href=ftp://ftp.cs.mun.ca/pub/pdksh/pdksh.tar.gz>
 #	Public domain ksh
-#	<URL:ftp://ftp.cs.mun.ca/pub/pdksh/pdksh.tar.gz>
+#	</a>
 #
 # This script also uses several features of modern awk programs.
 # If your host lacks awk, or has an old awk that does not conform to Posix.2,
 # you can use either of the following free programs instead:
 #
+#	<a href=ftp://ftp.gnu.org/pub/gnu/>
 #	GNU awk (gawk)
-#	<URL:ftp://ftp.gnu.ai.mit.edu/pub/gnu/>
+#	</a>
 #
+#	<a href=ftp://ftp.whidbey.net/pub/brennan/>
 #	mawk
-#	<URL:ftp://ftp.whidbey.net/pub/brennan/>
+#	</a>
 
 
 # Specify default values for environment variables if they are unset.
diff --git a/timezone/zone.tab b/timezone/zone.tab
index df4c157788..3cfd4d12cb 100644
--- a/timezone/zone.tab
+++ b/timezone/zone.tab
@@ -33,6 +33,7 @@ AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
 AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
 AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
 AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
+AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
 AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
 AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Base, Terre Adelie
 AR	-3436-05827	America/Buenos_Aires	E Argentina (BA, DF, SC, TF)
@@ -178,8 +179,7 @@ ID	-0610+10648	Asia/Jakarta	Java & Sumatra
 ID	-0507+11924	Asia/Ujung_Pandang	Borneo & Celebes
 ID	-0232+14042	Asia/Jayapura	Irian Jaya & the Moluccas
 IE	+5320-00615	Europe/Dublin
-IL	+3146+03514	Asia/Jerusalem	most locations
-IL	+3130+03428	Asia/Gaza	Gaza Strip
+IL	+3146+03514	Asia/Jerusalem
 IN	+2232+08822	Asia/Calcutta
 IO	-0720+07225	Indian/Chagos
 IQ	+3321+04425	Asia/Baghdad
@@ -255,7 +255,7 @@ NP	+2743+08519	Asia/Katmandu
 NR	-0031+16655	Pacific/Nauru
 NU	-1901+16955	Pacific/Niue
 NZ	-3652+17446	Pacific/Auckland	most locations
-NZ	-4355+17630	Pacific/Chatham	Chatham Island
+NZ	-4355-17630	Pacific/Chatham	Chatham Islands
 OM	+2336+05835	Asia/Muscat
 PA	+0858-07932	America/Panama
 PE	-1203-07703	America/Lima
@@ -269,6 +269,7 @@ PL	+5215+02100	Europe/Warsaw
 PM	+4703-05620	America/Miquelon
 PN	-2504-13005	Pacific/Pitcairn
 PR	+182806-0660622	America/Puerto_Rico
+PS	+3130+03428	Asia/Gaza
 PT	+3843-00908	Europe/Lisbon	mainland
 PT	+3238-01654	Atlantic/Madeira	Madeira Islands
 PT	+3744-02540	Atlantic/Azores	Azores