aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2016-08-03 15:10:58 -0700
committerPaul Eggert2016-08-03 15:12:06 -0700
commit7f9721d3990155bae83e4e4840f0ff4913868d50 (patch)
tree6c7283459b89571444694523e3431834b1952f92
parent967e2ef61dab8d2046f3285eefa71f3dcb9d9b60 (diff)
downloademacs-7f9721d3990155bae83e4e4840f0ff4913868d50.tar.gz
emacs-7f9721d3990155bae83e4e4840f0ff4913868d50.zip
Update from gnulib
This incorporates: 2016-07-03 mktime: call tzset as per POSIX * doc/misc/texinfo.tex, lib/mktime.c, m4/mktime.m4: Copy from gnulib.
-rw-r--r--doc/misc/texinfo.tex424
-rw-r--r--lib/mktime.c2
-rw-r--r--m4/mktime.m43
3 files changed, 217 insertions, 212 deletions
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index daa7055bbbc..5a1f728da48 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2016-06-18.21} 6\def\texinfoversion{2016-08-03.13}
7% 7%
8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -1541,22 +1541,72 @@ output) for that.)}
1541 % 1541 %
1542 % XeTeX version check 1542 % XeTeX version check
1543 % 1543 %
1544 \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99995}>-1 1544 \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1
1545 % XeTeX 0.99995+ contains xdvipdfmx 20160307+. 1545 % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307.
1546 % It can handle Unicode destination name for PDF. 1546 % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941).
1547 % For avoiding PDF destination name replacement, we use this special
1548 % instead of xdvipdfmx's command line option `-C 0x0010'.
1549 \special{dvipdfmx:config C 0x0010}
1550 % XeTeX 0.99995+ comes with xdvipdfmx 20160307+.
1551 % It can handle Unicode destination names for PDF.
1547 \txiuseunicodedestnametrue 1552 \txiuseunicodedestnametrue
1548 \else 1553 \else
1549 % XeTeX < 0.99995 can not handle Unicode destination name for PDF 1554 % XeTeX < 0.99996 (TeX Live < 2016) cannot use the
1550 % because xdvipdfmx 20150315 has UTF-16 convert issue. 1555 % `dvipdfmx:config' special.
1551 % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). 1556 % So for avoiding PDF destination name replacement,
1557 % xdvipdfmx's command line option `-C 0x0010' is necessary.
1558 %
1559 % XeTeX < 0.99995 can not handle Unicode destination names for PDF
1560 % because xdvipdfmx 20150315 has a UTF-16 conversion issue.
1561 % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
1552 \txiuseunicodedestnamefalse 1562 \txiuseunicodedestnamefalse
1553 \fi 1563 \fi
1554 % 1564 %
1565 % Color support
1566 %
1567 \def\rgbDarkRed{0.50 0.09 0.12}
1568 \def\rgbBlack{0 0 0}
1569 %
1570 \def\pdfsetcolor#1{\special{pdf:scolor [#1]}}
1571 %
1572 % Set color, and create a mark which defines \thiscolor accordingly,
1573 % so that \makeheadline knows which color to restore.
1574 \def\setcolor#1{%
1575 \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
1576 \domark
1577 \pdfsetcolor{#1}%
1578 }
1579 %
1580 \def\maincolor{\rgbBlack}
1581 \pdfsetcolor{\maincolor}
1582 \edef\thiscolor{\maincolor}
1583 \def\lastcolordefs{}
1584 %
1585 \def\makefootline{%
1586 \baselineskip24pt
1587 \line{\pdfsetcolor{\maincolor}\the\footline}%
1588 }
1589 %
1590 \def\makeheadline{%
1591 \vbox to 0pt{%
1592 \vskip-22.5pt
1593 \line{%
1594 \vbox to8.5pt{}%
1595 % Extract \thiscolor definition from the marks.
1596 \getcolormarks
1597 % Typeset the headline with \maincolor, then restore the color.
1598 \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
1599 }%
1600 \vss
1601 }%
1602 \nointerlineskip
1603 }
1604 %
1555 % PDF outline support 1605 % PDF outline support
1556 % 1606 %
1557 % Emulate the primitive of pdfTeX 1607 % Emulate pdfTeX primitive
1558 \def\pdfdest name#1 xyz{% 1608 \def\pdfdest name#1 xyz{%
1559 \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}% 1609 \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}%
1560 } 1610 }
1561 \def\pdfmkdest#1{{% 1611 \def\pdfmkdest#1{{%
1562 % We have to set dummies so commands such as @code, and characters 1612 % We have to set dummies so commands such as @code, and characters
@@ -1565,7 +1615,7 @@ output) for that.)}
1565 \iftxiuseunicodedestname 1615 \iftxiuseunicodedestname
1566 \def\pdfdestname{#1}% Pass through Unicode characters. 1616 \def\pdfdestname{#1}% Pass through Unicode characters.
1567 \else 1617 \else
1568 \edef\pdfdestname{#1}% Replace Unicode characters to ASCII. 1618 \edef\pdfdestname{#1}% Replace Unicode characters with ASCII.
1569 \fi 1619 \fi
1570 \turnoffactive 1620 \turnoffactive
1571 \makevalueexpandable 1621 \makevalueexpandable
@@ -1573,11 +1623,16 @@ output) for that.)}
1573 \safewhatsit{\pdfdest name{\pdfdestname} xyz}% 1623 \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
1574 }} 1624 }}
1575 % 1625 %
1626 % by default, use black for everything.
1627 \def\urlcolor{\rgbBlack}
1628 \def\linkcolor{\rgbBlack}
1629 \def\endlink{\setcolor{\maincolor}\pdfendlink}
1630 %
1576 \def\dopdfoutline#1#2#3#4{% 1631 \def\dopdfoutline#1#2#3#4{%
1577 \iftxiuseunicodedestname 1632 \iftxiuseunicodedestname
1578 \def\pdfoutlinedest{#3}% Pass through Unicode characters. 1633 \def\pdfoutlinedest{#3}% Pass through Unicode characters.
1579 \else 1634 \else
1580 \edef\pdfoutlinedest{#3}% Replace Unicode characters to ASCII. 1635 \edef\pdfoutlinedest{#3}% Replace Unicode characters with ASCII.
1581 \fi 1636 \fi
1582 \ifx\pdfoutlinedest\empty 1637 \ifx\pdfoutlinedest\empty
1583 \def\pdfoutlinedest{#4}% 1638 \def\pdfoutlinedest{#4}%
@@ -1589,17 +1644,17 @@ output) for that.)}
1589 \txiescapepdf\pdfoutlinetext 1644 \txiescapepdf\pdfoutlinetext
1590 % 1645 %
1591 \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A 1646 \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
1592 << /S /GoTo /D (name\pdfoutlinedest) >> >> }% 1647 << /S /GoTo /D (\pdfoutlinedest) >> >> }%
1593 } 1648 }
1594 } 1649 }
1595 % 1650 %
1596 \def\pdfmakeoutlines{% 1651 \def\pdfmakeoutlines{%
1597 \begingroup 1652 \begingroup
1598 % 1653 %
1599 % In the case of XeTeX, counts of subentries is not necesary. 1654 % For XeTeX, counts of subentries are not necessary.
1600 % Therefore, read toc only once. 1655 % Therefore, we read toc only once.
1601 % 1656 %
1602 % We use the node names as the destinations. 1657 % We use node names as destinations.
1603 \def\partentry##1##2##3##4{}% ignore parts in the outlines 1658 \def\partentry##1##2##3##4{}% ignore parts in the outlines
1604 \def\numchapentry##1##2##3##4{% 1659 \def\numchapentry##1##2##3##4{%
1605 \dopdfoutline{##1}{1}{##3}{##4}}% 1660 \dopdfoutline{##1}{1}{##3}{##4}}%
@@ -1619,7 +1674,7 @@ output) for that.)}
1619 \let\unnsubsecentry\numsubsecentry% 1674 \let\unnsubsecentry\numsubsecentry%
1620 \let\unnsubsubsecentry\numsubsubsecentry% 1675 \let\unnsubsubsecentry\numsubsubsecentry%
1621 % 1676 %
1622 % In the case of XeTeX, xdvipdfmx converts strings to UTF-16. 1677 % For XeTeX, xdvipdfmx converts strings to UTF-16.
1623 % Therefore, the encoding and the language may not be considered. 1678 % Therefore, the encoding and the language may not be considered.
1624 % 1679 %
1625 \indexnofonts 1680 \indexnofonts
@@ -1641,9 +1696,9 @@ output) for that.)}
1641 \special{pdf:docview << /PageMode /UseOutlines >> } 1696 \special{pdf:docview << /PageMode /UseOutlines >> }
1642 % ``\special{pdf:tounicode ...}'' is not necessary 1697 % ``\special{pdf:tounicode ...}'' is not necessary
1643 % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. 1698 % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it.
1644 % However, due to UTF-16 convert issue of xdvipdfmx 20150315, 1699 % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315,
1645 % ``\special{pdf:dest ...}'' can not handle non-ASCII strings. 1700 % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings.
1646 % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). 1701 % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
1647% 1702%
1648 \def\skipspaces#1{\def\PP{#1}\def\D{|}% 1703 \def\skipspaces#1{\def\PP{#1}\def\D{|}%
1649 \ifx\PP\D\let\nextsp\relax 1704 \ifx\PP\D\let\nextsp\relax
@@ -1703,7 +1758,7 @@ output) for that.)}
1703 {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} 1758 {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
1704 \def\pdflink#1{% 1759 \def\pdflink#1{%
1705 \special{pdf:bann << /Border [0 0 0] 1760 \special{pdf:bann << /Border [0 0 0]
1706 /Type /Annot /Subtype /Link /A << /S /GoTo /D (name#1) >> >>}% 1761 /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
1707 \setcolor{\linkcolor}#1\endlink} 1762 \setcolor{\linkcolor}#1\endlink}
1708 \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} 1763 \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
1709% 1764%
@@ -1715,7 +1770,7 @@ output) for that.)}
1715 \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% 1770 \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
1716 \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% 1771 \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
1717 % 1772 %
1718 % XeTeX (and the PDF format) support .pdf, .png, .jpg (among 1773 % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among
1719 % others). Let's try in that order, PDF first since if 1774 % others). Let's try in that order, PDF first since if
1720 % someone has a scalable image, presumably better to use that than a 1775 % someone has a scalable image, presumably better to use that than a
1721 % bitmap. 1776 % bitmap.
@@ -3287,23 +3342,10 @@ end
3287\let\atchar=\@ 3342\let\atchar=\@
3288 3343
3289% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. 3344% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
3290% Unless we're in typewriter, use \ecfont because the CM text fonts do 3345\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
3291% not have braces, and we don't want to switch into math. 3346\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
3292\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} 3347\let\{=\lbracechar
3293\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} 3348\let\}=\rbracechar
3294\let\{=\mylbrace \let\lbracechar=\{
3295\let\}=\myrbrace \let\rbracechar=\}
3296\begingroup
3297 % Definitions to produce \{ and \} commands for indices,
3298 % and @{ and @} for the aux/toc files.
3299 \catcode`\{ = \other \catcode`\} = \other
3300 \catcode`\[ = 1 \catcode`\] = 2
3301 \catcode`\! = 0 \catcode`\\ = \other
3302 !gdef!lbracecmd[\{]%
3303 !gdef!rbracecmd[\}]%
3304 !gdef!lbraceatcmd[@{]%
3305 !gdef!rbraceatcmd[@}]%
3306!endgroup
3307 3349
3308% @comma{} to avoid , parsing problems. 3350% @comma{} to avoid , parsing problems.
3309\let\comma = , 3351\let\comma = ,
@@ -4771,14 +4813,7 @@ end
4771% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), 4813% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
4772% #3 the target index (bar). 4814% #3 the target index (bar).
4773\def\dosynindex#1#2#3{% 4815\def\dosynindex#1#2#3{%
4774 % Only do \closeout if we haven't already done it, else we'll end up 4816 \requireopenindexfile{#3}%
4775 % closing the target index.
4776 \expandafter \ifx\csname donesynindex#2\endcsname \relax
4777 % The \closeout helps reduce unnecessary open files; the limit on the
4778 % Acorn RISC OS is a mere 16 files.
4779 \expandafter\closeout\csname#2indfile\endcsname
4780 \expandafter\let\csname donesynindex#2\endcsname = 1
4781 \fi
4782 % redefine \fooindfile: 4817 % redefine \fooindfile:
4783 \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname 4818 \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
4784 \expandafter\let\csname#2indfile\endcsname=\temp 4819 \expandafter\let\csname#2indfile\endcsname=\temp
@@ -4803,17 +4838,12 @@ end
4803% 4838%
4804\def\indexdummies{% 4839\def\indexdummies{%
4805 \escapechar = `\\ % use backslash in output files. 4840 \escapechar = `\\ % use backslash in output files.
4806 \def\@{@}% change to @@ when we switch to @ as escape char in index files. 4841 \definedummyletter\@%
4807 \def\ {\realbackslash\space }% 4842 \definedummyletter\ %
4808 % 4843 %
4809 % Need these unexpandable (because we define \tt as a dummy) 4844 % For texindex which always views { and } as separators.
4810 % definitions when @{ or @} appear in index entry text. Also, more 4845 \def\{{\lbracechar}%
4811 % complicated, when \tex is in effect and \{ is a \delimiter again. 4846 \def\}{\rbracechar}%
4812 % We can't use \lbracecmd and \rbracecmd because texindex assumes
4813 % braces and backslashes are used only as delimiters. Perhaps we
4814 % should use @lbracechar and @rbracechar?
4815 \def\{{{\tt\char123}}%
4816 \def\}{{\tt\char125}}%
4817 % 4847 %
4818 % Do the redefinitions. 4848 % Do the redefinitions.
4819 \definedummies 4849 \definedummies
@@ -4821,16 +4851,11 @@ end
4821 4851
4822% Used for the aux and toc files, where @ is the escape character. 4852% Used for the aux and toc files, where @ is the escape character.
4823% 4853%
4824% For the aux and toc files, @ is the escape character. So we want to
4825% redefine everything using @ as the escape character (instead of
4826% \realbackslash, still used for index files). When everything uses @,
4827% this will be simpler.
4828%
4829\def\atdummies{% 4854\def\atdummies{%
4830 \def\@{@@}% 4855 \definedummyletter\@%
4831 \def\ {@ }% 4856 \definedummyletter\ %
4832 \let\{ = \lbraceatcmd 4857 \definedummyletter\{%
4833 \let\} = \rbraceatcmd 4858 \definedummyletter\}%
4834 % 4859 %
4835 % Do the redefinitions. 4860 % Do the redefinitions.
4836 \definedummies 4861 \definedummies
@@ -5412,7 +5437,7 @@ end
5412 % \initial {@} 5437 % \initial {@}
5413 % as its first line, TeX doesn't complain about mismatched braces 5438 % as its first line, TeX doesn't complain about mismatched braces
5414 % (because it thinks @} is a control sequence). 5439 % (because it thinks @} is a control sequence).
5415 \catcode`\@ = 11 5440 \catcode`\@ = 12
5416 % See comment in \requireopenindexfile. 5441 % See comment in \requireopenindexfile.
5417 \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi 5442 \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
5418 \openin 1 \jobname.\indexname s 5443 \openin 1 \jobname.\indexname s
@@ -5944,49 +5969,46 @@ end
5944 \dimen@ = \ht0 5969 \dimen@ = \ht0
5945 \advance\dimen@ by \topskip 5970 \advance\dimen@ by \topskip
5946 \advance\dimen@ by-\baselineskip 5971 \advance\dimen@ by-\baselineskip
5947 \ifdim\dimen@<14\baselineskip 5972 \ifdim\dimen@<5\baselineskip
5948 % Don't split a short final column in two. 5973 % Don't split a short final column in two.
5949 \setbox2=\vbox{}% 5974 \setbox2=\vbox{}%
5950 \else 5975 \else
5951 \divide\dimen@ by 2 % target to split to 5976 \divide\dimen@ by 2 % target to split to
5952 \dimen@ii = \dimen@ 5977 \dimen@ii = \dimen@
5953 \splittopskip = \topskip 5978 \splittopskip = \topskip
5954 % Loop until the second column is no higher than the first 5979 % Loop until left column is at least as high as the right column.
5955 {% 5980 {%
5956 \vbadness = 10000 5981 \vbadness = 10000
5957 \loop 5982 \loop
5958 \global\setbox3 = \copy0 5983 \global\setbox3 = \copy0
5959 \global\setbox1 = \vsplit3 to \dimen@ 5984 \global\setbox1 = \vsplit3 to \dimen@
5960 % Remove glue from bottom of first column to 5985 % Remove glue from bottom of columns to compare
5961 % make sure it is higher than the second. 5986 % apparent heights.
5962 \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}% 5987 \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
5963 \ifdim\ht3>\ht1 5988 \global\setbox3 = \vbox{\unvbox3\unpenalty\unskip}%
5989 \ifdim\ht1<\ht3
5964 \global\advance\dimen@ by 1pt 5990 \global\advance\dimen@ by 1pt
5965 \repeat 5991 \repeat
5966 }% 5992 }%
5993 % Now the left column is in box 1, and the right column in box 3.
5994 % Check whether the left column has come out higher than the page itself.
5995 % (Note that we have doubled \vsize for the double columns, so
5996 % the actual height of the page is 0.5\vsize).
5967 \ifdim2\ht1>\vsize 5997 \ifdim2\ht1>\vsize
5968 % The left column has come out longer than the page itself. (Note 5998 % Just split the last of the double column material roughly in half.
5969 % that we have doubled \vsize for the double columns, so
5970 % the actual height of the page is 0.5\vsize). Just split the last
5971 % of the double column material roughly in half.
5972 \setbox2=\box0 5999 \setbox2=\box0
5973 \setbox0 = \vsplit2 to \dimen@ii 6000 \setbox0 = \vsplit2 to \dimen@ii
5974 \setbox0=\vbox to\dimen@ii{\unvbox0}% 6001 \setbox0=\vbox to\dimen@ii{\unvbox0}%
5975 \setbox2=\vbox to\dimen@ii{\unvbox2}% 6002 \setbox2=\vbox to\dimen@ii{\unvbox2}%
5976 \else 6003 \else
5977 \multiply\dimen@ii by 5 6004 % Compare the heights of the two columns.
5978 \divide\dimen@ii by 4 6005 \ifdim4\ht1>5\ht3
5979 \global\setbox3 = \copy0
5980 \global\setbox1 = \vsplit3 to \dimen@ii
5981 \global\setbox\balancedcolumns=\vbox{\pagesofar}%
5982 \ifdim\ht3<\dimen@ii
5983 % Column heights are too different, so don't make their bottoms 6006 % Column heights are too different, so don't make their bottoms
5984 % flush with each other. The glue at the end of the second column 6007 % flush with each other.
5985 % allows a second column to stretch, reducing the difference in 6008 \setbox2=\vbox to \ht1 {\unvbox3\vfill}%
5986 % height between the two. 6009 \setbox0=\vbox to \ht1 {\unvbox1\vfill}%
5987 \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
5988 \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
5989 \else 6010 \else
6011 % Make column bottoms flush with each other.
5990 \setbox0=\vbox to\dimen@{\unvbox1}% 6012 \setbox0=\vbox to\dimen@{\unvbox1}%
5991 \setbox2=\vbox to\dimen@{\unvbox3}% 6013 \setbox2=\vbox to\dimen@{\unvbox3}%
5992 \fi 6014 \fi
@@ -8038,7 +8060,7 @@ end
8038\newif\ifrecursive % Is it recursive? 8060\newif\ifrecursive % Is it recursive?
8039 8061
8040% List of all defined macros in the form 8062% List of all defined macros in the form
8041% \definedummyword\macro1\definedummyword\macro2... 8063% \commondummyword\macro1\commondummyword\macro2...
8042% Currently is also contains all @aliases; the list can be split 8064% Currently is also contains all @aliases; the list can be split
8043% if there is a need. 8065% if there is a need.
8044\def\macrolist{} 8066\def\macrolist{}
@@ -8046,7 +8068,7 @@ end
8046% Add the macro to \macrolist 8068% Add the macro to \macrolist
8047\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} 8069\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
8048\def\addtomacrolistxxx#1{% 8070\def\addtomacrolistxxx#1{%
8049 \toks0 = \expandafter{\macrolist\definedummyword#1}% 8071 \toks0 = \expandafter{\macrolist\commondummyword#1}%
8050 \xdef\macrolist{\the\toks0}% 8072 \xdef\macrolist{\the\toks0}%
8051} 8073}
8052 8074
@@ -8187,7 +8209,7 @@ end
8187 % Remove the macro name from \macrolist: 8209 % Remove the macro name from \macrolist:
8188 \begingroup 8210 \begingroup
8189 \expandafter\let\csname#1\endcsname \relax 8211 \expandafter\let\csname#1\endcsname \relax
8190 \let\definedummyword\unmacrodo 8212 \let\commondummyword\unmacrodo
8191 \xdef\macrolist{\macrolist}% 8213 \xdef\macrolist{\macrolist}%
8192 \endgroup 8214 \endgroup
8193 \else 8215 \else
@@ -8202,7 +8224,7 @@ end
8202 \ifx #1\relax 8224 \ifx #1\relax
8203 % remove this 8225 % remove this
8204 \else 8226 \else
8205 \noexpand\definedummyword \noexpand#1% 8227 \noexpand\commondummyword \noexpand#1%
8206 \fi 8228 \fi
8207} 8229}
8208 8230
@@ -8477,8 +8499,7 @@ end
8477% its parameters, looking like "\xeatspaces{\hash 1}". 8499% its parameters, looking like "\xeatspaces{\hash 1}".
8478% \paramno is the number of parameters 8500% \paramno is the number of parameters
8479% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," 8501% \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
8480% There are eight cases: recursive and nonrecursive macros of zero, one, 8502% There are four cases: macros of zero, one, up to nine, and many arguments.
8481% up to nine, and many arguments.
8482% \xdef is used so that macro definitions will survive the file 8503% \xdef is used so that macro definitions will survive the file
8483% they're defined in: @include reads the file inside a group. 8504% they're defined in: @include reads the file inside a group.
8484% 8505%
@@ -8493,91 +8514,48 @@ end
8493 \else 8514 \else
8494 \let\xeatspaces\relax % suppress expansion 8515 \let\xeatspaces\relax % suppress expansion
8495 \fi 8516 \fi
8496 \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% 8517 \ifcase\paramno
8497 \ifcase\paramno 8518 % 0
8498 % 0 8519 \expandafter\xdef\csname\the\macname\endcsname{%
8499 \expandafter\xdef\csname\the\macname\endcsname{% 8520 \noexpand\scanmacro{\macrobody}}%
8500 \noexpand\scanmacro{\macrobody}}% 8521 \or % 1
8501 \or % 1 8522 \expandafter\xdef\csname\the\macname\endcsname{%
8523 \bgroup
8524 \noexpand\braceorline
8525 \expandafter\noexpand\csname\the\macname @@@\endcsname}%
8526 \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
8527 \egroup
8528 \noexpand\scanmacro{\macrobody}%
8529 }%
8530 \else % at most 9
8531 \ifnum\paramno<10\relax
8532 % @MACNAME sets the context for reading the macro argument
8533 % @MACNAME@@ gets the argument, processes backslashes and appends a
8534 % comma.
8535 % @MACNAME@@@ removes braces surrounding the argument list.
8536 % @MACNAME@@@@ scans the macro body with arguments substituted.
8502 \expandafter\xdef\csname\the\macname\endcsname{% 8537 \expandafter\xdef\csname\the\macname\endcsname{%
8503 \bgroup 8538 \bgroup
8504 \noexpand\braceorline 8539 \noexpand\expandafter % This \expandafter skip any spaces after the
8505 \expandafter\noexpand\csname\the\macname @@@\endcsname}% 8540 \noexpand\macroargctxt % macro before we change the catcode of space.
8541 \noexpand\expandafter
8542 \expandafter\noexpand\csname\the\macname @@\endcsname}%
8543 \expandafter\xdef\csname\the\macname @@\endcsname##1{%
8544 \noexpand\passargtomacro
8545 \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
8506 \expandafter\xdef\csname\the\macname @@@\endcsname##1{% 8546 \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
8507 \egroup 8547 \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
8508 \noexpand\scanmacro{\macrobody}% 8548 \expandafter\expandafter
8509 }% 8549 \expandafter\xdef
8510 \else 8550 \expandafter\expandafter
8511 \ifnum\paramno<10\relax % at most 9 8551 \csname\the\macname @@@@\endcsname\paramlist{%
8512 % See non-recursive section below for comments 8552 \egroup\noexpand\scanmacro{\macrobody}}%
8513 \expandafter\xdef\csname\the\macname\endcsname{% 8553 \else % 10 or more:
8514 \bgroup
8515 \noexpand\expandafter
8516 \noexpand\macroargctxt
8517 \noexpand\expandafter
8518 \expandafter\noexpand\csname\the\macname @@\endcsname}%
8519 \expandafter\xdef\csname\the\macname @@\endcsname##1{%
8520 \noexpand\passargtomacro
8521 \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
8522 \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
8523 \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
8524 \expandafter\expandafter
8525 \expandafter\xdef
8526 \expandafter\expandafter
8527 \csname\the\macname @@@@\endcsname\paramlist{%
8528 \egroup\noexpand\scanmacro{\macrobody}}%
8529 \else % 10 or more
8530 \expandafter\xdef\csname\the\macname\endcsname{%
8531 \noexpand\getargvals@{\the\macname}{\argl}%
8532 }%
8533 \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
8534 \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
8535 \fi
8536 \fi
8537 \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
8538 \ifcase\paramno
8539 % 0
8540 \expandafter\xdef\csname\the\macname\endcsname{%
8541 \noexpand\scanmacro{\macrobody}}%
8542 \or % 1
8543 \expandafter\xdef\csname\the\macname\endcsname{% 8554 \expandafter\xdef\csname\the\macname\endcsname{%
8544 \bgroup 8555 \noexpand\getargvals@{\the\macname}{\argl}%
8545 \noexpand\braceorline 8556 }%
8546 \expandafter\noexpand\csname\the\macname @@@\endcsname}% 8557 \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
8547 \expandafter\xdef\csname\the\macname @@@\endcsname##1{% 8558 \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
8548 \egroup
8549 \noexpand\scanmacro{\macrobody}%
8550 }%
8551 \else % at most 9
8552 \ifnum\paramno<10\relax
8553 % @MACNAME sets the context for reading the macro argument
8554 % @MACNAME@@ gets the argument, processes backslashes and appends a
8555 % comma.
8556 % @MACNAME@@@ removes braces surrounding the argument list.
8557 % @MACNAME@@@@ scans the macro body with arguments substituted.
8558 \expandafter\xdef\csname\the\macname\endcsname{%
8559 \bgroup
8560 \noexpand\expandafter % This \expandafter skip any spaces after the
8561 \noexpand\macroargctxt % macro before we change the catcode of space.
8562 \noexpand\expandafter
8563 \expandafter\noexpand\csname\the\macname @@\endcsname}%
8564 \expandafter\xdef\csname\the\macname @@\endcsname##1{%
8565 \noexpand\passargtomacro
8566 \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
8567 \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
8568 \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
8569 \expandafter\expandafter
8570 \expandafter\xdef
8571 \expandafter\expandafter
8572 \csname\the\macname @@@@\endcsname\paramlist{%
8573 \egroup\noexpand\scanmacro{\macrobody}}%
8574 \else % 10 or more:
8575 \expandafter\xdef\csname\the\macname\endcsname{%
8576 \noexpand\getargvals@{\the\macname}{\argl}%
8577 }%
8578 \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
8579 \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
8580 \fi
8581 \fi 8559 \fi
8582 \fi} 8560 \fi}
8583 8561
@@ -8867,16 +8845,21 @@ end
8867 \ifpdf 8845 \ifpdf
8868 % For pdfTeX and LuaTeX 8846 % For pdfTeX and LuaTeX
8869 {\indexnofonts 8847 {\indexnofonts
8870 \turnoffactive
8871 \makevalueexpandable 8848 \makevalueexpandable
8849 %
8850 % This (wrongly) does not take account of leading or trailing
8851 % spaces in #1, which should be ignored.
8852 \ifx\luatexversion\thisisundefined
8853 \edef\pdfxrefdest{#1}% pdfTeX: Replace Unicode characters with ASCII.
8854 \else
8855 \def\pdfxrefdest{#1}% LuaTeX: Pass through Unicode characters.
8856 \fi
8857 \turnoffactive
8872 % This expands tokens, so do it after making catcode changes, so _ 8858 % This expands tokens, so do it after making catcode changes, so _
8873 % etc. don't get their TeX definitions. This ignores all spaces in 8859 % etc. don't get their TeX definitions. This ignores all spaces in
8874 % #4, including (wrongly) those in the middle of the filename. 8860 % #4, including (wrongly) those in the middle of the filename.
8875 \getfilename{#4}% 8861 \getfilename{#4}%
8876 % 8862 %
8877 % This (wrongly) does not take account of leading or trailing
8878 % spaces in #1, which should be ignored.
8879 \edef\pdfxrefdest{#1}%
8880 \ifx\pdfxrefdest\empty 8863 \ifx\pdfxrefdest\empty
8881 \def\pdfxrefdest{Top}% no empty targets 8864 \def\pdfxrefdest{Top}% no empty targets
8882 \else 8865 \else
@@ -8897,20 +8880,21 @@ end
8897 \else 8880 \else
8898 % For XeTeX 8881 % For XeTeX
8899 {\indexnofonts 8882 {\indexnofonts
8900 \turnoffactive
8901 \makevalueexpandable 8883 \makevalueexpandable
8902 % This expands tokens, so do it after making catcode changes, so _
8903 % etc. don't get their TeX definitions. This ignores all spaces in
8904 % #4, including (wrongly) those in the middle of the filename.
8905 \getfilename{#4}%
8906 % 8884 %
8907 % This (wrongly) does not take account of leading or trailing 8885 % This (wrongly) does not take account of leading or trailing
8908 % spaces in #1, which should be ignored. 8886 % spaces in #1, which should be ignored.
8909 \iftxiuseunicodedestname 8887 \iftxiuseunicodedestname
8910 \def\pdfxrefdest{#1}% Pass through Unicode characters. 8888 \def\pdfxrefdest{#1}% Pass through Unicode characters.
8911 \else 8889 \else
8912 \edef\pdfxrefdest{#1}% Replace Unicode characters to ASCII. 8890 \edef\pdfxrefdest{#1}% Replace Unicode characters with ASCII.
8913 \fi 8891 \fi
8892 \turnoffactive
8893 % This expands tokens, so do it after making catcode changes, so _
8894 % etc. don't get their TeX definitions. This ignores all spaces in
8895 % #4, including (wrongly) those in the middle of the filename.
8896 \getfilename{#4}%
8897 %
8914 \ifx\pdfxrefdest\empty 8898 \ifx\pdfxrefdest\empty
8915 \def\pdfxrefdest{Top}% no empty targets 8899 \def\pdfxrefdest{Top}% no empty targets
8916 \else 8900 \else
@@ -8919,16 +8903,19 @@ end
8919 % 8903 %
8920 \leavevmode 8904 \leavevmode
8921 \ifnum\filenamelength>0 8905 \ifnum\filenamelength>0
8922 % By the default settings, 8906 % With default settings,
8923 % XeTeX (xdvipdfmx) replaces link destination names with integers. 8907 % XeTeX (xdvipdfmx) replaces link destination names with integers.
8924 % In this case, the replaced destination names of 8908 % In this case, the replaced destination names of
8925 % remote PDF cannot be known. In order to avoid replacement, 8909 % remote PDFs are no longer known. In order to avoid a replacement,
8926 % you can use commandline option `-C 0x0010' for xdvipdfmx. 8910 % you can use xdvipdfmx's command line option `-C 0x0010'.
8911 % If you use XeTeX 0.99996+ (TeX Live 2016+),
8912 % this command line option is no longer necessary
8913 % because we can use the `dvipdfmx:config' special.
8927 \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A 8914 \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
8928 << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}% 8915 << /S /GoToR /F (\the\filename.pdf) /D (\pdfxrefdest) >> >>}%
8929 \else 8916 \else
8930 \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A 8917 \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
8931 << /S /GoTo /D (name\pdfxrefdest) >> >>}% 8918 << /S /GoTo /D (\pdfxrefdest) >> >>}%
8932 \fi 8919 \fi
8933 }% 8920 }%
8934 \setcolor{\linkcolor}% 8921 \setcolor{\linkcolor}%
@@ -9835,9 +9822,9 @@ directory should work if nowhere else does.}
9835 \global\righthyphenmin = #3\relax 9822 \global\righthyphenmin = #3\relax
9836} 9823}
9837 9824
9838% XeTeX and LuaTeX can handle native Unicode. 9825% XeTeX and LuaTeX can handle Unicode natively.
9839% Their default I/O is UTF-8 sequence instead of byte-wise. 9826% Their default I/O uses UTF-8 sequences instead of a byte-wise operation.
9840% Other TeX engine (pdfTeX etc.) I/O is byte-wise. 9827% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise.
9841% 9828%
9842\newif\iftxinativeunicodecapable 9829\newif\iftxinativeunicodecapable
9843\newif\iftxiusebytewiseio 9830\newif\iftxiusebytewiseio
@@ -9961,14 +9948,15 @@ directory should work if nowhere else does.}
9961 % 9948 %
9962 \else \ifx \declaredencoding \utfeight 9949 \else \ifx \declaredencoding \utfeight
9963 \iftxinativeunicodecapable 9950 \iftxinativeunicodecapable
9964 % For native Unicode (XeTeX and LuaTeX) 9951 % For native Unicode handling (XeTeX and LuaTeX)
9965 \nativeunicodechardefs 9952 \nativeunicodechardefs
9966 \else 9953 \else
9967 % For UTF-8 byte sequence (TeX, eTeX and pdfTeX) 9954 % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX)
9968 \setnonasciicharscatcode\active 9955 \setnonasciicharscatcode\active
9969 % since we already invoked \utfeightchardefs at the top level 9956 % since we already invoked \utfeightchardefs at the top level
9970 % (below), do not re-invoke it, then our check for duplicated 9957 % (below), do not re-invoke it, otherwise our check for duplicated
9971 % definitions triggers. Making non-ascii chars active is enough. 9958 % definitions gets triggered. Making non-ascii chars active is
9959 % sufficient.
9972 \fi 9960 \fi
9973 % 9961 %
9974 \else 9962 \else
@@ -9979,6 +9967,18 @@ directory should work if nowhere else does.}
9979 \fi % latone 9967 \fi % latone
9980 \fi % lattwo 9968 \fi % lattwo
9981 \fi % ascii 9969 \fi % ascii
9970 %
9971 \ifx\XeTeXrevision\thisisundefined
9972 \else
9973 \ifx \declaredencoding \utfeight
9974 \else
9975 \ifx \declaredencoding \ascii
9976 \else
9977 \message{Warning: XeTeX with non-UTF-8 encodings cannot handle %
9978 non-ASCII characters in auxiallity files.}%
9979 \fi
9980 \fi
9981 \fi
9982} 9982}
9983 9983
9984% emacs-page 9984% emacs-page
@@ -10316,8 +10316,9 @@ directory should work if nowhere else does.}
10316\def\U#1{% 10316\def\U#1{%
10317 \expandafter\ifx\csname uni:#1\endcsname \relax 10317 \expandafter\ifx\csname uni:#1\endcsname \relax
10318 \iftxinativeunicodecapable 10318 \iftxinativeunicodecapable
10319 % Any Unicode characters can be used by native Unicode. 10319 % All Unicode characters can be used if native Unicode handling is
10320 % However, if the font does not have the glyph, the letter will miss. 10320 % active. However, if the font does not have the glyph,
10321 % letters are missing.
10321 \begingroup 10322 \begingroup
10322 \uccode`\.="#1\relax 10323 \uccode`\.="#1\relax
10323 \uppercase{.} 10324 \uppercase{.}
@@ -10340,9 +10341,9 @@ directory should work if nowhere else does.}
10340\def\UTFviiiFourOctetsName#1#2#3#4{% 10341\def\UTFviiiFourOctetsName#1#2#3#4{%
10341 \csname u8:#1\string #2\string #3\string #4\endcsname}% 10342 \csname u8:#1\string #2\string #3\string #4\endcsname}%
10342 10343
10343% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX) 10344% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX),
10344% Definition macro to replace the Unicode character 10345% provide a definition macro to replace a Unicode character;
10345% Definition macro that is used by @U command 10346% this gets used by the @U command
10346% 10347%
10347\begingroup 10348\begingroup
10348 \catcode`\"=12 10349 \catcode`\"=12
@@ -10430,8 +10431,8 @@ directory should work if nowhere else does.}
10430 \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} 10431 \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
10431\endgroup 10432\endgroup
10432 10433
10433% For native Unicode (XeTeX and LuaTeX) 10434% For native Unicode handling (XeTeX and LuaTeX),
10434% Definition macro that is set catcode other non global 10435% provide a definition macro that sets a catcode to `other' non-globally
10435% 10436%
10436\def\DeclareUnicodeCharacterNativeOther#1#2{% 10437\def\DeclareUnicodeCharacterNativeOther#1#2{%
10437 \catcode"#1=\other 10438 \catcode"#1=\other
@@ -11137,8 +11138,8 @@ directory should work if nowhere else does.}
11137\newif\ifpassthroughchars 11138\newif\ifpassthroughchars
11138\passthroughcharsfalse 11139\passthroughcharsfalse
11139 11140
11140% For native Unicode (XeTeX and LuaTeX) 11141% For native Unicode handling (XeTeX and LuaTeX),
11141% Definition macro to replace / pass-through the Unicode character 11142% provide a definition macro to replace/pass-through a Unicode character
11142% 11143%
11143\def\DeclareUnicodeCharacterNative#1#2{% 11144\def\DeclareUnicodeCharacterNative#1#2{%
11144 \catcode"#1=\active 11145 \catcode"#1=\active
@@ -11161,21 +11162,22 @@ directory should work if nowhere else does.}
11161 \endgroup 11162 \endgroup
11162} 11163}
11163 11164
11164% Native Unicode (XeTeX and LuaTeX) character replacing definitions 11165% Native Unicode handling (XeTeX and LuaTeX) character replacing definition.
11165% It makes the setting that replace the Unicode characters. 11166% It activates the setting that replaces Unicode characters.
11166\def\nativeunicodechardefs{% 11167\def\nativeunicodechardefs{%
11167 \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative 11168 \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative
11168 \unicodechardefs 11169 \unicodechardefs
11169} 11170}
11170 11171
11171% For native Unicode (XeTeX and LuaTeX). Make the character token expand 11172% For native Unicode handling (XeTeX and LuaTeX),
11173% make the character token expand
11172% to the sequences given in \unicodechardefs for printing. 11174% to the sequences given in \unicodechardefs for printing.
11173\def\DeclareUnicodeCharacterNativeAtU#1#2{% 11175\def\DeclareUnicodeCharacterNativeAtU#1#2{%
11174 \def\UTFAtUTmp{#2} 11176 \def\UTFAtUTmp{#2}
11175 \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp 11177 \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp
11176} 11178}
11177 11179
11178% Native Unicode (XeTeX and LuaTeX) @U command definitions 11180% @U command definitions for native Unicode handling (XeTeX and LuaTeX).
11179\def\nativeunicodechardefsatu{% 11181\def\nativeunicodechardefsatu{%
11180 \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU 11182 \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU
11181 \unicodechardefs 11183 \unicodechardefs
@@ -11186,7 +11188,7 @@ directory should work if nowhere else does.}
11186 \relax 11188 \relax
11187} 11189}
11188 11190
11189% define all the unicode characters we know about, for the sake of @U. 11191% define all Unicode characters we know about, for the sake of @U.
11190\iftxinativeunicodecapable 11192\iftxinativeunicodecapable
11191 \nativeunicodechardefsatu 11193 \nativeunicodechardefsatu
11192\else 11194\else
diff --git a/lib/mktime.c b/lib/mktime.c
index 40bc2a38a21..8ee4e5ecab4 100644
--- a/lib/mktime.c
+++ b/lib/mktime.c
@@ -470,6 +470,8 @@ mktime (struct tm *tp)
470 time zone names contained in the external variable 'tzname' shall 470 time zone names contained in the external variable 'tzname' shall
471 be set as if the tzset() function had been called. */ 471 be set as if the tzset() function had been called. */
472 __tzset (); 472 __tzset ();
473#elif HAVE_TZSET
474 tzset ();
473#endif 475#endif
474 476
475 return __mktime_internal (tp, __localtime_r, &localtime_offset); 477 return __mktime_internal (tp, __localtime_r, &localtime_offset);
diff --git a/m4/mktime.m4 b/m4/mktime.m4
index 5a0f2d88ab0..23cad732ff4 100644
--- a/m4/mktime.m4
+++ b/m4/mktime.m4
@@ -1,4 +1,4 @@
1# serial 26 1# serial 27
2dnl Copyright (C) 2002-2003, 2005-2007, 2009-2016 Free Software Foundation, 2dnl Copyright (C) 2002-2003, 2005-2007, 2009-2016 Free Software Foundation,
3dnl Inc. 3dnl Inc.
4dnl This file is free software; the Free Software Foundation 4dnl This file is free software; the Free Software Foundation
@@ -30,6 +30,7 @@ AC_DEFUN([gl_FUNC_MKTIME],
30 dnl in Autoconf and because it invokes AC_LIBOBJ. 30 dnl in Autoconf and because it invokes AC_LIBOBJ.
31 AC_CHECK_HEADERS_ONCE([unistd.h]) 31 AC_CHECK_HEADERS_ONCE([unistd.h])
32 AC_CHECK_DECLS_ONCE([alarm]) 32 AC_CHECK_DECLS_ONCE([alarm])
33 AC_CHECK_FUNCS_ONCE([tzset])
33 AC_REQUIRE([gl_MULTIARCH]) 34 AC_REQUIRE([gl_MULTIARCH])
34 if test $APPLE_UNIVERSAL_BUILD = 1; then 35 if test $APPLE_UNIVERSAL_BUILD = 1; then
35 # A universal build on Apple Mac OS X platforms. 36 # A universal build on Apple Mac OS X platforms.