/[autoconf]/autoconf/config/texinfo.tex
ViewVC logotype

Diff of /autoconf/config/texinfo.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by akim, Fri Oct 25 12:17:23 2002 UTC revision 1.9 by akim, Mon Nov 4 08:47:39 2002 UTC
# Line 3  Line 3 
3  % Load plain if necessary, i.e., if running under initex.  % Load plain if necessary, i.e., if running under initex.
4  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi  \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5  %  %
6  \def\texinfoversion{2002-10-13.14}  \def\texinfoversion{2002-10-31.17}
7  %  %
8  % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,  % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9  % 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.  % 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
# Line 68  Line 68 
68  \everyjob{\message{[Texinfo version \texinfoversion]}%  \everyjob{\message{[Texinfo version \texinfoversion]}%
69    \catcode`+=\active \catcode`\_=\active}    \catcode`+=\active \catcode`\_=\active}
70    
71    \message{Basics,}
72    \chardef\other=12
73    
74    % We never want plain's outer \+ definition in Texinfo.
75    % For @tex, we can use \tabalign.
76    \let\+ = \relax
77    
78  % Save some parts of plain tex whose names we will redefine.  % Save some parts of plain tex whose names we will redefine.
79  \let\ptexb=\b  \let\ptexb=\b
80  \let\ptexbullet=\bullet  \let\ptexbullet=\bullet
# Line 78  Line 85 
85  \let\ptexend=\end  \let\ptexend=\end
86  \let\ptexequiv=\equiv  \let\ptexequiv=\equiv
87  \let\ptexexclam=\!  \let\ptexexclam=\!
88    \let\ptexgtr=>
89    \let\ptexhat=^
90  \let\ptexi=\i  \let\ptexi=\i
91  \let\ptexlbrace=\{  \let\ptexlbrace=\{
92    \let\ptexless=<
93    \let\ptexplus=+
94  \let\ptexrbrace=\}  \let\ptexrbrace=\}
95  \let\ptexstar=\*  \let\ptexstar=\*
96  \let\ptext=\t  \let\ptext=\t
97    
 % We never want plain's outer \+ definition in Texinfo.  
 % For @tex, we can use \tabalign.  
 \let\+ = \relax  
   
 \message{Basics,}  
 \chardef\other=12  
   
98  % If this character appears in an error message or help string, it  % If this character appears in an error message or help string, it
99  % starts a new line in the output.  % starts a new line in the output.
100  \newlinechar = `^^J  \newlinechar = `^^J
# Line 159  Line 163 
163    
164  % Sometimes it is convenient to have everything in the transcript file  % Sometimes it is convenient to have everything in the transcript file
165  % and nothing on the terminal.  We don't just call \tracingall here,  % and nothing on the terminal.  We don't just call \tracingall here,
166  % since that produces some useless output on the terminal.  % since that produces some useless output on the terminal.  We also make
167    % some effort to order the tracing commands to reduce output in the log
168    % file; cf. trace.sty in LaTeX.
169  %  %
170  \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%  \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
171  \ifx\eTeXversion\undefined  \def\loggingall{%
172  \def\loggingall{\tracingcommands2 \tracingstats2    \tracingstats2
173     \tracingpages1 \tracingoutput1 \tracinglostchars1    \tracingpages1
174     \tracingmacros2 \tracingparagraphs1 \tracingrestores1    \tracinglostchars2  % 2 gives us more in etex
175     \showboxbreadth\maxdimen\showboxdepth\maxdimen    \tracingparagraphs1
176  }%    \tracingoutput1
177  \else    \tracingmacros2
178  \def\loggingall{\tracingcommands3 \tracingstats2    \tracingrestores1
179     \tracingpages1 \tracingoutput1 \tracinglostchars1    \showboxbreadth\maxdimen \showboxdepth\maxdimen
180     \tracingmacros2 \tracingparagraphs1 \tracingrestores1    \ifx\eTeXversion\undefined\else % etex gives us more logging
181     \tracingscantokens1 \tracingassigns1 \tracingifs1      \tracingscantokens1
182     \tracinggroups1 \tracingnesting2      \tracingifs1
183     \showboxbreadth\maxdimen\showboxdepth\maxdimen      \tracinggroups1
184        \tracingnesting2
185        \tracingassigns1
186      \fi
187      \tracingcommands3  % 3 gives us more in etex
188      \errorcontextlines\maxdimen
189  }%  }%
 \fi  
190    
191  % add check for \lastpenalty to plain's definitions.  If the last thing  % add check for \lastpenalty to plain's definitions.  If the last thing
192  % we did was a \nobreak, we don't want to insert more space.  % we did was a \nobreak, we don't want to insert more space.
# Line 441  Line 451 
451  }  }
452    
453    
 % Single-spacing is done by various environments (specifically, in  
 % \nonfillstart and \quotations).  
 \newskip\singlespaceskip \singlespaceskip = 12.5pt  
 \def\singlespace{%  
   % Why was this kern here?  It messes up equalizing space above and below  
   % environments.  --karl, 6may93  
   %{\advance \baselineskip by -\singlespaceskip  
   %\kern \baselineskip}%  
   \setleading\singlespaceskip  
 }  
   
454  %% Simple single-character @ commands  %% Simple single-character @ commands
455    
456  % @@ prints an @  % @@ prints an @
# Line 846  where each line of input produces a line Line 845  where each line of input produces a line
845  % to set catcodes according to plain TeX first, to allow for subscripts,  % to set catcodes according to plain TeX first, to allow for subscripts,
846  % superscripts, special math chars, etc.  % superscripts, special math chars, etc.
847  %  %
 % @math does not do math typesetting in section titles, index  
 % entries, and other such contexts where the catcodes are set before  
 % @math gets a chance to work.  This could perhaps be fixed, but for now  
 % at least we can have real math in the main text, where it's needed most.  
 %  
848  \let\implicitmath = $%$ font-lock fix  \let\implicitmath = $%$ font-lock fix
849  %  %
850  % One complication: _ usually means subscripts, but it could also mean  % One complication: _ usually means subscripts, but it could also mean
# Line 876  where each line of input produces a line Line 870  where each line of input produces a line
870    \tex    \tex
871    \mathcode`\_="8000 \mathunderscore    \mathcode`\_="8000 \mathunderscore
872    \let\\ = \mathbackslash    \let\\ = \mathbackslash
873      \mathactive
874    \implicitmath\finishmath}    \implicitmath\finishmath}
875  \def\finishmath#1{#1\implicitmath\Etex}  \def\finishmath#1{#1\implicitmath\Etex}
876    
877    % Some active characters (such as <) are spaced differently in math.
878    % We have to reset their definitions in case the @math was an
879    % argument to a command which set the catcodes (such as @item or @section).
880    %
881    {
882      \catcode`^ = \active
883      \catcode`< = \active
884      \catcode`> = \active
885      \catcode`+ = \active
886      \gdef\mathactive{%
887        \let^ = \ptexhat
888        \let< = \ptexless
889        \let> = \ptexgtr
890        \let+ = \ptexplus
891      }
892    }
893    
894  % @bullet and @minus need the same treatment as @math, just above.  % @bullet and @minus need the same treatment as @math, just above.
895  \def\bullet{\implicitmath\ptexbullet\implicitmath}  \def\bullet{\implicitmath\ptexbullet\implicitmath}
896  \def\minus{\implicitmath-\implicitmath}  \def\minus{\implicitmath-\implicitmath}
# Line 1358  where each line of input produces a line Line 1370  where each line of input produces a line
1370  % \smartitalic{ARG} outputs arg in italics, followed by an italic correction  % \smartitalic{ARG} outputs arg in italics, followed by an italic correction
1371  % unless the following character is such as not to need one.  % unless the following character is such as not to need one.
1372  \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}  \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
1373  \def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx}  \def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
1374  \def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx}  \def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
1375    
1376  \let\i=\smartitalic  \let\i=\smartitalic
1377  \let\var=\smartslanted  \let\var=\smartslanted
# Line 1880  where each line of input produces a line Line 1892  where each line of input produces a line
1892      % \parskip glue -- logically it's part of the @item we just started.      % \parskip glue -- logically it's part of the @item we just started.
1893      \nobreak \vskip-\parskip      \nobreak \vskip-\parskip
1894      %      %
1895      % Stop a page break at the \parskip glue coming up.  Unfortunately      % Stop a page break at the \parskip glue coming up.  (Unfortunately
1896      % we can't prevent a possible page break at the following      % we can't prevent a possible page break at the following
1897      % \baselineskip glue.      % \baselineskip glue.)  However, if what follows is an environment
1898      \nobreak      % such as @example, there will be no \parskip glue; then
1899        % the negative vskip we just would cause the example and the item to
1900        % crash together.  So we use this bizarre value of 10001 as a signal
1901        % to \aboveenvbreak to insert \parskip glue after all.
1902        % (Possibly there are other commands that could be followed by
1903        % @example which need the same treatment, but not section titles; or
1904        % maybe section titles are the only special case and they should be
1905        % penalty 10001...)
1906        \penalty 10001
1907      \endgroup      \endgroup
1908      \itemxneedsnegativevskipfalse      \itemxneedsnegativevskipfalse
1909    \else    \else
# Line 3931  width0pt\relax} \fi Line 3951  width0pt\relax} \fi
3951            \hangindent = \wd0 % zero if no section number            \hangindent = \wd0 % zero if no section number
3952            \unhbox0 #3}%            \unhbox0 #3}%
3953    }%    }%
3954    \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak    % Add extra space after the heading -- either a line space or a
3955      % paragraph space, whichever is more.  (Some people like to set
3956      % \parskip to large values for some reason.)
3957      \nobreak
3958      \ifdim\parskip>\normalbaselineskip
3959        \kern\parskip
3960      \else
3961        \kern\normalbaselineskip
3962      \fi
3963      \nobreak
3964  }  }
3965    
3966    
# Line 4265  width0pt\relax} \fi Line 4294  width0pt\relax} \fi
4294  % Make spacing and below environment symmetrical.  We use \parskip here  % Make spacing and below environment symmetrical.  We use \parskip here
4295  % to help in doing that, since in @example-like environments \parskip  % to help in doing that, since in @example-like environments \parskip
4296  % is reset to zero; thus the \afterenvbreak inserts no space -- but the  % is reset to zero; thus the \afterenvbreak inserts no space -- but the
4297  % start of the next paragraph will insert \parskip  % start of the next paragraph will insert \parskip.
4298  %  %
4299  \def\aboveenvbreak{{%  \def\aboveenvbreak{{%
4300    \ifnum\lastpenalty < 10000    % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
4301      \ifnum \lastpenalty=10000 \else
4302      \advance\envskipamount by \parskip      \advance\envskipamount by \parskip
4303      \endgraf      \endgraf
4304      \ifdim\lastskip<\envskipamount      \ifdim\lastskip<\envskipamount
4305        \removelastskip        \removelastskip
4306        \penalty-50        % it's not a good place to break if the last penalty was \nobreak
4307          % or better ...
4308          \ifnum\lastpenalty>10000 \else \penalty-50 \fi
4309        \vskip\envskipamount        \vskip\envskipamount
4310      \fi      \fi
4311    \fi    \fi
# Line 4352  width0pt\relax} \fi Line 4384  width0pt\relax} \fi
4384    \inENV % This group ends at the end of the body    \inENV % This group ends at the end of the body
4385    \hfuzz = 12pt % Don't be fussy    \hfuzz = 12pt % Don't be fussy
4386    \sepspaces % Make spaces be word-separators rather than space tokens.    \sepspaces % Make spaces be word-separators rather than space tokens.
   \singlespace  
4387    \let\par = \lisppar % don't ignore blank lines    \let\par = \lisppar % don't ignore blank lines
4388    \obeylines % each line of input is a line of output    \obeylines % each line of input is a line of output
4389    \parskip = 0pt    \parskip = 0pt
# Line 4467  width0pt\relax} \fi Line 4498  width0pt\relax} \fi
4498  \def\quotation{%  \def\quotation{%
4499    \begingroup\inENV %This group ends at the end of the @quotation body    \begingroup\inENV %This group ends at the end of the @quotation body
4500    {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip    {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
   \singlespace  
4501    \parindent=0pt    \parindent=0pt
4502    % We have retained a nonzero parskip for the environment, since we're    % We have retained a nonzero parskip for the environment, since we're
4503    % doing normal filling. So to avoid extra space below the environment...    % doing normal filling. So to avoid extra space below the environment...
# Line 4700  width0pt\relax} \fi Line 4730  width0pt\relax} \fi
4730  \newskip\deflastargmargin \deflastargmargin=18pt  \newskip\deflastargmargin \deflastargmargin=18pt
4731    
4732  \newcount\parencount  \newcount\parencount
4733  % define \functionparens, which makes ( and ) and & do special things.  
4734  % \functionparens affects the group it is contained in.  % We want ()&[] to print specially on the defun line.
4735    %
4736  \def\activeparens{%  \def\activeparens{%
4737  \catcode`\(=\active \catcode`\)=\active \catcode`\&=\active    \catcode`\(=\active \catcode`\)=\active
4738  \catcode`\[=\active \catcode`\]=\active}    \catcode`\&=\active
4739      \catcode`\[=\active \catcode`\]=\active
4740    }
4741    
4742  % Make control sequences which act like normal parenthesis chars.  % Make control sequences which act like normal parenthesis chars.
4743  \let\lparen = ( \let\rparen = )  \let\lparen = ( \let\rparen = )
# Line 4809  width0pt\relax} \fi Line 4842  width0pt\relax} \fi
4842    % which is there to keep the function description together with its    % which is there to keep the function description together with its
4843    % header.  But if there's nothing but headers, we want to allow a    % header.  But if there's nothing but headers, we want to allow a
4844    % break after all.    % break after all.
4845    \ifnum\lastpenalty = 10000 \penalty0 \fi    \ifnum\lastpenalty=10000 \penalty0 \fi
4846    \medbreak    \medbreak
4847    %    %
4848    % Define the \E... end token that this defining construct specifies    % Define the \E... end token that this defining construct specifies
# Line 4821  width0pt\relax} \fi Line 4854  width0pt\relax} \fi
4854    \exdentamount=\defbodyindent    \exdentamount=\defbodyindent
4855  }  }
4856    
4857    % Common part of the \...x definitions.
4858    %
4859    \def\defxbodycommon{%
4860      % As with \parsebodycommon above, allow line break if we have multiple
4861      % x headers in a row.  It's not a great place, though.
4862      \ifnum\lastpenalty=10000 \penalty1000 \fi
4863      %
4864      \begingroup\obeylines
4865    }
4866    
4867  % Process body of @defun, @deffn, @defmac, etc.  % Process body of @defun, @deffn, @defmac, etc.
4868  %  %
4869  \def\defparsebody#1#2#3{%  \def\defparsebody#1#2#3{%
4870    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4871    \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%    \def#2{\defxbodycommon \activeparens \spacesplit#3}%
4872    \catcode61=\active % 61 is `='    \catcode61=\active % 61 is `='
4873    \begingroup\obeylines\activeparens    \begingroup\obeylines\activeparens
4874    \spacesplit#3%    \spacesplit#3%
4875  }  }
4876    
4877  % #1, #2, #3 are the common arguments (see \defparsebody).  % #1, #2, #3 are the common arguments (see \parsebodycommon above).
4878  % #4, delimited by the space, is the class name.  % #4, delimited by the space, is the class name.
4879  %  %
4880  \def\defmethparsebody#1#2#3#4 {%  \def\defmethparsebody#1#2#3#4 {%
4881    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4882    \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%    \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
4883    \begingroup\obeylines\activeparens    \begingroup\obeylines\activeparens
4884    \spacesplit{#3{#4}}%    % The \empty here prevents misinterpretation of a construct such as
4885      %   @deffn {whatever} {Enharmonic comma}
4886      % See comments at \deftpparsebody, although in our case we don't have
4887      % to remove the \empty afterwards, since it is empty.
4888      \spacesplit{#3{#4}}\empty
4889  }  }
4890    
4891  % Used for @deftypemethod and @deftypeivar.  % Used for @deftypemethod and @deftypeivar.
# Line 4848  width0pt\relax} \fi Line 4895  width0pt\relax} \fi
4895  %  %
4896  \def\deftypemethparsebody#1#2#3#4 #5 {%  \def\deftypemethparsebody#1#2#3#4 #5 {%
4897    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4898    \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%    \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
4899    \begingroup\obeylines\activeparens    \begingroup\obeylines\activeparens
4900    \spacesplit{#3{#4}{#5}}%    \spacesplit{#3{#4}{#5}}%
4901  }  }
# Line 4862  width0pt\relax} \fi Line 4909  width0pt\relax} \fi
4909  %  %
4910  \def\deftypeopparsebody#1#2#3#4#5 #6 {%  \def\deftypeopparsebody#1#2#3#4#5 #6 {%
4911    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4912    \def#2##1 ##2 ##3 {%    \def#2##1 ##2 ##3 {\def#4{##1}%
4913      \def#4{##1}%      \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
     \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%  
4914    \begingroup\obeylines\activeparens    \begingroup\obeylines\activeparens
4915    \spacesplit{#3{#5}{#6}}%    \spacesplit{#3{#5}{#6}}%
4916  }  }
# Line 4873  width0pt\relax} \fi Line 4919  width0pt\relax} \fi
4919  \def\defopparsebody #1#2#3#4#5 {%  \def\defopparsebody #1#2#3#4#5 {%
4920    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4921    \def#2##1 ##2 {\def#4{##1}%    \def#2##1 ##2 {\def#4{##1}%
4922      \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%      \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
4923    \begingroup\obeylines\activeparens    \begingroup\obeylines\activeparens
4924    \spacesplit{#3{#5}}%    \spacesplit{#3{#5}}%
4925  }  }
# Line 4884  width0pt\relax} \fi Line 4930  width0pt\relax} \fi
4930  %  %
4931  \def\defvarparsebody #1#2#3{%  \def\defvarparsebody #1#2#3{%
4932    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4933    \def#2{\begingroup\obeylines\spacesplit#3}%    \def#2{\defxbodycommon \spacesplit#3}%
4934    \catcode61=\active %    \catcode61=\active %
4935    \begingroup\obeylines    \begingroup\obeylines
4936    \spacesplit#3%    \spacesplit#3%
# Line 4894  width0pt\relax} \fi Line 4940  width0pt\relax} \fi
4940  \def\defopvarparsebody #1#2#3#4#5 {%  \def\defopvarparsebody #1#2#3#4#5 {%
4941    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4942    \def#2##1 ##2 {\def#4{##1}%    \def#2##1 ##2 {\def#4{##1}%
4943      \begingroup\obeylines\spacesplit{#3{##2}}}%      \defxbodycommon \spacesplit{#3{##2}}}%
4944    \begingroup\obeylines    \begingroup\obeylines
4945    \spacesplit{#3{#5}}%    \spacesplit{#3{#5}}%
4946  }  }
4947    
4948  \def\defvrparsebody#1#2#3#4 {%  \def\defvrparsebody#1#2#3#4 {%
4949    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4950    \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%    \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
4951    \begingroup\obeylines    \begingroup\obeylines
4952    \spacesplit{#3{#4}}%    \spacesplit{#3{#4}}%
4953  }  }
# Line 4917  width0pt\relax} \fi Line 4963  width0pt\relax} \fi
4963  %  %
4964  \def\deftpparsebody #1#2#3#4 {%  \def\deftpparsebody #1#2#3#4 {%
4965    \parsebodycommon{#1}{#2}{#3}%    \parsebodycommon{#1}{#2}{#3}%
4966    \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%    \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
4967    \begingroup\obeylines    \begingroup\obeylines
4968    \spacesplit{\parsetpheaderline{#3{#4}}}\empty    \spacesplit{\parsetpheaderline{#3{#4}}}\empty
4969  }  }
# Line 4935  width0pt\relax} \fi Line 4981  width0pt\relax} \fi
4981    #1{\removeemptybraces#2\relax}{#3}%    #1{\removeemptybraces#2\relax}{#3}%
4982  }%  }%
4983    
4984  % Split up #2 at the first space token.  % Split up #2 (the rest of the input line) at the first space token.
4985  % call #1 with two arguments:  % call #1 with two arguments:
4986  %  the first is all of #2 before the space token,  %  the first is all of #2 before the space token,
4987  %  the second is all of #2 after that space token.  %  the second is all of #2 after that space token.
4988  % If #2 contains no space token, all of it is passed as the first arg  % If #2 contains no space token, all of it is passed as the first arg
4989  % and the second is passed as empty.  % and the second is passed as empty.
4990  %  %
4991  {\obeylines  {\obeylines %
4992  \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%   \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
4993  \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%   \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
4994  \ifx\relax #3%     \ifx\relax #3%
4995  #1{#2}{}\else #1{#2}{#3#4}\fi}}       #1{#2}{}%
4996       \else %
4997         #1{#2}{#3#4}%
4998       \fi}%
4999    }
5000    
5001  % Define @defun.  % Define @defun.
5002    

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26