#! /bin/sh # # To apply this patch, cd to the top level Octave source directory and # run this file through /bin/sh. It will first remove any files that # have been deleted from the source distribution since the last # release and then update the sources with patch(1). # # Diffs for updating *.ps, *.dvi, *.info*, and *.html files are not # included because they can be recreated from the Texinfo files using # TeX, makeinfo, or texi2html. # # Diffs for updating parse.cc and y.tab.h are not included because # they can be recreated from the file parse.y using bison. # # Diffs for updating lex.cc are not included because it can be # recreated from lex.l using flex. # # John W. Eaton # jwe@bevo.che.wisc.edu # University of Wisconsin-Madison # Department of Chemical Engineering if test -f src/octave.cc ; then true else echo '***********************************************************' 1>&2 echo 'You must run this script in the top-level octave directory!' 1>&2 echo '***********************************************************' 1>&2 exit 1 fi ### ### Special commands should go here. ### echo 'patching existing files' patch -p1 << \PATCH_EOF diff -cNr octave-3.4.1/aclocal.m4 octave-3.4.2/aclocal.m4 *** octave-3.4.1/aclocal.m4 2011-06-15 11:31:20.000000000 -0400 --- octave-3.4.2/aclocal.m4 2011-06-24 10:38:32.000000000 -0400 *************** *** 1425,1431 **** m4_include([m4/chdir-long.m4]) m4_include([m4/check-math-lib.m4]) m4_include([m4/chown.m4]) - m4_include([m4/cloexec.m4]) m4_include([m4/close.m4]) m4_include([m4/codeset.m4]) m4_include([m4/configmake.m4]) --- 1425,1430 ---- diff -cNr octave-3.4.1/build-aux/texinfo.tex octave-3.4.2/build-aux/texinfo.tex *** octave-3.4.1/build-aux/texinfo.tex 1969-12-31 19:00:00.000000000 -0500 --- octave-3.4.2/build-aux/texinfo.tex 2011-06-10 13:59:38.000000000 -0400 *************** *** 0 **** --- 1,9625 ---- + % texinfo.tex -- TeX macros to handle Texinfo files. + % + % Load plain if necessary, i.e., if running under initex. + \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi + % + \def\texinfoversion{2011-05-23.16} + % + % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, + % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + % 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + % + % This texinfo.tex file is free software: you can redistribute it and/or + % modify it under the terms of the GNU General Public License as + % published by the Free Software Foundation, either version 3 of the + % License, or (at your option) any later version. + % + % This texinfo.tex file is distributed in the hope that it will be + % useful, but WITHOUT ANY WARRANTY; without even the implied warranty + % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + % General Public License for more details. + % + % You should have received a copy of the GNU General Public License + % along with this program. If not, see . + % + % As a special exception, when this file is read by TeX when processing + % a Texinfo source document, you may use the result without + % restriction. (This has been our intent since Texinfo was invented.) + % + % Please try the latest version of texinfo.tex before submitting bug + % reports; you can get the latest version from: + % http://www.gnu.org/software/texinfo/ (the Texinfo home page), or + % ftp://tug.org/tex/texinfo.tex + % (and all CTAN mirrors, see http://www.ctan.org). + % The texinfo.tex in any given distribution could well be out + % of date, so if that's what you're using, please check. + % + % Send bug reports to bug-texinfo@gnu.org. Please include including a + % complete document in each bug report with which we can reproduce the + % problem. Patches are, of course, greatly appreciated. + % + % To process a Texinfo manual with TeX, it's most reliable to use the + % texi2dvi shell script that comes with the distribution. For a simple + % manual foo.texi, however, you can get away with this: + % tex foo.texi + % texindex foo.?? + % tex foo.texi + % tex foo.texi + % dvips foo.dvi -o # or whatever; this makes foo.ps. + % The extra TeX runs get the cross-reference information correct. + % Sometimes one run after texindex suffices, and sometimes you need more + % than two; texi2dvi does it as many times as necessary. + % + % It is possible to adapt texinfo.tex for other languages, to some + % extent. You can get the existing language-specific files from the + % full Texinfo distribution. + % + % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + + \message{Loading texinfo [version \texinfoversion]:} + + % If in a .fmt file, print the version number + % and turn on active characters that we couldn't do earlier because + % they might have appeared in the input file name. + \everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + + \chardef\other=12 + + % We never want plain's \outer definition of \+ in Texinfo. + % For @tex, we can use \tabalign. + \let\+ = \relax + + % Save some plain tex macros whose names we will redefine. + \let\ptexb=\b + \let\ptexbullet=\bullet + \let\ptexc=\c + \let\ptexcomma=\, + \let\ptexdot=\. + \let\ptexdots=\dots + \let\ptexend=\end + \let\ptexequiv=\equiv + \let\ptexexclam=\! + \let\ptexfootnote=\footnote + \let\ptexgtr=> + \let\ptexhat=^ + \let\ptexi=\i + \let\ptexindent=\indent + \let\ptexinsert=\insert + \let\ptexlbrace=\{ + \let\ptexless=< + \let\ptexnewwrite\newwrite + \let\ptexnoindent=\noindent + \let\ptexplus=+ + \let\ptexraggedright=\raggedright + \let\ptexrbrace=\} + \let\ptexslash=\/ + \let\ptexstar=\* + \let\ptext=\t + \let\ptextop=\top + {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + + % If this character appears in an error message or help string, it + % starts a new line in the output. + \newlinechar = `^^J + + % Use TeX 3.0's \inputlineno to get the line number, for better error + % messages, but if we're using an old version of TeX, don't do anything. + % + \ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. + \else + \def\linenumber{l.\the\inputlineno:\space} + \fi + + % Set up fixed words for English if not already set. + \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi + \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi + \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi + \ifx\putwordin\undefined \gdef\putwordin{in}\fi + \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi + \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi + \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi + \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi + \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi + \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi + \ifx\putwordof\undefined \gdef\putwordof{of}\fi + \ifx\putwordon\undefined \gdef\putwordon{on}\fi + \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi + \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi + \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi + \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi + \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi + \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi + \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi + % + \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi + \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi + \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi + \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi + \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi + \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi + \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi + \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi + \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi + \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi + \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi + \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi + % + \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi + \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi + \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi + \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi + \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + + % Since the category of space is not known, we have to be careful. + \chardef\spacecat = 10 + \def\spaceisspace{\catcode`\ =\spacecat} + + % sometimes characters are active, so we need control sequences. + \chardef\ampChar = `\& + \chardef\colonChar = `\: + \chardef\commaChar = `\, + \chardef\dashChar = `\- + \chardef\dotChar = `\. + \chardef\exclamChar= `\! + \chardef\hashChar = `\# + \chardef\lquoteChar= `\` + \chardef\questChar = `\? + \chardef\rquoteChar= `\' + \chardef\semiChar = `\; + \chardef\slashChar = `\/ + \chardef\underChar = `\_ + + % Ignore a token. + % + \def\gobble#1{} + + % The following is used inside several \edef's. + \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + + % Hyphenation fixes. + \hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around + } + + % Margin to add to right of even pages, to left of odd pages. + \newdimen\bindingoffset + \newdimen\normaloffset + \newdimen\pagewidth \newdimen\pageheight + + % For a final copy, take out the rectangles + % that mark overfull boxes (in case you have decided + % that the text looks ok even though it passes the margin). + % + \def\finalout{\overfullrule=0pt } + + % Sometimes it is convenient to have everything in the transcript file + % and nothing on the terminal. We don't just call \tracingall here, + % since that produces some useless output on the terminal. We also make + % some effort to order the tracing commands to reduce output in the log + % file; cf. trace.sty in LaTeX. + % + \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% + \def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 + }% + + % add check for \lastpenalty to plain's definitions. If the last thing + % we did was a \nobreak, we don't want to insert more space. + % + \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} + \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} + \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + + % Do @cropmarks to get crop marks. + % + \newif\ifcropmarks + \let\cropmarks = \cropmarkstrue + % + % Dimensions to add cropmarks at corners. + % Added by P. A. MacKay, 12 Nov. 1986 + % + \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines + \newdimen\cornerlong \cornerlong=1pc + \newdimen\cornerthick \cornerthick=.3pt + \newdimen\topandbottommargin \topandbottommargin=.75in + + % Output a mark which sets \thischapter, \thissection and \thiscolor. + % We dump everything together because we only have one kind of mark. + % This works because we only use \botmark / \topmark, not \firstmark. + % + % A mark contains a subexpression of the \ifcase ... \fi construct. + % \get*marks macros below extract the needed part using \ifcase. + % + % Another complication is to let the user choose whether \thischapter + % (\thissection) refers to the chapter (section) in effect at the top + % of a page, or that at the bottom of a page. The solution is + % described on page 260 of The TeXbook. It involves outputting two + % marks for the sectioning macros, one before the section break, and + % one after. I won't pretend I can describe this better than DEK... + \def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 + \noexpand\or \the\toks4 \the\toks6 + \noexpand\else \the\toks8 + }% + } + % \topmark doesn't work for the very first chapter (after the title + % page or the contents), so we use \firstmark there -- this gets us + % the mark with the chapter defs, unless the user sneaks in, e.g., + % @setcolor (or @url, or @link, etc.) between @contents and the very + % first @chapter. + \def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi + } + \def\getbottomheadingmarks{\ifcase1\botmark\fi} + \def\getcolormarks{\ifcase2\topmark\fi} + + % Avoid "undefined control sequence" errors. + \def\lastchapterdefs{} + \def\lastsectiondefs{} + \def\prevchapterdefs{} + \def\prevsectiondefs{} + \def\lastcolordefs{} + + % Main output routine. + \chardef\PAGE = 255 + \output = {\onepageout{\pagecontents\PAGE}} + + \newbox\headlinebox + \newbox\footlinebox + + % \onepageout takes a vbox as an argument. Note that \pagecontents + % does insertions, but you have to call it yourself. + \def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\tt \backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi + } + + \newinsert\margin \dimen\margin=\maxdimen + + \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} + {\catcode`\@ =11 + \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi + % marginal hacks, juha@viisa.uucp (Juha Takala) + \ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi + \dimen@=\dp#1\relax \unvbox#1\relax + \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + } + + % Here are the rules for the cropmarks. Note that they are + % offset so that the space between them is truly \outerhsize or \outervsize + % (P. A. MacKay, 12 November, 1986) + % + \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} + \def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} + \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} + \def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + + % Parse an argument, then pass it to #1. The argument is the rest of + % the input line (except we remove a trailing comment). #1 should be a + % macro which expects an ordinary undelimited TeX argument. + % + \def\parsearg{\parseargusing{}} + \def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. + } + + {\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% + } + + % First remove any @comment, then any @c comment. + \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} + \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + + % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. + % + % \argremovec might leave us with trailing space, e.g., + % @end itemize @c foo + % This space token undergoes the same procedure and is eventually removed + % by \finishparsearg. + % + \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} + \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} + \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm + } + + % If a _delimited_ argument is enclosed in braces, they get stripped; so + % to get _exactly_ the rest of the line, we had to prevent such situation. + % We prepended an \empty token at the very beginning and we expand it now, + % just before passing the control to \argtorun. + % (Similarly, we have to think about #3 of \argcheckspacesY above: it is + % either the null string, or it ends with \^^M---thus there is no danger + % that a pair of braces would be stripped. + % + % But first, we have to remove the trailing space token. + % + \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + + % \parseargdef\foo{...} + % is roughly equivalent to + % \def\foo{\parsearg\Xfoo} + % \def\Xfoo#1{...} + % + % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my + % favourite TeX trick. --kasal, 16nov03 + + \def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% + } + \def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% + } + + % Several utility definitions with active space: + { + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} + } + + + \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + + % Define the framework for environments in texinfo.tex. It's used like this: + % + % \envdef\foo{...} + % \def\Efoo{...} + % + % It's the responsibility of \envdef to insert \begingroup before the + % actual body; @end closes the group after calling \Efoo. \envdef also + % defines \thisenv, so the current environment is known; @end checks + % whether the environment name matches. The \checkenv macro can also be + % used to check whether the current environment is the one expected. + % + % Non-false conditionals (@iftex, @ifset) don't fit into this, so they + % are not treated as environments; they don't open a group. (The + % implementation of @end takes care not to call \endgroup in this + % special case.) + + + % At run-time, environments start with this: + \def\startenvironment#1{\begingroup\def\thisenv{#1}} + % initialize + \let\thisenv\empty + + % ... but they get defined via ``\envdef\foo{...}'': + \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} + \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + + % Check whether we're in the right environment: + \def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi + } + + % Environment mismatch, #1 expected: + \def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% + } + \def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi + } + + % @end foo executes the definition of \Efoo. + % But first, it executes a specialized version of \checkenv + % + \parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi + } + + \newhelp\EMsimple{Press RETURN to continue.} + + + % Be sure we're in horizontal mode when doing a tie, since we make space + % equivalent to this in @example-like environments. Otherwise, a space + % at the beginning of a line will start with \penalty -- and + % since \penalty is valid in vertical mode, we'd end up putting the + % penalty on the vertical list instead of in the new paragraph. + {\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } + } + + % @: forces normal size whitespace following. + \def\:{\spacefactor=1000 } + + % @* forces a line break. + \def\*{\hfil\break\hbox{}\ignorespaces} + + % @/ allows a line break. + \let\/=\allowbreak + + % @. is an end-of-sentence period. + \def\.{.\spacefactor=\endofsentencespacefactor\space} + + % @! is an end-of-sentence bang. + \def\!{!\spacefactor=\endofsentencespacefactor\space} + + % @? is an end-of-sentence query. + \def\?{?\spacefactor=\endofsentencespacefactor\space} + + % @frenchspacing on|off says whether to put extra space after punctuation. + % + \def\onword{on} + \def\offword{off} + % + \parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi + } + + % @w prevents a word break. Without the \leavevmode, @w at the + % beginning of a paragraph, when TeX is still in vertical mode, would + % produce a whole line of output instead of starting the paragraph. + \def\w#1{\leavevmode\hbox{#1}} + + % @group ... @end group forces ... to be all on one page, by enclosing + % it in a TeX vbox. We use \vtop instead of \vbox to construct the box + % to keep its height that of a normal line. According to the rules for + % \topskip (p.114 of the TeXbook), the glue inserted is + % max (\topskip - \ht (first item), 0). If that height is large, + % therefore, no glue is inserted, and the space between the headline and + % the text is small, which looks bad. + % + % Another complication is that the group might be very large. This can + % cause the glue on the previous page to be unduly stretched, because it + % does not have much material. In this case, it's better to add an + % explicit \vfill so that the extra space is at the bottom. The + % threshold for doing this is if the group is more than \vfilllimit + % percent of a page (\vfilllimit can be changed inside of @tex). + % + \newbox\groupbox + \def\vfilllimit{0.7} + % + \envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment + } + % + % The \vtop produces a box with normal height and large depth; thus, TeX puts + % \baselineskip glue before it, and (when the next line of text is done) + % \lineskip glue after it. Thus, space below is not quite equal to space + % above. But it's pretty close. + \def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts + } + % + % TeX puts in an \escapechar (i.e., `@') at the beginning of the help + % message, so this ends up printing `@group can only ...'. + % + \newhelp\groupinvalidhelp{% + group can only be used in environments such as @example,^^J% + where each line of input produces a line of output.} + + % @need space-in-mils + % forces a page break if there is not space-in-mils remaining. + + \newdimen\mil \mil=0.001in + + \parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi + } + + % @br forces paragraph break (and is undocumented). + + \let\br = \par + + % @page forces the start of a new page. + % + \def\page{\par\vfill\supereject} + + % @exdent text.... + % outputs text on separate line in roman font, starting at standard page margin + + % This records the amount of indent in the innermost environment. + % That's how much \exdent should take out. + \newskip\exdentamount + + % This defn is used inside fill environments such as @defun. + \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + + % This defn is used inside nofill environments such as @example. + \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + + % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current + % paragraph. For more general purposes, use the \margin insertion + % class. WHICH is `l' or `r'. Not documented, written for gawk manual. + % + \newskip\inmarginspacing \inmarginspacing=1cm + \def\strutdepth{\dp\strutbox} + % + \def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% + }} + \def\inleftmargin{\doinmargin l} + \def\inrightmargin{\doinmargin r} + % + % @inmargin{TEXT [, RIGHT-TEXT]} + % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; + % else use TEXT for both). + % + \def\inmargin#1{\parseinmargin #1,,\finish} + \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp + } + + % @| inserts a changebar to the left of the current line. It should + % surround any changed text. This approach does *not* work if the + % change spans more than two lines of output. To handle that, we would + % have adopt a much more difficult approach (putting marks into the main + % vertical list for the beginning and end of each change). This command + % is not documented, not supported, and doesn't work. + % + \def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% + } + + % @include FILE -- \input text of FILE. + % + \def\include{\parseargusing\filenamecatcodes\includezzz} + \def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack + } + \def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other + } + + \def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm + } + \def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm + } + \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% + } + + \def\popthisfilestack{\errthisfilestackempty} + \def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} + + \def\thisfile{} + + % @center line + % outputs that line, centered. + % + \parseargdef\center{% + \ifhmode + \let\next\centerH + \else + \let\next\centerV + \fi + \next{\hfil \ignorespaces#1\unskip \hfil}% + } + \def\centerH#1{% + {% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break + }% + } + \def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} + + % @sp n outputs n lines of vertical space + + \parseargdef\sp{\vskip #1\baselineskip} + + % @comment ...line which is ignored... + % @c is the same as @comment + % @ignore ... @end ignore is another way to write a comment + + \def\comment{\begingroup \catcode`\^^M=\other% + \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% + \commentxxx} + {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} + + \let\c=\comment + + % @paragraphindent NCHARS + % We'll use ems for NCHARS, close enough. + % NCHARS can also be the word `asis' or `none'. + % We cannot feasibly implement @paragraphindent asis, though. + % + \def\asisword{asis} % no translation, these are keywords + \def\noneword{none} + % + \parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent + } + + % @exampleindent NCHARS + % We'll use ems for NCHARS like @paragraphindent. + % It seems @exampleindent asis isn't necessary, but + % I preserve it to make it similar to @paragraphindent. + \parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi + } + + % @firstparagraphindent WORD + % If WORD is `none', then suppress indentation of the first paragraph + % after a section heading. If WORD is `insert', then do indent at such + % paragraphs. + % + % The paragraph indentation is suppressed or not by calling + % \suppressfirstparagraphindent, which the sectioning commands do. + % We switch the definition of this back and forth according to WORD. + % By default, we suppress indentation. + % + \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} + \def\insertword{insert} + % + \parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi + } + + % Here is how we actually suppress indentation. Redefine \everypar to + % \kern backwards by \parindent, and then reset itself to empty. + % + % We also make \indent itself not actually do anything until the next + % paragraph. + % + \gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% + } + + \gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% + } + + + % @refill is a no-op. + \let\refill=\relax + + % If working on a large document in chapters, it is convenient to + % be able to disable indexing, cross-referencing, and contents, for test runs. + % This is done with @novalidate (before @setfilename). + % + \newif\iflinks \linkstrue % by default we want the aux files. + \let\novalidate = \linksfalse + + % @setfilename is done at the beginning of every texinfo file. + % So open here the files we need to have open while reading the input. + % This makes it possible to make a .fmt file for texinfo. + \def\setfilename{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \comment % Ignore the actual filename. + } + + % Called from \setfilename. + % + \def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% + } + + % @bye. + \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + + \message{pdf,} + % adobe `portable' document format + \newcount\tempnum + \newcount\lnkcount + \newtoks\filename + \newcount\filenamelength + \newcount\pgn + \newtoks\toksA + \newtoks\toksB + \newtoks\toksC + \newtoks\toksD + \newbox\boxA + \newcount\countA + \newif\ifpdf + \newif\ifpdfmakepagedest + + % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 + % can be set). So we test for \relax and 0 as well as being undefined. + \ifx\pdfoutput\thisisundefined + \else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi + \fi + + % PDF uses PostScript string constants for the names of xref targets, + % for display in the outlines, and in other places. Thus, we have to + % double any backslashes. Otherwise, a name like "\node" will be + % interpreted as a newline (\n), followed by o, d, e. Not good. + % http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html + % (and related messages, the final outcome is that it is up to the TeX + % user to double the backslashes and otherwise make the string valid, so + % that's what we do). + + % double active backslashes. + % + {\catcode`\@=0 \catcode`\\=\active + @gdef@activebackslashdouble{% + @catcode`@\=@active + @let\=@doublebackslash} + } + + % To handle parens, we must adopt a different approach, since parens are + % not active characters. hyperref.dtx (which has the same problem as + % us) handles it with this amazing macro to replace tokens, with minor + % changes for Texinfo. It is included here under the GPL by permission + % from the author, Heiko Oberdiek. + % + % #1 is the tokens to replace. + % #2 is the replacement. + % #3 is the control sequence with the string. + % + \def\HyPsdSubst#1#2#3{% + \def\HyPsdReplace##1#1##2\END{% + ##1% + \ifx\\##2\\% + \else + #2% + \HyReturnAfterFi{% + \HyPsdReplace##2\END + }% + \fi + }% + \xdef#3{\expandafter\HyPsdReplace#3#1\END}% + } + \long\def\HyReturnAfterFi#1\fi{\fi#1} + + % #1 is a control sequence in which to do the replacements. + \def\backslashparens#1{% + \xdef#1{#1}% redefine it as its expansion; the definition is simply + % \lastnode when called from \setref -> \pdfmkdest. + \HyPsdSubst{(}{\realbackslash(}{#1}% + \HyPsdSubst{)}{\realbackslash)}{#1}% + } + + \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images + with PDF output, and none of those formats could be found. (.eps cannot + be supported due to the design of the PDF format; use regular TeX (DVI + output) for that.)} + + \ifpdf + % + % Color manipulation macros based on pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .png, .jpg, .pdf (among + % others). Let's try in that order. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \imagewidth \fi + \ifdim \wd2 >0pt height \imageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \turnoffactive + \activebackslashdouble + \makevalueexpandable + \def\pdfdestname{#1}% + \backslashparens\pdfdestname + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + }} + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use a color that is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. + \def\urlcolor{\rgbDarkRed} + \def\linkcolor{\rgbDarkRed} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \def\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + % Doubled backslashes in the name. + {\activebackslashdouble \xdef\pdfoutlinedest{#3}% + \backslashparens\pdfoutlinedest}% + \fi + % + % Also double the backslashes in the display string. + {\activebackslashdouble \xdef\pdfoutlinetext{#1}% + \backslashparens\pdfoutlinetext}% + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % xx to do this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Right + % now, I guess we'll just let the pdf reader have its way. + \indexnofonts + \setupdatafile + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \ifx\p\space\else\addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \fi + \nextsp} + \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} + \else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax + \fi % \ifx\pdfoutput + + + \message{fonts,} + + % Change the current font style to #1, remembering it in \curfontstyle. + % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in + % italics, not bold italics. + % + \def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font + } + + % Select #1 fonts with the current style. + % + \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + + \def\rm{\fam=0 \setfontstyle{rm}} + \def\it{\fam=\itfam \setfontstyle{it}} + \def\sl{\fam=\slfam \setfontstyle{sl}} + \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} + \def\tt{\fam=\ttfam \setfontstyle{tt}} + + % Unfortunately, we have to override this for titles and the like, since + % in those cases "rm" is bold. Sigh. + \def\rmisbold{\rm\def\curfontstyle{bf}} + + % Texinfo sort of supports the sans serif font style, which plain TeX does not. + % So we set up a \sf. + \newfam\sffam + \def\sf{\fam=\sffam \setfontstyle{sf}} + \let\li = \sf % Sometimes we call it \li, not \sf. + + % We don't need math for this font style. + \def\ttsl{\setfontstyle{ttsl}} + + + % Default leading. + \newdimen\textleading \textleading = 13.2pt + + % Set the baselineskip to #1, and the lineskip and strut size + % correspondingly. There is no deep meaning behind these magic numbers + % used as factors; they just match (closely enough) what Knuth defined. + % + \def\lineskipfactor{.08333} + \def\strutheightpercent{.70833} + \def\strutdepthpercent {.29167} + % + % can get a sort of poor man's double spacing by redefining this. + \def\baselinefactor{1} + % + \def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% + } + + % PDF CMaps. See also LaTeX's t1.cmap. + % + % do nothing with this by default. + \expandafter\let\csname cmapOT1\endcsname\gobble + \expandafter\let\csname cmapOT1IT\endcsname\gobble + \expandafter\let\csname cmapOT1TT\endcsname\gobble + + % if we are producing pdf, and we have \pdffontattr, then define cmaps. + % (\pdffontattr was introduced many years ago, but people still run + % older pdftex's; it's easy to conditionalize, so we do.) + \ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap + %%DocumentNeededResources: ProcSet (CIDInit) + %%IncludeResource: ProcSet (CIDInit) + %%BeginResource: CMap (TeX-OT1-0) + %%Title: (TeX-OT1-0 TeX OT1 0) + %%Version: 1.000 + %%EndComments + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo + << /Registry (TeX) + /Ordering (OT1) + /Supplement 0 + >> def + /CMapName /TeX-OT1-0 def + /CMapType 2 def + 1 begincodespacerange + <00> <7F> + endcodespacerange + 8 beginbfrange + <00> <01> <0393> + <09> <0A> <03A8> + <23> <26> <0023> + <28> <3B> <0028> + <3F> <5B> <003F> + <5D> <5E> <005D> + <61> <7A> <0061> + <7B> <7C> <2013> + endbfrange + 40 beginbfchar + <02> <0398> + <03> <039B> + <04> <039E> + <05> <03A0> + <06> <03A3> + <07> <03D2> + <08> <03A6> + <0B> <00660066> + <0C> <00660069> + <0D> <0066006C> + <0E> <006600660069> + <0F> <00660066006C> + <10> <0131> + <11> <0237> + <12> <0060> + <13> <00B4> + <14> <02C7> + <15> <02D8> + <16> <00AF> + <17> <02DA> + <18> <00B8> + <19> <00DF> + <1A> <00E6> + <1B> <0153> + <1C> <00F8> + <1D> <00C6> + <1E> <0152> + <1F> <00D8> + <21> <0021> + <22> <201D> + <27> <2019> + <3C> <00A1> + <3D> <003D> + <3E> <00BF> + <5C> <201C> + <5F> <02D9> + <60> <2018> + <7D> <02DD> + <7E> <007E> + <7F> <00A8> + endbfchar + endcmap + CMapName currentdict /CMap defineresource pop + end + end + %%EndResource + %%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% + % + % \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap + %%DocumentNeededResources: ProcSet (CIDInit) + %%IncludeResource: ProcSet (CIDInit) + %%BeginResource: CMap (TeX-OT1IT-0) + %%Title: (TeX-OT1IT-0 TeX OT1IT 0) + %%Version: 1.000 + %%EndComments + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo + << /Registry (TeX) + /Ordering (OT1IT) + /Supplement 0 + >> def + /CMapName /TeX-OT1IT-0 def + /CMapType 2 def + 1 begincodespacerange + <00> <7F> + endcodespacerange + 8 beginbfrange + <00> <01> <0393> + <09> <0A> <03A8> + <25> <26> <0025> + <28> <3B> <0028> + <3F> <5B> <003F> + <5D> <5E> <005D> + <61> <7A> <0061> + <7B> <7C> <2013> + endbfrange + 42 beginbfchar + <02> <0398> + <03> <039B> + <04> <039E> + <05> <03A0> + <06> <03A3> + <07> <03D2> + <08> <03A6> + <0B> <00660066> + <0C> <00660069> + <0D> <0066006C> + <0E> <006600660069> + <0F> <00660066006C> + <10> <0131> + <11> <0237> + <12> <0060> + <13> <00B4> + <14> <02C7> + <15> <02D8> + <16> <00AF> + <17> <02DA> + <18> <00B8> + <19> <00DF> + <1A> <00E6> + <1B> <0153> + <1C> <00F8> + <1D> <00C6> + <1E> <0152> + <1F> <00D8> + <21> <0021> + <22> <201D> + <23> <0023> + <24> <00A3> + <27> <2019> + <3C> <00A1> + <3D> <003D> + <3E> <00BF> + <5C> <201C> + <5F> <02D9> + <60> <2018> + <7D> <02DD> + <7E> <007E> + <7F> <00A8> + endbfchar + endcmap + CMapName currentdict /CMap defineresource pop + end + end + %%EndResource + %%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% + % + % \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap + %%DocumentNeededResources: ProcSet (CIDInit) + %%IncludeResource: ProcSet (CIDInit) + %%BeginResource: CMap (TeX-OT1TT-0) + %%Title: (TeX-OT1TT-0 TeX OT1TT 0) + %%Version: 1.000 + %%EndComments + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo + << /Registry (TeX) + /Ordering (OT1TT) + /Supplement 0 + >> def + /CMapName /TeX-OT1TT-0 def + /CMapType 2 def + 1 begincodespacerange + <00> <7F> + endcodespacerange + 5 beginbfrange + <00> <01> <0393> + <09> <0A> <03A8> + <21> <26> <0021> + <28> <5F> <0028> + <61> <7E> <0061> + endbfrange + 32 beginbfchar + <02> <0398> + <03> <039B> + <04> <039E> + <05> <03A0> + <06> <03A3> + <07> <03D2> + <08> <03A6> + <0B> <2191> + <0C> <2193> + <0D> <0027> + <0E> <00A1> + <0F> <00BF> + <10> <0131> + <11> <0237> + <12> <0060> + <13> <00B4> + <14> <02C7> + <15> <02D8> + <16> <00AF> + <17> <02DA> + <18> <00B8> + <19> <00DF> + <1A> <00E6> + <1B> <0153> + <1C> <00F8> + <1D> <00C6> + <1E> <0152> + <1F> <00D8> + <20> <2423> + <27> <2019> + <60> <2018> + <7F> <00A8> + endbfchar + endcmap + CMapName currentdict /CMap defineresource pop + end + end + %%EndResource + %%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% + \fi\fi + + + % Set the font macro #1 to the font named #2, adding on the + % specified font prefix (normally `cm'). + % #3 is the font's design size, #4 is a scale factor, #5 is the CMap + % encoding (currently only OT1, OT1IT and OT1TT are allowed, pass + % empty to omit). + \def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% + } + % This is what gets called when #5 of \setfont is empty. + \let\cmap\gobble + % emacs-page end of cmaps + + % Use cm as the default font prefix. + % To specify the font prefix, you must define \fontprefix + % before you read in texinfo.tex. + \ifx\fontprefix\thisisundefined + \def\fontprefix{cm} + \fi + % Support font families that don't use the same naming scheme as CM. + \def\rmshape{r} + \def\rmbshape{bx} %where the normal face is bold + \def\bfshape{b} + \def\bxshape{bx} + \def\ttshape{tt} + \def\ttbshape{tt} + \def\ttslshape{sltt} + \def\itshape{ti} + \def\itbshape{bxti} + \def\slshape{sl} + \def\slbshape{bxsl} + \def\sfshape{ss} + \def\sfbshape{ss} + \def\scshape{csc} + \def\scbshape{csc} + + % Definitions for a main text size of 11pt. This is the default in + % Texinfo. + % + \def\definetextfontsizexi{% + % Text fonts (11.2pt, magstep1). + \def\textnominalsize{11pt} + \edef\mainmagstep{\magstephalf} + \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} + \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} + \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} + \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} + \setfont\textsl\slshape{10}{\mainmagstep}{OT1} + \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} + \setfont\textsc\scshape{10}{\mainmagstep}{OT1} + \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} + \font\texti=cmmi10 scaled \mainmagstep + \font\textsy=cmsy10 scaled \mainmagstep + \def\textecsize{1095} + + % A few fonts for @defun names and args. + \setfont\defbf\bfshape{10}{\magstep1}{OT1} + \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} + \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} + \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + + % Fonts for indices, footnotes, small examples (9pt). + \def\smallnominalsize{9pt} + \setfont\smallrm\rmshape{9}{1000}{OT1} + \setfont\smalltt\ttshape{9}{1000}{OT1TT} + \setfont\smallbf\bfshape{10}{900}{OT1} + \setfont\smallit\itshape{9}{1000}{OT1IT} + \setfont\smallsl\slshape{9}{1000}{OT1} + \setfont\smallsf\sfshape{9}{1000}{OT1} + \setfont\smallsc\scshape{10}{900}{OT1} + \setfont\smallttsl\ttslshape{10}{900}{OT1TT} + \font\smalli=cmmi9 + \font\smallsy=cmsy9 + \def\smallecsize{0900} + + % Fonts for small examples (8pt). + \def\smallernominalsize{8pt} + \setfont\smallerrm\rmshape{8}{1000}{OT1} + \setfont\smallertt\ttshape{8}{1000}{OT1TT} + \setfont\smallerbf\bfshape{10}{800}{OT1} + \setfont\smallerit\itshape{8}{1000}{OT1IT} + \setfont\smallersl\slshape{8}{1000}{OT1} + \setfont\smallersf\sfshape{8}{1000}{OT1} + \setfont\smallersc\scshape{10}{800}{OT1} + \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} + \font\smalleri=cmmi8 + \font\smallersy=cmsy8 + \def\smallerecsize{0800} + + % Fonts for title page (20.4pt): + \def\titlenominalsize{20pt} + \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} + \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} + \setfont\titlesl\slbshape{10}{\magstep4}{OT1} + \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} + \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} + \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} + \let\titlebf=\titlerm + \setfont\titlesc\scbshape{10}{\magstep4}{OT1} + \font\titlei=cmmi12 scaled \magstep3 + \font\titlesy=cmsy10 scaled \magstep4 + \def\titleecsize{2074} + + % Chapter (and unnumbered) fonts (17.28pt). + \def\chapnominalsize{17pt} + \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} + \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} + \setfont\chapsl\slbshape{10}{\magstep3}{OT1} + \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} + \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} + \setfont\chapsf\sfbshape{17}{1000}{OT1} + \let\chapbf=\chaprm + \setfont\chapsc\scbshape{10}{\magstep3}{OT1} + \font\chapi=cmmi12 scaled \magstep2 + \font\chapsy=cmsy10 scaled \magstep3 + \def\chapecsize{1728} + + % Section fonts (14.4pt). + \def\secnominalsize{14pt} + \setfont\secrm\rmbshape{12}{\magstep1}{OT1} + \setfont\secit\itbshape{10}{\magstep2}{OT1IT} + \setfont\secsl\slbshape{10}{\magstep2}{OT1} + \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} + \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} + \setfont\secsf\sfbshape{12}{\magstep1}{OT1} + \let\secbf\secrm + \setfont\secsc\scbshape{10}{\magstep2}{OT1} + \font\seci=cmmi12 scaled \magstep1 + \font\secsy=cmsy10 scaled \magstep2 + \def\sececsize{1440} + + % Subsection fonts (13.15pt). + \def\ssecnominalsize{13pt} + \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} + \setfont\ssecit\itbshape{10}{1315}{OT1IT} + \setfont\ssecsl\slbshape{10}{1315}{OT1} + \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} + \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} + \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} + \let\ssecbf\ssecrm + \setfont\ssecsc\scbshape{10}{1315}{OT1} + \font\sseci=cmmi12 scaled \magstephalf + \font\ssecsy=cmsy10 scaled 1315 + \def\ssececsize{1200} + + % Reduced fonts for @acro in text (10pt). + \def\reducednominalsize{10pt} + \setfont\reducedrm\rmshape{10}{1000}{OT1} + \setfont\reducedtt\ttshape{10}{1000}{OT1TT} + \setfont\reducedbf\bfshape{10}{1000}{OT1} + \setfont\reducedit\itshape{10}{1000}{OT1IT} + \setfont\reducedsl\slshape{10}{1000}{OT1} + \setfont\reducedsf\sfshape{10}{1000}{OT1} + \setfont\reducedsc\scshape{10}{1000}{OT1} + \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} + \font\reducedi=cmmi10 + \font\reducedsy=cmsy10 + \def\reducedecsize{1000} + + \textleading = 13.2pt % line spacing for 11pt CM + \textfonts % reset the current fonts + \rm + } % end of 11pt text font size definitions + + + % Definitions to make the main text be 10pt Computer Modern, with + % section, chapter, etc., sizes following suit. This is for the GNU + % Press printing of the Emacs 22 manual. Maybe other manuals in the + % future. Used with @smallbook, which sets the leading to 12pt. + % + \def\definetextfontsizex{% + % Text fonts (10pt). + \def\textnominalsize{10pt} + \edef\mainmagstep{1000} + \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} + \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} + \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} + \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} + \setfont\textsl\slshape{10}{\mainmagstep}{OT1} + \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} + \setfont\textsc\scshape{10}{\mainmagstep}{OT1} + \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} + \font\texti=cmmi10 scaled \mainmagstep + \font\textsy=cmsy10 scaled \mainmagstep + \def\textecsize{1000} + + % A few fonts for @defun names and args. + \setfont\defbf\bfshape{10}{\magstephalf}{OT1} + \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} + \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} + \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + + % Fonts for indices, footnotes, small examples (9pt). + \def\smallnominalsize{9pt} + \setfont\smallrm\rmshape{9}{1000}{OT1} + \setfont\smalltt\ttshape{9}{1000}{OT1TT} + \setfont\smallbf\bfshape{10}{900}{OT1} + \setfont\smallit\itshape{9}{1000}{OT1IT} + \setfont\smallsl\slshape{9}{1000}{OT1} + \setfont\smallsf\sfshape{9}{1000}{OT1} + \setfont\smallsc\scshape{10}{900}{OT1} + \setfont\smallttsl\ttslshape{10}{900}{OT1TT} + \font\smalli=cmmi9 + \font\smallsy=cmsy9 + \def\smallecsize{0900} + + % Fonts for small examples (8pt). + \def\smallernominalsize{8pt} + \setfont\smallerrm\rmshape{8}{1000}{OT1} + \setfont\smallertt\ttshape{8}{1000}{OT1TT} + \setfont\smallerbf\bfshape{10}{800}{OT1} + \setfont\smallerit\itshape{8}{1000}{OT1IT} + \setfont\smallersl\slshape{8}{1000}{OT1} + \setfont\smallersf\sfshape{8}{1000}{OT1} + \setfont\smallersc\scshape{10}{800}{OT1} + \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} + \font\smalleri=cmmi8 + \font\smallersy=cmsy8 + \def\smallerecsize{0800} + + % Fonts for title page (20.4pt): + \def\titlenominalsize{20pt} + \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} + \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} + \setfont\titlesl\slbshape{10}{\magstep4}{OT1} + \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} + \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} + \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} + \let\titlebf=\titlerm + \setfont\titlesc\scbshape{10}{\magstep4}{OT1} + \font\titlei=cmmi12 scaled \magstep3 + \font\titlesy=cmsy10 scaled \magstep4 + \def\titleecsize{2074} + + % Chapter fonts (14.4pt). + \def\chapnominalsize{14pt} + \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} + \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} + \setfont\chapsl\slbshape{10}{\magstep2}{OT1} + \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} + \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} + \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} + \let\chapbf\chaprm + \setfont\chapsc\scbshape{10}{\magstep2}{OT1} + \font\chapi=cmmi12 scaled \magstep1 + \font\chapsy=cmsy10 scaled \magstep2 + \def\chapecsize{1440} + + % Section fonts (12pt). + \def\secnominalsize{12pt} + \setfont\secrm\rmbshape{12}{1000}{OT1} + \setfont\secit\itbshape{10}{\magstep1}{OT1IT} + \setfont\secsl\slbshape{10}{\magstep1}{OT1} + \setfont\sectt\ttbshape{12}{1000}{OT1TT} + \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} + \setfont\secsf\sfbshape{12}{1000}{OT1} + \let\secbf\secrm + \setfont\secsc\scbshape{10}{\magstep1}{OT1} + \font\seci=cmmi12 + \font\secsy=cmsy10 scaled \magstep1 + \def\sececsize{1200} + + % Subsection fonts (10pt). + \def\ssecnominalsize{10pt} + \setfont\ssecrm\rmbshape{10}{1000}{OT1} + \setfont\ssecit\itbshape{10}{1000}{OT1IT} + \setfont\ssecsl\slbshape{10}{1000}{OT1} + \setfont\ssectt\ttbshape{10}{1000}{OT1TT} + \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} + \setfont\ssecsf\sfbshape{10}{1000}{OT1} + \let\ssecbf\ssecrm + \setfont\ssecsc\scbshape{10}{1000}{OT1} + \font\sseci=cmmi10 + \font\ssecsy=cmsy10 + \def\ssececsize{1000} + + % Reduced fonts for @acro in text (9pt). + \def\reducednominalsize{9pt} + \setfont\reducedrm\rmshape{9}{1000}{OT1} + \setfont\reducedtt\ttshape{9}{1000}{OT1TT} + \setfont\reducedbf\bfshape{10}{900}{OT1} + \setfont\reducedit\itshape{9}{1000}{OT1IT} + \setfont\reducedsl\slshape{9}{1000}{OT1} + \setfont\reducedsf\sfshape{9}{1000}{OT1} + \setfont\reducedsc\scshape{10}{900}{OT1} + \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} + \font\reducedi=cmmi9 + \font\reducedsy=cmsy9 + \def\reducedecsize{0900} + + \divide\parskip by 2 % reduce space between paragraphs + \textleading = 12pt % line spacing for 10pt CM + \textfonts % reset the current fonts + \rm + } % end of 10pt text font size definitions + + + % We provide the user-level command + % @fonttextsize 10 + % (or 11) to redefine the text font size. pt is assumed. + % + \def\xiword{11} + \def\xword{10} + \def\xwordpt{10pt} + % + \parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup + } + + + % In order for the font changes to affect most math symbols and letters, + % we have to define the \textfont of the standard families. Since + % texinfo doesn't allow for producing subscripts and superscripts except + % in the main text, we don't bother to reset \scriptfont and + % \scriptscriptfont (which would also require loading a lot more fonts). + % + \def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf + } + + % The font-changing commands redefine the meanings of \tenSTYLE, instead + % of just \STYLE. We do this because \STYLE needs to also set the + % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire + % \tenSTYLE to set the current font. + % + % Each font-changing command also sets the names \lsize (one size lower) + % and \lllsize (three sizes lower). These relative commands are used in + % the LaTeX logo and acronyms. + % + % This all needs generalizing, badly. + % + \def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} + \def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{27pt}} + \def\titlefont#1{{\titlefonts\rmisbold #1}} + \def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} + \def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{16pt}} + \def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} + \let\subsubsecfonts = \subsecfonts + \def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} + \def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} + \def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + + % Fonts for short table of contents. + \setfont\shortcontrm\rmshape{12}{1000}{OT1} + \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 + \setfont\shortcontsl\slshape{12}{1000}{OT1} + \setfont\shortconttt\ttshape{12}{1000}{OT1TT} + + % Define these just so they can be easily changed for other fonts. + \def\angleleft{$\langle$} + \def\angleright{$\rangle$} + + % Set the fonts to use with the @small... environments. + \let\smallexamplefonts = \smallfonts + + % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample + % can fit this many characters: + % 8.5x11=86 smallbook=72 a4=90 a5=69 + % If we use \scriptfonts (8pt), then we can fit this many characters: + % 8.5x11=90+ smallbook=80 a4=90+ a5=77 + % For me, subjectively, the few extra characters that fit aren't worth + % the additional smallness of 8pt. So I'm making the default 9pt. + % + % By the way, for comparison, here's what fits with @example (10pt): + % 8.5x11=71 smallbook=60 a4=75 a5=58 + % --karl, 24jan03. + + % Set up the default fonts, so we can use them for creating boxes. + % + \definetextfontsizexi + + + \message{markup,} + + % Check if we are currently using a typewriter font. Since all the + % Computer Modern typewriter fonts have zero interword stretch (and + % shrink), and it is reasonable to expect all typewriter fonts to have + % this property, we can check that font parameter. + % + \def\ifmonospace{\ifdim\fontdimen3\font=0pt } + + % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will + % define and register \INITMACRO to be called on markup style changes. + % \INITMACRO can check \currentmarkupstyle for the innermost + % style and the set of \ifmarkupSTYLE switches for all styles + % currently in effect. + \newif\ifmarkupvar + \newif\ifmarkupsamp + \newif\ifmarkupkey + %\newif\ifmarkupfile % @file == @samp. + %\newif\ifmarkupoption % @option == @samp. + \newif\ifmarkupcode + \newif\ifmarkupkbd + %\newif\ifmarkupenv % @env == @code. + %\newif\ifmarkupcommand % @command == @code. + \newif\ifmarkuptex % @tex (and part of @math, for now). + \newif\ifmarkupexample + \newif\ifmarkupverb + \newif\ifmarkupverbatim + + \let\currentmarkupstyle\empty + + \def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup + } + + \let\markupstylesetup\empty + + \def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% + } + + % Markup style setup for left and right quotes. + \defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi + } + + \defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi + } + + { + \catcode`\'=\active + \catcode`\`=\active + + \gdef\markupsetuplqdefault{\let`\lq} + \gdef\markupsetuprqdefault{\let'\rq} + + \gdef\markupsetcodequoteleft{\let`\codequoteleft} + \gdef\markupsetcodequoteright{\let'\codequoteright} + + \gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} + } + + \let\markupsetuplqcode \markupsetcodequoteleft + \let\markupsetuprqcode \markupsetcodequoteright + % + \let\markupsetuplqexample \markupsetcodequoteleft + \let\markupsetuprqexample \markupsetcodequoteright + % + \let\markupsetuplqsamp \markupsetcodequoteleft + \let\markupsetuprqsamp \markupsetcodequoteright + % + \let\markupsetuplqverb \markupsetcodequoteleft + \let\markupsetuprqverb \markupsetcodequoteright + % + \let\markupsetuplqverbatim \markupsetcodequoteleft + \let\markupsetuprqverbatim \markupsetcodequoteright + + \let\markupsetuplqkbd \markupsetnoligaturesquoteleft + + % Allow an option to not use regular directed right quote/apostrophe + % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). + % The undirected quote is ugly, so don't make it the default, but it + % works for pasting with more pdf viewers (at least evince), the + % lilypond developers report. xpdf does work with the regular 0x27. + % + \def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi + } + % + % and a similar option for the left quote char vs. a grave accent. + % Modern fonts display ASCII 0x60 as a grave accent, so some people like + % the code environments to do likewise. + % + \def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi + } + + % Commands to set the quote options. + % + \parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi + } + % + \parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi + } + + % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. + \def\noligaturesquoteleft{\relax\lq} + + % Count depth in font-changes, for error checks + \newcount\fontdepth \fontdepth=0 + + % Font commands. + + % #1 is the font command (\sl or \it), #2 is the text to slant. + % If we are in a monospaced environment, however, 1) always use \ttsl, + % and 2) do not add an italic correction. + \def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next + } + \def\smartslanted{\dosmartslant\sl} + \def\smartitalic{\dosmartslant\it} + + % Output an italic correction unless \next (presumed to be the following + % character) is such as not to need one. + \def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ptexslash + \fi\fi\fi} + + % like \smartslanted except unconditionally uses \ttsl, and no ic. + % @var is set to this for defun arguments. + \def\ttslanted#1{{\ttsl #1}} + + % @cite is like \smartslanted except unconditionally use \sl. We never want + % ttsl for book titles, do we? + \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + + \let\i=\smartitalic + \let\slanted=\smartslanted + \def\var#1{\smartslanted{#1}} + \let\dfn=\smartslanted + \let\emph=\smartitalic + + % Explicit font changes: @r, @sc, undocumented @ii. + \def\r#1{{\rm #1}} % roman font + \def\sc#1{{\smallcaps#1}} % smallcaps font + \def\ii#1{{\it #1}} % italic font + + % @b, explicit bold. Also @strong. + \def\b#1{{\bf #1}} + \let\strong=\b + + % @sansserif, explicit sans. + \def\sansserif#1{{\sf #1}} + + % We can't just use \exhyphenpenalty, because that only has effect at + % the end of a paragraph. Restore normal hyphenation at the end of the + % group within which \nohyphenation is presumably called. + % + \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} + \def\restorehyphenation{\hyphenchar\font = `- } + + % Set sfcode to normal for the chars that usually have another value. + % Can't use plain's \frenchspacing because it uses the `\x notation, and + % sometimes \x has an active definition that messes things up. + % + \catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } + \catcode`@=\other + \def\endofsentencespacefactor{3000}% default + + % @t, explicit typewriter. + \def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null + } + + % @samp. + \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + + % definition of @key that produces a lozenge. Doesn't adjust to text size. + %\setfont\keyrm\rmshape{8}{1000}{OT1} + %\font\keysy=cmsy9 + %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% + % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + % \vbox{\hrule\kern-0.4pt + % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + % \kern-0.4pt\hrule}% + % \kern-.06em\raise0.4pt\hbox{\angleright}}}} + + % definition of @key with no lozenge. If the current font is already + % monospace, don't change it; that way, we respect @kbdinputstyle. But + % if it isn't monospace, then use \tt. + % + \def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + + % ctrl is no longer a Texinfo command. + \def\ctrl #1{{\tt \rawbackslash \hat}#1} + + % @file, @option are the same as @samp. + \let\file=\samp + \let\option=\samp + + % @code is a modification of @t, + % which makes spaces the same size as normal in the surrounding text. + \def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null + } + + % We *must* turn on hyphenation at `-' and `_' in @code. + % Otherwise, it is too hard to avoid overfull hboxes + % in the Emacs manual, the Library manual, etc. + + % Unfortunately, TeX uses one parameter (\hyphenchar) to control + % both hyphenation at - and hyphenation within words. + % We must therefore turn them both off (\tclose does that) + % and arrange explicitly to hyphenate at a dash. + % -- rms. + { + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\realdash + \let_\realunder + \fi + \codex + } + } + + \def\codex #1{\tclose{#1}\endgroup} + + \def\realdash{-} + \def\codedash{-\discretionary{}{}{}} + \def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% + } + + % An additional complication: the above will allow breaks after, e.g., + % each of the four underscores in __typeof__. This is undesirable in + % some manuals, especially if they don't have long identifiers in + % general. @allowcodebreaks provides a way to control this. + % + \newif\ifallowcodebreaks \allowcodebreakstrue + + \def\keywordtrue{true} + \def\keywordfalse{false} + + \parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi + } + + % @uref (abbreviation for `urlref') takes an optional (comma-separated) + % second argument specifying the text to display and an optional third + % arg as text to display instead of (rather than in addition to) the url + % itself. First (mandatory) arg is the url. + % (This \urefnobreak definition isn't used now, leaving it for a while + % for comparison.) + \def\urefnobreak#1{\dourefnobreak #1,,,\finish} + \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink + \endgroup} + + % This \urefbreak definition is the active one. + \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} + \let\uref=\urefbreak + \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} + \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink + \endgroup} + + % Allow line breaks around only a few characters (only). + \def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active + } + { + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} + } + + % we put a little stretch before and after the breakable chars, to help + % line breaking of long url's. The unequal skips make look better in + % cmtt at least, especially for dots. + \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } + \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } + % + \def\urefcodeamp{\urefprestretch \&\urefpoststretch} + \def\urefcodedot{\urefprestretch .\urefpoststretch} + \def\urefcodehash{\urefprestretch \#\urefpoststretch} + \def\urefcodequest{\urefprestretch ?\urefpoststretch} + \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} + { + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } + } + + % One more complication: by default we'll break after the special + % characters, but some people like to break before the special chars, so + % allow that. Also allow no breaking at all, for manual control. + % + \parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi + } + \def\wordafter{after} + \def\wordbefore{before} + \def\wordnone{none} + + \urefbreakstyle after + + % @url synonym for @uref, since that's how everyone uses it. + % + \let\url=\uref + + % rms does not like angle brackets --karl, 17may97. + % So now @email is just like @uref, unless we are pdf. + % + %\def\email#1{\angleleft{\tt #1}\angleright} + \ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} + \else + \let\email=\uref + \fi + + % @kbd is like @code, except that if the argument is just one @key command, + % then @kbd has no effect. + \def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} + + % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), + % `example' (@kbd uses ttsl only inside of @example and friends), + % or `code' (@kbd uses normal tty font always). + \parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi + } + \def\worddistinct{distinct} + \def\wordexample{example} + \def\wordcode{code} + + % Default is `distinct'. + \kbdinputstyle distinct + + \def\xkey{\key} + \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} + + % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. + \let\indicateurl=\code + \let\env=\code + \let\command=\code + + % @clicksequence{File @click{} Open ...} + \def\clicksequence#1{\begingroup #1\endgroup} + + % @clickstyle @arrow (by default) + \parseargdef\clickstyle{\def\click{#1}} + \def\click{\arrow} + + % Typeset a dimension, e.g., `in' or `pt'. The only reason for the + % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. + % + \def\dmn#1{\thinspace #1} + + % @l was never documented to mean ``switch to the Lisp font'', + % and it is not used as such in any manual I can find. We need it for + % Polish suppressed-l. --karl, 22sep96. + %\def\l#1{{\li #1}\null} + + % @acronym for "FBI", "NATO", and the like. + % We print this one point size smaller, since it's intended for + % all-uppercase. + % + \def\acronym#1{\doacronym #1,,\finish} + \def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + } + + % @abbr for "Comput. J." and the like. + % No font change, but don't do end-of-sentence spacing. + % + \def\abbr#1{\doabbr #1,,\finish} + \def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + } + + % @asis just yields its argument. Used with @table, for example. + % + \def\asis#1{#1} + + % @math outputs its argument in math mode. + % + % One complication: _ usually means subscripts, but it could also mean + % an actual _ character, as in @math{@var{some_variable} + 1}. So make + % _ active, and distinguish by seeing if the current family is \slfam, + % which is what @var uses. + { + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } + } + % Another complication: we want \\ (and @\) to output a math (or tt) \. + % FYI, plain.tex uses \\ as a temporary control sequence (for no + % particular reason), but this is not advertised and we don't care. + % + % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. + \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} + % + \def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath + } + \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + + % Some active characters (such as <) are spaced differently in math. + % We have to reset their definitions in case the @math was an argument + % to a command which sets the catcodes (such as @item or @section). + % + { + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } + } + + + \message{glyphs,} + % and logos. + + % @@ prints an @. + \def\@{\char64 } + + % Used to generate quoted braces. Unless we're in typewriter, use + % \ecfont because the CM text fonts do not have braces, and we don't + % want to switch into math. + \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} + \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} + \let\{=\mylbrace + \let\}=\myrbrace + \begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% + !endgroup + + % @comma{} to avoid , parsing problems. + \let\comma = , + + % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent + % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. + \let\, = \ptexc + \let\dotaccent = \ptexdot + \def\ringaccent#1{{\accent23 #1}} + \let\tieaccent = \ptext + \let\ubaraccent = \ptexb + \let\udotaccent = \d + + % Other special characters: @questiondown @exclamdown @ordf @ordm + % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. + \def\questiondown{?`} + \def\exclamdown{!`} + \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} + \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + + % Dotless i and dotless j, used for accents. + \def\imacro{i} + \def\jmacro{j} + \def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi + } + + % The \TeX{} logo, as in plain, but resetting the spacing so that a + % period following counts as ending a sentence. (Idea found in latex.) + % + \edef\TeX{\TeX \spacefactor=1000 } + + % @LaTeX{} logo. Not quite the same results as the definition in + % latex.ltx, since we use a different font for the raised A; it's most + % convenient for us to use an explicitly smaller font, rather than using + % the \scriptstyle font (since we don't reset \scriptstyle and + % \scriptscriptstyle). + % + \def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX + } + + % Some math mode symbols. + \def\bullet{$\ptexbullet$} + \def\geq{\ifmmode \ge\else $\ge$\fi} + \def\leq{\ifmmode \le\else $\le$\fi} + \def\minus{\ifmmode -\else $-$\fi} + + % @dots{} outputs an ellipsis using the current font. + % We do .5em per period so that it has the same spacing in the cm + % typewriter fonts as three actual period characters; on the other hand, + % in other typewriter fonts three periods are wider than 1.5em. So do + % whichever is larger. + % + \def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% + } + + % @enddots{} is an end-of-sentence ellipsis. + % + \def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor + } + + % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. + % + % Since these characters are used in examples, they should be an even number of + % \tt widths. Each \tt character is 1en, so two makes it 1em. + % + \def\point{$\star$} + \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} + \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} + \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} + \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} + \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + + % The @error{} command. + % Adapted from the TeXbook's \boxit. + % + \newbox\errorbox + % + {\tentt \global\dimen0 = 3em}% Width of the box. + \dimen2 = .55pt % Thickness of rules + % The text. (`r' is open on the right, `e' somewhat less so on the left.) + \setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} + % + \setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} + % + \def\error{\leavevmode\lower.7ex\copy\errorbox} + + % @pounds{} is a sterling sign, which Knuth put in the CM italic font. + % + \def\pounds{{\it\$}} + + % @euro{} comes from a separate font, depending on the current style. + % We use the free feym* fonts from the eurosym package by Henrik + % Theiling, which support regular, slanted, bold and bold slanted (and + % "outlined" (blackboard board, sort of) versions, which we don't need). + % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. + % + % Although only regular is the truly official Euro symbol, we ignore + % that. The Euro is designed to be slightly taller than the regular + % font height. + % + % feymr - regular + % feymo - slanted + % feybr - bold + % feybo - bold slanted + % + % There is no good (free) typewriter version, to my knowledge. + % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. + % Hmm. + % + % Also doesn't work in math. Do we need to do math with euro symbols? + % Hope not. + % + % + \def\euro{{\eurofont e}} + \def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont + } + + % Glyphs from the EC fonts. We don't use \let for the aliases, because + % sometimes we redefine the original macro, and the alias should reflect + % the redefinition. + % + % Use LaTeX names for the Icelandic letters. + \def\DH{{\ecfont \char"D0}} % Eth + \def\dh{{\ecfont \char"F0}} % eth + \def\TH{{\ecfont \char"DE}} % Thorn + \def\th{{\ecfont \char"FE}} % thorn + % + \def\guillemetleft{{\ecfont \char"13}} + \def\guillemotleft{\guillemetleft} + \def\guillemetright{{\ecfont \char"14}} + \def\guillemotright{\guillemetright} + \def\guilsinglleft{{\ecfont \char"0E}} + \def\guilsinglright{{\ecfont \char"0F}} + \def\quotedblbase{{\ecfont \char"12}} + \def\quotesinglbase{{\ecfont \char"0D}} + % + % This positioning is not perfect (see the ogonek LaTeX package), but + % we have the precomposed glyphs for the most common cases. We put the + % tests to use those glyphs in the single \ogonek macro so we have fewer + % dummy definitions to worry about for index entries, etc. + % + % ogonek is also used with other letters in Lithuanian (IOU), but using + % the precomposed glyphs for those is not so easy since they aren't in + % the same EC font. + \def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% + } + \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} + \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} + \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} + \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} + % + % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. + \def\ecfont{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \thisecfont + } + + % @registeredsymbol - R in a circle. The font for the R should really + % be smaller yet, but lllsize is the best we can do for now. + % Adapted from the plain.tex definition of \copyright. + % + \def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% + } + + % @textdegree - the normal degrees sign. + % + \def\textdegree{$^\circ$} + + % Laurent Siebenmann reports \Orb undefined with: + % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 + % so we'll define it if necessary. + % + \ifx\Orb\thisisundefined + \def\Orb{\mathhexbox20D} + \fi + + % Quotes. + \chardef\quotedblleft="5C + \chardef\quotedblright=`\" + \chardef\quoteleft=`\` + \chardef\quoteright=`\' + + + \message{page headings,} + + \newskip\titlepagetopglue \titlepagetopglue = 1.5in + \newskip\titlepagebottomglue \titlepagebottomglue = 2pc + + % First the title page. Must do @settitle before @titlepage. + \newif\ifseenauthor + \newif\iffinishedtitlepage + + % Do an implicit @contents or @shortcontents after @end titlepage if the + % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. + % + \newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue + \newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + + \parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + + \envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% + } + + \def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi + } + + \def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue + } + + % Macros to be used within @titlepage: + + \let\subtitlerm=\tenrm + \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + + \parseargdef\title{% + \checkenv\titlepage + \leftline{\titlefonts\rmisbold #1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt + } + + \parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% + } + + % @author should come last, but may come many times. + % It can also be used inside @quotation. + % + \parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rmisbold \leftline{#1}}% + \fi + } + + + % Set up page headings and footings. + + \let\thispage=\folio + + \newtoks\evenheadline % headline on even pages + \newtoks\oddheadline % headline on odd pages + \newtoks\evenfootline % footline on even pages + \newtoks\oddfootline % footline on odd pages + + % Now make TeX use those variables + \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} + \let\HEADINGShook=\relax + + % Commands to set those variables. + % For example, this is what @headings on does + % @evenheading @thistitle|@thispage|@thischapter + % @oddheading @thischapter|@thispage|@thistitle + % @evenfooting @thisfile|| + % @oddfooting ||@thisfile + + + \def\evenheading{\parsearg\evenheadingxxx} + \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} + \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \def\oddheading{\parsearg\oddheadingxxx} + \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} + \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + + \def\evenfooting{\parsearg\evenfootingxxx} + \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} + \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% + \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + + \def\oddfooting{\parsearg\oddfootingxxx} + \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} + \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -12pt + \global\advance\vsize by -12pt + } + + \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + + % @evenheadingmarks top \thischapter <- chapter at the top of a page + % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page + % + % The same set of arguments for: + % + % @oddheadingmarks + % @evenfootingmarks + % @oddfootingmarks + % @everyheadingmarks + % @everyfootingmarks + + \def\evenheadingmarks{\headingmarks{even}{heading}} + \def\oddheadingmarks{\headingmarks{odd}{heading}} + \def\evenfootingmarks{\headingmarks{even}{footing}} + \def\oddfootingmarks{\headingmarks{odd}{footing}} + \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } + \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } + % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. + \def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp + } + + \everyheadingmarks bottom + \everyfootingmarks bottom + + % @headings double turns headings on for double-sided printing. + % @headings single turns headings on for single-sided printing. + % @headings off turns them off. + % @headings on same as @headings double, retained for compatibility. + % @headings after turns on double-sided headings after this page. + % @headings doubleafter turns on double-sided headings after this page. + % @headings singleafter turns on single-sided headings after this page. + % By default, they are off at the start of a document, + % and turned `on' after @end titlepage. + + \def\headings #1 {\csname HEADINGS#1\endcsname} + + \def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% + } + + \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting + \HEADINGSoff % it's the default + + % When we turn headings on, set the page number to 1. + % For double-sided printing, put current file name in lower left corner, + % chapter name on inside top of right hand pages, document + % title on inside top of left hand pages, and page numbers on outside top + % edge of all pages. + \def\HEADINGSdouble{% + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chapoddpage + } + \let\contentsalignmacro = \chappager + + % For single-sided printing, chapter title goes across top left of page, + % page number on top right. + \def\HEADINGSsingle{% + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chappager + } + \def\HEADINGSon{\HEADINGSdouble} + + \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} + \let\HEADINGSdoubleafter=\HEADINGSafter + \def\HEADINGSdoublex{% + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chapoddpage + } + + \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} + \def\HEADINGSsinglex{% + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + \global\let\contentsalignmacro = \chappager + } + + % Subroutines used in generating headings + % This produces Day Month Year style of output. + % Only define if not already defined, in case a txi-??.tex file has set + % up a different format (e.g., txi-cs.tex does this). + \ifx\today\thisisundefined + \def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} + \fi + + % @settitle line... specifies the title of the document, for headings. + % It generates no output of its own. + \def\thistitle{\putwordNoTitle} + \def\settitle{\parsearg{\gdef\thistitle}} + + + \message{tables,} + % Tables -- @table, @ftable, @vtable, @item(x). + + % default indentation of table text + \newdimen\tableindent \tableindent=.8in + % default indentation of @itemize and @enumerate text + \newdimen\itemindent \itemindent=.3in + % margin between end of table item and start of table text. + \newdimen\itemmargin \itemmargin=.1in + + % used internally for \itemindent minus \itemmargin + \newdimen\itemmax + + % Note @table, @ftable, and @vtable define @item, @itemx, etc., with + % these defs. + % They also define \itemindex + % to index the item name in whatever manner is desired (perhaps none). + + \newif\ifitemxneedsnegativevskip + + \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + + \def\internalBitem{\smallbreak \parsearg\itemzzz} + \def\internalBitemx{\itemxpar \parsearg\itemzzz} + + \def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi + } + + \def\item{\errmessage{@item while not in a list environment}} + \def\itemx{\errmessage{@itemx while not in a list environment}} + + % @table, @ftable, @vtable. + \envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% + } + \envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% + } + \envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% + } + \def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next + } + \def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley + } + \def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez + } + \def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx + } + \def\Etable{\endgraf\afterenvbreak} + \let\Eftable\Etable + \let\Evtable\Etable + \let\Eitemize\Etable + \let\Eenumerate\Etable + + % This is the counter used by @enumerate, which is really @itemize + + \newcount \itemno + + \envdef\itemize{\parsearg\doitemize} + + \def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem + } + + % Definition of @item while inside @itemize and @enumerate. + % + \def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr + } + + % \splitoff TOKENS\endmark defines \first to be the first token in + % TOKENS, and \rest to be the remainder. + % + \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + + % Allow an optional argument of an uppercase letter, lowercase letter, + % or number, to specify the first label in the enumerated list. No + % argument is the same as `1'. + % + \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} + \def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi + } + + % An @enumerate whose labels are integers. The starting integer is + % given in \thearg. + % + \def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% + } + + % The starting (lowercase) letter is in \thearg. + \def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% + } + + % The starting (uppercase) letter is in \thearg. + \def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% + } + + % Call \doitemize, adding a period to the first argument and supplying the + % common last two arguments. Also subtract one from the initial value in + % \itemno, since @item increments \itemno. + % + \def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr + } + + % @alphaenumerate and @capsenumerate are abbreviations for giving an arg + % to @enumerate. + % + \def\alphaenumerate{\enumerate{a}} + \def\capsenumerate{\enumerate{A}} + \def\Ealphaenumerate{\Eenumerate} + \def\Ecapsenumerate{\Eenumerate} + + + % @multitable macros + % Amy Hendrickson, 8/18/94, 3/6/96 + % + % @multitable ... @end multitable will make as many columns as desired. + % Contents of each column will wrap at width given in preamble. Width + % can be specified either with sample text given in a template line, + % or in percent of \hsize, the current width of text on page. + + % Table can continue over pages but will only break between lines. + + % To make preamble: + % + % Either define widths of columns in terms of percent of \hsize: + % @multitable @columnfractions .25 .3 .45 + % @item ... + % + % Numbers following @columnfractions are the percent of the total + % current hsize to be used for each column. You may use as many + % columns as desired. + + + % Or use a template: + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item ... + % using the widest term desired in each column. + + % Each new table line starts with @item, each subsequent new column + % starts with @tab. Empty columns may be produced by supplying @tab's + % with nothing between them for as many times as empty columns are needed, + % ie, @tab@tab@tab will produce two empty columns. + + % @item, @tab do not need to be on their own lines, but it will not hurt + % if they are. + + % Sample multitable: + + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item first col stuff @tab second col stuff @tab third col + % @item + % first col stuff + % @tab + % second col stuff + % @tab + % third col + % @item first col stuff @tab second col stuff + % @tab Many paragraphs of text may be used in any column. + % + % They will wrap at the width determined by the template. + % @item@tab@tab This will be in third column. + % @end multitable + + % Default dimensions may be reset by user. + % @multitableparskip is vertical space between paragraphs in table. + % @multitableparindent is paragraph indent in table. + % @multitablecolmargin is horizontal space to be left between columns. + % @multitablelinespace is space to leave between table items, baseline + % to baseline. + % 0pt means it depends on current normal line spacing. + % + \newskip\multitableparskip + \newskip\multitableparindent + \newdimen\multitablecolspace + \newskip\multitablelinespace + \multitableparskip=0pt + \multitableparindent=6pt + \multitablecolspace=12pt + \multitablelinespace=0pt + + % Macros used to set up halign preamble: + % + \let\endsetuptable\relax + \def\xendsetuptable{\endsetuptable} + \let\columnfractions\relax + \def\xcolumnfractions{\columnfractions} + \newif\ifsetpercent + + % #1 is the @columnfraction, usually a decimal number like .5, but might + % be just 1. We just use it, whatever it is. + % + \def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable + } + + \newcount\colcount + \def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go + } + + % multitable-only commands. + % + % @headitem starts a heading row, which we typeset in bold. + % Assignments have to be global since we are inside the implicit group + % of an alignment entry. \everycr resets \everytab so we don't have to + % undo it ourselves. + \def\headitemfont{\b}% for people to use in the template row; not changeable + \def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item + }% + % + % A \tab used to include \hskip1sp. But then the space in a template + % line is not enough. That is bad. So let's go back to just `&' until + % we again encounter the problem the 1sp was intended to solve. + % --karl, nathan@acm.org, 20apr99. + \def\tab{\checkenv\multitable &\the\everytab}% + + % @multitable ... @end multitable definitions: + % + \newtoks\everytab % insert after every tab. + % + \envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. + }% + }% + % + \parsearg\domultitable + } + \def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr + } + \def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse + } + + \def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. + \ifdim\multitablelinespace=0pt + \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip + \global\advance\multitablelinespace by-\ht0 + \fi + % Test to see if parskip is larger than space between lines of + % table. If not, do nothing. + % If so, set to same dimension as multitablelinespace. + \ifdim\multitableparskip>\multitablelinespace + \global\multitableparskip=\multitablelinespace + \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. + \fi% + \ifdim\multitableparskip=0pt + \global\multitableparskip=\multitablelinespace + \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. + \fi} + + + \message{conditionals,} + + % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, + % @ifnotxml always succeed. They currently do nothing; we don't + % attempt to check whether the conditionals are properly nested. But we + % have to remember that they are conditionals, so that @end doesn't + % attempt to close an environment group. + % + \def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 + } + \makecond{iftex} + \makecond{ifnotdocbook} + \makecond{ifnothtml} + \makecond{ifnotinfo} + \makecond{ifnotplaintext} + \makecond{ifnotxml} + + % Ignore @ignore, @ifhtml, @ifinfo, and the like. + % + \def\direntry{\doignore{direntry}} + \def\documentdescription{\doignore{documentdescription}} + \def\docbook{\doignore{docbook}} + \def\html{\doignore{html}} + \def\ifdocbook{\doignore{ifdocbook}} + \def\ifhtml{\doignore{ifhtml}} + \def\ifinfo{\doignore{ifinfo}} + \def\ifnottex{\doignore{ifnottex}} + \def\ifplaintext{\doignore{ifplaintext}} + \def\ifxml{\doignore{ifxml}} + \def\ignore{\doignore{ignore}} + \def\menu{\doignore{menu}} + \def\xml{\doignore{xml}} + + % Ignore text until a line `@end #1', keeping track of nested conditionals. + % + % A count to remember the depth of nesting. + \newcount\doignorecount + + \def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% + } + + { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% + } + + \def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. + } + + % We have to swallow the remaining "\_STOP_". + % + \def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next + } + + % Finish off ignored text. + { \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% + } + + + % @set VAR sets the variable VAR to an empty value. + % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. + % + % Since we want to separate VAR from REST-OF-LINE (which might be + % empty), we can't just use \parsearg; we have to insert a space of our + % own to delimit the rest of the line, and then take it out again if we + % didn't need it. + % We rely on the fact that \parsearg sets \catcode`\ =10. + % + \parseargdef\set{\setyyy#1 \endsetyyy} + \def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% + } + % Remove the trailing space \setxxx inserted. + \def\setzzz#1 \endsetzzz{\next{#1}} + + % @clear VAR clears (i.e., unsets) the variable VAR. + % + \parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% + } + + % @value{foo} gets the text saved in variable foo. + \def\value{\begingroup\makevalueexpandable\valuexxx} + \def\valuexxx#1{\expandablevalue{#1}\endgroup} + { + \catcode`\- = \active \catcode`\_ = \active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\realdash \let_\normalunderscore + } + } + + % We have this subroutine so that we can handle at least some @value's + % properly in indexes (we call \makevalueexpandable in \indexdummies). + % The command has to be fully expandable (if the variable is set), since + % the result winds up in the index file. This means that if the + % variable's value contains other Texinfo commands, it's almost certain + % it will fail (although perhaps we could fix that with sufficient work + % to do a one-level expansion on the result, instead of complete). + % + \def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi + } + + % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined + % with @set. + % + % To get special treatment of `@end ifset,' call \makeond and the redefine. + % + \makecond{ifset} + \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} + \def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next + } + \def\ifsetfail{\doignore{ifset}} + + % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been + % defined with @set, or has been undefined with @clear. + % + % The `\else' inside the `\doifset' parameter is a trick to reuse the + % above code: if the variable is not set, do nothing, if it is set, + % then redefine \next to \ifclearfail. + % + \makecond{ifclear} + \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} + \def\ifclearfail{\doignore{ifclear}} + + % @dircategory CATEGORY -- specify a category of the dir file + % which this file should belong to. Ignore this in TeX. + \let\dircategory=\comment + + % @defininfoenclose. + \let\definfoenclose=\comment + + + \message{indexing,} + % Index generation facilities + + % Define \newwrite to be identical to plain tex's \newwrite + % except not \outer, so it can be used within macros and \if's. + \edef\newwrite{\makecsname{ptexnewwrite}} + + % \newindex {foo} defines an index named foo. + % It automatically defines \fooindex such that + % \fooindex ...rest of line... puts an entry in the index foo. + % It also defines \fooindfile to be the number of the output channel for + % the file that accumulates this index. The file's extension is foo. + % The name of an index should be no more than 2 characters long + % for the sake of vms. + % + \def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} + } + + % @defindex foo == \newindex{foo} + % + \def\defindex{\parsearg\newindex} + + % Define @defcodeindex, like @defindex except put all entries in @code. + % + \def\defcodeindex{\parsearg\newcodeindex} + % + \def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% + } + + + % @synindex foo bar makes index foo feed into index bar. + % Do this instead of @defindex foo if you don't want it as a separate index. + % + % @syncodeindex foo bar similar, but put all entries made for index foo + % inside @code. + % + \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} + \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + + % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), + % #3 the target index (bar). + \def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \relax + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% + } + + % Define \doindex, the driver for all \fooindex macros. + % Argument #1 is generated by the calling \fooindex macro, + % and it is "foo", the name of the index. + + % \doindex just uses \parsearg; it calls \doind for the actual work. + % This is because \doind is more useful to call from other macros. + + % There is also \dosubind {index}{topic}{subtopic} + % which makes an entry in a two-level index such as the operation index. + + \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} + \def\singleindexer #1{\doind{\indexname}{#1}} + + % like the previous two, but they put @code around the argument. + \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} + \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + + % Take care of Texinfo commands that can appear in an index entry. + % Since there are some commands we want to expand, and others we don't, + % we have to laboriously prevent expansion for those that we don't. + % + \def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should define @lbrace and @rbrace commands a la @comma. + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% + % + % I don't entirely understand this, but when an index entry is + % generated from a macro call, the \endinput which \scanmacro inserts + % causes processing to be prematurely terminated. This is, + % apparently, because \indexsorttmp is fully expanded, and \endinput + % is an expandable command. The redefinition below makes \endinput + % disappear altogether for that purpose -- although logging shows that + % processing continues to some further point. On the other hand, it + % seems \endinput does not hurt in the printed index arg, since that + % is still getting written without apparent harm. + % + % Sample source (mac-idx3.tex, reported by Graham Percival to + % help-texinfo, 22may06): + % @macro funindex {WORD} + % @findex xyz + % @end macro + % ... + % @funindex commtest + % + % The above is not enough to reproduce the bug, but it gives the flavor. + % + % Sample whatsit resulting: + % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} + % + % So: + \let\endinput = \empty + % + % Do the redefinitions. + \commondummies + } + + % For the aux and toc files, @ is the escape character. So we want to + % redefine everything using @ as the escape character (instead of + % \realbackslash, still used for index files). When everything uses @, + % this will be simpler. + % + \def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash + } + + % Called from \indexdummies and \atdummies. + % + \def\commondummies{% + % + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\arrow + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\leq + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\result + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable + } + + % \commondummiesnofonts: common to \commondummies and \indexnofonts. + % + \def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ogonek + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sansserif + \definedummyword\sc + \definedummyword\slanted + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\acronym + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\dmn + \definedummyword\email + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\indicateurl + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref + } + + % \indexnofonts is used when outputting the strings to sort the index + % by, and when constructing control sequence names. It eliminates all + % control sequences and just writes whatever the best ASCII sort string + % would be for a given command (usually its argument). + % + \def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + % Unfortunately, texindex is not prepared to handle braces in the + % content at all. So for index sorting, we map @{ and @} to strings + % starting with |, since that ASCII character is between ASCII { and }. + \def\{{|a}% + \def\}{|b}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{ZZZ}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\geq{>=}% + \def\guillemetleft{<<}% + \def\guillemetright{>>}% + \def\guilsinglleft{<}% + \def\guilsinglright{>}% + \def\leq{<=}% + \def\minus{-}% + \def\point{.}% + \def\pounds{pounds}% + \def\print{-|}% + \def\quotedblbase{"}% + \def\quotedblleft{"}% + \def\quotedblright{"}% + \def\quoteleft{`}% + \def\quoteright{'}% + \def\quotesinglbase{,}% + \def\registeredsymbol{R}% + \def\result{=>}% + \def\textdegree{o}% + % + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax + \else \indexlquoteignore \fi + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist + } + + % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us + % ignore left quotes in the sort term. + {\catcode`\`=\active + \gdef\indexlquoteignore{\let`=\empty}} + + \let\indexbackslash=0 %overridden during \printindex. + \let\SETmarginindex=\relax % put index entries in margin (undocumented)? + + % Most index entries go through here, but \dosubind is the general case. + % #1 is the index name, #2 is the entry text. + \def\doind#1#2{\dosubind{#1}{#2}{}} + + % Workhorse for all \fooindexes. + % #1 is name of index, #2 is stuff to put there, #3 is subentry -- + % empty if called from \doind, as we usually are (the main exception + % is with most defuns, which call us directly). + % + \def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi + } + + % Write the entry in \toks0 to the index file: + % + \def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp + } + + % Take care of unwanted page breaks/skips around a whatsit: + % + % If a skip is the last thing on the list now, preserve it + % by backing up by \lastskip, doing the \write, then inserting + % the skip again. Otherwise, the whatsit generated by the + % \write or \pdfdest will make \lastskip zero. The result is that + % sequences like this: + % @end defun + % @tindex whatever + % @defun ... + % will have extra space inserted, because the \medbreak in the + % start of the @defun won't see the skip inserted by the @end of + % the previous defun. + % + % But don't do any of this if we're not in vertical mode. We + % don't want to do a \vskip and prematurely end a paragraph. + % + % Avoid page breaks due to these extra skips, too. + % + % But wait, there is a catch there: + % We'll have to check whether \lastskip is zero skip. \ifdim is not + % sufficient for this purpose, as it ignores stretch and shrink parts + % of the skip. The only way seems to be to check the textual + % representation of the skip. + % + % The following is almost like \def\zeroskipmacro{0.0pt} except that + % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). + % + \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} + % + \newskip\whatsitskip + \newcount\whatsitpenalty + % + % ..., ready, GO: + % + \def\safewhatsit#1{% + \ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi + \fi + } + + % The index entry written in the file actually looks like + % \entry {sortstring}{page}{topic} + % or + % \entry {sortstring}{page}{topic}{subtopic} + % The texindex program reads in these files and writes files + % containing these kinds of lines: + % \initial {c} + % before the first topic whose initial is c + % \entry {topic}{pagelist} + % for a topic that is used without subtopics + % \primary {topic} + % for the beginning of a topic that is used with subtopics + % \secondary {subtopic}{pagelist} + % for each subtopic. + + % Define the user-accessible indexing commands + % @findex, @vindex, @kindex, @cindex. + + \def\findex {\fnindex} + \def\kindex {\kyindex} + \def\cindex {\cpindex} + \def\vindex {\vrindex} + \def\tindex {\tpindex} + \def\pindex {\pgindex} + + \def\cindexsub {\begingroup\obeylines\cindexsub} + {\obeylines % + \gdef\cindexsub "#1" #2^^M{\endgroup % + \dosubind{cp}{#2}{#1}}} + + % Define the macros used in formatting output of the sorted index material. + + % @printindex causes a particular index (the ??s file) to get printed. + % It does not print any chapter heading (usually an @unnumbered). + % + \parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\backslashcurfont}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 + \endgroup} + + % These macros are used by the sorted index file itself. + % Change them to control the appearance of the index. + + \def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus .5\baselineskip + \leftline{\secbf #1}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + }} + + % \entry typesets a paragraph consisting of the text (#1), dot leaders, and + % then page number (#2) flushed to the right margin. It is used for index + % and table of contents entries. The paragraph is indented by \leftskip. + % + % A straightforward implementation would start like this: + % \def\entry#1#2{... + % But this freezes the catcodes in the argument, and can cause problems to + % @code, which sets - active. This problem was fixed by a kludge--- + % ``-'' was active throughout whole index, but this isn't really right. + % The right solution is to prevent \entry from swallowing the whole text. + % --kasal, 21nov03 + \def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus1pt + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = + } + \def\entrybreak{\unskip\space\ignorespaces}% + \def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + } + \def\finishentry#1{% + % #1 is the page number. + % + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \setbox\boxA = \hbox{#1}% + \ifdim\wd\boxA = 0pt + \ % + \else + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup + } + + % Like plain.tex's \dotfill, except uses up at least 1 em. + \def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + + \def\primary #1{\line{#1\hfil}} + + \newskip\secondaryindent \secondaryindent=0.5cm + \def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par + }} + + % Define two-column mode, which we use to typeset indexes. + % Adapted from the TeXbook, page 416, which is to say, + % the manmac.tex format used to print the TeXbook itself. + \catcode`\@=11 + + \newbox\partialpage + \newdimen\doublecolumnhsize + + \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize + } + + % The double-column output routine for all double-column pages except + % the last. + % + \def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty + } + % + % Re-output the contents of the output page -- any previous material, + % followed by the two boxes we just split, in box0 and box2. + \def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% + } + % + % All done with double columns. + \def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \pageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize + } + % + % Called at the end of the double column material. + \def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar + } + \catcode`\@ = \other + + + \message{sectioning,} + % Chapters, sections, etc. + + % Let's start with @part. + \outer\parseargdef\part{\partzzz{#1}} + \def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + \chapoddpage + \endgroup + } + + % \unnumberedno is an oxymoron. But we count the unnumbered + % sections so that we can refer to them unambiguously in the pdf + % outlines by their "section number". We avoid collisions with chapter + % numbers by starting them at 10000. (If a document ever has 10000 + % chapters, we're in trouble anyway, I'm sure.) + \newcount\unnumberedno \unnumberedno = 10000 + \newcount\chapno + \newcount\secno \secno=0 + \newcount\subsecno \subsecno=0 + \newcount\subsubsecno \subsubsecno=0 + + % This counter is funny since it counts through charcodes of letters A, B, ... + \newcount\appendixno \appendixno = `\@ + % + % \def\appendixletter{\char\the\appendixno} + % We do the following ugly conditional instead of the above simple + % construct for the sake of pdftex, which needs the actual + % letter in the expansion, not just typeset. + % + \def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + % Each @chapter defines these (using marks) as the number+name, number + % and name of the chapter. Page headings and footings can use + % these. @section does likewise. + \def\thischapter{} + \def\thischapternum{} + \def\thischaptername{} + \def\thissection{} + \def\thissectionnum{} + \def\thissectionname{} + + \newcount\absseclevel % used to calculate proper heading level + \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + + % @raisesections: treat @section as chapter, @subsection as section, etc. + \def\raisesections{\global\advance\secbase by -1} + \let\up=\raisesections % original BFox name + + % @lowersections: treat @chapter as section, @section as subsection, etc. + \def\lowersections{\global\advance\secbase by 1} + \let\down=\lowersections % original BFox name + + % we only have subsub. + \chardef\maxseclevel = 3 + % + % A numbered section within an unnumbered changes to unnumbered too. + % To achieve this, remember the "biggest" unnum. sec. we are currently in: + \chardef\unnlevel = \maxseclevel + % + % Trace whether the current chapter is an appendix or not: + % \chapheadtype is "N" or "A", unnumbered chapters are ignored. + \def\chapheadtype{N} + + % Choose a heading macro + % #1 is heading type + % #2 is heading level + % #3 is text for heading + \def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent + } + + % an interface: + \def\numhead{\genhead N} + \def\apphead{\genhead A} + \def\unnmhead{\genhead U} + + % @chapter, @appendix, @unnumbered. Increment top-level counter, reset + % all lower-level sectioning counters to zero. + % + % Also set \chaplevelprefix, which we prepend to @float sequence numbers + % (e.g., figures), q.v. By default (before any chapter), that is empty. + \let\chaplevelprefix = \empty + % + \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz + \def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec + } + + \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz + % + \def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec + } + + % normally unnmhead0 calls unnumberedzzz: + \outer\parseargdef\unnumbered{\unnmhead0{#1}} + \def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec + } + + % @centerchap is like @unnumbered, but the heading is centered. + \outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax + } + + % @top is like @unnumbered. + \let\top\unnumbered + + % Sections. + % + \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz + \def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% + } + + % normally calls appendixsectionzzz: + \outer\parseargdef\appendixsection{\apphead1{#1}} + \def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% + } + \let\appendixsec\appendixsection + + % normally calls unnumberedseczzz: + \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} + \def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% + } + + % Subsections. + % + % normally calls numberedsubseczzz: + \outer\parseargdef\numberedsubsec{\numhead2{#1}} + \def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% + } + + % normally calls appendixsubseczzz: + \outer\parseargdef\appendixsubsec{\apphead2{#1}} + \def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% + } + + % normally calls unnumberedsubseczzz: + \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} + \def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% + } + + % Subsubsections. + % + % normally numberedsubsubseczzz: + \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} + \def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% + } + + % normally appendixsubsubseczzz: + \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} + \def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% + } + + % normally unnumberedsubsubseczzz: + \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} + \def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% + } + + % These macros control what the section commands do, according + % to what kind of chapter we are in (ordinary, appendix, or unnumbered). + % Define them by default for a numbered chapter. + \let\section = \numberedsec + \let\subsection = \numberedsubsec + \let\subsubsection = \numberedsubsubsec + + % Define @majorheading, @heading and @subheading + + % NOTE on use of \vbox for chapter headings, section headings, and such: + % 1) We use \vbox rather than the earlier \line to permit + % overlong headings to fold. + % 2) \hyphenpenalty is set to 10000 because hyphenation in a + % heading is obnoxious; this forbids it. + % 3) Likewise, headings look best if no \parindent is used, and + % if justification is not attempted. Hence \raggedright. + + \def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz + } + + \def\chapheading{\chapbreak \parsearg\chapheadingzzz} + \def\chapheadingzzz#1{% + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\ptexraggedright + \rmisbold #1\hfill}}% + \bigskip \par\penalty 200\relax + \suppressfirstparagraphindent + } + + % @heading, @subheading, @subsubheading. + \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + + % These macros generate a chapter, section, etc. heading only + % (including whitespace, linebreaking, etc. around it), + % given all the information in convenient, parsed form. + + % Args are the skip and penalty (usually negative) + \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + + % Parameter controlling skip before chapter headings (if needed) + \newskip\chapheadingskip + + % Define plain chapter starts, and page on/off switching for it. + \def\chapbreak{\dobreak \chapheadingskip {-4000}} + \def\chappager{\par\vfill\supereject} + % Because \domark is called before \chapoddpage, the filler page will + % get the headings for the next chapter, which is wrong. But we don't + % care -- we just disable all headings on the filler page. + \def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi + } + + \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + + \def\CHAPPAGoff{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chapbreak + \global\let\pagealignmacro=\chappager} + + \def\CHAPPAGon{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chappager + \global\let\pagealignmacro=\chappager + \global\def\HEADINGSon{\HEADINGSsingle}} + + \def\CHAPPAGodd{% + \global\let\contentsalignmacro = \chapoddpage + \global\let\pchapsepmacro=\chapoddpage + \global\let\pagealignmacro=\chapoddpage + \global\def\HEADINGSon{\HEADINGSdouble}} + + \CHAPPAGon + + % Chapter opening. + % + % #1 is the text, #2 is the section type (Ynumbered, Ynothing, + % Yappendix, Yomitfromtoc), #3 the chapter number. + % + % To test against our argument. + \def\Ynothingkeyword{Ynothing} + \def\Yomitfromtockeyword{Yomitfromtoc} + \def\Yappendixkeyword{Yappendix} + % + \def\chapmacro#1#2#3{% + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rmisbold + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak + } + + % @centerchap -- centered and unnumbered. + \let\centerparametersmaybe = \relax + \def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + } + + + % I don't think this chapter style is supported any more, so I'm not + % updating it with the new noderef stuff. We'll see. --karl, 11aug03. + % + \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} + % + \def\unnchfopen #1{% + \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\ptexraggedright + \rmisbold #1\hfill}}\bigskip \par\nobreak + } + \def\chfopen #1#2{\chapoddpage {\chapfonts + \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% + \par\penalty 5000 % + } + \def\centerchfopen #1{% + \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak + } + \def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + + % Section titles. These macros combine the section number parts and + % call the generic \sectionheading to do the printing. + % + \newskip\secheadingskip + \def\secheadingbreak{\dobreak \secheadingskip{-1000}} + + % Subsection titles. + \newskip\subsecheadingskip + \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + + % Subsubsection titles. + \def\subsubsecheadingskip{\subsecheadingskip} + \def\subsubsecheadingbreak{\subsecheadingbreak} + + + % Print any size, any type, section title. + % + % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is + % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the + % section number. + % + \def\seckeyword{sec} + % + \def\sectionheading#1#2#3#4{% + {% + \checkenv{}% should not be in an environment. + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rmisbold + % + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) + \vskip-\parskip + % + % This is purely so the last item on the list is a known \penalty > + % 10000. This is so \startdefun can avoid allowing breakpoints after + % section headings. Otherwise, it would insert a valid breakpoint between: + % + % @section sec-whatever + % @deffn def-whatever + \penalty 10001 + } + + + \message{toc,} + % Table of contents. + \newwrite\tocfile + + % Write an entry to the toc file, opening it if necessary. + % Called from @chapter, etc. + % + % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} + % We append the current node name (if any) and page number as additional + % arguments for the \{chap,sec,...}entry macros which will eventually + % read this. The node name is used in the pdf outlines as the + % destination to jump to. + % + % We open the .toc file for writing here instead of at @setfilename (or + % any other fixed time) so that @contents can be anywhere in the document. + % But if #1 is `omit', then we don't do anything. This is used for the + % table of contents chapter openings themselves. + % + \newif\iftocfileopened + \def\omitkeyword{omit}% + % + \def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi + } + + + % These characters do not print properly in the Computer Modern roman + % fonts, so we must take special care. This is more or less redundant + % with the Texinfo input format setup at the end of this file. + % + \def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active + } + + + % Read the toc file, which is essentially Texinfo input. + \def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename + } + + \newskip\contentsrightmargin \contentsrightmargin=1in + \newcount\savepageno + \newcount\lastnegativepageno \lastnegativepageno = -1 + + % Prepare to read what we've written to \tocfile. + % + \def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + } + + % redefined for the two-volume lispref. We always output on + % \jobname.toc even if this is redefined. + % + \def\tocreadfilename{\jobname.toc} + + % Normal (long) toc. + % + \def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno + } + + % And just the chapters. + \def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno + } + \let\shortcontents = \summarycontents + + % Typeset the label for a chapter or appendix for the short contents. + % The arg is, e.g., `A' for an appendix, or `3' for a chapter. + % + \def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% + } + + % These macros generate individual entries in the table of contents. + % The first argument is the chapter or section name. + % The last argument is the page number. + % The arguments in between are the chapter number, section number, ... + + % Parts, in the main contents. Replace the part number, which doesn't + % exist, with an empty box. Let's hope all the numbers have the same width. + % Also ignore the page number, which is conventionally not printed. + \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} + \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} + % + % Parts, in the short toc. + \def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% + } + + % Chapters, in the main contents. + \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} + % + % Chapters, in the short toc. + % See comments in \dochapentry re vbox and related settings. + \def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% + } + + % Appendices, in the main contents. + % Need the word Appendix, and a fixed-size box. + % + \def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} + % + \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + + % Unnumbered chapters. + \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} + \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + + % Sections. + \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} + \let\appsecentry=\numsecentry + \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + + % Subsections. + \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} + \let\appsubsecentry=\numsubsecentry + \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + + % And subsubsections. + \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} + \let\appsubsubsecentry=\numsubsubsecentry + \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + + % This parameter controls the indentation of the various levels. + % Same as \defaultparindent. + \newdimen\tocindent \tocindent = 15pt + + % Now for the actual typesetting. In all these, #1 is the text and #2 is the + % page number. + % + % If the toc has to be broken over pages, we want it to be at chapters + % if at all possible; hence the \penalty. + \def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip + } + + \def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + \def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + \def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup} + + % We use the same \entry macro as for the index entries. + \let\tocentry = \entry + + % Space between chapter (or whatever) number and the title. + \def\labelspace{\hskip1em \relax} + + \def\dopageno#1{{\rm #1}} + \def\doshortpageno#1{{\rm #1}} + + \def\chapentryfonts{\secfonts \rm} + \def\secentryfonts{\textfonts} + \def\subsecentryfonts{\textfonts} + \def\subsubsecentryfonts{\textfonts} + + + \message{environments,} + % @foo ... @end foo. + + % @tex ... @end tex escapes into raw TeX temporarily. + % One exception: @ is still an escape character, so that @end tex works. + % But \@ or @@ will get a plain @ character. + + \envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode`\`=\other + \catcode`\'=\other + \escapechar=`\\ + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% + } + % There is no need to define \Etex. + + % Define @lisp ... @end lisp. + % @lisp environment forms a group so it can rebind things, + % including the definition of @end lisp (which normally is erroneous). + + % Amount to narrow the margins by for @lisp. + \newskip\lispnarrowing \lispnarrowing=0.4in + + % This is the definition that ^^M gets inside @lisp, @example, and other + % such environments. \null is better than a space, since it doesn't + % have any width. + \def\lisppar{\null\endgraf} + + % This space is always present above and below environments. + \newskip\envskipamount \envskipamount = 0pt + + % Make spacing and below environment symmetrical. We use \parskip here + % to help in doing that, since in @example-like environments \parskip + % is reset to zero; thus the \afterenvbreak inserts no space -- but the + % start of the next paragraph will insert \parskip. + % + \def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi + }} + + \let\afterenvbreak = \aboveenvbreak + + % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will + % also clear it, so that its embedded environments do the narrowing again. + \let\nonarrowing=\relax + + % @cartouche ... @end cartouche: draw rectangle w/rounded corners around + % environment contents. + \font\circle=lcircle10 + \newdimen\circthick + \newdimen\cartouter\newdimen\cartinner + \newskip\normbskip\newskip\normpskip\newskip\normlskip + \circthick=\fontdimen8\circle + % + \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth + \def\ctr{{\hskip 6pt\circle\char'010}} + \def\cbl{{\circle\char'012\hskip -6pt}} + \def\cbr{{\hskip 6pt\circle\char'011}} + \def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} + \def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} + % + \newskip\lskip\newskip\rskip + + \envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing = t% + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of \def\group. + } + \def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts + } + + + % This macro is called at the beginning of all the @example variants, + % inside a group. + \newdimen\nonfillparindent + \def\nonfillstart{% + \aboveenvbreak + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent + } + + \begingroup + \obeyspaces + % We want to swallow spaces (but not other tokens) after the fake + % @indent in our nonfill-environments, where spaces are normally + % active and set to @tie, resulting in them not being ignored after + % @indent. + \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% + \gdef\nonfillindentcheck{% + \ifx\temp % + \expandafter\nonfillindentgobble% + \else% + \leavevmode\nonfillindentbox% + \fi% + }% + \endgroup + \def\nonfillindentgobble#1{\nonfillindent} + \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + + % If you want all examples etc. small: @set dispenvsize small. + % If you want even small examples the full size: @set dispenvsize nosmall. + % This affects the following displayed environments: + % @example, @display, @format, @lisp + % + \def\smallword{small} + \def\nosmallword{nosmall} + \let\SETdispenvsize\relax + \def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi + } + \def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi + } + + % We often define two environments, @foo and @smallfoo. + % Let's do it in one command. #1 is the env name, #2 the definition. + \def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak + } + + % Define two environment synonyms (#1 and #2) for an environment. + \def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% + } + % + % @lisp: indented, narrowed, typewriter font; + % @example: same as @lisp. + % + % @smallexample and @smalllisp: use smaller fonts. + % Originally contributed by Pavel@xerox. + % + \maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return + } + % @display/@smalldisplay: same as @lisp except keep current font. + % + \makedispenvdef{display}{% + \nonfillstart + \gobble + } + + % @format/@smallformat: same as @display except don't narrow margins. + % + \makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble + } + + % @flushleft: same as @format, but doesn't obey \SETdispenvsize. + \envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble + } + \let\Eflushleft = \afterenvbreak + + % @flushright. + % + \envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble + } + \let\Eflushright = \afterenvbreak + + + % @raggedright does more-or-less normal line breaking but no right + % justification. From plain.tex. + \envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax + } + \let\Eraggedright\par + + \envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. + } + \let\Eraggedleft\par + + \envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. + } + \let\Eraggedcenter\par + + + % @quotation does normal linebreaking (hence we can't use \nonfillstart) + % and narrows the margins. We keep \parskip nonzero in general, since + % we're doing normal filling. So, when using \aboveenvbreak and + % \afterenvbreak, temporarily make \parskip 0. + % + \makedispenvdef{quotation}{\quotationstart} + % + \def\quotationstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \parsearg\quotationlabel + } + + % We have retained a nonzero parskip for the environment, since we're + % doing normal filling. + % + \def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% + } + \def\Esmallquotation{\Equotation} + + % If we're given an argument, typeset it in bold with a colon after. + \def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi + } + + + % LaTeX-like @verbatim...@end verbatim and @verb{...} + % If we want to allow any as delimiter, + % we need the curly braces so that makeinfo sees the @verb command, eg: + % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org + % + % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. + % + % [Knuth] p.344; only we need to do the other characters Texinfo sets + % active too. Otherwise, they get lost as the first character on a + % verbatim line. + \def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% + } + % + % [Knuth] p. 380 + \def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} + % + % Setup for the @verb command. + % + % Eight spaces for a tab + \begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} + \endgroup + % + \def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + } + + % Setup for the @verbatim environment + % + % Real tab expansion. + \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount + % + % We typeset each line of the verbatim in an \hbox, so we can handle + % tabs. The \global is in case the verbatim line starts with an accent, + % or some other command that starts with a begin-group. Otherwise, the + % entire \verbbox would disappear at the corresponding end-group, before + % it is typeset. Meanwhile, we can't have nested verbatim commands + % (can we?), so the \global won't be overwriting itself. + \newbox\verbbox + \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} + % + \begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + }% + } + \endgroup + + % start the verbatim environment. + \def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% + } + + % Do the @verb magic: verbatim text is quoted by unique + % delimiter characters. Before first delimiter expect a + % right brace, after last delimiter expect closing brace: + % + % \def\doverb'{'#1'}'{#1} + % + % [Knuth] p. 382; only eat outer {} + \begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] + \endgroup + % + \def\verb{\begingroup\setupverb\doverb} + % + % + % Do the @verbatim magic: define the macro \doverbatim so that + % the (first) argument ends when '@end verbatim' is reached, ie: + % + % \def\doverbatim#1@end verbatim{#1} + % + % For Texinfo it's a lot easier than for LaTeX, + % because texinfo's \verbatim doesn't stop at '\end{verbatim}': + % we need not redefine '\', '{' and '}'. + % + % Inspired by LaTeX's verbatim command set [latex.ltx] + % + \begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. + \endgroup + % + \envdef\verbatim{% + \setupverbatim\doverbatim + } + \let\Everbatim = \afterenvbreak + + + % @verbatiminclude FILE - insert text of file in verbatim environment. + % + \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} + % + \def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \input #1 + \afterenvbreak + }% + } + + % @copying ... @end copying. + % Save the text away for @insertcopying later. + % + % We save the uninterpreted tokens, rather than creating a box. + % Saving the text in a box would be much easier, but then all the + % typesetting commands (@smallbook, font changes, etc.) have to be done + % beforehand -- and a) we want @copying to be done first in the source + % file; b) letting users define the frontmatter in as flexible order as + % possible is very desirable. + % + \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} + \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} + % + \def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup + } + + + \message{defuns,} + % @defun etc. + + \newskip\defbodyindent \defbodyindent=.4in + \newskip\defargsindent \defargsindent=50pt + \newskip\deflastargmargin \deflastargmargin=18pt + \newcount\defunpenalty + + % Start the processing of @deffn: + \def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + } + + \def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% + } + \def\gobbledefun#1\startdefun{} + + % \printdefunline \deffnheader{text} + % + \def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup + } + + \def\Edefun{\endgraf\medbreak} + + % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; + % the only thing remaining is to define \deffnheader. + % + \def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp + } + + % \domakedefun \deffn \deffnx \deffnheader + % + % Define \deffn and \deffnx, without parameters. + % \deffnheader has to be defined explicitly. + % + \def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% + } + + \newif\ifdoingtypefn % doing typed function? + \newif\ifrettypeownline % typeset return type on its own line? + + % @deftypefnnewline on|off says whether the return type of typed functions + % are printed on their own line. This affects @deftypefn, @deftypefun, + % @deftypeop, and @deftypemethod. + % + \parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi + } + + % Untyped functions: + + % @deffn category name args + \makedefun{deffn}{\deffngeneral{}} + + % @deffn category class name args + \makedefun{defop}#1 {\defopon{#1\ \putwordon}} + + % \defopon {category on}class name args + \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + + % \deffngeneral {subind}category name args + % + \def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% + } + + % Typed functions: + + % @deftypefn category type name args + \makedefun{deftypefn}{\deftypefngeneral{}} + + % @deftypeop category class type name args + \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + + % \deftypeopon {category on}class type name args + \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + + % \deftypefngeneral {subind}category type name args + % + \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% + } + + % Typed variables: + + % @deftypevr category type var args + \makedefun{deftypevr}{\deftypecvgeneral{}} + + % @deftypecv category class type var args + \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + + % \deftypecvof {category of}class type var args + \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + + % \deftypecvgeneral {subind}category type var args + % + \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% + } + + % Untyped variables: + + % @defvr category var args + \makedefun{defvr}#1 {\deftypevrheader{#1} {} } + + % @defcv category class var args + \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + + % \defcvof {category of}class var args + \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + + % Types: + + % @deftp category name args + \makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% + } + + % Remaining @defun-like shortcuts: + \makedefun{defun}{\deffnheader{\putwordDeffunc} } + \makedefun{defmac}{\deffnheader{\putwordDefmac} } + \makedefun{defspec}{\deffnheader{\putwordDefspec} } + \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } + \makedefun{defvar}{\defvrheader{\putwordDefvar} } + \makedefun{defopt}{\defvrheader{\putwordDefopt} } + \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } + \makedefun{defmethod}{\defopon\putwordMethodon} + \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} + \makedefun{defivar}{\defcvof\putwordInstanceVariableof} + \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + + % \defname, which formats the name of the @def (not the args). + % #1 is the category, such as "Function". + % #2 is the return type, if any. + % #3 is the function name. + % + % We are followed by (but not passed) the arguments, if any. + % + \def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. + } + + % Print arguments in slanted roman (not ttsl), inconsistently with using + % tt for the name. This is because literal text is sometimes needed in + % the argument list (groff manual), and ttsl and tt are not very + % distinguishable. Prevent hyphenation at `-' chars. + % + \def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. Let's try @var for that. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 + } + + % We want ()&[] to print specially on the defun line. + % + \def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active + } + + % Make control sequences which act like normal parenthesis chars. + \let\lparen = ( \let\rparen = ) + + % Be sure that we always have a definition for `(', etc. For example, + % if the fn name has parens in it, \boldbrax will not be in effect yet, + % so TeX would otherwise complain about undefined control sequence. + { + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} + } + + \newcount\parencount + + % If we encounter &foo, then turn on ()-hacking afterwards + \newif\ifampseen + \def\amprm#1 {\ampseentrue{\bf\ }} + + \def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi + } + \def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi + } + \def\bfafterword#1 {#1 \bf} + + \def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword + } + \def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 + } + + \newcount\brackcount + \def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% + } + \def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 + } + + \def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi + } + % these should not use \errmessage; the glibc manual, at least, actually + % has such constructs (when documenting function pointers). + \def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 + } + \def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 + } + + + \message{macros,} + % @macro. + + % To do this right we need a feature of e-TeX, \scantokens, + % which we arrange to emulate with a temporary file in ordinary TeX. + \ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } + \fi + + \def\scanmacro#1{\begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % + % ... and for \example: + \spaceisspace + % + % The \empty here causes a following catcode 5 newline to be eaten as + % part of reading whitespace after a control sequence. It does not + % eat a catcode 13 newline. There's no good way to handle the two + % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX + % would then have different behavior). See the Macro Details node in + % the manual for the workaround we recommend for macros and + % line-oriented commands. + % + \scantokens{#1\empty}% + \endgroup} + + \def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp + } + + \newcount\paramno % Count of parameters + \newtoks\macname % Macro name + \newif\ifrecursive % Is it recursive? + + % List of all defined macros in the form + % \definedummyword\macro1\definedummyword\macro2... + % Currently is also contains all @aliases; the list can be split + % if there is a need. + \def\macrolist{} + + % Add the macro to \macrolist + \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} + \def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% + } + + % Utility routines. + % This does \let #1 = #2, with \csnames; that is, + % \let \csname#1\endcsname = \csname#2\endcsname + % (except of course we have to play expansion games). + % + \def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname + } + + % Trim leading and trailing spaces off a string. + % Concepts from aro-bend problem 15 (see CTAN). + {\catcode`\@=11 + \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} + \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} + \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} + \def\unbrace#1{#1} + \unbrace{\gdef\trim@@@ #1 } #2@{#1} + } + + % Trim a single trailing ^^M off a string. + {\catcode`\^^M=\other \catcode`\Q=3% + \gdef\eatcr #1{\eatcra #1Q^^MQ}% + \gdef\eatcra#1^^MQ{\eatcrb#1Q}% + \gdef\eatcrb#1Q#2Q{#1}% + } + + % Macro bodies are absorbed as an argument in a context where + % all characters are catcode 10, 11 or 12, except \ which is active + % (as in normal texinfo). It is necessary to change the definition of \ + % to recognize macro arguments; this is the job of \mbodybackslash. + % + % Non-ASCII encodings make 8-bit characters active, so un-activate + % them to avoid their expansion. Must do this non-globally, to + % confine the change to the current group. + % + % It's necessary to have hard CRs when the macro is executed. This is + % done by making ^^M (\endlinechar) catcode 12 when reading the macro + % body, and then making it the \newlinechar in \scanmacro. + % + \def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi + } + + \def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other + } + + \def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash + } + + \def\macroargctxt{% used when scanning invocations + \scanctxt + \catcode`\\=0 + } + % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" + % for the single characters \ { }. Thus, we end up with the "commands" + % that would be written @\ @{ @} in a Texinfo document. + % + % We already have @{ and @}. For @\, we define it here, and only for + % this purpose, to produce a typewriter backslash (so, the @\ that we + % define for @math can't be used with @macro calls): + % + \def\\{\normalbackslash}% + % + % We would like to do this for \, too, since that is what makeinfo does. + % But it is not possible, because Texinfo already has a command @, for a + % cedilla accent. Documents must use @comma{} instead. + % + % \anythingelse will almost certainly be an error of some kind. + + + % \mbodybackslash is the definition of \ in @macro bodies. + % It maps \foo\ => \csname macarg.foo\endcsname => #N + % where N is the macro parameter number. + % We define \csname macarg.\endcsname to be \realbackslash, so + % \\ in macro replacement text gets you a backslash. + % + {\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} + } + \expandafter\def\csname macarg.\endcsname{\realbackslash} + + \def\margbackslash#1{\char`\#1 } + + \def\macro{\recursivefalse\parsearg\macroxxx} + \def\rmacro{\recursivetrue\parsearg\macroxxx} + + \def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0 + \else + \expandafter\parsemargdef \argl;% + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + + \parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi + } + + % Called by \do from \dounmacro on each macro. The idea is to omit any + % macro definitions that have been changed to \relax. + % + \def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \fi + } + + % This makes use of the obscure feature that if the last token of a + % is #, then the preceding argument is delimited by + % an opening brace, and that opening brace is not consumed. + \def\getargs#1{\getargsxxx#1{}} + \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} + \def\getmacname#1 #2\relax{\macname={#1}} + \def\getmacargs#1{\def\argl{#1}} + + % Parse the optional {params} list. Set up \paramno and \paramlist + % so \defmacro knows what to do. Define \macarg.blah for each blah + % in the params list to be ##N where N is the position in that list. + % That gets used by \mbodybackslash (above). + % + % We need to get `macro parameter char #' into several definitions. + % The technique used is stolen from LaTeX: let \hash be something + % unexpandable, insert that wherever you need a #, and then redefine + % it to # just before using the token list produced. + % + % The same technique is used to protect \eatspaces till just before + % the macro is used. + + \def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + } + \def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + + % These two commands read recursive and nonrecursive macro bodies. + % (They're different since rec and nonrec macros end differently.) + % + \long\def\parsemacbody#1@end macro% + {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + \long\def\parsermacbody#1@end rmacro% + {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + + % This defines the macro itself. There are six cases: recursive and + % nonrecursive macros of zero, one, and many arguments. + % Much magic with \expandafter here. + % \xdef is used so that macro definitions will survive the file + % they're defined in; @include reads the file inside a group. + % + \def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \fi + \fi} + + \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + % \braceorline decides whether the next nonwhitespace character is a + % {. If so it reads up to the closing }, if not, it reads the whole + % line. Whatever was read is then fed to the next control sequence + % as an argument (by \parsebrace or \parsearg). + % + \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} + \def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \macnamexxx} + + + % @alias. + % We need some trickery to remove the optional spaces around the equal + % sign. Make them active and then expand them all to nothing. + % + \def\alias{\parseargusing\obeyspaces\aliasxxx} + \def\aliasxxx #1{\aliasyyy#1\relax} + \def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next + } + + + \message{cross references,} + + \newwrite\auxfile + \newif\ifhavexrefs % True if xref values are known. + \newif\ifwarnedxrefs % True if we warned once that they aren't known. + + % @inforef is relatively simple. + \def\inforef #1{\inforefzzz #1,,,,**} + \def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + + % @node's only job in TeX is to define \lastnode, which is used in + % cross-references. The @node line might or might not have commas, and + % might or might not have spaces before the first comma, like: + % @node foo , bar , ... + % We don't want such trailing spaces in the node name. + % + \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} + % + % also remove a trailing comma, in case of something like this: + % @node Help-Cross, , , Cross-refs + \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} + \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + + \let\nwnode=\node + \let\lastnode=\empty + + % Write a cross-reference definition for the current node. #1 is the + % type (Ynumbered, Yappendix, Ynothing). + % + \def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi + } + + % @anchor{NAME} -- define xref target at arbitrary point. + % + \newcount\savesfregister + % + \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} + \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} + \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + + % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an + % anchor), which consists of three parts: + % 1) NAME-title - the current sectioning name taken from \lastsection, + % or the anchor name. + % 2) NAME-snt - section number and type, passed as the SNT arg, or + % empty for anchors. + % 3) NAME-pg - the page number. + % + % This is called from \donoderef, \anchor, and \dofloat. In the case of + % floats, there is an additional part, which is not written here: + % 4) NAME-lof - the text as it should appear in a @listoffloats. + % + \def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi + } + + % @xrefautosectiontitle on|off says whether @section(ing) names are used + % automatically in xrefs, if the third arg is not explicitly specified. + % This was provided as a "secret" @set xref-automatic-section-title + % variable, now it's official. + % + \parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi + } + + + % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is + % the node name, #2 the name of the Info cross-reference, #3 the printed + % node name, #4 the name of the Info file, #5 the name of the printed + % manual. All but the node name can be omitted. + % + \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} + \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} + \def\ref#1{\xrefX[#1,,,,,,,]} + \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + \def\printedmanual{\ignorespaces #5}% + \def\printedrefname{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual\unskip}% + \setbox0=\hbox{\printedrefname\unskip}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Use the node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1 > 0pt + % It is in another manual, so we don't have it. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + {\indexnofonts + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. + \getfilename{#4}% + % + % See comments at \activebackslashdouble. + {\activebackslashdouble \xdef\pdfxrefdest{#1}% + \backslashparens\pdfxrefdest}% + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \setcolor{\linkcolor}% + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd0 = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % if the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd1 > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not + % insert empty discretionaries after hyphens, which means that it will + % not find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, this + % is a loss. Therefore, we give the text of the node name again, so it + % is as if TeX is seeing it for the first time. + \ifdim \wd1 > 0pt + \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% + \else + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via a macro so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi + \fi + \endlink + \endgroup} + + % This macro is called from \xrefX for the `[nodename]' part of xref + % output. It's a separate macro only so it can be changed more easily, + % since square brackets don't work well in some documents. Particularly + % one that Bob is working on :). + % + \def\xrefprintnodename#1{[#1]} + + % Things referred to by \setref. + % + \def\Ynothing{} + \def\Yomitfromtoc{} + \def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi + } + \def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi + } + + % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. + % If its value is nonempty, SUFFIX is output afterward. + % + \def\refx#1#2{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. + } + + % This is the macro invoked by entries in the aux file. Usually it's + % just a \def (we prepend XR to the control sequence name to avoid + % collisions). But if this is a float type, we have more work to do. + % + \def\xrdef#1#2{% + {% The node name might contain 8-bit characters, which in our current + % implementation are changed to commands like @'e. Don't let these + % mess up the control sequence name. + \indexnofonts + \turnoffactive + \xdef\safexrefname{#1}% + }% + % + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi + } + + % Read the last existing aux file, if any. No error if none exists. + % + \def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 + } + + \def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count1=128 + \def\loop{% + \catcode\count1=\other + \advance\count1 by 1 + \ifnum \count1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 + } + + \def\readdatafile#1{% + \begingroup + \setupdatafile + \input\jobname.#1 + \endgroup} + + + \message{insertions,} + % including footnotes. + + \newcount \footnoteno + + % The trailing space in the following definition for supereject is + % vital for proper filling; pages come out unaligned when you do a + % pagealignmacro call if that space before the closing brace is + % removed. (Generally, numeric constants should always be followed by a + % space to prevent strange expansion errors.) + \def\supereject{\par\penalty -20000\footnoteno =0 } + + % @footnotestyle is meaningful for info output only. + \let\footnotestyle=\comment + + {\catcode `\@=11 + % + % Auto-number footnotes. Otherwise like plain. + \gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote + }% + + % Don't bother with the trickery in plain.tex to not require the + % footnote text as a parameter. Our footnotes don't need to be so general. + % + % Oh yes, they do; otherwise, @ifset (and anything else that uses + % \parseargline) fails inside footnotes because the tokens are fixed when + % the footnote is read. --karl, 16nov96. + % + \gdef\dofootnote{% + \insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + \futurelet\next\fo@t + } + }%end \catcode `\@=11 + + % In case a @footnote appears in a vbox, save the footnote text and create + % the real \insert just after the vbox finished. Otherwise, the insertion + % would be lost. + % Similarly, if a @footnote appears inside an alignment, save the footnote + % text to a box and make the \insert when a row of the table is finished. + % And the same can be done for other insert classes. --kasal, 16nov03. + + % Replace the \insert primitive by a cheating macro. + % Deeper inside, just make sure that the saved insertions are not spilled + % out prematurely. + % + \def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi + } + + % This \insert replacement works for both \insert\footins{foo} and + % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. + % + \def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = + } + \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} + \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + + \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + + \def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% + } + + % eat @SAVE -- beware, all of them have catcode \other: + { + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} + } + + % initialization: + \def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next + } + \def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% + } + + % initialize: + \let\checkinserts\empty + \newsaveins\footins + \newsaveins\margin + + + % @image. We use the macros from epsf.tex to support this. + % If epsf.tex is not installed and @image is used, we complain. + % + % Check for and read epsf.tex up front. If we read it only at @image + % time, we might be inside a group, and then its definitions would get + % undone and the next image would fail. + \openin 1 = epsf.tex + \ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex + \fi + \closein 1 + % + % We will only complain once about lack of epsf.tex. + \newif\ifwarnednoepsf + \newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} + % + \def\image#1{% + \ifx\epsfbox\thisiundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi + } + % + % Arguments to @image: + % #1 is (mandatory) image filename; we tack on .eps extension. + % #2 is (optional) width, #3 is (optional) height. + % #4 is (ignored optional) html alt text. + % #5 is (ignored optional) extension. + % #6 is just the usual extra ignored arg for parsing stuff. + \newif\ifimagevmode + \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. On the other hand, if + % it's at the top level, we don't want the normal paragraph indentation. + \noindent + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode \medskip \fi % space after the standalone image + \endgroup} + + + % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, + % etc. We don't actually implement floating yet, we always include the + % float "here". But it seemed the best name for the future. + % + \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + + % There may be a space before second and/or third parameter; delete it. + \def\eatcommaspace#1, {#1,} + + % #1 is the optional FLOATTYPE, the text label for this float, typically + % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, + % this float will not be numbered and cannot be referred to. + % + % #2 is the optional xref label. Also must be present for the float to + % be referable. + % + % #3 is the optional positioning argument; for now, it is ignored. It + % will somehow specify the positions allowed to float to (here, top, bottom). + % + % We keep a separate counter for each FLOATTYPE, which we reset at each + % chapter-level command. + \let\resetallfloatnos=\empty + % + \def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent + } + + % we have these possibilities: + % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap + % @float Foo,lbl & no caption: Foo 1.1 + % @float Foo & @caption{Cap}: Foo: Cap + % @float Foo & no caption: Foo + % @float ,lbl & Caption{Cap}: 1.1: Cap + % @float ,lbl & no caption: 1.1 + % @float & @caption{Cap}: Cap + % @float & no caption: + % + \def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts + } + + % Append the tokens #2 to the definition of macro #1, not expanding either. + % + \def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% + } + + % @caption, @shortcaption + % + \def\caption{\docaption\thiscaption} + \def\shortcaption{\docaption\thisshortcaption} + \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} + \def\defcaption#1#2{\egroup \def#1{#2}} + + % The parameter is the control sequence identifying the counter we are + % going to use. Create it if it doesn't exist and assign it to \floatno. + \def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% + } + + % \setref calls this to get the XREFLABEL-snt value. We want an @xref + % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we + % first read the @float command. + % + \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + + % Magic string used for the XREFLABEL-title value, so \xrefX can + % distinguish floats from other xref types. + \def\floatmagic{!!float!!} + + % #1 is the control sequence we are passed; we expand into a conditional + % which is true if #1 represents a float ref. That is, the magic + % \lastsection value which we \setref above. + % + \def\iffloat#1{\expandafter\doiffloat#1==\finish} + % + % #1 is (maybe) the \floatmagic string. If so, #2 will be the + % (safe) float type for this float. We set \iffloattype to #2. + % + \def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic + } + + % @listoffloats FLOATTYPE - print a list of floats like a table of contents. + % + \parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi + } + + % This is called on each entry in a list of floats. We're passed the + % xref label, in the form LABEL-title, which is how we save it in the + % aux file. We strip off the -title and look up \XRLABEL-lof, which + % has the text we're supposed to typeset here. + % + % Figures without xref labels will not be included in the list (since + % they won't appear in the aux file). + % + \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} + \def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry + }} + + + \message{localization,} + + % For single-language documents, @documentlanguage is usually given very + % early, just after @documentencoding. Single argument is the language + % (de) or locale (de_DE) abbreviation. + % + { + \catcode`\_ = \active + \globaldefs=1 + \parseargdef\documentlanguage{\begingroup + \let_=\normalunderscore % normal _ character for filenames + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore{#1_\finish}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX + \endgroup} + % + % If they passed de_DE, and txi-de_DE.tex doesn't exist, + % try txi-de.tex. + % + \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + } + }% end of special _ catcode + % + \newhelp\nolanghelp{The given language definition file cannot be found or + is empty. Maybe you need to install it? Putting it in the current + directory should work if nowhere else does.} + + % This macro is called from txi-??.tex files; the first argument is the + % \language name to set (without the "\lang@" prefix), the second and + % third args are \{left,right}hyphenmin. + % + % The language names to pass are determined when the format is built. + % See the etex.log file created at that time, e.g., + % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. + % + % With TeX Live 2008, etex now includes hyphenation patterns for all + % available languages. This means we can support hyphenation in + % Texinfo, at least to some extent. (This still doesn't solve the + % accented characters problem.) + % + \catcode`@=11 + \def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax + } + + % Helpers for encodings. + % Set the catcode of characters 128 through 255 to the specified number. + % + \def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat + } + + \def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat + } + + % @documentencoding sets the definition of non-ASCII characters + % according to the specified encoding. + % + \parseargdef\documentencoding{% + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \setnonasciicharscatcode\active + \utfeightchardefs + % + \else + \message{Unknown document encoding #1, ignoring.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii + } + + % A message to be logged when using a character that isn't available + % the default font encoding (OT1). + % + \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} + + % Take account of \c (plain) vs. \, (Texinfo) difference. + \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + + % First, make active non-ASCII characters in order for them to be + % correctly categorized when TeX reads the replacement text of + % macros containing the character definitions. + \setnonasciicharscatcode\active + % + % Latin1 (ISO-8859-1) character definitions. + \def\latonechardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\exclamdown} + \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a3{{\pounds}} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\missingcharmsg{YEN SIGN}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} + \gdef^^aa{\ordf} + \gdef^^ab{\guillemetleft} + \gdef^^ac{$\lnot$} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} + \gdef^^af{\={}} + % + \gdef^^b0{\textdegree} + \gdef^^b1{$\pm$} + \gdef^^b2{$^2$} + \gdef^^b3{$^3$} + \gdef^^b4{\'{}} + \gdef^^b5{$\mu$} + \gdef^^b6{\P} + % + \gdef^^b7{$^.$} + \gdef^^b8{\cedilla\ } + \gdef^^b9{$^1$} + \gdef^^ba{\ordm} + % + \gdef^^bb{\guillemetright} + \gdef^^bc{$1\over4$} + \gdef^^bd{$1\over2$} + \gdef^^be{$3\over4$} + \gdef^^bf{\questiondown} + % + \gdef^^c0{\`A} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\~A} + \gdef^^c4{\"A} + \gdef^^c5{\ringaccent A} + \gdef^^c6{\AE} + \gdef^^c7{\cedilla C} + \gdef^^c8{\`E} + \gdef^^c9{\'E} + \gdef^^ca{\^E} + \gdef^^cb{\"E} + \gdef^^cc{\`I} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\"I} + % + \gdef^^d0{\DH} + \gdef^^d1{\~N} + \gdef^^d2{\`O} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\~O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\O} + \gdef^^d9{\`U} + \gdef^^da{\'U} + \gdef^^db{\^U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\TH} + \gdef^^df{\ss} + % + \gdef^^e0{\`a} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\~a} + \gdef^^e4{\"a} + \gdef^^e5{\ringaccent a} + \gdef^^e6{\ae} + \gdef^^e7{\cedilla c} + \gdef^^e8{\`e} + \gdef^^e9{\'e} + \gdef^^ea{\^e} + \gdef^^eb{\"e} + \gdef^^ec{\`{\dotless i}} + \gdef^^ed{\'{\dotless i}} + \gdef^^ee{\^{\dotless i}} + \gdef^^ef{\"{\dotless i}} + % + \gdef^^f0{\dh} + \gdef^^f1{\~n} + \gdef^^f2{\`o} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\~o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\o} + \gdef^^f9{\`u} + \gdef^^fa{\'u} + \gdef^^fb{\^u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\th} + \gdef^^ff{\"y} + } + + % Latin9 (ISO-8859-15) encoding character definitions. + \def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdef^^a4{\euro} + \gdef^^a6{\v S} + \gdef^^a8{\v s} + \gdef^^b4{\v Z} + \gdef^^b8{\v z} + \gdef^^bc{\OE} + \gdef^^bd{\oe} + \gdef^^be{\"Y} + } + + % Latin2 (ISO-8859-2) character definitions. + \def\lattwochardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\ogonek{A}} + \gdef^^a2{\u{}} + \gdef^^a3{\L} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\v L} + \gdef^^a6{\'S} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\v S} + \gdef^^aa{\cedilla S} + \gdef^^ab{\v T} + \gdef^^ac{\'Z} + \gdef^^ad{\-} + \gdef^^ae{\v Z} + \gdef^^af{\dotaccent Z} + % + \gdef^^b0{\textdegree} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} + \gdef^^b3{\l} + \gdef^^b4{\'{}} + \gdef^^b5{\v l} + \gdef^^b6{\'s} + \gdef^^b7{\v{}} + \gdef^^b8{\cedilla\ } + \gdef^^b9{\v s} + \gdef^^ba{\cedilla s} + \gdef^^bb{\v t} + \gdef^^bc{\'z} + \gdef^^bd{\H{}} + \gdef^^be{\v z} + \gdef^^bf{\dotaccent z} + % + \gdef^^c0{\'R} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\u A} + \gdef^^c4{\"A} + \gdef^^c5{\'L} + \gdef^^c6{\'C} + \gdef^^c7{\cedilla C} + \gdef^^c8{\v C} + \gdef^^c9{\'E} + \gdef^^ca{\ogonek{E}} + \gdef^^cb{\"E} + \gdef^^cc{\v E} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\v D} + % + \gdef^^d0{\DH} + \gdef^^d1{\'N} + \gdef^^d2{\v N} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\H O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\v R} + \gdef^^d9{\ringaccent U} + \gdef^^da{\'U} + \gdef^^db{\H U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\cedilla T} + \gdef^^df{\ss} + % + \gdef^^e0{\'r} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\u a} + \gdef^^e4{\"a} + \gdef^^e5{\'l} + \gdef^^e6{\'c} + \gdef^^e7{\cedilla c} + \gdef^^e8{\v c} + \gdef^^e9{\'e} + \gdef^^ea{\ogonek{e}} + \gdef^^eb{\"e} + \gdef^^ec{\v e} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} + \gdef^^ef{\v d} + % + \gdef^^f0{\dh} + \gdef^^f1{\'n} + \gdef^^f2{\v n} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\H o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\v r} + \gdef^^f9{\ringaccent u} + \gdef^^fa{\'u} + \gdef^^fb{\H u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\cedilla t} + \gdef^^ff{\dotaccent{}} + } + + % UTF-8 character definitions. + % + % This code to support UTF-8 is based on LaTeX's utf8.def, with some + % changes for Texinfo conventions. It is included here under the GPL by + % permission from Frank Mittelbach and the LaTeX team. + % + \newcount\countUTFx + \newcount\countUTFy + \newcount\countUTFz + + \gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} + % + \gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} + % + \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + + \gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi + } + + \begingroup + \catcode`\~13 + \catcode`\"12 + + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiTwoOctets\string~}} + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiThreeOctets\string~}} + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiFourOctets\string~}} + \UTFviiiLoop + \endgroup + + \begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + + \gdef\DeclareUnicodeCharacter#1#2{% + \countUTFz = "#1\relax + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + \begingroup + \parseXMLCharref + \def\UTFviiiTwoOctets##1##2{% + \csname u8:##1\string ##2\endcsname}% + \def\UTFviiiThreeOctets##1##2##3{% + \csname u8:##1\string ##2\string ##3\endcsname}% + \def\UTFviiiFourOctets##1##2##3##4{% + \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \gdef\UTFviiiTmp{#2}% + \endgroup} + + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctets.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \fi\fi\fi + } + + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz + \multiply\countUTFz by 64 + \advance\countUTFx by -\countUTFz + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} + \endgroup + + \def\utfeightchardefs{% + \DeclareUnicodeCharacter{00A0}{\tie} + \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A8}{\"{ }} + \DeclareUnicodeCharacter{00A9}{\copyright} + \DeclareUnicodeCharacter{00AA}{\ordf} + \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AD}{\-} + \DeclareUnicodeCharacter{00AE}{\registeredsymbol} + \DeclareUnicodeCharacter{00AF}{\={ }} + + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00BA}{\ordm} + \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BF}{\questiondown} + + \DeclareUnicodeCharacter{00C0}{\`A} + \DeclareUnicodeCharacter{00C1}{\'A} + \DeclareUnicodeCharacter{00C2}{\^A} + \DeclareUnicodeCharacter{00C3}{\~A} + \DeclareUnicodeCharacter{00C4}{\"A} + \DeclareUnicodeCharacter{00C5}{\AA} + \DeclareUnicodeCharacter{00C6}{\AE} + \DeclareUnicodeCharacter{00C7}{\cedilla{C}} + \DeclareUnicodeCharacter{00C8}{\`E} + \DeclareUnicodeCharacter{00C9}{\'E} + \DeclareUnicodeCharacter{00CA}{\^E} + \DeclareUnicodeCharacter{00CB}{\"E} + \DeclareUnicodeCharacter{00CC}{\`I} + \DeclareUnicodeCharacter{00CD}{\'I} + \DeclareUnicodeCharacter{00CE}{\^I} + \DeclareUnicodeCharacter{00CF}{\"I} + + \DeclareUnicodeCharacter{00D0}{\DH} + \DeclareUnicodeCharacter{00D1}{\~N} + \DeclareUnicodeCharacter{00D2}{\`O} + \DeclareUnicodeCharacter{00D3}{\'O} + \DeclareUnicodeCharacter{00D4}{\^O} + \DeclareUnicodeCharacter{00D5}{\~O} + \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D8}{\O} + \DeclareUnicodeCharacter{00D9}{\`U} + \DeclareUnicodeCharacter{00DA}{\'U} + \DeclareUnicodeCharacter{00DB}{\^U} + \DeclareUnicodeCharacter{00DC}{\"U} + \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} + \DeclareUnicodeCharacter{00DF}{\ss} + + \DeclareUnicodeCharacter{00E0}{\`a} + \DeclareUnicodeCharacter{00E1}{\'a} + \DeclareUnicodeCharacter{00E2}{\^a} + \DeclareUnicodeCharacter{00E3}{\~a} + \DeclareUnicodeCharacter{00E4}{\"a} + \DeclareUnicodeCharacter{00E5}{\aa} + \DeclareUnicodeCharacter{00E6}{\ae} + \DeclareUnicodeCharacter{00E7}{\cedilla{c}} + \DeclareUnicodeCharacter{00E8}{\`e} + \DeclareUnicodeCharacter{00E9}{\'e} + \DeclareUnicodeCharacter{00EA}{\^e} + \DeclareUnicodeCharacter{00EB}{\"e} + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + + \DeclareUnicodeCharacter{00F0}{\dh} + \DeclareUnicodeCharacter{00F1}{\~n} + \DeclareUnicodeCharacter{00F2}{\`o} + \DeclareUnicodeCharacter{00F3}{\'o} + \DeclareUnicodeCharacter{00F4}{\^o} + \DeclareUnicodeCharacter{00F5}{\~o} + \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F8}{\o} + \DeclareUnicodeCharacter{00F9}{\`u} + \DeclareUnicodeCharacter{00FA}{\'u} + \DeclareUnicodeCharacter{00FB}{\^u} + \DeclareUnicodeCharacter{00FC}{\"u} + \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} + \DeclareUnicodeCharacter{00FF}{\"y} + + \DeclareUnicodeCharacter{0100}{\=A} + \DeclareUnicodeCharacter{0101}{\=a} + \DeclareUnicodeCharacter{0102}{\u{A}} + \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} + \DeclareUnicodeCharacter{0106}{\'C} + \DeclareUnicodeCharacter{0107}{\'c} + \DeclareUnicodeCharacter{0108}{\^C} + \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} + \DeclareUnicodeCharacter{010A}{\dotaccent{C}} + \DeclareUnicodeCharacter{010B}{\dotaccent{c}} + \DeclareUnicodeCharacter{010C}{\v{C}} + \DeclareUnicodeCharacter{010D}{\v{c}} + \DeclareUnicodeCharacter{010E}{\v{D}} + + \DeclareUnicodeCharacter{0112}{\=E} + \DeclareUnicodeCharacter{0113}{\=e} + \DeclareUnicodeCharacter{0114}{\u{E}} + \DeclareUnicodeCharacter{0115}{\u{e}} + \DeclareUnicodeCharacter{0116}{\dotaccent{E}} + \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{011A}{\v{E}} + \DeclareUnicodeCharacter{011B}{\v{e}} + \DeclareUnicodeCharacter{011C}{\^G} + \DeclareUnicodeCharacter{011D}{\^g} + \DeclareUnicodeCharacter{011E}{\u{G}} + \DeclareUnicodeCharacter{011F}{\u{g}} + + \DeclareUnicodeCharacter{0120}{\dotaccent{G}} + \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0124}{\^H} + \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0128}{\~I} + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} + \DeclareUnicodeCharacter{012A}{\=I} + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} + \DeclareUnicodeCharacter{012C}{\u{I}} + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + + \DeclareUnicodeCharacter{0130}{\dotaccent{I}} + \DeclareUnicodeCharacter{0131}{\dotless{i}} + \DeclareUnicodeCharacter{0132}{IJ} + \DeclareUnicodeCharacter{0133}{ij} + \DeclareUnicodeCharacter{0134}{\^J} + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0139}{\'L} + \DeclareUnicodeCharacter{013A}{\'l} + + \DeclareUnicodeCharacter{0141}{\L} + \DeclareUnicodeCharacter{0142}{\l} + \DeclareUnicodeCharacter{0143}{\'N} + \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0147}{\v{N}} + \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{014C}{\=O} + \DeclareUnicodeCharacter{014D}{\=o} + \DeclareUnicodeCharacter{014E}{\u{O}} + \DeclareUnicodeCharacter{014F}{\u{o}} + + \DeclareUnicodeCharacter{0150}{\H{O}} + \DeclareUnicodeCharacter{0151}{\H{o}} + \DeclareUnicodeCharacter{0152}{\OE} + \DeclareUnicodeCharacter{0153}{\oe} + \DeclareUnicodeCharacter{0154}{\'R} + \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0158}{\v{R}} + \DeclareUnicodeCharacter{0159}{\v{r}} + \DeclareUnicodeCharacter{015A}{\'S} + \DeclareUnicodeCharacter{015B}{\'s} + \DeclareUnicodeCharacter{015C}{\^S} + \DeclareUnicodeCharacter{015D}{\^s} + \DeclareUnicodeCharacter{015E}{\cedilla{S}} + \DeclareUnicodeCharacter{015F}{\cedilla{s}} + + \DeclareUnicodeCharacter{0160}{\v{S}} + \DeclareUnicodeCharacter{0161}{\v{s}} + \DeclareUnicodeCharacter{0162}{\cedilla{t}} + \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0164}{\v{T}} + + \DeclareUnicodeCharacter{0168}{\~U} + \DeclareUnicodeCharacter{0169}{\~u} + \DeclareUnicodeCharacter{016A}{\=U} + \DeclareUnicodeCharacter{016B}{\=u} + \DeclareUnicodeCharacter{016C}{\u{U}} + \DeclareUnicodeCharacter{016D}{\u{u}} + \DeclareUnicodeCharacter{016E}{\ringaccent{U}} + \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + + \DeclareUnicodeCharacter{0170}{\H{U}} + \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0174}{\^W} + \DeclareUnicodeCharacter{0175}{\^w} + \DeclareUnicodeCharacter{0176}{\^Y} + \DeclareUnicodeCharacter{0177}{\^y} + \DeclareUnicodeCharacter{0178}{\"Y} + \DeclareUnicodeCharacter{0179}{\'Z} + \DeclareUnicodeCharacter{017A}{\'z} + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} + \DeclareUnicodeCharacter{017C}{\dotaccent{z}} + \DeclareUnicodeCharacter{017D}{\v{Z}} + \DeclareUnicodeCharacter{017E}{\v{z}} + + \DeclareUnicodeCharacter{01C4}{D\v{Z}} + \DeclareUnicodeCharacter{01C5}{D\v{z}} + \DeclareUnicodeCharacter{01C6}{d\v{z}} + \DeclareUnicodeCharacter{01C7}{LJ} + \DeclareUnicodeCharacter{01C8}{Lj} + \DeclareUnicodeCharacter{01C9}{lj} + \DeclareUnicodeCharacter{01CA}{NJ} + \DeclareUnicodeCharacter{01CB}{Nj} + \DeclareUnicodeCharacter{01CC}{nj} + \DeclareUnicodeCharacter{01CD}{\v{A}} + \DeclareUnicodeCharacter{01CE}{\v{a}} + \DeclareUnicodeCharacter{01CF}{\v{I}} + + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} + \DeclareUnicodeCharacter{01D1}{\v{O}} + \DeclareUnicodeCharacter{01D2}{\v{o}} + \DeclareUnicodeCharacter{01D3}{\v{U}} + \DeclareUnicodeCharacter{01D4}{\v{u}} + + \DeclareUnicodeCharacter{01E2}{\={\AE}} + \DeclareUnicodeCharacter{01E3}{\={\ae}} + \DeclareUnicodeCharacter{01E6}{\v{G}} + \DeclareUnicodeCharacter{01E7}{\v{g}} + \DeclareUnicodeCharacter{01E8}{\v{K}} + \DeclareUnicodeCharacter{01E9}{\v{k}} + + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} + \DeclareUnicodeCharacter{01F1}{DZ} + \DeclareUnicodeCharacter{01F2}{Dz} + \DeclareUnicodeCharacter{01F3}{dz} + \DeclareUnicodeCharacter{01F4}{\'G} + \DeclareUnicodeCharacter{01F5}{\'g} + \DeclareUnicodeCharacter{01F8}{\`N} + \DeclareUnicodeCharacter{01F9}{\`n} + \DeclareUnicodeCharacter{01FC}{\'{\AE}} + \DeclareUnicodeCharacter{01FD}{\'{\ae}} + \DeclareUnicodeCharacter{01FE}{\'{\O}} + \DeclareUnicodeCharacter{01FF}{\'{\o}} + + \DeclareUnicodeCharacter{021E}{\v{H}} + \DeclareUnicodeCharacter{021F}{\v{h}} + + \DeclareUnicodeCharacter{0226}{\dotaccent{A}} + \DeclareUnicodeCharacter{0227}{\dotaccent{a}} + \DeclareUnicodeCharacter{0228}{\cedilla{E}} + \DeclareUnicodeCharacter{0229}{\cedilla{e}} + \DeclareUnicodeCharacter{022E}{\dotaccent{O}} + \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + + \DeclareUnicodeCharacter{0232}{\=Y} + \DeclareUnicodeCharacter{0233}{\=y} + \DeclareUnicodeCharacter{0237}{\dotless{j}} + + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + + \DeclareUnicodeCharacter{1E20}{\=G} + \DeclareUnicodeCharacter{1E21}{\=g} + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} + \DeclareUnicodeCharacter{1E26}{\"H} + \DeclareUnicodeCharacter{1E27}{\"h} + + \DeclareUnicodeCharacter{1E30}{\'K} + \DeclareUnicodeCharacter{1E31}{\'k} + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} + \DeclareUnicodeCharacter{1E3E}{\'M} + \DeclareUnicodeCharacter{1E3F}{\'m} + + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + + \DeclareUnicodeCharacter{1E54}{\'P} + \DeclareUnicodeCharacter{1E55}{\'p} + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + + \DeclareUnicodeCharacter{1E7C}{\~V} + \DeclareUnicodeCharacter{1E7D}{\~v} + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + + \DeclareUnicodeCharacter{1E80}{\`W} + \DeclareUnicodeCharacter{1E81}{\`w} + \DeclareUnicodeCharacter{1E82}{\'W} + \DeclareUnicodeCharacter{1E83}{\'w} + \DeclareUnicodeCharacter{1E84}{\"W} + \DeclareUnicodeCharacter{1E85}{\"w} + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} + \DeclareUnicodeCharacter{1E8C}{\"X} + \DeclareUnicodeCharacter{1E8D}{\"x} + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + + \DeclareUnicodeCharacter{1E90}{\^Z} + \DeclareUnicodeCharacter{1E91}{\^z} + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} + \DeclareUnicodeCharacter{1E97}{\"t} + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} + \DeclareUnicodeCharacter{1EBC}{\~E} + \DeclareUnicodeCharacter{1EBD}{\~e} + + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + + \DeclareUnicodeCharacter{1EF2}{\`Y} + \DeclareUnicodeCharacter{1EF3}{\`y} + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + + \DeclareUnicodeCharacter{1EF8}{\~Y} + \DeclareUnicodeCharacter{1EF9}{\~y} + + \DeclareUnicodeCharacter{2013}{--} + \DeclareUnicodeCharacter{2014}{---} + \DeclareUnicodeCharacter{2018}{\quoteleft} + \DeclareUnicodeCharacter{2019}{\quoteright} + \DeclareUnicodeCharacter{201A}{\quotesinglbase} + \DeclareUnicodeCharacter{201C}{\quotedblleft} + \DeclareUnicodeCharacter{201D}{\quotedblright} + \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{2026}{\dots} + \DeclareUnicodeCharacter{2039}{\guilsinglleft} + \DeclareUnicodeCharacter{203A}{\guilsinglright} + \DeclareUnicodeCharacter{20AC}{\euro} + + \DeclareUnicodeCharacter{2192}{\expansion} + \DeclareUnicodeCharacter{21D2}{\result} + + \DeclareUnicodeCharacter{2212}{\minus} + \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2261}{\equiv} + }% end of \utfeightchardefs + + + % US-ASCII character definitions. + \def\asciichardefs{% nothing need be done + \relax + } + + % Make non-ASCII characters printable again for compatibility with + % existing Texinfo documents that may use them, even without declaring a + % document encoding. + % + \setnonasciicharscatcode \other + + + \message{formatting,} + + \newdimen\defaultparindent \defaultparindent = 15pt + + \chapheadingskip = 15pt plus 4pt minus 2pt + \secheadingskip = 12pt plus 3pt minus 2pt + \subsecheadingskip = 9pt plus 2pt minus 2pt + + % Prevent underfull vbox error messages. + \vbadness = 10000 + + % Don't be very finicky about underfull hboxes, either. + \hbadness = 6666 + + % Following George Bush, get rid of widows and orphans. + \widowpenalty=10000 + \clubpenalty=10000 + + % Use TeX 3.0's \emergencystretch to help line breaking, but if we're + % using an old version of TeX, don't do anything. We want the amount of + % stretch added to depend on the line length, hence the dependence on + % \hsize. We call this whenever the paper size is set. + % + \def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi + } + + % Parameters in order: 1) textheight; 2) textwidth; + % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; + % 7) physical page height; 8) physical page width. + % + % We also call \setleading{\textleading}, so the caller should define + % \textleading. The caller should also set \parskip. + % + \def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch + } + + % @letterpaper (the default). + \def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% + }} + + % Use @smallbook to reset parameters for 7x9.25 trim size. + \def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm + }} + + % Use @smallerbook to reset parameters for 6x9 trim size. + % (Just testing, parameters still in flux.) + \def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm + }} + + % Use @afourpaper to print on European A4 paper. + \def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm + }} + + % Use @afivepaper to print on European A5 paper. + % From romildo@urano.iceb.ufop.br, 2 July 2000. + % He also recommends making @example and @lisp be small. + \def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm + }} + + % A specific text layout, 24x15cm overall, intended for A4 paper. + \def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 + }} + + % Use @afourwide to print on A4 paper in landscape format. + \def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 + }} + + % @pagesizes TEXTHEIGHT[,TEXTWIDTH] + % Perhaps we should allow setting the margins, \topskip, \parskip, + % and/or leading, also. Or perhaps we should compute them somehow. + % + \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} + \def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% + }} + + % Set default to letter. + % + \letterpaper + + + \message{and turning on texinfo input format.} + + \def^^L{\par} % remove \outer, so ^L can appear in an @comment + + % DEL is a comment character, in case @c does not suffice. + \catcode`\^^? = 14 + + % Define macros to output various characters with catcode for normal text. + \catcode`\"=\other \def\normaldoublequote{"} + \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix + \catcode`\+=\other \def\normalplus{+} + \catcode`\<=\other \def\normalless{<} + \catcode`\>=\other \def\normalgreater{>} + \catcode`\^=\other \def\normalcaret{^} + \catcode`\_=\other \def\normalunderscore{_} + \catcode`\|=\other \def\normalverticalbar{|} + \catcode`\~=\other \def\normaltilde{~} + + % This macro is used to make a character print one way in \tt + % (where it can probably be output as-is), and another way in other fonts, + % where something hairier probably needs to be done. + % + % #1 is what to print if we are indeed using \tt; #2 is what to print + % otherwise. Since all the Computer Modern typewriter fonts have zero + % interword stretch (and shrink), and it is reasonable to expect all + % typewriter fonts to have this, we can check that font parameter. + % + \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + + % Same as above, but check for italic font. Actually this also catches + % non-italic slanted fonts since it is impossible to distinguish them from + % italic fonts. But since this is only used by $ and it uses \sl anyway + % this is not a problem. + \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + + % Turn off all special characters except @ + % (and those which the user can use as if they were ordinary). + % Most of these we simply print from the \tt font, but for some, we can + % use math or other variants that look better in normal text. + + \catcode`\"=\active + \def\activedoublequote{{\tt\char34}} + \let"=\activedoublequote + \catcode`\~=\active + \def~{{\tt\char126}} + \chardef\hat=`\^ + \catcode`\^=\active + \def^{{\tt \hat}} + + \catcode`\_=\active + \def_{\ifusingtt\normalunderscore\_} + \let\realunder=_ + % Subroutine for the previous macro. + \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + + \catcode`\|=\active + \def|{{\tt\char124}} + \chardef \less=`\< + \catcode`\<=\active + \def<{{\tt \less}} + \chardef \gtr=`\> + \catcode`\>=\active + \def>{{\tt \gtr}} + \catcode`\+=\active + \def+{{\tt \char 43}} + \catcode`\$=\active + \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix + + % If a .fmt file is being used, characters that might appear in a file + % name cannot be active until we have parsed the command line. + % So turn them off again, and have \everyjob (or @setfilename) turn them on. + % \otherifyactive is called near the end of this file. + \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + + % Used sometimes to turn off (effectively) the active characters even after + % parsing them. + \def\turnoffactive{% + \normalturnoffactive + \otherbackslash + } + + \catcode`\@=0 + + % \backslashcurfont outputs one backslash character in current font, + % as in \char`\\. + \global\chardef\backslashcurfont=`\\ + \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + + % \realbackslash is an actual character `\' with catcode other, and + % \doublebackslash is two of them (for the pdf outlines). + {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + + % In texinfo, backslash is an active character; it prints the backslash + % in fixed width font. + \catcode`\\=\active + @def@normalbackslash{{@tt@backslashcurfont}} + % On startup, @fixbackslash assigns: + % @let \ = @normalbackslash + + % \rawbackslash defines an active \ to do \backslashcurfont. + % \otherbackslash defines an active \ to be a literal `\' character with + % catcode other. + @gdef@rawbackslash{@let\=@backslashcurfont} + @gdef@otherbackslash{@let\=@realbackslash} + + % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of + % the literal character `\'. + % + @def@normalturnoffactive{% + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } + + % Make _ and + \other characters, temporarily. + % This is canceled by @fixbackslash. + @otherifyactive + + % If a .fmt file is being used, we don't want the `\input texinfo' to show up. + % That is what \eatinput is for; after that, the `\' should revert to printing + % a backslash. + % + @gdef@eatinput input texinfo{@fixbackslash} + @global@let\ = @eatinput + + % On the other hand, perhaps the file did not have a `\input texinfo'. Then + % the first `\' in the file would cause an error. This macro tries to fix + % that, assuming it is called before the first `\' could plausibly occur. + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + % + @gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active + } + + % Say @foo, not \foo, in error messages. + @escapechar = `@@ + + % These (along with & and #) are made active for url-breaking, so need + % active definitions as the normal characters. + @def@normaldot{.} + @def@normalquest{?} + @def@normalslash{/} + + % These look ok in all fonts, so just make them not special. + @catcode`@& = @other @def@normalamp{&} + @catcode`@# = @other @def@normalhash{#} + @catcode`@% = @other @def@normalpercent{%} + + @c Finally, make ` and ' active, so that txicodequoteundirected and + @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we + @c don't make ` and ' active, @code will not get them as active chars. + @c Do this last of all since we use ` in the previous @catcode assignments. + @catcode`@'=@active + @catcode`@`=@active + @markupsetuplqdefault + @markupsetuprqdefault + + @c Local variables: + @c eval: (add-hook 'write-file-hooks 'time-stamp) + @c page-delimiter: "^\\\\message" + @c time-stamp-start: "def\\\\texinfoversion{" + @c time-stamp-format: "%:y-%02m-%02d.%02H" + @c time-stamp-end: "}" + @c End: + + @c vim:sw=2: + + @ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 + @end ignore diff -cNr octave-3.4.1/ChangeLog octave-3.4.2/ChangeLog *** octave-3.4.1/ChangeLog 2011-06-15 11:41:22.000000000 -0400 --- octave-3.4.2/ChangeLog 2011-06-24 10:50:20.000000000 -0400 *************** *** 1,3 **** --- 1,174 ---- + 2011-06-24 John W. Eaton + + Added tag release-3-4-2 for changeset 3666e8e6f96e + + Files: .hgtags + + Version 3.4.2 released. + + * configure.ac (AC_INIT): Version is now 3.4.2. + (OCTAVE_RELEASE_DATE): Now 2011-06-24. + + Files: configure.ac + + 2011-06-23 John W. Eaton + + Added tag release-3-4-1 for changeset 901d466ee55a + + Files: .hgtags + + 2011-06-22 John W. Eaton + + Second release candidate for 3.4.2 + + * configure.ac (AC_INIT): Version is now 3.4.2-rc2. + + Files: configure.ac + + maint: link mkoctfile and octave-config with gnulib and $(LIBS) + + * src/Makefile.am (mkoctfile_LDADD, octave_config_LDADD): + New variables for automake. + + Files: src/Makefile.am + + 2011-06-21 John W. Eaton + + First release candidate for 3.4.2 + + * configure.ac (AC_INIT): Version is now 3.4.2-rc1. + * NEWS: Update for release. + + Files: NEWS configure.ac + + fix typo in __getlegenddata__ + + * __getlegenddata__.m: Fix typo (hbobj -> hgobj). + + Files: scripts/plot/private/__getlegenddata__.m + + 2011-06-21 Rik + + Restore ability to compile on Windows platforms + + src/Makefile.am: Restore liboctave dependencies accidentally deleted in + changeset 633ef00d963c. + + Files: src/Makefile.am + + 2011-06-20 Rik + + doc: Add documentation for gmres, rectangle to manual + + linear-algebra/module.mk: Add gmres.m to list of functions. + gmres.m: Correct spelling in @seealso reference. + octave.texi: Add reference to new menu for 2D Geometric Shapes. + plot.txi: Add new menu for 2D Geometric Shapes. Add rectangle function. + rectangle.m: Improve DOCSTRING + aspell-octave.en.pws: Add spelling exception for PGMRES + + Files: doc/interpreter/doccheck/aspell-octave.en.pws + doc/interpreter/octave.texi doc/interpreter/plot.txi scripts/linear- + algebra/gmres.m scripts/linear-algebra/module.mk + scripts/plot/rectangle.m + + 2011-06-20 John W. Eaton + + allow concatenation of scalar structures with [] + + * op-struct.cc (DEFNDCATOP_FN (s_s_concat, ...)): Rename from + DEFNDCATOP_FN (struct_struct)). + (DEFNDCATOP_FN (s_ss_concat, ...): New function. + (DEFNDCATOP_FN (ss_s_concat, ...): New function. + (DEFNDCATOP_FN (ss_ss_concat, ...): New function. + (install_struct_ops): Install new concat functions. + + Files: src/OPERATORS/op-struct.cc + + allow assignment of [], "", and '' to sparse logical matrix + + * op-sbm-bm.cc (DEFNULLASSIGNOP_FN (null_assign, ...)): + New assignment operator function. + (install_sbm_bm_ops): Install it for various RHS types. + + Files: src/OPERATORS/op-sbm-bm.cc + + preserve type when assigning values to sparse logical + + * op-sbm-b.cc (oct_assignop_conv_and_assign): New assignment + operator function. + (install_sbm_b_ops): Install it for various RHS types. + + * op-sbm-bm.cc (oct_assignop_conv_and_assign): New assignment + operator function. + (install_sbm_bm_ops): Install it for various RHS types. + + Files: src/OPERATORS/op-sbm-b.cc src/OPERATORS/op-sbm-bm.cc + test/build_sparse_tests.sh + + 2011-06-02 Olaf Till + + Fix loading of function handles saved in binary format. Bug #33456. + + * src/ov-fcn-handle.cc (load_binary): Replace is.get() with is.read(). + + Files: src/ov-fcn-handle.cc + + 2011-06-19 Rik + + src/Makefile.am: Remove Makefile rules already implied by Automake usage. + + * src/Makefile.am: Remove bin_SCRIPTS, bin_PROGRAMS from all-local rule, + remove bin_PROGRAMS from CLEANFILES variable. + + Files: src/Makefile.am + + 2011-06-19 John W. Eaton + + * Makefile.am (CLEANFILES): Remove $(bin_PROGRAMS) + and $(bin_SCRIPTS) from the list. + (all-local): Don't depend on $(bin_PROGRAMS) and $(bin_SCRIPTS). + (install-exec-hook, uninstall-local): Delete targets. + + * src/Makefile.am (CLEANFILES): Include $(bin_PROGRAMS) + and $(bin_SCRIPTS) in the list. + (all-local): Depend on $(bin_PROGRAMS) and $(bin_SCRIPTS). + (make-version-links, remove-version-links): Handle $(bin_SCRIPTS). + + Files: Makefile.am src/Makefile.am + + 2011-06-18 Jordi Gutiérrez Hermoso + + Backout 2c54fde0f397 on stable; broke Octave-Forge packages + + Files: scripts/miscellaneous/mkoctfile.m src/mkoctfile.in + + 2011-06-18 Rik + + cauchy_cdf.m: Correction to fix to allow -Inf, Inf inputs + + * cauchy_cdf.m: Select all x values with ones(size(x)) before + excluding any values due to bad location or scale parameters. + + Files: scripts/statistics/distributions/cauchy_cdf.m + + 2011-06-17 Rik + + cauchy_cdf.m: Allow valid -Inf, Inf inputs. + + * cauchy_cdf.m: Remove unnecessary test for input x > -Inf, x < Inf. + + Files: scripts/statistics/distributions/cauchy_cdf.m + + 2011-06-16 Rik + + Fix range of sigma in normal distribution to exclude 0. + + * normcdf.m, normpdf.m: Correct 's >= 0' to 's > 0'. + + Files: scripts/statistics/distributions/normcdf.m + scripts/statistics/distributions/normpdf.m + 2011-06-15 John W. Eaton Version 3.4.1 released. diff -cNr octave-3.4.1/configure octave-3.4.2/configure *** octave-3.4.1/configure 2011-06-15 11:31:23.000000000 -0400 --- octave-3.4.2/configure 2011-06-24 10:38:35.000000000 -0400 *************** *** 1,7 **** #! /bin/sh # From configure.ac Revision: 1.603 . # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.68 for GNU Octave 3.4.1. # # Report bugs to . # --- 1,7 ---- #! /bin/sh # From configure.ac Revision: 1.603 . # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.68 for GNU Octave 3.4.2. # # Report bugs to . # *************** *** 571,578 **** # Identity of this package. PACKAGE_NAME='GNU Octave' PACKAGE_TARNAME='octave' ! PACKAGE_VERSION='3.4.1' ! PACKAGE_STRING='GNU Octave 3.4.1' PACKAGE_BUGREPORT='http://octave.org/bugs.html' PACKAGE_URL='http://www.gnu.org/software/octave/' --- 571,578 ---- # Identity of this package. PACKAGE_NAME='GNU Octave' PACKAGE_TARNAME='octave' ! PACKAGE_VERSION='3.4.2' ! PACKAGE_STRING='GNU Octave 3.4.2' PACKAGE_BUGREPORT='http://octave.org/bugs.html' PACKAGE_URL='http://www.gnu.org/software/octave/' *************** *** 1136,1145 **** NEXT_MATH_H LOCALCHARSET_TESTS_ENVIRONMENT GLIBC21 GL_GENERATE_GLOB_H_FALSE GL_GENERATE_GLOB_H_TRUE GLOB_H - HAVE_SYS_CDEFS_H NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H NEXT_SYS_TIME_H REPLACE_GETTIMEOFDAY --- 1136,1145 ---- NEXT_MATH_H LOCALCHARSET_TESTS_ENVIRONMENT GLIBC21 + HAVE_SYS_CDEFS_H GL_GENERATE_GLOB_H_FALSE GL_GENERATE_GLOB_H_TRUE GLOB_H NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H NEXT_SYS_TIME_H REPLACE_GETTIMEOFDAY *************** *** 2388,2394 **** # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures GNU Octave 3.4.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... --- 2388,2394 ---- # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures GNU Octave 3.4.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... *************** *** 2462,2468 **** if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of GNU Octave 3.4.1:";; esac cat <<\_ACEOF --- 2462,2468 ---- if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of GNU Octave 3.4.2:";; esac cat <<\_ACEOF *************** *** 2706,2712 **** test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF ! GNU Octave configure 3.4.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. --- 2706,2712 ---- test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF ! GNU Octave configure 3.4.2 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. *************** *** 3919,3925 **** This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by GNU Octave $as_me 3.4.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ --- 3919,3925 ---- This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by GNU Octave $as_me 3.4.2, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ *************** *** 4339,4345 **** OCTAVE_VERSION="$PACKAGE_VERSION" OCTAVE_API_VERSION_NUMBER="45" OCTAVE_API_VERSION="api-v$OCTAVE_API_VERSION_NUMBER+" ! OCTAVE_RELEASE_DATE="2011-06-15" OCTAVE_COPYRIGHT="Copyright (C) 2011 John W. Eaton and others." --- 4339,4345 ---- OCTAVE_VERSION="$PACKAGE_VERSION" OCTAVE_API_VERSION_NUMBER="45" OCTAVE_API_VERSION="api-v$OCTAVE_API_VERSION_NUMBER+" ! OCTAVE_RELEASE_DATE="2011-06-24" OCTAVE_COPYRIGHT="Copyright (C) 2011 John W. Eaton and others." *************** *** 4822,4828 **** # Define the identity of the package. PACKAGE='octave' ! VERSION='3.4.1' cat >>confdefs.h <<_ACEOF --- 4822,4828 ---- # Define the identity of the package. PACKAGE='octave' ! VERSION='3.4.2' cat >>confdefs.h <<_ACEOF *************** *** 9010,9032 **** /* end confdefs.h. */ $ac_includes_default int ! find_stack_direction () { ! static char *addr = 0; ! auto char dummy; ! if (addr == 0) ! { ! addr = &dummy; ! return find_stack_direction (); ! } ! else ! return (&dummy > addr) ? 1 : -1; } int ! main () { ! return find_stack_direction () < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : --- 9010,9029 ---- /* end confdefs.h. */ $ac_includes_default int ! find_stack_direction (int *addr, int depth) { ! int dir, dummy = 0; ! if (! addr) ! addr = &dummy; ! *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; ! dir = depth ? find_stack_direction (addr, depth - 1) : 0; ! return dir + dummy; } int ! main (int argc, char **argv) { ! return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : *************** *** 9683,9711 **** if test $ac_cv_func_chown = no; then HAVE_CHOWN=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" - else if test $gl_cv_func_chown_follows_symlink = no; then REPLACE_CHOWN=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" - fi if test $ac_cv_func_chown_works = no; then --- 9680,9688 ---- *************** *** 9713,9728 **** $as_echo "#define CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE 1" >>confdefs.h REPLACE_CHOWN=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" - fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether chown honors trailing slash" >&5 --- 9690,9695 ---- *************** *** 9769,9784 **** $as_echo "#define CHOWN_TRAILING_SLASH_BUG 1" >>confdefs.h REPLACE_CHOWN=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" - fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether chown always updates ctime" >&5 --- 9736,9741 ---- *************** *** 9831,9859 **** $as_echo "#define CHOWN_CHANGE_TIME_BUG 1" >>confdefs.h REPLACE_CHOWN=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" - - fi - - if test $REPLACE_CHOWN = 1 && test $ac_cv_func_fchown = no; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS fchown-stub.$ac_objext" - fi fi --- 9788,9793 ---- *************** *** 12012,12071 **** fi fi - ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default" - if test "x$ac_cv_have_decl_getenv" = xyes; then : - ac_have_decl=1 - else - ac_have_decl=0 - fi - - cat >>confdefs.h <<_ACEOF - #define HAVE_DECL_GETENV $ac_have_decl - _ACEOF if test -n "$gl_replace_getopt"; then : ! ! GETOPT_H=getopt.h ! ! $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h ! ! ! ! GNULIB_UNISTD_H_GETOPT=1 ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } --- 11946,11986 ---- fi fi + REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then : + REPLACE_GETOPT=1 ! fi ! if test $REPLACE_GETOPT = 1; then + GETOPT_H=getopt.h + $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h + GNULIB_UNISTD_H_GETOPT=1 + fi + ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default" + if test "x$ac_cv_have_decl_getenv" = xyes; then : + ac_have_decl=1 + else + ac_have_decl=0 fi + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_GETENV $ac_have_decl + _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } *************** *** 12371,12379 **** ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } ! if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file --- 12286,12294 ---- ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } ! if ${gl_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file *************** *** 12383,12389 **** # When cross-compiling, be pessimistic so we will end up using the # replacement version of lstat that checks for trailing slashes and # calls lstat a second time when necessary. ! ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext --- 12298,12304 ---- # When cross-compiling, be pessimistic so we will end up using the # replacement version of lstat that checks for trailing slashes and # calls lstat a second time when necessary. ! gl_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext *************** *** 12403,12411 **** } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ! ac_cv_func_lstat_dereferences_slashed_symlink=yes else ! ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext --- 12318,12326 ---- } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ! gl_cv_func_lstat_dereferences_slashed_symlink=yes else ! gl_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext *************** *** 12414,12444 **** else # If the 'ln -s' command failed, then we probably don't even # have an lstat function. ! ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 ! $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } ! test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF - if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext" - - fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 --- 12329,12347 ---- else # If the 'ln -s' command failed, then we probably don't even # have an lstat function. ! gl_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lstat_dereferences_slashed_symlink" >&5 ! $as_echo "$gl_cv_func_lstat_dereferences_slashed_symlink" >&6; } ! test $gl_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 *************** *** 13510,13541 **** REPLACE_MEMCHR=1 fi fi - if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext" - - - for ac_header in bp-sym.h - do : - ac_fn_c_check_header_mongrel "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default" - if test "x$ac_cv_header_bp_sym_h" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_BP_SYM_H 1 - _ACEOF - - fi - - done - - - fi ac_fn_c_check_decl "$LINENO" "memrchr" "ac_cv_have_decl_memrchr" "$ac_includes_default" if test "x$ac_cv_have_decl_memrchr" = xyes; then : --- 13413,13418 ---- *************** *** 14576,14591 **** if test "$ac_cv_header_winsock2_h" = yes; then REPLACE_SELECT=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS select.$ac_objext" - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether select supports a 0 argument" >&5 --- 14453,14458 ---- *************** *** 14635,14653 **** $as_echo "$gl_cv_func_select_supports0" >&6; } case "$gl_cv_func_select_supports0" in *yes) ;; ! *) ! REPLACE_SELECT=1 ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS select.$ac_objext" ! ! ;; esac fi --- 14502,14508 ---- $as_echo "$gl_cv_func_select_supports0" >&6; } case "$gl_cv_func_select_supports0" in *yes) ;; ! *) REPLACE_SELECT=1 ;; esac fi *************** *** 14786,14801 **** esac }; then REPLACE_UNLINK=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext" - fi --- 14641,14646 ---- *************** *** 16590,16612 **** if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext" - if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 elif test "$gl_cv_func_realpath_works" != yes; then REPLACE_REALPATH=1 fi elif test "$gl_cv_func_realpath_works" != yes; then --- 16435,16451 ---- if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 elif test "$gl_cv_func_realpath_works" != yes; then REPLACE_REALPATH=1 fi elif test "$gl_cv_func_realpath_works" != yes; then + REPLACE_CANONICALIZE_FILE_NAME=1 + REPLACE_REALPATH=1 + fi + if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then *************** *** 16614,16625 **** - gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext" ! REPLACE_REALPATH=1 ! REPLACE_CANONICALIZE_FILE_NAME=1 ! fi cat >>confdefs.h <<_ACEOF --- 16453,16462 ---- ! gl_LIBOBJS="$gl_LIBOBJS canonicalize-lgpl.$ac_objext" + fi cat >>confdefs.h <<_ACEOF *************** *** 16683,16689 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_arbitrary_file_name_length_limit" >&5 $as_echo "$gl_cv_have_arbitrary_file_name_length_limit" >&6; } ! if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then --- 16520,16526 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_arbitrary_file_name_length_limit" >&5 $as_echo "$gl_cv_have_arbitrary_file_name_length_limit" >&6; } ! if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then *************** *** 16698,16731 **** : ! fi ! GNULIB_CHOWN=1 - $as_echo "#define GNULIB_TEST_CHOWN 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS cloexec.$ac_objext" --- 16535,16579 ---- : ! fi + if test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1; then ! ! ! gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext" ! ! fi ! if test $REPLACE_CHOWN = 1 && test $ac_cv_func_fchown = no; then + gl_LIBOBJS="$gl_LIBOBJS fchown-stub.$ac_objext" + + fi + GNULIB_CHOWN=1 + + + $as_echo "#define GNULIB_TEST_CHOWN 1" >>confdefs.h *************** *** 16935,16951 **** - - - - - - - gl_LIBOBJS="$gl_LIBOBJS md5.$ac_objext" - - - - : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for d_ino member in directory struct" >&5 --- 16783,16788 ---- *************** *** 17205,17215 **** $as_echo "$gl_cv_func_dirfd_macro" >&6; } # Use the replacement only if we have no function or macro with that name. ! if test $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro = no,no; then if test $ac_cv_have_decl_dirfd = yes; then # If the system declares dirfd already, let's declare rpl_dirfd instead. REPLACE_DIRFD=1 fi --- 17042,17055 ---- $as_echo "$gl_cv_func_dirfd_macro" >&6; } # Use the replacement only if we have no function or macro with that name. ! if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then if test $ac_cv_have_decl_dirfd = yes; then # If the system declares dirfd already, let's declare rpl_dirfd instead. REPLACE_DIRFD=1 fi + fi + + if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then *************** *** 17220,17240 **** gl_LIBOBJS="$gl_LIBOBJS dirfd.$ac_objext" ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get the file descriptor associated with an open DIR*" >&5 $as_echo_n "checking how to get the file descriptor associated with an open DIR*... " >&6; } if ${gl_cv_sys_dir_fd_member_name+:} false; then : $as_echo_n "(cached) " >&6 else ! dirfd_save_CFLAGS=$CFLAGS ! for ac_expr in d_fd dd_fd; do ! CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" ! cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ ! #include ! #include int main () { --- 17060,17081 ---- gl_LIBOBJS="$gl_LIBOBJS dirfd.$ac_objext" ! ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get the file descriptor associated with an open DIR*" >&5 $as_echo_n "checking how to get the file descriptor associated with an open DIR*... " >&6; } if ${gl_cv_sys_dir_fd_member_name+:} false; then : $as_echo_n "(cached) " >&6 else ! dirfd_save_CFLAGS=$CFLAGS ! for ac_expr in d_fd dd_fd; do ! CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" ! cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ ! #include ! #include int main () { *************** *** 17248,17275 **** fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ! CFLAGS=$dirfd_save_CFLAGS ! test "$dir_fd_found" = yes && break ! done ! test "$dir_fd_found" = yes || ac_expr=no_such_member ! gl_cv_sys_dir_fd_member_name=$ac_expr fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_dir_fd_member_name" >&5 $as_echo "$gl_cv_sys_dir_fd_member_name" >&6; } ! if test $gl_cv_sys_dir_fd_member_name != no_such_member; then cat >>confdefs.h <<_ACEOF #define DIR_FD_MEMBER_NAME $gl_cv_sys_dir_fd_member_name _ACEOF - fi - fi --- 17089,17116 ---- fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ! CFLAGS=$dirfd_save_CFLAGS ! test "$dir_fd_found" = yes && break ! done ! test "$dir_fd_found" = yes || ac_expr=no_such_member ! gl_cv_sys_dir_fd_member_name=$ac_expr fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_dir_fd_member_name" >&5 $as_echo "$gl_cv_sys_dir_fd_member_name" >&6; } ! if test $gl_cv_sys_dir_fd_member_name != no_such_member; then cat >>confdefs.h <<_ACEOF #define DIR_FD_MEMBER_NAME $gl_cv_sys_dir_fd_member_name _ACEOF fi + fi + *************** *** 17290,17326 **** - - - - gl_LIBOBJS="$gl_LIBOBJS basename-lgpl.$ac_objext" - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS dirname-lgpl.$ac_objext" - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS stripslash.$ac_objext" - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5 $as_echo_n "checking whether // is distinct from /... " >&6; } if ${gl_cv_double_slash_root+:} false; then : --- 17131,17136 ---- *************** *** 17473,17492 **** ! ! ! ! ! ! ! ! ! ! ! ! ! ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 $as_echo_n "checking for error_at_line... " >&6; } if ${ac_cv_lib_error_at_line+:} false; then : $as_echo_n "(cached) " >&6 --- 17283,17289 ---- ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5 $as_echo_n "checking for error_at_line... " >&6; } if ${ac_cv_lib_error_at_line+:} false; then : $as_echo_n "(cached) " >&6 *************** *** 17512,17519 **** fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 $as_echo "$ac_cv_lib_error_at_line" >&6; } - if test $ac_cv_lib_error_at_line = no; then --- 17309,17316 ---- fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5 $as_echo "$ac_cv_lib_error_at_line" >&6; } + if test $ac_cv_lib_error_at_line = no; then *************** *** 17521,17536 **** - gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext" ! fi : ! XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format" --- 17318,17332 ---- ! gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext" : ! fi XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format" *************** *** 18119,18144 **** if test $ac_cv_func_fdopendir = no; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext" - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS fdopendir.$ac_objext" - HAVE_FDOPENDIR=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fdopendir works" >&5 --- 17915,17920 ---- *************** *** 18186,18191 **** --- 17962,17971 ---- $as_echo "$gl_cv_func_fdopendir_works" >&6; } if test "$gl_cv_func_fdopendir_works" != yes; then REPLACE_FDOPENDIR=1 + fi + fi + + if test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1; then *************** *** 18196,18209 **** gl_LIBOBJS="$gl_LIBOBJS fdopendir.$ac_objext" ! fi ! fi GNULIB_FDOPENDIR=1 --- 17976,17999 ---- gl_LIBOBJS="$gl_LIBOBJS fdopendir.$ac_objext" ! fi ! if test $HAVE_FDOPENDIR = 0; then ! ! + gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext" + + fi + + + + + GNULIB_FDOPENDIR=1 *************** *** 18223,18228 **** --- 18013,18019 ---- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fflush works on input streams" >&5 $as_echo_n "checking whether fflush works on input streams... " >&6; } if ${gl_cv_func_fflush_stdin+:} false; then : *************** *** 18297,18303 **** --- 18088,18097 ---- $as_echo "$gl_cv_func_fflush_stdin" >&6; } if test $gl_cv_func_fflush_stdin = no; then + REPLACE_FFLUSH=1 + fi + if test $REPLACE_FFLUSH = 1; then *************** *** 18309,18322 **** gl_LIBOBJS="$gl_LIBOBJS fflush.$ac_objext" - REPLACE_FFLUSH=1 - : ! ! fi ! cat >>confdefs.h <<_ACEOF --- 18103,18112 ---- gl_LIBOBJS="$gl_LIBOBJS fflush.$ac_objext" : ! fi cat >>confdefs.h <<_ACEOF *************** *** 18349,18379 **** - gl_LIBOBJS="$gl_LIBOBJS filemode.$ac_objext" - - - - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS filenamecat-lgpl.$ac_objext" - - - - - - - FLOAT_H= case "$host_os" in ! beos* | openbsd* | mirbsd*) FLOAT_H=float.h --- 18139,18184 ---- FLOAT_H= + REPLACE_FLOAT_LDBL=0 case "$host_os" in ! aix* | beos* | openbsd* | mirbsd* | irix*) FLOAT_H=float.h + ;; + freebsd*) + case "$host_cpu" in + i[34567]86 ) + FLOAT_H=float.h + ;; + x86_64 ) + # On x86_64 systems, the C compiler may still be generating + # 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #if defined __LP64__ || defined __x86_64__ || defined __amd64__ + yes + #endif + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + + else + FLOAT_H=float.h + fi + rm -f conftest* + + ;; + esac + ;; + esac + case "$host_os" in + aix* | freebsd*) + if test -n "$FLOAT_H"; then + REPLACE_FLOAT_LDBL=1 + fi + ;; + esac + if test -n "$FLOAT_H"; then *************** *** 18427,18434 **** ! ;; ! esac if test -n "$FLOAT_H"; then GL_GENERATE_FLOAT_H_TRUE= --- 18232,18238 ---- ! fi if test -n "$FLOAT_H"; then GL_GENERATE_FLOAT_H_TRUE= *************** *** 18439,18444 **** --- 18243,18260 ---- fi + if test $REPLACE_FLOAT_LDBL = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS float.$ac_objext" + + fi *************** *** 18508,18527 **** fi if test $REPLACE_FLOOR = 1; then - gl_LIBOBJS="$gl_LIBOBJS floor.$ac_objext" - FLOOR_LIBM= - fi --- 18324,18345 ---- fi if test $REPLACE_FLOOR = 1; then + FLOOR_LIBM= + fi + if test $REPLACE_FLOOR = 1; then + gl_LIBOBJS="$gl_LIBOBJS floor.$ac_objext" + fi *************** *** 18667,18672 **** --- 18485,18502 ---- rm -f "$gl_source_base/fnmatch.h" else FNMATCH_H=fnmatch.h + fi + + if test -n "$FNMATCH_H"; then + GL_GENERATE_FNMATCH_H_TRUE= + GL_GENERATE_FNMATCH_H_FALSE='#' + else + GL_GENERATE_FNMATCH_H_TRUE='#' + GL_GENERATE_FNMATCH_H_FALSE= + fi + + + if test -n "$FNMATCH_H"; then *************** *** 18678,18689 **** gl_LIBOBJS="$gl_LIBOBJS fnmatch.$ac_objext" cat >>confdefs.h <<_ACEOF #define fnmatch ${gl_fnmatch_required_lowercase}_fnmatch _ACEOF ! ac_fn_c_check_decl "$LINENO" "isblank" "ac_cv_have_decl_isblank" "#include " if test "x$ac_cv_have_decl_isblank" = xyes; then : ac_have_decl=1 --- 18508,18520 ---- gl_LIBOBJS="$gl_LIBOBJS fnmatch.$ac_objext" + cat >>confdefs.h <<_ACEOF #define fnmatch ${gl_fnmatch_required_lowercase}_fnmatch _ACEOF ! ac_fn_c_check_decl "$LINENO" "isblank" "ac_cv_have_decl_isblank" "#include " if test "x$ac_cv_have_decl_isblank" = xyes; then : ac_have_decl=1 *************** *** 18697,18717 **** - fi - if test -n "$FNMATCH_H"; then - GL_GENERATE_FNMATCH_H_TRUE= - GL_GENERATE_FNMATCH_H_FALSE='#' - else - GL_GENERATE_FNMATCH_H_TRUE='#' - GL_GENERATE_FNMATCH_H_FALSE= fi - - ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include " if test "x$ac_cv_have_decl_fpurge" = xyes; then : --- 18528,18539 ---- *************** *** 18725,18730 **** --- 18547,18553 ---- _ACEOF if test "x$ac_cv_func_fpurge" = xyes; then + HAVE_FPURGE=1 # Detect BSD bug. Only cygwin 1.7 is known to be immune. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fpurge works" >&5 $as_echo_n "checking whether fpurge works... " >&6; } *************** *** 18775,18793 **** $as_echo "$gl_cv_func_fpurge_works" >&6; } if test "x$gl_cv_func_fpurge_works" != xyes; then REPLACE_FPURGE=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS fpurge.$ac_objext" - fi else --- 18598,18612 ---- $as_echo "$gl_cv_func_fpurge_works" >&6; } if test "x$gl_cv_func_fpurge_works" != xyes; then REPLACE_FPURGE=1 fi else + HAVE_FPURGE=0 + fi + if test "x$ac_cv_have_decl_fpurge" = xno; then + HAVE_DECL_FPURGE=0 + fi + if test $HAVE_FPURGE = 0 || test $REPLACE_FPURGE = 1; then *************** *** 18795,18807 **** - gl_LIBOBJS="$gl_LIBOBJS fpurge.$ac_objext" ! fi ! if test "x$ac_cv_have_decl_fpurge" = xno; then ! HAVE_DECL_FPURGE=0 ! fi --- 18614,18623 ---- ! gl_LIBOBJS="$gl_LIBOBJS fpurge.$ac_objext" + fi *************** *** 19546,19552 **** case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in *yes,yes,no) ;; *) ! REPLACE_GETCWD=1 --- 19362,19371 ---- case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in *yes,yes,no) ;; *) ! REPLACE_GETCWD=1;; ! esac ! ! if test $REPLACE_GETCWD = 1; then *************** *** 19561,19569 **** : - ;; - esac cat >>confdefs.h <<_ACEOF --- 19380,19387 ---- : + fi cat >>confdefs.h <<_ACEOF *************** *** 19594,19600 **** --- 19412,19421 ---- *yes) ;; *) REPLACE_GETCWD=1 + ;; + esac + if test $REPLACE_GETCWD = 1; then *************** *** 19602,19612 **** - gl_LIBOBJS="$gl_LIBOBJS getcwd-lgpl.$ac_objext" ! ;; ! esac --- 19423,19432 ---- ! gl_LIBOBJS="$gl_LIBOBJS getcwd-lgpl.$ac_objext" + fi *************** *** 19627,19633 **** --- 19447,19455 ---- if test $ac_cv_func_getdtablesize != yes; then HAVE_GETDTABLESIZE=0 + fi + if test $HAVE_GETDTABLESIZE = 0; then *************** *** 19635,19644 **** - gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext" ! fi --- 19457,19466 ---- ! gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext" + fi *************** *** 19739,19770 **** if test "$ac_cv_func_gethostname" = no; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS gethostname.$ac_objext" - HAVE_GETHOSTNAME=0 - - if test "$gl_cv_w32_gethostname" != "yes"; then - for ac_func in uname - do : - ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" - if test "x$ac_cv_func_uname" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_UNAME 1 - _ACEOF - - fi - done - - fi - fi --- 19561,19567 ---- *************** *** 19829,19834 **** --- 19626,19658 ---- fi + if test $HAVE_GETHOSTNAME = 0; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS gethostname.$ac_objext" + + + if test "$gl_cv_w32_gethostname" != "yes"; then + for ac_func in uname + do : + ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" + if test "x$ac_cv_func_uname" = xyes; then : + cat >>confdefs.h <<_ACEOF + #define HAVE_UNAME 1 + _ACEOF + + fi + done + + fi + + fi *************** *** 19917,19924 **** *) REPLACE_GETLOGIN_R=1 ;; esac fi - if test $HAVE_GETLOGIN_R = 0 || test $REPLACE_GETLOGIN_R = 1; then --- 19741,19748 ---- *) REPLACE_GETLOGIN_R=1 ;; esac fi + if test $HAVE_GETLOGIN_R = 0 || test $REPLACE_GETLOGIN_R = 1; then *************** *** 19926,19938 **** - gl_LIBOBJS="$gl_LIBOBJS getlogin_r.$ac_objext" - fi --- 19750,19762 ---- + gl_LIBOBJS="$gl_LIBOBJS getlogin_r.$ac_objext" + fi *************** *** 19953,20007 **** - $as_echo "#define GNULIB_TEST_GETOPT_GNU 1" >>confdefs.h - if test -n "$gl_replace_getopt"; then : - GETOPT_H=getopt.h - $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h - GNULIB_UNISTD_H_GETOPT=1 - gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" ! gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" - fi --- 19777,19838 ---- + if test $REPLACE_GETOPT = 1; then + gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" + gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" + fi + $as_echo "#define GNULIB_TEST_GETOPT_GNU 1" >>confdefs.h + REPLACE_GETOPT=0 + if test -n "$gl_replace_getopt"; then : + REPLACE_GETOPT=1 ! fi + if test $REPLACE_GETOPT = 1; then + GETOPT_H=getopt.h + $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h + GNULIB_UNISTD_H_GETOPT=1 + fi + if test $REPLACE_GETOPT = 1; then *************** *** 20010,20018 **** ! gl_gettimeofday_timezone=void ! if test $ac_cv_func_gettimeofday != yes; then ! HAVE_GETTIMEOFDAY=0 --- 19841,19847 ---- ! gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" *************** *** 20021,20053 **** ! gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext" - for ac_header in sys/timeb.h - do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" - if test "x$ac_cv_header_sys_timeb_h" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_SYS_TIMEB_H 1 - _ACEOF fi - done - for ac_func in _ftime - do : - ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime" - if test "x$ac_cv_func__ftime" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE__FTIME 1 - _ACEOF - fi - done else --- 19850,19873 ---- ! ! gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" ! fi + + + + gl_gettimeofday_timezone=void + if test $ac_cv_func_gettimeofday != yes; then + HAVE_GETTIMEOFDAY=0 else *************** *** 20101,20141 **** REPLACE_GETTIMEOFDAY=1 - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext" - - - for ac_header in sys/timeb.h - do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" - if test "x$ac_cv_header_sys_timeb_h" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE_SYS_TIMEB_H 1 - _ACEOF - - fi - - done - - for ac_func in _ftime - do : - ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime" - if test "x$ac_cv_func__ftime" = xyes; then : - cat >>confdefs.h <<_ACEOF - #define HAVE__FTIME 1 - _ACEOF - - fi - done - - - $as_echo "#define gmtime rpl_gmtime" >>confdefs.h --- 19921,19926 ---- *************** *** 20206,20211 **** --- 19991,20006 ---- gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 + fi + + fi + + cat >>confdefs.h <<_ACEOF + #define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone + _ACEOF + + + if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then *************** *** 20241,20254 **** done ! fi ! fi ! ! cat >>confdefs.h <<_ACEOF ! #define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone ! _ACEOF ! ! --- 20036,20042 ---- done ! fi *************** *** 20359,20365 **** rm -f conf$$-globtest ! if test -n "$GLOB_H"; then --- 20147,20163 ---- rm -f conf$$-globtest ! ! if test -n "$GLOB_H"; then ! GL_GENERATE_GLOB_H_TRUE= ! GL_GENERATE_GLOB_H_FALSE='#' ! else ! GL_GENERATE_GLOB_H_TRUE='#' ! GL_GENERATE_GLOB_H_FALSE= ! fi ! ! ! if test -n "$GLOB_H"; then *************** *** 20378,20406 **** fi - fi - - if test -n "$GLOB_H"; then - GL_GENERATE_GLOB_H_TRUE= - GL_GENERATE_GLOB_H_FALSE='#' - else - GL_GENERATE_GLOB_H_TRUE='#' - GL_GENERATE_GLOB_H_FALSE= fi - - - - - - - - - - for ac_func in lchown do : ac_fn_c_check_func "$LINENO" "lchown" "ac_cv_func_lchown" --- 20176,20186 ---- *************** *** 20409,20427 **** #define HAVE_LCHOWN 1 _ACEOF - else - - gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext" - fi done - if test $ac_cv_func_lchown = no; then HAVE_LCHOWN=0 elif test "$gl_cv_func_chown_slash_works" != yes \ || test "$gl_cv_func_chown_ctime_works" != yes; then --- 20189,20205 ---- #define HAVE_LCHOWN 1 _ACEOF fi done if test $ac_cv_func_lchown = no; then HAVE_LCHOWN=0 elif test "$gl_cv_func_chown_slash_works" != yes \ || test "$gl_cv_func_chown_ctime_works" != yes; then + REPLACE_LCHOWN=1 + fi + if test $HAVE_LCHOWN = 0 || test $REPLACE_LCHOWN = 1; then *************** *** 20429,20439 **** - gl_LIBOBJS="$gl_LIBOBJS lchown.$ac_objext" ! REPLACE_LCHOWN=1 ! fi --- 20207,20216 ---- ! gl_LIBOBJS="$gl_LIBOBJS lchown.$ac_objext" + fi *************** *** 20454,20469 **** if test $ac_cv_func_link = no; then HAVE_LINK=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS link.$ac_objext" - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether link handles trailing slash correctly" >&5 $as_echo_n "checking whether link handles trailing slash correctly... " >&6; } --- 20231,20236 ---- *************** *** 20513,20519 **** --- 20280,20289 ---- $as_echo "$gl_cv_func_link_works" >&6; } if test "$gl_cv_func_link_works" != yes; then REPLACE_LINK=1 + fi + fi + if test $HAVE_LINK = 0 || test $REPLACE_LINK = 1; then *************** *** 20521,20531 **** - gl_LIBOBJS="$gl_LIBOBJS link.$ac_objext" ! fi ! fi --- 20291,20300 ---- ! gl_LIBOBJS="$gl_LIBOBJS link.$ac_objext" + fi *************** *** 20611,20635 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lseek_pipe" >&5 $as_echo "$gl_cv_func_lseek_pipe" >&6; } if test $gl_cv_func_lseek_pipe = no; then - gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext" - - - REPLACE_LSEEK=1 - - $as_echo "#define LSEEK_PIPE_BROKEN 1" >>confdefs.h ! fi --- 20380,20403 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lseek_pipe" >&5 $as_echo "$gl_cv_func_lseek_pipe" >&6; } if test $gl_cv_func_lseek_pipe = no; then + REPLACE_LSEEK=1 + $as_echo "#define LSEEK_PIPE_BROKEN 1" >>confdefs.h + fi + if test $REPLACE_LSEEK = 1; then ! gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext" + fi *************** *** 20650,20664 **** if test $ac_cv_func_lstat = yes; then ! if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then ! REPLACE_LSTAT=1 fi - # Prerequisites of lib/lstat.c. - else HAVE_LSTAT=0 fi --- 20418,20446 ---- if test $ac_cv_func_lstat = yes; then ! if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then ! REPLACE_LSTAT=1 fi else HAVE_LSTAT=0 fi + if test $REPLACE_LSTAT = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext" + + + + : + + fi *************** *** 20682,20688 **** --- 20464,20473 ---- $as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h else + REPLACE_MALLOC=1 + fi + if test $REPLACE_MALLOC = 1; then *************** *** 20693,20702 **** gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" ! REPLACE_MALLOC=1 ! ! fi ! --- 20478,20484 ---- gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" ! fi *************** *** 21425,21431 **** esac fi fi ! if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then --- 21207,21214 ---- esac fi fi ! ! if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then *************** *** 21439,21446 **** : ! fi ! --- 21222,21228 ---- : ! fi *************** *** 21624,21630 **** esac fi fi ! if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then --- 21406,21413 ---- esac fi fi ! ! if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then *************** *** 21638,21645 **** : ! fi ! --- 21421,21427 ---- : ! fi *************** *** 21936,21942 **** esac fi fi ! if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then --- 21718,21725 ---- esac fi fi ! ! if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then *************** *** 21960,21967 **** : ! fi ! --- 21743,21749 ---- : ! fi *************** *** 21978,22004 **** - GNULIB_MEMCHR=1 ! $as_echo "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h --- 21760,21804 ---- + if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then + gl_LIBOBJS="$gl_LIBOBJS memchr.$ac_objext" ! for ac_header in bp-sym.h ! do : ! ac_fn_c_check_header_mongrel "$LINENO" "bp-sym.h" "ac_cv_header_bp_sym_h" "$ac_includes_default" ! if test "x$ac_cv_header_bp_sym_h" = xyes; then : ! cat >>confdefs.h <<_ACEOF ! #define HAVE_BP_SYM_H 1 ! _ACEOF + fi + + done + + + fi + GNULIB_MEMCHR=1 + + + $as_echo "#define GNULIB_TEST_MEMCHR 1" >>confdefs.h + *************** *** 22015,22058 **** #define HAVE_MEMPCPY 1 _ACEOF - else - - gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext" - fi done - if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 ! : - fi - GNULIB_MEMPCPY=1 - $as_echo "#define GNULIB_TEST_MEMPCPY 1" >>confdefs.h ! if test $ac_cv_have_decl_memrchr = no; then ! HAVE_DECL_MEMRCHR=0 ! fi --- 21815,21854 ---- #define HAVE_MEMPCPY 1 _ACEOF fi done if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 + fi ! if test $HAVE_MEMPCPY = 0; then + gl_LIBOBJS="$gl_LIBOBJS mempcpy.$ac_objext" + : + fi + GNULIB_MEMPCPY=1 ! ! $as_echo "#define GNULIB_TEST_MEMPCPY 1" >>confdefs.h *************** *** 22061,22066 **** --- 21857,21865 ---- + if test $ac_cv_have_decl_memrchr = no; then + HAVE_DECL_MEMRCHR=0 + fi for ac_func in memrchr do : *************** *** 22070,22092 **** #define HAVE_MEMRCHR 1 _ACEOF - else - - gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext" - fi done ! if test $ac_cv_func_memrchr = no; then ! : ! fi GNULIB_MEMRCHR=1 --- 21869,21896 ---- #define HAVE_MEMRCHR 1 _ACEOF fi done ! if test $ac_cv_func_memrchr = no; then + + + gl_LIBOBJS="$gl_LIBOBJS memrchr.$ac_objext" + + : + fi + + + + + GNULIB_MEMRCHR=1 *************** *** 22134,22154 **** rm -rf conftest.dir ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mkdir_trailing_slash_works" >&5 ! $as_echo "$gl_cv_func_mkdir_trailing_slash_works" >&6; } ! if test "$gl_cv_func_mkdir_trailing_slash_works" != yes; then ! REPLACE_MKDIR=1 ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS mkdir.$ac_objext" ! fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir handles trailing dot" >&5 --- 21938,21948 ---- rm -rf conftest.dir ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_mkdir_trailing_slash_works" >&5 ! $as_echo "$gl_cv_func_mkdir_trailing_slash_works" >&6; } ! if test "$gl_cv_func_mkdir_trailing_slash_works" != yes; then ! REPLACE_MKDIR=1 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir handles trailing dot" >&5 *************** *** 22192,22226 **** if test "$gl_cv_func_mkdir_trailing_dot_works" != yes; then REPLACE_MKDIR=1 - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS mkdir.$ac_objext" - - $as_echo "#define FUNC_MKDIR_DOT_BUG 1" >>confdefs.h fi - if test $ac_cv_func_mkfifo = no; then - HAVE_MKFIFO=0 - gl_LIBOBJS="$gl_LIBOBJS mkfifo.$ac_objext" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkfifo rejects trailing slashes" >&5 --- 21986,22012 ---- if test "$gl_cv_func_mkdir_trailing_dot_works" != yes; then REPLACE_MKDIR=1 $as_echo "#define FUNC_MKDIR_DOT_BUG 1" >>confdefs.h fi + if test $REPLACE_MKDIR = 1; then + gl_LIBOBJS="$gl_LIBOBJS mkdir.$ac_objext" + fi + if test $ac_cv_func_mkfifo = no; then + HAVE_MKFIFO=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkfifo rejects trailing slashes" >&5 *************** *** 22273,22279 **** --- 22059,22068 ---- $as_echo "#define MKFIFO_TRAILING_SLASH_BUG 1" >>confdefs.h REPLACE_MKFIFO=1 + fi + fi + if test $HAVE_MKFIFO = 0 || test $REPLACE_MKFIFO = 1; then *************** *** 22281,22291 **** - gl_LIBOBJS="$gl_LIBOBJS mkfifo.$ac_objext" ! fi ! fi --- 22070,22079 ---- ! gl_LIBOBJS="$gl_LIBOBJS mkfifo.$ac_objext" + fi *************** *** 22370,22391 **** $as_echo "$gl_cv_func_working_mkstemp" >&6; } if test "$gl_cv_func_working_mkstemp" != yes; then REPLACE_MKSTEMP=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext" - - - fi else HAVE_MKSTEMP=0 --- 22158,22169 ---- $as_echo "$gl_cv_func_working_mkstemp" >&6; } if test "$gl_cv_func_working_mkstemp" != yes; then REPLACE_MKSTEMP=1 fi else HAVE_MKSTEMP=0 + fi + if test $HAVE_MKSTEMP = 0 || test $REPLACE_MKSTEMP = 1; then *************** *** 22393,22404 **** - gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext" - fi --- 22171,22182 ---- + gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext" + fi *************** *** 22419,22437 **** ! if test $APPLE_UNIVERSAL_BUILD = 1; then ! # A universal build on Apple MacOS X platforms. ! # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. ! # But we need a configuration result that is valid in both modes. ! ac_cv_func_working_mktime=no ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } ! if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ! ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ --- 22197,22216 ---- ! ! if test $APPLE_UNIVERSAL_BUILD = 1; then ! # A universal build on Apple MacOS X platforms. ! # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. ! # But we need a configuration result that is valid in both modes. ! gl_cv_func_working_mktime=no ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } ! if ${gl_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ! gl_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ *************** *** 22628,22666 **** } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ! ac_cv_func_working_mktime=yes else ! ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 ! $as_echo "$ac_cv_func_working_mktime" >&6; } ! if test $ac_cv_func_working_mktime = no; then - gl_LIBOBJS="$gl_LIBOBJS mktime.$ac_objext" - fi ! if test $ac_cv_func_working_mktime = no; then ! REPLACE_MKTIME=1 - else - REPLACE_MKTIME=0 - fi --- 22407,22446 ---- } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ! gl_cv_func_working_mktime=yes else ! gl_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi + fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_mktime" >&5 ! $as_echo "$gl_cv_func_working_mktime" >&6; } + if test $gl_cv_func_working_mktime = no; then + REPLACE_MKTIME=1 + else + REPLACE_MKTIME=0 + fi + if test $REPLACE_MKTIME = 1; then ! gl_LIBOBJS="$gl_LIBOBJS mktime.$ac_objext" + fi *************** *** 22854,22861 **** HAVE_NANOSLEEP=0 fi LIBS=$nanosleep_save_libs - if test $HAVE_NANOSLEEP = 0 || test $REPLACE_NANOSLEEP = 1; then --- 22634,22641 ---- HAVE_NANOSLEEP=0 fi LIBS=$nanosleep_save_libs + if test $HAVE_NANOSLEEP = 0 || test $REPLACE_NANOSLEEP = 1; then *************** *** 22863,22878 **** - gl_LIBOBJS="$gl_LIBOBJS nanosleep.$ac_objext" - fi --- 22643,22658 ---- + gl_LIBOBJS="$gl_LIBOBJS nanosleep.$ac_objext" + fi *************** *** 23112,23163 **** - - - - - - - gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - for ac_func in fchmodat fstatat mkdirat openat unlinkat do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --- 22892,22897 ---- *************** *** 23167,23233 **** #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - else - - gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext" - fi done ! ! case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in yes+yes) # GNU/Hurd has unlinkat, but it has the same bug as unlink. if test $REPLACE_UNLINK = 1; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext" - REPLACE_UNLINKAT=1 fi ;; yes+*) # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS openat.$ac_objext" - REPLACE_OPENAT=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext" - REPLACE_FSTATAT=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext" - REPLACE_UNLINKAT=1 ;; *) --- 22901,22922 ---- #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ! case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in yes+yes) # GNU/Hurd has unlinkat, but it has the same bug as unlink. if test $REPLACE_UNLINK = 1; then REPLACE_UNLINKAT=1 fi ;; yes+*) # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. REPLACE_OPENAT=1 REPLACE_FSTATAT=1 REPLACE_UNLINKAT=1 ;; *) *************** *** 23370,23376 **** HAVE_FCHOWNAT=0 fi - if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then --- 23059,23064 ---- *************** *** 23379,23391 **** - gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext" ! fi ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include --- 23067,23150 ---- ! ! gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext" ! ! if test $HAVE_FCHMODAT = 0; then ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS fchmodat.$ac_objext" ! ! fi ! if test $ac_cv_func_fstatat = no || test $REPLACE_FSTATAT = 1; then ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext" ! ! fi ! if test $HAVE_MKDIRAT = 0; then ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS mkdirat.$ac_objext" ! ! fi ! if test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1; then ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS openat.$ac_objext" ! ! fi ! if test $ac_cv_func_unlinkat = no || test $REPLACE_UNLINKAT = 1; then ! ! ! ! + gl_LIBOBJS="$gl_LIBOBJS unlinkat.$ac_objext" + + fi + if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext" + + fi + + ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include *************** *** 23417,23435 **** if test $ac_cv_func_readlink = no; then HAVE_READLINK=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext" - - - : - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readlink signature is correct" >&5 $as_echo_n "checking whether readlink signature is correct... " >&6; } --- 23176,23181 ---- *************** *** 23500,23517 **** $as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h REPLACE_READLINK=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext" - elif test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 --- 23246,23257 ---- $as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h REPLACE_READLINK=1 elif test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 + fi + fi + + if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then *************** *** 23522,23530 **** gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext" - fi - fi --- 23262,23271 ---- gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext" + : + + fi *************** *** 23548,23554 **** --- 23289,23298 ---- $as_echo "#define HAVE_REALLOC_POSIX 1" >>confdefs.h else + REPLACE_REALLOC=1 + fi + if test $REPLACE_REALLOC = 1; then *************** *** 23559,23568 **** gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" ! REPLACE_REALLOC=1 ! ! fi ! --- 23303,23309 ---- gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" ! fi *************** *** 23637,23652 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_rename_slash_dst_works" >&5 $as_echo "$gl_cv_func_rename_slash_dst_works" >&6; } if test "x$gl_cv_func_rename_slash_dst_works" != xyes; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext" - REPLACE_RENAME=1 $as_echo "#define RENAME_TRAILING_SLASH_DEST_BUG 1" >>confdefs.h --- 23378,23383 ---- *************** *** 23707,23722 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_rename_slash_src_works" >&5 $as_echo "$gl_cv_func_rename_slash_src_works" >&6; } if test "x$gl_cv_func_rename_slash_src_works" != xyes; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext" - REPLACE_RENAME=1 $as_echo "#define RENAME_TRAILING_SLASH_SOURCE_BUG 1" >>confdefs.h --- 23438,23443 ---- *************** *** 23777,23792 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_rename_link_works" >&5 $as_echo "$gl_cv_func_rename_link_works" >&6; } if test "x$gl_cv_func_rename_link_works" != xyes; then - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext" - REPLACE_RENAME=1 $as_echo "#define RENAME_HARD_LINK_BUG 1" >>confdefs.h --- 23498,23503 ---- *************** *** 23839,23860 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_rename_dest_works" >&5 $as_echo "$gl_cv_func_rename_dest_works" >&6; } if test "x$gl_cv_func_rename_dest_works" != xyes; then - gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext" - REPLACE_RENAME=1 - $as_echo "#define RENAME_DEST_EXISTS_BUG 1" >>confdefs.h ! fi --- 23550,23573 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_rename_dest_works" >&5 $as_echo "$gl_cv_func_rename_dest_works" >&6; } if test "x$gl_cv_func_rename_dest_works" != xyes; then + REPLACE_RENAME=1 + $as_echo "#define RENAME_DEST_EXISTS_BUG 1" >>confdefs.h + fi + if test $REPLACE_RENAME = 1; then ! gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext" + fi *************** *** 23919,23925 **** --- 23632,23640 ---- $as_echo "$gl_cv_func_rmdir_works" >&6; } if test x"$gl_cv_func_rmdir_works" != xyes; then REPLACE_RMDIR=1 + fi + if test $REPLACE_RMDIR = 1; then *************** *** 23927,23936 **** - gl_LIBOBJS="$gl_LIBOBJS rmdir.$ac_objext" ! fi --- 23642,23651 ---- ! gl_LIBOBJS="$gl_LIBOBJS rmdir.$ac_objext" + fi *************** *** 24059,24074 **** if test $HAVE_DECL_ROUND = 0 || test $REPLACE_ROUND = 1; then - - - - - - - gl_LIBOBJS="$gl_LIBOBJS round.$ac_objext" - - - saved_as_echo_n="$as_echo_n" as_echo_n=':' if ${gl_cv_func_floor_libm+:} false; then : --- 23774,23779 ---- *************** *** 24201,24206 **** --- 23906,23923 ---- fi + if test $HAVE_DECL_ROUND = 0 || test $REPLACE_ROUND = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS round.$ac_objext" + + fi *************** *** 24324,24340 **** HAVE_DECL_ROUNDF=0 fi if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then ! ! ! ! ! ! ! ! ! gl_LIBOBJS="$gl_LIBOBJS roundf.$ac_objext" ! ! ac_fn_c_check_decl "$LINENO" "ceilf" "ac_cv_have_decl_ceilf" "#include " if test "x$ac_cv_have_decl_ceilf" = xyes; then : ac_have_decl=1 --- 24041,24047 ---- HAVE_DECL_ROUNDF=0 fi if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then ! ac_fn_c_check_decl "$LINENO" "ceilf" "ac_cv_have_decl_ceilf" "#include " if test "x$ac_cv_have_decl_ceilf" = xyes; then : ac_have_decl=1 *************** *** 24503,24533 **** fi - GNULIB_ROUNDF=1 - $as_echo "#define GNULIB_TEST_ROUNDF 1" >>confdefs.h - gl_LIBOBJS="$gl_LIBOBJS save-cwd.$ac_objext" --- 24210,24242 ---- fi + if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then + gl_LIBOBJS="$gl_LIBOBJS roundf.$ac_objext" + fi + GNULIB_ROUNDF=1 + $as_echo "#define GNULIB_TEST_ROUNDF 1" >>confdefs.h *************** *** 24536,24551 **** if test "$ac_cv_header_winsock2_h" = yes; then REPLACE_SELECT=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS select.$ac_objext" - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether select supports a 0 argument" >&5 --- 24245,24250 ---- *************** *** 24595,24603 **** $as_echo "$gl_cv_func_select_supports0" >&6; } case "$gl_cv_func_select_supports0" in *yes) ;; ! *) ! REPLACE_SELECT=1 --- 24294,24304 ---- $as_echo "$gl_cv_func_select_supports0" >&6; } case "$gl_cv_func_select_supports0" in *yes) ;; ! *) REPLACE_SELECT=1 ;; ! esac ! fi + if test $REPLACE_SELECT = 1; then *************** *** 24605,24616 **** - gl_LIBOBJS="$gl_LIBOBJS select.$ac_objext" ! ;; ! esac ! fi --- 24306,24315 ---- ! gl_LIBOBJS="$gl_LIBOBJS select.$ac_objext" + fi *************** *** 24646,24651 **** --- 24345,24353 ---- fi else HAVE_SIGACTION=0 + fi + + if test $HAVE_SIGACTION = 0; then *************** *** 24679,24686 **** HAVE_SIGINFO_T=0 fi ! fi ! --- 24381,24387 ---- HAVE_SIGINFO_T=0 fi ! fi *************** *** 24845,24850 **** --- 24546,24554 ---- fi if test -z "$gl_cv_func_sigprocmask"; then HAVE_POSIX_SIGNALBLOCKING=0 + fi + + if test $HAVE_POSIX_SIGNALBLOCKING = 0; then *************** *** 24877,24884 **** fi ! fi ! --- 24581,24587 ---- fi ! fi *************** *** 25006,25021 **** if test $ac_cv_have_decl_sleep != yes; then HAVE_SLEEP=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS sleep.$ac_objext" - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sleep" >&5 $as_echo_n "checking for working sleep... " >&6; } --- 24709,24714 ---- *************** *** 25073,25079 **** --- 24766,24775 ---- $as_echo "$gl_cv_func_sleep_works" >&6; } if test "$gl_cv_func_sleep_works" != yes; then REPLACE_SLEEP=1 + fi + fi + if test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1; then *************** *** 25081,25091 **** - gl_LIBOBJS="$gl_LIBOBJS sleep.$ac_objext" ! fi ! fi --- 24777,24786 ---- ! gl_LIBOBJS="$gl_LIBOBJS sleep.$ac_objext" + fi *************** *** 25453,25459 **** $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h ;; esac ! if test $REPLACE_STAT = 1; then --- 25148,25155 ---- $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h ;; esac ! ! if test $REPLACE_STAT = 1; then *************** *** 25465,25472 **** gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext" - fi --- 25161,25170 ---- gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext" + : + + fi *************** *** 25845,25880 **** if test $ac_cv_func_strdup = yes; then if test $gl_cv_func_malloc_posix != yes; then REPLACE_STRDUP=1 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext" - - : fi ! else - gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext" - : - fi ! if test $ac_cv_have_decl_strdup = no; then ! HAVE_DECL_STRDUP=0 ! fi --- 25543,25568 ---- if test $ac_cv_func_strdup = yes; then if test $gl_cv_func_malloc_posix != yes; then REPLACE_STRDUP=1 fi ! fi + if test $ac_cv_have_decl_strdup = no; then + HAVE_DECL_STRDUP=0 + fi + if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then ! gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext" + : + fi *************** *** 26022,26038 **** fi - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS strftime.$ac_objext" - - # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. --- 25710,25715 ---- *************** *** 26054,26059 **** --- 25731,25739 ---- if test $ac_cv_func_strptime != yes; then HAVE_STRPTIME=0 + fi + + if test $HAVE_STRPTIME = 0; then *************** *** 26068,26075 **** : ! fi ! --- 25748,25754 ---- : ! fi *************** *** 26090,26105 **** if test $ac_cv_func_symlink = no; then HAVE_SYMLINK=0 - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext" - else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symlink handles trailing slash correctly" >&5 $as_echo_n "checking whether symlink handles trailing slash correctly... " >&6; } --- 25769,25774 ---- *************** *** 26144,26150 **** --- 25813,25822 ---- $as_echo "$gl_cv_func_symlink_works" >&6; } if test "$gl_cv_func_symlink_works" != yes; then REPLACE_SYMLINK=1 + fi + fi + if test $HAVE_SYMLINK = 0 || test $REPLACE_SYMLINK = 1; then *************** *** 26152,26162 **** - gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext" ! fi ! fi --- 25824,25833 ---- ! gl_LIBOBJS="$gl_LIBOBJS symlink.$ac_objext" + fi *************** *** 27033,27048 **** - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS tempname.$ac_objext" - - : --- 26704,26709 ---- *************** *** 27105,27111 **** else HAVE_LOCALTIME_R=0 fi ! if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then --- 26766,26773 ---- else HAVE_LOCALTIME_R=0 fi ! ! if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then *************** *** 27119,27126 **** : ! fi ! --- 26781,26787 ---- : ! fi *************** *** 27141,27147 **** --- 26802,26810 ---- if test $ac_cv_func_times = no; then HAVE_TIMES=0 + fi + if test $HAVE_TIMES = 0; then *************** *** 27149,27158 **** - gl_LIBOBJS="$gl_LIBOBJS times.$ac_objext" ! fi --- 26812,26821 ---- ! gl_LIBOBJS="$gl_LIBOBJS times.$ac_objext" + fi *************** *** 27234,27253 **** HAVE_DECL_TRUNC=0 fi if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then - gl_LIBOBJS="$gl_LIBOBJS trunc.$ac_objext" - TRUNC_LIBM= - fi --- 26897,26918 ---- HAVE_DECL_TRUNC=0 fi if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then + TRUNC_LIBM= + fi + if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then + gl_LIBOBJS="$gl_LIBOBJS trunc.$ac_objext" + fi *************** *** 27334,27353 **** HAVE_DECL_TRUNCF=0 fi if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then - gl_LIBOBJS="$gl_LIBOBJS truncf.$ac_objext" - TRUNCF_LIBM= - fi --- 26999,27020 ---- HAVE_DECL_TRUNCF=0 fi if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then + TRUNCF_LIBM= + fi + if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then + gl_LIBOBJS="$gl_LIBOBJS truncf.$ac_objext" + fi *************** *** 27490,27525 **** - - - - - gl_LIBOBJS="$gl_LIBOBJS dup-safer.$ac_objext" - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS fd-safer.$ac_objext" - - - - - - - - - - gl_LIBOBJS="$gl_LIBOBJS pipe-safer.$ac_objext" - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether unlink honors trailing slashes" >&5 $as_echo_n "checking whether unlink honors trailing slashes... " >&6; } if ${gl_cv_func_unlink_honors_slashes+:} false; then : --- 27157,27162 ---- *************** *** 27652,27658 **** --- 27289,27297 ---- esac }; then REPLACE_UNLINK=1 + fi + if test $REPLACE_UNLINK = 1; then *************** *** 27660,27669 **** - gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext" ! fi --- 27299,27308 ---- ! gl_LIBOBJS="$gl_LIBOBJS unlink.$ac_objext" + fi *************** *** 53979,54001 **** /* end confdefs.h. */ $ac_includes_default int ! find_stack_direction () { ! static char *addr = 0; ! auto char dummy; ! if (addr == 0) ! { ! addr = &dummy; ! return find_stack_direction (); ! } ! else ! return (&dummy > addr) ? 1 : -1; } int ! main () { ! return find_stack_direction () < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : --- 53618,53637 ---- /* end confdefs.h. */ $ac_includes_default int ! find_stack_direction (int *addr, int depth) { ! int dir, dummy = 0; ! if (! addr) ! addr = &dummy; ! *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; ! dir = depth ? find_stack_direction (addr, depth - 1) : 0; ! return dir + dummy; } int ! main (int argc, char **argv) { ! return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : *************** *** 57675,57681 **** # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" ! This file was extended by GNU Octave $as_me 3.4.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 57311,57317 ---- # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" ! This file was extended by GNU Octave $as_me 3.4.2, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 57743,57749 **** cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ ! GNU Octave config.status 3.4.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" --- 57379,57385 ---- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ ! GNU Octave config.status 3.4.2 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff -cNr octave-3.4.1/configure.ac octave-3.4.2/configure.ac *** octave-3.4.1/configure.ac 2011-06-15 11:13:48.000000000 -0400 --- octave-3.4.2/configure.ac 2011-06-24 10:33:52.000000000 -0400 *************** *** 27,39 **** EXTERN_CFLAGS="$CFLAGS" EXTERN_CXXFLAGS="$CXXFLAGS" ! AC_INIT([GNU Octave], [3.4.1], [http://octave.org/bugs.html], [octave]) dnl PACKAGE_VERSION is set by the AC_INIT VERSION arg OCTAVE_VERSION="$PACKAGE_VERSION" OCTAVE_API_VERSION_NUMBER="45" OCTAVE_API_VERSION="api-v$OCTAVE_API_VERSION_NUMBER+" ! OCTAVE_RELEASE_DATE="2011-06-15" OCTAVE_COPYRIGHT="Copyright (C) 2011 John W. Eaton and others." AC_SUBST(OCTAVE_VERSION) AC_SUBST(OCTAVE_API_VERSION_NUMBER) --- 27,39 ---- EXTERN_CFLAGS="$CFLAGS" EXTERN_CXXFLAGS="$CXXFLAGS" ! AC_INIT([GNU Octave], [3.4.2], [http://octave.org/bugs.html], [octave]) dnl PACKAGE_VERSION is set by the AC_INIT VERSION arg OCTAVE_VERSION="$PACKAGE_VERSION" OCTAVE_API_VERSION_NUMBER="45" OCTAVE_API_VERSION="api-v$OCTAVE_API_VERSION_NUMBER+" ! OCTAVE_RELEASE_DATE="2011-06-24" OCTAVE_COPYRIGHT="Copyright (C) 2011 John W. Eaton and others." AC_SUBST(OCTAVE_VERSION) AC_SUBST(OCTAVE_API_VERSION_NUMBER) diff -cNr octave-3.4.1/doc/faq/Makefile.in octave-3.4.2/doc/faq/Makefile.in *** octave-3.4.1/doc/faq/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/doc/faq/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 64,74 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 64,73 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ Binary files octave-3.4.1/doc/faq/OctaveFAQ.pdf and octave-3.4.2/doc/faq/OctaveFAQ.pdf differ diff -cNr octave-3.4.1/doc/icons/Makefile.in octave-3.4.2/doc/icons/Makefile.in *** octave-3.4.1/doc/icons/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/doc/icons/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 65,75 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 65,74 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/doc/interpreter/convhull.eps octave-3.4.2/doc/interpreter/convhull.eps *** octave-3.4.1/doc/interpreter/convhull.eps 2011-06-15 11:39:33.000000000 -0400 --- octave-3.4.2/doc/interpreter/convhull.eps 2011-06-02 16:45:04.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: convhull.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:33 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: convhull.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:04 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:33 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:04 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/convhull.pdf and octave-3.4.2/doc/interpreter/convhull.pdf differ diff -cNr octave-3.4.1/doc/interpreter/delaunay.eps octave-3.4.2/doc/interpreter/delaunay.eps *** octave-3.4.1/doc/interpreter/delaunay.eps 2011-06-15 11:39:34.000000000 -0400 --- octave-3.4.2/doc/interpreter/delaunay.eps 2011-06-02 16:45:06.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: delaunay.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:34 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: delaunay.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:06 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:34 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:06 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/delaunay.pdf and octave-3.4.2/doc/interpreter/delaunay.pdf differ diff -cNr octave-3.4.1/doc/interpreter/dynamic.texi octave-3.4.2/doc/interpreter/dynamic.texi *** octave-3.4.1/doc/interpreter/dynamic.texi 2011-06-15 11:39:10.000000000 -0400 --- octave-3.4.2/doc/interpreter/dynamic.texi 2011-06-21 12:33:51.000000000 -0400 *************** *** 135,147 **** Add the run-time path to the link command. @item -Wl,@dots{} ! Pass flags through the linker e.g. "-Wl,-rpath=@dots{}". The quotes are needed since commas are interpreted as command separators. ! @item -W,@dots{} ! Pass flags through the compiler, e.g. "-W,-O2". The quotes are needed ! since commas are interpreted as command separators. @item -c Compile but do not link. --- 135,146 ---- Add the run-time path to the link command. @item -Wl,@dots{} ! Pass flags though the linker like "-Wl,-rpath=@dots{}". The quotes are needed since commas are interpreted as command separators. ! @item -W@dots{} ! Pass flags though the compiler like "-Wa,OPTION". @item -c Compile but do not link. diff -cNr octave-3.4.1/doc/interpreter/errorbar.eps octave-3.4.2/doc/interpreter/errorbar.eps *** octave-3.4.1/doc/interpreter/errorbar.eps 2011-06-15 11:39:43.000000000 -0400 --- octave-3.4.2/doc/interpreter/errorbar.eps 2011-06-02 16:45:16.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: errorbar.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:43 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: errorbar.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:16 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:43 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:16 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/errorbar.pdf and octave-3.4.2/doc/interpreter/errorbar.pdf differ diff -cNr octave-3.4.1/doc/interpreter/extended.eps octave-3.4.2/doc/interpreter/extended.eps *** octave-3.4.1/doc/interpreter/extended.eps 2011-06-15 11:39:47.000000000 -0400 --- octave-3.4.2/doc/interpreter/extended.eps 2011-06-02 16:45:20.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: extended.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:47 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: extended.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:20 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:47 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:20 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/extended.pdf and octave-3.4.2/doc/interpreter/extended.pdf differ diff -cNr octave-3.4.1/doc/interpreter/gplot.eps octave-3.4.2/doc/interpreter/gplot.eps *** octave-3.4.1/doc/interpreter/gplot.eps 2011-06-15 11:39:48.000000000 -0400 --- octave-3.4.2/doc/interpreter/gplot.eps 2011-06-09 14:02:58.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: gplot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:48 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: gplot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 9 14:02:58 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:48 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 9 14:02:58 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/gplot.pdf and octave-3.4.2/doc/interpreter/gplot.pdf differ diff -cNr octave-3.4.1/doc/interpreter/griddata.eps octave-3.4.2/doc/interpreter/griddata.eps *** octave-3.4.1/doc/interpreter/griddata.eps 2011-06-15 11:39:32.000000000 -0400 --- octave-3.4.2/doc/interpreter/griddata.eps 2011-06-02 16:45:03.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: griddata.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:31 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: griddata.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:03 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:31 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:03 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/griddata.pdf and octave-3.4.2/doc/interpreter/griddata.pdf differ diff -cNr octave-3.4.1/doc/interpreter/grid.eps octave-3.4.2/doc/interpreter/grid.eps *** octave-3.4.1/doc/interpreter/grid.eps 2011-06-15 11:39:54.000000000 -0400 --- octave-3.4.2/doc/interpreter/grid.eps 2011-06-09 14:03:03.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: grid.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:54 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: grid.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 9 14:03:03 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:54 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 9 14:03:03 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/grid.pdf and octave-3.4.2/doc/interpreter/grid.pdf differ diff -cNr octave-3.4.1/doc/interpreter/hist.eps octave-3.4.2/doc/interpreter/hist.eps *** octave-3.4.1/doc/interpreter/hist.eps 2011-06-15 11:39:42.000000000 -0400 --- octave-3.4.2/doc/interpreter/hist.eps 2011-06-02 16:45:15.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: hist.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:42 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: hist.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:15 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:42 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:15 2011) /DOCINFO pdfmark end } ifelse *************** *** 555,617 **** ] -66.7 MRshow 0.500 UL LTb ! 900 1133 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 1133 M [ [({}) 200.0 0.0 true true 0 (200)] ] -66.7 MRshow 0.500 UL LTb ! 900 1866 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 1866 M [ [({}) 200.0 0.0 true true 0 (400)] ] -66.7 MRshow 0.500 UL LTb ! 900 2600 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 2600 M [ [({}) 200.0 0.0 true true 0 (600)] ] -66.7 MRshow 0.500 UL LTb ! 900 3333 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 3333 M [ [({}) 200.0 0.0 true true 0 (800)] ] -66.7 MRshow 0.500 UL LTb - 900 4066 M - 88 0 V - 5911 0 R - -88 0 V - stroke - 0.00 0.00 0.00 C 780 4066 M - [ [({}) 200.0 0.0 true true 0 (1000)] - ] -66.7 MRshow - 0.500 UL - LTb 900 4799 M 88 0 V 5911 0 R -88 0 V stroke 0.00 0.00 0.00 C 780 4799 M ! [ [({}) 200.0 0.0 true true 0 (1200)] ] -66.7 MRshow 0.500 UL LTb --- 555,607 ---- ] -66.7 MRshow 0.500 UL LTb ! 900 1280 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 1280 M [ [({}) 200.0 0.0 true true 0 (200)] ] -66.7 MRshow 0.500 UL LTb ! 900 2160 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 2160 M [ [({}) 200.0 0.0 true true 0 (400)] ] -66.7 MRshow 0.500 UL LTb ! 900 3039 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 3039 M [ [({}) 200.0 0.0 true true 0 (600)] ] -66.7 MRshow 0.500 UL LTb ! 900 3919 M 88 0 V 5911 0 R -88 0 V stroke ! 0.00 0.00 0.00 C 780 3919 M [ [({}) 200.0 0.0 true true 0 (800)] ] -66.7 MRshow 0.500 UL LTb 900 4799 M 88 0 V 5911 0 R -88 0 V stroke 0.00 0.00 0.00 C 780 4799 M ! [ [({}) 200.0 0.0 true true 0 (1000)] ] -66.7 MRshow 0.500 UL LTb *************** *** 719,1319 **** % Begin plot #1 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 1178 400 N 0 0 V 0 15 V 183 0 V 0 -15 V 1 PolyFill ! 1178 400 M ! 0 15 V ! 183 0 V ! 0 -15 V % End plot #1 % Begin plot #2 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1178 400 M ! 0 15 V ! 183 0 V ! 0 -15 V ! -183 0 V % End plot #2 % Begin plot #3 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 1361 400 N 0 0 V 0 7 V 183 0 V 0 -7 V 1 PolyFill ! 1361 400 M ! 0 7 V 183 0 V ! 0 -7 V % End plot #3 % Begin plot #4 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1361 400 M ! 0 7 V 183 0 V ! 0 -7 V -183 0 V % End plot #4 % Begin plot #5 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 1544 400 N 0 0 V 0 33 V 183 0 V 0 -33 V 1 PolyFill ! 1544 400 M ! 0 33 V 183 0 V ! 0 -33 V % End plot #5 % Begin plot #6 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1544 400 M ! 0 33 V 183 0 V ! 0 -33 V -183 0 V % End plot #6 % Begin plot #7 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 1727 400 N 0 0 V 0 73 V 183 0 V 0 -73 V 1 PolyFill ! 1727 400 M ! 0 73 V 183 0 V ! 0 -73 V % End plot #7 % Begin plot #8 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1727 400 M ! 0 73 V 183 0 V ! 0 -73 V -183 0 V % End plot #8 % Begin plot #9 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 1910 400 N 0 0 V 0 114 V 183 0 V 0 -114 V 1 PolyFill ! 1910 400 M ! 0 114 V ! 183 0 V ! 0 -114 V % End plot #9 % Begin plot #10 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1910 400 M ! 0 114 V ! 183 0 V ! 0 -114 V ! -183 0 V % End plot #10 % Begin plot #11 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 2093 400 N 0 0 V 0 249 V 183 0 V 0 -249 V 1 PolyFill ! 2093 400 M ! 0 249 V 183 0 V ! 0 -249 V % End plot #11 % Begin plot #12 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2093 400 M ! 0 249 V 183 0 V ! 0 -249 V -183 0 V % End plot #12 % Begin plot #13 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 2276 400 N 0 0 V 0 458 V 183 0 V 0 -458 V 1 PolyFill ! 2276 400 M ! 0 458 V 183 0 V ! 0 -458 V % End plot #13 % Begin plot #14 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2276 400 M ! 0 458 V 183 0 V ! 0 -458 V -183 0 V % End plot #14 % Begin plot #15 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 2459 400 N 0 0 V 0 704 V 183 0 V 0 -704 V 1 PolyFill ! 2459 400 M ! 0 704 V 183 0 V ! 0 -704 V % End plot #15 % Begin plot #16 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2459 400 M ! 0 704 V 183 0 V ! 0 -704 V -183 0 V % End plot #16 % Begin plot #17 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 2642 400 N 0 0 V 0 1030 V 183 0 V 0 -1030 V 1 PolyFill ! 2642 400 M ! 0 1030 V ! 183 0 V ! 0 -1030 V % End plot #17 % Begin plot #18 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2642 400 M ! 0 1030 V ! 183 0 V ! 0 -1030 V ! -183 0 V % End plot #18 % Begin plot #19 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 2825 400 N 0 0 V 0 1345 V 183 0 V 0 -1345 V 1 PolyFill ! 2825 400 M ! 0 1345 V 183 0 V ! 0 -1345 V % End plot #19 % Begin plot #20 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2825 400 M ! 0 1345 V 183 0 V ! 0 -1345 V -183 0 V % End plot #20 % Begin plot #21 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 3008 400 N 0 0 V 0 2130 V 183 0 V 0 -2130 V 1 PolyFill ! 3008 400 M ! 0 2130 V 183 0 V ! 0 -2130 V % End plot #21 % Begin plot #22 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3008 400 M ! 0 2130 V 183 0 V ! 0 -2130 V -183 0 V % End plot #22 % Begin plot #23 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 3191 400 N 0 0 V 0 2559 V 183 0 V 0 -2559 V 1 PolyFill ! 3191 400 M ! 0 2559 V 183 0 V ! 0 -2559 V % End plot #23 % Begin plot #24 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3191 400 M ! 0 2559 V 183 0 V ! 0 -2559 V -183 0 V % End plot #24 % Begin plot #25 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 3374 400 N 0 0 V 0 3010 V 183 0 V 0 -3010 V 1 PolyFill ! 3374 400 M ! 0 3010 V ! 183 0 V ! 0 -3010 V % End plot #25 % Begin plot #26 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3374 400 M ! 0 3010 V ! 183 0 V ! 0 -3010 V ! -183 0 V % End plot #26 % Begin plot #27 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 3557 400 N 0 0 V 0 3402 V 183 0 V 0 -3402 V 1 PolyFill ! 3557 400 M ! 0 3402 V 183 0 V ! 0 -3402 V % End plot #27 % Begin plot #28 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3557 400 M ! 0 3402 V 183 0 V ! 0 -3402 V -183 0 V % End plot #28 % Begin plot #29 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 3740 400 N 0 0 V 0 3724 V 183 0 V 0 -3724 V 1 PolyFill ! 3740 400 M ! 0 3724 V 183 0 V ! 0 -3724 V % End plot #29 % Begin plot #30 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3740 400 M ! 0 3724 V 183 0 V ! 0 -3724 V -183 0 V % End plot #30 % Begin plot #31 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 3923 400 N 0 0 V 0 3552 V 183 0 V 0 -3552 V 1 PolyFill ! 3923 400 M ! 0 3552 V 183 0 V ! 0 -3552 V % End plot #31 % Begin plot #32 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3923 400 M ! 0 3552 V 183 0 V ! 0 -3552 V -183 0 V % End plot #32 % Begin plot #33 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 4106 400 N 0 0 V 0 2962 V 183 0 V 0 -2962 V 1 PolyFill ! 4106 400 M ! 0 2962 V ! 183 0 V ! 0 -2962 V % End plot #33 % Begin plot #34 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4106 400 M ! 0 2962 V ! 183 0 V ! 0 -2962 V ! -183 0 V % End plot #34 % Begin plot #35 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 4289 400 N 0 0 V 0 2929 V 183 0 V 0 -2929 V 1 PolyFill ! 4289 400 M ! 0 2929 V 183 0 V ! 0 -2929 V % End plot #35 % Begin plot #36 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4289 400 M ! 0 2929 V 183 0 V ! 0 -2929 V -183 0 V % End plot #36 % Begin plot #37 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 4472 400 N 0 0 V 0 2504 V 183 0 V 0 -2504 V 1 PolyFill ! 4472 400 M ! 0 2504 V 183 0 V ! 0 -2504 V % End plot #37 % Begin plot #38 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4472 400 M ! 0 2504 V 183 0 V ! 0 -2504 V -183 0 V % End plot #38 % Begin plot #39 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 4655 400 N 0 0 V 0 1965 V 183 0 V 0 -1965 V 1 PolyFill ! 4655 400 M ! 0 1965 V 183 0 V ! 0 -1965 V % End plot #39 % Begin plot #40 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4655 400 M ! 0 1965 V 183 0 V ! 0 -1965 V -183 0 V % End plot #40 % Begin plot #41 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 4838 400 N 0 0 V 0 1426 V 183 0 V 0 -1426 V 1 PolyFill ! 4838 400 M ! 0 1426 V ! 183 0 V ! 0 -1426 V % End plot #41 % Begin plot #42 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4838 400 M ! 0 1426 V ! 183 0 V ! 0 -1426 V ! -183 0 V % End plot #42 % Begin plot #43 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 5021 400 N 0 0 V 0 1012 V 183 0 V 0 -1012 V 1 PolyFill ! 5021 400 M ! 0 1012 V 183 0 V ! 0 -1012 V % End plot #43 % Begin plot #44 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5021 400 M ! 0 1012 V 183 0 V ! 0 -1012 V -183 0 V % End plot #44 % Begin plot #45 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 5204 400 N 0 0 V 0 609 V 183 0 V 0 -609 V 1 PolyFill ! 5204 400 M ! 0 609 V 183 0 V ! 0 -609 V % End plot #45 % Begin plot #46 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5204 400 M ! 0 609 V 183 0 V ! 0 -609 V -183 0 V % End plot #46 % Begin plot #47 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 5387 400 N 0 0 V 0 378 V 183 0 V 0 -378 V 1 PolyFill ! 5387 400 M ! 0 378 V 183 0 V ! 0 -378 V % End plot #47 % Begin plot #48 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5387 400 M ! 0 378 V 183 0 V ! 0 -378 V -183 0 V % End plot #48 % Begin plot #49 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 5570 400 N 0 0 V 0 238 V 183 0 V 0 -238 V 1 PolyFill ! 5570 400 M ! 0 238 V ! 183 0 V ! 0 -238 V % End plot #49 % Begin plot #50 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5570 400 M ! 0 238 V ! 183 0 V ! 0 -238 V ! -183 0 V % End plot #50 % Begin plot #51 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 5753 400 N 0 0 V 0 114 V 184 0 V 0 -114 V 1 PolyFill ! 5753 400 M ! 0 114 V ! 184 0 V ! 0 -114 V % End plot #51 % Begin plot #52 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5753 400 M ! 0 114 V ! 184 0 V ! 0 -114 V ! -184 0 V % End plot #52 % Begin plot #53 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 5937 400 N 0 0 V 0 59 V 183 0 V 0 -59 V 1 PolyFill ! 5937 400 M ! 0 59 V 183 0 V ! 0 -59 V % End plot #53 % Begin plot #54 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5937 400 M ! 0 59 V 183 0 V ! 0 -59 V -183 0 V % End plot #54 % Begin plot #55 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 6120 400 N 0 0 V 0 48 V 183 0 V 0 -48 V 1 PolyFill ! 6120 400 M ! 0 48 V 183 0 V ! 0 -48 V % End plot #55 % Begin plot #56 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6120 400 M ! 0 48 V 183 0 V ! 0 -48 V -183 0 V % End plot #56 % Begin plot #57 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 6303 400 N 0 0 V 0 7 V 183 0 V 0 -7 V 1 PolyFill ! 6303 400 M ! 0 7 V 183 0 V ! 0 -7 V % End plot #57 % Begin plot #58 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6303 400 M ! 0 7 V 183 0 V ! 0 -7 V -183 0 V % End plot #58 % Begin plot #59 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 6486 400 N 0 0 V 0 4 V 183 0 V 0 -4 V 1 PolyFill ! 6486 400 M ! 0 4 V ! 183 0 V ! 0 -4 V % End plot #59 % Begin plot #60 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6486 400 M ! 0 4 V ! 183 0 V ! 0 -4 V ! -183 0 V % End plot #60 % Begin plot #61 stroke --- 709,1309 ---- % Begin plot #1 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 942 400 N 0 0 V 0 4 V 184 0 V 0 -4 V 1 PolyFill ! 942 400 M ! 0 4 V ! 184 0 V ! 0 -4 V % End plot #1 % Begin plot #2 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 942 400 M ! 0 4 V ! 184 0 V ! 0 -4 V ! -184 0 V % End plot #2 % Begin plot #3 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 1126 400 N 0 0 V 0 9 V 183 0 V 0 -9 V 1 PolyFill ! 1126 400 M ! 0 9 V 183 0 V ! 0 -9 V % End plot #3 % Begin plot #4 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1126 400 M ! 0 9 V 183 0 V ! 0 -9 V -183 0 V % End plot #4 % Begin plot #5 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 1309 400 N 0 0 V 0 18 V 183 0 V 0 -18 V 1 PolyFill ! 1309 400 M ! 0 18 V 183 0 V ! 0 -18 V % End plot #5 % Begin plot #6 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1309 400 M ! 0 18 V 183 0 V ! 0 -18 V -183 0 V % End plot #6 % Begin plot #7 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 1492 400 N 0 0 V 0 22 V 183 0 V 0 -22 V 1 PolyFill ! 1492 400 M ! 0 22 V 183 0 V ! 0 -22 V % End plot #7 % Begin plot #8 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1492 400 M ! 0 22 V 183 0 V ! 0 -22 V -183 0 V % End plot #8 % Begin plot #9 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 1675 400 N 0 0 V 0 88 V 184 0 V 0 -88 V 1 PolyFill ! 1675 400 M ! 0 88 V ! 184 0 V ! 0 -88 V % End plot #9 % Begin plot #10 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1675 400 M ! 0 88 V ! 184 0 V ! 0 -88 V ! -184 0 V % End plot #10 % Begin plot #11 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 1859 400 N 0 0 V 0 136 V 183 0 V 0 -136 V 1 PolyFill ! 1859 400 M ! 0 136 V 183 0 V ! 0 -136 V % End plot #11 % Begin plot #12 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 1859 400 M ! 0 136 V 183 0 V ! 0 -136 V -183 0 V % End plot #12 % Begin plot #13 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 2042 400 N 0 0 V 0 251 V 183 0 V 0 -251 V 1 PolyFill ! 2042 400 M ! 0 251 V 183 0 V ! 0 -251 V % End plot #13 % Begin plot #14 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2042 400 M ! 0 251 V 183 0 V ! 0 -251 V -183 0 V % End plot #14 % Begin plot #15 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 2225 400 N 0 0 V 0 510 V 183 0 V 0 -510 V 1 PolyFill ! 2225 400 M ! 0 510 V 183 0 V ! 0 -510 V % End plot #15 % Begin plot #16 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2225 400 M ! 0 510 V 183 0 V ! 0 -510 V -183 0 V % End plot #16 % Begin plot #17 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 2408 400 N 0 0 V 0 664 V 184 0 V 0 -664 V 1 PolyFill ! 2408 400 M ! 0 664 V ! 184 0 V ! 0 -664 V % End plot #17 % Begin plot #18 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2408 400 M ! 0 664 V ! 184 0 V ! 0 -664 V ! -184 0 V % End plot #18 % Begin plot #19 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 2592 400 N 0 0 V 0 1104 V 183 0 V 0 -1104 V 1 PolyFill ! 2592 400 M ! 0 1104 V 183 0 V ! 0 -1104 V % End plot #19 % Begin plot #20 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2592 400 M ! 0 1104 V 183 0 V ! 0 -1104 V -183 0 V % End plot #20 % Begin plot #21 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 2775 400 N 0 0 V 0 1716 V 183 0 V 0 -1716 V 1 PolyFill ! 2775 400 M ! 0 1716 V 183 0 V ! 0 -1716 V % End plot #21 % Begin plot #22 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2775 400 M ! 0 1716 V 183 0 V ! 0 -1716 V -183 0 V % End plot #22 % Begin plot #23 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 2958 400 N 0 0 V 0 2274 V 183 0 V 0 -2274 V 1 PolyFill ! 2958 400 M ! 0 2274 V 183 0 V ! 0 -2274 V % End plot #23 % Begin plot #24 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 2958 400 M ! 0 2274 V 183 0 V ! 0 -2274 V -183 0 V % End plot #24 % Begin plot #25 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 3141 400 N 0 0 V 0 3079 V 184 0 V 0 -3079 V 1 PolyFill ! 3141 400 M ! 0 3079 V ! 184 0 V ! 0 -3079 V % End plot #25 % Begin plot #26 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3141 400 M ! 0 3079 V ! 184 0 V ! 0 -3079 V ! -184 0 V % End plot #26 % Begin plot #27 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 3325 400 N 0 0 V 0 3414 V 183 0 V 0 -3414 V 1 PolyFill ! 3325 400 M ! 0 3414 V 183 0 V ! 0 -3414 V % End plot #27 % Begin plot #28 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3325 400 M ! 0 3414 V 183 0 V ! 0 -3414 V -183 0 V % End plot #28 % Begin plot #29 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 3508 400 N 0 0 V 0 4025 V 183 0 V 0 -4025 V 1 PolyFill ! 3508 400 M ! 0 4025 V 183 0 V ! 0 -4025 V % End plot #29 % Begin plot #30 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3508 400 M ! 0 4025 V 183 0 V ! 0 -4025 V -183 0 V % End plot #30 % Begin plot #31 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 3691 400 N 0 0 V 0 3942 V 183 0 V 0 -3942 V 1 PolyFill ! 3691 400 M ! 0 3942 V 183 0 V ! 0 -3942 V % End plot #31 % Begin plot #32 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3691 400 M ! 0 3942 V 183 0 V ! 0 -3942 V -183 0 V % End plot #32 % Begin plot #33 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 3874 400 N 0 0 V 0 4285 V 184 0 V 0 -4285 V 1 PolyFill ! 3874 400 M ! 0 4285 V ! 184 0 V ! 0 -4285 V % End plot #33 % Begin plot #34 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 3874 400 M ! 0 4285 V ! 184 0 V ! 0 -4285 V ! -184 0 V % End plot #34 % Begin plot #35 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 4058 400 N 0 0 V 0 3906 V 183 0 V 0 -3906 V 1 PolyFill ! 4058 400 M ! 0 3906 V 183 0 V ! 0 -3906 V % End plot #35 % Begin plot #36 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4058 400 M ! 0 3906 V 183 0 V ! 0 -3906 V -183 0 V % End plot #36 % Begin plot #37 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 4241 400 N 0 0 V 0 3634 V 183 0 V 0 -3634 V 1 PolyFill ! 4241 400 M ! 0 3634 V 183 0 V ! 0 -3634 V % End plot #37 % Begin plot #38 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4241 400 M ! 0 3634 V 183 0 V ! 0 -3634 V -183 0 V % End plot #38 % Begin plot #39 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 4424 400 N 0 0 V 0 3145 V 183 0 V 0 -3145 V 1 PolyFill ! 4424 400 M ! 0 3145 V 183 0 V ! 0 -3145 V % End plot #39 % Begin plot #40 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4424 400 M ! 0 3145 V 183 0 V ! 0 -3145 V -183 0 V % End plot #40 % Begin plot #41 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 4607 400 N 0 0 V 0 2362 V 184 0 V 0 -2362 V 1 PolyFill ! 4607 400 M ! 0 2362 V ! 184 0 V ! 0 -2362 V % End plot #41 % Begin plot #42 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4607 400 M ! 0 2362 V ! 184 0 V ! 0 -2362 V ! -184 0 V % End plot #42 % Begin plot #43 stroke 1.000 UL LT6 ! 0.00 0.00 0.50 C gsave 4791 400 N 0 0 V 0 1711 V 183 0 V 0 -1711 V 1 PolyFill ! 4791 400 M ! 0 1711 V 183 0 V ! 0 -1711 V % End plot #43 % Begin plot #44 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4791 400 M ! 0 1711 V 183 0 V ! 0 -1711 V -183 0 V % End plot #44 % Begin plot #45 stroke 1.000 UL LT8 ! 0.00 0.00 0.50 C gsave 4974 400 N 0 0 V 0 1377 V 183 0 V 0 -1377 V 1 PolyFill ! 4974 400 M ! 0 1377 V 183 0 V ! 0 -1377 V % End plot #45 % Begin plot #46 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 4974 400 M ! 0 1377 V 183 0 V ! 0 -1377 V -183 0 V % End plot #46 % Begin plot #47 stroke 1.000 UL LT1 ! 0.00 0.00 0.50 C gsave 5157 400 N 0 0 V 0 1021 V 183 0 V 0 -1021 V 1 PolyFill ! 5157 400 M ! 0 1021 V 183 0 V ! 0 -1021 V % End plot #47 % Begin plot #48 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5157 400 M ! 0 1021 V 183 0 V ! 0 -1021 V -183 0 V % End plot #48 % Begin plot #49 stroke 1.000 UL LT3 ! 0.00 0.00 0.50 C gsave 5340 400 N 0 0 V 0 541 V 184 0 V 0 -541 V 1 PolyFill ! 5340 400 M ! 0 541 V ! 184 0 V ! 0 -541 V % End plot #49 % Begin plot #50 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5340 400 M ! 0 541 V ! 184 0 V ! 0 -541 V ! -184 0 V % End plot #50 % Begin plot #51 stroke 1.000 UL LT5 ! 0.00 0.00 0.50 C gsave 5524 400 N 0 0 V 0 370 V 183 0 V 0 -370 V 1 PolyFill ! 5524 400 M ! 0 370 V ! 183 0 V ! 0 -370 V % End plot #51 % Begin plot #52 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5524 400 M ! 0 370 V ! 183 0 V ! 0 -370 V ! -183 0 V % End plot #52 % Begin plot #53 stroke 1.000 UL LT7 ! 0.00 0.00 0.50 C gsave 5707 400 N 0 0 V 0 207 V 183 0 V 0 -207 V 1 PolyFill ! 5707 400 M ! 0 207 V 183 0 V ! 0 -207 V % End plot #53 % Begin plot #54 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5707 400 M ! 0 207 V 183 0 V ! 0 -207 V -183 0 V % End plot #54 % Begin plot #55 stroke 1.000 UL LT0 ! 0.00 0.00 0.50 C gsave 5890 400 N 0 0 V 0 88 V 183 0 V 0 -88 V 1 PolyFill ! 5890 400 M ! 0 88 V 183 0 V ! 0 -88 V % End plot #55 % Begin plot #56 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 5890 400 M ! 0 88 V 183 0 V ! 0 -88 V -183 0 V % End plot #56 % Begin plot #57 stroke 1.000 UL LT2 ! 0.00 0.00 0.50 C gsave 6073 400 N 0 0 V 0 62 V 183 0 V 0 -62 V 1 PolyFill ! 6073 400 M ! 0 62 V 183 0 V ! 0 -62 V % End plot #57 % Begin plot #58 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6073 400 M ! 0 62 V 183 0 V ! 0 -62 V -183 0 V % End plot #58 % Begin plot #59 stroke 1.000 UL LT4 ! 0.00 0.00 0.50 C gsave 6256 400 N 0 0 V 0 26 V 184 0 V 0 -26 V 1 PolyFill ! 6256 400 M ! 0 26 V ! 184 0 V ! 0 -26 V % End plot #59 % Begin plot #60 stroke 0.500 UL LT0 ! 0.00 0.00 0.00 C 6256 400 M ! 0 26 V ! 184 0 V ! 0 -26 V ! -184 0 V % End plot #60 % Begin plot #61 stroke Binary files octave-3.4.1/doc/interpreter/hist.pdf and octave-3.4.2/doc/interpreter/hist.pdf differ Binary files octave-3.4.1/doc/interpreter/hist.png and octave-3.4.2/doc/interpreter/hist.png differ diff -cNr octave-3.4.1/doc/interpreter/inpolygon.eps octave-3.4.2/doc/interpreter/inpolygon.eps *** octave-3.4.1/doc/interpreter/inpolygon.eps 2011-06-15 11:39:35.000000000 -0400 --- octave-3.4.2/doc/interpreter/inpolygon.eps 2011-06-02 16:45:07.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: inpolygon.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:35 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: inpolygon.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:07 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:35 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:07 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/inpolygon.pdf and octave-3.4.2/doc/interpreter/inpolygon.pdf differ diff -cNr octave-3.4.1/doc/interpreter/interpderiv1.eps octave-3.4.2/doc/interpreter/interpderiv1.eps *** octave-3.4.1/doc/interpreter/interpderiv1.eps 2011-06-15 11:39:39.000000000 -0400 --- octave-3.4.2/doc/interpreter/interpderiv1.eps 2011-06-02 16:45:11.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv1.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:39 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv1.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:11 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:39 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:11 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/interpderiv1.pdf and octave-3.4.2/doc/interpreter/interpderiv1.pdf differ diff -cNr octave-3.4.1/doc/interpreter/interpderiv2.eps octave-3.4.2/doc/interpreter/interpderiv2.eps *** octave-3.4.1/doc/interpreter/interpderiv2.eps 2011-06-15 11:39:40.000000000 -0400 --- octave-3.4.2/doc/interpreter/interpderiv2.eps 2011-06-02 16:45:13.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv2.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:40 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpderiv2.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:13 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:40 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:13 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/interpderiv2.pdf and octave-3.4.2/doc/interpreter/interpderiv2.pdf differ diff -cNr octave-3.4.1/doc/interpreter/interpft.eps octave-3.4.2/doc/interpreter/interpft.eps *** octave-3.4.1/doc/interpreter/interpft.eps 2011-06-15 11:39:37.000000000 -0400 --- octave-3.4.2/doc/interpreter/interpft.eps 2011-06-02 16:45:09.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpft.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:37 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpft.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:09 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:37 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:09 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/interpft.pdf and octave-3.4.2/doc/interpreter/interpft.pdf differ diff -cNr octave-3.4.1/doc/interpreter/interpn.eps octave-3.4.2/doc/interpreter/interpn.eps *** octave-3.4.1/doc/interpreter/interpn.eps 2011-06-15 11:39:38.000000000 -0400 --- octave-3.4.2/doc/interpreter/interpn.eps 2011-06-02 16:45:10.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpn.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:38 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: interpn.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:10 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:38 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:10 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/interpn.pdf and octave-3.4.2/doc/interpreter/interpn.pdf differ diff -cNr octave-3.4.1/doc/interpreter/linalg.texi octave-3.4.2/doc/interpreter/linalg.texi *** octave-3.4.1/doc/interpreter/linalg.texi 2011-06-15 11:39:12.000000000 -0400 --- octave-3.4.2/doc/interpreter/linalg.texi 2011-06-21 12:33:53.000000000 -0400 *************** *** 1661,1664 **** --- 1661,1720 ---- @end deftypefn + @c gmres scripts/linear-algebra/gmres.m + @anchor{doc-gmres} + @deftypefn {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{M1}, @var{M2}, @var{x0}) + @deftypefnx {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{P}) + @deftypefnx {Function File} {[@var{x}, @var{flag}, @var{relres}, @var{iter}, @var{resvec}] =} gmres (@dots{}) + Solve @code{A x = b} using the Preconditioned GMRES iterative method + with restart, a.k.a. PGMRES(m). + + @itemize @minus + @item @var{rtol} is the relative tolerance, + if not given or set to [] the default value 1e-6 is used. + + @item @var{maxit} is the maximum number of outer iterations, + if not given or set to [] the default value + @code{min (10, numel (b) / restart)} is used. + + @item @var{x0} is the initial guess, + if not given or set to [] the default value @code{zeros(size (b))} is used. + + @item @var{m} is the restart parameter, + if not given or set to [] the default value @code{numel (b)} is used. + @end itemize + + Argument @var{A} can be passed as a matrix, function handle, or + inline function @code{f} such that @code{f(x) = A*x}. + + The preconditioner @var{P} is given as @code{P = M1 * M2}. + Both @var{M1} and @var{M2} can be passed as a matrix, function handle, or + inline function @code{g} such that @code{g(x) = M1\x} or @code{g(x) = M2\x}. + + Besides the vector @var{x}, additional outputs are: + + @itemize @minus + @item @var{flag} indicates the exit status: + + @table @asis + @item 0 : iteration converged to within the specified tolerance + + @item 1 : maximum number of iterations exceeded + + @item 2 : unused, but skipped for compatibility + + @item 3 : algorithm reached stagnation + @end table + + @item @var{relres} is the final value of the relative residual. + + @item @var{iter} is a vector containing the number of outer iterations and + total iterations performed. + + @item @var{resvec} is a vector containing the relative residual at each + iteration. + @end itemize + + @seealso{@ref{doc-pcg,,pcg}, @ref{doc-cgs,,cgs}, @ref{doc-bicgstab,,bicgstab}} + @end deftypefn diff -cNr octave-3.4.1/doc/interpreter/Makefile.in octave-3.4.2/doc/interpreter/Makefile.in *** octave-3.4.1/doc/interpreter/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/doc/interpreter/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 69,79 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 69,78 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/doc/interpreter/mesh.eps octave-3.4.2/doc/interpreter/mesh.eps *** octave-3.4.1/doc/interpreter/mesh.eps 2011-06-15 11:39:45.000000000 -0400 --- octave-3.4.2/doc/interpreter/mesh.eps 2011-06-02 16:45:18.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: mesh.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:45 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: mesh.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:18 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:45 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:18 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/mesh.pdf and octave-3.4.2/doc/interpreter/mesh.pdf differ Binary files octave-3.4.1/doc/interpreter/octave.pdf and octave-3.4.2/doc/interpreter/octave.pdf differ diff -cNr octave-3.4.1/doc/interpreter/octave.texi octave-3.4.2/doc/interpreter/octave.texi *** octave-3.4.1/doc/interpreter/octave.texi 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/doc/interpreter/octave.texi 2011-06-21 12:17:20.000000000 -0400 *************** *** 523,528 **** --- 523,529 ---- * Axis Configuration:: * Two-dimensional Function Plotting:: + * Two-dimensional Geometric Shapes:: Three-Dimensional Plots diff -cNr octave-3.4.1/doc/interpreter/plot3.eps octave-3.4.2/doc/interpreter/plot3.eps *** octave-3.4.1/doc/interpreter/plot3.eps 2011-06-15 11:39:46.000000000 -0400 --- octave-3.4.2/doc/interpreter/plot3.eps 2011-06-02 16:45:19.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot3.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:46 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot3.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:19 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:46 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:19 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/plot3.pdf and octave-3.4.2/doc/interpreter/plot3.pdf differ diff -cNr octave-3.4.1/doc/interpreter/plot.eps octave-3.4.2/doc/interpreter/plot.eps *** octave-3.4.1/doc/interpreter/plot.eps 2011-06-15 11:39:41.000000000 -0400 --- octave-3.4.2/doc/interpreter/plot.eps 2011-06-02 16:45:14.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:41 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: plot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:14 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:41 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:14 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/plot.pdf and octave-3.4.2/doc/interpreter/plot.pdf differ diff -cNr octave-3.4.1/doc/interpreter/plot.texi octave-3.4.2/doc/interpreter/plot.texi *** octave-3.4.1/doc/interpreter/plot.texi 2011-06-15 11:39:13.000000000 -0400 --- octave-3.4.2/doc/interpreter/plot.texi 2011-06-21 12:33:55.000000000 -0400 *************** *** 75,80 **** --- 75,81 ---- @menu * Axis Configuration:: * Two-dimensional Function Plotting:: + * Two-dimensional Geometric Shapes:: @end menu The @code{plot} function allows you to create simple x-y plots with *************** *** 1840,1845 **** --- 1841,1885 ---- @end deftypefn + @node Two-dimensional Geometric Shapes + @subsubsection Two-dimensional Geometric Shapes + + @c rectangle scripts/plot/rectangle.m + @anchor{doc-rectangle} + @deftypefn {Function File} {} rectangle () + @deftypefnx {Function File} {} rectangle (@dots{}, "Position", @var{pos}) + @deftypefnx {Function File} {} rectangle (@dots{}, "Curvature", @var{curv}) + @deftypefnx {Function File} {} rectangle (@dots{}, "EdgeColor", @var{ec}) + @deftypefnx {Function File} {} rectangle (@dots{}, "FaceColor", @var{fc}) + @deftypefnx {Function File} {@var{h} =} rectangle (@dots{}) + + Draw rectangular patch defined by @var{pos} and @var{curv}. The variable + @code{@var{pos}(1 : 2)} defines the lower left-hand corner of the patch + and @code{@var{pos}(3 : 4)} defines its width and height. By default, the + value of @var{pos} is @code{[0, 0, 1, 1]}. + + The variable @var{curv} defines the curvature of the sides of the rectangle + and may be a scalar or two-element vector with values between 0 and 1. + A value of 0 represents no curvature of the side, whereas a value of 1 + means that the side is entirely curved into the arc of a circle. + If @var{curv} is a two-element vector, then the first element is the + curvature along the x-axis of the patch and the second along y-axis. + + If @var{curv} is a scalar, it represents the curvature of the shorter of the + two sides of the rectangle and the curvature of the other side is defined + by + + @example + min (pos (1: 2)) / max (pos (1:2)) * curv + @end example + + Other properties are passed to the underlying patch command. If called + with an output argument, @code{rectangle} returns the handle to the + rectangle. + @end deftypefn + @seealso{@ref{doc-patch,,patch}} + + @node Three-Dimensional Plots @subsection Three-Dimensional Plots diff -cNr octave-3.4.1/doc/interpreter/plot.txi octave-3.4.2/doc/interpreter/plot.txi *** octave-3.4.1/doc/interpreter/plot.txi 2011-06-15 11:13:48.000000000 -0400 --- octave-3.4.2/doc/interpreter/plot.txi 2011-06-21 12:17:20.000000000 -0400 *************** *** 73,78 **** --- 73,79 ---- @menu * Axis Configuration:: * Two-dimensional Function Plotting:: + * Two-dimensional Geometric Shapes:: @end menu The @code{plot} function allows you to create simple x-y plots with *************** *** 283,288 **** --- 284,294 ---- @DOCSTRING(ezpolar) + @node Two-dimensional Geometric Shapes + @subsubsection Two-dimensional Geometric Shapes + + @DOCSTRING(rectangle) + @node Three-Dimensional Plots @subsection Three-Dimensional Plots diff -cNr octave-3.4.1/doc/interpreter/polar.eps octave-3.4.2/doc/interpreter/polar.eps *** octave-3.4.1/doc/interpreter/polar.eps 2011-06-15 11:39:44.000000000 -0400 --- octave-3.4.2/doc/interpreter/polar.eps 2011-06-02 16:45:17.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: polar.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:44 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: polar.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:17 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:44 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:17 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/polar.pdf and octave-3.4.2/doc/interpreter/polar.pdf differ diff -cNr octave-3.4.1/doc/interpreter/spchol.eps octave-3.4.2/doc/interpreter/spchol.eps *** octave-3.4.1/doc/interpreter/spchol.eps 2011-06-15 11:39:56.000000000 -0400 --- octave-3.4.2/doc/interpreter/spchol.eps 2011-06-09 14:03:05.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spchol.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:56 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spchol.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 9 14:03:05 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:56 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 9 14:03:05 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/spchol.pdf and octave-3.4.2/doc/interpreter/spchol.pdf differ diff -cNr octave-3.4.1/doc/interpreter/spcholperm.eps octave-3.4.2/doc/interpreter/spcholperm.eps *** octave-3.4.1/doc/interpreter/spcholperm.eps 2011-06-15 11:39:57.000000000 -0400 --- octave-3.4.2/doc/interpreter/spcholperm.eps 2011-06-09 14:03:06.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spcholperm.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:57 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spcholperm.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 9 14:03:06 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:57 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 9 14:03:06 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/spcholperm.pdf and octave-3.4.2/doc/interpreter/spcholperm.pdf differ diff -cNr octave-3.4.1/doc/interpreter/spmatrix.eps octave-3.4.2/doc/interpreter/spmatrix.eps *** octave-3.4.1/doc/interpreter/spmatrix.eps 2011-06-15 11:39:55.000000000 -0400 --- octave-3.4.2/doc/interpreter/spmatrix.eps 2011-06-09 14:03:04.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: spmatrix.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:55 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: spmatrix.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 9 14:03:04 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:55 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 9 14:03:04 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/spmatrix.pdf and octave-3.4.2/doc/interpreter/spmatrix.pdf differ diff -cNr octave-3.4.1/doc/interpreter/stamp-vti octave-3.4.2/doc/interpreter/stamp-vti *** octave-3.4.1/doc/interpreter/stamp-vti 2011-06-15 11:39:08.000000000 -0400 --- octave-3.4.2/doc/interpreter/stamp-vti 2011-06-24 10:50:18.000000000 -0400 *************** *** 1,4 **** ! @set UPDATED 15 June 2011 @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.1 ! @set VERSION 3.4.1 --- 1,4 ---- ! @set UPDATED 21 June 2011 @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.2 ! @set VERSION 3.4.2 diff -cNr octave-3.4.1/doc/interpreter/triplot.eps octave-3.4.2/doc/interpreter/triplot.eps *** octave-3.4.1/doc/interpreter/triplot.eps 2011-06-15 11:39:30.000000000 -0400 --- octave-3.4.2/doc/interpreter/triplot.eps 2011-06-02 16:45:02.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: triplot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:30 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: triplot.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Thu Jun 2 16:45:02 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:30 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Thu Jun 2 16:45:02 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/triplot.pdf and octave-3.4.2/doc/interpreter/triplot.pdf differ diff -cNr octave-3.4.1/doc/interpreter/version.texi octave-3.4.2/doc/interpreter/version.texi *** octave-3.4.1/doc/interpreter/version.texi 2011-06-15 11:39:08.000000000 -0400 --- octave-3.4.2/doc/interpreter/version.texi 2011-06-24 10:50:18.000000000 -0400 *************** *** 1,4 **** ! @set UPDATED 15 June 2011 @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.1 ! @set VERSION 3.4.1 --- 1,4 ---- ! @set UPDATED 21 June 2011 @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.2 ! @set VERSION 3.4.2 diff -cNr octave-3.4.1/doc/interpreter/voronoi.eps octave-3.4.2/doc/interpreter/voronoi.eps *** octave-3.4.1/doc/interpreter/voronoi.eps 2011-06-15 11:39:29.000000000 -0400 --- octave-3.4.2/doc/interpreter/voronoi.eps 2011-06-06 12:02:58.000000000 -0400 *************** *** 1,7 **** %!PS-Adobe-2.0 EPSF-2.0 %%Title: voronoi.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Wed Jun 15 11:39:29 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments --- 1,7 ---- %!PS-Adobe-2.0 EPSF-2.0 %%Title: voronoi.eps %%Creator: gnuplot 4.4 patchlevel 0 ! %%CreationDate: Mon Jun 6 12:02:58 2011 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments *************** *** 50,56 **** /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Wed Jun 15 11:39:29 2011) /DOCINFO pdfmark end } ifelse --- 50,56 ---- /Author (jwe) % /Producer (gnuplot) % /Keywords () ! /CreationDate (Mon Jun 6 12:02:58 2011) /DOCINFO pdfmark end } ifelse Binary files octave-3.4.1/doc/interpreter/voronoi.pdf and octave-3.4.2/doc/interpreter/voronoi.pdf differ Binary files octave-3.4.1/doc/liboctave/liboctave.pdf and octave-3.4.2/doc/liboctave/liboctave.pdf differ diff -cNr octave-3.4.1/doc/liboctave/Makefile.in octave-3.4.2/doc/liboctave/Makefile.in *** octave-3.4.1/doc/liboctave/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/doc/liboctave/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 66,76 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 66,75 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/doc/liboctave/stamp-vti octave-3.4.2/doc/liboctave/stamp-vti *** octave-3.4.1/doc/liboctave/stamp-vti 2011-06-15 11:41:19.000000000 -0400 --- octave-3.4.2/doc/liboctave/stamp-vti 2011-06-24 10:50:18.000000000 -0400 *************** *** 1,4 **** ! @set UPDATED 15 June 2011 ! @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.1 ! @set VERSION 3.4.1 --- 1,4 ---- ! @set UPDATED 11 April 2011 ! @set UPDATED-MONTH April 2011 ! @set EDITION 3.4.2 ! @set VERSION 3.4.2 diff -cNr octave-3.4.1/doc/liboctave/version.texi octave-3.4.2/doc/liboctave/version.texi *** octave-3.4.1/doc/liboctave/version.texi 2011-06-15 11:41:19.000000000 -0400 --- octave-3.4.2/doc/liboctave/version.texi 2011-06-24 10:50:18.000000000 -0400 *************** *** 1,4 **** ! @set UPDATED 15 June 2011 ! @set UPDATED-MONTH June 2011 ! @set EDITION 3.4.1 ! @set VERSION 3.4.1 --- 1,4 ---- ! @set UPDATED 11 April 2011 ! @set UPDATED-MONTH April 2011 ! @set EDITION 3.4.2 ! @set VERSION 3.4.2 diff -cNr octave-3.4.1/doc/Makefile.in octave-3.4.2/doc/Makefile.in *** octave-3.4.1/doc/Makefile.in 2011-06-15 11:31:25.000000000 -0400 --- octave-3.4.2/doc/Makefile.in 2011-06-24 10:38:37.000000000 -0400 *************** *** 64,74 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 64,73 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/doc/refcard/Makefile.in octave-3.4.2/doc/refcard/Makefile.in *** octave-3.4.1/doc/refcard/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/doc/refcard/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 64,74 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 64,73 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ Binary files octave-3.4.1/doc/refcard/refcard-a4.pdf and octave-3.4.2/doc/refcard/refcard-a4.pdf differ Binary files octave-3.4.1/doc/refcard/refcard-legal.pdf and octave-3.4.2/doc/refcard/refcard-legal.pdf differ Binary files octave-3.4.1/doc/refcard/refcard-letter.pdf and octave-3.4.2/doc/refcard/refcard-letter.pdf differ diff -cNr octave-3.4.1/examples/Makefile.in octave-3.4.2/examples/Makefile.in *** octave-3.4.1/examples/Makefile.in 2011-06-15 11:31:26.000000000 -0400 --- octave-3.4.2/examples/Makefile.in 2011-06-24 10:38:38.000000000 -0400 *************** *** 66,76 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 66,75 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/libcruft/Makefile.in octave-3.4.2/libcruft/Makefile.in *** octave-3.4.1/libcruft/Makefile.in 2011-06-15 11:31:27.000000000 -0400 --- octave-3.4.2/libcruft/Makefile.in 2011-06-24 10:38:39.000000000 -0400 *************** *** 77,87 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 77,86 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/libgnu/alloca.c octave-3.4.2/libgnu/alloca.c *** octave-3.4.1/libgnu/alloca.c 2011-06-15 11:31:05.000000000 -0400 --- octave-3.4.2/libgnu/alloca.c 2011-06-21 12:43:01.000000000 -0400 *************** *** 95,119 **** static int stack_dir; /* 1 or -1 once known. */ # define STACK_DIR stack_dir ! static void ! find_stack_direction (char **ptr) { ! auto char dummy; /* To get stack address. */ ! ! if (*ptr == NULL) ! { /* Initial entry. */ ! *ptr = ADDRESS_FUNCTION (dummy); ! ! find_stack_direction (ptr); /* Recurse once. */ ! } ! else ! { ! /* Second entry. */ ! if (ADDRESS_FUNCTION (dummy) > *ptr) ! stack_dir = 1; /* Stack grew upward. */ ! else ! stack_dir = -1; /* Stack grew downward. */ ! } } # endif /* STACK_DIRECTION == 0 */ --- 95,109 ---- static int stack_dir; /* 1 or -1 once known. */ # define STACK_DIR stack_dir ! static int ! find_stack_direction (int *addr, int depth) { ! int dir, dummy = 0; ! if (! addr) ! addr = &dummy; ! *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; ! dir = depth ? find_stack_direction (addr, depth - 1) : 0; ! return dir + dummy; } # endif /* STACK_DIRECTION == 0 */ *************** *** 156,165 **** # if STACK_DIRECTION == 0 if (STACK_DIR == 0) /* Unknown growth direction. */ ! { ! char *addr = NULL; /* Address of first `dummy', once known. */ ! find_stack_direction (&addr); ! } # endif /* Reclaim garbage, defined as all alloca'd storage that --- 146,152 ---- # if STACK_DIRECTION == 0 if (STACK_DIR == 0) /* Unknown growth direction. */ ! STACK_DIR = find_stack_direction (NULL, (size & 1) + 20); # endif /* Reclaim garbage, defined as all alloca'd storage that diff -cNr octave-3.4.1/libgnu/float.c octave-3.4.2/libgnu/float.c *** octave-3.4.1/libgnu/float.c 1969-12-31 19:00:00.000000000 -0500 --- octave-3.4.2/libgnu/float.c 2011-06-21 12:43:02.000000000 -0400 *************** *** 0 **** --- 1,35 ---- + /* -*- buffer-read-only: t -*- vi: set ro: */ + /* DO NOT EDIT! GENERATED AUTOMATICALLY! */ + /* Auxiliary definitions for . + Copyright (C) 2011 Free Software Foundation, Inc. + Written by Bruno Haible , 2011. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + #include + + /* Specification. */ + #include + + #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ + const union gl_long_double_union gl_LDBL_MAX = + { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; + #elif defined __i386__ + const union gl_long_double_union gl_LDBL_MAX = + { { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } }; + #else + /* This declaration is solely to ensure that after preprocessing + this file is never empty. */ + typedef int dummy; + #endif diff -cNr octave-3.4.1/libgnu/float.in.h octave-3.4.2/libgnu/float.in.h *** octave-3.4.1/libgnu/float.in.h 2011-06-15 11:31:06.000000000 -0400 --- octave-3.4.2/libgnu/float.in.h 2011-06-21 12:43:02.000000000 -0400 *************** *** 31,36 **** --- 31,37 ---- #define _@GUARD_PREFIX@_FLOAT_H /* 'long double' properties. */ + #if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__) /* Number of mantissa units, in base FLT_RADIX. */ # undef LDBL_MANT_DIG *************** *** 61,65 **** --- 62,176 ---- # define LDBL_MAX_10_EXP 4932 #endif + /* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of + precision in the compiler but 64 bits of precision at runtime. See + . */ + #if defined __i386__ && defined __FreeBSD__ + /* Number of mantissa units, in base FLT_RADIX. */ + # undef LDBL_MANT_DIG + # define LDBL_MANT_DIG 64 + /* Number of decimal digits that is sufficient for representing a number. */ + # undef LDBL_DIG + # define LDBL_DIG 18 + /* x-1 where x is the smallest representable number > 1. */ + # undef LDBL_EPSILON + # define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */ + /* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */ + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP (-16381) + /* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */ + # undef LDBL_MAX_EXP + # define LDBL_MAX_EXP 16384 + /* Minimum positive normalized number. */ + # undef LDBL_MIN + # define LDBL_MIN 3.3621031431120935E-4932L /* = 0x1p-16382L */ + /* Maximum representable finite number. */ + # undef LDBL_MAX + /* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }. + But the largest literal that GCC allows us to write is + 0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }. + So, define it like this through a reference to an external variable + + const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }; + extern const long double LDBL_MAX; + + Unfortunately, this is not a constant expression. */ + union gl_long_double_union + { + struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd; + long double ld; + }; + extern const union gl_long_double_union gl_LDBL_MAX; + # define LDBL_MAX (gl_LDBL_MAX.ld) + /* Minimum e such that 10^e is in the range of normalized numbers. */ + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP (-4931) + /* Maximum e such that 10^e is in the range of representable finite numbers. */ + # undef LDBL_MAX_10_EXP + # define LDBL_MAX_10_EXP 4932 + #endif + + /* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are + wrong. */ + #if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ + # undef LDBL_MAX + /* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }. + It is not easy to define: + #define LDBL_MAX 1.79769313486231580793728971405302307166e308L + is too small, whereas + #define LDBL_MAX 1.79769313486231580793728971405302307167e308L + is too large. Apparently a bug in GCC decimal-to-binary conversion. + Also, I can't get values larger than + #define LDBL63 ((long double) (1ULL << 63)) + #define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) + #define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) + #define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63) + #define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL) + which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }. + So, define it like this through a reference to an external variable + + const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }; + extern const long double LDBL_MAX; + + or through a pointer cast + + #define LDBL_MAX \ + (*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL }) + + Unfortunately, this is not a constant expression, and the latter expression + does not work well when GCC is optimizing.. */ + union gl_long_double_union + { + struct { double hi; double lo; } dd; + long double ld; + }; + extern const union gl_long_double_union gl_LDBL_MAX; + # define LDBL_MAX (gl_LDBL_MAX.ld) + #endif + + /* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong. + On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON + are wrong. */ + #if defined __sgi && (LDBL_MANT_DIG >= 106) + # undef LDBL_MANT_DIG + # define LDBL_MANT_DIG 106 + # if defined __GNUC__ + # undef LDBL_MIN_EXP + # define LDBL_MIN_EXP DBL_MIN_EXP + # undef LDBL_MIN_10_EXP + # define LDBL_MIN_10_EXP DBL_MIN_10_EXP + # undef LDBL_MIN + # define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */ + # undef LDBL_EPSILON + # define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */ + # endif + #endif + #endif /* _@GUARD_PREFIX@_FLOAT_H */ #endif /* _@GUARD_PREFIX@_FLOAT_H */ diff -cNr octave-3.4.1/libgnu/gnulib.mk octave-3.4.2/libgnu/gnulib.mk *** octave-3.4.1/libgnu/gnulib.mk 2011-06-15 11:31:05.000000000 -0400 --- octave-3.4.2/libgnu/gnulib.mk 2011-06-21 12:43:01.000000000 -0400 *************** *** 178,187 **** ## begin gnulib module cloexec ! EXTRA_DIST += cloexec.c cloexec.h ! ! EXTRA_libgnu_la_SOURCES += cloexec.c ## end gnulib module cloexec --- 178,186 ---- ## begin gnulib module cloexec + libgnu_la_SOURCES += cloexec.c ! EXTRA_DIST += cloexec.h ## end gnulib module cloexec *************** *** 244,253 **** ## begin gnulib module crypto/md5 ! EXTRA_DIST += md5.c md5.h ! ! EXTRA_libgnu_la_SOURCES += md5.c ## end gnulib module crypto/md5 --- 243,251 ---- ## begin gnulib module crypto/md5 + libgnu_la_SOURCES += md5.c ! EXTRA_DIST += md5.h ## end gnulib module crypto/md5 *************** *** 301,310 **** ## begin gnulib module dirname-lgpl ! EXTRA_DIST += basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c ! ! EXTRA_libgnu_la_SOURCES += basename-lgpl.c dirname-lgpl.c stripslash.c ## end gnulib module dirname-lgpl --- 299,307 ---- ## begin gnulib module dirname-lgpl + libgnu_la_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c ! EXTRA_DIST += dirname.h ## end gnulib module dirname-lgpl *************** *** 465,483 **** ## begin gnulib module filemode ! EXTRA_DIST += filemode.c filemode.h ! ! EXTRA_libgnu_la_SOURCES += filemode.c ## end gnulib module filemode ## begin gnulib module filenamecat-lgpl ! EXTRA_DIST += filenamecat-lgpl.c filenamecat.h ! ! EXTRA_libgnu_la_SOURCES += filenamecat-lgpl.c ## end gnulib module filenamecat-lgpl --- 462,478 ---- ## begin gnulib module filemode + libgnu_la_SOURCES += filemode.c ! EXTRA_DIST += filemode.h ## end gnulib module filemode ## begin gnulib module filenamecat-lgpl + libgnu_la_SOURCES += filenamecat-lgpl.c ! EXTRA_DIST += filenamecat.h ## end gnulib module filenamecat-lgpl *************** *** 505,511 **** endif MOSTLYCLEANFILES += float.h float.h-t ! EXTRA_DIST += float.in.h ## end gnulib module float --- 500,508 ---- endif MOSTLYCLEANFILES += float.h float.h-t ! EXTRA_DIST += float.c float.in.h ! ! EXTRA_libgnu_la_SOURCES += float.c ## end gnulib module float *************** *** 1169,1178 **** ## begin gnulib module save-cwd ! EXTRA_DIST += save-cwd.c save-cwd.h ! ! EXTRA_libgnu_la_SOURCES += save-cwd.c ## end gnulib module save-cwd --- 1166,1174 ---- ## begin gnulib module save-cwd + libgnu_la_SOURCES += save-cwd.c ! EXTRA_DIST += save-cwd.h ## end gnulib module save-cwd *************** *** 1624,1633 **** ## begin gnulib module strftime ! EXTRA_DIST += strftime.c strftime.h ! ! EXTRA_libgnu_la_SOURCES += strftime.c ## end gnulib module strftime --- 1620,1628 ---- ## begin gnulib module strftime + libgnu_la_SOURCES += strftime.c ! EXTRA_DIST += strftime.h ## end gnulib module strftime *************** *** 1984,1993 **** ## begin gnulib module tempname ! EXTRA_DIST += tempname.c tempname.h ! ! EXTRA_libgnu_la_SOURCES += tempname.c ## end gnulib module tempname --- 1979,1987 ---- ## begin gnulib module tempname + libgnu_la_SOURCES += tempname.c ! EXTRA_DIST += tempname.h ## end gnulib module tempname *************** *** 2209,2218 **** ## begin gnulib module unistd-safer ! EXTRA_DIST += dup-safer.c fd-safer.c pipe-safer.c unistd--.h unistd-safer.h ! ! EXTRA_libgnu_la_SOURCES += dup-safer.c fd-safer.c pipe-safer.c ## end gnulib module unistd-safer --- 2203,2211 ---- ## begin gnulib module unistd-safer + libgnu_la_SOURCES += dup-safer.c fd-safer.c pipe-safer.c ! EXTRA_DIST += unistd--.h unistd-safer.h ## end gnulib module unistd-safer diff -cNr octave-3.4.1/libgnu/Makefile.in octave-3.4.2/libgnu/Makefile.in *** octave-3.4.1/libgnu/Makefile.in 2011-06-15 11:31:27.000000000 -0400 --- octave-3.4.2/libgnu/Makefile.in 2011-06-24 10:38:39.000000000 -0400 *************** *** 78,88 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 78,87 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ *************** *** 165,172 **** LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = c-ctype.lo c-strcasecmp.lo c-strncasecmp.lo \ ! exitfail.lo fd-hook.lo freading.lo localcharset.lo malloca.lo \ ! nproc.lo openat-die.lo progname.lo sockets.lo strnlen1.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ --- 164,175 ---- LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = c-ctype.lo c-strcasecmp.lo c-strncasecmp.lo \ ! cloexec.lo md5.lo dirname-lgpl.lo basename-lgpl.lo \ ! stripslash.lo exitfail.lo fd-hook.lo filemode.lo \ ! filenamecat-lgpl.lo freading.lo localcharset.lo malloca.lo \ ! nproc.lo openat-die.lo progname.lo save-cwd.lo sockets.lo \ ! strftime.lo strnlen1.lo tempname.lo dup-safer.lo fd-safer.lo \ ! pipe-safer.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) libgnu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ *************** *** 1325,1361 **** EXTRA_DIST = alignof.h alloca.c alloca.in.h \ $(top_srcdir)/build-aux/arg-nonnull.h \ $(top_srcdir)/build-aux/c++defs.h canonicalize-lgpl.c \ ! chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.c \ ! cloexec.h close.c md5.c md5.h dirent.in.h dirfd.c \ ! basename-lgpl.c dirname-lgpl.c dirname.h stripslash.c \ ! dosname.h dup2.c errno.in.h error.c error.h exitfail.h \ ! fchdir.c fclose.c fcntl.c fcntl.in.h fd-hook.h fdopendir.c \ ! openat-priv.h openat-proc.c fflush.c stdio-impl.h filemode.c \ ! filemode.h filenamecat-lgpl.c filenamecat.h float.in.h floor.c \ ! fnmatch.c fnmatch.in.h fnmatch_loop.c fpurge.c stdio-impl.h \ ! freading.h stdio-impl.h fseek.c fseeko.c stdio-impl.h ftell.c \ ! ftello.c stdio-impl.h getcwd.c getcwd-lgpl.c getdtablesize.c \ ! gethostname.c w32sock.h getlogin_r.c getopt.c getopt.in.h \ ! getopt1.c getopt_int.h gettimeofday.c glob-libc.h glob.c \ ! glob.in.h intprops.h lchown.c link.c config.charset \ ! ref-add.sin ref-del.sin lseek.c lstat.c malloc.c malloca.h \ ! malloca.valgrind math.in.h mbrtowc.c mbsinit.c \ ! mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c memchr.c \ ! memchr.valgrind mempcpy.c memrchr.c mkdir.c mkfifo.c mkstemp.c \ ! mktime-internal.h mktime.c nanosleep.c nproc.h open.c \ ! at-func.c fchmodat.c fchownat.c fstatat.c mkdirat.c \ ! openat-priv.h openat-proc.c openat.c openat.h unlinkat.c \ ! pathmax.h readlink.c realloc.c rename.c rmdir.c round.c \ ! round.c roundf.c same-inode.h save-cwd.c save-cwd.h select.c \ ! sig-handler.h sigaction.c signal.in.h sigprocmask.c sleep.c \ ! w32sock.h stat.c stdbool.in.h stddef.in.h stdint.in.h \ stdio.in.h stdlib.in.h strdup.c streq.h strerror.c \ ! strerror-override.c strerror-override.h strftime.c strftime.h \ ! string.in.h strptime.c symlink.c sys_select.in.h \ ! sys_socket.in.h sys_stat.in.h sys_time.in.h sys_times.in.h \ ! sys_uio.in.h tempname.c tempname.h time.in.h time_r.c times.c \ ! trunc.c trunc.c truncf.c unistd.in.h dup-safer.c fd-safer.c \ ! pipe-safer.c unistd--.h unistd-safer.h unlink.c asnprintf.c \ float+.h printf-args.c printf-args.h printf-parse.c \ printf-parse.h vasnprintf.c vasnprintf.h verify.h vsnprintf.c \ $(top_srcdir)/build-aux/warn-on-use.h wchar.in.h wctype.in.h --- 1328,1361 ---- EXTRA_DIST = alignof.h alloca.c alloca.in.h \ $(top_srcdir)/build-aux/arg-nonnull.h \ $(top_srcdir)/build-aux/c++defs.h canonicalize-lgpl.c \ ! chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.h \ ! close.c md5.h dirent.in.h dirfd.c dirname.h dosname.h dup2.c \ ! errno.in.h error.c error.h exitfail.h fchdir.c fclose.c \ ! fcntl.c fcntl.in.h fd-hook.h fdopendir.c openat-priv.h \ ! openat-proc.c fflush.c stdio-impl.h filemode.h filenamecat.h \ ! float.c float.in.h floor.c fnmatch.c fnmatch.in.h \ ! fnmatch_loop.c fpurge.c stdio-impl.h freading.h stdio-impl.h \ ! fseek.c fseeko.c stdio-impl.h ftell.c ftello.c stdio-impl.h \ ! getcwd.c getcwd-lgpl.c getdtablesize.c gethostname.c w32sock.h \ ! getlogin_r.c getopt.c getopt.in.h getopt1.c getopt_int.h \ ! gettimeofday.c glob-libc.h glob.c glob.in.h intprops.h \ ! lchown.c link.c config.charset ref-add.sin ref-del.sin lseek.c \ ! lstat.c malloc.c malloca.h malloca.valgrind math.in.h \ ! mbrtowc.c mbsinit.c mbsrtowcs-impl.h mbsrtowcs-state.c \ ! mbsrtowcs.c memchr.c memchr.valgrind mempcpy.c memrchr.c \ ! mkdir.c mkfifo.c mkstemp.c mktime-internal.h mktime.c \ ! nanosleep.c nproc.h open.c at-func.c fchmodat.c fchownat.c \ ! fstatat.c mkdirat.c openat-priv.h openat-proc.c openat.c \ ! openat.h unlinkat.c pathmax.h readlink.c realloc.c rename.c \ ! rmdir.c round.c round.c roundf.c same-inode.h save-cwd.h \ ! select.c sig-handler.h sigaction.c signal.in.h sigprocmask.c \ ! sleep.c w32sock.h stat.c stdbool.in.h stddef.in.h stdint.in.h \ stdio.in.h stdlib.in.h strdup.c streq.h strerror.c \ ! strerror-override.c strerror-override.h strftime.h string.in.h \ ! strptime.c symlink.c sys_select.in.h sys_socket.in.h \ ! sys_stat.in.h sys_time.in.h sys_times.in.h sys_uio.in.h \ ! tempname.h time.in.h time_r.c times.c trunc.c trunc.c truncf.c \ ! unistd.in.h unistd--.h unistd-safer.h unlink.c asnprintf.c \ float+.h printf-args.c printf-args.h printf-parse.c \ printf-parse.h vasnprintf.c vasnprintf.h verify.h vsnprintf.c \ $(top_srcdir)/build-aux/warn-on-use.h wchar.in.h wctype.in.h *************** *** 1396,1426 **** AM_CPPFLAGS = AM_CFLAGS = libgnu_la_SOURCES = c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \ ! c-strncasecmp.c exitfail.c fd-hook.c freading.c gettext.h \ ! localcharset.h localcharset.c malloca.c nproc.c openat-die.c \ ! progname.h progname.c size_max.h sockets.h sockets.c \ ! strnlen1.h strnlen1.c xsize.h libgnu_la_LIBADD = $(gl_LTLIBOBJS) @LTALLOCA@ libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) @LTALLOCA@ EXTRA_libgnu_la_SOURCES = alloca.c canonicalize-lgpl.c chdir-long.c \ ! chown.c fchown-stub.c cloexec.c close.c md5.c dirfd.c \ ! basename-lgpl.c dirname-lgpl.c stripslash.c dup2.c error.c \ ! fchdir.c fclose.c fcntl.c fdopendir.c openat-proc.c fflush.c \ ! filemode.c filenamecat-lgpl.c floor.c fnmatch.c fnmatch_loop.c \ ! fpurge.c fseek.c fseeko.c ftell.c ftello.c getcwd.c \ ! getcwd-lgpl.c getdtablesize.c gethostname.c getlogin_r.c \ ! getopt.c getopt1.c gettimeofday.c glob.c lchown.c link.c \ ! lseek.c lstat.c malloc.c mbrtowc.c mbsinit.c mbsrtowcs-state.c \ ! mbsrtowcs.c memchr.c mempcpy.c memrchr.c mkdir.c mkfifo.c \ ! mkstemp.c mktime.c nanosleep.c open.c at-func.c fchmodat.c \ ! fchownat.c fstatat.c mkdirat.c openat-proc.c openat.c \ ! unlinkat.c readlink.c realloc.c rename.c rmdir.c round.c \ ! round.c roundf.c save-cwd.c select.c sigaction.c sigprocmask.c \ ! sleep.c stat.c strdup.c strerror.c strerror-override.c \ ! strftime.c strptime.c symlink.c tempname.c time_r.c times.c \ ! trunc.c trunc.c truncf.c dup-safer.c fd-safer.c pipe-safer.c \ ! unlink.c asnprintf.c printf-args.c printf-parse.c vasnprintf.c \ ! vsnprintf.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(COPYSIGN_LIBM) \ $(FLOOR_LIBM) $(GETHOSTNAME_LIB) $(LIBSOCKET) $(LIB_NANOSLEEP) \ $(LTLIBINTL) $(ROUNDF_LIBM) $(ROUND_LIBM) $(TRUNCF_LIBM) \ --- 1396,1426 ---- AM_CPPFLAGS = AM_CFLAGS = libgnu_la_SOURCES = c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \ ! c-strncasecmp.c cloexec.c md5.c dirname-lgpl.c basename-lgpl.c \ ! stripslash.c exitfail.c fd-hook.c filemode.c \ ! filenamecat-lgpl.c freading.c gettext.h localcharset.h \ ! localcharset.c malloca.c nproc.c openat-die.c progname.h \ ! progname.c save-cwd.c size_max.h sockets.h sockets.c \ ! strftime.c strnlen1.h strnlen1.c tempname.c dup-safer.c \ ! fd-safer.c pipe-safer.c xsize.h libgnu_la_LIBADD = $(gl_LTLIBOBJS) @LTALLOCA@ libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) @LTALLOCA@ EXTRA_libgnu_la_SOURCES = alloca.c canonicalize-lgpl.c chdir-long.c \ ! chown.c fchown-stub.c close.c dirfd.c dup2.c error.c fchdir.c \ ! fclose.c fcntl.c fdopendir.c openat-proc.c fflush.c float.c \ ! floor.c fnmatch.c fnmatch_loop.c fpurge.c fseek.c fseeko.c \ ! ftell.c ftello.c getcwd.c getcwd-lgpl.c getdtablesize.c \ ! gethostname.c getlogin_r.c getopt.c getopt1.c gettimeofday.c \ ! glob.c lchown.c link.c lseek.c lstat.c malloc.c mbrtowc.c \ ! mbsinit.c mbsrtowcs-state.c mbsrtowcs.c memchr.c mempcpy.c \ ! memrchr.c mkdir.c mkfifo.c mkstemp.c mktime.c nanosleep.c \ ! open.c at-func.c fchmodat.c fchownat.c fstatat.c mkdirat.c \ ! openat-proc.c openat.c unlinkat.c readlink.c realloc.c \ ! rename.c rmdir.c round.c round.c roundf.c select.c sigaction.c \ ! sigprocmask.c sleep.c stat.c strdup.c strerror.c \ ! strerror-override.c strptime.c symlink.c time_r.c times.c \ ! trunc.c trunc.c truncf.c unlink.c asnprintf.c printf-args.c \ ! printf-parse.c vasnprintf.c vsnprintf.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(COPYSIGN_LIBM) \ $(FLOOR_LIBM) $(GETHOSTNAME_LIB) $(LIBSOCKET) $(LIB_NANOSLEEP) \ $(LTLIBINTL) $(ROUNDF_LIBM) $(ROUND_LIBM) $(TRUNCF_LIBM) \ *************** *** 1517,1522 **** --- 1517,1523 ---- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filenamecat-lgpl.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch_loop.Plo@am__quote@ diff -cNr octave-3.4.1/libgnu/pathmax.h octave-3.4.2/libgnu/pathmax.h *** octave-3.4.1/libgnu/pathmax.h 2011-06-15 11:31:07.000000000 -0400 --- octave-3.4.2/libgnu/pathmax.h 2011-06-21 12:43:03.000000000 -0400 *************** *** 21,26 **** --- 21,32 ---- #ifndef _PATHMAX_H # define _PATHMAX_H + /* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename, + including the terminating NUL byte. + + PATH_MAX is not defined on systems which have no limit on filename length, + such as GNU/Hurd. */ + # include # include *************** *** 47,50 **** --- 53,65 ---- # define PATH_MAX _POSIX_PATH_MAX # endif + # ifdef __hpux + /* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename, + *not* including the terminating NUL byte, and is set to 1023. + Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is + not defined at all any more. */ + # undef PATH_MAX + # define PATH_MAX 1024 + # endif + #endif /* _PATHMAX_H */ diff -cNr octave-3.4.1/libgnu/strerror-override.c octave-3.4.2/libgnu/strerror-override.c *** octave-3.4.1/libgnu/strerror-override.c 2011-06-15 11:31:08.000000000 -0400 --- octave-3.4.2/libgnu/strerror-override.c 2011-06-21 12:43:04.000000000 -0400 *************** *** 36,182 **** const char * strerror_override (int errnum) { - const char *msg = NULL; - - #if GNULIB_defined_ETXTBSY \ - || GNULIB_defined_ESOCK \ - || GNULIB_defined_ENOMSG \ - || GNULIB_defined_EIDRM \ - || GNULIB_defined_ENOLINK \ - || GNULIB_defined_EPROTO \ - || GNULIB_defined_EMULTIHOP \ - || GNULIB_defined_EBADMSG \ - || GNULIB_defined_EOVERFLOW \ - || GNULIB_defined_ENOTSUP \ - || GNULIB_defined_ESTALE \ - || GNULIB_defined_EDQUOT \ - || GNULIB_defined_ECANCELED /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ switch (errnum) { ! # if GNULIB_defined_ETXTBSY case ETXTBSY: ! msg = "Text file busy"; ! break; ! # endif ! # if GNULIB_defined_ESOCK /* native Windows platforms */ /* EWOULDBLOCK is the same as EAGAIN. */ case EINPROGRESS: ! msg = "Operation now in progress"; ! break; case EALREADY: ! msg = "Operation already in progress"; ! break; case ENOTSOCK: ! msg = "Socket operation on non-socket"; ! break; case EDESTADDRREQ: ! msg = "Destination address required"; ! break; case EMSGSIZE: ! msg = "Message too long"; ! break; case EPROTOTYPE: ! msg = "Protocol wrong type for socket"; ! break; case ENOPROTOOPT: ! msg = "Protocol not available"; ! break; case EPROTONOSUPPORT: ! msg = "Protocol not supported"; ! break; case ESOCKTNOSUPPORT: ! msg = "Socket type not supported"; ! break; case EOPNOTSUPP: ! msg = "Operation not supported"; ! break; case EPFNOSUPPORT: ! msg = "Protocol family not supported"; ! break; case EAFNOSUPPORT: ! msg = "Address family not supported by protocol"; ! break; case EADDRINUSE: ! msg = "Address already in use"; ! break; case EADDRNOTAVAIL: ! msg = "Cannot assign requested address"; ! break; case ENETDOWN: ! msg = "Network is down"; ! break; case ENETUNREACH: ! msg = "Network is unreachable"; ! break; case ENETRESET: ! msg = "Network dropped connection on reset"; ! break; case ECONNABORTED: ! msg = "Software caused connection abort"; ! break; case ECONNRESET: ! msg = "Connection reset by peer"; ! break; case ENOBUFS: ! msg = "No buffer space available"; ! break; case EISCONN: ! msg = "Transport endpoint is already connected"; ! break; case ENOTCONN: ! msg = "Transport endpoint is not connected"; ! break; case ESHUTDOWN: ! msg = "Cannot send after transport endpoint shutdown"; ! break; case ETOOMANYREFS: ! msg = "Too many references: cannot splice"; ! break; case ETIMEDOUT: ! msg = "Connection timed out"; ! break; case ECONNREFUSED: ! msg = "Connection refused"; ! break; case ELOOP: ! msg = "Too many levels of symbolic links"; ! break; case EHOSTDOWN: ! msg = "Host is down"; ! break; case EHOSTUNREACH: ! msg = "No route to host"; ! break; case EPROCLIM: ! msg = "Too many processes"; ! break; case EUSERS: ! msg = "Too many users"; ! break; case EDQUOT: ! msg = "Disk quota exceeded"; ! break; case ESTALE: ! msg = "Stale NFS file handle"; ! break; case EREMOTE: ! msg = "Object is remote"; ! break; ! # if HAVE_WINSOCK2_H /* WSA_INVALID_HANDLE maps to EBADF */ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ /* WSA_INVALID_PARAMETER maps to EINVAL */ case WSA_OPERATION_ABORTED: ! msg = "Overlapped operation aborted"; ! break; case WSA_IO_INCOMPLETE: ! msg = "Overlapped I/O event object not in signaled state"; ! break; case WSA_IO_PENDING: ! msg = "Overlapped operations will complete later"; ! break; /* WSAEINTR maps to EINTR */ /* WSAEBADF maps to EBADF */ /* WSAEACCES maps to EACCES */ --- 36,129 ---- const char * strerror_override (int errnum) { /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */ switch (errnum) { ! #if GNULIB_defined_ETXTBSY case ETXTBSY: ! return "Text file busy"; ! #endif ! #if GNULIB_defined_ESOCK /* native Windows platforms */ /* EWOULDBLOCK is the same as EAGAIN. */ case EINPROGRESS: ! return "Operation now in progress"; case EALREADY: ! return "Operation already in progress"; case ENOTSOCK: ! return "Socket operation on non-socket"; case EDESTADDRREQ: ! return "Destination address required"; case EMSGSIZE: ! return "Message too long"; case EPROTOTYPE: ! return "Protocol wrong type for socket"; case ENOPROTOOPT: ! return "Protocol not available"; case EPROTONOSUPPORT: ! return "Protocol not supported"; case ESOCKTNOSUPPORT: ! return "Socket type not supported"; case EOPNOTSUPP: ! return "Operation not supported"; case EPFNOSUPPORT: ! return "Protocol family not supported"; case EAFNOSUPPORT: ! return "Address family not supported by protocol"; case EADDRINUSE: ! return "Address already in use"; case EADDRNOTAVAIL: ! return "Cannot assign requested address"; case ENETDOWN: ! return "Network is down"; case ENETUNREACH: ! return "Network is unreachable"; case ENETRESET: ! return "Network dropped connection on reset"; case ECONNABORTED: ! return "Software caused connection abort"; case ECONNRESET: ! return "Connection reset by peer"; case ENOBUFS: ! return "No buffer space available"; case EISCONN: ! return "Transport endpoint is already connected"; case ENOTCONN: ! return "Transport endpoint is not connected"; case ESHUTDOWN: ! return "Cannot send after transport endpoint shutdown"; case ETOOMANYREFS: ! return "Too many references: cannot splice"; case ETIMEDOUT: ! return "Connection timed out"; case ECONNREFUSED: ! return "Connection refused"; case ELOOP: ! return "Too many levels of symbolic links"; case EHOSTDOWN: ! return "Host is down"; case EHOSTUNREACH: ! return "No route to host"; case EPROCLIM: ! return "Too many processes"; case EUSERS: ! return "Too many users"; case EDQUOT: ! return "Disk quota exceeded"; case ESTALE: ! return "Stale NFS file handle"; case EREMOTE: ! return "Object is remote"; ! # if HAVE_WINSOCK2_H /* WSA_INVALID_HANDLE maps to EBADF */ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */ /* WSA_INVALID_PARAMETER maps to EINVAL */ case WSA_OPERATION_ABORTED: ! return "Overlapped operation aborted"; case WSA_IO_INCOMPLETE: ! return "Overlapped I/O event object not in signaled state"; case WSA_IO_PENDING: ! return "Overlapped operations will complete later"; /* WSAEINTR maps to EINTR */ /* WSAEBADF maps to EBADF */ /* WSAEACCES maps to EACCES */ *************** *** 221,347 **** /* WSAESTALE is ESTALE */ /* WSAEREMOTE is EREMOTE */ case WSASYSNOTREADY: ! msg = "Network subsystem is unavailable"; ! break; case WSAVERNOTSUPPORTED: ! msg = "Winsock.dll version out of range"; ! break; case WSANOTINITIALISED: ! msg = "Successful WSAStartup not yet performed"; ! break; case WSAEDISCON: ! msg = "Graceful shutdown in progress"; ! break; case WSAENOMORE: case WSA_E_NO_MORE: ! msg = "No more results"; ! break; case WSAECANCELLED: case WSA_E_CANCELLED: ! msg = "Call was canceled"; ! break; case WSAEINVALIDPROCTABLE: ! msg = "Procedure call table is invalid"; ! break; case WSAEINVALIDPROVIDER: ! msg = "Service provider is invalid"; ! break; case WSAEPROVIDERFAILEDINIT: ! msg = "Service provider failed to initialize"; ! break; case WSASYSCALLFAILURE: ! msg = "System call failure"; ! break; case WSASERVICE_NOT_FOUND: ! msg = "Service not found"; ! break; case WSATYPE_NOT_FOUND: ! msg = "Class type not found"; ! break; case WSAEREFUSED: ! msg = "Database query was refused"; ! break; case WSAHOST_NOT_FOUND: ! msg = "Host not found"; ! break; case WSATRY_AGAIN: ! msg = "Nonauthoritative host not found"; ! break; case WSANO_RECOVERY: ! msg = "Nonrecoverable error"; ! break; case WSANO_DATA: ! msg = "Valid name, no data record of requested type"; ! break; /* WSA_QOS_* omitted */ - # endif # endif ! # if GNULIB_defined_ENOMSG case ENOMSG: ! msg = "No message of desired type"; ! break; ! # endif ! # if GNULIB_defined_EIDRM case EIDRM: ! msg = "Identifier removed"; ! break; ! # endif ! # if GNULIB_defined_ENOLINK case ENOLINK: ! msg = "Link has been severed"; ! break; ! # endif ! # if GNULIB_defined_EPROTO case EPROTO: ! msg = "Protocol error"; ! break; ! # endif ! # if GNULIB_defined_EMULTIHOP case EMULTIHOP: ! msg = "Multihop attempted"; ! break; ! # endif ! # if GNULIB_defined_EBADMSG case EBADMSG: ! msg = "Bad message"; ! break; ! # endif ! # if GNULIB_defined_EOVERFLOW case EOVERFLOW: ! msg = "Value too large for defined data type"; ! break; ! # endif ! # if GNULIB_defined_ENOTSUP case ENOTSUP: ! msg = "Not supported"; ! break; ! # endif ! # if GNULIB_defined_ESTALE case ESTALE: ! msg = "Stale NFS file handle"; ! break; ! # endif ! # if GNULIB_defined_EDQUOT case EDQUOT: ! msg = "Disk quota exceeded"; ! break; ! # endif ! # if GNULIB_defined_ECANCELED case ECANCELED: ! msg = "Operation canceled"; ! break; ! # endif ! } #endif ! return msg; } --- 168,266 ---- /* WSAESTALE is ESTALE */ /* WSAEREMOTE is EREMOTE */ case WSASYSNOTREADY: ! return "Network subsystem is unavailable"; case WSAVERNOTSUPPORTED: ! return "Winsock.dll version out of range"; case WSANOTINITIALISED: ! return "Successful WSAStartup not yet performed"; case WSAEDISCON: ! return "Graceful shutdown in progress"; case WSAENOMORE: case WSA_E_NO_MORE: ! return "No more results"; case WSAECANCELLED: case WSA_E_CANCELLED: ! return "Call was canceled"; case WSAEINVALIDPROCTABLE: ! return "Procedure call table is invalid"; case WSAEINVALIDPROVIDER: ! return "Service provider is invalid"; case WSAEPROVIDERFAILEDINIT: ! return "Service provider failed to initialize"; case WSASYSCALLFAILURE: ! return "System call failure"; case WSASERVICE_NOT_FOUND: ! return "Service not found"; case WSATYPE_NOT_FOUND: ! return "Class type not found"; case WSAEREFUSED: ! return "Database query was refused"; case WSAHOST_NOT_FOUND: ! return "Host not found"; case WSATRY_AGAIN: ! return "Nonauthoritative host not found"; case WSANO_RECOVERY: ! return "Nonrecoverable error"; case WSANO_DATA: ! return "Valid name, no data record of requested type"; /* WSA_QOS_* omitted */ # endif + #endif ! #if GNULIB_defined_ENOMSG case ENOMSG: ! return "No message of desired type"; ! #endif ! #if GNULIB_defined_EIDRM case EIDRM: ! return "Identifier removed"; ! #endif ! #if GNULIB_defined_ENOLINK case ENOLINK: ! return "Link has been severed"; ! #endif ! #if GNULIB_defined_EPROTO case EPROTO: ! return "Protocol error"; ! #endif ! #if GNULIB_defined_EMULTIHOP case EMULTIHOP: ! return "Multihop attempted"; ! #endif ! #if GNULIB_defined_EBADMSG case EBADMSG: ! return "Bad message"; ! #endif ! #if GNULIB_defined_EOVERFLOW case EOVERFLOW: ! return "Value too large for defined data type"; ! #endif ! #if GNULIB_defined_ENOTSUP case ENOTSUP: ! return "Not supported"; ! #endif ! #if GNULIB_defined_ESTALE case ESTALE: ! return "Stale NFS file handle"; ! #endif ! #if GNULIB_defined_EDQUOT case EDQUOT: ! return "Disk quota exceeded"; ! #endif ! #if GNULIB_defined_ECANCELED case ECANCELED: ! return "Operation canceled"; #endif ! default: ! return NULL; ! } } diff -cNr octave-3.4.1/libgnu/unistd.in.h octave-3.4.2/libgnu/unistd.in.h *** octave-3.4.1/libgnu/unistd.in.h 2011-06-15 11:31:08.000000000 -0400 --- octave-3.4.2/libgnu/unistd.in.h 2011-06-21 12:43:04.000000000 -0400 *************** *** 1064,1069 **** --- 1064,1070 ---- specification . */ # if @REPLACE_PREAD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) + # undef pread # define pread rpl_pread # endif _GL_FUNCDECL_RPL (pread, ssize_t, *************** *** 1098,1103 **** --- 1099,1105 ---- . */ # if @REPLACE_PWRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) + # undef pwrite # define pwrite rpl_pwrite # endif _GL_FUNCDECL_RPL (pwrite, ssize_t, diff -cNr octave-3.4.1/libgnu/verify.h octave-3.4.2/libgnu/verify.h *** octave-3.4.1/libgnu/verify.h 2011-06-15 11:31:09.000000000 -0400 --- octave-3.4.2/libgnu/verify.h 2011-06-21 12:43:04.000000000 -0400 *************** *** 223,232 **** contexts, e.g., the top level. */ /* Verify requirement R at compile-time, as an integer constant expression. ! Return 1. */ # define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")") /* Verify requirement R at compile-time, as a declaration without a trailing ';'. */ --- 223,240 ---- contexts, e.g., the top level. */ /* Verify requirement R at compile-time, as an integer constant expression. ! Return 1. This is equivalent to verify_expr (R, 1). ! ! verify_true is obsolescent; please use verify_expr instead. */ # define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")") + /* Verify requirement R at compile-time. Return the value of the + expression E. */ + + # define verify_expr(R, E) \ + (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E)) + /* Verify requirement R at compile-time, as a declaration without a trailing ';'. */ diff -cNr octave-3.4.1/liboctave/Makefile.in octave-3.4.2/liboctave/Makefile.in *** octave-3.4.1/liboctave/Makefile.in 2011-06-15 11:31:29.000000000 -0400 --- octave-3.4.2/liboctave/Makefile.in 2011-06-24 10:38:41.000000000 -0400 *************** *** 69,79 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 69,78 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ diff -cNr octave-3.4.1/m4/alloca.m4 octave-3.4.2/m4/alloca.m4 *** octave-3.4.1/m4/alloca.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/alloca.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # alloca.m4 serial 11 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation --- 1,4 ---- ! # alloca.m4 serial 12 dnl Copyright (C) 2002-2004, 2006-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation *************** *** 42,44 **** --- 42,121 ---- # Prerequisites of lib/alloca.c. # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. AC_DEFUN([gl_PREREQ_ALLOCA], [:]) + + # This works around a bug in autoconf <= 2.68. + # See . + + m4_version_prereq([2.69], [] ,[ + + # This is taken from the following Autoconf patch: + # http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 + + # _AC_LIBOBJ_ALLOCA + # ----------------- + # Set up the LIBOBJ replacement of `alloca'. Well, not exactly + # AC_LIBOBJ since we actually set the output variable `ALLOCA'. + # Nevertheless, for Automake, AC_LIBSOURCES it. + m4_define([_AC_LIBOBJ_ALLOCA], + [# The SVR3 libPW and SVR4 libucb both contain incompatible functions + # that cause trouble. Some versions do not even contain alloca or + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + AC_LIBSOURCES(alloca.c) + AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl + AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using `alloca.c'.]) + + AC_CACHE_CHECK(whether `alloca.c' needs Cray hooks, ac_cv_os_cray, + [AC_EGREP_CPP(webecray, + [#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray + #endif + ], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + AC_CHECK_FUNC($ac_func, + [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func, + [Define to one of `_getb67', `GETB67', + `getb67' for Cray-2 and Cray-YMP + systems. This function is required for + `alloca.c' support on those systems.]) + break]) + done + fi + + AC_CACHE_CHECK([stack direction for C alloca], + [ac_cv_c_stack_direction], + [AC_RUN_IFELSE([AC_LANG_SOURCE( + [AC_INCLUDES_DEFAULT + int + find_stack_direction (int *addr, int depth) + { + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; + } + + int + main (int argc, char **argv) + { + return find_stack_direction (0, argc + !argv + 20) < 0; + }])], + [ac_cv_c_stack_direction=1], + [ac_cv_c_stack_direction=-1], + [ac_cv_c_stack_direction=0])]) + AH_VERBATIM([STACK_DIRECTION], + [/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ + @%:@undef STACK_DIRECTION])dnl + AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) + ])# _AC_LIBOBJ_ALLOCA + ]) diff -cNr octave-3.4.1/m4/canonicalize.m4 octave-3.4.2/m4/canonicalize.m4 *** octave-3.4.1/m4/canonicalize.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/canonicalize.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # canonicalize.m4 serial 21 dnl Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # canonicalize.m4 serial 23 dnl Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc. *************** *** 10,17 **** # not provide or fix realpath. AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE], [ - AC_LIBOBJ([canonicalize]) - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([canonicalize_file_name]) AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) --- 10,15 ---- *************** *** 30,45 **** AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 - AC_LIBOBJ([canonicalize-lgpl]) if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 elif test "$gl_cv_func_realpath_works" != yes; then REPLACE_REALPATH=1 fi elif test "$gl_cv_func_realpath_works" != yes; then - AC_LIBOBJ([canonicalize-lgpl]) - REPLACE_REALPATH=1 REPLACE_CANONICALIZE_FILE_NAME=1 fi ]) --- 28,41 ---- AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE]) if test $ac_cv_func_canonicalize_file_name = no; then HAVE_CANONICALIZE_FILE_NAME=0 if test $ac_cv_func_realpath = no; then HAVE_REALPATH=0 elif test "$gl_cv_func_realpath_works" != yes; then REPLACE_REALPATH=1 fi elif test "$gl_cv_func_realpath_works" != yes; then REPLACE_CANONICALIZE_FILE_NAME=1 + REPLACE_REALPATH=1 fi ]) diff -cNr octave-3.4.1/m4/ceilf.m4 octave-3.4.2/m4/ceilf.m4 *** octave-3.4.1/m4/ceilf.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/ceilf.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # ceilf.m4 serial 8 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # ceilf.m4 serial 11 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 35,46 **** #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! int main() { /* Test whether ceilf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (ceilf (minus_zerof))) ! return 1; ! return 0; } ]])], [gl_cv_func_ceilf_ieee=yes], --- 35,52 ---- #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! static float dummy (float f) { return 0; } ! int main (int argc, char *argv[]) { + float (*my_ceilf) (float) = argc ? ceilf : dummy; + int result = 0; /* Test whether ceilf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (my_ceilf (minus_zerof))) ! result |= 1; ! /* Test whether ceilf (-0.3f) is -0.0f. */ ! if (signbitf (-0.3f) && !signbitf (my_ceilf (-0.3f))) ! result |= 2; ! return result; } ]])], [gl_cv_func_ceilf_ieee=yes], *************** *** 58,64 **** HAVE_DECL_CEILF=0 fi if test $HAVE_DECL_CEILF = 0 || test $REPLACE_CEILF = 1; then ! AC_LIBOBJ([ceilf]) CEILF_LIBM= fi AC_SUBST([CEILF_LIBM]) --- 64,70 ---- HAVE_DECL_CEILF=0 fi if test $HAVE_DECL_CEILF = 0 || test $REPLACE_CEILF = 1; then ! dnl No libraries are needed to link lib/ceilf.c. CEILF_LIBM= fi AC_SUBST([CEILF_LIBM]) diff -cNr octave-3.4.1/m4/ceil.m4 octave-3.4.2/m4/ceil.m4 *** octave-3.4.1/m4/ceil.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/ceil.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # ceil.m4 serial 5 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # ceil.m4 serial 8 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 28,39 **** #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! int main() { /* Test whether ceil (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (ceil (minus_zerod))) ! return 1; ! return 0; } ]])], [gl_cv_func_ceil_ieee=yes], --- 28,45 ---- #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! static double dummy (double f) { return 0; } ! int main (int argc, char *argv[]) { + double (*my_ceil) (double) = argc ? ceil : dummy; + int result = 0; /* Test whether ceil (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (my_ceil (minus_zerod))) ! result |= 1; ! /* Test whether ceil (-0.3) is -0.0. */ ! if (signbitd (-0.3) && !signbitd (my_ceil (-0.3))) ! result |= 2; ! return result; } ]])], [gl_cv_func_ceil_ieee=yes], *************** *** 48,54 **** fi ]) if test $REPLACE_CEIL = 1; then ! AC_LIBOBJ([ceil]) CEIL_LIBM= fi AC_SUBST([CEIL_LIBM]) --- 54,60 ---- fi ]) if test $REPLACE_CEIL = 1; then ! dnl No libraries are needed to link lib/ceil.c. CEIL_LIBM= fi AC_SUBST([CEIL_LIBM]) diff -cNr octave-3.4.1/m4/chdir-long.m4 octave-3.4.2/m4/chdir-long.m4 *** octave-3.4.1/m4/chdir-long.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/chdir-long.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 11 # Use Gnulib's robust chdir function. # It can handle arbitrarily long directory names, which means --- 1,4 ---- ! #serial 12 # Use Gnulib's robust chdir function. # It can handle arbitrarily long directory names, which means *************** *** 25,35 **** #endif], gl_cv_have_arbitrary_file_name_length_limit=yes, gl_cv_have_arbitrary_file_name_length_limit=no)]) - - if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then - AC_LIBOBJ([chdir-long]) - gl_PREREQ_CHDIR_LONG - fi ]) AC_DEFUN([gl_PREREQ_CHDIR_LONG], --- 25,30 ---- diff -cNr octave-3.4.1/m4/chown.m4 octave-3.4.2/m4/chown.m4 *** octave-3.4.1/m4/chown.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/chown.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 24 # Determine whether we need the chown wrapper. dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2011 Free Software --- 1,4 ---- ! # serial 25 # Determine whether we need the chown wrapper. dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2011 Free Software *************** *** 25,36 **** dnl mingw lacks chown altogether. if test $ac_cv_func_chown = no; then HAVE_CHOWN=0 - AC_LIBOBJ([chown]) else dnl Some old systems treated chown like lchown. if test $gl_cv_func_chown_follows_symlink = no; then REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl Some old systems tried to use uid/gid -1 literally. --- 25,34 ---- *************** *** 38,44 **** AC_DEFINE([CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE], [1], [Define if chown is not POSIX compliant regarding IDs of -1.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl Solaris 9 ignores trailing slash. --- 36,41 ---- *************** *** 62,68 **** AC_DEFINE([CHOWN_TRAILING_SLASH_BUG], [1], [Define to 1 if chown mishandles trailing slash.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) fi dnl OpenBSD fails to update ctime if ownership does not change. --- 59,64 ---- *************** *** 90,100 **** AC_DEFINE([CHOWN_CHANGE_TIME_BUG], [1], [Define to 1 if chown fails to change ctime when at least one argument was not -1.]) REPLACE_CHOWN=1 - AC_LIBOBJ([chown]) - fi - - if test $REPLACE_CHOWN = 1 && test $ac_cv_func_fchown = no; then - AC_LIBOBJ([fchown-stub]) fi fi ]) --- 86,91 ---- diff -cNr octave-3.4.1/m4/cloexec.m4 octave-3.4.2/m4/cloexec.m4 *** octave-3.4.1/m4/cloexec.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/cloexec.m4 1969-12-31 19:00:00.000000000 -0500 *************** *** 1,10 **** - #serial 6 - dnl Copyright (C) 2004-2006, 2009-2011 Free Software Foundation, Inc. - dnl This file is free software; the Free Software Foundation - dnl gives unlimited permission to copy and/or distribute it, - dnl with or without modifications, as long as this notice is preserved. - - AC_DEFUN([gl_CLOEXEC], - [ - AC_LIBOBJ([cloexec]) - ]) --- 0 ---- diff -cNr octave-3.4.1/m4/dirfd.m4 octave-3.4.2/m4/dirfd.m4 *** octave-3.4.1/m4/dirfd.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/dirfd.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 20 -*- Autoconf -*- dnl Find out how to get the file descriptor associated with an open DIR*. --- 1,4 ---- ! # serial 21 -*- Autoconf -*- dnl Find out how to get the file descriptor associated with an open DIR*. *************** *** 36,80 **** gl_cv_func_dirfd_macro=no)]) # Use the replacement only if we have no function or macro with that name. ! if test $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro = no,no; then if test $ac_cv_have_decl_dirfd = yes; then # If the system declares dirfd already, let's declare rpl_dirfd instead. REPLACE_DIRFD=1 fi ! AC_LIBOBJ([dirfd]) ! AC_CACHE_CHECK( ! [how to get the file descriptor associated with an open DIR*], ! gl_cv_sys_dir_fd_member_name, ! [ ! dirfd_save_CFLAGS=$CFLAGS ! for ac_expr in d_fd dd_fd; do ! ! CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" ! AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ! #include ! #include ]], ! [[DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;]])], ! [dir_fd_found=yes] ! ) ! CFLAGS=$dirfd_save_CFLAGS ! test "$dir_fd_found" = yes && break ! done ! test "$dir_fd_found" = yes || ac_expr=no_such_member ! ! gl_cv_sys_dir_fd_member_name=$ac_expr ! ] ! ) ! if test $gl_cv_sys_dir_fd_member_name != no_such_member; then ! AC_DEFINE_UNQUOTED([DIR_FD_MEMBER_NAME], ! $gl_cv_sys_dir_fd_member_name, ! [the name of the file descriptor member of DIR]) ! fi ! AH_VERBATIM(DIR_TO_FD, ! [#ifdef DIR_FD_MEMBER_NAME # define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) #else # define DIR_TO_FD(Dir_p) -1 #endif ]) - fi ]) --- 36,83 ---- gl_cv_func_dirfd_macro=no)]) # Use the replacement only if we have no function or macro with that name. ! if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then if test $ac_cv_have_decl_dirfd = yes; then # If the system declares dirfd already, let's declare rpl_dirfd instead. REPLACE_DIRFD=1 fi ! fi ! ]) ! ! dnl Prerequisites of lib/dirfd.c. ! AC_DEFUN([gl_PREREQ_DIRFD], ! [ ! AC_CACHE_CHECK([how to get the file descriptor associated with an open DIR*], ! [gl_cv_sys_dir_fd_member_name], ! [ ! dirfd_save_CFLAGS=$CFLAGS ! for ac_expr in d_fd dd_fd; do ! ! CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr" ! AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ! #include ! #include ]], ! [[DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;]])], ! [dir_fd_found=yes] ! ) ! CFLAGS=$dirfd_save_CFLAGS ! test "$dir_fd_found" = yes && break ! done ! test "$dir_fd_found" = yes || ac_expr=no_such_member ! ! gl_cv_sys_dir_fd_member_name=$ac_expr ! ] ! ) ! if test $gl_cv_sys_dir_fd_member_name != no_such_member; then ! AC_DEFINE_UNQUOTED([DIR_FD_MEMBER_NAME], ! [$gl_cv_sys_dir_fd_member_name], ! [the name of the file descriptor member of DIR]) ! fi ! AH_VERBATIM([DIR_TO_FD], ! [#ifdef DIR_FD_MEMBER_NAME # define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) #else # define DIR_TO_FD(Dir_p) -1 #endif ]) ]) diff -cNr octave-3.4.1/m4/dirname.m4 octave-3.4.2/m4/dirname.m4 *** octave-3.4.1/m4/dirname.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/dirname.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 9 -*- autoconf -*- dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! #serial 10 -*- autoconf -*- dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 7,22 **** AC_DEFUN([gl_DIRNAME], [ AC_REQUIRE([gl_DIRNAME_LGPL]) - AC_LIBOBJ([basename]) - AC_LIBOBJ([dirname]) ]) AC_DEFUN([gl_DIRNAME_LGPL], [ - AC_LIBOBJ([basename-lgpl]) - AC_LIBOBJ([dirname-lgpl]) - AC_LIBOBJ([stripslash]) - dnl Prerequisites of lib/dirname.h. AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) --- 7,16 ---- diff -cNr octave-3.4.1/m4/error.m4 octave-3.4.2/m4/error.m4 *** octave-3.4.1/m4/error.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/error.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 13 # Copyright (C) 1996-1998, 2001-2004, 2009-2011 Free Software Foundation, Inc. # --- 1,4 ---- ! #serial 14 # Copyright (C) 1996-1998, 2001-2004, 2009-2011 Free Software Foundation, Inc. # *************** *** 8,23 **** AC_DEFUN([gl_ERROR], [ ! AC_FUNC_ERROR_AT_LINE ! dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]). ! gl_PREREQ_ERROR ! ]) ! ! # Redefine AC_FUNC_ERROR_AT_LINE, because it is no longer maintained in ! # Autoconf. ! AC_DEFUN([AC_FUNC_ERROR_AT_LINE], ! [ ! AC_LIBSOURCES([error.h, error.c])dnl AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( --- 8,15 ---- AC_DEFUN([gl_ERROR], [ ! dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer ! dnl maintained in Autoconf and because it invokes AC_LIBOBJ. AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( *************** *** 25,33 **** [[error_at_line (0, 0, "", 0, "an error occurred");]])], [ac_cv_lib_error_at_line=yes], [ac_cv_lib_error_at_line=no])]) - if test $ac_cv_lib_error_at_line = no; then - AC_LIBOBJ([error]) - fi ]) # Prerequisites of lib/error.c. --- 17,22 ---- diff -cNr octave-3.4.1/m4/fdopendir.m4 octave-3.4.2/m4/fdopendir.m4 *** octave-3.4.1/m4/fdopendir.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/fdopendir.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 6 # See if we need to provide fdopendir. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # serial 7 # See if we need to provide fdopendir. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. *************** *** 17,24 **** ]]) AC_CHECK_FUNCS_ONCE([fdopendir]) if test $ac_cv_func_fdopendir = no; then - AC_LIBOBJ([openat-proc]) - AC_LIBOBJ([fdopendir]) HAVE_FDOPENDIR=0 else AC_CACHE_CHECK([whether fdopendir works], --- 17,22 ---- *************** *** 41,47 **** [gl_cv_func_fdopendir_works="guessing no"])]) if test "$gl_cv_func_fdopendir_works" != yes; then REPLACE_FDOPENDIR=1 - AC_LIBOBJ([fdopendir]) fi fi ]) --- 39,44 ---- diff -cNr octave-3.4.1/m4/fflush.m4 octave-3.4.2/m4/fflush.m4 *** octave-3.4.1/m4/fflush.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/fflush.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # fflush.m4 serial 11 # Copyright (C) 2007-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! # fflush.m4 serial 12 # Copyright (C) 2007-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 12,20 **** AC_DEFUN([gl_FUNC_FFLUSH], [ gl_FUNC_FFLUSH_STDIN if test $gl_cv_func_fflush_stdin = no; then ! gl_REPLACE_FFLUSH fi ]) --- 12,21 ---- AC_DEFUN([gl_FUNC_FFLUSH], [ + AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_FUNC_FFLUSH_STDIN if test $gl_cv_func_fflush_stdin = no; then ! REPLACE_FFLUSH=1 fi ]) *************** *** 72,85 **** ]) ]) - AC_DEFUN([gl_REPLACE_FFLUSH], - [ - AC_LIBOBJ([fflush]) - AC_REQUIRE([gl_STDIO_H_DEFAULTS]) - REPLACE_FFLUSH=1 - gl_PREREQ_FFLUSH - ]) - # Prerequisites of lib/fflush.c. AC_DEFUN([gl_PREREQ_FFLUSH], [ --- 73,78 ---- diff -cNr octave-3.4.1/m4/filemode.m4 octave-3.4.2/m4/filemode.m4 *** octave-3.4.1/m4/filemode.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/filemode.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # filemode.m4 serial 7 dnl Copyright (C) 2002, 2005-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # filemode.m4 serial 8 dnl Copyright (C) 2002, 2005-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 7,12 **** AC_DEFUN([gl_FILEMODE], [ AC_REQUIRE([AC_STRUCT_ST_DM_MODE]) - AC_LIBOBJ([filemode]) AC_CHECK_DECLS_ONCE([strmode]) ]) --- 7,11 ---- diff -cNr octave-3.4.1/m4/filenamecat.m4 octave-3.4.2/m4/filenamecat.m4 *** octave-3.4.1/m4/filenamecat.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/filenamecat.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # filenamecat.m4 serial 10 dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # filenamecat.m4 serial 11 dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 7,19 **** AC_DEFUN([gl_FILE_NAME_CONCAT], [ AC_REQUIRE([gl_FILE_NAME_CONCAT_LGPL]) - AC_LIBOBJ([filenamecat]) ]) AC_DEFUN([gl_FILE_NAME_CONCAT_LGPL], [ - AC_LIBOBJ([filenamecat-lgpl]) - dnl Prerequisites of lib/filenamecat-lgpl.c. AC_CHECK_FUNCS_ONCE([mempcpy]) ]) --- 7,16 ---- diff -cNr octave-3.4.1/m4/float_h.m4 octave-3.4.2/m4/float_h.m4 *** octave-3.4.1/m4/float_h.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/float_h.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # float_h.m4 serial 6 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # float_h.m4 serial 7 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 9,20 **** AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) FLOAT_H= case "$host_os" in ! beos* | openbsd* | mirbsd*) FLOAT_H=float.h ! gl_NEXT_HEADERS([float.h]) ;; esac AC_SUBST([FLOAT_H]) AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"]) ]) --- 9,49 ---- AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) FLOAT_H= + REPLACE_FLOAT_LDBL=0 case "$host_os" in ! aix* | beos* | openbsd* | mirbsd* | irix*) FLOAT_H=float.h ! ;; ! freebsd*) ! case "$host_cpu" in ! changequote(,)dnl ! i[34567]86 ) ! changequote([,])dnl ! FLOAT_H=float.h ! ;; ! x86_64 ) ! # On x86_64 systems, the C compiler may still be generating ! # 32-bit code. ! AC_EGREP_CPP([yes], ! [#if defined __LP64__ || defined __x86_64__ || defined __amd64__ ! yes ! #endif], ! [], ! [FLOAT_H=float.h]) ! ;; ! esac ! ;; ! esac ! case "$host_os" in ! aix* | freebsd*) ! if test -n "$FLOAT_H"; then ! REPLACE_FLOAT_LDBL=1 ! fi ;; esac + if test -n "$FLOAT_H"; then + gl_NEXT_HEADERS([float.h]) + fi AC_SUBST([FLOAT_H]) AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"]) ]) diff -cNr octave-3.4.1/m4/floorf.m4 octave-3.4.2/m4/floorf.m4 *** octave-3.4.1/m4/floorf.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/floorf.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # floorf.m4 serial 8 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # floorf.m4 serial 10 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 35,44 **** #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! int main() { /* Test whether floorf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (floorf (minus_zerof))) return 1; return 0; } --- 35,46 ---- #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! static float dummy (float f) { return 0; } ! int main (int argc, char *argv[]) { + float (*my_floorf) (float) = argc ? floorf : dummy; /* Test whether floorf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (my_floorf (minus_zerof))) return 1; return 0; } *************** *** 58,64 **** HAVE_DECL_FLOORF=0 fi if test $HAVE_DECL_FLOORF = 0 || test $REPLACE_FLOORF = 1; then ! AC_LIBOBJ([floorf]) FLOORF_LIBM= fi AC_SUBST([FLOORF_LIBM]) --- 60,66 ---- HAVE_DECL_FLOORF=0 fi if test $HAVE_DECL_FLOORF = 0 || test $REPLACE_FLOORF = 1; then ! dnl No libraries are needed to link lib/floorf.c. FLOORF_LIBM= fi AC_SUBST([FLOORF_LIBM]) diff -cNr octave-3.4.1/m4/floor.m4 octave-3.4.2/m4/floor.m4 *** octave-3.4.1/m4/floor.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/floor.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # floor.m4 serial 5 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # floor.m4 serial 7 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 28,37 **** #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! int main() { /* Test whether floor (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (floor (minus_zerod))) return 1; return 0; } --- 28,39 ---- #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! static double dummy (double f) { return 0; } ! int main (int argc, char *argv[]) { + double (*my_floor) (double) = argc ? floor : dummy; /* Test whether floor (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (my_floor (minus_zerod))) return 1; return 0; } *************** *** 48,54 **** fi ]) if test $REPLACE_FLOOR = 1; then ! AC_LIBOBJ([floor]) FLOOR_LIBM= fi AC_SUBST([FLOOR_LIBM]) --- 50,56 ---- fi ]) if test $REPLACE_FLOOR = 1; then ! dnl No libraries are needed to link lib/floor.c. FLOOR_LIBM= fi AC_SUBST([FLOOR_LIBM]) diff -cNr octave-3.4.1/m4/fnmatch.m4 octave-3.4.2/m4/fnmatch.m4 *** octave-3.4.1/m4/fnmatch.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/fnmatch.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # Check for fnmatch - serial 6. # Copyright (C) 2000-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! # Check for fnmatch - serial 7. # Copyright (C) 2000-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 128,144 **** rm -f "$gl_source_base/fnmatch.h" else FNMATCH_H=fnmatch.h - AC_LIBOBJ([fnmatch]) - dnl We must choose a different name for our function, since on ELF systems - dnl a broken fnmatch() in libc.so would override our fnmatch() if it is - dnl compiled into a shared library. - AC_DEFINE_UNQUOTED([fnmatch], [${gl_fnmatch_required_lowercase}_fnmatch], - [Define to a replacement function name for fnmatch().]) - dnl Prerequisites of lib/fnmatch.c. - AC_REQUIRE([AC_TYPE_MBSTATE_T]) - AC_CHECK_DECLS([isblank], [], [], [#include ]) - AC_CHECK_FUNCS_ONCE([btowc isblank iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy]) - AC_CHECK_HEADERS_ONCE([wctype.h]) fi AC_SUBST([FNMATCH_H]) AM_CONDITIONAL([GL_GENERATE_FNMATCH_H], [test -n "$FNMATCH_H"]) --- 128,133 ---- *************** *** 151,153 **** --- 140,156 ---- AC_REQUIRE([gl_FUNC_FNMATCH_POSIX]) ]) + + AC_DEFUN([gl_PREREQ_FNMATCH], + [ + dnl We must choose a different name for our function, since on ELF systems + dnl a broken fnmatch() in libc.so would override our fnmatch() if it is + dnl compiled into a shared library. + AC_DEFINE_UNQUOTED([fnmatch], [${gl_fnmatch_required_lowercase}_fnmatch], + [Define to a replacement function name for fnmatch().]) + dnl Prerequisites of lib/fnmatch.c. + AC_REQUIRE([AC_TYPE_MBSTATE_T]) + AC_CHECK_DECLS([isblank], [], [], [#include ]) + AC_CHECK_FUNCS_ONCE([btowc isblank iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy]) + AC_CHECK_HEADERS_ONCE([wctype.h]) + ]) diff -cNr octave-3.4.1/m4/fpurge.m4 octave-3.4.2/m4/fpurge.m4 *** octave-3.4.1/m4/fpurge.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/fpurge.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # fpurge.m4 serial 6 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # fpurge.m4 serial 7 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 11,16 **** --- 11,17 ---- AC_CHECK_FUNCS_ONCE([__fpurge]) AC_CHECK_DECLS([fpurge], , , [[#include ]]) if test "x$ac_cv_func_fpurge" = xyes; then + HAVE_FPURGE=1 # Detect BSD bug. Only cygwin 1.7 is known to be immune. AC_CACHE_CHECK([whether fpurge works], [gl_cv_func_fpurge_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include *************** *** 34,43 **** [gl_cv_func_fpurge_works='guessing no'])]) if test "x$gl_cv_func_fpurge_works" != xyes; then REPLACE_FPURGE=1 - AC_LIBOBJ([fpurge]) fi else ! AC_LIBOBJ([fpurge]) fi if test "x$ac_cv_have_decl_fpurge" = xno; then HAVE_DECL_FPURGE=0 --- 35,43 ---- [gl_cv_func_fpurge_works='guessing no'])]) if test "x$gl_cv_func_fpurge_works" != xyes; then REPLACE_FPURGE=1 fi else ! HAVE_FPURGE=0 fi if test "x$ac_cv_have_decl_fpurge" = xno; then HAVE_DECL_FPURGE=0 diff -cNr octave-3.4.1/m4/getcwd.m4 octave-3.4.2/m4/getcwd.m4 *** octave-3.4.1/m4/getcwd.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/getcwd.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 6,12 **** # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert. ! # serial 6 AC_DEFUN([gl_FUNC_GETCWD_NULL], [ --- 6,12 ---- # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert. ! # serial 7 AC_DEFUN([gl_FUNC_GETCWD_NULL], [ *************** *** 71,79 **** case $gl_cv_func_getcwd_null in *yes) ;; *) ! dnl Minimal replacement REPLACE_GETCWD=1 - AC_LIBOBJ([getcwd-lgpl]) ;; esac ]) --- 71,78 ---- case $gl_cv_func_getcwd_null in *yes) ;; *) ! dnl Minimal replacement lib/getcwd-lgpl.c. REPLACE_GETCWD=1 ;; esac ]) *************** *** 98,107 **** case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in *yes,yes,no) ;; *) ! dnl Full replacement, overrides LGPL replacement. ! REPLACE_GETCWD=1 ! AC_LIBOBJ([getcwd]) ! gl_PREREQ_GETCWD;; esac ]) --- 97,104 ---- case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in *yes,yes,no) ;; *) ! dnl Full replacement lib/getcwd.c, overrides LGPL replacement. ! REPLACE_GETCWD=1;; esac ]) diff -cNr octave-3.4.1/m4/getdtablesize.m4 octave-3.4.2/m4/getdtablesize.m4 *** octave-3.4.1/m4/getdtablesize.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/getdtablesize.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # getdtablesize.m4 serial 1 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # getdtablesize.m4 serial 2 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 10,15 **** AC_CHECK_FUNCS_ONCE([getdtablesize]) if test $ac_cv_func_getdtablesize != yes; then HAVE_GETDTABLESIZE=0 - AC_LIBOBJ([getdtablesize]) fi ]) --- 10,14 ---- diff -cNr octave-3.4.1/m4/gethostname.m4 octave-3.4.2/m4/gethostname.m4 *** octave-3.4.1/m4/gethostname.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/gethostname.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # gethostname.m4 serial 11 dnl Copyright (C) 2002, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # gethostname.m4 serial 12 dnl Copyright (C) 2002, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 37,45 **** AC_SUBST([GETHOSTNAME_LIB]) if test "$ac_cv_func_gethostname" = no; then - AC_LIBOBJ([gethostname]) HAVE_GETHOSTNAME=0 - gl_PREREQ_GETHOSTNAME fi dnl Also provide HOST_NAME_MAX when lacks it. --- 37,43 ---- diff -cNr octave-3.4.1/m4/getlogin_r.m4 octave-3.4.2/m4/getlogin_r.m4 *** octave-3.4.1/m4/getlogin_r.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/getlogin_r.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 9 # Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc. # --- 1,4 ---- ! #serial 10 # Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc. # *************** *** 76,85 **** *) REPLACE_GETLOGIN_R=1 ;; esac fi - if test $HAVE_GETLOGIN_R = 0 || test $REPLACE_GETLOGIN_R = 1; then - AC_LIBOBJ([getlogin_r]) - gl_PREREQ_GETLOGIN_R - fi ]) AC_DEFUN([gl_PREREQ_GETLOGIN_R], --- 76,81 ---- diff -cNr octave-3.4.1/m4/getopt.m4 octave-3.4.2/m4/getopt.m4 *** octave-3.4.1/m4/getopt.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/getopt.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # getopt.m4 serial 34 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # getopt.m4 serial 35 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 9,18 **** [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) ! gl_GETOPT_IFELSE([ ! gl_REPLACE_GETOPT ! ], ! []) ]) # Request a POSIX compliant getopt function with GNU extensions (such as --- 9,33 ---- [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) ! dnl Other modules can request the gnulib implementation of the getopt ! dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS. ! dnl argp.m4 does this. ! m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [ ! gl_GETOPT_IFELSE([], []) ! REPLACE_GETOPT=1 ! ], [ ! REPLACE_GETOPT=0 ! gl_GETOPT_IFELSE([ ! REPLACE_GETOPT=1 ! ], ! []) ! ]) ! if test $REPLACE_GETOPT = 1; then ! dnl Arrange for getopt.h to be created. ! gl_GETOPT_SUBSTITUTE_HEADER ! dnl Arrange for unistd.h to include getopt.h. ! GNULIB_UNISTD_H_GETOPT=1 ! fi ]) # Request a POSIX compliant getopt function with GNU extensions (such as *************** *** 25,44 **** AC_REQUIRE([gl_FUNC_GETOPT_POSIX]) ]) - # Request the gnulib implementation of the getopt functions unconditionally. - # argp.m4 uses this. - AC_DEFUN([gl_REPLACE_GETOPT], - [ - dnl Arrange for getopt.h to be created. - gl_GETOPT_SUBSTITUTE_HEADER - dnl Arrange for unistd.h to include getopt.h. - GNULIB_UNISTD_H_GETOPT=1 - dnl Arrange to compile the getopt implementation. - AC_LIBOBJ([getopt]) - AC_LIBOBJ([getopt1]) - gl_PREREQ_GETOPT - ]) - # emacs' configure.in uses this. AC_DEFUN([gl_GETOPT_IFELSE], [ --- 40,45 ---- diff -cNr octave-3.4.1/m4/gettimeofday.m4 octave-3.4.2/m4/gettimeofday.m4 *** octave-3.4.1/m4/gettimeofday.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/gettimeofday.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 15 # Copyright (C) 2001-2003, 2005, 2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! # serial 17 # Copyright (C) 2001-2003, 2005, 2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 17,24 **** gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 - AC_LIBOBJ([gettimeofday]) - gl_PREREQ_GETTIMEOFDAY else gl_FUNC_GETTIMEOFDAY_CLOBBER AC_CACHE_CHECK([for gettimeofday with POSIX signature], --- 17,22 ---- *************** *** 51,59 **** gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 - AC_LIBOBJ([gettimeofday]) - gl_PREREQ_GETTIMEOFDAY fi fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], [Define this to 'void' or 'struct timezone' to match the system's --- 49,66 ---- gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi + m4_ifdef([gl_FUNC_TZSET_CLOBBER], [ + gl_FUNC_TZSET_CLOBBER + if test $gl_cv_func_tzset_clobber = yes; then + REPLACE_GETTIMEOFDAY=1 + gl_GETTIMEOFDAY_REPLACE_LOCALTIME + AC_DEFINE([tzset], [rpl_tzset], + [Define to rpl_tzset if the wrapper function should be used.]) + AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], [1], + [Define if tzset clobbers localtime's static buffer.]) + fi + ]) fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], [Define this to 'void' or 'struct timezone' to match the system's *************** *** 105,112 **** ]) AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [ - AC_LIBOBJ([gettimeofday]) - gl_PREREQ_GETTIMEOFDAY AC_DEFINE([gmtime], [rpl_gmtime], [Define to rpl_gmtime if the replacement function should be used.]) AC_DEFINE([localtime], [rpl_localtime], --- 112,117 ---- diff -cNr octave-3.4.1/m4/glob.m4 octave-3.4.2/m4/glob.m4 *** octave-3.4.1/m4/glob.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/glob.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # glob.m4 serial 13 dnl Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # glob.m4 serial 14 dnl Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 55,64 **** rm -f conf$$-globtest - if test -n "$GLOB_H"; then - AC_LIBOBJ([glob]) - gl_PREREQ_GLOB - fi AC_SUBST([GLOB_H]) AM_CONDITIONAL([GL_GENERATE_GLOB_H], [test -n "$GLOB_H"]) ]) --- 55,60 ---- diff -cNr octave-3.4.1/m4/gnulib-comp.m4 octave-3.4.2/m4/gnulib-comp.m4 *** octave-3.4.1/m4/gnulib-comp.m4 2011-06-15 11:31:09.000000000 -0400 --- octave-3.4.2/m4/gnulib-comp.m4 2011-06-21 12:43:05.000000000 -0400 *************** *** 192,204 **** AC_SUBST([LTALLOCA]) gl_FUNC_ALLOCA gl_CANONICALIZE_LGPL gl_MODULE_INDICATOR([canonicalize-lgpl]) gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) gl_STDLIB_MODULE_INDICATOR([realpath]) gl_FUNC_CHDIR_LONG gl_FUNC_CHOWN gl_UNISTD_MODULE_INDICATOR([chown]) - gl_CLOEXEC gl_MODULE_INDICATOR_FOR_TESTS([cloexec]) gl_FUNC_CLOSE gl_UNISTD_MODULE_INDICATOR([close]) --- 192,216 ---- AC_SUBST([LTALLOCA]) gl_FUNC_ALLOCA gl_CANONICALIZE_LGPL + if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then + AC_LIBOBJ([canonicalize-lgpl]) + fi gl_MODULE_INDICATOR([canonicalize-lgpl]) gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) gl_STDLIB_MODULE_INDICATOR([realpath]) gl_FUNC_CHDIR_LONG + if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then + AC_LIBOBJ([chdir-long]) + gl_PREREQ_CHDIR_LONG + fi gl_FUNC_CHOWN + if test $HAVE_CHOWN = 0 || test $REPLACE_CHOWN = 1; then + AC_LIBOBJ([chown]) + fi + if test $REPLACE_CHOWN = 1 && test $ac_cv_func_fchown = no; then + AC_LIBOBJ([fchown-stub]) + fi gl_UNISTD_MODULE_INDICATOR([chown]) gl_MODULE_INDICATOR_FOR_TESTS([cloexec]) gl_FUNC_CLOSE gl_UNISTD_MODULE_INDICATOR([close]) *************** *** 209,214 **** --- 221,230 ---- gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE gl_DIRENT_H gl_FUNC_DIRFD + if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then + AC_LIBOBJ([dirfd]) + gl_PREREQ_DIRFD + fi gl_DIRENT_MODULE_INDICATOR([dirfd]) gl_DIRNAME_LGPL gl_DOUBLE_SLASH_ROOT *************** *** 216,221 **** --- 232,241 ---- gl_UNISTD_MODULE_INDICATOR([dup2]) gl_HEADER_ERRNO_H gl_ERROR + if test $ac_cv_lib_error_at_line = no; then + AC_LIBOBJ([error]) + gl_PREREQ_ERROR + fi m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) *************** *** 227,244 **** --- 247,287 ---- gl_FCNTL_MODULE_INDICATOR([fcntl]) gl_FCNTL_H gl_FUNC_FDOPENDIR + if test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1; then + AC_LIBOBJ([fdopendir]) + fi + if test $HAVE_FDOPENDIR = 0; then + AC_LIBOBJ([openat-proc]) + fi gl_DIRENT_MODULE_INDICATOR([fdopendir]) gl_MODULE_INDICATOR([fdopendir]) gl_FUNC_FFLUSH + if test $REPLACE_FFLUSH = 1; then + AC_LIBOBJ([fflush]) + gl_PREREQ_FFLUSH + fi gl_MODULE_INDICATOR([fflush]) gl_STDIO_MODULE_INDICATOR([fflush]) gl_FILEMODE gl_FILE_NAME_CONCAT_LGPL gl_FLOAT_H + if test $REPLACE_FLOAT_LDBL = 1; then + AC_LIBOBJ([float]) + fi gl_FUNC_FLOOR + if test $REPLACE_FLOOR = 1; then + AC_LIBOBJ([floor]) + fi gl_MATH_MODULE_INDICATOR([floor]) gl_FUNC_FNMATCH_POSIX + if test -n "$FNMATCH_H"; then + AC_LIBOBJ([fnmatch]) + gl_PREREQ_FNMATCH + fi gl_FUNC_FPURGE + if test $HAVE_FPURGE = 0 || test $REPLACE_FPURGE = 1; then + AC_LIBOBJ([fpurge]) + fi gl_STDIO_MODULE_INDICATOR([fpurge]) gl_FUNC_FREADING gl_FUNC_FSEEK *************** *** 262,356 **** --- 305,550 ---- fi gl_STDIO_MODULE_INDICATOR([ftello]) gl_FUNC_GETCWD + if test $REPLACE_GETCWD = 1; then + AC_LIBOBJ([getcwd]) + gl_PREREQ_GETCWD + fi gl_MODULE_INDICATOR([getcwd]) gl_UNISTD_MODULE_INDICATOR([getcwd]) gl_FUNC_GETCWD_LGPL + if test $REPLACE_GETCWD = 1; then + AC_LIBOBJ([getcwd-lgpl]) + fi gl_UNISTD_MODULE_INDICATOR([getcwd]) gl_FUNC_GETDTABLESIZE + if test $HAVE_GETDTABLESIZE = 0; then + AC_LIBOBJ([getdtablesize]) + fi gl_UNISTD_MODULE_INDICATOR([getdtablesize]) gl_FUNC_GETHOSTNAME + if test $HAVE_GETHOSTNAME = 0; then + AC_LIBOBJ([gethostname]) + gl_PREREQ_GETHOSTNAME + fi gl_UNISTD_MODULE_INDICATOR([gethostname]) gl_FUNC_GETLOGIN_R + if test $HAVE_GETLOGIN_R = 0 || test $REPLACE_GETLOGIN_R = 1; then + AC_LIBOBJ([getlogin_r]) + gl_PREREQ_GETLOGIN_R + fi gl_UNISTD_MODULE_INDICATOR([getlogin_r]) gl_FUNC_GETOPT_GNU + if test $REPLACE_GETOPT = 1; then + AC_LIBOBJ([getopt]) + AC_LIBOBJ([getopt1]) + gl_PREREQ_GETOPT + fi gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) gl_FUNC_GETOPT_POSIX + if test $REPLACE_GETOPT = 1; then + AC_LIBOBJ([getopt]) + AC_LIBOBJ([getopt1]) + gl_PREREQ_GETOPT + fi AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) gl_FUNC_GETTIMEOFDAY + if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then + AC_LIBOBJ([gettimeofday]) + gl_PREREQ_GETTIMEOFDAY + fi gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) gl_GLOB + if test -n "$GLOB_H"; then + AC_LIBOBJ([glob]) + gl_PREREQ_GLOB + fi gl_FUNC_LCHOWN + if test $HAVE_LCHOWN = 0 || test $REPLACE_LCHOWN = 1; then + AC_LIBOBJ([lchown]) + fi gl_UNISTD_MODULE_INDICATOR([lchown]) gl_FUNC_LINK + if test $HAVE_LINK = 0 || test $REPLACE_LINK = 1; then + AC_LIBOBJ([link]) + fi gl_UNISTD_MODULE_INDICATOR([link]) gl_LOCALCHARSET LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\"" AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) gl_FUNC_LSEEK + if test $REPLACE_LSEEK = 1; then + AC_LIBOBJ([lseek]) + fi gl_UNISTD_MODULE_INDICATOR([lseek]) gl_FUNC_LSTAT + if test $REPLACE_LSTAT = 1; then + AC_LIBOBJ([lstat]) + gl_PREREQ_LSTAT + fi gl_SYS_STAT_MODULE_INDICATOR([lstat]) gl_FUNC_MALLOC_POSIX + if test $REPLACE_MALLOC = 1; then + AC_LIBOBJ([malloc]) + fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MALLOCA gl_MATH_H gl_FUNC_MBRTOWC + if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then + AC_LIBOBJ([mbrtowc]) + gl_PREREQ_MBRTOWC + fi gl_WCHAR_MODULE_INDICATOR([mbrtowc]) gl_FUNC_MBSINIT + if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then + AC_LIBOBJ([mbsinit]) + gl_PREREQ_MBSINIT + fi gl_WCHAR_MODULE_INDICATOR([mbsinit]) gl_FUNC_MBSRTOWCS + if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then + AC_LIBOBJ([mbsrtowcs]) + AC_LIBOBJ([mbsrtowcs-state]) + gl_PREREQ_MBSRTOWCS + fi gl_WCHAR_MODULE_INDICATOR([mbsrtowcs]) gl_FUNC_MEMCHR + if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then + AC_LIBOBJ([memchr]) + gl_PREREQ_MEMCHR + fi gl_STRING_MODULE_INDICATOR([memchr]) gl_FUNC_MEMPCPY + if test $HAVE_MEMPCPY = 0; then + AC_LIBOBJ([mempcpy]) + gl_PREREQ_MEMPCPY + fi gl_STRING_MODULE_INDICATOR([mempcpy]) gl_FUNC_MEMRCHR + if test $ac_cv_func_memrchr = no; then + AC_LIBOBJ([memrchr]) + gl_PREREQ_MEMRCHR + fi gl_STRING_MODULE_INDICATOR([memrchr]) gl_FUNC_MKDIR + if test $REPLACE_MKDIR = 1; then + AC_LIBOBJ([mkdir]) + fi gl_FUNC_MKFIFO + if test $HAVE_MKFIFO = 0 || test $REPLACE_MKFIFO = 1; then + AC_LIBOBJ([mkfifo]) + fi gl_UNISTD_MODULE_INDICATOR([mkfifo]) gl_FUNC_MKSTEMP + if test $HAVE_MKSTEMP = 0 || test $REPLACE_MKSTEMP = 1; then + AC_LIBOBJ([mkstemp]) + gl_PREREQ_MKSTEMP + fi gl_STDLIB_MODULE_INDICATOR([mkstemp]) gl_FUNC_MKTIME + if test $REPLACE_MKTIME = 1; then + AC_LIBOBJ([mktime]) + gl_PREREQ_MKTIME + fi gl_TIME_MODULE_INDICATOR([mktime]) gl_MULTIARCH gl_FUNC_NANOSLEEP + if test $HAVE_NANOSLEEP = 0 || test $REPLACE_NANOSLEEP = 1; then + AC_LIBOBJ([nanosleep]) + gl_PREREQ_NANOSLEEP + fi gl_TIME_MODULE_INDICATOR([nanosleep]) gl_NPROC gl_FUNC_OPEN gl_FCNTL_MODULE_INDICATOR([open]) gl_FUNC_OPENAT + AC_LIBOBJ([openat-proc]) + if test $HAVE_FCHMODAT = 0; then + AC_LIBOBJ([fchmodat]) + fi + if test $ac_cv_func_fstatat = no || test $REPLACE_FSTATAT = 1; then + AC_LIBOBJ([fstatat]) + fi + if test $HAVE_MKDIRAT = 0; then + AC_LIBOBJ([mkdirat]) + fi + if test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1; then + AC_LIBOBJ([openat]) + fi + if test $ac_cv_func_unlinkat = no || test $REPLACE_UNLINKAT = 1; then + AC_LIBOBJ([unlinkat]) + fi + if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then + AC_LIBOBJ([fchownat]) + fi gl_PATHMAX AC_CHECK_DECLS([program_invocation_name], [], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include ]) gl_FUNC_READLINK + if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then + AC_LIBOBJ([readlink]) + gl_PREREQ_READLINK + fi gl_UNISTD_MODULE_INDICATOR([readlink]) gl_FUNC_REALLOC_POSIX + if test $REPLACE_REALLOC = 1; then + AC_LIBOBJ([realloc]) + fi gl_STDLIB_MODULE_INDICATOR([realloc-posix]) gl_FUNC_RENAME + if test $REPLACE_RENAME = 1; then + AC_LIBOBJ([rename]) + fi gl_STDIO_MODULE_INDICATOR([rename]) gl_FUNC_RMDIR + if test $REPLACE_RMDIR = 1; then + AC_LIBOBJ([rmdir]) + fi gl_UNISTD_MODULE_INDICATOR([rmdir]) gl_FUNC_ROUND + if test $HAVE_DECL_ROUND = 0 || test $REPLACE_ROUND = 1; then + AC_LIBOBJ([round]) + fi gl_MATH_MODULE_INDICATOR([round]) gl_FUNC_ROUNDF + if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then + AC_LIBOBJ([roundf]) + fi gl_MATH_MODULE_INDICATOR([roundf]) gl_SAVE_CWD gl_FUNC_SELECT + if test $REPLACE_SELECT = 1; then + AC_LIBOBJ([select]) + fi gl_SYS_SELECT_MODULE_INDICATOR([select]) gl_SIGACTION + if test $HAVE_SIGACTION = 0; then + AC_LIBOBJ([sigaction]) + gl_PREREQ_SIGACTION + fi gl_SIGNAL_MODULE_INDICATOR([sigaction]) gl_SIGNAL_H gl_SIGNALBLOCKING + if test $HAVE_POSIX_SIGNALBLOCKING = 0; then + AC_LIBOBJ([sigprocmask]) + gl_PREREQ_SIGPROCMASK + fi gl_SIGNAL_MODULE_INDICATOR([sigprocmask]) gl_SIZE_MAX gl_FUNC_SLEEP + if test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1; then + AC_LIBOBJ([sleep]) + fi gl_UNISTD_MODULE_INDICATOR([sleep]) gl_SOCKETLIB gl_SOCKETS gl_TYPE_SOCKLEN_T gl_FUNC_STAT + if test $REPLACE_STAT = 1; then + AC_LIBOBJ([stat]) + gl_PREREQ_STAT + fi gl_SYS_STAT_MODULE_INDICATOR([stat]) AM_STDBOOL_H gl_STDDEF_H *************** *** 358,363 **** --- 552,561 ---- gl_STDIO_H gl_STDLIB_H gl_FUNC_STRDUP_POSIX + if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then + AC_LIBOBJ([strdup]) + gl_PREREQ_STRDUP + fi gl_STRING_MODULE_INDICATOR([strdup]) gl_FUNC_STRERROR if test $REPLACE_STRERROR = 1; then *************** *** 373,380 **** --- 571,585 ---- gl_FUNC_GNU_STRFTIME gl_HEADER_STRING_H gl_FUNC_STRPTIME + if test $HAVE_STRPTIME = 0; then + AC_LIBOBJ([strptime]) + gl_PREREQ_STRPTIME + fi gl_TIME_MODULE_INDICATOR([strptime]) gl_FUNC_SYMLINK + if test $HAVE_SYMLINK = 0 || test $REPLACE_SYMLINK = 1; then + AC_LIBOBJ([symlink]) + fi gl_UNISTD_MODULE_INDICATOR([symlink]) gl_HEADER_SYS_SELECT AC_PROG_MKDIR_P *************** *** 391,406 **** --- 596,627 ---- gl_FUNC_GEN_TEMPNAME gl_HEADER_TIME_H gl_TIME_R + if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then + AC_LIBOBJ([time_r]) + gl_PREREQ_TIME_R + fi gl_TIME_MODULE_INDICATOR([time_r]) gl_FUNC_TIMES + if test $HAVE_TIMES = 0; then + AC_LIBOBJ([times]) + fi gl_SYS_TIMES_MODULE_INDICATOR([times]) gl_FUNC_TRUNC + if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then + AC_LIBOBJ([trunc]) + fi gl_MATH_MODULE_INDICATOR([trunc]) gl_FUNC_TRUNCF + if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then + AC_LIBOBJ([truncf]) + fi gl_MATH_MODULE_INDICATOR([truncf]) gl_UNISTD_H gl_UNISTD_SAFER gl_FUNC_UNLINK + if test $REPLACE_UNLINK = 1; then + AC_LIBOBJ([unlink]) + fi gl_UNISTD_MODULE_INDICATOR([unlink]) gl_FUNC_VASNPRINTF gl_FUNC_VSNPRINTF *************** *** 595,600 **** --- 816,822 ---- lib/filenamecat-lgpl.c lib/filenamecat.h lib/float+.h + lib/float.c lib/float.in.h lib/floor.c lib/fnmatch.c *************** *** 742,748 **** m4/chdir-long.m4 m4/check-math-lib.m4 m4/chown.m4 - m4/cloexec.m4 m4/close.m4 m4/codeset.m4 m4/configmake.m4 --- 964,969 ---- diff -cNr octave-3.4.1/m4/lchown.m4 octave-3.4.2/m4/lchown.m4 *** octave-3.4.1/m4/lchown.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/lchown.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 15 # Determine whether we need the lchown wrapper. dnl Copyright (C) 1998, 2001, 2003-2007, 2009-2011 Free Software Foundation, --- 1,4 ---- ! # serial 16 # Determine whether we need the lchown wrapper. dnl Copyright (C) 1998, 2001, 2003-2007, 2009-2011 Free Software Foundation, *************** *** 17,29 **** AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_CHOWN]) AC_CHECK_FUNCS_ONCE([lchmod]) ! AC_REPLACE_FUNCS([lchown]) if test $ac_cv_func_lchown = no; then HAVE_LCHOWN=0 elif test "$gl_cv_func_chown_slash_works" != yes \ || test "$gl_cv_func_chown_ctime_works" != yes; then dnl Trailing slash and ctime bugs in chown also occur in lchown. - AC_LIBOBJ([lchown]) REPLACE_LCHOWN=1 fi ]) --- 17,28 ---- AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_CHOWN]) AC_CHECK_FUNCS_ONCE([lchmod]) ! AC_CHECK_FUNCS([lchown]) if test $ac_cv_func_lchown = no; then HAVE_LCHOWN=0 elif test "$gl_cv_func_chown_slash_works" != yes \ || test "$gl_cv_func_chown_ctime_works" != yes; then dnl Trailing slash and ctime bugs in chown also occur in lchown. REPLACE_LCHOWN=1 fi ]) diff -cNr octave-3.4.1/m4/link.m4 octave-3.4.2/m4/link.m4 *** octave-3.4.1/m4/link.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/link.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # link.m4 serial 5 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # link.m4 serial 6 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 10,16 **** AC_CHECK_FUNCS_ONCE([link]) if test $ac_cv_func_link = no; then HAVE_LINK=0 - AC_LIBOBJ([link]) else AC_CACHE_CHECK([whether link handles trailing slash correctly], [gl_cv_func_link_works], --- 10,15 ---- *************** *** 37,43 **** rm -f conftest.a conftest.b conftest.lnk]) if test "$gl_cv_func_link_works" != yes; then REPLACE_LINK=1 - AC_LIBOBJ([link]) fi fi ]) --- 36,41 ---- diff -cNr octave-3.4.1/m4/lseek.m4 octave-3.4.2/m4/lseek.m4 *** octave-3.4.1/m4/lseek.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/lseek.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # lseek.m4 serial 6 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # lseek.m4 serial 7 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 35,49 **** [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) fi]) if test $gl_cv_func_lseek_pipe = no; then ! gl_REPLACE_LSEEK fi ]) - - AC_DEFUN([gl_REPLACE_LSEEK], - [ - AC_LIBOBJ([lseek]) - AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - REPLACE_LSEEK=1 - AC_DEFINE([LSEEK_PIPE_BROKEN], [1], - [Define to 1 if lseek does not detect pipes.]) - ]) --- 35,42 ---- [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) fi]) if test $gl_cv_func_lseek_pipe = no; then ! REPLACE_LSEEK=1 ! AC_DEFINE([LSEEK_PIPE_BROKEN], [1], ! [Define to 1 if lseek does not detect pipes.]) fi ]) diff -cNr octave-3.4.1/m4/lstat.m4 octave-3.4.2/m4/lstat.m4 *** octave-3.4.1/m4/lstat.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/lstat.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 21 # Copyright (C) 1997-2001, 2003-2011 Free Software Foundation, Inc. # --- 1,4 ---- ! # serial 23 # Copyright (C) 1997-2001, 2003-2011 Free Software Foundation, Inc. # *************** *** 15,38 **** dnl "#define lstat stat", and lstat.c is a no-op. AC_CHECK_FUNCS_ONCE([lstat]) if test $ac_cv_func_lstat = yes; then ! AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) ! if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then ! dnl Note: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK does AC_LIBOBJ([lstat]). REPLACE_LSTAT=1 fi - # Prerequisites of lib/lstat.c. - AC_REQUIRE([AC_C_INLINE]) else HAVE_LSTAT=0 fi ]) ! # Redefine AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK, because it is no longer ! # maintained in Autoconf. ! AC_DEFUN([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], [ AC_CACHE_CHECK([whether lstat correctly handles trailing slash], ! [ac_cv_func_lstat_dereferences_slashed_symlink], [rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then --- 15,42 ---- dnl "#define lstat stat", and lstat.c is a no-op. AC_CHECK_FUNCS_ONCE([lstat]) if test $ac_cv_func_lstat = yes; then ! AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) ! if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then REPLACE_LSTAT=1 fi else HAVE_LSTAT=0 fi ]) ! # Prerequisites of lib/lstat.c. ! AC_DEFUN([gl_PREREQ_LSTAT], [ + AC_REQUIRE([AC_C_INLINE]) + : + ]) + + AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], + [ + dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it + dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ. AC_CACHE_CHECK([whether lstat correctly handles trailing slash], ! [gl_cv_func_lstat_dereferences_slashed_symlink], [rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then *************** *** 45,69 **** have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ]])], ! [ac_cv_func_lstat_dereferences_slashed_symlink=yes], ! [ac_cv_func_lstat_dereferences_slashed_symlink=no], [# When cross-compiling, be pessimistic so we will end up using the # replacement version of lstat that checks for trailing slashes and # calls lstat a second time when necessary. ! ac_cv_func_lstat_dereferences_slashed_symlink=no ]) else # If the 'ln -s' command failed, then we probably don't even # have an lstat function. ! ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file ]) ! test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], [Define to 1 if `lstat' dereferences a symlink specified with a trailing slash.]) - if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then - AC_LIBOBJ([lstat]) - fi ]) --- 49,70 ---- have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ]])], ! [gl_cv_func_lstat_dereferences_slashed_symlink=yes], ! [gl_cv_func_lstat_dereferences_slashed_symlink=no], [# When cross-compiling, be pessimistic so we will end up using the # replacement version of lstat that checks for trailing slashes and # calls lstat a second time when necessary. ! gl_cv_func_lstat_dereferences_slashed_symlink=no ]) else # If the 'ln -s' command failed, then we probably don't even # have an lstat function. ! gl_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file ]) ! test $gl_cv_func_lstat_dereferences_slashed_symlink = yes && AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], [Define to 1 if `lstat' dereferences a symlink specified with a trailing slash.]) ]) diff -cNr octave-3.4.1/m4/malloc.m4 octave-3.4.2/m4/malloc.m4 *** octave-3.4.1/m4/malloc.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/malloc.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # malloc.m4 serial 12 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # malloc.m4 serial 13 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 17,23 **** [Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_MALLOC_GNU], [0]) ! gl_REPLACE_MALLOC ]) ]) --- 17,23 ---- [Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_MALLOC_GNU], [0]) ! REPLACE_MALLOC=1 ]) ]) *************** *** 33,39 **** AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if the 'malloc' function is POSIX compliant.]) else ! gl_REPLACE_MALLOC fi ]) --- 33,39 ---- AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if the 'malloc' function is POSIX compliant.]) else ! REPLACE_MALLOC=1 fi ]) *************** *** 58,66 **** [gl_cv_func_malloc_posix=no]) ]) ]) - - AC_DEFUN([gl_REPLACE_MALLOC], - [ - AC_LIBOBJ([malloc]) - REPLACE_MALLOC=1 - ]) --- 58,60 ---- diff -cNr octave-3.4.1/m4/mbrtowc.m4 octave-3.4.2/m4/mbrtowc.m4 *** octave-3.4.1/m4/mbrtowc.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mbrtowc.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # mbrtowc.m4 serial 23 dnl Copyright (C) 2001-2002, 2004-2005, 2008-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation --- 1,4 ---- ! # mbrtowc.m4 serial 24 dnl Copyright (C) 2001-2002, 2004-2005, 2008-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation *************** *** 53,62 **** esac fi fi - if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then - AC_LIBOBJ([mbrtowc]) - gl_PREREQ_MBRTOWC - fi ]) dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that --- 53,58 ---- diff -cNr octave-3.4.1/m4/mbsinit.m4 octave-3.4.2/m4/mbsinit.m4 *** octave-3.4.1/m4/mbsinit.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mbsinit.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # mbsinit.m4 serial 6 dnl Copyright (C) 2008, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # mbsinit.m4 serial 7 dnl Copyright (C) 2008, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 27,36 **** esac fi fi - if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then - AC_LIBOBJ([mbsinit]) - gl_PREREQ_MBSINIT - fi ]) # Prerequisites of lib/mbsinit.c. --- 27,32 ---- diff -cNr octave-3.4.1/m4/mbsrtowcs.m4 octave-3.4.2/m4/mbsrtowcs.m4 *** octave-3.4.1/m4/mbsrtowcs.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mbsrtowcs.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # mbsrtowcs.m4 serial 11 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # mbsrtowcs.m4 serial 12 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 25,35 **** esac fi fi - if test $HAVE_MBSRTOWCS = 0 || test $REPLACE_MBSRTOWCS = 1; then - AC_LIBOBJ([mbsrtowcs]) - AC_LIBOBJ([mbsrtowcs-state]) - gl_PREREQ_MBSRTOWCS - fi ]) dnl Test whether mbsrtowcs works. --- 25,30 ---- diff -cNr octave-3.4.1/m4/md5.m4 octave-3.4.2/m4/md5.m4 *** octave-3.4.1/m4/md5.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/md5.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # md5.m4 serial 11 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # md5.m4 serial 12 dnl Copyright (C) 2002-2006, 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 6,13 **** AC_DEFUN([gl_MD5], [ - AC_LIBOBJ([md5]) - dnl Prerequisites of lib/md5.c. AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([AC_C_INLINE]) --- 6,11 ---- diff -cNr octave-3.4.1/m4/memchr.m4 octave-3.4.2/m4/memchr.m4 *** octave-3.4.1/m4/memchr.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/memchr.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # memchr.m4 serial 11 dnl Copyright (C) 2002-2004, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # memchr.m4 serial 12 dnl Copyright (C) 2002-2004, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 80,89 **** REPLACE_MEMCHR=1 fi fi - if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then - AC_LIBOBJ([memchr]) - gl_PREREQ_MEMCHR - fi ]) # Prerequisites of lib/memchr.c. --- 80,85 ---- diff -cNr octave-3.4.1/m4/mempcpy.m4 octave-3.4.2/m4/mempcpy.m4 *** octave-3.4.1/m4/mempcpy.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mempcpy.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # mempcpy.m4 serial 10 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation --- 1,4 ---- ! # mempcpy.m4 serial 11 dnl Copyright (C) 2003-2004, 2006-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation *************** *** 14,23 **** AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) ! AC_REPLACE_FUNCS([mempcpy]) if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 - gl_PREREQ_MEMPCPY fi ]) --- 14,22 ---- AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) ! AC_CHECK_FUNCS([mempcpy]) if test $ac_cv_func_mempcpy = no; then HAVE_MEMPCPY=0 fi ]) diff -cNr octave-3.4.1/m4/memrchr.m4 octave-3.4.2/m4/memrchr.m4 *** octave-3.4.1/m4/memrchr.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/memrchr.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # memrchr.m4 serial 9 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation --- 1,4 ---- ! # memrchr.m4 serial 10 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation *************** *** 16,25 **** HAVE_DECL_MEMRCHR=0 fi ! AC_REPLACE_FUNCS([memrchr]) ! if test $ac_cv_func_memrchr = no; then ! gl_PREREQ_MEMRCHR ! fi ]) # Prerequisites of lib/memrchr.c. --- 16,22 ---- HAVE_DECL_MEMRCHR=0 fi ! AC_CHECK_FUNCS([memrchr]) ]) # Prerequisites of lib/memrchr.c. diff -cNr octave-3.4.1/m4/mkdir.m4 octave-3.4.2/m4/mkdir.m4 *** octave-3.4.1/m4/mkdir.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mkdir.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 9 # Copyright (C) 2001, 2003-2004, 2006, 2008-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! # serial 10 # Copyright (C) 2001, 2003-2004, 2006, 2008-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 27,33 **** ) if test "$gl_cv_func_mkdir_trailing_slash_works" != yes; then REPLACE_MKDIR=1 - AC_LIBOBJ([mkdir]) fi AC_CACHE_CHECK([whether mkdir handles trailing dot], --- 27,32 ---- *************** *** 45,51 **** ) if test "$gl_cv_func_mkdir_trailing_dot_works" != yes; then REPLACE_MKDIR=1 - AC_LIBOBJ([mkdir]) AC_DEFINE([FUNC_MKDIR_DOT_BUG], [1], [Define to 1 if mkdir mistakenly creates a directory given with a trailing dot component.]) fi --- 44,49 ---- diff -cNr octave-3.4.1/m4/mkfifo.m4 octave-3.4.2/m4/mkfifo.m4 *** octave-3.4.1/m4/mkfifo.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mkfifo.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 2 # See if we need to provide mkfifo replacement. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # serial 3 # See if we need to provide mkfifo replacement. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. *************** *** 14,20 **** AC_CHECK_FUNCS_ONCE([mkfifo]) if test $ac_cv_func_mkfifo = no; then HAVE_MKFIFO=0 - AC_LIBOBJ([mkfifo]) else dnl Check for Solaris 9 and FreeBSD bug with trailing slash. AC_CHECK_FUNCS_ONCE([lstat]) --- 14,19 ---- *************** *** 44,50 **** AC_DEFINE([MKFIFO_TRAILING_SLASH_BUG], [1], [Define to 1 if mkfifo does not reject trailing slash]) REPLACE_MKFIFO=1 - AC_LIBOBJ([mkfifo]) fi fi ]) --- 43,48 ---- diff -cNr octave-3.4.1/m4/mkstemp.m4 octave-3.4.2/m4/mkstemp.m4 *** octave-3.4.1/m4/mkstemp.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mkstemp.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 20 # Copyright (C) 2001, 2003-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! #serial 21 # Copyright (C) 2001, 2003-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 61,73 **** ]) if test "$gl_cv_func_working_mkstemp" != yes; then REPLACE_MKSTEMP=1 - AC_LIBOBJ([mkstemp]) - gl_PREREQ_MKSTEMP fi else HAVE_MKSTEMP=0 - AC_LIBOBJ([mkstemp]) - gl_PREREQ_MKSTEMP fi ]) --- 61,69 ---- diff -cNr octave-3.4.1/m4/mktime.m4 octave-3.4.2/m4/mktime.m4 *** octave-3.4.1/m4/mktime.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/mktime.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 20 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation --- 1,4 ---- ! # serial 21 dnl Copyright (C) 2002-2003, 2005-2007, 2009-2011 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation *************** *** 7,27 **** dnl From Jim Meyering. ! # Redefine AC_FUNC_MKTIME, because it is no longer maintained in Autoconf. ! # AC_FUNC_MKTIME ! # -------------- ! AC_DEFUN([AC_FUNC_MKTIME], ! [AC_CHECK_HEADERS_ONCE([unistd.h]) ! AC_CHECK_FUNCS_ONCE([alarm]) ! AC_REQUIRE([gl_MULTIARCH]) ! if test $APPLE_UNIVERSAL_BUILD = 1; then ! # A universal build on Apple MacOS X platforms. ! # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. ! # But we need a configuration result that is valid in both modes. ! ac_cv_func_working_mktime=no ! fi ! AC_CACHE_CHECK([for working mktime], [ac_cv_func_working_mktime], ! [AC_RUN_IFELSE([AC_LANG_SOURCE( [[/* Test program from Paul Eggert and Tony Leneis. */ #include #include --- 7,30 ---- dnl From Jim Meyering. ! AC_DEFUN([gl_FUNC_MKTIME], ! [ ! AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) ! ! dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained ! dnl in Autoconf and because it invokes AC_LIBOBJ. ! AC_CHECK_HEADERS_ONCE([unistd.h]) ! AC_CHECK_FUNCS_ONCE([alarm]) ! AC_REQUIRE([gl_MULTIARCH]) ! if test $APPLE_UNIVERSAL_BUILD = 1; then ! # A universal build on Apple MacOS X platforms. ! # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. ! # But we need a configuration result that is valid in both modes. ! gl_cv_func_working_mktime=no ! fi ! AC_CACHE_CHECK([for working mktime], [gl_cv_func_working_mktime], ! [AC_RUN_IFELSE( ! [AC_LANG_SOURCE( [[/* Test program from Paul Eggert and Tony Leneis. */ #include #include *************** *** 213,234 **** result |= 64; return result; }]])], ! [ac_cv_func_working_mktime=yes], ! [ac_cv_func_working_mktime=no], ! [ac_cv_func_working_mktime=no])]) ! if test $ac_cv_func_working_mktime = no; then ! AC_LIBOBJ([mktime]) ! fi ! ])# AC_FUNC_MKTIME ! AC_DEFUN([gl_FUNC_MKTIME], ! [ ! AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) ! AC_FUNC_MKTIME ! dnl Note: AC_FUNC_MKTIME does AC_LIBOBJ([mktime]). ! if test $ac_cv_func_working_mktime = no; then REPLACE_MKTIME=1 - gl_PREREQ_MKTIME else REPLACE_MKTIME=0 fi --- 216,228 ---- result |= 64; return result; }]])], ! [gl_cv_func_working_mktime=yes], ! [gl_cv_func_working_mktime=no], ! [gl_cv_func_working_mktime=no]) ! ]) ! if test $gl_cv_func_working_mktime = no; then REPLACE_MKTIME=1 else REPLACE_MKTIME=0 fi *************** *** 245,252 **** [dnl mktime works but it doesn't export __mktime_internal, dnl so we need to substitute our own mktime implementation. REPLACE_MKTIME=1 - AC_LIBOBJ([mktime]) - gl_PREREQ_MKTIME ]) fi ]) --- 239,244 ---- diff -cNr octave-3.4.1/m4/nanosleep.m4 octave-3.4.2/m4/nanosleep.m4 *** octave-3.4.1/m4/nanosleep.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/nanosleep.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 33 dnl From Jim Meyering. dnl Check for the nanosleep function. --- 1,4 ---- ! # serial 34 dnl From Jim Meyering. dnl Check for the nanosleep function. *************** *** 121,130 **** HAVE_NANOSLEEP=0 fi LIBS=$nanosleep_save_libs - if test $HAVE_NANOSLEEP = 0 || test $REPLACE_NANOSLEEP = 1; then - AC_LIBOBJ([nanosleep]) - gl_PREREQ_NANOSLEEP - fi ]) # Prerequisites of lib/nanosleep.c. --- 121,126 ---- diff -cNr octave-3.4.1/m4/openat.m4 octave-3.4.2/m4/openat.m4 *** octave-3.4.1/m4/openat.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/openat.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 31 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # serial 33 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2011 Free Software Foundation, Inc. *************** *** 22,48 **** GNULIB_FCHOWNAT=1 GNULIB_UNLINKAT=1 - AC_LIBOBJ([openat-proc]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([lchmod]) ! AC_REPLACE_FUNCS([fchmodat fstatat mkdirat openat unlinkat]) ! AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_REQUIRE([gl_FUNC_UNLINK]) ! case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in yes+yes) # GNU/Hurd has unlinkat, but it has the same bug as unlink. if test $REPLACE_UNLINK = 1; then - AC_LIBOBJ([unlinkat]) REPLACE_UNLINKAT=1 fi ;; yes+*) # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. - AC_LIBOBJ([openat]) REPLACE_OPENAT=1 - AC_LIBOBJ([fstatat]) REPLACE_FSTATAT=1 - AC_LIBOBJ([unlinkat]) REPLACE_UNLINKAT=1 ;; *) --- 22,43 ---- GNULIB_FCHOWNAT=1 GNULIB_UNLINKAT=1 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([lchmod]) ! AC_CHECK_FUNCS([fchmodat fstatat mkdirat openat unlinkat]) ! AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) AC_REQUIRE([gl_FUNC_UNLINK]) ! case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in yes+yes) # GNU/Hurd has unlinkat, but it has the same bug as unlink. if test $REPLACE_UNLINK = 1; then REPLACE_UNLINKAT=1 fi ;; yes+*) # Solaris 9 has *at functions, but uniformly mishandles trailing # slash in all of them. REPLACE_OPENAT=1 REPLACE_FSTATAT=1 REPLACE_UNLINKAT=1 ;; *) *************** *** 158,166 **** REPLACE_FCHOWNAT=1 fi], [HAVE_FCHOWNAT=0]) - if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then - AC_LIBOBJ([fchownat]) - fi ]) AC_DEFUN([gl_PREREQ_OPENAT], --- 153,158 ---- diff -cNr octave-3.4.1/m4/printf.m4 octave-3.4.2/m4/printf.m4 *** octave-3.4.1/m4/printf.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/printf.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # printf.m4 serial 42 dnl Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # printf.m4 serial 43 dnl Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 892,898 **** dnl floating-point or pointer output. On Solaris 10/x86, precisions larger dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC, dnl precisions larger than 510 in floating-point output yield wrong results. ! dnl On BeOS, precisions larger than 1044 crash the program. dnl Result is gl_cv_func_printf_precision. AC_DEFUN([gl_PRINTF_PRECISION], --- 892,899 ---- dnl floating-point or pointer output. On Solaris 10/x86, precisions larger dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC, dnl precisions larger than 510 in floating-point output yield wrong results. ! dnl On AIX 7.1, precisions larger than 998 in floating-point output yield ! dnl wrong results. On BeOS, precisions larger than 1044 crash the program. dnl Result is gl_cv_func_printf_precision. AC_DEFUN([gl_PRINTF_PRECISION], *************** *** 921,926 **** --- 922,930 ---- if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5 || buf[0] != '1') result |= 4; + if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5 + || buf[0] != '1') + result |= 4; return result; }]])], [gl_cv_func_printf_precision=yes], *************** *** 1465,1471 **** dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # ! dnl AIX 5.2, 7.1 . . # # # . . . . . . # . . . . . . . . dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . . dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . . dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . # --- 1469,1476 ---- dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # ! dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . . ! dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . . dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . . dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . . dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . # diff -cNr octave-3.4.1/m4/readlink.m4 octave-3.4.2/m4/readlink.m4 *** octave-3.4.1/m4/readlink.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/readlink.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # readlink.m4 serial 10 dnl Copyright (C) 2003, 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # readlink.m4 serial 11 dnl Copyright (C) 2003, 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 10,17 **** AC_CHECK_FUNCS_ONCE([readlink]) if test $ac_cv_func_readlink = no; then HAVE_READLINK=0 - AC_LIBOBJ([readlink]) - gl_PREREQ_READLINK else AC_CACHE_CHECK([whether readlink signature is correct], [gl_cv_decl_readlink_works], --- 10,15 ---- *************** *** 40,49 **** AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink fails to recognize a trailing slash.]) REPLACE_READLINK=1 - AC_LIBOBJ([readlink]) elif test "$gl_cv_decl_readlink_works" != yes; then REPLACE_READLINK=1 - AC_LIBOBJ([readlink]) fi fi ]) --- 38,45 ---- diff -cNr octave-3.4.1/m4/realloc.m4 octave-3.4.2/m4/realloc.m4 *** octave-3.4.1/m4/realloc.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/realloc.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # realloc.m4 serial 11 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # realloc.m4 serial 12 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 17,23 **** [Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_REALLOC_GNU], [0]) ! gl_REPLACE_REALLOC ]) ])# gl_FUNC_REALLOC_GNU --- 17,23 ---- [Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_REALLOC_GNU], [0]) ! REPLACE_REALLOC=1 ]) ])# gl_FUNC_REALLOC_GNU *************** *** 33,44 **** AC_DEFINE([HAVE_REALLOC_POSIX], [1], [Define if the 'realloc' function is POSIX compliant.]) else ! gl_REPLACE_REALLOC fi ]) - - AC_DEFUN([gl_REPLACE_REALLOC], - [ - AC_LIBOBJ([realloc]) - REPLACE_REALLOC=1 - ]) --- 33,38 ---- AC_DEFINE([HAVE_REALLOC_POSIX], [1], [Define if the 'realloc' function is POSIX compliant.]) else ! REPLACE_REALLOC=1 fi ]) diff -cNr octave-3.4.1/m4/rename.m4 octave-3.4.2/m4/rename.m4 *** octave-3.4.1/m4/rename.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/rename.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 23 # Copyright (C) 2001, 2003, 2005-2006, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! # serial 24 # Copyright (C) 2001, 2003, 2005-2006, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 58,64 **** rm -rf conftest.f conftest.f1 conftest.f2 conftest.d1 conftest.d2 conftest.lnk ]) if test "x$gl_cv_func_rename_slash_dst_works" != xyes; then - AC_LIBOBJ([rename]) REPLACE_RENAME=1 AC_DEFINE([RENAME_TRAILING_SLASH_DEST_BUG], [1], [Define if rename does not correctly handle slashes on the destination --- 58,63 ---- *************** *** 102,108 **** rm -rf conftest.f conftest.f1 conftest.d1 conftest.d2 conftest.d3 conftest.lnk ]) if test "x$gl_cv_func_rename_slash_src_works" != xyes; then - AC_LIBOBJ([rename]) REPLACE_RENAME=1 AC_DEFINE([RENAME_TRAILING_SLASH_SOURCE_BUG], [1], [Define if rename does not correctly handle slashes on the source --- 101,106 ---- *************** *** 144,150 **** rm -rf conftest.f conftest.f1 ]) if test "x$gl_cv_func_rename_link_works" != xyes; then - AC_LIBOBJ([rename]) REPLACE_RENAME=1 AC_DEFINE([RENAME_HARD_LINK_BUG], [1], [Define if rename fails to leave hard links alone, as on NetBSD 1.6 --- 142,147 ---- *************** *** 179,185 **** rm -rf conftest.f conftest.d1 conftest.d2 ]) if test "x$gl_cv_func_rename_dest_works" != xyes; then - AC_LIBOBJ([rename]) REPLACE_RENAME=1 AC_DEFINE([RENAME_DEST_EXISTS_BUG], [1], [Define if rename does not work when the destination file exists, --- 176,181 ---- diff -cNr octave-3.4.1/m4/rmdir.m4 octave-3.4.2/m4/rmdir.m4 *** octave-3.4.1/m4/rmdir.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/rmdir.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # rmdir.m4 serial 10 dnl Copyright (C) 2002, 2005, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # rmdir.m4 serial 11 dnl Copyright (C) 2002, 2005, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 30,35 **** rm -rf conftest.dir conftest.file]) if test x"$gl_cv_func_rmdir_works" != xyes; then REPLACE_RMDIR=1 - AC_LIBOBJ([rmdir]) fi ]) --- 30,34 ---- diff -cNr octave-3.4.1/m4/roundf.m4 octave-3.4.2/m4/roundf.m4 *** octave-3.4.1/m4/roundf.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/roundf.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # roundf.m4 serial 10 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # roundf.m4 serial 13 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 66,77 **** #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! int main() { /* Test whether roundf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (roundf (minus_zerof))) ! return 1; ! return 0; } ]])], [gl_cv_func_roundf_ieee=yes], --- 66,83 ---- #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! static float dummy (float f) { return 0; } ! int main (int argc, char *argv[]) { + float (*my_roundf) (float) = argc ? roundf : dummy; + int result = 0; /* Test whether roundf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (my_roundf (minus_zerof))) ! result |= 1; ! /* Test whether roundf (-0.3f) is -0.0f. */ ! if (signbitf (-0.3f) && !signbitf (my_roundf (-0.3f))) ! result |= 2; ! return result; } ]])], [gl_cv_func_roundf_ieee=yes], *************** *** 89,95 **** HAVE_DECL_ROUNDF=0 fi if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then ! AC_LIBOBJ([roundf]) AC_CHECK_DECLS([ceilf, floorf], , , [#include ]) if test "$ac_cv_have_decl_floorf" = yes \ && test "$ac_cv_have_decl_ceilf" = yes; then --- 95,101 ---- HAVE_DECL_ROUNDF=0 fi if test $HAVE_DECL_ROUNDF = 0 || test $REPLACE_ROUNDF = 1; then ! dnl Find libraries needed to link lib/roundf.c. AC_CHECK_DECLS([ceilf, floorf], , , [#include ]) if test "$ac_cv_have_decl_floorf" = yes \ && test "$ac_cv_have_decl_ceilf" = yes; then diff -cNr octave-3.4.1/m4/round.m4 octave-3.4.2/m4/round.m4 *** octave-3.4.1/m4/round.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/round.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # round.m4 serial 10 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # round.m4 serial 12 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 69,78 **** #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! int main() { /* Test whether round (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (round (minus_zerod))) return 1; return 0; } --- 69,80 ---- #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! static double dummy (double f) { return 0; } ! int main (int argc, char *argv[]) { + double (*my_round) (double) = argc ? round : dummy; /* Test whether round (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (my_round (minus_zerod))) return 1; return 0; } *************** *** 92,98 **** HAVE_DECL_ROUND=0 fi if test $HAVE_DECL_ROUND = 0 || test $REPLACE_ROUND = 1; then ! AC_LIBOBJ([round]) gl_FUNC_FLOOR_LIBS gl_FUNC_CEIL_LIBS ROUND_LIBM= --- 94,100 ---- HAVE_DECL_ROUND=0 fi if test $HAVE_DECL_ROUND = 0 || test $REPLACE_ROUND = 1; then ! dnl Find libraries needed to link lib/round.c. gl_FUNC_FLOOR_LIBS gl_FUNC_CEIL_LIBS ROUND_LIBM= diff -cNr octave-3.4.1/m4/save-cwd.m4 octave-3.4.2/m4/save-cwd.m4 *** octave-3.4.1/m4/save-cwd.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/save-cwd.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,12 **** ! # serial 9 dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_SAVE_CWD], [ - AC_LIBOBJ([save-cwd]) - dnl Prerequisites for lib/save-cwd.c. AC_CHECK_FUNCS_ONCE([fchdir]) ]) --- 1,11 ---- ! # serial 10 dnl Copyright (C) 2002-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. + dnl Prerequisites for lib/save-cwd.c. AC_DEFUN([gl_SAVE_CWD], [ AC_CHECK_FUNCS_ONCE([fchdir]) ]) diff -cNr octave-3.4.1/m4/select.m4 octave-3.4.2/m4/select.m4 *** octave-3.4.1/m4/select.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/select.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # select.m4 serial 4 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # select.m4 serial 5 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 11,17 **** AC_REQUIRE([gl_SOCKETS]) if test "$ac_cv_header_winsock2_h" = yes; then REPLACE_SELECT=1 - AC_LIBOBJ([select]) else dnl On Interix 3.5, select(0, NULL, NULL, NULL, timeout) fails with error dnl EFAULT. --- 11,16 ---- *************** *** 45,54 **** ]) case "$gl_cv_func_select_supports0" in *yes) ;; ! *) ! REPLACE_SELECT=1 ! AC_LIBOBJ([select]) ! ;; esac fi ]) --- 44,50 ---- ]) case "$gl_cv_func_select_supports0" in *yes) ;; ! *) REPLACE_SELECT=1 ;; esac fi ]) diff -cNr octave-3.4.1/m4/sigaction.m4 octave-3.4.2/m4/sigaction.m4 *** octave-3.4.1/m4/sigaction.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/sigaction.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # sigaction.m4 serial 5 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # sigaction.m4 serial 6 dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 17,24 **** fi else HAVE_SIGACTION=0 - AC_LIBOBJ([sigaction]) - gl_PREREQ_SIGACTION fi ]) --- 17,22 ---- diff -cNr octave-3.4.1/m4/signalblocking.m4 octave-3.4.2/m4/signalblocking.m4 *** octave-3.4.1/m4/signalblocking.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/signalblocking.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # signalblocking.m4 serial 10 dnl Copyright (C) 2001-2002, 2006-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # signalblocking.m4 serial 11 dnl Copyright (C) 2001-2002, 2006-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 19,26 **** fi if test -z "$gl_cv_func_sigprocmask"; then HAVE_POSIX_SIGNALBLOCKING=0 - AC_LIBOBJ([sigprocmask]) - gl_PREREQ_SIGPROCMASK fi ]) --- 19,24 ---- diff -cNr octave-3.4.1/m4/sleep.m4 octave-3.4.2/m4/sleep.m4 *** octave-3.4.1/m4/sleep.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/sleep.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # sleep.m4 serial 4 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # sleep.m4 serial 5 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 16,22 **** AC_CHECK_FUNCS_ONCE([sleep]) if test $ac_cv_have_decl_sleep != yes; then HAVE_SLEEP=0 - AC_LIBOBJ([sleep]) else dnl Cygwin 1.5.x has a bug where sleep can't exceed 49.7 days. AC_CACHE_CHECK([for working sleep], [gl_cv_func_sleep_works], --- 16,21 ---- *************** *** 48,54 **** [gl_cv_func_sleep_works="guessing no"])]) if test "$gl_cv_func_sleep_works" != yes; then REPLACE_SLEEP=1 - AC_LIBOBJ([sleep]) fi fi ]) --- 47,52 ---- diff -cNr octave-3.4.1/m4/stat.m4 octave-3.4.2/m4/stat.m4 *** octave-3.4.1/m4/stat.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/stat.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 7 # Copyright (C) 2009-2011 Free Software Foundation, Inc. # --- 1,4 ---- ! # serial 8 # Copyright (C) 2009-2011 Free Software Foundation, Inc. # *************** *** 58,66 **** AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs help when passed a file name with a trailing slash]);; esac ! if test $REPLACE_STAT = 1; then ! AC_LIBOBJ([stat]) ! dnl Prerequisites of lib/stat.c. ! AC_REQUIRE([AC_C_INLINE]) ! fi ]) --- 58,68 ---- AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs help when passed a file name with a trailing slash]);; esac ! ]) ! ! # Prerequisites of lib/stat.c. ! AC_DEFUN([gl_PREREQ_STAT], ! [ ! AC_REQUIRE([AC_C_INLINE]) ! : ]) diff -cNr octave-3.4.1/m4/strdup.m4 octave-3.4.2/m4/strdup.m4 *** octave-3.4.1/m4/strdup.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/strdup.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # strdup.m4 serial 12 dnl Copyright (C) 2002-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # strdup.m4 serial 13 dnl Copyright (C) 2002-2011 Free Software Foundation, Inc. *************** *** 10,19 **** [ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([strdup]) - if test $ac_cv_func_strdup != yes; then - AC_LIBOBJ([strdup]) - gl_PREREQ_STRDUP - fi AC_CHECK_DECLS_ONCE([strdup]) if test $ac_cv_have_decl_strdup = no; then HAVE_DECL_STRDUP=0 --- 10,15 ---- *************** *** 28,39 **** if test $ac_cv_func_strdup = yes; then if test $gl_cv_func_malloc_posix != yes; then REPLACE_STRDUP=1 - AC_LIBOBJ([strdup]) - gl_PREREQ_STRDUP fi - else - AC_LIBOBJ([strdup]) - gl_PREREQ_STRDUP fi AC_CHECK_DECLS_ONCE([strdup]) if test $ac_cv_have_decl_strdup = no; then --- 24,30 ---- diff -cNr octave-3.4.1/m4/strftime.m4 octave-3.4.2/m4/strftime.m4 *** octave-3.4.1/m4/strftime.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/strftime.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 32 # Copyright (C) 1996-1997, 1999-2007, 2009-2011 Free Software Foundation, Inc. # --- 1,4 ---- ! # serial 33 # Copyright (C) 1996-1997, 1999-2007, 2009-2011 Free Software Foundation, Inc. # *************** *** 16,23 **** # These are the prerequisite macros for GNU's strftime.c replacement. AC_DEFUN([gl_FUNC_STRFTIME], [ - AC_LIBOBJ([strftime]) - # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. AC_REQUIRE([AC_STRUCT_TIMEZONE]) --- 16,21 ---- diff -cNr octave-3.4.1/m4/strptime.m4 octave-3.4.2/m4/strptime.m4 *** octave-3.4.1/m4/strptime.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/strptime.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # strptime.m4 serial 6 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # strptime.m4 serial 7 dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 11,18 **** AC_CHECK_FUNCS_ONCE([strptime]) if test $ac_cv_func_strptime != yes; then HAVE_STRPTIME=0 - AC_LIBOBJ([strptime]) - gl_PREREQ_STRPTIME fi ]) --- 11,16 ---- diff -cNr octave-3.4.1/m4/symlink.m4 octave-3.4.2/m4/symlink.m4 *** octave-3.4.1/m4/symlink.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/symlink.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # serial 4 # See if we need to provide symlink replacement. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. --- 1,4 ---- ! # serial 5 # See if we need to provide symlink replacement. dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. *************** *** 17,23 **** dnl and Solaris 9, we want to fix a bug with trailing slash handling. if test $ac_cv_func_symlink = no; then HAVE_SYMLINK=0 - AC_LIBOBJ([symlink]) else AC_CACHE_CHECK([whether symlink handles trailing slash correctly], [gl_cv_func_symlink_works], --- 17,22 ---- *************** *** 39,45 **** rm -f conftest.f conftest.link conftest.lnk2]) if test "$gl_cv_func_symlink_works" != yes; then REPLACE_SYMLINK=1 - AC_LIBOBJ([symlink]) fi fi ]) --- 38,43 ---- diff -cNr octave-3.4.1/m4/tempname.m4 octave-3.4.2/m4/tempname.m4 *** octave-3.4.1/m4/tempname.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/tempname.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 3 # Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation --- 1,4 ---- ! #serial 4 # Copyright (C) 2006-2007, 2009-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation *************** *** 11,17 **** [ AC_REQUIRE([AC_SYS_LARGEFILE]) - AC_LIBOBJ([tempname]) gl_PREREQ_TEMPNAME ]) --- 11,16 ---- diff -cNr octave-3.4.1/m4/time_r.m4 octave-3.4.2/m4/time_r.m4 *** octave-3.4.1/m4/time_r.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/time_r.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 50,59 **** else HAVE_LOCALTIME_R=0 fi - if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then - AC_LIBOBJ([time_r]) - gl_PREREQ_TIME_R - fi ]) # Prerequisites of lib/time_r.c. --- 50,55 ---- diff -cNr octave-3.4.1/m4/times.m4 octave-3.4.2/m4/times.m4 *** octave-3.4.1/m4/times.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/times.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # times.m4 serial 1 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # times.m4 serial 2 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 10,15 **** AC_CHECK_FUNCS_ONCE([times]) if test $ac_cv_func_times = no; then HAVE_TIMES=0 - AC_LIBOBJ([times]) fi ]) --- 10,14 ---- diff -cNr octave-3.4.1/m4/truncf.m4 octave-3.4.2/m4/truncf.m4 *** octave-3.4.1/m4/truncf.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/truncf.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # truncf.m4 serial 4 dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # truncf.m4 serial 6 dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 56,65 **** #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! int main() { /* Test whether truncf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (truncf (minus_zerof))) return 1; return 0; } --- 56,67 ---- #include ]gl_FLOAT_MINUS_ZERO_CODE[ ]gl_FLOAT_SIGNBIT_CODE[ ! static float dummy (float f) { return 0; } ! int main (int argc, char *argv[]) { + float (*my_truncf) (float) = argc ? truncf : dummy; /* Test whether truncf (-0.0f) is -0.0f. */ ! if (signbitf (minus_zerof) && !signbitf (my_truncf (minus_zerof))) return 1; return 0; } *************** *** 79,85 **** HAVE_DECL_TRUNCF=0 fi if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then ! AC_LIBOBJ([truncf]) TRUNCF_LIBM= fi AC_SUBST([TRUNCF_LIBM]) --- 81,87 ---- HAVE_DECL_TRUNCF=0 fi if test $HAVE_DECL_TRUNCF = 0 || test $REPLACE_TRUNCF = 1; then ! dnl No libraries are needed to link lib/truncf.c. TRUNCF_LIBM= fi AC_SUBST([TRUNCF_LIBM]) diff -cNr octave-3.4.1/m4/trunc.m4 octave-3.4.2/m4/trunc.m4 *** octave-3.4.1/m4/trunc.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/trunc.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # trunc.m4 serial 5 dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # trunc.m4 serial 7 dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 56,65 **** #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! int main() { /* Test whether trunc (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (trunc (minus_zerod))) return 1; return 0; } --- 56,67 ---- #include ]gl_DOUBLE_MINUS_ZERO_CODE[ ]gl_DOUBLE_SIGNBIT_CODE[ ! static double dummy (double f) { return 0; } ! int main (int argc, char *argv[]) { + double (*my_trunc) (double) = argc ? trunc : dummy; /* Test whether trunc (-0.0) is -0.0. */ ! if (signbitd (minus_zerod) && !signbitd (my_trunc (minus_zerod))) return 1; return 0; } *************** *** 79,85 **** HAVE_DECL_TRUNC=0 fi if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then ! AC_LIBOBJ([trunc]) TRUNC_LIBM= fi AC_SUBST([TRUNC_LIBM]) --- 81,87 ---- HAVE_DECL_TRUNC=0 fi if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then ! dnl No libraries are needed to link lib/trunc.c. TRUNC_LIBM= fi AC_SUBST([TRUNC_LIBM]) diff -cNr octave-3.4.1/m4/unistd-safer.m4 octave-3.4.2/m4/unistd-safer.m4 *** octave-3.4.1/m4/unistd-safer.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/unistd-safer.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! #serial 8 dnl Copyright (C) 2002, 2005-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! #serial 9 dnl Copyright (C) 2002, 2005-2006, 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 7,13 **** AC_DEFUN([gl_UNISTD_SAFER], [ AC_CHECK_FUNCS_ONCE([pipe]) - AC_LIBOBJ([dup-safer]) - AC_LIBOBJ([fd-safer]) - AC_LIBOBJ([pipe-safer]) ]) --- 7,10 ---- diff -cNr octave-3.4.1/m4/unlink.m4 octave-3.4.2/m4/unlink.m4 *** octave-3.4.1/m4/unlink.m4 2011-06-15 11:13:47.000000000 -0400 --- octave-3.4.2/m4/unlink.m4 2011-06-21 12:41:25.000000000 -0400 *************** *** 1,4 **** ! # unlink.m4 serial 7 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, --- 1,4 ---- ! # unlink.m4 serial 8 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, *************** *** 108,113 **** esac }; then REPLACE_UNLINK=1 - AC_LIBOBJ([unlink]) fi ]) --- 108,112 ---- diff -cNr octave-3.4.1/Makefile.am octave-3.4.2/Makefile.am *** octave-3.4.1/Makefile.am 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/Makefile.am 2011-06-19 12:30:07.000000000 -0400 *************** *** 85,91 **** BUGS \ INSTALL.OCTAVE ! CLEANFILES = $(bin_PROGRAMS) $(bin_SCRIPTS) $(BUILT_SOURCES) DISTCLEANFILES = .gdbinit --- 85,91 ---- BUGS \ INSTALL.OCTAVE ! CLEANFILES = $(BUILT_SOURCES) DISTCLEANFILES = .gdbinit *************** *** 95,101 **** nodist_octinclude_HEADERS = config.h ! all-local: $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_SCRIPTS) $(INFO_FILES) .gdbinit @echo "" @echo "Octave successfully built. Now choose from the following:" @echo "" --- 95,101 ---- nodist_octinclude_HEADERS = config.h ! all-local: $(noinst_SCRIPTS) $(INFO_FILES) .gdbinit @echo "" @echo "Octave successfully built. Now choose from the following:" @echo "" *************** *** 145,180 **** $(MKDIR_P) $(addprefix $(DESTDIR), $(DIRS_TO_MAKE)) install-data-local: installdirs-local - - install-exec-hook: make-version-links - - uninstall-local: remove-version-links - - if AMCOND_BUILD_COMPILED_AUX_PROGRAMS - make-version-links: - cd $(DESTDIR)$(bindir) && \ - for f in $(basename $(bin_PROGRAMS)); do \ - mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \ - $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \ - done - - remove-version-links: - for f in $(basename $(bin_PROGRAMS)); do \ - rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \ - done - else - make-version-links: - cd $(DESTDIR)$(bindir) && \ - for f in $(basename $(bin_SCRIPTS)); do \ - mv $$f $$f-$(version) && \ - $(LN_S) $$f-$(version) $$f; \ - done - - remove-version-links: - for f in $(basename $(bin_SCRIPTS)); do \ - rm -f $(DESTDIR)$(bindir)/$$f-$(version); \ - done - endif - - .PHONY: make-version-links remove-version-links - --- 145,147 ---- diff -cNr octave-3.4.1/Makefile.in octave-3.4.2/Makefile.in *** octave-3.4.1/Makefile.in 2011-06-15 11:31:31.000000000 -0400 --- octave-3.4.2/Makefile.in 2011-06-24 10:38:43.000000000 -0400 *************** *** 58,67 **** DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/build-aux/common.mk \ $(srcdir)/config.h.in $(srcdir)/m4/module.mk \ ! $(top_srcdir)/configure COPYING ChangeLog NEWS \ build-aux/config.guess build-aux/config.sub build-aux/depcomp \ build-aux/install-sh build-aux/ltmain.sh build-aux/mdate-sh \ ! build-aux/missing build-aux/mkinstalldirs build-aux/ylwrap subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ --- 58,68 ---- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/build-aux/common.mk \ $(srcdir)/config.h.in $(srcdir)/m4/module.mk \ ! $(top_srcdir)/configure COPYING ChangeLog INSTALL NEWS \ build-aux/config.guess build-aux/config.sub build-aux/depcomp \ build-aux/install-sh build-aux/ltmain.sh build-aux/mdate-sh \ ! build-aux/missing build-aux/mkinstalldirs \ ! build-aux/texinfo.tex build-aux/ylwrap subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ *************** *** 72,82 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 73,82 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ *************** *** 1497,1503 **** BUGS \ INSTALL.OCTAVE ! CLEANFILES = $(bin_PROGRAMS) $(bin_SCRIPTS) $(BUILT_SOURCES) DISTCLEANFILES = .gdbinit MAINTAINERCLEANFILES = $(BUILT_DISTFILES) CONFIG_FILES = @ac_config_headers@ @ac_config_files@ --- 1497,1503 ---- BUGS \ INSTALL.OCTAVE ! CLEANFILES = $(BUILT_SOURCES) DISTCLEANFILES = .gdbinit MAINTAINERCLEANFILES = $(BUILT_DISTFILES) CONFIG_FILES = @ac_config_headers@ @ac_config_files@ *************** *** 2002,2009 **** install-dvi-am: install-exec-am: ! @$(NORMAL_INSTALL) ! $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-recursive install-html-am: --- 2002,2008 ---- install-dvi-am: install-exec-am: ! install-html: install-html-recursive install-html-am: *************** *** 2042,2053 **** ps-am: ! uninstall-am: uninstall-local uninstall-nodist_octincludeHEADERS \ ! uninstall-octetcDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ! ctags-recursive install install-am install-exec-am \ ! install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am all-local am--refresh check check-am clean \ --- 2041,2051 ---- ps-am: ! uninstall-am: uninstall-nodist_octincludeHEADERS uninstall-octetcDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ! ctags-recursive install install-am install-strip \ ! tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am all-local am--refresh check check-am clean \ *************** *** 2058,2073 **** distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ ! install-dvi-am install-exec install-exec-am install-exec-hook \ ! install-html install-html-am install-info install-info-am \ ! install-man install-nodist_octincludeHEADERS \ ! install-octetcDATA install-pdf install-pdf-am install-ps \ ! install-ps-am install-strip installcheck installcheck-am \ ! installdirs installdirs-am installdirs-local maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ! uninstall uninstall-am uninstall-local \ ! uninstall-nodist_octincludeHEADERS uninstall-octetcDATA export AWK export SED --- 2056,2071 ---- distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ ! install-dvi-am install-exec install-exec-am install-html \ ! install-html-am install-info install-info-am install-man \ ! install-nodist_octincludeHEADERS install-octetcDATA \ ! install-pdf install-pdf-am install-ps install-ps-am \ ! install-strip installcheck installcheck-am installdirs \ ! installdirs-am installdirs-local maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ! uninstall uninstall-am uninstall-nodist_octincludeHEADERS \ ! uninstall-octetcDATA export AWK export SED *************** *** 2330,2336 **** @AMCOND_BUILD_DOCS_FALSE@dist-hook: @AMCOND_BUILD_DOCS_FALSE@ echo "Documentation disabled. Cannot package distribution!" ; exit 1; ! all-local: $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_SCRIPTS) $(INFO_FILES) .gdbinit @echo "" @echo "Octave successfully built. Now choose from the following:" @echo "" --- 2328,2334 ---- @AMCOND_BUILD_DOCS_FALSE@dist-hook: @AMCOND_BUILD_DOCS_FALSE@ echo "Documentation disabled. Cannot package distribution!" ; exit 1; ! all-local: $(noinst_SCRIPTS) $(INFO_FILES) .gdbinit @echo "" @echo "Octave successfully built. Now choose from the following:" @echo "" *************** *** 2368,2402 **** install-data-local: installdirs-local - install-exec-hook: make-version-links - - uninstall-local: remove-version-links - - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@make-version-links: - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ cd $(DESTDIR)$(bindir) && \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ for f in $(basename $(bin_PROGRAMS)); do \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ done - - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@remove-version-links: - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ for f in $(basename $(bin_PROGRAMS)); do \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ done - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@make-version-links: - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ cd $(DESTDIR)$(bindir) && \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ for f in $(basename $(bin_SCRIPTS)); do \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ mv $$f $$f-$(version) && \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ $(LN_S) $$f-$(version) $$f; \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ done - - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@remove-version-links: - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ for f in $(basename $(bin_SCRIPTS)); do \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ rm -f $(DESTDIR)$(bindir)/$$f-$(version); \ - @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ done - - .PHONY: make-version-links remove-version-links - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: --- 2366,2371 ---- diff -cNr octave-3.4.1/NEWS octave-3.4.2/NEWS *** octave-3.4.1/NEWS 2011-06-15 11:13:48.000000000 -0400 --- octave-3.4.2/NEWS 2011-06-21 12:56:10.000000000 -0400 *************** *** 1,3 **** --- 1,9 ---- + Summary of important user-visible changes for version 3.4.2: + ----------------------------------------------------------- + + ** Octave 3.2.4 fixes some minor installation problems that affected + version 3.4.1. + Summary of important user-visible changes for version 3.4.1: ----------------------------------------------------------- diff -cNr octave-3.4.1/scripts/DOCSTRINGS octave-3.4.2/scripts/DOCSTRINGS *** octave-3.4.1/scripts/DOCSTRINGS 2011-06-15 11:39:05.000000000 -0400 --- octave-3.4.2/scripts/DOCSTRINGS 2011-06-21 12:33:49.000000000 -0400 *************** *** 4547,4552 **** --- 4547,4609 ---- is ill-conditioned. @seealso{logm, sqrtm} @end deftypefn + gmres + @c gmres scripts/linear-algebra/gmres.m + -*- texinfo -*- + @deftypefn {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{M1}, @var{M2}, @var{x0}) + @deftypefnx {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{P}) + @deftypefnx {Function File} {[@var{x}, @var{flag}, @var{relres}, @var{iter}, @var{resvec}] =} gmres (@dots{}) + Solve @code{A x = b} using the Preconditioned GMRES iterative method + with restart, a.k.a. PGMRES(m). + + @itemize @minus + @item @var{rtol} is the relative tolerance, + if not given or set to [] the default value 1e-6 is used. + + @item @var{maxit} is the maximum number of outer iterations, + if not given or set to [] the default value + @code{min (10, numel (b) / restart)} is used. + + @item @var{x0} is the initial guess, + if not given or set to [] the default value @code{zeros(size (b))} is used. + + @item @var{m} is the restart parameter, + if not given or set to [] the default value @code{numel (b)} is used. + @end itemize + + Argument @var{A} can be passed as a matrix, function handle, or + inline function @code{f} such that @code{f(x) = A*x}. + + The preconditioner @var{P} is given as @code{P = M1 * M2}. + Both @var{M1} and @var{M2} can be passed as a matrix, function handle, or + inline function @code{g} such that @code{g(x) = M1\x} or @code{g(x) = M2\x}. + + Besides the vector @var{x}, additional outputs are: + + @itemize @minus + @item @var{flag} indicates the exit status: + + @table @asis + @item 0 : iteration converged to within the specified tolerance + + @item 1 : maximum number of iterations exceeded + + @item 2 : unused, but skipped for compatibility + + @item 3 : algorithm reached stagnation + @end table + + @item @var{relres} is the final value of the relative residual. + + @item @var{iter} is a vector containing the number of outer iterations and + total iterations performed. + + @item @var{resvec} is a vector containing the relative residual at each + iteration. + @end itemize + + @seealso{pcg, cgs, bicgstab} + @end deftypefn housh @c housh scripts/linear-algebra/housh.m -*- texinfo -*- *************** *** 5619,5631 **** Add the run-time path to the link command. @item -Wl,@dots{} ! Pass flags through the linker e.g. "-Wl,-rpath=@dots{}". The quotes are needed since commas are interpreted as command separators. ! @item -W,@dots{} ! Pass flags through the compiler, e.g. "-W,-O2". The quotes are needed ! since commas are interpreted as command separators. @item -c Compile but do not link. --- 5676,5687 ---- Add the run-time path to the link command. @item -Wl,@dots{} ! Pass flags though the linker like "-Wl,-rpath=@dots{}". The quotes are needed since commas are interpreted as command separators. ! @item -W@dots{} ! Pass flags though the compiler like "-Wa,OPTION". @item -c Compile but do not link. *************** *** 10887,10900 **** Draw rectangular patch defined by @var{pos} and @var{curv}. The variable @code{@var{pos}(1 : 2)} defines the lower left-hand corner of the patch ! and @code{@var{pos}(3 : 4)} its width and height. By default the value of ! @var{pos} is @var{[0, 0, 1, 1]}. The variable @var{curv} defines the curvature of the sides of the rectangle ! and it can be a scalar or two-element vector with values between 0 and 1. ! A value of 0 represents no curvature of the side, where as a value of 1 ! means that the rectangular side is entirely curved into an arc of a circle. ! If curvature is a two-element vector, then the first element is the curvature along the x-axis of the patch and the second along y-axis. If @var{curv} is a scalar, it represents the curvature of the shorter of the --- 10943,10956 ---- Draw rectangular patch defined by @var{pos} and @var{curv}. The variable @code{@var{pos}(1 : 2)} defines the lower left-hand corner of the patch ! and @code{@var{pos}(3 : 4)} defines its width and height. By default, the ! value of @var{pos} is @code{[0, 0, 1, 1]}. The variable @var{curv} defines the curvature of the sides of the rectangle ! and may be a scalar or two-element vector with values between 0 and 1. ! A value of 0 represents no curvature of the side, whereas a value of 1 ! means that the side is entirely curved into the arc of a circle. ! If @var{curv} is a two-element vector, then the first element is the curvature along the x-axis of the patch and the second along y-axis. If @var{curv} is a scalar, it represents the curvature of the shorter of the diff -cNr octave-3.4.1/scripts/linear-algebra/gmres.m octave-3.4.2/scripts/linear-algebra/gmres.m *** octave-3.4.1/scripts/linear-algebra/gmres.m 1969-12-31 19:00:00.000000000 -0500 --- octave-3.4.2/scripts/linear-algebra/gmres.m 2011-06-21 12:17:20.000000000 -0400 *************** *** 0 **** --- 1,214 ---- + ## Copyright (C) 2009-2011 Carlo de Falco + ## + ## This file is part of Octave. + ## + ## Octave is free software; you can redistribute it and/or modify it + ## under the terms of the GNU General Public License as published by the + ## Free Software Foundation; either version 3 of the License, or (at your + ## option) any later version. + ## + ## Octave is distributed in the hope that it will be useful, but WITHOUT + ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + ## for more details. + ## + ## You should have received a copy of the GNU General Public License + ## along with Octave; see the file COPYING. If not, see + ## . + + ## -*- texinfo -*- + ## @deftypefn {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{M1}, @var{M2}, @var{x0}) + ## @deftypefnx {Function File} {@var{x} =} gmres (@var{A}, @var{b}, @var{m}, @var{rtol}, @var{maxit}, @var{P}) + ## @deftypefnx {Function File} {[@var{x}, @var{flag}, @var{relres}, @var{iter}, @var{resvec}] =} gmres (@dots{}) + ## Solve @code{A x = b} using the Preconditioned GMRES iterative method + ## with restart, a.k.a. PGMRES(m). + ## + ## @itemize @minus + ## @item @var{rtol} is the relative tolerance, + ## if not given or set to [] the default value 1e-6 is used. + ## + ## @item @var{maxit} is the maximum number of outer iterations, + ## if not given or set to [] the default value + ## @code{min (10, numel (b) / restart)} is used. + ## + ## @item @var{x0} is the initial guess, + ## if not given or set to [] the default value @code{zeros(size (b))} is used. + ## + ## @item @var{m} is the restart parameter, + ## if not given or set to [] the default value @code{numel (b)} is used. + ## @end itemize + ## + ## Argument @var{A} can be passed as a matrix, function handle, or + ## inline function @code{f} such that @code{f(x) = A*x}. + ## + ## The preconditioner @var{P} is given as @code{P = M1 * M2}. + ## Both @var{M1} and @var{M2} can be passed as a matrix, function handle, or + ## inline function @code{g} such that @code{g(x) = M1\x} or @code{g(x) = M2\x}. + ## + ## Besides the vector @var{x}, additional outputs are: + ## + ## @itemize @minus + ## @item @var{flag} indicates the exit status: + ## + ## @table @asis + ## @item 0 : iteration converged to within the specified tolerance + ## + ## @item 1 : maximum number of iterations exceeded + ## + ## @item 2 : unused, but skipped for compatibility + ## + ## @item 3 : algorithm reached stagnation + ## @end table + ## + ## @item @var{relres} is the final value of the relative residual. + ## + ## @item @var{iter} is a vector containing the number of outer iterations and + ## total iterations performed. + ## + ## @item @var{resvec} is a vector containing the relative residual at each + ## iteration. + ## @end itemize + ## + ## @seealso{pcg, cgs, bicgstab} + ## @end deftypefn + + function [x, flag, prec_res_norm, itcnt] = gmres (A, b, restart, rtol, maxit, M1, M2, x0) + + if (nargin < 2 || nargin > 8) + print_usage (); + end + + if (ischar (A)) + Ax = str2func (A); + elseif (ismatrix (A)) + Ax = @(x) A*x; + elseif (isa (A, "function_handle")) + Ax = A; + else + error ("gmres: A must be a function or matrix"); + endif + + if (nargin < 3 || isempty (restart)) + restart = rows (b); + endif + + if (nargin < 4 || isempty (rtol)) + rtol = 1e-6; + endif + + if (nargin < 5 || isempty (maxit)) + maxit = min (rows (b)/restart, 10); + endif + + if (nargin < 6 || isempty (M1)) + M1m1x = @(x) x; + elseif (ischar (M1)) + M1m1x = str2func (M1); + elseif (ismatrix (M1)) + M1m1x = @(x) M1 \ x; + elseif (isa (M1, "function_handle")) + M1m1x = M1; + else + error ("gmres: preconditioner M1 must be a function or matrix"); + endif + + if (nargin < 7 || isempty (M2)) + M2m1x = @(x) x; + elseif (ischar (M2)) + M2m1x = str2func (M2); + elseif (ismatrix (M2)) + M2m1x = @(x) M2 \ x; + elseif (isa (M2, "function_handle")) + M2m1x = M2; + else + error ("gmres: preconditioner M2 must be a function or matrix"); + endif + + Pm1x = @(x) M2m1x (M1m1x (x)); + + if (nargin < 8 || isempty (x0)) + x0 = zeros (size (b)); + endif + + x_old = x0; + x = x_old; + prec_res = Pm1x (b - Ax (x_old)); + prec_res_norm = norm (prec_res, 2); + + B = zeros (restart + 1, 1); + V = zeros (rows (x), restart); + H = zeros (restart + 1, restart); + + ## begin loop + iter = 1; + restart_it = restart + 1; + resids = zeros (maxit, 1); + resids(1) = prec_res_norm; + prec_b_norm = norm (Pm1x (b), 2); + flag = 1; + + while ((iter <= maxit * restart) && (prec_res_norm > rtol * prec_b_norm)) + + ## restart + if (restart_it > restart) + restart_it = 1; + x_old = x; + prec_res = Pm1x (b - Ax (x_old)); + prec_res_norm = norm (prec_res, 2); + B(1) = prec_res_norm; + H(:) = 0; + V(:, 1) = prec_res / prec_res_norm; + endif + + ## basic iteration + tmp = Pm1x (Ax (V(:, restart_it))); + [V(:,restart_it+1), H(1:restart_it+1, restart_it)] = mgorth (tmp, V(:,1:restart_it)); + + Y = (H(1:restart_it+1, 1:restart_it) \ B (1:restart_it+1)); + + little_res = B(1:restart_it+1) - H(1:restart_it+1, 1:restart_it) * Y(1:restart_it); + prec_res_norm = norm (little_res, 2); + + x = x_old + V(:, 1:restart_it) * Y(1:restart_it); + + resids(iter) = prec_res_norm ; + if (norm (x - x_old, inf) <= eps) + flag = 3; + break + endif + + restart_it++ ; iter++; + endwhile + + if (prec_res_norm > rtol * prec_b_norm) + flag = 0; + endif + + resids = resids(1:iter-1); + itcnt = [floor(maxit/restart), rem(maxit, restart)]; + endfunction + + + %!shared A, b, dim + %! dim = 100; + %!test + %! A = spdiags ([-ones(dim,1) 2*ones(dim,1) ones(dim,1)], [-1:1], dim, dim); + %! b = ones(dim, 1); + %! x = gmres (A, b, 10, 1e-10, dim, @(x) x./diag(A), [], b); + %! assert(x, A\b, 1e-9*norm(x,inf)); + %! + %!test + %! x = gmres (A, b, dim, 1e-10, 1e4, @(x) diag(diag(A))\x, [], b); + %! assert(x, A\b, 1e-7*norm(x,inf)); + %! + %!test + %! A = spdiags ([[1./(2:2:2*(dim-1)) 0]; 1./(1:2:2*dim-1); [0 1./(2:2:2*(dim-1))]]', -1:1, dim, dim); + %! A = A'*A; + %! b = rand (dim, 1); + %! [x, resids] = gmres (@(x) A*x, b, dim, 1e-10, dim, @(x) x./diag(A), [], []); + %! assert(x, A\b, 1e-9*norm(x,inf)) + %! x = gmres (@(x) A*x, b, dim, 1e-10, 1e6, @(x) diag(diag(A))\x, [], []); + %! assert(x, A\b, 1e-9*norm(x,inf)); + %!test + %! x = gmres (@(x) A*x, b, dim, 1e-10, 1e6, @(x) x./diag(A), [], []); + %! assert(x, A\b, 1e-7*norm(x,inf)); diff -cNr octave-3.4.1/scripts/linear-algebra/module.mk octave-3.4.2/scripts/linear-algebra/module.mk *** octave-3.4.1/scripts/linear-algebra/module.mk 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/linear-algebra/module.mk 2011-06-21 12:17:20.000000000 -0400 *************** *** 7,12 **** --- 7,13 ---- linear-algebra/cross.m \ linear-algebra/duplication_matrix.m \ linear-algebra/expm.m \ + linear-algebra/gmres.m \ linear-algebra/housh.m \ linear-algebra/isdefinite.m \ linear-algebra/ishermitian.m \ diff -cNr octave-3.4.1/scripts/Makefile.in octave-3.4.2/scripts/Makefile.in *** octave-3.4.1/scripts/Makefile.in 2011-06-15 11:31:29.000000000 -0400 --- octave-3.4.2/scripts/Makefile.in 2011-06-24 10:38:41.000000000 -0400 *************** *** 85,95 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 85,94 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ *************** *** 1778,1783 **** --- 1777,1783 ---- linear-algebra/cross.m \ linear-algebra/duplication_matrix.m \ linear-algebra/expm.m \ + linear-algebra/gmres.m \ linear-algebra/housh.m \ linear-algebra/isdefinite.m \ linear-algebra/ishermitian.m \ diff -cNr octave-3.4.1/scripts/miscellaneous/mkoctfile.m octave-3.4.2/scripts/miscellaneous/mkoctfile.m *** octave-3.4.1/scripts/miscellaneous/mkoctfile.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/miscellaneous/mkoctfile.m 2011-06-19 11:55:57.000000000 -0400 *************** *** 51,63 **** ## Add the run-time path to the link command. ## ## @item -Wl,@dots{} ! ## Pass flags through the linker e.g. "-Wl,-rpath=@dots{}". ## The quotes are needed since commas are interpreted as command ## separators. ## ! ## @item -W,@dots{} ! ## Pass flags through the compiler, e.g. "-W,-O2". The quotes are needed ! ## since commas are interpreted as command separators. ## ## @item -c ## Compile but do not link. --- 51,62 ---- ## Add the run-time path to the link command. ## ## @item -Wl,@dots{} ! ## Pass flags though the linker like "-Wl,-rpath=@dots{}". ## The quotes are needed since commas are interpreted as command ## separators. ## ! ## @item -W@dots{} ! ## Pass flags though the compiler like "-Wa,OPTION". ## ## @item -c ## Compile but do not link. diff -cNr octave-3.4.1/scripts/plot/private/__getlegenddata__.m octave-3.4.2/scripts/plot/private/__getlegenddata__.m *** octave-3.4.1/scripts/plot/private/__getlegenddata__.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/plot/private/__getlegenddata__.m 2011-06-21 12:18:15.000000000 -0400 *************** *** 45,51 **** if (isfield (hgobj, "displayname") && ! isempty (hgobj.displayname)) hplots = [hplots, hgkids(j)]; ! text_strings = {text_strings{:}, hbobj.displayname}; break; endif endfor --- 45,51 ---- if (isfield (hgobj, "displayname") && ! isempty (hgobj.displayname)) hplots = [hplots, hgkids(j)]; ! text_strings = {text_strings{:}, hgobj.displayname}; break; endif endfor diff -cNr octave-3.4.1/scripts/plot/rectangle.m octave-3.4.2/scripts/plot/rectangle.m *** octave-3.4.1/scripts/plot/rectangle.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/plot/rectangle.m 2011-06-21 12:17:20.000000000 -0400 *************** *** 26,39 **** ## ## Draw rectangular patch defined by @var{pos} and @var{curv}. The variable ## @code{@var{pos}(1 : 2)} defines the lower left-hand corner of the patch ! ## and @code{@var{pos}(3 : 4)} its width and height. By default the value of ! ## @var{pos} is @var{[0, 0, 1, 1]}. ## ## The variable @var{curv} defines the curvature of the sides of the rectangle ! ## and it can be a scalar or two-element vector with values between 0 and 1. ! ## A value of 0 represents no curvature of the side, where as a value of 1 ! ## means that the rectangular side is entirely curved into an arc of a circle. ! ## If curvature is a two-element vector, then the first element is the ## curvature along the x-axis of the patch and the second along y-axis. ## ## If @var{curv} is a scalar, it represents the curvature of the shorter of the --- 26,39 ---- ## ## Draw rectangular patch defined by @var{pos} and @var{curv}. The variable ## @code{@var{pos}(1 : 2)} defines the lower left-hand corner of the patch ! ## and @code{@var{pos}(3 : 4)} defines its width and height. By default, the ! ## value of @var{pos} is @code{[0, 0, 1, 1]}. ## ## The variable @var{curv} defines the curvature of the sides of the rectangle ! ## and may be a scalar or two-element vector with values between 0 and 1. ! ## A value of 0 represents no curvature of the side, whereas a value of 1 ! ## means that the side is entirely curved into the arc of a circle. ! ## If @var{curv} is a two-element vector, then the first element is the ## curvature along the x-axis of the patch and the second along y-axis. ## ## If @var{curv} is a scalar, it represents the curvature of the shorter of the diff -cNr octave-3.4.1/scripts/statistics/distributions/cauchy_cdf.m octave-3.4.2/scripts/statistics/distributions/cauchy_cdf.m *** octave-3.4.1/scripts/statistics/distributions/cauchy_cdf.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/statistics/distributions/cauchy_cdf.m 2011-06-19 11:55:57.000000000 -0400 *************** *** 48,55 **** sz = size (x); cdf = NaN (sz); ! k = find ((x > -Inf) & (x < Inf) & (location > -Inf) & ! (location < Inf) & (scale > 0) & (scale < Inf)); if (any (k)) if (isscalar (location) && isscalar (scale)) cdf(k) = 0.5 + atan ((x(k) - location) ./ scale) / pi; --- 48,55 ---- sz = size (x); cdf = NaN (sz); ! k = find (ones (sz) & (location > -Inf) & (location < Inf) ! & (scale > 0) & (scale < Inf)); if (any (k)) if (isscalar (location) && isscalar (scale)) cdf(k) = 0.5 + atan ((x(k) - location) ./ scale) / pi; diff -cNr octave-3.4.1/scripts/statistics/distributions/normcdf.m octave-3.4.2/scripts/statistics/distributions/normcdf.m *** octave-3.4.1/scripts/statistics/distributions/normcdf.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/statistics/distributions/normcdf.m 2011-06-19 11:55:57.000000000 -0400 *************** *** 50,67 **** cdf = zeros (sz); if (isscalar (m) && isscalar(s)) ! if (find (isinf (m) | isnan (m) | !(s >= 0) | !(s < Inf))) cdf = NaN (sz); else cdf = stdnormal_cdf ((x - m) ./ s); endif else ! k = find (isinf (m) | isnan (m) | !(s >= 0) | !(s < Inf)); if (any (k)) cdf(k) = NaN; endif ! k = find (!isinf (m) & !isnan (m) & (s >= 0) & (s < Inf)); if (any (k)) cdf(k) = stdnormal_cdf ((x(k) - m(k)) ./ s(k)); endif --- 50,67 ---- cdf = zeros (sz); if (isscalar (m) && isscalar(s)) ! if (find (isinf (m) | isnan (m) | !(s > 0) | !(s < Inf))) cdf = NaN (sz); else cdf = stdnormal_cdf ((x - m) ./ s); endif else ! k = find (isinf (m) | isnan (m) | !(s > 0) | !(s < Inf)); if (any (k)) cdf(k) = NaN; endif ! k = find (!isinf (m) & !isnan (m) & (s > 0) & (s < Inf)); if (any (k)) cdf(k) = stdnormal_cdf ((x(k) - m(k)) ./ s(k)); endif diff -cNr octave-3.4.1/scripts/statistics/distributions/normpdf.m octave-3.4.2/scripts/statistics/distributions/normpdf.m *** octave-3.4.1/scripts/statistics/distributions/normpdf.m 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/scripts/statistics/distributions/normpdf.m 2011-06-19 11:55:57.000000000 -0400 *************** *** 50,67 **** pdf = zeros (sz); if (isscalar (m) && isscalar (s)) ! if (find (isinf (m) | isnan (m) | !(s >= 0) | !(s < Inf))) pdf = NaN (sz); else pdf = stdnormal_pdf ((x - m) ./ s) ./ s; endif else ! k = find (isinf (m) | isnan (m) | !(s >= 0) | !(s < Inf)); if (any (k)) pdf(k) = NaN; endif ! k = find (!isinf (m) & !isnan (m) & (s >= 0) & (s < Inf)); if (any (k)) pdf(k) = stdnormal_pdf ((x(k) - m(k)) ./ s(k)) ./ s(k); endif --- 50,67 ---- pdf = zeros (sz); if (isscalar (m) && isscalar (s)) ! if (find (isinf (m) | isnan (m) | !(s > 0) | !(s < Inf))) pdf = NaN (sz); else pdf = stdnormal_pdf ((x - m) ./ s) ./ s; endif else ! k = find (isinf (m) | isnan (m) | !(s > 0) | !(s < Inf)); if (any (k)) pdf(k) = NaN; endif ! k = find (!isinf (m) & !isnan (m) & (s > 0) & (s < Inf)); if (any (k)) pdf(k) = stdnormal_pdf ((x(k) - m(k)) ./ s(k)) ./ s(k); endif diff -cNr octave-3.4.1/src/Makefile.am octave-3.4.2/src/Makefile.am *** octave-3.4.1/src/Makefile.am 2011-06-15 11:13:48.000000000 -0400 --- octave-3.4.2/src/Makefile.am 2011-06-21 19:07:10.000000000 -0400 *************** *** 38,46 **** --- 38,48 ---- mkoctfile_SOURCES = nodist_mkoctfile_SOURCES = mkoctfile.cc + mkoctfile_LDADD = ../libgnu/libgnu.la $(LIBS) octave_config_SOURCES = nodist_octave_config_SOURCES = octave-config.cc + octave_config_LDADD = ../libgnu/libgnu.la $(LIBS) BUILT_SOURCES_EXTRA = \ mkoctfile.cc \ *************** *** 575,580 **** --- 577,591 ---- liboctinterp_la_LIBADD = $(OCTINTERP_LINK_DEPS) + ## Additional library dependencies used by module.mk files + OCT_LINK_DEPS = \ + $(RLD_FLAG) $(LDFLAGS) \ + ./liboctinterp.la \ + ../liboctave/liboctave.la \ + ../libcruft/libcruft.la \ + ../libcruft/libranlib.la \ + ../libgnu/libgnu.la + liboctinterp_la_CPPFLAGS = @OCTINTERP_DLL_DEFS@ $(AM_CPPFLAGS) # Increment these as needed and according to the rules in the libtool manual: *************** *** 844,856 **** make-version-links: cd $(DESTDIR)$(bindir) && \ ! mv octave$(EXEEXT) octave-$(version)$(EXEEXT) && \ ! $(LN_S) octave-$(version)$(EXEEXT) octave$(EXEEXT) ! .PHONY: make-version-links remove-version-links: ! rm -f $(DESTDIR)$(bindir)/octave-$(version)$(EXEEXT) ! .PHONY: remove-version-links if AMCOND_ENABLE_DYNAMIC_LINKING install-oct: --- 855,883 ---- make-version-links: cd $(DESTDIR)$(bindir) && \ ! for f in $(basename $(bin_PROGRAMS)); do \ ! mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \ ! $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \ ! done ! if ! AMCOND_BUILD_COMPILED_AUX_PROGRAMS ! cd $(DESTDIR)$(bindir) && \ ! for f in $(basename $(bin_SCRIPTS)); do \ ! mv $$f $$f-$(version) && \ ! $(LN_S) $$f-$(version) $$f; \ ! done ! endif remove-version-links: ! for f in $(basename $(bin_PROGRAMS)); do \ ! rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \ ! done ! if ! AMCOND_BUILD_COMPILED_AUX_PROGRAMS ! for f in $(basename $(bin_SCRIPTS)); do \ ! rm -f $(DESTDIR)$(bindir)/$$f-$(version); \ ! done ! endif ! ! .PHONY: make-version-links remove-version-links if AMCOND_ENABLE_DYNAMIC_LINKING install-oct: *************** *** 882,889 **** endif .PHONY: install-oct uninstall-oct - CLEANFILES = \ DLD-FUNCTIONS/PKG_ADD \ doc-files \ gendoc.cc \ --- 909,916 ---- endif .PHONY: install-oct uninstall-oct CLEANFILES = \ + $(bin_SCRIPTS) \ DLD-FUNCTIONS/PKG_ADD \ doc-files \ gendoc.cc \ *************** *** 900,903 **** MAINTAINERCLEANFILES = \ $(BUILT_DISTFILES) - --- 927,929 ---- diff -cNr octave-3.4.1/src/Makefile.in octave-3.4.2/src/Makefile.in *** octave-3.4.1/src/Makefile.in 2011-06-15 11:31:30.000000000 -0400 --- octave-3.4.2/src/Makefile.in 2011-06-24 10:38:42.000000000 -0400 *************** *** 77,87 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 77,86 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ *************** *** 185,191 **** "$(DESTDIR)$(bindir)" "$(DESTDIR)$(octincludedir)" \ "$(DESTDIR)$(octincludedir)" LTLIBRARIES = $(octlib_LTLIBRARIES) ! DLD_FUNCTIONS___contourc___la_DEPENDENCIES = am__dirstamp = $(am__leading_dot)dirstamp am_DLD_FUNCTIONS___contourc___la_OBJECTS = \ DLD-FUNCTIONS/__contourc__.lo --- 184,195 ---- "$(DESTDIR)$(bindir)" "$(DESTDIR)$(octincludedir)" \ "$(DESTDIR)$(octincludedir)" LTLIBRARIES = $(octlib_LTLIBRARIES) ! am__DEPENDENCIES_1 = ! am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ ! ./liboctinterp.la ../liboctave/liboctave.la \ ! ../libcruft/libcruft.la ../libcruft/libranlib.la \ ! ../libgnu/libgnu.la ! DLD_FUNCTIONS___contourc___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am__dirstamp = $(am__leading_dot)dirstamp am_DLD_FUNCTIONS___contourc___la_OBJECTS = \ DLD-FUNCTIONS/__contourc__.lo *************** *** 195,203 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___contourc___la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_1 = ! DLD_FUNCTIONS___delaunayn___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___delaunayn___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___delaunayn___la-__delaunayn__.lo DLD_FUNCTIONS___delaunayn___la_OBJECTS = \ --- 199,206 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___contourc___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___delaunayn___la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___delaunayn___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___delaunayn___la-__delaunayn__.lo DLD_FUNCTIONS___delaunayn___la_OBJECTS = \ *************** *** 206,212 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___delaunayn___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___dispatch___la_DEPENDENCIES = am_DLD_FUNCTIONS___dispatch___la_OBJECTS = \ DLD-FUNCTIONS/__dispatch__.lo DLD_FUNCTIONS___dispatch___la_OBJECTS = \ --- 209,215 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___delaunayn___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___dispatch___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS___dispatch___la_OBJECTS = \ DLD-FUNCTIONS/__dispatch__.lo DLD_FUNCTIONS___dispatch___la_OBJECTS = \ *************** *** 215,221 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___dispatch___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___dsearchn___la_DEPENDENCIES = am_DLD_FUNCTIONS___dsearchn___la_OBJECTS = \ DLD-FUNCTIONS/__dsearchn__.lo DLD_FUNCTIONS___dsearchn___la_OBJECTS = \ --- 218,224 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___dispatch___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___dsearchn___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS___dsearchn___la_OBJECTS = \ DLD-FUNCTIONS/__dsearchn__.lo DLD_FUNCTIONS___dsearchn___la_OBJECTS = \ *************** *** 225,231 **** $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___dsearchn___la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS___fltk_uigetfile___la_DEPENDENCIES = \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS = DLD-FUNCTIONS/DLD_FUNCTIONS___fltk_uigetfile___la-__fltk_uigetfile__.lo DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS = \ $(am_DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS) --- 228,235 ---- $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___dsearchn___la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS___fltk_uigetfile___la_DEPENDENCIES = \ ! $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS = DLD-FUNCTIONS/DLD_FUNCTIONS___fltk_uigetfile___la-__fltk_uigetfile__.lo DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS = \ $(am_DLD_FUNCTIONS___fltk_uigetfile___la_OBJECTS) *************** *** 234,241 **** $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___fltk_uigetfile___la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS___glpk___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___glpk___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___glpk___la-__glpk__.lo DLD_FUNCTIONS___glpk___la_OBJECTS = \ --- 238,245 ---- $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___fltk_uigetfile___la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS___glpk___la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___glpk___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___glpk___la-__glpk__.lo DLD_FUNCTIONS___glpk___la_OBJECTS = \ *************** *** 244,251 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___glpk___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___init_fltk___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___init_fltk___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___init_fltk___la-__init_fltk__.lo DLD_FUNCTIONS___init_fltk___la_OBJECTS = \ --- 248,255 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___glpk___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___init_fltk___la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___init_fltk___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___init_fltk___la-__init_fltk__.lo DLD_FUNCTIONS___init_fltk___la_OBJECTS = \ *************** *** 254,260 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___init_fltk___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___lin_interpn___la_DEPENDENCIES = am_DLD_FUNCTIONS___lin_interpn___la_OBJECTS = \ DLD-FUNCTIONS/__lin_interpn__.lo DLD_FUNCTIONS___lin_interpn___la_OBJECTS = \ --- 258,264 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___init_fltk___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___lin_interpn___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS___lin_interpn___la_OBJECTS = \ DLD-FUNCTIONS/__lin_interpn__.lo DLD_FUNCTIONS___lin_interpn___la_OBJECTS = \ *************** *** 263,270 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___lin_interpn___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___magick_read___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___magick_read___la_OBJECTS = DLD-FUNCTIONS/DLD_FUNCTIONS___magick_read___la-__magick_read__.lo DLD_FUNCTIONS___magick_read___la_OBJECTS = \ $(am_DLD_FUNCTIONS___magick_read___la_OBJECTS) --- 267,274 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___lin_interpn___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___magick_read___la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___magick_read___la_OBJECTS = DLD-FUNCTIONS/DLD_FUNCTIONS___magick_read___la-__magick_read__.lo DLD_FUNCTIONS___magick_read___la_OBJECTS = \ $(am_DLD_FUNCTIONS___magick_read___la_OBJECTS) *************** *** 272,278 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___magick_read___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___pchip_deriv___la_DEPENDENCIES = am_DLD_FUNCTIONS___pchip_deriv___la_OBJECTS = \ DLD-FUNCTIONS/__pchip_deriv__.lo DLD_FUNCTIONS___pchip_deriv___la_OBJECTS = \ --- 276,282 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___magick_read___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___pchip_deriv___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS___pchip_deriv___la_OBJECTS = \ DLD-FUNCTIONS/__pchip_deriv__.lo DLD_FUNCTIONS___pchip_deriv___la_OBJECTS = \ *************** *** 281,287 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___pchip_deriv___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___qp___la_DEPENDENCIES = am_DLD_FUNCTIONS___qp___la_OBJECTS = DLD-FUNCTIONS/__qp__.lo DLD_FUNCTIONS___qp___la_OBJECTS = \ $(am_DLD_FUNCTIONS___qp___la_OBJECTS) --- 285,291 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___pchip_deriv___la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS___qp___la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS___qp___la_OBJECTS = DLD-FUNCTIONS/__qp__.lo DLD_FUNCTIONS___qp___la_OBJECTS = \ $(am_DLD_FUNCTIONS___qp___la_OBJECTS) *************** *** 289,296 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS___qp___la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS___voronoi___la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___voronoi___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___voronoi___la-__voronoi__.lo DLD_FUNCTIONS___voronoi___la_OBJECTS = \ --- 293,300 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS___qp___la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS___voronoi___la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS___voronoi___la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS___voronoi___la-__voronoi__.lo DLD_FUNCTIONS___voronoi___la_OBJECTS = \ *************** *** 299,317 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___voronoi___la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) DLD_FUNCTIONS_amd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_amd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_amd_la-amd.lo DLD_FUNCTIONS_amd_la_OBJECTS = $(am_DLD_FUNCTIONS_amd_la_OBJECTS) DLD_FUNCTIONS_amd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_amd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_balance_la_DEPENDENCIES = am_DLD_FUNCTIONS_balance_la_OBJECTS = DLD-FUNCTIONS/balance.lo DLD_FUNCTIONS_balance_la_OBJECTS = \ $(am_DLD_FUNCTIONS_balance_la_OBJECTS) --- 303,321 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS___voronoi___la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) DLD_FUNCTIONS_amd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_amd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_amd_la-amd.lo DLD_FUNCTIONS_amd_la_OBJECTS = $(am_DLD_FUNCTIONS_amd_la_OBJECTS) DLD_FUNCTIONS_amd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_amd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_balance_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_balance_la_OBJECTS = DLD-FUNCTIONS/balance.lo DLD_FUNCTIONS_balance_la_OBJECTS = \ $(am_DLD_FUNCTIONS_balance_la_OBJECTS) *************** *** 319,325 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_balance_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_besselj_la_DEPENDENCIES = am_DLD_FUNCTIONS_besselj_la_OBJECTS = DLD-FUNCTIONS/besselj.lo DLD_FUNCTIONS_besselj_la_OBJECTS = \ $(am_DLD_FUNCTIONS_besselj_la_OBJECTS) --- 323,329 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_balance_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_besselj_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_besselj_la_OBJECTS = DLD-FUNCTIONS/besselj.lo DLD_FUNCTIONS_besselj_la_OBJECTS = \ $(am_DLD_FUNCTIONS_besselj_la_OBJECTS) *************** *** 327,333 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_besselj_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_betainc_la_DEPENDENCIES = am_DLD_FUNCTIONS_betainc_la_OBJECTS = DLD-FUNCTIONS/betainc.lo DLD_FUNCTIONS_betainc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_betainc_la_OBJECTS) --- 331,337 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_besselj_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_betainc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_betainc_la_OBJECTS = DLD-FUNCTIONS/betainc.lo DLD_FUNCTIONS_betainc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_betainc_la_OBJECTS) *************** *** 335,341 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_betainc_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_bsxfun_la_DEPENDENCIES = am_DLD_FUNCTIONS_bsxfun_la_OBJECTS = DLD-FUNCTIONS/bsxfun.lo DLD_FUNCTIONS_bsxfun_la_OBJECTS = \ $(am_DLD_FUNCTIONS_bsxfun_la_OBJECTS) --- 339,345 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_betainc_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_bsxfun_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_bsxfun_la_OBJECTS = DLD-FUNCTIONS/bsxfun.lo DLD_FUNCTIONS_bsxfun_la_OBJECTS = \ $(am_DLD_FUNCTIONS_bsxfun_la_OBJECTS) *************** *** 344,350 **** $(CXXFLAGS) $(DLD_FUNCTIONS_bsxfun_la_LDFLAGS) $(LDFLAGS) -o \ $@ DLD_FUNCTIONS_ccolamd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_ccolamd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_ccolamd_la-ccolamd.lo DLD_FUNCTIONS_ccolamd_la_OBJECTS = \ --- 348,354 ---- $(CXXFLAGS) $(DLD_FUNCTIONS_bsxfun_la_LDFLAGS) $(LDFLAGS) -o \ $@ DLD_FUNCTIONS_ccolamd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_ccolamd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_ccolamd_la-ccolamd.lo DLD_FUNCTIONS_ccolamd_la_OBJECTS = \ *************** *** 353,359 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_ccolamd_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_cellfun_la_DEPENDENCIES = am_DLD_FUNCTIONS_cellfun_la_OBJECTS = DLD-FUNCTIONS/cellfun.lo DLD_FUNCTIONS_cellfun_la_OBJECTS = \ $(am_DLD_FUNCTIONS_cellfun_la_OBJECTS) --- 357,363 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_ccolamd_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_cellfun_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_cellfun_la_OBJECTS = DLD-FUNCTIONS/cellfun.lo DLD_FUNCTIONS_cellfun_la_OBJECTS = \ $(am_DLD_FUNCTIONS_cellfun_la_OBJECTS) *************** *** 361,369 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_cellfun_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_chol_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_chol_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_chol_la-chol.lo DLD_FUNCTIONS_chol_la_OBJECTS = $(am_DLD_FUNCTIONS_chol_la_OBJECTS) --- 365,373 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_cellfun_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_chol_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_chol_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_chol_la-chol.lo DLD_FUNCTIONS_chol_la_OBJECTS = $(am_DLD_FUNCTIONS_chol_la_OBJECTS) *************** *** 371,377 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_chol_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_colamd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_colamd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_colamd_la-colamd.lo DLD_FUNCTIONS_colamd_la_OBJECTS = \ --- 375,381 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_chol_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_colamd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_colamd_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_colamd_la-colamd.lo DLD_FUNCTIONS_colamd_la_OBJECTS = \ *************** *** 380,386 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_colamd_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_colloc_la_DEPENDENCIES = am_DLD_FUNCTIONS_colloc_la_OBJECTS = DLD-FUNCTIONS/colloc.lo DLD_FUNCTIONS_colloc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_colloc_la_OBJECTS) --- 384,390 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_colamd_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_colloc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_colloc_la_OBJECTS = DLD-FUNCTIONS/colloc.lo DLD_FUNCTIONS_colloc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_colloc_la_OBJECTS) *************** *** 388,401 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_colloc_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_conv2_la_DEPENDENCIES = am_DLD_FUNCTIONS_conv2_la_OBJECTS = DLD-FUNCTIONS/conv2.lo DLD_FUNCTIONS_conv2_la_OBJECTS = $(am_DLD_FUNCTIONS_conv2_la_OBJECTS) DLD_FUNCTIONS_conv2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_conv2_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_convhulln_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_convhulln_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_convhulln_la-convhulln.lo DLD_FUNCTIONS_convhulln_la_OBJECTS = \ --- 392,405 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_colloc_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_conv2_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_conv2_la_OBJECTS = DLD-FUNCTIONS/conv2.lo DLD_FUNCTIONS_conv2_la_OBJECTS = $(am_DLD_FUNCTIONS_conv2_la_OBJECTS) DLD_FUNCTIONS_conv2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_conv2_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_convhulln_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_convhulln_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_convhulln_la-convhulln.lo DLD_FUNCTIONS_convhulln_la_OBJECTS = \ *************** *** 404,434 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_convhulln_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_daspk_la_DEPENDENCIES = am_DLD_FUNCTIONS_daspk_la_OBJECTS = DLD-FUNCTIONS/daspk.lo DLD_FUNCTIONS_daspk_la_OBJECTS = $(am_DLD_FUNCTIONS_daspk_la_OBJECTS) DLD_FUNCTIONS_daspk_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_daspk_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dasrt_la_DEPENDENCIES = am_DLD_FUNCTIONS_dasrt_la_OBJECTS = DLD-FUNCTIONS/dasrt.lo DLD_FUNCTIONS_dasrt_la_OBJECTS = $(am_DLD_FUNCTIONS_dasrt_la_OBJECTS) DLD_FUNCTIONS_dasrt_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dasrt_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dassl_la_DEPENDENCIES = am_DLD_FUNCTIONS_dassl_la_OBJECTS = DLD-FUNCTIONS/dassl.lo DLD_FUNCTIONS_dassl_la_OBJECTS = $(am_DLD_FUNCTIONS_dassl_la_OBJECTS) DLD_FUNCTIONS_dassl_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dassl_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_det_la_DEPENDENCIES = am_DLD_FUNCTIONS_det_la_OBJECTS = DLD-FUNCTIONS/det.lo DLD_FUNCTIONS_det_la_OBJECTS = $(am_DLD_FUNCTIONS_det_la_OBJECTS) DLD_FUNCTIONS_det_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_det_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dlmread_la_DEPENDENCIES = am_DLD_FUNCTIONS_dlmread_la_OBJECTS = DLD-FUNCTIONS/dlmread.lo DLD_FUNCTIONS_dlmread_la_OBJECTS = \ $(am_DLD_FUNCTIONS_dlmread_la_OBJECTS) --- 408,438 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_convhulln_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_daspk_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_daspk_la_OBJECTS = DLD-FUNCTIONS/daspk.lo DLD_FUNCTIONS_daspk_la_OBJECTS = $(am_DLD_FUNCTIONS_daspk_la_OBJECTS) DLD_FUNCTIONS_daspk_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_daspk_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dasrt_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_dasrt_la_OBJECTS = DLD-FUNCTIONS/dasrt.lo DLD_FUNCTIONS_dasrt_la_OBJECTS = $(am_DLD_FUNCTIONS_dasrt_la_OBJECTS) DLD_FUNCTIONS_dasrt_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dasrt_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dassl_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_dassl_la_OBJECTS = DLD-FUNCTIONS/dassl.lo DLD_FUNCTIONS_dassl_la_OBJECTS = $(am_DLD_FUNCTIONS_dassl_la_OBJECTS) DLD_FUNCTIONS_dassl_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dassl_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_det_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_det_la_OBJECTS = DLD-FUNCTIONS/det.lo DLD_FUNCTIONS_det_la_OBJECTS = $(am_DLD_FUNCTIONS_det_la_OBJECTS) DLD_FUNCTIONS_det_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_det_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_dlmread_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_dlmread_la_OBJECTS = DLD-FUNCTIONS/dlmread.lo DLD_FUNCTIONS_dlmread_la_OBJECTS = \ $(am_DLD_FUNCTIONS_dlmread_la_OBJECTS) *************** *** 437,443 **** $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_dlmread_la_LDFLAGS) \ $(LDFLAGS) -o $@ DLD_FUNCTIONS_dmperm_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_dmperm_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_dmperm_la-dmperm.lo DLD_FUNCTIONS_dmperm_la_OBJECTS = \ --- 441,447 ---- $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_dlmread_la_LDFLAGS) \ $(LDFLAGS) -o $@ DLD_FUNCTIONS_dmperm_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_dmperm_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_dmperm_la-dmperm.lo DLD_FUNCTIONS_dmperm_la_OBJECTS = \ *************** *** 446,506 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dmperm_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_dot_la_DEPENDENCIES = am_DLD_FUNCTIONS_dot_la_OBJECTS = DLD-FUNCTIONS/dot.lo DLD_FUNCTIONS_dot_la_OBJECTS = $(am_DLD_FUNCTIONS_dot_la_OBJECTS) DLD_FUNCTIONS_dot_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dot_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_eig_la_DEPENDENCIES = am_DLD_FUNCTIONS_eig_la_OBJECTS = DLD-FUNCTIONS/eig.lo DLD_FUNCTIONS_eig_la_OBJECTS = $(am_DLD_FUNCTIONS_eig_la_OBJECTS) DLD_FUNCTIONS_eig_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_eig_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_eigs_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_eigs_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_eigs_la-eigs.lo DLD_FUNCTIONS_eigs_la_OBJECTS = $(am_DLD_FUNCTIONS_eigs_la_OBJECTS) DLD_FUNCTIONS_eigs_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_eigs_la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) ! DLD_FUNCTIONS_fft_la_DEPENDENCIES = $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_fft_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fft_la-fft.lo DLD_FUNCTIONS_fft_la_OBJECTS = $(am_DLD_FUNCTIONS_fft_la_OBJECTS) DLD_FUNCTIONS_fft_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fft_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fft2_la_DEPENDENCIES = $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_fft2_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fft2_la-fft2.lo DLD_FUNCTIONS_fft2_la_OBJECTS = $(am_DLD_FUNCTIONS_fft2_la_OBJECTS) DLD_FUNCTIONS_fft2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fft2_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fftn_la_DEPENDENCIES = $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_fftn_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fftn_la-fftn.lo DLD_FUNCTIONS_fftn_la_OBJECTS = $(am_DLD_FUNCTIONS_fftn_la_OBJECTS) DLD_FUNCTIONS_fftn_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fftn_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fftw_la_DEPENDENCIES = $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_fftw_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fftw_la-fftw.lo DLD_FUNCTIONS_fftw_la_OBJECTS = $(am_DLD_FUNCTIONS_fftw_la_OBJECTS) DLD_FUNCTIONS_fftw_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fftw_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_filter_la_DEPENDENCIES = am_DLD_FUNCTIONS_filter_la_OBJECTS = DLD-FUNCTIONS/filter.lo DLD_FUNCTIONS_filter_la_OBJECTS = \ $(am_DLD_FUNCTIONS_filter_la_OBJECTS) --- 450,510 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dmperm_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_dot_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_dot_la_OBJECTS = DLD-FUNCTIONS/dot.lo DLD_FUNCTIONS_dot_la_OBJECTS = $(am_DLD_FUNCTIONS_dot_la_OBJECTS) DLD_FUNCTIONS_dot_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_dot_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_eig_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_eig_la_OBJECTS = DLD-FUNCTIONS/eig.lo DLD_FUNCTIONS_eig_la_OBJECTS = $(am_DLD_FUNCTIONS_eig_la_OBJECTS) DLD_FUNCTIONS_eig_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_eig_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_eigs_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_eigs_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_eigs_la-eigs.lo DLD_FUNCTIONS_eigs_la_OBJECTS = $(am_DLD_FUNCTIONS_eigs_la_OBJECTS) DLD_FUNCTIONS_eigs_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_eigs_la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) ! DLD_FUNCTIONS_fft_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) am_DLD_FUNCTIONS_fft_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fft_la-fft.lo DLD_FUNCTIONS_fft_la_OBJECTS = $(am_DLD_FUNCTIONS_fft_la_OBJECTS) DLD_FUNCTIONS_fft_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fft_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fft2_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) am_DLD_FUNCTIONS_fft2_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fft2_la-fft2.lo DLD_FUNCTIONS_fft2_la_OBJECTS = $(am_DLD_FUNCTIONS_fft2_la_OBJECTS) DLD_FUNCTIONS_fft2_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fft2_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fftn_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) am_DLD_FUNCTIONS_fftn_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fftn_la-fftn.lo DLD_FUNCTIONS_fftn_la_OBJECTS = $(am_DLD_FUNCTIONS_fftn_la_OBJECTS) DLD_FUNCTIONS_fftn_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fftn_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_fftw_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_4) am_DLD_FUNCTIONS_fftw_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_fftw_la-fftw.lo DLD_FUNCTIONS_fftw_la_OBJECTS = $(am_DLD_FUNCTIONS_fftw_la_OBJECTS) DLD_FUNCTIONS_fftw_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_fftw_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_filter_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_filter_la_OBJECTS = DLD-FUNCTIONS/filter.lo DLD_FUNCTIONS_filter_la_OBJECTS = \ $(am_DLD_FUNCTIONS_filter_la_OBJECTS) *************** *** 508,520 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_filter_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_find_la_DEPENDENCIES = am_DLD_FUNCTIONS_find_la_OBJECTS = DLD-FUNCTIONS/find.lo DLD_FUNCTIONS_find_la_OBJECTS = $(am_DLD_FUNCTIONS_find_la_OBJECTS) DLD_FUNCTIONS_find_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_find_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_gammainc_la_DEPENDENCIES = am_DLD_FUNCTIONS_gammainc_la_OBJECTS = DLD-FUNCTIONS/gammainc.lo DLD_FUNCTIONS_gammainc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_gammainc_la_OBJECTS) --- 512,524 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_filter_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_find_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_find_la_OBJECTS = DLD-FUNCTIONS/find.lo DLD_FUNCTIONS_find_la_OBJECTS = $(am_DLD_FUNCTIONS_find_la_OBJECTS) DLD_FUNCTIONS_find_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_find_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_gammainc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_gammainc_la_OBJECTS = DLD-FUNCTIONS/gammainc.lo DLD_FUNCTIONS_gammainc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_gammainc_la_OBJECTS) *************** *** 522,534 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_gammainc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_gcd_la_DEPENDENCIES = am_DLD_FUNCTIONS_gcd_la_OBJECTS = DLD-FUNCTIONS/gcd.lo DLD_FUNCTIONS_gcd_la_OBJECTS = $(am_DLD_FUNCTIONS_gcd_la_OBJECTS) DLD_FUNCTIONS_gcd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_gcd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getgrent_la_DEPENDENCIES = am_DLD_FUNCTIONS_getgrent_la_OBJECTS = DLD-FUNCTIONS/getgrent.lo DLD_FUNCTIONS_getgrent_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getgrent_la_OBJECTS) --- 526,538 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_gammainc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_gcd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_gcd_la_OBJECTS = DLD-FUNCTIONS/gcd.lo DLD_FUNCTIONS_gcd_la_OBJECTS = $(am_DLD_FUNCTIONS_gcd_la_OBJECTS) DLD_FUNCTIONS_gcd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_gcd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getgrent_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_getgrent_la_OBJECTS = DLD-FUNCTIONS/getgrent.lo DLD_FUNCTIONS_getgrent_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getgrent_la_OBJECTS) *************** *** 536,542 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getgrent_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getpwent_la_DEPENDENCIES = am_DLD_FUNCTIONS_getpwent_la_OBJECTS = DLD-FUNCTIONS/getpwent.lo DLD_FUNCTIONS_getpwent_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getpwent_la_OBJECTS) --- 540,546 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getgrent_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getpwent_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_getpwent_la_OBJECTS = DLD-FUNCTIONS/getpwent.lo DLD_FUNCTIONS_getpwent_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getpwent_la_OBJECTS) *************** *** 544,550 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getpwent_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getrusage_la_DEPENDENCIES = am_DLD_FUNCTIONS_getrusage_la_OBJECTS = DLD-FUNCTIONS/getrusage.lo DLD_FUNCTIONS_getrusage_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getrusage_la_OBJECTS) --- 548,554 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getpwent_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_getrusage_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_getrusage_la_OBJECTS = DLD-FUNCTIONS/getrusage.lo DLD_FUNCTIONS_getrusage_la_OBJECTS = \ $(am_DLD_FUNCTIONS_getrusage_la_OBJECTS) *************** *** 552,558 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getrusage_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_givens_la_DEPENDENCIES = am_DLD_FUNCTIONS_givens_la_OBJECTS = DLD-FUNCTIONS/givens.lo DLD_FUNCTIONS_givens_la_OBJECTS = \ $(am_DLD_FUNCTIONS_givens_la_OBJECTS) --- 556,562 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_getrusage_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_givens_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_givens_la_OBJECTS = DLD-FUNCTIONS/givens.lo DLD_FUNCTIONS_givens_la_OBJECTS = \ $(am_DLD_FUNCTIONS_givens_la_OBJECTS) *************** *** 560,572 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_givens_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_hess_la_DEPENDENCIES = am_DLD_FUNCTIONS_hess_la_OBJECTS = DLD-FUNCTIONS/hess.lo DLD_FUNCTIONS_hess_la_OBJECTS = $(am_DLD_FUNCTIONS_hess_la_OBJECTS) DLD_FUNCTIONS_hess_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_hess_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_hex2num_la_DEPENDENCIES = am_DLD_FUNCTIONS_hex2num_la_OBJECTS = DLD-FUNCTIONS/hex2num.lo DLD_FUNCTIONS_hex2num_la_OBJECTS = \ $(am_DLD_FUNCTIONS_hex2num_la_OBJECTS) --- 564,576 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_givens_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_hess_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_hess_la_OBJECTS = DLD-FUNCTIONS/hess.lo DLD_FUNCTIONS_hess_la_OBJECTS = $(am_DLD_FUNCTIONS_hess_la_OBJECTS) DLD_FUNCTIONS_hess_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_hess_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_hex2num_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_hex2num_la_OBJECTS = DLD-FUNCTIONS/hex2num.lo DLD_FUNCTIONS_hex2num_la_OBJECTS = \ $(am_DLD_FUNCTIONS_hex2num_la_OBJECTS) *************** *** 574,592 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_hex2num_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_inv_la_DEPENDENCIES = am_DLD_FUNCTIONS_inv_la_OBJECTS = DLD-FUNCTIONS/inv.lo DLD_FUNCTIONS_inv_la_OBJECTS = $(am_DLD_FUNCTIONS_inv_la_OBJECTS) DLD_FUNCTIONS_inv_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_inv_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_kron_la_DEPENDENCIES = am_DLD_FUNCTIONS_kron_la_OBJECTS = DLD-FUNCTIONS/kron.lo DLD_FUNCTIONS_kron_la_OBJECTS = $(am_DLD_FUNCTIONS_kron_la_OBJECTS) DLD_FUNCTIONS_kron_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_kron_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_lookup_la_DEPENDENCIES = am_DLD_FUNCTIONS_lookup_la_OBJECTS = DLD-FUNCTIONS/lookup.lo DLD_FUNCTIONS_lookup_la_OBJECTS = \ $(am_DLD_FUNCTIONS_lookup_la_OBJECTS) --- 578,596 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_hex2num_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_inv_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_inv_la_OBJECTS = DLD-FUNCTIONS/inv.lo DLD_FUNCTIONS_inv_la_OBJECTS = $(am_DLD_FUNCTIONS_inv_la_OBJECTS) DLD_FUNCTIONS_inv_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_inv_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_kron_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_kron_la_OBJECTS = DLD-FUNCTIONS/kron.lo DLD_FUNCTIONS_kron_la_OBJECTS = $(am_DLD_FUNCTIONS_kron_la_OBJECTS) DLD_FUNCTIONS_kron_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_kron_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_lookup_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_lookup_la_OBJECTS = DLD-FUNCTIONS/lookup.lo DLD_FUNCTIONS_lookup_la_OBJECTS = \ $(am_DLD_FUNCTIONS_lookup_la_OBJECTS) *************** *** 594,618 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lookup_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_lsode_la_DEPENDENCIES = am_DLD_FUNCTIONS_lsode_la_OBJECTS = DLD-FUNCTIONS/lsode.lo DLD_FUNCTIONS_lsode_la_OBJECTS = $(am_DLD_FUNCTIONS_lsode_la_OBJECTS) DLD_FUNCTIONS_lsode_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lsode_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_lu_la_DEPENDENCIES = am_DLD_FUNCTIONS_lu_la_OBJECTS = DLD-FUNCTIONS/lu.lo DLD_FUNCTIONS_lu_la_OBJECTS = $(am_DLD_FUNCTIONS_lu_la_OBJECTS) DLD_FUNCTIONS_lu_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lu_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_luinc_la_DEPENDENCIES = am_DLD_FUNCTIONS_luinc_la_OBJECTS = DLD-FUNCTIONS/luinc.lo DLD_FUNCTIONS_luinc_la_OBJECTS = $(am_DLD_FUNCTIONS_luinc_la_OBJECTS) DLD_FUNCTIONS_luinc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_luinc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_matrix_type_la_DEPENDENCIES = am_DLD_FUNCTIONS_matrix_type_la_OBJECTS = \ DLD-FUNCTIONS/matrix_type.lo DLD_FUNCTIONS_matrix_type_la_OBJECTS = \ --- 598,622 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lookup_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_lsode_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_lsode_la_OBJECTS = DLD-FUNCTIONS/lsode.lo DLD_FUNCTIONS_lsode_la_OBJECTS = $(am_DLD_FUNCTIONS_lsode_la_OBJECTS) DLD_FUNCTIONS_lsode_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lsode_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_lu_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_lu_la_OBJECTS = DLD-FUNCTIONS/lu.lo DLD_FUNCTIONS_lu_la_OBJECTS = $(am_DLD_FUNCTIONS_lu_la_OBJECTS) DLD_FUNCTIONS_lu_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_lu_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_luinc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_luinc_la_OBJECTS = DLD-FUNCTIONS/luinc.lo DLD_FUNCTIONS_luinc_la_OBJECTS = $(am_DLD_FUNCTIONS_luinc_la_OBJECTS) DLD_FUNCTIONS_luinc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_luinc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_matrix_type_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_matrix_type_la_OBJECTS = \ DLD-FUNCTIONS/matrix_type.lo DLD_FUNCTIONS_matrix_type_la_OBJECTS = \ *************** *** 621,633 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_matrix_type_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_max_la_DEPENDENCIES = am_DLD_FUNCTIONS_max_la_OBJECTS = DLD-FUNCTIONS/max.lo DLD_FUNCTIONS_max_la_OBJECTS = $(am_DLD_FUNCTIONS_max_la_OBJECTS) DLD_FUNCTIONS_max_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_max_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_md5sum_la_DEPENDENCIES = am_DLD_FUNCTIONS_md5sum_la_OBJECTS = DLD-FUNCTIONS/md5sum.lo DLD_FUNCTIONS_md5sum_la_OBJECTS = \ $(am_DLD_FUNCTIONS_md5sum_la_OBJECTS) --- 625,637 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_matrix_type_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_max_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_max_la_OBJECTS = DLD-FUNCTIONS/max.lo DLD_FUNCTIONS_max_la_OBJECTS = $(am_DLD_FUNCTIONS_max_la_OBJECTS) DLD_FUNCTIONS_max_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_max_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_md5sum_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_md5sum_la_OBJECTS = DLD-FUNCTIONS/md5sum.lo DLD_FUNCTIONS_md5sum_la_OBJECTS = \ $(am_DLD_FUNCTIONS_md5sum_la_OBJECTS) *************** *** 635,641 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_md5sum_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_mgorth_la_DEPENDENCIES = am_DLD_FUNCTIONS_mgorth_la_OBJECTS = DLD-FUNCTIONS/mgorth.lo DLD_FUNCTIONS_mgorth_la_OBJECTS = \ $(am_DLD_FUNCTIONS_mgorth_la_OBJECTS) --- 639,645 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_md5sum_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_mgorth_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_mgorth_la_OBJECTS = DLD-FUNCTIONS/mgorth.lo DLD_FUNCTIONS_mgorth_la_OBJECTS = \ $(am_DLD_FUNCTIONS_mgorth_la_OBJECTS) *************** *** 643,655 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_mgorth_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_nproc_la_DEPENDENCIES = am_DLD_FUNCTIONS_nproc_la_OBJECTS = DLD-FUNCTIONS/nproc.lo DLD_FUNCTIONS_nproc_la_OBJECTS = $(am_DLD_FUNCTIONS_nproc_la_OBJECTS) DLD_FUNCTIONS_nproc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_nproc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_onCleanup_la_DEPENDENCIES = am_DLD_FUNCTIONS_onCleanup_la_OBJECTS = DLD-FUNCTIONS/onCleanup.lo DLD_FUNCTIONS_onCleanup_la_OBJECTS = \ $(am_DLD_FUNCTIONS_onCleanup_la_OBJECTS) --- 647,659 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_mgorth_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_nproc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_nproc_la_OBJECTS = DLD-FUNCTIONS/nproc.lo DLD_FUNCTIONS_nproc_la_OBJECTS = $(am_DLD_FUNCTIONS_nproc_la_OBJECTS) DLD_FUNCTIONS_nproc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_nproc_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_onCleanup_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_onCleanup_la_OBJECTS = DLD-FUNCTIONS/onCleanup.lo DLD_FUNCTIONS_onCleanup_la_OBJECTS = \ $(am_DLD_FUNCTIONS_onCleanup_la_OBJECTS) *************** *** 657,684 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_onCleanup_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_pinv_la_DEPENDENCIES = am_DLD_FUNCTIONS_pinv_la_OBJECTS = DLD-FUNCTIONS/pinv.lo DLD_FUNCTIONS_pinv_la_OBJECTS = $(am_DLD_FUNCTIONS_pinv_la_OBJECTS) DLD_FUNCTIONS_pinv_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_pinv_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_qr_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_qr_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_qr_la-qr.lo DLD_FUNCTIONS_qr_la_OBJECTS = $(am_DLD_FUNCTIONS_qr_la_OBJECTS) DLD_FUNCTIONS_qr_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_qr_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_quad_la_DEPENDENCIES = am_DLD_FUNCTIONS_quad_la_OBJECTS = DLD-FUNCTIONS/quad.lo DLD_FUNCTIONS_quad_la_OBJECTS = $(am_DLD_FUNCTIONS_quad_la_OBJECTS) DLD_FUNCTIONS_quad_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_quad_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_quadcc_la_DEPENDENCIES = am_DLD_FUNCTIONS_quadcc_la_OBJECTS = DLD-FUNCTIONS/quadcc.lo DLD_FUNCTIONS_quadcc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_quadcc_la_OBJECTS) --- 661,688 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_onCleanup_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_pinv_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_pinv_la_OBJECTS = DLD-FUNCTIONS/pinv.lo DLD_FUNCTIONS_pinv_la_OBJECTS = $(am_DLD_FUNCTIONS_pinv_la_OBJECTS) DLD_FUNCTIONS_pinv_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_pinv_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_qr_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_qr_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_qr_la-qr.lo DLD_FUNCTIONS_qr_la_OBJECTS = $(am_DLD_FUNCTIONS_qr_la_OBJECTS) DLD_FUNCTIONS_qr_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_qr_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_quad_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_quad_la_OBJECTS = DLD-FUNCTIONS/quad.lo DLD_FUNCTIONS_quad_la_OBJECTS = $(am_DLD_FUNCTIONS_quad_la_OBJECTS) DLD_FUNCTIONS_quad_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_quad_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_quadcc_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_quadcc_la_OBJECTS = DLD-FUNCTIONS/quadcc.lo DLD_FUNCTIONS_quadcc_la_OBJECTS = \ $(am_DLD_FUNCTIONS_quadcc_la_OBJECTS) *************** *** 686,711 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_quadcc_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_qz_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_qz_la_OBJECTS = DLD-FUNCTIONS/qz.lo DLD_FUNCTIONS_qz_la_OBJECTS = $(am_DLD_FUNCTIONS_qz_la_OBJECTS) DLD_FUNCTIONS_qz_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_qz_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_rand_la_DEPENDENCIES = am_DLD_FUNCTIONS_rand_la_OBJECTS = DLD-FUNCTIONS/rand.lo DLD_FUNCTIONS_rand_la_OBJECTS = $(am_DLD_FUNCTIONS_rand_la_OBJECTS) DLD_FUNCTIONS_rand_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_rand_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_rcond_la_DEPENDENCIES = am_DLD_FUNCTIONS_rcond_la_OBJECTS = DLD-FUNCTIONS/rcond.lo DLD_FUNCTIONS_rcond_la_OBJECTS = $(am_DLD_FUNCTIONS_rcond_la_OBJECTS) DLD_FUNCTIONS_rcond_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_rcond_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_regexp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_regexp_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_regexp_la-regexp.lo DLD_FUNCTIONS_regexp_la_OBJECTS = \ --- 690,716 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_quadcc_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_qz_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_qz_la_OBJECTS = DLD-FUNCTIONS/qz.lo DLD_FUNCTIONS_qz_la_OBJECTS = $(am_DLD_FUNCTIONS_qz_la_OBJECTS) DLD_FUNCTIONS_qz_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_qz_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_rand_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_rand_la_OBJECTS = DLD-FUNCTIONS/rand.lo DLD_FUNCTIONS_rand_la_OBJECTS = $(am_DLD_FUNCTIONS_rand_la_OBJECTS) DLD_FUNCTIONS_rand_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_rand_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_rcond_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_rcond_la_OBJECTS = DLD-FUNCTIONS/rcond.lo DLD_FUNCTIONS_rcond_la_OBJECTS = $(am_DLD_FUNCTIONS_rcond_la_OBJECTS) DLD_FUNCTIONS_rcond_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_rcond_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_regexp_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_regexp_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_regexp_la-regexp.lo DLD_FUNCTIONS_regexp_la_OBJECTS = \ *************** *** 714,726 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_regexp_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_schur_la_DEPENDENCIES = am_DLD_FUNCTIONS_schur_la_OBJECTS = DLD-FUNCTIONS/schur.lo DLD_FUNCTIONS_schur_la_OBJECTS = $(am_DLD_FUNCTIONS_schur_la_OBJECTS) DLD_FUNCTIONS_schur_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_schur_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_spparms_la_DEPENDENCIES = am_DLD_FUNCTIONS_spparms_la_OBJECTS = DLD-FUNCTIONS/spparms.lo DLD_FUNCTIONS_spparms_la_OBJECTS = \ $(am_DLD_FUNCTIONS_spparms_la_OBJECTS) --- 719,731 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_regexp_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_schur_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_schur_la_OBJECTS = DLD-FUNCTIONS/schur.lo DLD_FUNCTIONS_schur_la_OBJECTS = $(am_DLD_FUNCTIONS_schur_la_OBJECTS) DLD_FUNCTIONS_schur_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_schur_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_spparms_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_spparms_la_OBJECTS = DLD-FUNCTIONS/spparms.lo DLD_FUNCTIONS_spparms_la_OBJECTS = \ $(am_DLD_FUNCTIONS_spparms_la_OBJECTS) *************** *** 728,740 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_spparms_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_sqrtm_la_DEPENDENCIES = am_DLD_FUNCTIONS_sqrtm_la_OBJECTS = DLD-FUNCTIONS/sqrtm.lo DLD_FUNCTIONS_sqrtm_la_OBJECTS = $(am_DLD_FUNCTIONS_sqrtm_la_OBJECTS) DLD_FUNCTIONS_sqrtm_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_sqrtm_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_str2double_la_DEPENDENCIES = am_DLD_FUNCTIONS_str2double_la_OBJECTS = DLD-FUNCTIONS/str2double.lo DLD_FUNCTIONS_str2double_la_OBJECTS = \ $(am_DLD_FUNCTIONS_str2double_la_OBJECTS) --- 733,745 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_spparms_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_sqrtm_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_sqrtm_la_OBJECTS = DLD-FUNCTIONS/sqrtm.lo DLD_FUNCTIONS_sqrtm_la_OBJECTS = $(am_DLD_FUNCTIONS_sqrtm_la_OBJECTS) DLD_FUNCTIONS_sqrtm_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_sqrtm_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_str2double_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_str2double_la_OBJECTS = DLD-FUNCTIONS/str2double.lo DLD_FUNCTIONS_str2double_la_OBJECTS = \ $(am_DLD_FUNCTIONS_str2double_la_OBJECTS) *************** *** 742,748 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_str2double_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_strfind_la_DEPENDENCIES = am_DLD_FUNCTIONS_strfind_la_OBJECTS = DLD-FUNCTIONS/strfind.lo DLD_FUNCTIONS_strfind_la_OBJECTS = \ $(am_DLD_FUNCTIONS_strfind_la_OBJECTS) --- 747,753 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_str2double_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_strfind_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_strfind_la_OBJECTS = DLD-FUNCTIONS/strfind.lo DLD_FUNCTIONS_strfind_la_OBJECTS = \ $(am_DLD_FUNCTIONS_strfind_la_OBJECTS) *************** *** 750,756 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_strfind_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_sub2ind_la_DEPENDENCIES = am_DLD_FUNCTIONS_sub2ind_la_OBJECTS = DLD-FUNCTIONS/sub2ind.lo DLD_FUNCTIONS_sub2ind_la_OBJECTS = \ $(am_DLD_FUNCTIONS_sub2ind_la_OBJECTS) --- 755,761 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_strfind_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_sub2ind_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_sub2ind_la_OBJECTS = DLD-FUNCTIONS/sub2ind.lo DLD_FUNCTIONS_sub2ind_la_OBJECTS = \ $(am_DLD_FUNCTIONS_sub2ind_la_OBJECTS) *************** *** 758,777 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_sub2ind_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_svd_la_DEPENDENCIES = am_DLD_FUNCTIONS_svd_la_OBJECTS = DLD-FUNCTIONS/svd.lo DLD_FUNCTIONS_svd_la_OBJECTS = $(am_DLD_FUNCTIONS_svd_la_OBJECTS) DLD_FUNCTIONS_svd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_svd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_syl_la_DEPENDENCIES = am_DLD_FUNCTIONS_syl_la_OBJECTS = DLD-FUNCTIONS/syl.lo DLD_FUNCTIONS_syl_la_OBJECTS = $(am_DLD_FUNCTIONS_syl_la_OBJECTS) DLD_FUNCTIONS_syl_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_syl_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_symbfact_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_symbfact_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_symbfact_la-symbfact.lo DLD_FUNCTIONS_symbfact_la_OBJECTS = \ --- 763,782 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_sub2ind_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_svd_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_svd_la_OBJECTS = DLD-FUNCTIONS/svd.lo DLD_FUNCTIONS_svd_la_OBJECTS = $(am_DLD_FUNCTIONS_svd_la_OBJECTS) DLD_FUNCTIONS_svd_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_svd_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_syl_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_syl_la_OBJECTS = DLD-FUNCTIONS/syl.lo DLD_FUNCTIONS_syl_la_OBJECTS = $(am_DLD_FUNCTIONS_syl_la_OBJECTS) DLD_FUNCTIONS_syl_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_syl_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_symbfact_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_symbfact_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_symbfact_la-symbfact.lo DLD_FUNCTIONS_symbfact_la_OBJECTS = \ *************** *** 781,787 **** $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_symbfact_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_symrcm_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_symrcm_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_symrcm_la-symrcm.lo DLD_FUNCTIONS_symrcm_la_OBJECTS = \ --- 786,792 ---- $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_symbfact_la_LDFLAGS) $(LDFLAGS) -o $@ DLD_FUNCTIONS_symrcm_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) am_DLD_FUNCTIONS_symrcm_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_symrcm_la-symrcm.lo DLD_FUNCTIONS_symrcm_la_OBJECTS = \ *************** *** 790,808 **** $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_symrcm_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_time_la_DEPENDENCIES = am_DLD_FUNCTIONS_time_la_OBJECTS = DLD-FUNCTIONS/time.lo DLD_FUNCTIONS_time_la_OBJECTS = $(am_DLD_FUNCTIONS_time_la_OBJECTS) DLD_FUNCTIONS_time_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_time_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_tril_la_DEPENDENCIES = am_DLD_FUNCTIONS_tril_la_OBJECTS = DLD-FUNCTIONS/tril.lo DLD_FUNCTIONS_tril_la_OBJECTS = $(am_DLD_FUNCTIONS_tril_la_OBJECTS) DLD_FUNCTIONS_tril_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_tril_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_tsearch_la_DEPENDENCIES = am_DLD_FUNCTIONS_tsearch_la_OBJECTS = DLD-FUNCTIONS/tsearch.lo DLD_FUNCTIONS_tsearch_la_OBJECTS = \ $(am_DLD_FUNCTIONS_tsearch_la_OBJECTS) --- 795,813 ---- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_symrcm_la_LDFLAGS) $(LDFLAGS) -o \ $@ ! DLD_FUNCTIONS_time_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_time_la_OBJECTS = DLD-FUNCTIONS/time.lo DLD_FUNCTIONS_time_la_OBJECTS = $(am_DLD_FUNCTIONS_time_la_OBJECTS) DLD_FUNCTIONS_time_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_time_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_tril_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_tril_la_OBJECTS = DLD-FUNCTIONS/tril.lo DLD_FUNCTIONS_tril_la_OBJECTS = $(am_DLD_FUNCTIONS_tril_la_OBJECTS) DLD_FUNCTIONS_tril_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(DLD_FUNCTIONS_tril_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_tsearch_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_tsearch_la_OBJECTS = DLD-FUNCTIONS/tsearch.lo DLD_FUNCTIONS_tsearch_la_OBJECTS = \ $(am_DLD_FUNCTIONS_tsearch_la_OBJECTS) *************** *** 810,816 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_tsearch_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_typecast_la_DEPENDENCIES = am_DLD_FUNCTIONS_typecast_la_OBJECTS = DLD-FUNCTIONS/typecast.lo DLD_FUNCTIONS_typecast_la_OBJECTS = \ $(am_DLD_FUNCTIONS_typecast_la_OBJECTS) --- 815,821 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(DLD_FUNCTIONS_tsearch_la_LDFLAGS) \ $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_typecast_la_DEPENDENCIES = $(am__DEPENDENCIES_2) am_DLD_FUNCTIONS_typecast_la_OBJECTS = DLD-FUNCTIONS/typecast.lo DLD_FUNCTIONS_typecast_la_OBJECTS = \ $(am_DLD_FUNCTIONS_typecast_la_OBJECTS) *************** *** 818,825 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_typecast_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_urlwrite_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ! $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_urlwrite_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_urlwrite_la-urlwrite.lo DLD_FUNCTIONS_urlwrite_la_OBJECTS = \ --- 823,830 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_typecast_la_LDFLAGS) $(LDFLAGS) -o $@ ! DLD_FUNCTIONS_urlwrite_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ ! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_DLD_FUNCTIONS_urlwrite_la_OBJECTS = \ DLD-FUNCTIONS/DLD_FUNCTIONS_urlwrite_la-urlwrite.lo DLD_FUNCTIONS_urlwrite_la_OBJECTS = \ *************** *** 828,837 **** $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_urlwrite_la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) ../liboctave/liboctave.la \ ../libcruft/libcruft.la ../libcruft/libranlib.la \ ! ../libgnu/libgnu.la $(am__DEPENDENCIES_3) \ ! $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ --- 833,842 ---- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(DLD_FUNCTIONS_urlwrite_la_LDFLAGS) $(LDFLAGS) -o $@ ! am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) ../liboctave/liboctave.la \ ../libcruft/libcruft.la ../libcruft/libranlib.la \ ! ../libgnu/libgnu.la $(am__DEPENDENCIES_4) \ ! $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ *************** *** 839,845 **** $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) ! liboctinterp_la_DEPENDENCIES = $(am__DEPENDENCIES_4) am__liboctinterp_la_SOURCES_DIST = Cell.cc bitfcns.cc \ c-file-ptr-stream.cc comment-list.cc cutils.c data.cc debug.cc \ defaults.cc defun.cc dirfns.cc display.cc dynamic-ld.cc \ --- 844,850 ---- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) ! liboctinterp_la_DEPENDENCIES = $(am__DEPENDENCIES_5) am__liboctinterp_la_SOURCES_DIST = Cell.cc bitfcns.cc \ c-file-ptr-stream.cc comment-list.cc cutils.c data.cc debug.cc \ defaults.cc defun.cc dirfns.cc display.cc dynamic-ld.cc \ *************** *** 1286,1316 **** @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ mkoctfile.$(OBJEXT) mkoctfile_OBJECTS = $(am_mkoctfile_OBJECTS) \ $(nodist_mkoctfile_OBJECTS) ! mkoctfile_LDADD = $(LDADD) am_octave_OBJECTS = main.$(OBJEXT) octave_OBJECTS = $(am_octave_OBJECTS) ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@am__DEPENDENCIES_5 = \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ./liboctinterp.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../liboctave/liboctave.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libcruft/libcruft.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libcruft/libranlib.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libgnu/libgnu.la \ ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ $(am__DEPENDENCIES_3) \ ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ $(am__DEPENDENCIES_3) ! @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@am__DEPENDENCIES_5 = \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ./liboctinterp.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../liboctave/liboctave.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libcruft/libcruft.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libcruft/libranlib.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libgnu/libgnu.la \ - @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_2) \ - @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_2) \ - @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ - @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_3) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_3) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ --- 1291,1323 ---- @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ mkoctfile.$(OBJEXT) mkoctfile_OBJECTS = $(am_mkoctfile_OBJECTS) \ $(nodist_mkoctfile_OBJECTS) ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@mkoctfile_DEPENDENCIES = \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ ../libgnu/libgnu.la \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ $(am__DEPENDENCIES_1) am_octave_OBJECTS = main.$(OBJEXT) octave_OBJECTS = $(am_octave_OBJECTS) ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@am__DEPENDENCIES_6 = \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ./liboctinterp.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../liboctave/liboctave.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libcruft/libcruft.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libcruft/libranlib.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ ../libgnu/libgnu.la \ ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ $(am__DEPENDENCIES_4) \ ! @AMCOND_ENABLE_DYNAMIC_LINKING_FALSE@ $(am__DEPENDENCIES_4) ! @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@am__DEPENDENCIES_6 = \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ./liboctinterp.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../liboctave/liboctave.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libcruft/libcruft.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libcruft/libranlib.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ ../libgnu/libgnu.la \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_3) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_3) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ + @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_4) \ + @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_4) \ + @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ + @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ *************** *** 1329,1340 **** @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) ! octave_DEPENDENCIES = $(am__DEPENDENCIES_5) am_octave_config_OBJECTS = @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@nodist_octave_config_OBJECTS = octave-config.$(OBJEXT) octave_config_OBJECTS = $(am_octave_config_OBJECTS) \ $(nodist_octave_config_OBJECTS) ! octave_config_LDADD = $(LDADD) SCRIPTS = $(bin_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp --- 1336,1349 ---- @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) \ @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(am__DEPENDENCIES_1) ! octave_DEPENDENCIES = $(am__DEPENDENCIES_6) am_octave_config_OBJECTS = @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@nodist_octave_config_OBJECTS = octave-config.$(OBJEXT) octave_config_OBJECTS = $(am_octave_config_OBJECTS) \ $(nodist_octave_config_OBJECTS) ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@octave_config_DEPENDENCIES = \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ ../libgnu/libgnu.la \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ $(am__DEPENDENCIES_1) SCRIPTS = $(bin_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp *************** *** 2779,2786 **** --- 2788,2797 ---- octlib_LTLIBRARIES = liboctinterp.la $(DLD_FUNCTIONS_LIBS) @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@mkoctfile_SOURCES = @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@nodist_mkoctfile_SOURCES = mkoctfile.cc + @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@mkoctfile_LDADD = ../libgnu/libgnu.la $(LIBS) @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@octave_config_SOURCES = @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@nodist_octave_config_SOURCES = octave-config.cc + @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@octave_config_LDADD = ../libgnu/libgnu.la $(LIBS) @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@BUILT_SOURCES_EXTRA = \ @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ mkoctfile.cc \ @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_TRUE@ octave-config.cc *************** *** 3682,3687 **** --- 3693,3706 ---- $(FLIBS) liboctinterp_la_LIBADD = $(OCTINTERP_LINK_DEPS) + OCT_LINK_DEPS = \ + $(RLD_FLAG) $(LDFLAGS) \ + ./liboctinterp.la \ + ../liboctave/liboctave.la \ + ../libcruft/libcruft.la \ + ../libcruft/libranlib.la \ + ../libgnu/libgnu.la + liboctinterp_la_CPPFLAGS = @OCTINTERP_DLL_DEFS@ $(AM_CPPFLAGS) # Increment these as needed and according to the rules in the libtool manual: *************** *** 3726,3731 **** --- 3745,3751 ---- DLL_CDEFS = @OCTINTERP_DLL_DEFS@ DLL_CXXDEFS = @OCTINTERP_DLL_DEFS@ CLEANFILES = \ + $(bin_SCRIPTS) \ DLD-FUNCTIONS/PKG_ADD \ doc-files \ gendoc.cc \ *************** *** 9851,9863 **** make-version-links: cd $(DESTDIR)$(bindir) && \ ! mv octave$(EXEEXT) octave-$(version)$(EXEEXT) && \ ! $(LN_S) octave-$(version)$(EXEEXT) octave$(EXEEXT) ! .PHONY: make-version-links remove-version-links: ! rm -f $(DESTDIR)$(bindir)/octave-$(version)$(EXEEXT) ! .PHONY: remove-version-links @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@install-oct: @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(top_srcdir)/build-aux/mkinstalldirs $(DESTDIR)$(octfiledir) --- 9871,9895 ---- make-version-links: cd $(DESTDIR)$(bindir) && \ ! for f in $(basename $(bin_PROGRAMS)); do \ ! mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \ ! $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \ ! done ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ cd $(DESTDIR)$(bindir) && \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ for f in $(basename $(bin_SCRIPTS)); do \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ mv $$f $$f-$(version) && \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ $(LN_S) $$f-$(version) $$f; \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ done remove-version-links: ! for f in $(basename $(bin_PROGRAMS)); do \ ! rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \ ! done ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ for f in $(basename $(bin_SCRIPTS)); do \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ rm -f $(DESTDIR)$(bindir)/$$f-$(version); \ ! @AMCOND_BUILD_COMPILED_AUX_PROGRAMS_FALSE@ done ! ! .PHONY: make-version-links remove-version-links @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@install-oct: @AMCOND_ENABLE_DYNAMIC_LINKING_TRUE@ $(top_srcdir)/build-aux/mkinstalldirs $(DESTDIR)$(octfiledir) diff -cNr octave-3.4.1/src/mkoctfile.in octave-3.4.2/src/mkoctfile.in *** octave-3.4.1/src/mkoctfile.in 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/src/mkoctfile.in 2011-06-19 11:55:57.000000000 -0400 *************** *** 336,343 **** incflags="$incflags -I." output_ext=".mex" ;; ! -W,*) ! pass_on_options="$pass_on_options ${1:3}" ;; *) echo "mkoctfile: unrecognized argument $1" 1>&2 --- 336,343 ---- incflags="$incflags -I." output_ext=".mex" ;; ! -W*) ! pass_on_options="$pass_on_options $1" ;; *) echo "mkoctfile: unrecognized argument $1" 1>&2 diff -cNr octave-3.4.1/src/oct-gperf.h octave-3.4.2/src/oct-gperf.h *** octave-3.4.1/src/oct-gperf.h 2011-06-15 11:35:10.000000000 -0400 --- octave-3.4.2/src/oct-gperf.h 2011-06-02 16:39:02.000000000 -0400 *************** *** 1,5 **** /* C++ code produced by gperf version 3.0.3 */ ! /* Command-line: gperf -t -C -D -G -L C++ -Z octave_kw_hash octave.gperf */ /* Computed positions: -k'1,5' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ --- 1,5 ---- /* C++ code produced by gperf version 3.0.3 */ ! /* Command-line: gperf -t -C -D -G -L C++ -Z octave_kw_hash /home/jwe/src/octave-stable/src/octave.gperf */ /* Computed positions: -k'1,5' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ *************** *** 29,35 **** #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif ! #line 1 "octave.gperf" /* --- 29,35 ---- #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif ! #line 1 "/home/jwe/src/octave-stable/src/octave.gperf" /* *************** *** 99,105 **** unwind_protect_cleanup_kw, while_kw }; ! #line 71 "octave.gperf" struct octave_kw { const char *name; int tok; octave_kw_id kw_id; }; #define TOTAL_KEYWORDS 41 --- 99,105 ---- unwind_protect_cleanup_kw, while_kw }; ! #line 71 "/home/jwe/src/octave-stable/src/octave.gperf" struct octave_kw { const char *name; int tok; octave_kw_id kw_id; }; #define TOTAL_KEYWORDS 41 *************** *** 168,254 **** static const struct octave_kw wordlist[] = { ! #line 78 "octave.gperf" {"do", DO, do_kw}, ! #line 81 "octave.gperf" {"end", END, end_kw}, ! #line 79 "octave.gperf" {"else", ELSE, else_kw}, ! #line 111 "octave.gperf" {"while", WHILE, while_kw}, ! #line 86 "octave.gperf" {"endfor", END, endfor_kw}, ! #line 98 "octave.gperf" {"if", IF, if_kw}, ! #line 92 "octave.gperf" {"endwhile", END, endwhile_kw}, ! #line 91 "octave.gperf" {"endswitch", END, endswitch_kw}, ! #line 89 "octave.gperf" {"endmethods", END, endmethods_kw}, ! #line 80 "octave.gperf" {"elseif", ELSEIF, elseif_kw}, ! #line 99 "octave.gperf" {"methods", METHODS, methods_kw}, ! #line 104 "octave.gperf" {"set", SET, set_kw}, ! #line 74 "octave.gperf" {"case", CASE, case_kw}, ! #line 75 "octave.gperf" {"catch", CATCH, catch_kw}, ! #line 84 "octave.gperf" {"endclassdef", END, endclassdef_kw }, ! #line 94 "octave.gperf" {"for", FOR, for_kw}, ! #line 85 "octave.gperf" {"endevents", END, endevents_kw}, ! #line 88 "octave.gperf" {"endif", END, endif_kw}, ! #line 105 "octave.gperf" {"static", STATIC, static_kw}, ! #line 77 "octave.gperf" {"continue", CONTINUE, continue_kw}, ! #line 102 "octave.gperf" {"properties", PROPERTIES, properties_kw}, ! #line 106 "octave.gperf" {"switch", SWITCH, switch_kw}, ! #line 76 "octave.gperf" {"classdef", CLASSDEF, classdef_kw}, ! #line 101 "octave.gperf" {"persistent", STATIC, static_kw}, ! #line 107 "octave.gperf" {"try", TRY, try_kw}, ! #line 100 "octave.gperf" {"otherwise", OTHERWISE, otherwise_kw}, ! #line 73 "octave.gperf" {"break", BREAK, break_kw}, ! #line 93 "octave.gperf" {"events", EVENTS, events_kw}, ! #line 90 "octave.gperf" {"endproperties", END, endproperties_kw}, ! #line 108 "octave.gperf" {"until", UNTIL, until_kw}, ! #line 87 "octave.gperf" {"endfunction", END, endfunction_kw}, ! #line 82 "octave.gperf" {"end_try_catch", END, end_try_catch_kw}, ! #line 109 "octave.gperf" {"unwind_protect", UNWIND, unwind_protect_kw}, ! #line 83 "octave.gperf" {"end_unwind_protect", END, end_unwind_protect_kw}, ! #line 110 "octave.gperf" {"unwind_protect_cleanup", CLEANUP, unwind_protect_cleanup_kw}, ! #line 95 "octave.gperf" {"function", FCN, function_kw}, ! #line 103 "octave.gperf" {"return", FUNC_RET, return_kw}, ! #line 96 "octave.gperf" {"get", GET, get_kw}, ! #line 97 "octave.gperf" {"global", GLOBAL, global_kw}, ! #line 113 "octave.gperf" {"__LINE__", NUM, magic_line_kw}, ! #line 112 "octave.gperf" {"__FILE__", DQ_STRING, magic_file_kw} }; --- 168,254 ---- static const struct octave_kw wordlist[] = { ! #line 78 "/home/jwe/src/octave-stable/src/octave.gperf" {"do", DO, do_kw}, ! #line 81 "/home/jwe/src/octave-stable/src/octave.gperf" {"end", END, end_kw}, ! #line 79 "/home/jwe/src/octave-stable/src/octave.gperf" {"else", ELSE, else_kw}, ! #line 111 "/home/jwe/src/octave-stable/src/octave.gperf" {"while", WHILE, while_kw}, ! #line 86 "/home/jwe/src/octave-stable/src/octave.gperf" {"endfor", END, endfor_kw}, ! #line 98 "/home/jwe/src/octave-stable/src/octave.gperf" {"if", IF, if_kw}, ! #line 92 "/home/jwe/src/octave-stable/src/octave.gperf" {"endwhile", END, endwhile_kw}, ! #line 91 "/home/jwe/src/octave-stable/src/octave.gperf" {"endswitch", END, endswitch_kw}, ! #line 89 "/home/jwe/src/octave-stable/src/octave.gperf" {"endmethods", END, endmethods_kw}, ! #line 80 "/home/jwe/src/octave-stable/src/octave.gperf" {"elseif", ELSEIF, elseif_kw}, ! #line 99 "/home/jwe/src/octave-stable/src/octave.gperf" {"methods", METHODS, methods_kw}, ! #line 104 "/home/jwe/src/octave-stable/src/octave.gperf" {"set", SET, set_kw}, ! #line 74 "/home/jwe/src/octave-stable/src/octave.gperf" {"case", CASE, case_kw}, ! #line 75 "/home/jwe/src/octave-stable/src/octave.gperf" {"catch", CATCH, catch_kw}, ! #line 84 "/home/jwe/src/octave-stable/src/octave.gperf" {"endclassdef", END, endclassdef_kw }, ! #line 94 "/home/jwe/src/octave-stable/src/octave.gperf" {"for", FOR, for_kw}, ! #line 85 "/home/jwe/src/octave-stable/src/octave.gperf" {"endevents", END, endevents_kw}, ! #line 88 "/home/jwe/src/octave-stable/src/octave.gperf" {"endif", END, endif_kw}, ! #line 105 "/home/jwe/src/octave-stable/src/octave.gperf" {"static", STATIC, static_kw}, ! #line 77 "/home/jwe/src/octave-stable/src/octave.gperf" {"continue", CONTINUE, continue_kw}, ! #line 102 "/home/jwe/src/octave-stable/src/octave.gperf" {"properties", PROPERTIES, properties_kw}, ! #line 106 "/home/jwe/src/octave-stable/src/octave.gperf" {"switch", SWITCH, switch_kw}, ! #line 76 "/home/jwe/src/octave-stable/src/octave.gperf" {"classdef", CLASSDEF, classdef_kw}, ! #line 101 "/home/jwe/src/octave-stable/src/octave.gperf" {"persistent", STATIC, static_kw}, ! #line 107 "/home/jwe/src/octave-stable/src/octave.gperf" {"try", TRY, try_kw}, ! #line 100 "/home/jwe/src/octave-stable/src/octave.gperf" {"otherwise", OTHERWISE, otherwise_kw}, ! #line 73 "/home/jwe/src/octave-stable/src/octave.gperf" {"break", BREAK, break_kw}, ! #line 93 "/home/jwe/src/octave-stable/src/octave.gperf" {"events", EVENTS, events_kw}, ! #line 90 "/home/jwe/src/octave-stable/src/octave.gperf" {"endproperties", END, endproperties_kw}, ! #line 108 "/home/jwe/src/octave-stable/src/octave.gperf" {"until", UNTIL, until_kw}, ! #line 87 "/home/jwe/src/octave-stable/src/octave.gperf" {"endfunction", END, endfunction_kw}, ! #line 82 "/home/jwe/src/octave-stable/src/octave.gperf" {"end_try_catch", END, end_try_catch_kw}, ! #line 109 "/home/jwe/src/octave-stable/src/octave.gperf" {"unwind_protect", UNWIND, unwind_protect_kw}, ! #line 83 "/home/jwe/src/octave-stable/src/octave.gperf" {"end_unwind_protect", END, end_unwind_protect_kw}, ! #line 110 "/home/jwe/src/octave-stable/src/octave.gperf" {"unwind_protect_cleanup", CLEANUP, unwind_protect_cleanup_kw}, ! #line 95 "/home/jwe/src/octave-stable/src/octave.gperf" {"function", FCN, function_kw}, ! #line 103 "/home/jwe/src/octave-stable/src/octave.gperf" {"return", FUNC_RET, return_kw}, ! #line 96 "/home/jwe/src/octave-stable/src/octave.gperf" {"get", GET, get_kw}, ! #line 97 "/home/jwe/src/octave-stable/src/octave.gperf" {"global", GLOBAL, global_kw}, ! #line 113 "/home/jwe/src/octave-stable/src/octave.gperf" {"__LINE__", NUM, magic_line_kw}, ! #line 112 "/home/jwe/src/octave-stable/src/octave.gperf" {"__FILE__", DQ_STRING, magic_file_kw} }; diff -cNr octave-3.4.1/src/OPERATORS/op-sbm-b.cc octave-3.4.2/src/OPERATORS/op-sbm-b.cc *** octave-3.4.1/src/OPERATORS/op-sbm-b.cc 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/src/OPERATORS/op-sbm-b.cc 2011-06-20 10:57:15.000000000 -0400 *************** *** 30,35 **** --- 30,43 ---- #include "ov.h" #include "ov-typeinfo.h" #include "ov-bool.h" + #include "ov-int8.h" + #include "ov-int16.h" + #include "ov-int32.h" + #include "ov-int64.h" + #include "ov-uint8.h" + #include "ov-uint16.h" + #include "ov-uint32.h" + #include "ov-uint64.h" #include "ov-scalar.h" #include "ops.h" *************** *** 77,82 **** --- 85,108 ---- return octave_value (); } + static octave_value + oct_assignop_conv_and_assign (octave_base_value& a1, + const octave_value_list& idx, + const octave_base_value& a2) + { + octave_sparse_bool_matrix& v1 = dynamic_cast (a1); + + // FIXME -- perhaps add a warning for this conversion if the values + // are not all 0 or 1? + + SparseBoolMatrix v2 (1, 1, a2.bool_value ()); + + if (! error_state) + v1.assign (idx, v2); + + return octave_value (); + } + void install_sbm_b_ops (void) { *************** *** 91,94 **** --- 117,141 ---- INSTALL_CATOP (octave_sparse_matrix, octave_bool, sm_b); INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_bool, assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_scalar, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int8_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int16_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int32_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int64_scalar, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint8_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint16_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint32_scalar, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint64_scalar, + conv_and_assign); } diff -cNr octave-3.4.1/src/OPERATORS/op-sbm-bm.cc octave-3.4.2/src/OPERATORS/op-sbm-bm.cc *** octave-3.4.1/src/OPERATORS/op-sbm-bm.cc 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/src/OPERATORS/op-sbm-bm.cc 2011-06-20 11:09:13.000000000 -0400 *************** *** 31,39 **** #include "ov-typeinfo.h" #include "ov-bool-mat.h" #include "boolMatrix.h" #include "ov-scalar.h" #include "ops.h" ! #include "ov-re-sparse.h" #include "ov-bool-sparse.h" #include "smx-bm-sbm.h" --- 31,49 ---- #include "ov-typeinfo.h" #include "ov-bool-mat.h" #include "boolMatrix.h" + #include "ov-int8.h" + #include "ov-int16.h" + #include "ov-int32.h" + #include "ov-int64.h" + #include "ov-uint8.h" + #include "ov-uint16.h" + #include "ov-uint32.h" + #include "ov-uint64.h" + #include "ov-range.h" #include "ov-scalar.h" + #include "ov-str-mat.h" #include "ops.h" ! #include "ov-null-mat.h" #include "ov-re-sparse.h" #include "ov-bool-sparse.h" #include "smx-bm-sbm.h" *************** *** 79,84 **** --- 89,114 ---- return octave_value (); } + DEFNULLASSIGNOP_FN (null_assign, sparse_bool_matrix, delete_elements) + + static octave_value + oct_assignop_conv_and_assign (octave_base_value& a1, + const octave_value_list& idx, + const octave_base_value& a2) + { + octave_sparse_bool_matrix& v1 = dynamic_cast (a1); + + // FIXME -- perhaps add a warning for this conversion if the values + // are not all 0 or 1? + + SparseBoolMatrix v2 (a2.bool_array_value ()); + + if (! error_state) + v1.assign (idx, v2); + + return octave_value (); + } + void install_sbm_bm_ops (void) { *************** *** 96,99 **** --- 126,167 ---- INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_bool_matrix, assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, + octave_char_matrix_str, conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, + octave_char_matrix_sq_str, conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_range, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_sparse_matrix, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int8_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int16_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int32_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_int64_matrix, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint8_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint16_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint32_matrix, + conv_and_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_uint64_matrix, + conv_and_assign); + + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_null_matrix, + null_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_null_str, + null_assign); + INSTALL_ASSIGNOP (op_asn_eq, octave_sparse_bool_matrix, octave_null_sq_str, + null_assign); } diff -cNr octave-3.4.1/src/OPERATORS/op-struct.cc octave-3.4.2/src/OPERATORS/op-struct.cc *** octave-3.4.1/src/OPERATORS/op-struct.cc 2011-06-15 11:11:27.000000000 -0400 --- octave-3.4.2/src/OPERATORS/op-struct.cc 2011-06-20 12:47:42.000000000 -0400 *************** *** 54,60 **** return octave_value (v.scalar_map_value ()); } ! DEFNDCATOP_FN (struct_struct, struct, struct, map, map, concat) static octave_value oct_catop_struct_matrix (octave_base_value& a1, const octave_base_value& a2, --- 54,63 ---- return octave_value (v.scalar_map_value ()); } ! DEFNDCATOP_FN (s_s_concat, struct, struct, map, map, concat) ! DEFNDCATOP_FN (s_ss_concat, struct, scalar_struct, map, map, concat) ! DEFNDCATOP_FN (ss_s_concat, scalar_struct, struct, map, map, concat) ! DEFNDCATOP_FN (ss_ss_concat, scalar_struct, scalar_struct, map, map, concat) static octave_value oct_catop_struct_matrix (octave_base_value& a1, const octave_base_value& a2, *************** *** 95,101 **** INSTALL_UNOP (op_transpose, octave_scalar_struct, scalar_transpose); INSTALL_UNOP (op_hermitian, octave_scalar_struct, scalar_transpose); ! INSTALL_CATOP (octave_struct, octave_struct, struct_struct); INSTALL_CATOP (octave_struct, octave_matrix, struct_matrix); INSTALL_CATOP (octave_matrix, octave_struct, matrix_struct); } --- 98,108 ---- INSTALL_UNOP (op_transpose, octave_scalar_struct, scalar_transpose); INSTALL_UNOP (op_hermitian, octave_scalar_struct, scalar_transpose); ! INSTALL_CATOP (octave_struct, octave_struct, s_s_concat); ! INSTALL_CATOP (octave_struct, octave_scalar_struct, s_ss_concat) ! INSTALL_CATOP (octave_scalar_struct, octave_struct, ss_s_concat) ! INSTALL_CATOP (octave_scalar_struct, octave_scalar_struct, ss_ss_concat) ! INSTALL_CATOP (octave_struct, octave_matrix, struct_matrix); INSTALL_CATOP (octave_matrix, octave_struct, matrix_struct); } diff -cNr octave-3.4.1/src/ov-fcn-handle.cc octave-3.4.2/src/ov-fcn-handle.cc *** octave-3.4.1/src/ov-fcn-handle.cc 2011-06-15 11:13:48.000000000 -0400 --- octave-3.4.2/src/ov-fcn-handle.cc 2011-06-20 10:28:39.000000000 -0400 *************** *** 553,559 **** swap_bytes<4> (&tmp); OCTAVE_LOCAL_BUFFER (char, ctmp1, tmp+1); ! is.get (ctmp1, tmp+1, 0); nm = std::string (ctmp1); if (! is) --- 553,562 ---- swap_bytes<4> (&tmp); OCTAVE_LOCAL_BUFFER (char, ctmp1, tmp+1); ! // is.get (ctmp1, tmp+1, 0); caused is.eof () to be true though ! // effectively not reading over file end ! is.read (ctmp1, tmp); ! ctmp1[tmp] = 0; nm = std::string (ctmp1); if (! is) *************** *** 578,584 **** swap_bytes<4> (&tmp); OCTAVE_LOCAL_BUFFER (char, ctmp2, tmp+1); ! is.get (ctmp2, tmp+1, 0); unwind_protect_safe frame; --- 581,590 ---- swap_bytes<4> (&tmp); OCTAVE_LOCAL_BUFFER (char, ctmp2, tmp+1); ! // is.get (ctmp2, tmp+1, 0); caused is.eof () to be true though ! // effectively not reading over file end ! is.read (ctmp2, tmp); ! ctmp2[tmp] = 0; unwind_protect_safe frame; *************** *** 658,664 **** success = set_fcn (octaveroot, fpath); } ! return success; } #if defined (HAVE_HDF5) --- 664,670 ---- success = set_fcn (octaveroot, fpath); } ! return success; } #if defined (HAVE_HDF5) diff -cNr octave-3.4.1/test/build_sparse_tests.sh octave-3.4.2/test/build_sparse_tests.sh *** octave-3.4.1/test/build_sparse_tests.sh 2011-06-15 11:11:28.000000000 -0400 --- octave-3.4.2/test/build_sparse_tests.sh 2011-06-20 11:01:40.000000000 -0400 *************** *** 102,108 **** # gen_assembly_tests # test for sparse constructors with 'sum' vs. 'unique' # gen_select_tests ! # indexing tests # gen_solver_tests # Tests the solve function with triangular/banded, etc matrices --- 102,108 ---- # gen_assembly_tests # test for sparse constructors with 'sum' vs. 'unique' # gen_select_tests ! # indexing and assignment tests # gen_solver_tests # Tests the solve function with triangular/banded, etc matrices diff -cNr octave-3.4.1/test/Makefile.in octave-3.4.2/test/Makefile.in *** octave-3.4.1/test/Makefile.in 2011-06-15 11:31:30.000000000 -0400 --- octave-3.4.2/test/Makefile.in 2011-06-24 10:38:42.000000000 -0400 *************** *** 68,78 **** $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close.m4 \ ! $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \ ! $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \ ! $(top_srcdir)/m4/dirent_h.m4 $(top_srcdir)/m4/dirfd.m4 \ ! $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ --- 68,77 ---- $(top_srcdir)/m4/canonicalize.m4 $(top_srcdir)/m4/ceil.m4 \ $(top_srcdir)/m4/ceilf.m4 $(top_srcdir)/m4/chdir-long.m4 \ $(top_srcdir)/m4/check-math-lib.m4 $(top_srcdir)/m4/chown.m4 \ ! $(top_srcdir)/m4/close.m4 $(top_srcdir)/m4/codeset.m4 \ ! $(top_srcdir)/m4/configmake.m4 $(top_srcdir)/m4/d-ino.m4 \ ! $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirent_h.m4 \ ! $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \ PATCH_EOF