Consistently replace "i/o" -> "I/O".

This commit is contained in:
sperber 2002-11-28 12:10:40 +00:00
parent c8c5b65b30
commit c80a5b628c
1 changed files with 14 additions and 14 deletions

View File

@ -134,7 +134,7 @@ This can be overridden if the programmer wishes.
\subsection{Standard {\RnRS} I/O procedures} \subsection{Standard {\RnRS} I/O procedures}
In scsh, most standard {\RnRS} 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
accumulated in an associated port. accumulated in an associated port.
Note that character-at-a-time operations such as \ex{read-char} Note that character-at-a-time operations such as \ex{read-char}
@ -297,10 +297,10 @@ You may safely skim or completely skip this section on a first reading.
Dealing with {\Unix} file descriptors in a {\Scheme} environment is difficult. Dealing with {\Unix} file descriptors in a {\Scheme} environment is difficult.
In {\Unix}, open files are part of the process environment, and are referenced In {\Unix}, open files are part of the process environment, and are referenced
by small integers called \emph{file descriptors}. Open file descriptors are by small integers called \emph{file descriptors}. Open file descriptors are
the fundamental way i/o redirections are passed to subprocesses, since the fundamental way I/O redirections are passed to subprocesses, since
file descriptors are preserved across fork's and exec's. file descriptors are preserved across fork's and exec's.
{\Scheme}, on the other hand, uses ports for specifying i/o sources. Ports are {\Scheme}, on the other hand, uses ports for specifying I/O sources. Ports are
garbage-collected {\Scheme} objects, not integers. Ports can be garbage garbage-collected {\Scheme} objects, not integers. Ports can be garbage
collected; when a port is collected, it is also closed. Because file collected; when a port is collected, it is also closed. Because file
descriptors are just integers, it's impossible to garbage collect them---you descriptors are just integers, it's impossible to garbage collect them---you
@ -593,7 +593,7 @@ this is dependent on the OS implementation.
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. \RnRS/\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}.)
\end{defundesc} \end{defundesc}
@ -746,7 +746,7 @@ Returns two ports, the read and write end-points of a {\Unix} pipe.
(barring eof). (barring eof).
There is one case in which the forward-progress guarantee is cancelled: There is one case in which the forward-progress guarantee is cancelled:
when the programmer explicitly sets the port to non-blocking i/o. when the programmer explicitly sets the port to non-blocking I/O.
In this case, if no data is immediately available, In this case, if no data is immediately available,
the procedure will not block, but will immediately return a zero-byte read. the procedure will not block, but will immediately return a zero-byte read.
@ -764,7 +764,7 @@ Returns two ports, the read and write end-points of a {\Unix} pipe.
A request to read zero bytes returns immediatedly, with no eof check. A request to read zero bytes returns immediatedly, with no eof check.
In sum, there are only three ways you can get a zero-byte read: In sum, there are only three ways you can get a zero-byte read:
(1) you request one, (2) you turn on non-blocking i/o, or (3) you (1) you request one, (2) you turn on non-blocking I/O, or (3) you
try to read at eof. try to read at eof.
These are the routines to use for non-blocking input. These are the routines to use for non-blocking input.
@ -868,7 +868,7 @@ Returns two ports, the read and write end-points of a {\Unix} pipe.
(due to interrupts or partial writes), (due to interrupts or partial writes),
it will perform multiple write operations until all the data is written it will perform multiple write operations until all the data is written
or an error has occurred. or an error has occurred.
A non-blocking i/o error is considered an error. A non-blocking I/O error is considered an error.
(Error exception packets for this syscall include the amount of (Error exception packets for this syscall include the amount of
data partially transferred before the error occurred.) data partially transferred before the error occurred.)
@ -893,9 +893,9 @@ Returns two ports, the read and write end-points of a {\Unix} pipe.
asked for. asked for.
Partial writes can occur when (1) we write off the physical end of Partial writes can occur when (1) we write off the physical end of
the media, (2) the write is interrrupted, or (3) the file descriptor the media, (2) the write is interrrupted, or (3) the file descriptor
is set for non-blocking i/o. is set for non-blocking I/O.
If the file descriptor is not set up for non-blocking i/o, then If the file descriptor is not set up for non-blocking I/O, then
a successful return from these procedures makes a forward progress a successful return from these procedures makes a forward progress
guarantee---that is, a partial write took place of at least one byte: guarantee---that is, a partial write took place of at least one byte:
\begin{itemize} \begin{itemize}
@ -908,14 +908,14 @@ Returns two ports, the read and write end-points of a {\Unix} pipe.
\end{itemize} \end{itemize}
If we request a zero-byte write, then the call immediately returns 0. If we request a zero-byte write, then the call immediately returns 0.
If the file descriptor is set for non-blocking i/o, then the call If the file descriptor is set for non-blocking I/O, then the call
may return 0 if it was unable to immediately write anything may return 0 if it was unable to immediately write anything
(\eg, full pipe). (\eg, full pipe).
Barring these two cases, a write either returns $\var{nwritten} > 0$, Barring these two cases, a write either returns $\var{nwritten} > 0$,
or raises an error exception. or raises an error exception.
Non-blocking i/o is only available on file descriptors and unbuffered Non-blocking I/O is only available on file descriptors and unbuffered
ports. Doing non-blocking i/o to a buffered port is not well-defined, ports. Doing non-blocking I/O to a buffered port is not well-defined,
and is an error (the problem is the subsequent flush operation). and is an error (the problem is the subsequent flush operation).
\end{defundescx} \end{defundescx}
@ -1654,7 +1654,7 @@ delimiter.
that collisions are less likely to occur. This speeds things up, but does that collisions are less likely to occur. This speeds things up, but does
not affect correctness. not affect correctness.
Security note: doing i/o to files created this way in \ex{/var/tmp/} is Security note: doing I/O to files created this way in \ex{/var/tmp/} is
not necessarily secure. General users have write access to \ex{/var/tmp/}, not necessarily secure. General users have write access to \ex{/var/tmp/},
so even if an attacker cannot access the new temp file, he can delete it so even if an attacker cannot access the new temp file, he can delete it
and replace it with one of his own. A subsequent open of this filename and replace it with one of his own. A subsequent open of this filename
@ -1766,7 +1766,7 @@ delimiter.
simply see and report an end of file. This is bad. simply see and report an end of file. This is bad.
In order to ensure that an end-of-file returned to the reader is In order to ensure that an end-of-file returned to the reader is
legitimate, the reader and writer must serialise their i/o. The legitimate, the reader and writer must serialise their I/O. The
simplest way to do this is for the reader to delay doing input simplest way to do this is for the reader to delay doing input
until the writer has completely finished doing output, or exited. until the writer has completely finished doing output, or exited.
\end{itemize} \end{itemize}