diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-04-26 09:00:01 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-04-26 09:00:01 +0000 |
commit | 888e39055f2067a6a45c21926dc32bf6b9cd3e50 (patch) | |
tree | bcc595b4b9574c3dfeab8a30f62fe12adc7b091c /doc | |
parent | 671706e9e5aa90b95f483c36fd9b6cc7ab5d0646 (diff) | |
download | libmicrohttpd-888e39055f2067a6a45c21926dc32bf6b9cd3e50.tar.gz libmicrohttpd-888e39055f2067a6a45c21926dc32bf6b9cd3e50.zip |
adding support for quiesce
Diffstat (limited to 'doc')
-rw-r--r-- | doc/libmicrohttpd.texi | 19 | ||||
-rw-r--r-- | doc/texinfo.tex | 293 |
2 files changed, 128 insertions, 184 deletions
diff --git a/doc/libmicrohttpd.texi b/doc/libmicrohttpd.texi index d82ebeb3..f3950e39 100644 --- a/doc/libmicrohttpd.texi +++ b/doc/libmicrohttpd.texi | |||
@@ -1086,6 +1086,25 @@ Return @code{NULL} on error, handle to daemon on success. | |||
1086 | @end deftypefun | 1086 | @end deftypefun |
1087 | 1087 | ||
1088 | 1088 | ||
1089 | @deftypefun int MHD_quiesce_daemon (struct MHD_Daemon *daemon) | ||
1090 | Stop accepting connections from the listening socket. Allows clients | ||
1091 | to continue processing, but stops accepting new connections. Note | ||
1092 | that the caller is responsible for closing the returned socket; | ||
1093 | however, if MHD is run using threads (anything but external select | ||
1094 | mode), it must not be closed until AFTER @code{MHD_stop_daemon} has | ||
1095 | been called (as it is theoretically possible that an existing thread | ||
1096 | is still using it). | ||
1097 | |||
1098 | This function is useful in the special case that a listen socket | ||
1099 | is to be migrated to another process (i.e. a newer version of the | ||
1100 | HTTP server) while existing connections should continue to be | ||
1101 | processed until they are finished. | ||
1102 | |||
1103 | Return @code{-1} on error (daemon not listening), the handle to the | ||
1104 | listen socket otherwise. | ||
1105 | @end deftypefun | ||
1106 | |||
1107 | |||
1089 | @deftypefun void MHD_stop_daemon (struct MHD_Daemon *daemon) | 1108 | @deftypefun void MHD_stop_daemon (struct MHD_Daemon *daemon) |
1090 | Shutdown an HTTP daemon. | 1109 | Shutdown an HTTP daemon. |
1091 | @end deftypefun | 1110 | @end deftypefun |
diff --git a/doc/texinfo.tex b/doc/texinfo.tex index 9a2439c8..85b68e79 100644 --- a/doc/texinfo.tex +++ b/doc/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{2012-09-05.06} | 6 | \def\texinfoversion{2012-03-11.15} |
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, |
@@ -28,9 +28,9 @@ | |||
28 | % | 28 | % |
29 | % Please try the latest version of texinfo.tex before submitting bug | 29 | % Please try the latest version of texinfo.tex before submitting bug |
30 | % reports; you can get the latest version from: | 30 | % reports; you can get the latest version from: |
31 | % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or | 31 | % http://www.gnu.org/software/texinfo/ (the Texinfo home page), or |
32 | % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or | 32 | % ftp://tug.org/tex/texinfo.tex |
33 | % http://www.gnu.org/software/texinfo/ (the Texinfo home page) | 33 | % (and all CTAN mirrors, see http://www.ctan.org). |
34 | % The texinfo.tex in any given distribution could well be out | 34 | % The texinfo.tex in any given distribution could well be out |
35 | % of date, so if that's what you're using, please check. | 35 | % of date, so if that's what you're using, please check. |
36 | % | 36 | % |
@@ -594,7 +594,7 @@ | |||
594 | \def\:{\spacefactor=1000 } | 594 | \def\:{\spacefactor=1000 } |
595 | 595 | ||
596 | % @* forces a line break. | 596 | % @* forces a line break. |
597 | \def\*{\unskip\hfil\break\hbox{}\ignorespaces} | 597 | \def\*{\hfil\break\hbox{}\ignorespaces} |
598 | 598 | ||
599 | % @/ allows a line break. | 599 | % @/ allows a line break. |
600 | \let\/=\allowbreak | 600 | \let\/=\allowbreak |
@@ -1117,7 +1117,7 @@ where each line of input produces a line of output.} | |||
1117 | % #1 is a control sequence in which to do the replacements, | 1117 | % #1 is a control sequence in which to do the replacements, |
1118 | % which we \xdef. | 1118 | % which we \xdef. |
1119 | \def\txiescapepdf#1{% | 1119 | \def\txiescapepdf#1{% |
1120 | \ifx\pdfescapestring\thisisundefined | 1120 | \ifx\pdfescapestring\relax |
1121 | % No primitive available; should we give a warning or log? | 1121 | % No primitive available; should we give a warning or log? |
1122 | % Many times it won't matter. | 1122 | % Many times it won't matter. |
1123 | \else | 1123 | \else |
@@ -1367,8 +1367,9 @@ output) for that.)} | |||
1367 | \def\skipspaces#1{\def\PP{#1}\def\D{|}% | 1367 | \def\skipspaces#1{\def\PP{#1}\def\D{|}% |
1368 | \ifx\PP\D\let\nextsp\relax | 1368 | \ifx\PP\D\let\nextsp\relax |
1369 | \else\let\nextsp\skipspaces | 1369 | \else\let\nextsp\skipspaces |
1370 | \addtokens{\filename}{\PP}% | 1370 | \ifx\p\space\else\addtokens{\filename}{\PP}% |
1371 | \advance\filenamelength by 1 | 1371 | \advance\filenamelength by 1 |
1372 | \fi | ||
1372 | \fi | 1373 | \fi |
1373 | \nextsp} | 1374 | \nextsp} |
1374 | \def\getfilename#1{% | 1375 | \def\getfilename#1{% |
@@ -1474,6 +1475,9 @@ output) for that.)} | |||
1474 | \def\ttsl{\setfontstyle{ttsl}} | 1475 | \def\ttsl{\setfontstyle{ttsl}} |
1475 | 1476 | ||
1476 | 1477 | ||
1478 | % Default leading. | ||
1479 | \newdimen\textleading \textleading = 13.2pt | ||
1480 | |||
1477 | % Set the baselineskip to #1, and the lineskip and strut size | 1481 | % Set the baselineskip to #1, and the lineskip and strut size |
1478 | % correspondingly. There is no deep meaning behind these magic numbers | 1482 | % correspondingly. There is no deep meaning behind these magic numbers |
1479 | % used as factors; they just match (closely enough) what Knuth defined. | 1483 | % used as factors; they just match (closely enough) what Knuth defined. |
@@ -1485,7 +1489,6 @@ output) for that.)} | |||
1485 | % can get a sort of poor man's double spacing by redefining this. | 1489 | % can get a sort of poor man's double spacing by redefining this. |
1486 | \def\baselinefactor{1} | 1490 | \def\baselinefactor{1} |
1487 | % | 1491 | % |
1488 | \newdimen\textleading | ||
1489 | \def\setleading#1{% | 1492 | \def\setleading#1{% |
1490 | \dimen0 = #1\relax | 1493 | \dimen0 = #1\relax |
1491 | \normalbaselineskip = \baselinefactor\dimen0 | 1494 | \normalbaselineskip = \baselinefactor\dimen0 |
@@ -1758,24 +1761,18 @@ end | |||
1758 | \fi\fi | 1761 | \fi\fi |
1759 | 1762 | ||
1760 | 1763 | ||
1761 | % Set the font macro #1 to the font named \fontprefix#2. | 1764 | % Set the font macro #1 to the font named #2, adding on the |
1765 | % specified font prefix (normally `cm'). | ||
1762 | % #3 is the font's design size, #4 is a scale factor, #5 is the CMap | 1766 | % #3 is the font's design size, #4 is a scale factor, #5 is the CMap |
1763 | % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). | 1767 | % encoding (currently only OT1, OT1IT and OT1TT are allowed, pass |
1764 | % Example: | 1768 | % empty to omit). |
1765 | % #1 = \textrm | ||
1766 | % #2 = \rmshape | ||
1767 | % #3 = 10 | ||
1768 | % #4 = \mainmagstep | ||
1769 | % #5 = OT1 | ||
1770 | % | ||
1771 | \def\setfont#1#2#3#4#5{% | 1769 | \def\setfont#1#2#3#4#5{% |
1772 | \font#1=\fontprefix#2#3 scaled #4 | 1770 | \font#1=\fontprefix#2#3 scaled #4 |
1773 | \csname cmap#5\endcsname#1% | 1771 | \csname cmap#5\endcsname#1% |
1774 | } | 1772 | } |
1775 | % This is what gets called when #5 of \setfont is empty. | 1773 | % This is what gets called when #5 of \setfont is empty. |
1776 | \let\cmap\gobble | 1774 | \let\cmap\gobble |
1777 | % | 1775 | % emacs-page end of cmaps |
1778 | % (end of cmaps) | ||
1779 | 1776 | ||
1780 | % Use cm as the default font prefix. | 1777 | % Use cm as the default font prefix. |
1781 | % To specify the font prefix, you must define \fontprefix | 1778 | % To specify the font prefix, you must define \fontprefix |
@@ -1785,7 +1782,7 @@ end | |||
1785 | \fi | 1782 | \fi |
1786 | % Support font families that don't use the same naming scheme as CM. | 1783 | % Support font families that don't use the same naming scheme as CM. |
1787 | \def\rmshape{r} | 1784 | \def\rmshape{r} |
1788 | \def\rmbshape{bx} % where the normal face is bold | 1785 | \def\rmbshape{bx} %where the normal face is bold |
1789 | \def\bfshape{b} | 1786 | \def\bfshape{b} |
1790 | \def\bxshape{bx} | 1787 | \def\bxshape{bx} |
1791 | \def\ttshape{tt} | 1788 | \def\ttshape{tt} |
@@ -1800,7 +1797,8 @@ end | |||
1800 | \def\scshape{csc} | 1797 | \def\scshape{csc} |
1801 | \def\scbshape{csc} | 1798 | \def\scbshape{csc} |
1802 | 1799 | ||
1803 | % Definitions for a main text size of 11pt. (The default in Texinfo.) | 1800 | % Definitions for a main text size of 11pt. This is the default in |
1801 | % Texinfo. | ||
1804 | % | 1802 | % |
1805 | \def\definetextfontsizexi{% | 1803 | \def\definetextfontsizexi{% |
1806 | % Text fonts (11.2pt, magstep1). | 1804 | % Text fonts (11.2pt, magstep1). |
@@ -1925,7 +1923,7 @@ end | |||
1925 | \textleading = 13.2pt % line spacing for 11pt CM | 1923 | \textleading = 13.2pt % line spacing for 11pt CM |
1926 | \textfonts % reset the current fonts | 1924 | \textfonts % reset the current fonts |
1927 | \rm | 1925 | \rm |
1928 | } % end of 11pt text font size definitions, \definetextfontsizexi | 1926 | } % end of 11pt text font size definitions |
1929 | 1927 | ||
1930 | 1928 | ||
1931 | % Definitions to make the main text be 10pt Computer Modern, with | 1929 | % Definitions to make the main text be 10pt Computer Modern, with |
@@ -2057,7 +2055,7 @@ end | |||
2057 | \textleading = 12pt % line spacing for 10pt CM | 2055 | \textleading = 12pt % line spacing for 10pt CM |
2058 | \textfonts % reset the current fonts | 2056 | \textfonts % reset the current fonts |
2059 | \rm | 2057 | \rm |
2060 | } % end of 10pt text font size definitions, \definetextfontsizex | 2058 | } % end of 10pt text font size definitions |
2061 | 2059 | ||
2062 | 2060 | ||
2063 | % We provide the user-level command | 2061 | % We provide the user-level command |
@@ -2448,12 +2446,34 @@ end | |||
2448 | % @samp. | 2446 | % @samp. |
2449 | \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} | 2447 | \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} |
2450 | 2448 | ||
2451 | % @indicateurl is \samp, that is, with quotes. | 2449 | % definition of @key that produces a lozenge. Doesn't adjust to text size. |
2452 | \let\indicateurl=\samp | 2450 | %\setfont\keyrm\rmshape{8}{1000}{OT1} |
2451 | %\font\keysy=cmsy9 | ||
2452 | %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% | ||
2453 | % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% | ||
2454 | % \vbox{\hrule\kern-0.4pt | ||
2455 | % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% | ||
2456 | % \kern-0.4pt\hrule}% | ||
2457 | % \kern-.06em\raise0.4pt\hbox{\angleright}}}} | ||
2458 | |||
2459 | % definition of @key with no lozenge. If the current font is already | ||
2460 | % monospace, don't change it; that way, we respect @kbdinputstyle. But | ||
2461 | % if it isn't monospace, then use \tt. | ||
2462 | % | ||
2463 | \def\key#1{{\setupmarkupstyle{key}% | ||
2464 | \nohyphenation | ||
2465 | \ifmonospace\else\tt\fi | ||
2466 | #1}\null} | ||
2467 | |||
2468 | % ctrl is no longer a Texinfo command. | ||
2469 | \def\ctrl #1{{\tt \rawbackslash \hat}#1} | ||
2470 | |||
2471 | % @file, @option are the same as @samp. | ||
2472 | \let\file=\samp | ||
2473 | \let\option=\samp | ||
2453 | 2474 | ||
2454 | % @code (and similar) prints in typewriter, but with spaces the same | 2475 | % @code is a modification of @t, |
2455 | % size as normal in the surrounding text, without hyphenation, etc. | 2476 | % which makes spaces the same size as normal in the surrounding text. |
2456 | % This is a subroutine for that. | ||
2457 | \def\tclose#1{% | 2477 | \def\tclose#1{% |
2458 | {% | 2478 | {% |
2459 | % Change normal interword space to be same as for the current font. | 2479 | % Change normal interword space to be same as for the current font. |
@@ -2478,7 +2498,7 @@ end | |||
2478 | % We *must* turn on hyphenation at `-' and `_' in @code. | 2498 | % We *must* turn on hyphenation at `-' and `_' in @code. |
2479 | % Otherwise, it is too hard to avoid overfull hboxes | 2499 | % Otherwise, it is too hard to avoid overfull hboxes |
2480 | % in the Emacs manual, the Library manual, etc. | 2500 | % in the Emacs manual, the Library manual, etc. |
2481 | % | 2501 | |
2482 | % Unfortunately, TeX uses one parameter (\hyphenchar) to control | 2502 | % Unfortunately, TeX uses one parameter (\hyphenchar) to control |
2483 | % both hyphenation at - and hyphenation within words. | 2503 | % both hyphenation at - and hyphenation within words. |
2484 | % We must therefore turn them both off (\tclose does that) | 2504 | % We must therefore turn them both off (\tclose does that) |
@@ -2542,13 +2562,6 @@ end | |||
2542 | \fi\fi | 2562 | \fi\fi |
2543 | } | 2563 | } |
2544 | 2564 | ||
2545 | % For @command, @env, @file, @option quotes seem unnecessary, | ||
2546 | % so use \code rather than \samp. | ||
2547 | \let\command=\code | ||
2548 | \let\env=\code | ||
2549 | \let\file=\code | ||
2550 | \let\option=\code | ||
2551 | |||
2552 | % @uref (abbreviation for `urlref') takes an optional (comma-separated) | 2565 | % @uref (abbreviation for `urlref') takes an optional (comma-separated) |
2553 | % second argument specifying the text to display and an optional third | 2566 | % second argument specifying the text to display and an optional third |
2554 | % arg as text to display instead of (rather than in addition to) the url | 2567 | % arg as text to display instead of (rather than in addition to) the url |
@@ -2728,24 +2741,10 @@ end | |||
2728 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi | 2741 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi |
2729 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} | 2742 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} |
2730 | 2743 | ||
2731 | % definition of @key that produces a lozenge. Doesn't adjust to text size. | 2744 | % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. |
2732 | %\setfont\keyrm\rmshape{8}{1000}{OT1} | 2745 | \let\indicateurl=\code |
2733 | %\font\keysy=cmsy9 | 2746 | \let\env=\code |
2734 | %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% | 2747 | \let\command=\code |
2735 | % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% | ||
2736 | % \vbox{\hrule\kern-0.4pt | ||
2737 | % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% | ||
2738 | % \kern-0.4pt\hrule}% | ||
2739 | % \kern-.06em\raise0.4pt\hbox{\angleright}}}} | ||
2740 | |||
2741 | % definition of @key with no lozenge. If the current font is already | ||
2742 | % monospace, don't change it; that way, we respect @kbdinputstyle. But | ||
2743 | % if it isn't monospace, then use \tt. | ||
2744 | % | ||
2745 | \def\key#1{{\setupmarkupstyle{key}% | ||
2746 | \nohyphenation | ||
2747 | \ifmonospace\else\tt\fi | ||
2748 | #1}\null} | ||
2749 | 2748 | ||
2750 | % @clicksequence{File @click{} Open ...} | 2749 | % @clicksequence{File @click{} Open ...} |
2751 | \def\clicksequence#1{\begingroup #1\endgroup} | 2750 | \def\clicksequence#1{\begingroup #1\endgroup} |
@@ -2853,9 +2852,6 @@ end | |||
2853 | } | 2852 | } |
2854 | } | 2853 | } |
2855 | 2854 | ||
2856 | % ctrl is no longer a Texinfo command, but leave this definition for fun. | ||
2857 | \def\ctrl #1{{\tt \rawbackslash \hat}#1} | ||
2858 | |||
2859 | % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. | 2855 | % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. |
2860 | % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, | 2856 | % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, |
2861 | % except specified as a normal braced arg, so no newlines to worry about. | 2857 | % except specified as a normal braced arg, so no newlines to worry about. |
@@ -3146,17 +3142,12 @@ end | |||
3146 | % hopefully nobody will notice/care. | 3142 | % hopefully nobody will notice/care. |
3147 | \edef\ecsize{\csname\curfontsize ecsize\endcsname}% | 3143 | \edef\ecsize{\csname\curfontsize ecsize\endcsname}% |
3148 | \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% | 3144 | \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% |
3149 | \ifmonospace | 3145 | \ifx\curfontstyle\bfstylename |
3150 | % typewriter: | 3146 | % bold: |
3151 | \font\thisecfont = ectt\ecsize \space at \nominalsize | 3147 | \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize |
3152 | \else | 3148 | \else |
3153 | \ifx\curfontstyle\bfstylename | 3149 | % regular: |
3154 | % bold: | 3150 | \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize |
3155 | \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize | ||
3156 | \else | ||
3157 | % regular: | ||
3158 | \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize | ||
3159 | \fi | ||
3160 | \fi | 3151 | \fi |
3161 | \thisecfont | 3152 | \thisecfont |
3162 | } | 3153 | } |
@@ -3269,20 +3260,6 @@ end | |||
3269 | \finishedtitlepagetrue | 3260 | \finishedtitlepagetrue |
3270 | } | 3261 | } |
3271 | 3262 | ||
3272 | % Settings used for typesetting titles: no hyphenation, no indentation, | ||
3273 | % don't worry much about spacing, ragged right. This should be used | ||
3274 | % inside a \vbox, and fonts need to be set appropriately first. Because | ||
3275 | % it is always used for titles, nothing else, we call \rmisbold. \par | ||
3276 | % should be specified before the end of the \vbox, since a vbox is a group. | ||
3277 | % | ||
3278 | \def\raggedtitlesettings{% | ||
3279 | \rmisbold | ||
3280 | \hyphenpenalty=10000 | ||
3281 | \parindent=0pt | ||
3282 | \tolerance=5000 | ||
3283 | \ptexraggedright | ||
3284 | } | ||
3285 | |||
3286 | % Macros to be used within @titlepage: | 3263 | % Macros to be used within @titlepage: |
3287 | 3264 | ||
3288 | \let\subtitlerm=\tenrm | 3265 | \let\subtitlerm=\tenrm |
@@ -3290,7 +3267,7 @@ end | |||
3290 | 3267 | ||
3291 | \parseargdef\title{% | 3268 | \parseargdef\title{% |
3292 | \checkenv\titlepage | 3269 | \checkenv\titlepage |
3293 | \vbox{\titlefonts \raggedtitlesettings #1\par}% | 3270 | \leftline{\titlefonts\rmisbold #1} |
3294 | % print a rule at the page bottom also. | 3271 | % print a rule at the page bottom also. |
3295 | \finishedtitlepagefalse | 3272 | \finishedtitlepagefalse |
3296 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt | 3273 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt |
@@ -4227,7 +4204,7 @@ end | |||
4227 | } | 4204 | } |
4228 | \def\ifsetfail{\doignore{ifset}} | 4205 | \def\ifsetfail{\doignore{ifset}} |
4229 | 4206 | ||
4230 | % @ifclear VAR ... @end executes the `...' iff VAR has never been | 4207 | % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been |
4231 | % defined with @set, or has been undefined with @clear. | 4208 | % defined with @set, or has been undefined with @clear. |
4232 | % | 4209 | % |
4233 | % The `\else' inside the `\doifset' parameter is a trick to reuse the | 4210 | % The `\else' inside the `\doifset' parameter is a trick to reuse the |
@@ -4238,35 +4215,6 @@ end | |||
4238 | \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} | 4215 | \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} |
4239 | \def\ifclearfail{\doignore{ifclear}} | 4216 | \def\ifclearfail{\doignore{ifclear}} |
4240 | 4217 | ||
4241 | % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written | ||
4242 | % without the @) is in fact defined. We can only feasibly check at the | ||
4243 | % TeX level, so something like `mathcode' is going to considered | ||
4244 | % defined even though it is not a Texinfo command. | ||
4245 | % | ||
4246 | \makecond{ifcommanddefined} | ||
4247 | \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} | ||
4248 | % | ||
4249 | \def\doifcmddefined#1#2{{% | ||
4250 | \makevalueexpandable | ||
4251 | \let\next=\empty | ||
4252 | \expandafter\ifx\csname #2\endcsname\relax | ||
4253 | #1% If not defined, \let\next as above. | ||
4254 | \fi | ||
4255 | \expandafter | ||
4256 | }\next | ||
4257 | } | ||
4258 | \def\ifcmddefinedfail{\doignore{ifcommanddefined}} | ||
4259 | |||
4260 | % @ifcommandnotdefined CMD ... handlded similar to @ifclear above. | ||
4261 | \makecond{ifcommandnotdefined} | ||
4262 | \def\ifcommandnotdefined{% | ||
4263 | \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} | ||
4264 | \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} | ||
4265 | |||
4266 | % Set the `txicommandconditionals' variable, so documents have a way to | ||
4267 | % test if the @ifcommand...defined conditionals are available. | ||
4268 | \set txicommandconditionals | ||
4269 | |||
4270 | % @dircategory CATEGORY -- specify a category of the dir file | 4218 | % @dircategory CATEGORY -- specify a category of the dir file |
4271 | % which this file should belong to. Ignore this in TeX. | 4219 | % which this file should belong to. Ignore this in TeX. |
4272 | \let\dircategory=\comment | 4220 | \let\dircategory=\comment |
@@ -4503,7 +4451,6 @@ end | |||
4503 | \definedummyword\guillemetright | 4451 | \definedummyword\guillemetright |
4504 | \definedummyword\guilsinglleft | 4452 | \definedummyword\guilsinglleft |
4505 | \definedummyword\guilsinglright | 4453 | \definedummyword\guilsinglright |
4506 | \definedummyword\lbracechar | ||
4507 | \definedummyword\leq | 4454 | \definedummyword\leq |
4508 | \definedummyword\minus | 4455 | \definedummyword\minus |
4509 | \definedummyword\ogonek | 4456 | \definedummyword\ogonek |
@@ -4516,7 +4463,6 @@ end | |||
4516 | \definedummyword\quoteleft | 4463 | \definedummyword\quoteleft |
4517 | \definedummyword\quoteright | 4464 | \definedummyword\quoteright |
4518 | \definedummyword\quotesinglbase | 4465 | \definedummyword\quotesinglbase |
4519 | \definedummyword\rbracechar | ||
4520 | \definedummyword\result | 4466 | \definedummyword\result |
4521 | \definedummyword\textdegree | 4467 | \definedummyword\textdegree |
4522 | % | 4468 | % |
@@ -4568,7 +4514,6 @@ end | |||
4568 | \definedummyword\t | 4514 | \definedummyword\t |
4569 | % | 4515 | % |
4570 | % Commands that take arguments. | 4516 | % Commands that take arguments. |
4571 | \definedummyword\abbr | ||
4572 | \definedummyword\acronym | 4517 | \definedummyword\acronym |
4573 | \definedummyword\anchor | 4518 | \definedummyword\anchor |
4574 | \definedummyword\cite | 4519 | \definedummyword\cite |
@@ -4580,9 +4525,7 @@ end | |||
4580 | \definedummyword\emph | 4525 | \definedummyword\emph |
4581 | \definedummyword\env | 4526 | \definedummyword\env |
4582 | \definedummyword\file | 4527 | \definedummyword\file |
4583 | \definedummyword\image | ||
4584 | \definedummyword\indicateurl | 4528 | \definedummyword\indicateurl |
4585 | \definedummyword\inforef | ||
4586 | \definedummyword\kbd | 4529 | \definedummyword\kbd |
4587 | \definedummyword\key | 4530 | \definedummyword\key |
4588 | \definedummyword\math | 4531 | \definedummyword\math |
@@ -4629,10 +4572,7 @@ end | |||
4629 | % content at all. So for index sorting, we map @{ and @} to strings | 4572 | % content at all. So for index sorting, we map @{ and @} to strings |
4630 | % starting with |, since that ASCII character is between ASCII { and }. | 4573 | % starting with |, since that ASCII character is between ASCII { and }. |
4631 | \def\{{|a}% | 4574 | \def\{{|a}% |
4632 | \def\lbracechar{|a}% | ||
4633 | % | ||
4634 | \def\}{|b}% | 4575 | \def\}{|b}% |
4635 | \def\rbracechar{|b}% | ||
4636 | % | 4576 | % |
4637 | % Non-English letters. | 4577 | % Non-English letters. |
4638 | \def\AA{AA}% | 4578 | \def\AA{AA}% |
@@ -5593,6 +5533,14 @@ end | |||
5593 | 5533 | ||
5594 | % Define @majorheading, @heading and @subheading | 5534 | % Define @majorheading, @heading and @subheading |
5595 | 5535 | ||
5536 | % NOTE on use of \vbox for chapter headings, section headings, and such: | ||
5537 | % 1) We use \vbox rather than the earlier \line to permit | ||
5538 | % overlong headings to fold. | ||
5539 | % 2) \hyphenpenalty is set to 10000 because hyphenation in a | ||
5540 | % heading is obnoxious; this forbids it. | ||
5541 | % 3) Likewise, headings look best if no \parindent is used, and | ||
5542 | % if justification is not attempted. Hence \raggedright. | ||
5543 | |||
5596 | \def\majorheading{% | 5544 | \def\majorheading{% |
5597 | {\advance\chapheadingskip by 10pt \chapbreak }% | 5545 | {\advance\chapheadingskip by 10pt \chapbreak }% |
5598 | \parsearg\chapheadingzzz | 5546 | \parsearg\chapheadingzzz |
@@ -5600,8 +5548,10 @@ end | |||
5600 | 5548 | ||
5601 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} | 5549 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} |
5602 | \def\chapheadingzzz#1{% | 5550 | \def\chapheadingzzz#1{% |
5603 | \vbox{\chapfonts \raggedtitlesettings #1\par}% | 5551 | {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
5604 | \nobreak\bigskip \nobreak | 5552 | \parindent=0pt\ptexraggedright |
5553 | \rmisbold #1\hfill}}% | ||
5554 | \bigskip \par\penalty 200\relax | ||
5605 | \suppressfirstparagraphindent | 5555 | \suppressfirstparagraphindent |
5606 | } | 5556 | } |
5607 | 5557 | ||
@@ -5760,7 +5710,8 @@ end | |||
5760 | % | 5710 | % |
5761 | % Typeset the actual heading. | 5711 | % Typeset the actual heading. |
5762 | \nobreak % Avoid page breaks at the interline glue. | 5712 | \nobreak % Avoid page breaks at the interline glue. |
5763 | \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe | 5713 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright |
5714 | \hangindent=\wd0 \centerparametersmaybe | ||
5764 | \unhbox0 #1\par}% | 5715 | \unhbox0 #1\par}% |
5765 | }% | 5716 | }% |
5766 | \nobreak\bigskip % no page break after a chapter title | 5717 | \nobreak\bigskip % no page break after a chapter title |
@@ -5782,18 +5733,18 @@ end | |||
5782 | \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} | 5733 | \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} |
5783 | % | 5734 | % |
5784 | \def\unnchfopen #1{% | 5735 | \def\unnchfopen #1{% |
5785 | \chapoddpage | 5736 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
5786 | \vbox{\chapfonts \raggedtitlesettings #1\par}% | 5737 | \parindent=0pt\ptexraggedright |
5787 | \nobreak\bigskip\nobreak | 5738 | \rmisbold #1\hfill}}\bigskip \par\nobreak |
5788 | } | 5739 | } |
5789 | \def\chfopen #1#2{\chapoddpage {\chapfonts | 5740 | \def\chfopen #1#2{\chapoddpage {\chapfonts |
5790 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% | 5741 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% |
5791 | \par\penalty 5000 % | 5742 | \par\penalty 5000 % |
5792 | } | 5743 | } |
5793 | \def\centerchfopen #1{% | 5744 | \def\centerchfopen #1{% |
5794 | \chapoddpage | 5745 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
5795 | \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% | 5746 | \parindent=0pt |
5796 | \nobreak\bigskip \nobreak | 5747 | \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak |
5797 | } | 5748 | } |
5798 | \def\CHAPFopen{% | 5749 | \def\CHAPFopen{% |
5799 | \global\let\chapmacro=\chfopen | 5750 | \global\let\chapmacro=\chfopen |
@@ -7856,7 +7807,7 @@ end | |||
7856 | \fi\fi | 7807 | \fi\fi |
7857 | } | 7808 | } |
7858 | 7809 | ||
7859 | % | 7810 | |
7860 | % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is | 7811 | % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is |
7861 | % the node name, #2 the name of the Info cross-reference, #3 the printed | 7812 | % the node name, #2 the name of the Info cross-reference, #3 the printed |
7862 | % node name, #4 the name of the Info file, #5 the name of the printed | 7813 | % node name, #4 the name of the Info file, #5 the name of the printed |
@@ -7866,21 +7817,16 @@ end | |||
7866 | \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} | 7817 | \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} |
7867 | \def\ref#1{\xrefX[#1,,,,,,,]} | 7818 | \def\ref#1{\xrefX[#1,,,,,,,]} |
7868 | % | 7819 | % |
7869 | \newbox\toprefbox | 7820 | \newbox\topbox |
7870 | \newbox\printedrefnamebox | 7821 | \newbox\printedrefnamebox |
7871 | \newbox\infofilenamebox | ||
7872 | \newbox\printedmanualbox | 7822 | \newbox\printedmanualbox |
7873 | % | 7823 | % |
7874 | \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup | 7824 | \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup |
7875 | \unsepspaces | 7825 | \unsepspaces |
7876 | % | 7826 | % |
7877 | % Get args without leading/trailing spaces. | ||
7878 | \def\printedrefname{\ignorespaces #3}% | 7827 | \def\printedrefname{\ignorespaces #3}% |
7879 | \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% | 7828 | \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% |
7880 | % | 7829 | % |
7881 | \def\infofilename{\ignorespaces #4}% | ||
7882 | \setbox\infofilenamebox = \hbox{\infofilename\unskip}% | ||
7883 | % | ||
7884 | \def\printedmanual{\ignorespaces #5}% | 7830 | \def\printedmanual{\ignorespaces #5}% |
7885 | \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% | 7831 | \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% |
7886 | % | 7832 | % |
@@ -7915,18 +7861,11 @@ end | |||
7915 | \turnoffactive | 7861 | \turnoffactive |
7916 | \makevalueexpandable | 7862 | \makevalueexpandable |
7917 | % This expands tokens, so do it after making catcode changes, so _ | 7863 | % This expands tokens, so do it after making catcode changes, so _ |
7918 | % etc. don't get their TeX definitions. This ignores all spaces in | 7864 | % etc. don't get their TeX definitions. |
7919 | % #4, including (wrongly) those in the middle of the filename. | ||
7920 | \getfilename{#4}% | 7865 | \getfilename{#4}% |
7921 | % | 7866 | % |
7922 | % This (wrongly) does not take account of leading or trailing | ||
7923 | % spaces in #1, which should be ignored. | ||
7924 | \edef\pdfxrefdest{#1}% | 7867 | \edef\pdfxrefdest{#1}% |
7925 | \ifx\pdfxrefdest\empty | 7868 | \txiescapepdf\pdfxrefdest |
7926 | \def\pdfxrefdest{Top}% no empty targets | ||
7927 | \else | ||
7928 | \txiescapepdf\pdfxrefdest % escape PDF special chars | ||
7929 | \fi | ||
7930 | % | 7869 | % |
7931 | \leavevmode | 7870 | \leavevmode |
7932 | \startlink attr{/Border [0 0 0]}% | 7871 | \startlink attr{/Border [0 0 0]}% |
@@ -7959,7 +7898,7 @@ end | |||
7959 | \printedrefname | 7898 | \printedrefname |
7960 | \fi | 7899 | \fi |
7961 | % | 7900 | % |
7962 | % If the user also gave the printed manual name (fifth arg), append | 7901 | % if the user also gave the printed manual name (fifth arg), append |
7963 | % "in MANUALNAME". | 7902 | % "in MANUALNAME". |
7964 | \ifdim \wd\printedmanualbox > 0pt | 7903 | \ifdim \wd\printedmanualbox > 0pt |
7965 | \space \putwordin{} \cite{\printedmanual}% | 7904 | \space \putwordin{} \cite{\printedmanual}% |
@@ -7974,20 +7913,32 @@ end | |||
7974 | % this is a loss. Therefore, we give the text of the node name | 7913 | % this is a loss. Therefore, we give the text of the node name |
7975 | % again, so it is as if TeX is seeing it for the first time. | 7914 | % again, so it is as if TeX is seeing it for the first time. |
7976 | % | 7915 | % |
7916 | % Cross-manual reference. Only include the "Section ``foo'' in" if | ||
7917 | % the foo is neither missing or Top. Thus, @xref{,,,foo,The Foo Manual} | ||
7918 | % outputs simply "see The Foo Manual". | ||
7977 | \ifdim \wd\printedmanualbox > 0pt | 7919 | \ifdim \wd\printedmanualbox > 0pt |
7978 | % Cross-manual reference with a printed manual name. | 7920 | % What is the 7sp about? The idea is that we also want to omit |
7921 | % the Section part if we would be printing "Top", since they are | ||
7922 | % clearly trying to refer to the whole manual. But, this being | ||
7923 | % TeX, we can't easily compare strings while ignoring the possible | ||
7924 | % spaces before and after in the input. By adding the arbitrary | ||
7925 | % 7sp, we make it much less likely that a real node name would | ||
7926 | % happen to have the same width as "Top" (e.g., in a monospaced font). | ||
7927 | % I hope it will never happen in practice. | ||
7979 | % | 7928 | % |
7980 | \crossmanualxref{\cite{\printedmanual\unskip}}% | 7929 | % For the same basic reason, we retypeset the "Top" at every |
7981 | % | 7930 | % reference, since the current font is indeterminate. |
7982 | \else\ifdim \wd\infofilenamebox > 0pt | ||
7983 | % Cross-manual reference with only an info filename (arg 4), no | ||
7984 | % printed manual name (arg 5). This is essentially the same as | ||
7985 | % the case above; we output the filename, since we have nothing else. | ||
7986 | % | 7931 | % |
7987 | \crossmanualxref{\code{\infofilename\unskip}}% | 7932 | \setbox\topbox = \hbox{Top\kern7sp}% |
7988 | % | 7933 | \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% |
7934 | \ifdim \wd2 > 7sp | ||
7935 | \ifdim \wd2 = \wd\topbox \else | ||
7936 | \putwordSection{} ``\printedrefname'' \putwordin{}\space | ||
7937 | \fi | ||
7938 | \fi | ||
7939 | \cite{\printedmanual}% | ||
7989 | \else | 7940 | \else |
7990 | % Reference within this manual. | 7941 | % Reference in this manual. |
7991 | % | 7942 | % |
7992 | % _ (for example) has to be the character _ for the purposes of the | 7943 | % _ (for example) has to be the character _ for the purposes of the |
7993 | % control sequence corresponding to the node, but it has to expand | 7944 | % control sequence corresponding to the node, but it has to expand |
@@ -8008,37 +7959,11 @@ end | |||
8008 | % | 7959 | % |
8009 | % output the `page 3'. | 7960 | % output the `page 3'. |
8010 | \turnoffactive \putwordpage\tie\refx{#1-pg}{}% | 7961 | \turnoffactive \putwordpage\tie\refx{#1-pg}{}% |
8011 | \fi\fi | 7962 | \fi |
8012 | \fi | 7963 | \fi |
8013 | \endlink | 7964 | \endlink |
8014 | \endgroup} | 7965 | \endgroup} |
8015 | 7966 | ||
8016 | % Output a cross-manual xref to #1. Used just above (twice). | ||
8017 | % | ||
8018 | % Only include the text "Section ``foo'' in" if the foo is neither | ||
8019 | % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply | ||
8020 | % "see The Foo Manual", the idea being to refer to the whole manual. | ||
8021 | % | ||
8022 | % But, this being TeX, we can't easily compare our node name against the | ||
8023 | % string "Top" while ignoring the possible spaces before and after in | ||
8024 | % the input. By adding the arbitrary 7sp below, we make it much less | ||
8025 | % likely that a real node name would have the same width as "Top" (e.g., | ||
8026 | % in a monospaced font). Hopefully it will never happen in practice. | ||
8027 | % | ||
8028 | % For the same basic reason, we retypeset the "Top" at every | ||
8029 | % reference, since the current font is indeterminate. | ||
8030 | % | ||
8031 | \def\crossmanualxref#1{% | ||
8032 | \setbox\toprefbox = \hbox{Top\kern7sp}% | ||
8033 | \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% | ||
8034 | \ifdim \wd2 > 7sp % nonempty? | ||
8035 | \ifdim \wd2 = \wd\toprefbox \else % same as Top? | ||
8036 | \putwordSection{} ``\printedrefname'' \putwordin{}\space | ||
8037 | \fi | ||
8038 | \fi | ||
8039 | #1% | ||
8040 | } | ||
8041 | |||
8042 | % This macro is called from \xrefX for the `[nodename]' part of xref | 7967 | % This macro is called from \xrefX for the `[nodename]' part of xref |
8043 | % output. It's a separate macro only so it can be changed more easily, | 7968 | % output. It's a separate macro only so it can be changed more easily, |
8044 | % since square brackets don't work well in some documents. Particularly | 7969 | % since square brackets don't work well in some documents. Particularly |