Skip to content
Snippets Groups Projects
Commit 54fa0c84 authored by Luigi Scarso's avatar Luigi Scarso
Browse files

LuaTeX 1.09.2: sync with trunk.

parent 92cdb460
No related branches found
Tags 1.09.2
No related merge requests found
$Id: README 49020 2018-10-29 22:11:07Z karl $
$Id: README 49846 2019-01-28 10:31:05Z kakuto $
Copyright 2006-2018 TeX Users Group.
You may freely use, modify and/or distribute this file.
......@@ -64,7 +64,7 @@ dvipos - maintained here, by us
dvipsk - maintained here, by us
dvisvgm 2.6.1 - checked 29oct18
dvisvgm 2.6.2 - checked 25jan19
https://dvisvgm.de/Downloads/
gregorio 5.1.1 - checked 25mar18
......@@ -74,7 +74,7 @@ gsftopk - from Paul Vojta's xdvi?
kpathsea - maintained here, by us
lcdf-typetools 2.107 - checked 22feb18
lcdf-typetools 2.108 - checked 28jan19
http://www.lcdf.org/type/
makeindexk - maintained here, by us
......@@ -120,8 +120,10 @@ web2c - maintained here, by us - core web2c, plain tex, etc.
also: https://osdn.jp/projects/eptex
etex - maintained here
euptex - http://www.t-lab.opal.ne.jp/tex/uptex_en.html
mflua[jit] - https://foundry.supelec.fr/projects/mflua/
mflua[jit] - https://serveur-svn.lri.fr/svn/modhel/mflua
also: http://www.luatex.org/download.html
mplibdir - http://tug.org/metapost
also: http://www.luatex.org/download.html
luatex - http://luatex.org
pdftex - http://pdftex.org
[u]pmpost - nothing current, see README for old info
......
......@@ -808,6 +808,12 @@ static int getpdfomitcidset(lua_State * L)
return 1 ;
}
static int getpdfomitcharset(lua_State * L)
{
lua_pushinteger(L, (pdf_omit_charset));
return 1 ;
}
static int setpdfgentounicode(lua_State * L)
{
if (lua_type(L, 1) == LUA_TNUMBER) {
......@@ -824,6 +830,14 @@ static int setpdfomitcidset(lua_State * L)
return 0 ;
}
static int setpdfomitcharset(lua_State * L)
{
if (lua_type(L, 1) == LUA_TNUMBER) {
set_pdf_omit_charset(lua_tointeger(L, 1));
}
return 0 ;
}
/* for tracing purposes when no pages are flushed */
static int setforcefile(lua_State * L)
......@@ -1335,10 +1349,12 @@ static const struct luaL_Reg pdflib[] = {
{ "getignoreunknownimages", getpdfignoreunknownimages },
{ "getgentounicode", getpdfgentounicode },
{ "getomitcidset", getpdfomitcidset },
{ "getomitcharset", getpdfomitcharset },
{ "setinclusionerrorlevel", setpdfinclusionerrorlevel },
{ "setignoreunknownimages", setpdfignoreunknownimages },
{ "setgentounicode", setpdfgentounicode },
{ "setomitcidset", setpdfomitcidset },
{ "setomitcharset", setpdfomitcharset },
{ "setforcefile", setforcefile },
{ "mapfile", l_mapfile },
{ "mapline", l_mapline },
......
#define luatex_svn_revision 7070
#define luatex_svn_revision 7075
2019-01-28 Andreas Scherer <https://ascherer.github.io>
* ctwill.man,
* cweb.man: Updated manpages; describe differences to original CWEB.
2019-01-10 Andreas Scherer <https://ascherer.github.io>
* ctwill.man: New manpage for CTWILL and its tools.
......
.\" Automatically generated by Pandoc 2.5
.\"
.TH "CTWILL" "1" "January 11, 2019" "Web2c @VERSION@" "General Commands Manual"
.TH "CTWILL" "1" "January 27, 2019" "Web2c @VERSION@" "General Commands Manual"
.hy
.SH NAME
.PP
......@@ -24,18 +24,19 @@ with mini\-indexes per spread or per section
index.tex
.SH DESCRIPTION
.PP
The \f[B]ctwill\f[R] program converts a CWEB source document into a TeX
file that may be formatted and printed in the usual way.
The \f[B]ctwill\f[R] program converts a CWEB source document into a
TeX\ file that may be formatted and printed in the usual way.
It takes appropriate care of typographic details like page layout and
the use of indentation, \f[I]italics\f[R], \f[B]boldface\f[R], etc., and
it supplies extensive cross\-index information that it gathers
automatically.
.PP
CWEB allows you to prepare a single document containing all the
information that is needed both to produce a compilable C program and to
produce a well\-formatted document describing the program in as much
detail as the writer may desire.
The user of CWEB ought to be familiar with TeX as well as C.
information that is needed both to produce a compilable C/C++\ program
and to produce a well\-formatted document describing the program in as
much detail as the writer may desire.
The user of CWEB ought to be familiar with TeX as well as C/C++.
.SH USAGE
.PP
The command line should have one, two, or three names on it.
The first is taken as the CWEB input file (and \f[B].w\f[R] is added if
......@@ -89,7 +90,7 @@ Like the \f[B].aux\f[R] files, \f[B].bux\f[R] files should contain only
.PP
The meaning specified by \f[B]\[at]$\&...\[at]>\f[R] generally has four
components: an identifier (followed by space), a program name (enclosed
in braces), a section number (followed by space), and a TeX part.
in braces), a section number (followed by space), and a TeX\ part.
.PP
A special \f[I]proofmode\f[R] is provided so that you can check
\f[B]ctwill\f[R]\[cq]s conclusions about cross\-references.
......@@ -100,13 +101,40 @@ you can check that your specifications are correct.
More details how to use \f[B]ctwill\f[R] can be found in the first
sections of its source code, respectively the change file
\f[B]cweav\-twill.ch\f[R] applicable to the \f[B]cweave.w\f[R] source.
.SH DIFFERENCES TO ORIGINAL CTWILL
.PP
The present incarnation of \f[B]ctwill\f[R] and its utilities tries hard
to be a drop\-in replacement for the original package.
There are, however, a few differences worth noting:
.IP \[bu] 2
This version is based on the most recent version of CWEB (3.64c).
.IP \[bu] 2
In TeX\ Live the utility programs are prefixed with \f[B]ctwill\-\f[R]
and the macro files with \f[B]ct\f[R] for technical reasons.
.IP \[bu] 2
Options \f[B]\-\-help\f[R], \f[B]\-\-quiet\f[R], \f[B]\-\-verbose\f[R],
\f[B]\-\-version\f[R], and flags \f[B]\-i\f[R], \f[B]\-o\f[R], and
\f[B]+lX\f[R] are new in CWEBbin and TeX\ Live.
.IP \[bu] 2
Option \f[B]+lX\f[R] is accompanied by example wrapper files for
\f[B]ctwimac.tex\f[R] and \f[B]ctproofmac.tex\f[R] with translated
captions for German (\f[B]+ld\f[R]).
.IP \[bu] 2
\f[B]ctwill\f[R] in TeX\ Live operates silently by default; use the
\f[B]\-\-verbose\f[R] option to get the original behavior.
.IP \[bu] 2
File lookup with the environment variable CWEBINPUTS is extended to
permit several, colon\-separated, paths.
.IP \[bu] 2
If properly configured, the main program \f[B]ctwill\f[R] is localized
with the \[lq]GNU gettext utilities\[rq].
.SH OPTIONS
.PP
Options on the command line may be either turned off with `\f[B]\-\f[R]'
(if they are on by default) or turned on with `\f[B]+\f[R]' (if they are
off by default).
In fact, the options are processed from left to right, so a sequence
like \f[B]\[en]verbose \-h\f[R] will only show the \f[B]banner line\f[R]
like \f[B]\-\-verbose \-h\f[R] will only show the \f[B]banner line\f[R]
(\f[B]+b\f[R]) and the \f[B]progress report\f[R] (\f[B]+p\f[R]), but
leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]).
.IP \[bu] 2
......@@ -117,14 +145,15 @@ leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]).
\f[B]+p\f[R]: print progress report messages
.IP \[bu] 2
\f[B]+q\f[R]/\f[B]\-q\f[R]: shortcut for \f[B]\-bhp\f[R]; also
\f[B]\[en]quiet\f[R] (default)
\f[B]\-\-quiet\f[R] (default)
.IP \[bu] 2
\f[B]+v\f[R]/\f[B]\-v\f[R]: shortcut for \f[B]+bhp\f[R]; also
\f[B]\[en]verbose\f[R]
\f[B]\-\-verbose\f[R]
.IP \[bu] 2
\f[B]\-e\f[R]: do not enclose C material in \f[B]\f[R]
\f[B]\-e\f[R]: do not enclose C/C++\ material in \f[B]\f[R]
.IP \[bu] 2
\f[B]\-f\f[R]: do not force a newline after every C statement in output
\f[B]\-f\f[R]: do not force a newline after every C/C++\ statement in
output
.IP \[bu] 2
\f[B]\-i\f[R]: suppress indentation of parameter declarations
.IP \[bu] 2
......@@ -140,20 +169,28 @@ leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]).
.IP \[bu] 2
\f[B]+s\f[R]: print usage statistics
.IP \[bu] 2
\f[B]\[en]help\f[R]: display help message and exit
\f[B]\-\-help\f[R]: display help message and exit
.IP \[bu] 2
\f[B]\[en]version\f[R]: output version information and exit
\f[B]\-\-version\f[R]: output version information and exit
.SH ENVIRONMENT
.PP
The environment variable CWEBINPUTS is used to search for the input
files, or the system default if CWEBINPUTS is not set.
See tex(1) for the details of the searching.
.PP
If prepared for NLS support, \f[B]ctwill\f[R] like \f[B]ctangle\f[R] and
\f[B]cweave\f[R] uses the environment variable TEXMFLOCALEDIR to
configure the parent directory where the \[lq]GNU gettext utilities\[rq]
search for translation catalogs.
.PP
These variables are preconfigured in TeX\ Live\[cq]s
\f[B]texmf.cnf\f[R].
.SH FILES
.PP
The location of the files mentioned below varies from system to system.
Use the \f[B]kpsewhich\f[R] utility to find their locations.
.IP \[bu] 2
\f[B]ctwimac.tex\f[R]: The default TeX macros \f[B]\[rs]input\f[R] in
\f[B]ctwimac.tex\f[R]: The default TeX\ macros \f[B]\[rs]input\f[R] in
the first line of the output file.
.IP \[bu] 2
\f[B]ctproofmac.tex\f[R]: If \f[B]ctwill\f[R] is invoked with the
......@@ -168,14 +205,15 @@ dctproofmac.tex\f[R].
\f[I]webfile\f[R]\f[B].bux\f[R]: Reference definitions to resolve from
other modules.
.IP \[bu] 2
\f[B]system.bux\f[R]: Reference definitions to resolve from C standard
library header files like \f[B]<stdio.h>\f[R].
\f[B]system.bux\f[R]: Reference definitions to resolve from
C/C++\ standard library header files like \f[B]<stdio.h>\f[R].
.PP
Other \f[B]aux\f[R]iliary files with references are created
automatically by \f[B]ctwill\f[R] and the actual index files are created
by TeX.
.IP \[bu] 2
\f[B]cwebman.tex\f[R]: The CWEB user manual.
\f[B]cwebman.tex\f[R]: The CWEB user manual, available in PDF from
CTAN (https://ctan.org/pkg/cweb).
.SH SEE ALSO
.IP \[bu] 2
The CWEB System of Structured Documentation: by Donald E.\ Knuth and
......@@ -188,11 +226,14 @@ Literate Programming: by D.\ E.\ Knuth.
Weaving a Program: by Wayne Sewell.
.PP
cweb(1), tex(1), cc(1)
.SH AUTHORS
.PP
Don Knuth wrote \f[B]ctwill\f[R] based on \f[B]cweave\f[R] by Silvio
Levy and Knuth.
.PD 0
.P
.PD
As of 2019, \f[B]ctwill\f[R] and its utilities \f[B]ctwill-refsort\f[R] and
\f[B]ctwill-twinx\f[R] have been fully integrated with the extended CWEBbin
system that serves as the basis for CWEB in TeX Live; see the project
system that serves as the basis for CWEB in TeX\ Live; see the project
page (https://github.com/ascherer/cwebbin).
.SH AUTHORS
Don Knuth wrote \f[B]ctwill\f[R] based on \f[B]cweave\f[R] by Silvio
Levy and Knuth.
.TH CWEB 1 "10 January 2018" "Web2C @VERSION@"
.\"=====================================================================
.\" Automatically generated by Pandoc 2.5
.\"
.TH "CWEB" "1" "January 27, 2019" "Web2c @VERSION@" "General Commands Manual"
.hy
.SH NAME
ctangle, cweave \- translate CWEB to C and/or TeX
.\"=====================================================================
.PP
ctangle, cweave \[en] translate CWEB to TeX
.SH SYNOPSIS
.B ctangle
.RB [ +bhps ]
.IR webfile [ \fB.w\fP ]
.RI [{ changefile [ \fB.ch\fP ]| \fB\-\fP }
.RI [ outfile [ \fB.c\fP ]]]
.br
.B cweave
.RB [ +bhps ]
.RB [ \-efiox ]
.RB [ \-lX | +lX ]
.IR webfile [ \fB.w\fP ]
.RI [{ changefile [ \fB.ch\fP ]| \fB\-\fP }
.RI [ outfile [ \fB.tex\fP ]]]
.\"=====================================================================
.PP
\f[B]ctangle\f[R] [\f[I]options\f[R]] \f[I]webfile\f[R][.w]
[{\f[I]changefile\f[R][.ch]|\-} [\f[I]outfile\f[R][.c]]]
.PD 0
.P
.PD
\f[B]cweave\f[R] [\f[I]options\f[R]] \f[I]webfile\f[R][.w]
[{\f[I]changefile\f[R][.ch]|\-} [\f[I]outfile\f[R][.tex]]]
.SH DESCRIPTION
The
.B ctangle
program converts a CWEB
source document into a C\ program that may be compiled in the usual way.
The output file includes #line specifications so that debugging can be
done in terms of the CWEB source file.
.PP
The
.B cweave
program converts the same CWEB file into a TeX file that may be
formatted and printed in the usual way.
It takes appropriate care of typographic details like page
layout and the use of indentation, italics, boldface, etc., and it supplies
extensive cross-index information that it gathers automatically.
.PP
CWEB allows you to prepare a single
document containing all the information that is needed both to produce
a compilable C\ program and to produce a well-formatted document
describing the program in as much detail as the writer may desire.
The user of CWEB ought to be familiar with TeX as well as\ C.
.PP
The \f[B]ctangle\f[R] program converts a CWEB source document into a
C/C++\ program that may be compiled in the usual way.
The output file includes \f[B]#line\f[R] specifications so that
debugging can be done in terms of the CWEB source file.
.PP
The \f[B]cweave\f[R] program converts the same CWEB file into a
TeX\ file that may be formatted and printed in the usual way.
It takes appropriate care of typographic details like page layout and
the use of indentation, \f[I]italics\f[R], \f[B]boldface\f[R], etc., and
it supplies extensive cross\-index information that it gathers
automatically.
.PP
CWEB allows you to prepare a single document containing all the
information that is needed both to produce a compilable C/C++\ program
and to produce a well\-formatted document describing the program in as
much detail as the writer may desire.
The user of CWEB ought to be familiar with TeX as well as C/C++.
.SH USAGE
.PP
The command line should have one, two, or three names on it.
The first is taken as the CWEB file (and
.B .w
is added if there is no extension).
If that file cannot be opened, the extension
.B .web
is tried instead. (But
.B .w
is recommended, since
.B .web
usually implies Pascal.)
If there is a second name, it is a change file (and
.B .ch
is added if there is no extension).
The change file overrides parts of the WEB file,
as described in the documentation.
If there is a third name, it overrides
the default name of the output file, which is ordinarily the same as
the name of the input file (but on the current directory) with the
extension
.B .c
or
.BR .tex .
.PP
Options in the command line may be either turned off with\ '\-'
(if they are on by default) or turned on with\ '+' (if they are off by
default).
In fact, the options are processed from left to right,
so a sequence like '-f\ +f' corresponds to '+f' (which is the default).
.PP
Both programs operate silently by default (as of 2019).
.PP
The
.B +b
option prints the banner line on your terminal
when ctangle or cweave begins.
The
.B +h
option prints the happy message if the processing
was successful.
The
.B +p
option prints progress reports (starred module numbers) as the processing
takes place.
.PP
The
.B +s
option prints statistics about memory usage at the end of a run.
.PP
There are six other options applicable to
.B cweave
only:
.B \-e
inhibits the enclosure of C\ material formatted by
.B cweave
in
\ePB{.\|.\|.}
brackets.
Such brackets are normally inserted so that special hooks
can be used by
.I cweb-latex
and similar programs.
By default,
\ePB{.\|.\|.}.
is defined as a no-op.
.B \-f
means do not force a newline after every statement in the formatted output.
.B \-i
suppresses the indentation of parameter declarations.
.B \-lX
(or +lX) uses macros for language X\ from Xcwebmac.tex.
.B \-o
suppresses the visual separation of declarations and statements.
.B \-x
means omit the index and table of contents.
.\"=====================================================================
The first is taken as the CWEB input file (and \f[B].w\f[R] is added if
there is no extension).
If there is a second name, it is a change file (and \f[B].ch\f[R] is
added if there is no extension).
The change file overrides parts of the CWEB file, as described in the
documentation.
If there is a third name, it overrides the default name of the output
file, which is ordinarily the same as the name of the input file (but on
the current directory) with the extension \f[B].tex\f[R].
If you just want to change the output file name, but don\[cq]t have a
change file to apply, you can use `\f[B]\-\f[R]' as the second argument.
.SH DIFFERENCES TO ORIGINAL CWEB
.PP
CWEBbin tries hard to be a drop\-in replacement for CWEB, so in general
you should not notice any differences in invoking the programs nor in
the resulting output.
There are, however, a few differences worth noting:
.IP \[bu] 2
Options \f[B]\-\-help\f[R], \f[B]\-\-quiet\f[R], \f[B]\-\-verbose\f[R],
\f[B]\-\-version\f[R], and flags \f[B]\-i\f[R], \f[B]\-o\f[R], and
\f[B]+lX\f[R] are new in CWEBbin and TeX\ Live.
.IP \[bu] 2
Option \f[B]+lX\f[R] is accompanied by several wrapper files for
\f[B]cwebmac.tex\f[R] with translated captions for German
(\f[B]+ld\f[R]), French (\f[B]+lf\f[R]), and Italian (\f[B]+li\f[R]).
.IP \[bu] 2
CWEB in TeX\ Live operates silently by default (as of 2019); use the
\f[B]\-\-verbose\f[R] option to get the original behavior.
.IP \[bu] 2
File lookup with the environment variable CWEBINPUTS is extended to
permit several, colon\-separated, paths.
.IP \[bu] 2
If properly configured, the main programs \f[B]ctangle\f[R] and
\f[B]cweave\f[R] are localized with the \[lq]GNU gettext utilities\[rq].
.SH OPTIONS
.PP
Options on the command line may be either turned off with `\f[B]\-\f[R]'
(if they are on by default) or turned on with `\f[B]+\f[R]' (if they are
off by default).
In fact, the options are processed from left to right, so a sequence
like \f[B]\-\-verbose \-h\f[R] will only show the \f[B]banner line\f[R]
(\f[B]+b\f[R]) and the \f[B]progress report\f[R] (\f[B]+p\f[R]), but
leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]).
.PP
The first batch of options are common to both \f[B]ctangle\f[R] and
\f[B]cweave\f[R]:
.IP \[bu] 2
\f[B]+b\f[R]: print banner line on terminal
.IP \[bu] 2
\f[B]+h\f[R]: print success message on completion
.IP \[bu] 2
\f[B]+p\f[R]: print progress report messages
.IP \[bu] 2
\f[B]+q\f[R]/\f[B]\-q\f[R]: shortcut for \f[B]\-bhp\f[R]; also
\f[B]\-\-quiet\f[R] (default)
.IP \[bu] 2
\f[B]+v\f[R]/\f[B]\-v\f[R]: shortcut for \f[B]+bhp\f[R]; also
\f[B]\-\-verbose\f[R]
.IP \[bu] 2
\f[B]+s\f[R]: print usage statistics
.IP \[bu] 2
\f[B]\-\-help\f[R]: display help message and exit
.IP \[bu] 2
\f[B]\-\-version\f[R]: output version information and exit
.PP
There are six other options applicable to \f[B]cweave\f[R] only:
.IP \[bu] 2
\f[B]\-e\f[R]: do not enclose C/C++\ material in
\f[B]\[rs]PB{\&...}\f[R]
.IP \[bu] 2
\f[B]\-f\f[R]: do not force a newline after every C/C++\ statement in
output
.IP \[bu] 2
\f[B]\-i\f[R]: suppress indentation of parameter declarations
.IP \[bu] 2
\f[B]\-o\f[R]: suppress separation of declarations and statements
.IP \[bu] 2
\f[B]\-x\f[R]: omit indices, section names, table of contents
.IP \[bu] 2
\f[B]+lX\f[R]/\f[B]\-lX\f[R]: use macros for language \f[I]X\f[R] as of
\f[I]X\f[R]\f[B]cwebmac.tex\f[R]
.SH ENVIRONMENT
The environment variable CWEBINPUTS is used to search for the input files,
or the system default if CWEBINPUTS is not set. See
.BR tex (1)
for the details of the searching.
.\"=====================================================================
.PP
The environment variable CWEBINPUTS is used to search for the input
files, or the system default if CWEBINPUTS is not set.
See tex(1) for the details of the searching.
.PP
If prepared for NLS support, \f[B]ctangle\f[R] and \f[B]cweave\f[R] use
the environment variable TEXMFLOCALEDIR to configure the parent
directory where the \[lq]GNU gettext utilities\[rq] search for
translation catalogs.
.PP
These variables are preconfigured in TeX\ Live\[cq]s
\f[B]texmf.cnf\f[R].
.SH FILES
The location of the files mentioned below varies from system to
system. Use the
.B kpsewhich
utility to find their locations.
.TP
.I cwebmac.tex
TeX macros used by cweave output.
.TP
.I cwebman.tex
The user manual.
.\"=====================================================================
.SH "SEE ALSO"
.TP
.I Literate Programming
by D. E. Knuth.
.TP
.I Weaving a Program
by Wayne Sewell.
.TP
.I The CWEB System of Structured Documentation
by Donald E. Knuth and Silvio Levy (hardcopy version of cwebman.tex
and the source code listings).
.PP
.BR tex (1),
.BR cc (1).
.\"=====================================================================
.PP
The location of the files mentioned below varies from system to system.
Use the \f[B]kpsewhich\f[R] utility to find their locations.
.IP \[bu] 2
\f[B]cwebmac.tex\f[R]: The default TeX\ macros \f[B]\[rs]input\f[R] in
the first line of the \f[B]cweave\f[R] output file.
.IP \[bu] 2
\f[B]cwebman.tex\f[R]: The CWEB user manual, available in PDF from
CTAN (https://ctan.org/pkg/cweb).
.SH SEE ALSO
.IP \[bu] 2
The CWEB System of Structured Documentation: by Donald E.\ Knuth and
Silvio Levy (hardcopy version of \f[B]cwebman.tex\f[R] and the source
code listings of \f[B]common.w\f[R], \f[B]ctangle.w\f[R], and
\f[B]cweave.w\f[R]).
.IP \[bu] 2
Literate Programming: by D.\ E.\ Knuth.
.IP \[bu] 2
Weaving a Program: by Wayne Sewell.
.PP
cweb(1), tex(1), cc(1)
.SH AUTHORS
.PP
Don Knuth wrote WEB for TeX and Pascal.
.br
Silvio Levy designed and developed CWEB
by adapting the WEB conventions to\ C and by recoding everything in CWEB.
.PD 0
.P
.PD
Silvio Levy designed and developed CWEB by adapting the WEB conventions
to C and by recoding everything in CWEB.
Knuth began using CWEB and made further refinements.
Many other helpers are acknowledged in the CWEB manual.
.br
As of 2019, the CWEB system in TeX Live is based on the CWEBbin extension
that collects ideas and improvements from numerous contributors;
see https://github.com/ascherer/cwebbin.
.PD 0
.P
.PD
As of 2019, the CWEB system in TeX\ Live is based on the CWEBbin
extension that collects ideas and improvements from numerous
contributors; see the project
page (https://github.com/ascherer/cwebbin).
2019-01-28 Andreas Scherer <https://ascherer.github.io>
* mpost.w: TeXnical nitpicking.
2019-01-26 Luigi Scarso <luigi.scarso@gmail.com>
* Fixed bisection algorithm (overflow of number of bisections in decimal mode with low precision)
* Added 2 levels to the bisection algorithm for cubic intersection. Need testing.
......
......@@ -14,13 +14,25 @@
\def\[#1]{#1.}
\pdfoutput=1
@s line normal
@s MP int
@s MPX int
@s MP_options int
@s boolean int
@s const_string int
@s mpx_options int
@s option int
@s string int
@s timeb int
@s timeval int
@*\MP\ executable.
Now that all of \MP\ is a library, a separate program is needed to
have our customary command-line interface.
@ First, here are the C includes. |avl.h| is needed because of an
|avl_allocator| that is defined in |mplib.h|
@ First, here are the \CEE/ includes.
@d true 1
@d false 0
......@@ -35,7 +47,7 @@ have our customary command-line interface.
#elif defined (HAVE_SYS_TIMEB_H)
#include <sys/timeb.h>
#endif
#include <time.h> /* For `struct tm'. Moved here for Visual Studio 2005. */
#include <time.h> /* For `|struct tm|'. Moved here for Visual Studio 2005. */
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
......@@ -43,7 +55,7 @@ have our customary command-line interface.
#include <mpxout.h>
#include <kpathsea/kpathsea.h>
@= /*@@null@@*/ @> static char *mpost_tex_program = NULL;
static int debug = 0; /* debugging for makempx */
static int debug = 0; /* debugging for \.{makempx} */
static int nokpse = 0;
static boolean recorder_enabled = false;
static string recorder_name = NULL;
......@@ -52,11 +64,11 @@ static char *job_name = NULL;
static char *job_area = NULL;
static int dvitomp_only = 0;
static int ini_version_test = false;
string output_directory; /* Defaults to NULL. */
string output_directory; /* Defaults to |NULL|. */
static boolean restricted_mode = false;
@<getopt structures@>;
@<Declarations@>;
@<Structures for |getopt|@>@;
@<Declarations@>@;
@ Allocating a bit of memory, with error detection:
......@@ -175,7 +187,7 @@ static void mpost_run_editor (MP mp, char *fname, int fline) {
break;
case '\0':
*temp++ = '%';
/* Back up to the null to force termination. */
/* Back up to the |NULL| to force termination. */
edit_value--;
break;
default:
......@@ -243,7 +255,7 @@ options->run_editor = mpost_run_editor;
static string normalize_quotes (const char *name, const char *mesg) {
boolean quoted = false;
boolean must_quote = (strchr(name, ' ') != NULL);
/* Leave room for quotes and NUL. */
/* Leave room for quotes and |NULL|. */
string ret = (string)mpost_xmalloc(strlen(name)+3);
string p;
const_string q;
......@@ -326,8 +338,8 @@ void recorder_start(char *jobname) {
return kpse_find_file (nam, fmt, req);
}
@ Invoke {\tt makempx} (or {\tt troffmpx}) to make sure there is an
up-to-date {\tt .mpx} file for a given {\tt .mp} file. (Original
@ Invoke \.{makempx} (or \.{troffmpx}) to make sure there is an
up-to-date \.{.mpx} file for a given \.{.mp} file. (Original
from John Hobby 3/14/90)
@d default_args " --parse-first-line --interaction=nonstopmode"
......@@ -683,7 +695,7 @@ if (!nokpse)
options->find_file = mpost_find_file;
@ The |mpost| program supports setting of internal values
via a |-s| commandline switch. Since this switch is repeatable,
via a \.{-s} commandline switch. Since this switch is repeatable,
a structure is needed to store the found values in, which is a
simple linked list.
......@@ -695,7 +707,7 @@ typedef struct set_list_item {
struct set_list_item *next;
} set_list_item ;
@ Here is the global value that is the head of the list of |-s| options.
@ Here is the global value that is the head of the list of \.{-s} options.
@c
struct set_list_item *set_list = NULL;
......@@ -805,9 +817,8 @@ static void *mpost_open_file(MP mp, const char *fname, const char *fmode, int ft
if (!nokpse)
options->open_file = mpost_open_file;
@
@<getopt structures@>=
#define ARGUMENT_IS(a) STREQ (mpost_options[optionid].name, a)
@ @d ARGUMENT_IS(a) STREQ (mpost_options[optionid].name, a)
@<Structures for |getopt|@>=
/* SunOS cc can't initialize automatic structs, so make this static. */
static struct option mpost_options[]
......@@ -847,7 +858,7 @@ static struct option mpost_options[]
@<Read and set command line options@>=
{
int g; /* `getopt' return code. */
int g; /* `|getopt|' return code. */
int optionid;
for (;;) {
g = getopt_long_only (argc, argv, "+", mpost_options, &optionid);
......@@ -952,9 +963,8 @@ static struct option mpost_options[]
options->ini_version = (int)ini_version_test;
}
@
@<getopt structures@>=
#define option_is(a) STREQ (dvitomp_options[optionid].name, a)
@ @d option_is(a) STREQ (dvitomp_options[optionid].name, a)
@<Structures for |getopt|@>=
/* SunOS cc can't initialize automatic structs, so make this static. */
static struct option dvitomp_options[]
......@@ -968,9 +978,9 @@ static struct option dvitomp_options[]
@
@<Read and set dvitomp command line options@>=
@<Read and set \.{dvitomp} command line options@>=
{
int g; /* `getopt' return code. */
int g; /* `|getopt|' return code. */
int optionid;
for (;;) {
g = getopt_long_only (argc, argv, "+", dvitomp_options, &optionid);
......@@ -1113,9 +1123,9 @@ input.
int optind_aux = optind;
size_t buflen = 0;
for(;optind_aux<argc;optind_aux++) {
buflen +=(strlen(argv[optind_aux])+1); /* reserve space for ' ' as separator */
buflen +=(strlen(argv[optind_aux])+1); /* reserve space for |' '| as separator */
}
/* Last char is ' ', no need to reserve space for final '\0' */
/* Last char is |' '|, no need to reserve space for final |'\0'| */
if (buflen > max_command_line_size) {
fprintf(stderr,"length of command line too long!\n");
exit(EXIT_FAILURE);
......@@ -1141,7 +1151,7 @@ input.
}
}
@ A simple function to get numerical |texmf.cnf| values
@ A simple function to get numerical \.{texmf.cnf} values
@c
static int setup_var (int def, const char *var_name, boolean nokpse) {
if (!nokpse) {
......@@ -1348,15 +1358,16 @@ if (options->job_name != NULL) {
}
} else {
job_name = tmp_job;
/* |job_area| stays NULL */
/* |job_area| stays |NULL| */
}
}
}
}
options->job_name = job_name;
@ We |#define DLLPROC dllmpostmain| in order to build \MP\ as DLL for
W32\TeX.
@ We |
#define DLLPROC dllmpostmain
| in order to build \MP\ as DLL for W32\TeX.
@<Declarations@>=
#define DLLPROC dllmpostmain
......@@ -1386,12 +1397,13 @@ DLLPROC (int argc, char **argv)
#else
main (int argc, char **argv)
#endif
{ /* |start_here| */
@;
{ @t\1@> /* |start_here| */
int k; /* index into buffer */
int history; /* the exit status */
MP mp; /* a metapost instance */
struct MP_options * options; /* instance options */
char *user_progname = NULL; /* If the user overrides |argv[0]| with {\tt -progname}. */
char *user_progname = NULL; /* If the user overrides |argv[0]| with \.{-progname}. */
options = mp_options();
options->ini_version = (int)false;
options->print_found_names = (int)true;
......@@ -1408,7 +1420,7 @@ main (int argc, char **argv)
dvitomp_only=1;
}
if (dvitomp_only) {
@<Read and set dvitomp command line options@>;
@<Read and set \.{dvitomp} command line options@>;
} else {
@<Read and set command line options@>;
}
......@@ -1473,4 +1485,7 @@ main (int argc, char **argv)
exit(history);
else
exit(0);
@t\8@>
}
@* Index.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment