summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain/zztex/zzio.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/plain/zztex/zzio.tex')
-rw-r--r--Master/texmf-dist/tex/plain/zztex/zzio.tex84
1 files changed, 84 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/zztex/zzio.tex b/Master/texmf-dist/tex/plain/zztex/zzio.tex
new file mode 100644
index 00000000000..04a3fbbfac1
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/zztex/zzio.tex
@@ -0,0 +1,84 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Module: ZzTeX I/O Facilities
+%
+% Synopsis:
+%
+% Author: Paul C. Anagnostopoulos
+% Created: 9 September 1989
+%
+% Copyright 1989--2020 by Paul C. Anagnostopoulos
+% under The MIT License (opensource.org/licenses/MIT)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Terminal & Log I/O
+% -------- - --- ---
+
+% \message writes to the terminal and the log file, without newlines.
+% This macro adds a newline feature:
+
+\def \messagenl #1{% {text}
+ {\newlinechar = `\_%
+ \message{#1}}}
+
+% This macro writes a line to the log file, with a newline at the end.
+
+\def \writelog {\immediate\write -1}
+
+% \ask combines a prompt using \messagenl with a read from the terminal.
+
+\def \ask #1#2{% {\result-macro}{question}
+ {\messagenl{_#2}%
+ \endlinechar = -1
+ \global\read 16 to #1}}
+
+% Including Files
+% --------- -----
+
+
+\def \include #1{% {file}
+ {\checkfile{\zifile}{#1}%
+ \if \zifile
+ \gdef \znext {\input #1\relax}%
+ \else
+ \warning{noinclfile}{File `#1' does not exist}%
+ \ask{\newfile}{Enter a new file name, or a period (.) to skip it.}%
+ \stringeql{\znext}{\newfile}{.}%
+ \if \znext
+ \xdef \znext {}%
+ \else
+ \xdef \znext {\noexpand\include{\newfile}}%
+ \fi
+ \fi}%
+ \znext
+ \endgraf}
+
+\def \zportionid {}
+
+\def \includeportion #1#2{% {file}{portion-id}
+ \gdef \zportionid {#2}%
+ \include{#1}%
+ \gdef \zportionid {}}
+
+\def \portion #1{% {portion-id}
+ \stringeql{\znext}{#1}{\zportionid}%
+ \if \znext}
+
+\let \endportion = \fi
+
+\def \includeifexists #1{% {file}
+ \checkfile{\zifile}{#1}%
+ \if \zifile
+ \input #1\relax
+ \endgraf
+ \fi}
+
+% Utilities
+% ---------
+
+
+\def \checkfile #1#2{% {\result-flag}{file}
+ \openin \zreada #2\relax
+ \setflag #1= {\notp{\eofp{\zreada}}}%
+ \closein \zreada}