\R4RS is not a valid LaTeX macro name.

Besides, we're at R5RS now.
This commit is contained in:
sperber 2002-01-07 13:26:32 +00:00
parent 737917e695
commit b2bcc730ad
7 changed files with 204 additions and 204 deletions

View File

@ -12,7 +12,7 @@
\def\Unix{{Unix}} % Not smallcaps, according to Bart. \def\Unix{{Unix}} % Not smallcaps, according to Bart.
\def\Scheme{{Scheme}} \def\Scheme{{Scheme}}
\def\scm{{Scheme 48}} \def\scm{{Scheme 48}}
\def\R4RS{R4RS} \def\RnRS{R5RS}
\def\Posix{\textsc{Posix}} \def\Posix{\textsc{Posix}}
\def\sharpf{\normalfont\texttt{\#f}} \def\sharpf{\normalfont\texttt{\#f}}

View File

@ -55,9 +55,9 @@ We currently release scsh to the following Internet sites:
\end{flushleft} \end{flushleft}
\end{inset} \end{inset}
These sites are These sites are
the MIT Project Mac ftp server, the MIT Project Mac ftp server,
the Scheme Shell home page, and the Scheme Shell home page, and
the Indiana Scheme Repository home page, the Indiana Scheme Repository home page,
respectively. respectively.
Each should have a compressed tar file of the entire scsh release, Each should have a compressed tar file of the entire scsh release,
which includes all the source code and the manual, which includes all the source code and the manual,
@ -80,11 +80,11 @@ This means that if you use one of the common Unix implementations,
building scsh should require exactly the following steps: building scsh should require exactly the following steps:
\begin{inset} \begin{inset}
\begin{tabular}{l@{\qquad}l} \begin{tabular}{l@{\qquad}l}
\ex{gunzip scsh.tar.gz} & \emph{Uncompress the release tar file.} \\ \ex{gunzip scsh.tar.gz} & \emph{Uncompress the release tar file.} \\
\ex{untar xfv scsh.tar} & \emph{Unpack the source code.} \\ \ex{untar xfv scsh.tar} & \emph{Unpack the source code.} \\
\ex{cd scsh-0.5} & \emph{Move to the source directory.} \\ \ex{cd scsh-0.5} & \emph{Move to the source directory.} \\
\ex{./configure} & \emph{Examine host; build Makefile.} \\ \ex{./configure} & \emph{Examine host; build Makefile.} \\
\ex{make} & \emph{Build system.} \ex{make} & \emph{Build system.}
\end{tabular} \end{tabular}
\end{inset} \end{inset}
When you are done, you should have a virtual machine compiled in When you are done, you should have a virtual machine compiled in
@ -200,9 +200,9 @@ Some of the common ones are:
that are not commonly used. that are not commonly used.
\item[\ex{-info}] \item[\ex{-info}]
Data structures packaging up information about various OS Data structures packaging up information about various OS
entities frequently end in \ldots\ex{-info}. Examples: entities frequently end in \ldots\ex{-info}. Examples:
\ex{user-info}, \ex{file-info}, \ex{group-info}, and \ex{host-info}. \ex{user-info}, \ex{file-info}, \ex{group-info}, and \ex{host-info}.
\end{description} \end{description}
% %
@ -214,11 +214,11 @@ and so forth.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Lexical issues} \section{Lexical issues}
Scsh's lexical syntax is just {\R4RS} {\Scheme}, with the following Scsh's lexical syntax is just {\RnRS} {\Scheme}, with the following
exceptions. exceptions.
\subsection{Extended symbol syntax} \subsection{Extended symbol syntax}
Scsh's symbol syntax differs from {\R4RS} {\Scheme} in the following ways: Scsh's symbol syntax differs from {\RnRS} {\Scheme} in the following ways:
\begin{itemize} \begin{itemize}
\item In scsh, symbol case is preserved by \ex{read} and is significant on \item In scsh, symbol case is preserved by \ex{read} and is significant on
symbol comparison. This means symbol comparison. This means
@ -277,9 +277,9 @@ which is used to delimit the string bounds.
Some examples: Some examples:
\begin{inset} \begin{inset}
\begin{tabular}{ll} \begin{tabular}{ll}
Here-string syntax & Ordinary string syntax \\ \hline Here-string syntax & Ordinary string syntax \\ \hline
\verb:#<|Hello, world.|: & \verb:"Hello, world.": \\ \verb:#<|Hello, world.|: & \verb:"Hello, world.": \\
\verb:#<!"Ouch," he said.!: & \verb:"\"Ouch,\" he said.": \verb:#<!"Ouch," he said.!: & \verb:"\"Ouch,\" he said.":
\end{tabular} \end{tabular}
\end{inset} \end{inset}
% %
@ -391,9 +391,9 @@ All told, the \ex{define-record} form above defines the following procedures:
\hline \hline
(make-ship \var{x} \var{y}) & Create a new \var{ship} record. \\ (make-ship \var{x} \var{y}) & Create a new \var{ship} record. \\
\hline \hline
(ship:x \var{ship}) & Retrieve the \var{x} field. \\ (ship:x \var{ship}) & Retrieve the \var{x} field. \\
(ship:y \var{ship}) & Retrieve the \var{y} field. \\ (ship:y \var{ship}) & Retrieve the \var{y} field. \\
(ship:size \var{ship}) & Retrieve the \var{size} field. \\ (ship:size \var{ship}) & Retrieve the \var{size} field. \\
\hline \hline
(set-ship:x \var{ship} \var{new-x}) & Assign the \var{x} field. \\ (set-ship:x \var{ship} \var{new-x}) & Assign the \var{x} field. \\
(set-ship:y \var{ship} \var{new-y}) & Assign the \var{y} field. \\ (set-ship:y \var{ship} \var{new-y}) & Assign the \var{y} field. \\
@ -403,7 +403,7 @@ All told, the \ex{define-record} form above defines the following procedures:
(modify-ship:y \var{ship} \var{yfun}) & Modify \var{y} field with \var{yfun}. \\ (modify-ship:y \var{ship} \var{yfun}) & Modify \var{y} field with \var{yfun}. \\
(modify-ship:size \var{ship} \var{sizefun}) & Modify \var{size} field with \var{sizefun}. \\ (modify-ship:size \var{ship} \var{sizefun}) & Modify \var{size} field with \var{sizefun}. \\
\hline \hline
(ship? \var{object}) & Type predicate. \\ (ship? \var{object}) & Type predicate. \\
\hline \hline
(copy-ship \var{ship}) & Shallow-copy of the record. \\ (copy-ship \var{ship}) & Shallow-copy of the record. \\
\hline \hline

View File

@ -27,7 +27,7 @@ the second element is \ex{(nth \var{list} 1)}, and so on.
This procedure is provided as it is useful for accessing elements This procedure is provided as it is useful for accessing elements
from the lists returned by the field-readers (chapter~\ref{chapt:fr-awk}). from the lists returned by the field-readers (chapter~\ref{chapt:fr-awk}).
The functionality of \ex{nth} is equivalent to that of \R4RS{}'s The functionality of \ex{nth} is equivalent to that of \RnRS{}'s
\ex{list-ref}. Therefore, \ex{nth} will go away in a future release. \ex{list-ref}. Therefore, \ex{nth} will go away in a future release.
\end{desc} \end{desc}

View File

@ -174,7 +174,7 @@ in the child process before executing the body of the form.
This guarantees that the \ex{begin} form, like all other process forms, This guarantees that the \ex{begin} form, like all other process forms,
``sees'' the effects of any associated I/O redirections. ``sees'' the effects of any associated I/O redirections.
Note that {\R4RS} does not specify whether or not \ex{|} and \ex{|+} Note that {\RnRS} does not specify whether or not \ex{|} and \ex{|+}
are readable symbols. Scsh does. are readable symbols. Scsh does.
\section{Using extended process forms in \Scheme} \section{Using extended process forms in \Scheme}

View File

@ -6,7 +6,7 @@
Scsh is currently implemented on top of {\scm}, a freely-available Scsh is currently implemented on top of {\scm}, a freely-available
{\Scheme} implementation written by Jonathan Rees and Richard Kelsey. {\Scheme} implementation written by Jonathan Rees and Richard Kelsey.
{\scm} uses a byte-code interpreter for good code density, portability {\scm} uses a byte-code interpreter for good code density, portability
and medium efficiency. It is {\R4RS}. and medium efficiency. It is {\RnRS}.
It also has a module system designed by Jonathan Rees. It also has a module system designed by Jonathan Rees.
Scsh's design is not {\scm} specific, although the current implementation Scsh's design is not {\scm} specific, although the current implementation
@ -191,30 +191,30 @@ where
\begin{inset} \begin{inset}
\begin{flushleft} \begin{flushleft}
\begin{tabular}{ll@{\qquad}l} \begin{tabular}{ll@{\qquad}l}
\var{meta-arg:} & \verb|\| \var{script-file-name} \\ \var{meta-arg:} & \verb|\| \var{script-file-name} \\
\\ \\
\var{switch:} & \ex{-e} \var{entry-point} \var{switch:} & \ex{-e} \var{entry-point}
& Specify top-level entry-point. \\ & Specify top-level entry-point. \\
& \ex{-o} \var{structure} & \ex{-o} \var{structure}
& Open structure in current package. \\ & Open structure in current package. \\
& \ex{-m} \var{structure} & \ex{-m} \var{structure}
& Switch to package. \\ & Switch to package. \\
& \ex{-n} \var{new-package} & \ex{-n} \var{new-package}
& Switch to new package. \\ \\ & Switch to new package. \\ \\
& \ex{-lm} \var{module-file-name} & \ex{-lm} \var{module-file-name}
& Load module into config package. \\ & Load module into config package. \\
& \ex{-l} \var{file-name} & \ex{-l} \var{file-name}
& Load file into current package. \\ & Load file into current package. \\
& \ex{-dm} & Do script module. \\ & \ex{-dm} & Do script module. \\
& \ex{-ds} & Do script. \\ & \ex{-ds} & Do script. \\
\\ \\
\var{end-option:} & \ex{-s} \var{script} \\ \var{end-option:} & \ex{-s} \var{script} \\
& \ex{-sfd} \var{num} \\ & \ex{-sfd} \var{num} \\
@ -579,16 +579,16 @@ the \ex{top} procedure.
;;; the functionality as a Unix program akin to sort(1). ;;; the functionality as a Unix program akin to sort(1).
(define-structures ((sort-struct (export sort-list (define-structures ((sort-struct (export sort-list
sort-vector!)) sort-vector!))
(sort-toplevel (export top))) (sort-toplevel (export top)))
(open scheme) (open scheme)
(begin (define (sort-list elts <=) {\ldots}) (begin (define (sort-list elts <=) {\ldots})
(define (sort-vec! vec <=) {\ldots}) (define (sort-vec! vec <=) {\ldots})
;; Parse the command line and ;; Parse the command line and
;; sort stdin to stdout. ;; sort stdin to stdout.
(define (top args) (define (top args)
{\ldots})))\end{code} {\ldots})))\end{code}
The expansion below shows how the command-line scanner The expansion below shows how the command-line scanner
(1) loads the config file \ex{sort} (written in the {\scm} module language), (1) loads the config file \ex{sort} (written in the {\scm} module language),
@ -833,30 +833,30 @@ The allowed options to the heap linker are:
\begin{itemize} \begin{itemize}
\def\Item#1{\item{\ex{#1}}\\} \def\Item#1{\item{\ex{#1}}\\}
\Item{--temp \var{dir}} The temporary directory to hold .c and .o files. \Item{--temp \var{dir}} The temporary directory to hold .c and .o files.
The default is typically configured to be The default is typically configured to be
\ex{/usr/tmp}, and can be overridden by the \ex{/usr/tmp}, and can be overridden by the
environment variable \ex{TMPDIR}. environment variable \ex{TMPDIR}.
Example: Example:
\codex{--temp /tmp} \codex{--temp /tmp}
\Item{--cc \var{command}} The command to run the C compiler. \Item{--cc \var{command}} The command to run the C compiler.
The default can be overridden by the environment The default can be overridden by the environment
variable \ex{CC}. variable \ex{CC}.
Example: Example:
\codex{--cc "gcc -g -O"} \codex{--cc "gcc -g -O"}
\Item{--ld \var{command}} The arguments to run the C compiler as a linker. \Item{--ld \var{command}} The arguments to run the C compiler as a linker.
The default can be overridden by the The default can be overridden by the
environment variable \ex{LDFLAGS}. environment variable \ex{LDFLAGS}.
Example: Example:
\codex{--ld "-Wl,-E"} \codex{--ld "-Wl,-E"}
\Item{--libs \var{libs}} The libraries needed to link the VM and heap. \Item{--libs \var{libs}} The libraries needed to link the VM and heap.
The default can be overridden by the The default can be overridden by the
environment variable \ex{LIBS}. environment variable \ex{LIBS}.
Example: Example:
\codex{--libs "-ldld -lld -lm"} \codex{--libs "-ldld -lld -lm"}
\end{itemize} \end{itemize}
Be warned that the current heap linker has many shortcomings. Be warned that the current heap linker has many shortcomings.
@ -876,7 +876,7 @@ Be warned that the current heap linker has many shortcomings.
\begin{itemize} \begin{itemize}
\item It requires the heap image to be referenced by a file-name; \item It requires the heap image to be referenced by a file-name;
the linker will not allow you to feed it the input heap image the linker will not allow you to feed it the input heap image
on a port. on a port.
\item The heap-image is linked against the vm contained in \item The heap-image is linked against the vm contained in
\begin{tightcode} \begin{tightcode}
/usr/local/lib/scsh/libscshvm.a\end{tightcode} /usr/local/lib/scsh/libscshvm.a\end{tightcode}
@ -906,7 +906,7 @@ it.
Here is an example of how one might use the heap linker: Here is an example of how one might use the heap linker:
\begin{code} \begin{code}
scsh-hlink scsh.image fastscsh\end{code} scsh-hlink scsh.image fastscsh\end{code}
We'd love it if someone would dive into the source and improve it. We'd love it if someone would dive into the source and improve it.

View File

@ -131,8 +131,8 @@ This can be overridden if the programmer wishes.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{I/O} \section{I/O}
\subsection{Standard {\R4RS} I/O procedures} \subsection{Standard {\RnRS} I/O procedures}
In scsh, most standard {\R4RS} i/o operations (such as \ex{display} or In scsh, most standard {\RnRS} i/o operations (such as \ex{display} or
\ex{read-char}) work on both integer file descriptors and {\Scheme} ports. \ex{read-char}) work on both integer file descriptors and {\Scheme} ports.
When doing i/o with a file descriptor, the i/o operation is done When doing i/o with a file descriptor, the i/o operation is done
directly on the file, bypassing any buffered data that may have directly on the file, bypassing any buffered data that may have
@ -141,7 +141,7 @@ Note that character-at-a-time operations such as \ex{read-char}
are likely to be quite slow when performed directly upon file are likely to be quite slow when performed directly upon file
descriptors. descriptors.
The standard {\R4RS} procedures \ex{read-char}, \ex{char-ready?}, \ex{write}, The standard {\RnRS} procedures \ex{read-char}, \ex{char-ready?}, \ex{write},
\ex{display}, \ex{newline}, \ex{display}, \ex{newline},
and \ex{write-char} are all generic, accepting integer file descriptor and \ex{write-char} are all generic, accepting integer file descriptor
arguments as well as ports. arguments as well as ports.
@ -590,7 +590,7 @@ this is dependent on the OS implementation.
\ex{open/read+write} flags. \ex{open/read+write} flags.
% %
The returned port is an input port if the \var{flags} permit it, The returned port is an input port if the \var{flags} permit it,
otherwise an output port. \R4RS/\scm/scsh do not have input/output ports, otherwise an output port. \RnRS/\scm/scsh do not have input/output ports,
so it's one or the other. This should be fixed. (You can hack simultaneous so it's one or the other. This should be fixed. (You can hack simultaneous
i/o on a file by opening it r/w, taking the result input port, i/o on a file by opening it r/w, taking the result input port,
and duping it to an output port with \ex{dup->outport}.) and duping it to an output port with \ex{dup->outport}.)
@ -606,7 +606,7 @@ this is dependent on the OS implementation.
\codex{(bitwise-ior open/create open/truncate)} \codex{(bitwise-ior open/create open/truncate)}
for \ex{open-output-file}. for \ex{open-output-file}.
These defaults make the procedures backwards-compatible with their These defaults make the procedures backwards-compatible with their
unary {\R4RS} definitions. unary {\RnRS} definitions.
\end{defundescx} \end{defundescx}
\begin{defundesc} {open-fdes} {fname flags [perms]} \integer \begin{defundesc} {open-fdes} {fname flags [perms]} \integer

View File

@ -142,11 +142,11 @@ if it is not supported, the flag will be bound to \sharpf.
% the kind of features they determine: % the kind of features they determine:
% \begin{center} % \begin{center}
% \begin{tabular}{|ll|}\hline % \begin{tabular}{|ll|}\hline
% Field & Affects \\ \hline \hline % Field & Affects \\ \hline \hline
% \ex{input-flags} & Processing of input chars \\ % \ex{input-flags} & Processing of input chars \\
% \ex{output-flags} & Processing of output chars \\ % \ex{output-flags} & Processing of output chars \\
% \ex{control-flags} & Controlling of terminal's serial line \\ % \ex{control-flags} & Controlling of terminal's serial line \\
% \ex{local-flags} & Details of the line-editting user interface \\ % \ex{local-flags} & Details of the line-editting user interface \\
% \hline % \hline
% \end{tabular} % \end{tabular}
% \end{center} % \end{center}
@ -163,10 +163,10 @@ in bits-per-second.
The following speeds are supported by {\Posix}: The following speeds are supported by {\Posix}:
\begin{center} \begin{center}
\begin{tabular}{rrrr} \begin{tabular}{rrrr}
0 & 134 & 600 & 4800 \\ 0 & 134 & 600 & 4800 \\
50 & 150 & 1200 & 9600 \\ 50 & 150 & 1200 & 9600 \\
75 & 200 & 1800 & 19200 \\ 75 & 200 & 1800 & 19200 \\
110 & 300 & 2400 & 38400 \\ 110 & 300 & 2400 & 38400 \\
\end{tabular} \end{tabular}
\end{center} \end{center}
Your OS may accept others; it may also allow the special symbols Your OS may accept others; it may also allow the special symbols
@ -201,9 +201,9 @@ The typical method for creating a new record is to copy one retrieved
by a call to the \ex{tty-info} procedure, then modify the copy as desired. by a call to the \ex{tty-info} procedure, then modify the copy as desired.
Note that the \ex{make-tty-info} procedure does not take a parameter Note that the \ex{make-tty-info} procedure does not take a parameter
to define the new record's control characters.\footnote{ to define the new record's control characters.\footnote{
Why? Because the length of the string varies from Unix to Unix. Why? Because the length of the string varies from Unix to Unix.
For example, the word-erase control character (typically control-w) For example, the word-erase control character (typically control-w)
is provided by most Unixes, but not part of the {\Posix} spec.} is provided by most Unixes, but not part of the {\Posix} spec.}
Instead, it simply returns a \ex{tty-info} record whose control-character Instead, it simply returns a \ex{tty-info} record whose control-character
string has all elements initialised to {\Ascii} nul. string has all elements initialised to {\Ascii} nul.
You may then install the special characters by assigning to the string. You may then install the special characters by assigning to the string.
@ -337,7 +337,7 @@ the terminal to be opened for both input and output.
The port returned is an input port if the \var{flags} permit it, The port returned is an input port if the \var{flags} permit it,
otherwise an output port. otherwise an output port.
\R4RS/\scm/scsh do not have input/output ports, \RnRS/\scm/scsh do not have input/output ports,
so it's one or the other. so it's one or the other.
However, you can get both read and write ports open on a terminal However, you can get both read and write ports open on a terminal
by opening it read/write, taking the result input port, by opening it read/write, taking the result input port,
@ -411,7 +411,7 @@ In the child process
\item The child is placed in its own, new session \item The child is placed in its own, new session
(see \ex{become\=session\=leader}). (see \ex{become\=session\=leader}).
\item The terminal device becomes the new session's controlling terminal \item The terminal device becomes the new session's controlling terminal
(see \ex{open-control-tty}). (see \ex{open-control-tty}).
\item The \ex{(error-output-port)} is unbuffered. \item The \ex{(error-output-port)} is unbuffered.
\end{itemize} \end{itemize}
@ -447,8 +447,8 @@ For example,
\remark{This is rather Berkeley-specific. SVR4 ptys are rare enough that \remark{This is rather Berkeley-specific. SVR4 ptys are rare enough that
I've no real idea if it generalises across the Unix gap. Experts I've no real idea if it generalises across the Unix gap. Experts
are invited to advise. Users feel free to not worry---the predominance are invited to advise. Users feel free to not worry---the predominance
of current popular Unix systems use Berkeley ptys.} of current popular Unix systems use Berkeley ptys.}
\end{desc} \end{desc}
\defunx{make-pty-generator}{}{\proc} \defunx{make-pty-generator}{}{\proc}
@ -485,36 +485,36 @@ Example:
Scsh & C & Typical char \\ Scsh & C & Typical char \\
\hline\hline \hline\hline
{\Posix} & & \\ {\Posix} & & \\
\exi{ttychar/delete-char} & \ex{ERASE} & del \\ \exi{ttychar/delete-char} & \ex{ERASE} & del \\
\exi{ttychar/delete-line} & \ex{KILL} & \verb|^U| \\ \exi{ttychar/delete-line} & \ex{KILL} & \verb|^U| \\
\exi{ttychar/eof} & \ex{EOF} & \verb|^D| \\ \exi{ttychar/eof} & \ex{EOF} & \verb|^D| \\
\exi{ttychar/eol} & \ex{EOL} & \\ \exi{ttychar/eol} & \ex{EOL} & \\
\exi{ttychar/interrupt} & \ex{INTR} & \verb|^C| \\ \exi{ttychar/interrupt} & \ex{INTR} & \verb|^C| \\
\exi{ttychar/quit} & \ex{QUIT} & \verb|^\| \\ \exi{ttychar/quit} & \ex{QUIT} & \verb|^\| \\
\exi{ttychar/suspend} & \ex{SUSP} & \verb|^Z| \\ \exi{ttychar/suspend} & \ex{SUSP} & \verb|^Z| \\
\exi{ttychar/start} & \ex{START} & \verb|^Q| \\ \exi{ttychar/start} & \ex{START} & \verb|^Q| \\
\exi{ttychar/stop} & \ex{STOP} & \verb|^S| \\ \exi{ttychar/stop} & \ex{STOP} & \verb|^S| \\
\hline\hline \hline\hline
{SVR4 and 4.3+BSD} & & \\ {SVR4 and 4.3+BSD} & & \\
\exi{ttychar/delayed-suspend} & \ex{DSUSP} & \verb|^Y| \\ \exi{ttychar/delayed-suspend} & \ex{DSUSP} & \verb|^Y| \\
\exi{ttychar/delete-word} & \ex{WERASE} & \verb|^W| \\ \exi{ttychar/delete-word} & \ex{WERASE} & \verb|^W| \\
\exi{ttychar/discard} & \ex{DISCARD} & \verb|^O| \\ \exi{ttychar/discard} & \ex{DISCARD} & \verb|^O| \\
\exi{ttychar/eol2} & \ex{EOL2} & \\ \exi{ttychar/eol2} & \ex{EOL2} & \\
\exi{ttychar/literal-next} & \ex{LNEXT} & \verb|^V| \\ \exi{ttychar/literal-next} & \ex{LNEXT} & \verb|^V| \\
\exi{ttychar/reprint} & \ex{REPRINT} & \verb|^R| \\ \exi{ttychar/reprint} & \ex{REPRINT} & \verb|^R| \\
\hline\hline \hline\hline
{4.3+BSD} & & \\ {4.3+BSD} & & \\
\exi{ttychar/status} & \ex{STATUS} & \verb|^T| \\ \exi{ttychar/status} & \ex{STATUS} & \verb|^T| \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Indices into the \protect\ex{tty-info} record's \caption{Indices into the \protect\ex{tty-info} record's
\protect\var{control-chars} string, \protect\var{control-chars} string,
and the character traditionally found at each index. and the character traditionally found at each index.
Only the indices for the {\Posix} entries are guaranteed to Only the indices for the {\Posix} entries are guaranteed to
be non-\sharpf.} be non-\sharpf.}
\label{table:ttychars} \label{table:ttychars}
\end{table} \end{table}
@ -527,44 +527,44 @@ Scsh & C & Meaning \\
\hline\hline \hline\hline
\Posix & & \\ \Posix & & \\
\exi{ttyin/check-parity} \exi{ttyin/check-parity}
& \ex{INPCK} & Check parity. \\ & \ex{INPCK} & Check parity. \\
\exi{ttyin/ignore-bad-parity-chars} \exi{ttyin/ignore-bad-parity-chars}
& \ex{IGNPAR} & Ignore chars with parity errors. \\ & \ex{IGNPAR} & Ignore chars with parity errors. \\
\exi{ttyin/mark-parity-errors} \exi{ttyin/mark-parity-errors}
& \ex{PARMRK} & Insert chars to mark parity errors.\\ & \ex{PARMRK} & Insert chars to mark parity errors.\\
\exi{ttyin/ignore-break} \exi{ttyin/ignore-break}
& \ex{IGNBRK} & Ignore breaks. \\ & \ex{IGNBRK} & Ignore breaks. \\
\exi{ttyin/interrupt-on-break} \exi{ttyin/interrupt-on-break}
& \ex{BRKINT} & Signal on breaks. \\ & \ex{BRKINT} & Signal on breaks. \\
\exi{ttyin/7bits} \exi{ttyin/7bits}
& \ex{ISTRIP} & Strip char to seven bits. \\ & \ex{ISTRIP} & Strip char to seven bits. \\
\exi{ttyin/cr->nl} \exi{ttyin/cr->nl}
& \ex{ICRNL} & Map carriage-return to newline. \\ & \ex{ICRNL} & Map carriage-return to newline. \\
\exi{ttyin/ignore-cr} \exi{ttyin/ignore-cr}
& \ex{IGNCR} & Ignore carriage-returns. \\ & \ex{IGNCR} & Ignore carriage-returns. \\
\exi{ttyin/nl->cr} \exi{ttyin/nl->cr}
& \ex{INLCR} & Map newline to carriage-return. \\ & \ex{INLCR} & Map newline to carriage-return. \\
\exi{ttyin/input-flow-ctl} \exi{ttyin/input-flow-ctl}
& \ex{IXOFF} & Enable input flow control. \\ & \ex{IXOFF} & Enable input flow control. \\
\exi{ttyin/output-flow-ctl} \exi{ttyin/output-flow-ctl}
& \ex{IXON} & Enable output flow control. \\ & \ex{IXON} & Enable output flow control. \\
\hline\hline \hline\hline
{SVR4 and 4.3+BSD} & & \\ {SVR4 and 4.3+BSD} & & \\
\exi{ttyin/xon-any} & \ex{IXANY} & Any char restarts after stop. \\ \exi{ttyin/xon-any} & \ex{IXANY} & Any char restarts after stop. \\
\exi{ttyin/beep-on-overflow} & \ex{IMAXBEL} & Ring bell when queue full. \\ \exi{ttyin/beep-on-overflow} & \ex{IMAXBEL} & Ring bell when queue full. \\
\hline\hline \hline\hline
{SVR4} & & \\ {SVR4} & & \\
\exi{ttyin/lowercase} & \ex{IUCLC} & Map upper case to lower case. \\ \exi{ttyin/lowercase} & \ex{IUCLC} & Map upper case to lower case. \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Input-flags. These are the named flags for the \protect\ex{tty-info} \caption{Input-flags. These are the named flags for the \protect\ex{tty-info}
record's \protect\var{input-flags} field. record's \protect\var{input-flags} field.
These flags generally control the processing of input chars. These flags generally control the processing of input chars.
Only the {\Posix} entries are guaranteed to be non-\sharpf. Only the {\Posix} entries are guaranteed to be non-\sharpf.
} }
\label{table:ttyin} \label{table:ttyin}
\end{table} \end{table}
@ -580,32 +580,32 @@ Scsh & C & Meaning \\ \hline\hline
\hline\hline \hline\hline
\multicolumn{3}{|l|}{SVR4 and 4.3+BSD} \\ \multicolumn{3}{|l|}{SVR4 and 4.3+BSD} \\
\exi{ttyout/nl->crnl} & \ex{ONLCR} & Map nl to cr-nl. \\ \exi{ttyout/nl->crnl} & \ex{ONLCR} & Map nl to cr-nl. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{4.3+BSD} \\ \multicolumn{3}{|l|}{4.3+BSD} \\
\exi{ttyout/discard-eot} & \ex{ONOEOT} & Discard EOT chars. \\ \exi{ttyout/discard-eot} & \ex{ONOEOT} & Discard EOT chars. \\
\exi{ttyout/expand-tabs} & \ex{OXTABS}\footnote{ \exi{ttyout/expand-tabs} & \ex{OXTABS}\footnote{
Note this is distinct from the SVR4-equivalent Note this is distinct from the SVR4-equivalent
\ex{ttyout/tab-delayx} flag defined in \ex{ttyout/tab-delayx} flag defined in
table~\ref{table:ttydelays}.} table~\ref{table:ttydelays}.}
& Expand tabs. \\ & Expand tabs. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{SVR4} \\ \multicolumn{3}{|l|}{SVR4} \\
\exi{ttyout/cr->nl} & \ex{OCRNL} & Map cr to nl. \\ \exi{ttyout/cr->nl} & \ex{OCRNL} & Map cr to nl. \\
\exi{ttyout/nl-does-cr} & \ex{ONLRET}& Nl performs cr as well. \\ \exi{ttyout/nl-does-cr} & \ex{ONLRET}& Nl performs cr as well. \\
\exi{ttyout/no-col0-cr} & \ex{ONOCR} & No cr output in column 0. \\ \exi{ttyout/no-col0-cr} & \ex{ONOCR} & No cr output in column 0. \\
\exi{ttyout/delay-w/fill-char} & \ex{OFILL} & Send fill char to delay. \\ \exi{ttyout/delay-w/fill-char} & \ex{OFILL} & Send fill char to delay. \\
\exi{ttyout/fill-w/del} & \ex{OFDEL} & Fill char is {\Ascii} DEL. \\ \exi{ttyout/fill-w/del} & \ex{OFDEL} & Fill char is {\Ascii} DEL. \\
\exi{ttyout/uppercase} & \ex{OLCUC} & Map lower to upper case. \\ \exi{ttyout/uppercase} & \ex{OLCUC} & Map lower to upper case. \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Output-flags. These are the named flags for the \protect\ex{tty-info} \caption{Output-flags. These are the named flags for the \protect\ex{tty-info}
record's \protect\var{output-flags} field. record's \protect\var{output-flags} field.
These flags generally control the processing of output chars. These flags generally control the processing of output chars.
Only the {\Posix} entries are guaranteed to be non-\sharpf.} Only the {\Posix} entries are guaranteed to be non-\sharpf.}
\label{table:ttyout} \label{table:ttyout}
\end{table} \end{table}
@ -614,50 +614,50 @@ Scsh & C & Meaning \\ \hline\hline
\begin{table}[p] \begin{table}[p]
\begin{tabular}{r|ll|} \cline{2-3} \begin{tabular}{r|ll|} \cline{2-3}
& Value & Comment \\ \cline{2-3} & Value & Comment \\ \cline{2-3}
{Backspace delay} & \exi{ttyout/bs-delay} & Bit-field mask \\ {Backspace delay} & \exi{ttyout/bs-delay} & Bit-field mask \\
& \exi{ttyout/bs-delay0} & \\ & \exi{ttyout/bs-delay0} & \\
& \exi{ttyout/bs-delay1} & \\ & \exi{ttyout/bs-delay1} & \\
\cline{2-3} \cline{2-3}
{Carriage-return delay} & \exi{ttyout/cr-delay} & Bit-field mask \\ {Carriage-return delay} & \exi{ttyout/cr-delay} & Bit-field mask \\
& \exi{ttyout/cr-delay0} & \\ & \exi{ttyout/cr-delay0} & \\
& \exi{ttyout/cr-delay1} & \\ & \exi{ttyout/cr-delay1} & \\
& \exi{ttyout/cr-delay2} & \\ & \exi{ttyout/cr-delay2} & \\
& \exi{ttyout/cr-delay3} & \\ & \exi{ttyout/cr-delay3} & \\
\cline{2-3} \cline{2-3}
{Form-feed delay} & \exi{ttyout/ff-delay} & Bit-field mask \\ {Form-feed delay} & \exi{ttyout/ff-delay} & Bit-field mask \\
& \exi{ttyout/ff-delay0} & \\ & \exi{ttyout/ff-delay0} & \\
& \exi{ttyout/ff-delay1} & \\ & \exi{ttyout/ff-delay1} & \\
\cline{2-3} \cline{2-3}
{Horizontal-tab delay} & \exi{ttyout/tab-delay} & Bit-field mask \\ {Horizontal-tab delay} & \exi{ttyout/tab-delay} & Bit-field mask \\
& \exi{ttyout/tab-delay0} & \\ & \exi{ttyout/tab-delay0} & \\
& \exi{ttyout/tab-delay1} & \\ & \exi{ttyout/tab-delay1} & \\
& \exi{ttyout/tab-delay2} & \\ & \exi{ttyout/tab-delay2} & \\
& \exi{ttyout/tab-delayx} & Expand tabs \\ & \exi{ttyout/tab-delayx} & Expand tabs \\
\cline{2-3} \cline{2-3}
{Newline delay} & \exi{ttyout/nl-delay} & Bit-field mask \\ {Newline delay} & \exi{ttyout/nl-delay} & Bit-field mask \\
& \exi{ttyout/nl-delay0} & \\ & \exi{ttyout/nl-delay0} & \\
& \exi{ttyout/nl-delay1} & \\ & \exi{ttyout/nl-delay1} & \\
\cline{2-3} \cline{2-3}
{Vertical tab delay} & \exi{ttyout/vtab-delay} & Bit-field mask \\ {Vertical tab delay} & \exi{ttyout/vtab-delay} & Bit-field mask \\
& \exi{ttyout/vtab-delay0} & \\ & \exi{ttyout/vtab-delay0} & \\
& \exi{ttyout/vtab-delay1} & \\ & \exi{ttyout/vtab-delay1} & \\
\cline{2-3} \cline{2-3}
{All} & \exi{ttyout/all-delay} & Total bit-field mask \\ {All} & \exi{ttyout/all-delay} & Total bit-field mask \\
\cline{2-3} \cline{2-3}
\end{tabular} \end{tabular}
\caption{Delay constants. These are the named flags for the \caption{Delay constants. These are the named flags for the
\protect\ex{tty-info} record's \protect\var{output-flags} field. \protect\ex{tty-info} record's \protect\var{output-flags} field.
These flags control the output delays associated with printing These flags control the output delays associated with printing
special characters. special characters.
They are non-{\Posix}, and have non-{\sharpf} values They are non-{\Posix}, and have non-{\sharpf} values
only on SVR4 systems.} only on SVR4 systems.}
\label{table:ttydelays} \label{table:ttydelays}
\end{table} \end{table}
@ -670,33 +670,33 @@ Scsh & C & Meaning \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{\Posix} \\ \multicolumn{3}{|l|}{\Posix} \\
\exi{ttyc/char-size} & \ex{CSIZE} & Character size mask \\ \exi{ttyc/char-size} & \ex{CSIZE} & Character size mask \\
\exi{ttyc/char-size5} & \ex{CS5} & 5 bits \\ \exi{ttyc/char-size5} & \ex{CS5} & 5 bits \\
\exi{ttyc/char-size6} & \ex{CS6} & 6 bits \\ \exi{ttyc/char-size6} & \ex{CS6} & 6 bits \\
\exi{ttyc/char-size7} & \ex{CS7} & 7 bits \\ \exi{ttyc/char-size7} & \ex{CS7} & 7 bits \\
\exi{ttyc/char-size8} & \ex{CS8} & 8 bits \\ \exi{ttyc/char-size8} & \ex{CS8} & 8 bits \\
\exi{ttyc/enable-parity}& \ex{PARENB} & Generate and detect parity. \\ \exi{ttyc/enable-parity}& \ex{PARENB} & Generate and detect parity. \\
\exi{ttyc/odd-parity} & \ex{PARODD} & Odd parity. \\ \exi{ttyc/odd-parity} & \ex{PARODD} & Odd parity. \\
\exi{ttyc/enable-read} & \ex{CREAD} & Enable reception of chars. \\ \exi{ttyc/enable-read} & \ex{CREAD} & Enable reception of chars. \\
\exi{ttyc/hup-on-close} & \ex{HUPCL} & Hang up on last close. \\ \exi{ttyc/hup-on-close} & \ex{HUPCL} & Hang up on last close. \\
\exi{ttyc/no-modem-sync}& \ex{LOCAL} & Ignore modem lines. \\ \exi{ttyc/no-modem-sync}& \ex{LOCAL} & Ignore modem lines. \\
\exi{ttyc/2-stop-bits} & \ex{CSTOPB} & Send two stop bits. \\ \exi{ttyc/2-stop-bits} & \ex{CSTOPB} & Send two stop bits. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{4.3+BSD} \\ \multicolumn{3}{|l|}{4.3+BSD} \\
\exi{ttyc/ignore-flags} & \ex{CIGNORE} & Ignore control flags. \\ \exi{ttyc/ignore-flags} & \ex{CIGNORE} & Ignore control flags. \\
\exi{ttyc/CTS-output-flow-ctl} & \verb|CCTS_OFLOW| & CTS flow control of output \\ \exi{ttyc/CTS-output-flow-ctl} & \verb|CCTS_OFLOW| & CTS flow control of output \\
\exi{ttyc/RTS-input-flow-ctl} & \verb|CRTS_IFLOW| & RTS flow control of input \\ \exi{ttyc/RTS-input-flow-ctl} & \verb|CRTS_IFLOW| & RTS flow control of input \\
\exi{ttyc/carrier-flow-ctl} & \ex{MDMBUF} & \\ \exi{ttyc/carrier-flow-ctl} & \ex{MDMBUF} & \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Control-flags. These are the named flags for the \protect\ex{tty-info} \caption{Control-flags. These are the named flags for the \protect\ex{tty-info}
record's \protect\var{control-flags} field. record's \protect\var{control-flags} field.
These flags generally control the details of the terminal's These flags generally control the details of the terminal's
serial line. serial line.
Only the {\Posix} entries are guaranteed to be non-\sharpf.} Only the {\Posix} entries are guaranteed to be non-\sharpf.}
\label{table:ttyctl} \label{table:ttyctl}
\end{table} \end{table}
@ -709,43 +709,43 @@ Scsh & C & Meaning \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{\Posix} \\ \multicolumn{3}{|l|}{\Posix} \\
\exi{ttyl/canonical} & \ex{ICANON} & Canonical input processing. \\ \exi{ttyl/canonical} & \ex{ICANON} & Canonical input processing. \\
\exi{ttyl/echo} & \ex{ECHO} & Enable echoing. \\ \exi{ttyl/echo} & \ex{ECHO} & Enable echoing. \\
\exi{ttyl/echo-delete-line} & \ex{ECHOK} & Echo newline after line kill. \\ \exi{ttyl/echo-delete-line} & \ex{ECHOK} & Echo newline after line kill. \\
\exi{ttyl/echo-nl} & \ex{ECHONL} & Echo newline even if echo is off. \\ \exi{ttyl/echo-nl} & \ex{ECHONL} & Echo newline even if echo is off. \\
\exi{ttyl/visual-delete}& \ex{ECHOE} & Visually erase chars. \\ \exi{ttyl/visual-delete}& \ex{ECHOE} & Visually erase chars. \\
\exi{ttyl/enable-signals} & \ex{ISIG} & Enable \verb|^|C, \verb|^|Z signalling. \\ \exi{ttyl/enable-signals} & \ex{ISIG} & Enable \verb|^|C, \verb|^|Z signalling. \\
\exi{ttyl/extended} & \ex{IEXTEN} & Enable extensions. \\ \exi{ttyl/extended} & \ex{IEXTEN} & Enable extensions. \\
\exi{ttyl/no-flush-on-interrupt} \exi{ttyl/no-flush-on-interrupt}
& \ex{NOFLSH} & Don't flush after interrupt. \\ & \ex{NOFLSH} & Don't flush after interrupt. \\
\exi{ttyl/ttou-signal} & \ex{ITOSTOP} & \ex{SIGTTOU} on background output. \\ \exi{ttyl/ttou-signal} & \ex{ITOSTOP} & \ex{SIGTTOU} on background output. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{SVR4 and 4.3+BSD} \\ \multicolumn{3}{|l|}{SVR4 and 4.3+BSD} \\
\exi{ttyl/echo-ctl} & \ex{ECHOCTL} \exi{ttyl/echo-ctl} & \ex{ECHOCTL}
& Echo control chars as ``\verb|^X|''. \\ & Echo control chars as ``\verb|^X|''. \\
\exi{ttyl/flush-output} & \ex{FLUSHO} & Output is being flushed. \\ \exi{ttyl/flush-output} & \ex{FLUSHO} & Output is being flushed. \\
\exi{ttyl/hardcopy-delete} & \ex{ECHOPRT} & Visual erase for hardcopy. \\ \exi{ttyl/hardcopy-delete} & \ex{ECHOPRT} & Visual erase for hardcopy. \\
\exi{ttyl/reprint-unread-chars} & \ex{PENDIN} & Retype pending input. \\ \exi{ttyl/reprint-unread-chars} & \ex{PENDIN} & Retype pending input. \\
\exi{ttyl/visual-delete-line} & \ex{ECHOKE} & Visually erase a line-kill. \\ \exi{ttyl/visual-delete-line} & \ex{ECHOKE} & Visually erase a line-kill. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{4.3+BSD} \\ \multicolumn{3}{|l|}{4.3+BSD} \\
\exi{ttyl/alt-delete-word} & \ex{ALTWERASE} & Alternate word erase algorithm \\ \exi{ttyl/alt-delete-word} & \ex{ALTWERASE} & Alternate word erase algorithm \\
\exi{ttyl/no-kernel-status} & \ex{NOKERNINFO} & No kernel status on \verb|^T|. \\ \exi{ttyl/no-kernel-status} & \ex{NOKERNINFO} & No kernel status on \verb|^T|. \\
\hline\hline \hline\hline
\multicolumn{3}{|l|}{SVR4} \\ \multicolumn{3}{|l|}{SVR4} \\
\exi{ttyl/case-map} & \ex{XCASE} & Canonical case presentation \\ \exi{ttyl/case-map} & \ex{XCASE} & Canonical case presentation \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Local-flags. These are the named flags for the \protect\ex{tty-info} \caption{Local-flags. These are the named flags for the \protect\ex{tty-info}
record's \protect\var{local-flags} field. record's \protect\var{local-flags} field.
These flags generally control the details of the line-editting These flags generally control the details of the line-editting
user interface. user interface.
Only the {\Posix} entries are guaranteed to be non-\sharpf.} Only the {\Posix} entries are guaranteed to be non-\sharpf.}
\label{table:ttylocal} \label{table:ttylocal}
\end{table} \end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%