chiark / gitweb /
Regenerated formatted documentation (spec.ps, spec.html). debian_version_0_64
authorian <ian>
Sun, 20 Jun 1999 17:46:12 +0000 (17:46 +0000)
committerian <ian>
Sun, 20 Jun 1999 17:46:12 +0000 (17:46 +0000)
debian/changelog
spec.html/ch-client.html
spec.html/ch-config.html
spec.html/ch-envir.html
spec.html/ch-intro.html
spec.html/ch-ipass.html
spec.html/ch-notes.html
spec.html/footnotes.html
spec.html/index.html
spec.ps

index 4277873a15cef6be35ca58d8cf64021e867bfa9c..c83253afd4a69ee4e92f39922f897e71dd1749de 100644 (file)
@@ -1,4 +1,4 @@
-userv (0.63) unstable; urgency=low
+userv (0.64) unstable; urgency=low
 
   * New "shutdown" builtin service for terminating uservd.
   * Spec. document shows subsections in TOC.
@@ -7,7 +7,9 @@ userv (0.63) unstable; urgency=low
     wrong environment variable settings).  (Thanks to Ben Harris.)
   * Makefile bug fixed (tokens.h would sometimes not be rebuilt).
 
- -- Ian Jackson <ian@chiark.greenend.org.uk>  Wed,  2 Jun 1999 20:58:07 +0100
+  * Regenerated formatted documentation (spec.ps, spec.html).
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Sun, 20 Jun 1999 18:45:54 +0100
 
 userv (0.62) unstable; urgency=low
 
index e8f0a096b6401d2c4b8d62d8840d064cdfb5da02..4c079dbd5c65819a40a4d9865a59f553dd6f43cc 100644 (file)
-<html><head>
-<title>User service daemon and client specification - Client program usage
-</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
+<title>User service daemon and client specification - Client program usage</title>
+
+</head>
+
+<body>
+
+<hr>
+
+[<a href="ch-intro.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-envir.html">next</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 2<br>
+User service daemon and client specification - Chapter 2<br>
 Client program usage
-
 </h1>
-<pre>userv <var>options</var> [--] <var>service-user</var> <var>service-name</var> [<var>argument</var> ...]
-userv <var>options</var> -B|--builtin [--] <var>builtin-service</var> [<var>info-argument</var> ...]</pre><P>
 
+<hr>
+
+<p>
+<pre>
+userv <var>options</var> [--] <var>service-user</var> <var>service-name</var> [<var>argument</var> ...]
+userv <var>options</var> -B|--builtin [--] <var>builtin-service</var> [<var>info-argument</var> ...]
+</pre>
+</p>
+
+<p>
 <var>service-user</var> specifies which user is to provide the service.
-The user may be a login name or a numeric uid, or <code>-</code> to indicate
-that the service user is to be the same as the calling user.<P>
+The user may be a login name or a numeric uid, or <samp>-</samp> to indicate
+that the service user is to be the same as the calling user.
+</p>
 
-The service name is interpreted by the userv<A href="footnotes.html#1" name="fr1">[1]</A>
+<p>
+The service name is interpreted by the userv<a href="footnotes.html#1" name="fr1">[1]</a>
 daemon on behalf of the service user.  It will often be the name of a
 program.
+</p>
+
 <hr>
-<h2><A name="s2.1">
-2.1 Options
-</A></h2>
 
+<h2>
+<a name="s2.1">2.1 Options</a>
+</h2>
+
+<p>
 Single-letter options may be combined as is usual with Unix programs,
 and the value for such an option may appear in the same argument or in
 the next.
 
 <dl>
-<dt><code>-B</code><dt><code>--builtin</code><dd>Requests that a builtin service be provided.  This is equivalent to
-using the <kbd>--override</kbd> option to specify a string consisting of
-<kbd>execute-builtin</kbd> followed by the <var>builtin-service</var>
-requested, and requesting a service user of <code>-</code> (indicating the
-calling user).<P>
+<p><dt><samp>-B</samp><p><dt><samp>--builtin</samp><dd>Requests that a builtin service be provided.  This is equivalent to
+using the <code>--override</code> option to specify a string consisting of
+<code>execute-builtin</code> followed by the <var>builtin-service</var>
+requested, and requesting a service user of <samp>-</samp> (indicating the
+calling user).
 
 If the builtin service being requested requires a
 <var>service-argument</var> then this must be supplied to the client in the
-same argument as the <var>builtin-service</var>.  See <A href="ch-config.html#s-dirs-execution">Directives for changing execution settings, subsection 4.2.4</A> for details of the builtin services available,
-and <A href="#s-optoverride">Security-overriding options, section 2.2</A> for details of the <kbd>--override</kbd>
-options.<P>
+same argument as the <var>builtin-service</var>.  See <a href="ch-config.html#s-dirs-execution">Directives for changing execution settings, subsection 4.2.4</a> for details of the builtin services available,
+and <a href="#s-optoverride">Security-overriding options, section 2.2</a> for details of the <code>--override</code>
+options.
 
 The actual service name passed will be the <var>builtin-service</var>; note
 that this actual service name (as opposed to the override data) and
 the <var>info-argument</var>s supplied will be ignored by most builtin
-services; the override mechanism and <kbd>execute-builtin</kbd> will be
+services; the override mechanism and <code>execute-builtin</code> will be
 used to ensure that the right builtin service is called with the right
 <var>service-argument</var>s.
-<p><dt><code>-f</code><var>fd</var><code>[</code><var>modifiers</var><code>]=</code><var>filename</var><code></code><dt><code>--file </code><var>fd</var><code>[</code><var>modifiers</var><code>]=</code><var>filename</var><code></code><dd>Requests that data be copied in and out of the service using pipes.
+
+<p><dt><samp>-f<var>fd</var>[<var>modifiers</var>]=<var>filename</var></samp><p><dt><samp>--file <var>fd</var>[<var>modifiers</var>]=<var>filename</var></samp><dd>Requests that data be copied in and out of the service using pipes.
 For each file or descriptor this will be done by creating a pipe, one
 end of which is passed to the service program and the other end of
-which is passed to a copy of <kbd>cat</kbd> invoked by the client; the
-other file descriptor passed to <kbd>cat</kbd> will be one inherited by
+which is passed to a copy of <code>cat</code> invoked by the client; the
+other file descriptor passed to <code>cat</code> will be one inherited by
 the client program from the caller or one opened by the client program
-on behalf of the caller.<P>
+on behalf of the caller.
 
 The descriptor in the service program that should be connected must be
 specified as <var>fd</var>, either as a decimal number or as one of the
-strings <code>stdin</code>, <code>stdout</code> or <code>stderr</code>.  The next argument is
+strings <samp>stdin</samp>, <samp>stdout</samp> or <samp>stderr</samp>.  The next argument is
 a filename which will be opened by the client with the privileges of
 the calling user.
-<P>
+
 <var>modifiers</var> is used to specify whether the file or descriptor is
 to be read from or written to.  It consists of a series of words
 separated by commas.  A comma may separate the <var>modifiers</var> from
 the <var>fd</var> and is required if <var>fd</var> is not numeric.
-<P>
+
+<p>
 The modifier words are:
 <dl compact>
-<dt><code>read</code><dd><code>O_RDONLY</code>: Allow reading and not writing.  May not be used with
-<code>write</code> or things that imply it.
-<dt><code>write</code><dd><code>O_WRONLY</code>: Allow writing and not reading.  <em>Doesn't truncate or
-create</em> without <code>truncate</code> or <code>create</code>.  <code>write</code> or things
-that imply it may not be used with <code>read</code>.
-<dt><code>overwrite</code><dd>Equivalent to <code>write,create,truncate</code>.
-<dt><code>create</code><dt><code>creat</code><dd><code>O_CREAT</code>: Creates the file if necessary.  Implies <code>write</code>.
-<dt><code>exclusive</code><dt><code>excl</code><dd><code>O_EXCL</code>: Fails if the file already exists.  Implies <code>write</code> and
-<code>create</code>.  May not be used with <code>truncate</code>.
-<dt><code>truncate</code><dt><code>trunc</code><dd><code>O_TRUNC</code>: Truncate any existing file.  Implies <code>write</code>.
-May not be used with <code>exclusive</code>.
-<dt><code>append</code><dd><code>O_APPEND</code>: All writes will append to the file.  Implies <code>write</code>
-(but not <code>create</code>).
-<dt><code>sync</code><dd><code>O_SYNC</code>: Do writes synchronously.  Implies <code>write</code>.
-<dt><code>wait</code><dt><code>nowait</code><dt><code>close</code><dd>These modifiers control the behaviour of the client, with respect to
+<dt><samp>read</samp><dd><samp>O_RDONLY</samp>: Allow reading and not writing.  May not be used with
+<samp>write</samp> or things that imply it.
+
+<dt><samp>write</samp><dd><samp>O_WRONLY</samp>: Allow writing and not reading.  <em>Doesn't truncate or
+create</em> without <samp>truncate</samp> or <samp>create</samp>.  <samp>write</samp> or things
+that imply it may not be used with <samp>read</samp>.
+
+<dt><samp>overwrite</samp><dd>Equivalent to <samp>write,create,truncate</samp>.
+
+<dt><samp>create</samp><dt><samp>creat</samp><dd><samp>O_CREAT</samp>: Creates the file if necessary.  Implies <samp>write</samp>.
+
+<dt><samp>exclusive</samp><dt><samp>excl</samp><dd><samp>O_EXCL</samp>: Fails if the file already exists.  Implies <samp>write</samp> and
+<samp>create</samp>.  May not be used with <samp>truncate</samp>.
+
+<dt><samp>truncate</samp><dt><samp>trunc</samp><dd><samp>O_TRUNC</samp>: Truncate any existing file.  Implies <samp>write</samp>.
+May not be used with <samp>exclusive</samp>.
+
+<dt><samp>append</samp><dd><samp>O_APPEND</samp>: All writes will append to the file.  Implies <samp>write</samp>
+(but not <samp>create</samp>).
+
+<dt><samp>sync</samp><dd><samp>O_SYNC</samp>: Do writes synchronously.  Implies <samp>write</samp>.
+
+<dt><samp>wait</samp><dt><samp>nowait</samp><dt><samp>close</samp><dd>These modifiers control the behaviour of the client, with respect to
 the pipes carrying data to and from the service, when the service
 terminates.  See below.
-<dt><code>fd</code><dd>The <var>filename</var> is not a filename but a numeric file descriptor.
-One or both of <code>read</code> and <code>write</code> must be specified, and no
-other words are allowed.  The <var>filename</var> may also be <code>stdin</code>,
-<code>stdout</code> or <code>stderr</code> for file descriptor 0, 1 or 2 respectively.
+
+<dt><samp>fd</samp><dd>The <var>filename</var> is not a filename but a numeric file descriptor.
+One or both of <samp>read</samp> and <samp>write</samp> must be specified, and no
+other words are allowed.  The <var>filename</var> may also be <samp>stdin</samp>,
+<samp>stdout</samp> or <samp>stderr</samp> for file descriptor 0, 1 or 2 respectively.
+
 </dl>
-<P>
+</p>
 
-If no <var>modifiers</var> which imply <code>read</code> or <code>write</code> are used it
-is as if <code>write</code> had been specified, except that if the
+<p>
+If no <var>modifiers</var> which imply <samp>read</samp> or <samp>write</samp> are used it
+is as if <samp>write</samp> had been specified, except that if the
 filedescriptor 0 of the service is being opened (either specified
-numerically or with <code>stdin</code>) it is as if <code>overwrite</code> had been
-specified (or <code>write</code> if only <code>fd</code> was specified).<P>
+numerically or with <samp>stdin</samp>) it is as if <samp>overwrite</samp> had been
+specified (or <samp>write</samp> if only <samp>fd</samp> was specified).
+</p>
 
-The client will also use <code>O_NOCTTY</code> when opening files specified by
-the caller, to avoid changing its controlling terminal.<P>
+<p>
+The client will also use <samp>O_NOCTTY</samp> when opening files specified by
+the caller, to avoid changing its controlling terminal.
+</p>
 
+<p>
 By default stdin, stdout and stderr of the service will be connected
 to the corresponding descriptors on the client.  Diagnostics from
-the client and daemon will also appear on stderr.<P>
+the client and daemon will also appear on stderr.
+</p>
 
-If <code>wait</code> is specified, the client will wait for the pipe to be
+<p>
+If <samp>wait</samp> is specified, the client will wait for the pipe to be
 closed, and only exit after this has happened.  This means that either
 the receiving end of the pipe connection was closed while data was
 still available at the sending end, or that the end of file was
@@ -112,102 +161,128 @@ reached on the reading file descriptor.  Errors encountered reading or
 writing in the client at this stage will be considered a system error
 and cause the client to exit with status 255, but will not cause
 disconnection at the service side since the service has already
-exited.<P>
+exited.
+</p>
 
-If <code>close</code> is specified the client will immediately close the pipe
-connection by killing the relevant copy of <kbd>cat</kbd>.  If the service
-uses the descriptor it will get <kbd>SIGPIPE</kbd> (or <kbd>EPIPE</kbd>) for a
+<p>
+If <samp>close</samp> is specified the client will immediately close the pipe
+connection by killing the relevant copy of <code>cat</code>.  If the service
+uses the descriptor it will get <code>SIGPIPE</code> (or <code>EPIPE</code>) for a
 writing descriptor or end of file for a reading one; the descriptor
-opened by or passed to the client will also be closed.<P>
+opened by or passed to the client will also be closed.
+</p>
 
-If <code>nowait</code> is specified then the client will not wait and the
+<p>
+If <samp>nowait</samp> is specified then the client will not wait and the
 connection will remain open after the client terminates.  Data may
 continue to be passed between the inheritors of the relevant
 descriptor on the service side and the corresponding file or
 descriptor on the client side until either side closes their
 descriptor.  This should not usually be specified for stderr (or
-stdout if <code>--signals stdout</code> is used) since diagnostics from
+stdout if <samp>--signals stdout</samp> is used) since diagnostics from
 the service side may arrive after the client has exited and be
-confused with expected output.<P>
+confused with expected output.
+</p>
 
-The default is <code>wait</code> for writing file descriptors and <code>close</code>
+<p>
+The default is <samp>wait</samp> for writing file descriptors and <samp>close</samp>
 for reading ones.
-<dt><code>-w</code><var>fd</var><code>=</code><var>action</var><code></code><dt><code>--fdwait</code><var>fd</var><code>=</code><var>action</var><code></code><dd>Sets the action on termination of the service for the specified file
-descriptor; <var>action</var> must be <code>wait</code>, <code>nowait</code> or <code>close</code>
+</p>
+
+<dt><samp>-w<var>fd</var>=<var>action</var></samp><dt><samp>--fdwait<var>fd</var>=<var>action</var></samp><dd>Sets the action on termination of the service for the specified file
+descriptor; <var>action</var> must be <samp>wait</samp>, <samp>nowait</samp> or <samp>close</samp>
 as described above.  The file descriptor must be specified as open
 when this option is encountered; this option is overridden by any
-later <kbd>--file</kbd> or <kbd>--fdwait</kbd> option - even by a
-<kbd>--file</kbd> which does not specify an action on termination (in this
+later <code>--file</code> or <code>--fdwait</code> option - even by a
+<code>--file</code> which does not specify an action on termination (in this
 case the default will be used, as described above).
-<dt><code>-D</code><var>name</var><code>=</code><var>value</var><code></code><dt><code>--defvar </code><var>name</var><code>=</code><var>value</var><code></code><dd>Set a user-defined variable <var>name</var> to <var>value</var>.  These
+
+<dt><samp>-D<var>name</var>=<var>value</var></samp><dt><samp>--defvar <var>name</var>=<var>value</var></samp><dd>Set a user-defined variable <var>name</var> to <var>value</var>.  These
 user-defined variables are made available in the configuration
-language as the parameters <code>u-</code><var>name</var><code></code> and are passed to the
-service in environment variables <code>USERV_U_</code><var>name</var><code></code>.  <var>name</var>
+language as the parameters <samp>u-<var>name</var></samp> and are passed to the
+service in environment variables <samp>USERV_U_<var>name</var></samp>.  <var>name</var>
 may contain only alphanumerics and underscores, and must start with a
 letter.  If several definitions are given for the same <var>name</var> then
 only the last is effective.
-<dt><code>-t </code><var>seconds</var><code></code><dt><code>--timeout </code><var>seconds</var><code></code><dd>Time out the service if it takes longer than <var>seconds</var> seconds (a
+
+<dt><samp>-t <var>seconds</var></samp><dt><samp>--timeout <var>seconds</var></samp><dd>Time out the service if it takes longer than <var>seconds</var> seconds (a
 positive integer, in decimal).  Timeout will produce a diagnostic on
 stderr and an exit status of 255.  If <var>seconds</var> is zero then no
 timeout will be implemented (this is the default).
-<dt><code>-S</code> <var>method</var><dt><code>--signals</code> <var>method</var><dd>Affects the handling of the exit status when the service terminates
+
+<dt><samp>-S</samp> <var>method</var><dt><samp>--signals</samp> <var>method</var><dd>Affects the handling of the exit status when the service terminates
 due to a signal.  (The client will always finish by calling
-<kbd>_exit</kbd>, so that only numbers from 0 to 255 can be returned and
+<code>_exit</code>, so that only numbers from 0 to 255 can be returned and
 not the full range of numbers and signal indications which can be
-returned by the <kbd>wait</kbd> family of system calls.)<P>
+returned by the <code>wait</code> family of system calls.)
 
+<p>
 The <var>method</var> may be one of the following:
 <dl compact>
 <dt><var>status</var><dd>The client's exit status will be <var>status</var>.  This will not be
 distinguishable from the service really having exited with code
 <var>status</var>.  This method is the default, with a <var>status</var> of 254.
-<dt><code>number</code><dt><code>number-nocore</code><dd>The client's exit status will be the number of the signal which caused
-the termination of the service.  If <code>number</code> is used rather than
-<code>number-nocore</code> then 128 will be added if the service dumped core.
-<code>number</code> is very like the exit code mangling done by the Bourne
+
+<dt><samp>number</samp><dt><samp>number-nocore</samp><dd>The client's exit status will be the number of the signal which caused
+the termination of the service.  If <samp>number</samp> is used rather than
+<samp>number-nocore</samp> then 128 will be added if the service dumped core.
+<samp>number</samp> is very like the exit code mangling done by the Bourne
 shell.
-<dt><code>highbit</code><dd>The client's exit status will be the number of the signal with
+
+<dt><samp>highbit</samp><dd>The client's exit status will be the number of the signal with
 128 added.  If the service exits normally with an exit code of greater
 than 127 then 127 will be returned.
-<dt><code>stdout</code><dd>The service's numeric wait status as two decimal numbers (high byte
+
+<dt><samp>stdout</samp><dd>The service's numeric wait status as two decimal numbers (high byte
 first) and a textual description of its meaning will be printed to the
 client's standard output.  It will be preceded by a newline and
 followed by an extra newline, and the numbers are separated from each
 other and from the textual description by single spaces.  The exit
 status of the client will be zero, unless a system error occurs in
 which case no exit status and description will be printed to stdout,
-and an error message will be printed to stderr as usual.</dl>
+and an error message will be printed to stderr as usual.
 
-<P>
+</dl>
+</p>
+
+<p>
 Problems such as client usage errors, the service not being found or
 permission being denied or failure of a system call are system errors.
 An error message describing the problem will be printed on the
 client's stderr, and the client's exit status will be 255.  If the
 client dies due to a signal this should be treated as a serious system
 error.
-<dt><code>-H</code><dt><code>--hidecwd</code><dd>Prevents the calling process's current directory name from being
+</p>
+
+<dt><samp>-H</samp><dt><samp>--hidecwd</samp><dd>Prevents the calling process's current directory name from being
 passed to the service; the null string will be passed instead.
-<dt><code>-P</code><dt><code>--sigpipe</code><dd>If the service program is terminated due to a <kbd>SIGPIPE</kbd> the exit
+
+<dt><samp>-P</samp><dt><samp>--sigpipe</samp><dd>If the service program is terminated due to a <code>SIGPIPE</code> the exit
 status of the client will be zero, even if it would have been
 something else according to the exit status method specified.  This
 option has no effect on the code and description printed if the exit
-status method <code>stdout</code> is in use.
-<dt><code>-h</code><dt><code>--help</code><dt><code>--copyright</code><dd><code>-h</code> or <code>--help</code> prints the client's usage message;
-<code>--copyright</code> prints the copyright and lack of warranty notice.
+status method <samp>stdout</samp> is in use.
+
+<dt><samp>-h</samp><dt><samp>--help</samp><dt><samp>--copyright</samp><dd><samp>-h</samp> or <samp>--help</samp> prints the client's usage message;
+<samp>--copyright</samp> prints the copyright and lack of warranty notice.
+
 </dl>
+</p>
 
 <hr>
-<h2><A name="s-optoverride">
-2.2 Security-overriding options
-</A></h2>
 
+<h2>
+<a name="s-optoverride">2.2 Security-overriding options</a>
+</h2>
+
+<p>
 There are also some options which are available for debugging and to
 allow the system administrator to override a user's policy.  These
 options are available only if the client is called by root or if the
 calling user is the same as the service user.
 
 <dl>
-<dt><code>--override </code><var>configuration-data</var><code></code><dt><code>--override-file </code><var>filename</var><code></code><dd>Do not read the usual configuration files.  Instead, the client sends
+<p><dt><samp>--override <var>configuration-data</var></samp><p><dt><samp>--override-file <var>filename</var></samp><dd>Do not read the usual configuration files.  Instead, the client sends
 <var>configuration-data</var> (followed by a newline) or the contents of
 <var>filename</var> (which is opened in the context of the client) to the
 daemon and the daemon uses that data instead.  The
@@ -215,22 +290,36 @@ daemon and the daemon uses that data instead.  The
 single newline appended so that a single directive can easily be
 given, but if more than one directive is required it will have to
 contain one or more real newlines.
-<p><dt><code>--spoof-user </code><var>user</var><code></code><dd>Pretend to the service that it is being called by <var>user</var> (which
+
+<p><dt><samp>--spoof-user <var>user</var></samp><dd>Pretend to the service that it is being called by <var>user</var> (which
 may be a username or a uid).  This will also affect the group and
 supplementary groups supplied to the service; they will be the
 standard group and supplementary groups for <var>user</var>.  The
-<code>--spoof-user</code> option will <em>not</em> affect which user is chosen if
-the service user is specified as just <code>-</code>; in this case the service
+<samp>--spoof-user</samp> option will <em>not</em> affect which user is chosen if
+the service user is specified as just <samp>-</samp>; in this case the service
 user will be the real calling user.
-<p></dl>
 
+</dl>
+</p>
 
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-envir.html">next</A>; <A href="ch-intro.html">back</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+[<a href="ch-intro.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-envir.html">next</a>]
+
+<hr>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 946de1004ac6e715d2ebbb2b0ea6ab5dcc90348b..7647ad16087ab5c5c1849ae1dd35460593b52e92 100644 (file)
@@ -1,40 +1,73 @@
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification - Service-side configuration</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+[<a href="ch-envir.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-ipass.html">next</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 4<br>
+User service daemon and client specification - Chapter 4<br>
 Service-side configuration
 </h1>
 
+<hr>
+
+<p>
 Which services may be run by whom and under what conditions is
-controlled by configuration files.<P>
+controlled by configuration files.
+</p>
 
+<p>
 The daemon will read these files in order.  Certain directives in the
 files modify the daemon's execution settings for invoking the service,
 for example allowing certain file descriptors to be specified by the
-client or specifying which program to execute to provide the service.<P>
+client or specifying which program to execute to provide the service.
+</p>
 
+<p>
 The <em>last</em> instance of each such setting will take effect.  The
 directives which specify which program to execute will not stop the
 configuration file from being read; they will be remembered and will
-only take effect if they are not overridden by a later directive.<P>
+only take effect if they are not overridden by a later directive.
+</p>
 
-The daemon will first read <code>/etc/userv/system.default</code>.  Then, by
+<p>
+The daemon will first read <samp>/etc/userv/system.default</samp>.  Then, by
 default (this behaviour may be modified), it will read a per-user file
-<code>~/.userv/rc</code>, if it exists and the service user's shell is in
-<code>/etc/shells</code>.  Finally it will read
-<code>/etc/userv/system.override</code>.<P>
+<samp>~/.userv/rc</samp>, if it exists and the service user's shell is in
+<samp>/etc/shells</samp>.  Finally it will read
+<samp>/etc/userv/system.override</samp>.
+</p>
 
+<p>
 When it has read all of these files it will act according to the
 currently values of of the execution settings.
+</p>
+
 <hr>
-<h2><A name="s4.1">
-4.1 Configuration file syntax
-</A></h2>
 
+<h2>
+<a name="s4.1">4.1 Configuration file syntax</a>
+</h2>
+
+<p>
 The configuration file is a series of directives, usually one per
-line.  The portion of a line following a hash character <code>#</code> is
+line.  The portion of a line following a hash character <samp>#</samp> is
 taken as a comment and ignored.  Each directive consists of a series
 of tokens separated by linear whitespace (spaces and tabs); tokens may
 be words consisting of non-space characters, or, where a string is
@@ -42,77 +75,104 @@ required, a string in double quotes.  Double-quoted strings may
 contain the following backslash escapes:
 
 <dl compact>
-<dt><code>\n</code><dd>newline<dt><code>\t</code><dd>tab<dt><code>\r</code><dd>carriage return<dt><code>\</code><var>OOO</var><code></code><dd>character whose octal code is <var>OOO</var><dt><code>\x</code><var>XX</var><code></code><dd>character whose hex code is <var>XX</var><dt><code>\</code><var>punctuation</var><code></code><dd>literal punctuation character (eg <code>\\</code>, <code>\&quot;</code>)<dt><code>\</code><var>newline</var><code></code> (ie, backslash at end of line)<dd>string continues on next line</dl>
-<P>
+<dt><samp>\n</samp><dd>newline
+
+<dt><samp>\t</samp><dd>tab
+
+<dt><samp>\r</samp><dd>carriage return
+
+<dt><samp>\<var>OOO</var></samp><dd>character whose octal code is <var>OOO</var>
 
+<dt><samp>\x<var>XX</var></samp><dd>character whose hex code is <var>XX</var>
+
+<dt><samp>\<var>punctuation</var></samp><dd>literal punctuation character (eg <samp>\\</samp>, <samp>\&quot;</samp>)
+
+<dt><samp>\<var>newline</var></samp> (ie, backslash at end of line)<dd>string continues on next line
+
+</dl>
+</p>
+
+<p>
 Relative pathnames in directives are relative to the service program's
 current directory (usually the service user's home directory).
-Pathnames starting with the two characters <code>~/</code> are taken to be
+Pathnames starting with the two characters <samp>~/</samp> are taken to be
 relative to the service user's home directory.
+</p>
+
 <hr>
-<h2><A name="s-directives">
-4.2 Configuration file directives
-</A></h2>
+
+<h2>
+<a name="s-directives">4.2 Configuration file directives</a>
+</h2>
+
 <hr>
-<h3><A name="s-dirs-immediate">
-4.2.1 Immediate directives
-</A></h3>
 
+<h3>
+<a name="s-dirs-immediate">4.2.1 Immediate directives</a>
+</h3>
+
+<p>
 The following directives take effect immediately:
 
 <dl>
-<dt><code>cd </code><var>pathname</var><code></code><dd>Change directory in the service program.  <kbd>cd</kbd> is cumulative.  It
-is an error if the directory cannot be changed to.<P>
+<p><dt><samp>cd <var>pathname</var></samp><dd>Change directory in the service program.  <code>cd</code> is cumulative.  It
+is an error if the directory cannot be changed to.
 
-<kbd>cd</kbd> should not be used between <kbd>execute-from-directory</kbd> and
+<code>cd</code> should not be used between <code>execute-from-directory</code> and
 the invocation of the service program, as the test for the
 availability of the service program would be done with the old current
 directory and the actual execution with the new (probably causing an
 error).
-<p><dt><code>eof</code><dd>Stop reading the configuration file in question, as if end of file had
-been reached.  Any control constructs (<kbd>if</kbd>, <kbd>catch-quit</kbd> or
-<kbd>errors-push</kbd>) which were started in that file will be considered
+
+<p><dt><samp>eof</samp><dd>Stop reading the configuration file in question, as if end of file had
+been reached.  Any control constructs (<code>if</code>, <code>catch-quit</code> or
+<code>errors-push</code>) which were started in that file will be considered
 finished.  Parsing will continue in the file which caused the file
-containing the <kbd>eof</kbd> to be read.
-<p><dt><code>quit</code><dd>Stop reading configuration files and act immediately on the current
-settings.  The behaviour of <kbd>quit</kbd> is subject to the
-<kbd>catch-quit</kbd> control construct.
-<p><dt><code>include </code><var>filename</var><code></code><dt><code>include-ifexist </code><var>filename</var><code></code><dd>Read the configuration file <var>filename</var>, and then return to this
+containing the <code>eof</code> to be read.
+
+<p><dt><samp>quit</samp><dd>Stop reading configuration files and act immediately on the current
+settings.  The behaviour of <code>quit</code> is subject to the
+<code>catch-quit</code> control construct.
+
+<p><dt><samp>include <var>filename</var></samp><p><dt><samp>include-ifexist <var>filename</var></samp><dd>Read the configuration file <var>filename</var>, and then return to this
 file and continue parsing it with the next directive.  It is an error
-if the file cannot be opened and read, unless <kbd>include-ifexist</kbd>
+if the file cannot be opened and read, unless <code>include-ifexist</code>
 is used and the file does not exist, in which case the directive is
 silently ignored.
-<p><dt><code>include-lookup </code><var>parameter</var><code> </code><var>directory</var><code></code><dt><code>include-lookup-all </code><var>parameter</var><code> </code><var>directory</var><code></code><dd>Read the configuration file in <var>directory</var> whose name is the value
-of <var>parameter</var> (see the description of <kbd>if</kbd>, <A href="#s-dirs-control">Control structure directives, subsection 4.2.3</A>).  If <var>parameter</var> has several values they will
-be tried in order; with <kbd>include-lookup</kbd> this search will stop
-when one is found, but with <kbd>include-lookup-all</kbd> the search will
-continue and any files appropriate to other values will be read too.<P>
+
+<p><dt><samp>include-lookup <var>parameter</var> <var>directory</var></samp><p><dt><samp>include-lookup-all <var>parameter</var> <var>directory</var></samp><dd>Read the configuration file in <var>directory</var> whose name is the value
+of <var>parameter</var> (see the description of <code>if</code>, <a href="#s-dirs-control">Control structure directives, subsection 4.2.3</a>).  If <var>parameter</var> has several values they will
+be tried in order; with <code>include-lookup</code> this search will stop
+when one is found, but with <code>include-lookup-all</code> the search will
+continue and any files appropriate to other values will be read too.
 
 If none of the parameter's values had a corresponding file then the
-file <code>:default</code> will be read, if it exists.  If <var>parameter</var>'s
-list of values was empty then the file <code>:none</code> will be tried first
-and read if it exists, otherwise <code>:default</code> will be tried.<P>
+file <samp>:default</samp> will be read, if it exists.  If <var>parameter</var>'s
+list of values was empty then the file <samp>:none</samp> will be tried first
+and read if it exists, otherwise <samp>:default</samp> will be tried.
 
-It is not an error for any of the files (including <code>:default</code>) not
+It is not an error for any of the files (including <samp>:default</samp>) not
 to exist, but it is an error if a file exists and cannot be read or if
 the directory cannot be accessed.
-<P>
+
 A translation will be applied to values before they are used to
 construct a filename, so that the lookup cannot access dotfiles or
 files in other directories: values starting with full stops will have
-a colon prepended (making <code>:.</code>), colons will be doubled, and each
-slash will be replaced with a colon followed by a hyphen <code>:-</code>.  A
+a colon prepended (making <samp>:.</samp>), colons will be doubled, and each
+slash will be replaced with a colon followed by a hyphen <samp>:-</samp>.  A
 parameter value which is the empty string will be replaced with
-<code>:empty</code> (note that this is different from a parameter not having
+<samp>:empty</samp> (note that this is different from a parameter not having
 any values).
-<p><dt><code>include-directory </code><var>directory</var><code></code><dd>Read configuration from all files in directory <var>directory</var> which
+
+<p><dt><samp>include-directory <var>directory</var></samp><dd>Read configuration from all files in directory <var>directory</var> which
 are plain files whose names consist only of alphanumerics and hyphens
 and start with an alphanumeric.  They will be read in lexical order.
 It is an error for the directory not to exist or for it or any of the
 files found not to be read successfully, or for anything with an
 appropriate name not to be a plain file or a symbolic link to a plain
 file.
-<p><dt><code>error </code><var>text ...</var><code></code><dd>Causes an error whose message includes the descriptive string
+
+<p><dt><samp>error <var>text ...</var></samp><dd>Causes an error whose message includes the descriptive string
 <var>text</var>.  <var>text</var> may consist of several tokens with intervening
 whitespace.  The whitespace will be included in the message as found
 in the configuration file: all the characters until the end of the
@@ -121,159 +181,203 @@ double-quoted string, in which case the usual meaning of the string
 (i.e., after backslash escape processing) will be used.  Comments and
 linear whitespace at the end of the line (or just before the comment)
 will still be ignored.
-<p><dt><code>message </code><var>text ...</var><code></code><dd>Causes a message including the descriptive string <var>text</var> to be
+
+<p><dt><samp>message <var>text ...</var></samp><dd>Causes a message including the descriptive string <var>text</var> to be
 delivered as if it were an error message, but does not actually cause
-an error.<p></dl>
+an error.
+
+</dl>
+</p>
 
 <hr>
-<h3><A name="s-dirs-delayed">
-4.2.2 Directives with delayed effect
-</A></h3>
 
+<h3>
+<a name="s-dirs-delayed">4.2.2 Directives with delayed effect</a>
+</h3>
+
+<p>
 The following directives have no immediate effect, but are remembered
 and have an effect on later processing of the configuration files.
 
 <dl>
-<dt><code>user-rcfile </code><var>filename</var><code></code><dd>Specifies that the file <var>filename</var> should be read instead of the
-user's <code>~/.userv/rc</code>.  This does <em>not</em> happen immediately;
+<p><dt><samp>user-rcfile <var>filename</var></samp><dd>Specifies that the file <var>filename</var> should be read instead of the
+user's <samp>~/.userv/rc</samp>.  This does <em>not</em> happen immediately;
 instead, the setting is remembered and used after the
-<kbd>system.default</kbd> configuration file has been read.  This
+<code>system.default</code> configuration file has been read.  This
 directive has no effect in a user's configuration file or in the
-<kbd>system.override</kbd> file, as the user's configuration file has
+<code>system.override</code> file, as the user's configuration file has
 already been found and read by then and will not be re-read.
-<p><dt><code>errors-to-stderr</code><dd>Causes error messages to be delivered to the client's stderr.
-<p><dt><code>errors-to-file</code> <var>filename</var><dd>Error messages will be written to <var>filename</var>, which will be opened
+
+<p><dt><samp>errors-to-stderr</samp><dd>Causes error messages to be delivered to the client's stderr.
+
+<p><dt><samp>errors-to-file</samp> <var>filename</var><dd>Error messages will be written to <var>filename</var>, which will be opened
 in the context of and with the privileges of the service user.
-<p><dt><code>errors-to-syslog</code> [<var>facility</var> [<var>level</var>]]<dd>Error messages will be delivered using <kbd>syslog</kbd>.  The default
-<var>facility</var> is <code>user</code>; the default <var>level</var> is <code>error</code>.<p></dl>
+
+<p><dt><samp>errors-to-syslog</samp> [<var>facility</var> [<var>level</var>]]<dd>Error messages will be delivered using <code>syslog</code>.  The default
+<var>facility</var> is <samp>user</samp>; the default <var>level</var> is <samp>error</samp>.
+
+</dl>
+</p>
 
 <hr>
-<h3><A name="s-dirs-control">
-4.2.3 Control structure directives
-</A></h3>
 
+<h3>
+<a name="s-dirs-control">4.2.3 Control structure directives</a>
+</h3>
+
+<p>
 The following directives are used to create control structures.  If
 the end of the file is encountered before the end of any control
 structure which was started inside it then that control structure is
 considered finished.  This is not an error.
 
 <dl>
-<dt><code>if </code><var>condition</var><code></code><dt><code>elif </code><var>condition</var><code></code><dt><code>else</code><dt><code>fi</code><dd>Lines following <kbd>if</kbd> are interpreted only if the condition is
+<p><dt><samp>if <var>condition</var></samp><p><dt><samp>elif <var>condition</var></samp><p><dt><samp>else</samp><p><dt><samp>fi</samp><dd>Lines following <code>if</code> are interpreted only if the condition is
 true.  Many conditions are properties of parameter values.  Most
 parameters have a single string as a value; however, some may yield
 zero or several strings, in which case the condition is true if it is
 true of any of the strings individually.  Parameters are described
-below.<P>
+below.
 
+<p>
 The conditions are:
 
 <dl compact>
-<dt><code>glob </code><var>parameter</var><code> </code><var>glob-pattern</var><code> ...</code><dd>The value of the parameter whose name is given matches one of the glob
+<dt><samp>glob <var>parameter</var> <var>glob-pattern</var> ...</samp><dd>The value of the parameter whose name is given matches one of the glob
 patterns (anchored at both ends; backslashes can be used to escape
 metacharacters).
-<dt><code>range </code><var>parameter</var><code> </code><var>min</var><code> </code><var>max</var><code></code><dd>The value of the parameter is a nonnegative integer and lies within
-the range specified.  <var>min</var> or <var>max</var> may be <code>$</code> to indicate
+
+<dt><samp>range <var>parameter</var> <var>min</var> <var>max</var></samp><dd>The value of the parameter is a nonnegative integer and lies within
+the range specified.  <var>min</var> or <var>max</var> may be <samp>$</samp> to indicate
 no lower or upper limit, respectively.
-<dt><code>grep </code><var>parameter</var><code> </code><var>filename</var><code></code><dd>The <var>filename</var> refers to a file one of whose lines is the value of
+
+<dt><samp>grep <var>parameter</var> <var>filename</var></samp><dd>The <var>filename</var> refers to a file one of whose lines is the value of
 the parameter (leading or trailing whitespace on each line and empty
 lines in the file are ignored).  It is an error for the file not to be
 opened and read.
-<dt><code>! </code><var>condition</var><code></code><dd>The <var>condition</var> is <em>not</em> true.
-<dt>Conjunctions: <code>&amp;</code> and <code>|</code><dd><pre>( <var>condition</var>
+
+<dt><samp>! <var>condition</var></samp><dd>The <var>condition</var> is <em>not</em> true.
+
+<dt>Conjunctions: <samp>&amp;</samp> and <samp>|</samp><dd><pre>
+( <var>condition</var>
 &amp; <var>condition</var>
 &amp; <var>condition</var>
 ...
-)</pre>
-is true if all the listed conditions are true; where <code>|</code> is used it
+)
+</pre>
+
+is true if all the listed conditions are true; where <samp>|</samp> is used it
 is true if any of them is true.  Newlines must be used to separate one
 condition from the next, as shown, and the parentheses are mandatory.
-These conjunctions do not do lazy evaluation.</dl>
-<P>
+These conjunctions do not do lazy evaluation.
+
+</dl>
+</p>
 
+<p>
 The parameters are:
 
 <dl compact>
-<dt><code>service</code><dd>The service name specified when the client was called.
-<dt><code>calling-user</code><dd>Two strings: the login name of the calling user (determined as for
-<kbd>USERV_USER</kbd>, above) and the calling uid (represented in
+<dt><samp>service</samp><dd>The service name specified when the client was called.
+
+<dt><samp>calling-user</samp><dd>Two strings: the login name of the calling user (determined as for
+<code>USERV_USER</code>, above) and the calling uid (represented in
 decimal).
-<dt><code>calling-group</code><dd>Several strings: the primary and supplementary group names and gids
+
+<dt><samp>calling-group</samp><dd>Several strings: the primary and supplementary group names and gids
 (in decimal) of the calling process.  All the group names come first,
 and then the gids.  If the first supplementary group is the same as
 the primary group then it is elided.
-<dt><code>calling-user-shell</code><dd>The calling user's shell, as listed in the password entry for the
-calling login name (as determined for <kbd>USERV_USER</kbd>, above).
-<dt><code>service-user</code><dd>Two strings: the name of the service user (as specified to the client)
+
+<dt><samp>calling-user-shell</samp><dd>The calling user's shell, as listed in the password entry for the
+calling login name (as determined for <code>USERV_USER</code>, above).
+
+<dt><samp>service-user</samp><dd>Two strings: the name of the service user (as specified to the client)
 and their uid (represented in decimal).
-<dt><code>service-group</code><dd>Several strings: the primary and supplementary group names and gids
+
+<dt><samp>service-group</samp><dd>Several strings: the primary and supplementary group names and gids
 (in decimal) of the service user.
-<dt><code>service-user-shell</code><dd>The service user's shell, as listed in their password entry.
-<dt><code>u-</code><var>name</var><code></code><dd>The value of the user-defined variable <var>name</var> passed by the caller
-using the <kbd>--defvar</kbd> command-line option to the client.  If the
+
+<dt><samp>service-user-shell</samp><dd>The service user's shell, as listed in their password entry.
+
+<dt><samp>u-<var>name</var></samp><dd>The value of the user-defined variable <var>name</var> passed by the caller
+using the <code>--defvar</code> command-line option to the client.  If the
 variable was not defined then this parameter is an empty list of
 strings; in this case any condition which tests it will be false, and
-<code>include-lookup</code> on it will read the <code>:none</code> file, or
-<code>:default</code> if <code>:none</code> is not found.
+<samp>include-lookup</samp> on it will read the <samp>:none</samp> file, or
+<samp>:default</samp> if <samp>:none</samp> is not found.
+
 </dl>
+</p>
+
+<dt><samp>errors-push</samp> <var>filename</var><dt><samp>srorre</samp><dd>Stacks the error handling behaviour currently in effect.  Any changes
+to error handling will take effect only between <code>errors-push</code> and
+<code>srorre</code>.
 
-<dt><code>errors-push</code> <var>filename</var><dt><code>srorre</code><dd>Stacks the error handling behaviour currently in effect.  Any changes
-to error handling will take effect only between <kbd>errors-push</kbd> and
-<kbd>srorre</kbd>.
-<dt><code>catch-quit</code><dt><code>hctac</code><dd>Any use of <kbd>quit</kbd> inside <kbd>catch-quit</kbd> will merely cause the
-parsing to continue at <kbd>hctac</kbd> instead.  Any control constructs
-started since the <kbd>catch-quit</kbd> will be considered finished if a
-<kbd>quit</kbd> is found.<P>
+<dt><samp>catch-quit</samp><dt><samp>hctac</samp><dd>Any use of <code>quit</code> inside <code>catch-quit</code> will merely cause the
+parsing to continue at <code>hctac</code> instead.  Any control constructs
+started since the <code>catch-quit</code> will be considered finished if a
+<code>quit</code> is found.
 
-If an error occurs inside <kbd>catch-quit</kbd> the execution settings
-will be reset (as if by the <kbd>reset</kbd> directive) and parsing will
-likewise continue at <kbd>hctac</kbd>.<P>
+If an error occurs inside <code>catch-quit</code> the execution settings
+will be reset (as if by the <code>reset</code> directive) and parsing will
+likewise continue at <code>hctac</code>.
 
 If a lexical or syntax error is detected in the same configuration
-file as the <kbd>catch-quit</kbd>, while looking for the <kbd>hctac</kbd>
-after an error or <kbd>quit</kbd>, that new error will not be caught.
+file as the <code>catch-quit</code>, while looking for the <code>hctac</code>
+after an error or <code>quit</code>, that new error will not be caught.
+
 </dl>
+</p>
 
 <hr>
-<h3><A name="s-dirs-execution">
-4.2.4 Directives for changing execution settings
-</A></h3>
 
+<h3>
+<a name="s-dirs-execution">4.2.4 Directives for changing execution settings</a>
+</h3>
+
+<p>
 The following directives modify the execution settings; the server
 will remember the fact that the directive was encountered and act on
 it only after all the configuration has been parsed.  The <em>last</em>
 directive which modifies any particuar setting will take effect.
 
 <dl>
-<dt><code>reject</code><dd>Reject the request.  <kbd>execute</kbd>, <kbd>execute-from-directory</kbd> and
-<kbd>execute-from-path</kbd> will change this setting.
-<p><dt><code>execute </code><var>program</var><code> [</code><var>argument</var><code> ...]</code><dd>Execute the program <var>program</var>, with the arguments as specified,
+<p><dt><samp>reject</samp><dd>Reject the request.  <code>execute</code>, <code>execute-from-directory</code> and
+<code>execute-from-path</code> will change this setting.
+
+<p><dt><samp>execute <var>program</var> [<var>argument</var> ...]</samp><dd>Execute the program <var>program</var>, with the arguments as specified,
 followed by any arguments given to the client if
-<kbd>no-suppress-args</kbd> is in effect.  It is an error for the
+<code>no-suppress-args</code> is in effect.  It is an error for the
 execution to fail when it is attempted (after all the configuration
 has been parsed).  If <var>program</var> does not contain a slash it will
 be searched for on the service user's path.
-<p><dt><code>execute-from-directory </code><var>pathname</var><code> [</code><var>argument</var><code> ...]</code><dd>Take all the characters after the last slash of the service name
+
+<p><dt><samp>execute-from-directory <var>pathname</var> [<var>argument</var> ...]</samp><dd>Take all the characters after the last slash of the service name
 specified when the client was called, and execute that program in the
 directory named by <var>pathname</var> as if it had been specified for
 <var>execute</var>.  The part of the service name used may contain only
 alphanumerics and hyphens and must start with an alphanumeric (and it
-must be non-empty), otherwise it is an error.<P>
+must be non-empty), otherwise it is an error.
 
 This directive is ignored if the relevant program does not exist in
 the directory specified; in this case the program to execute is left
-at its previous setting (or unset, if it was not set before).<P>
+at its previous setting (or unset, if it was not set before).
 
 It is an error for the test for the existence of the program to fail
 other than with a `no such file or directory' indication.  It is also
 an error for the execution to fail if and when it is attempted (after
 all the configuration has been parsed).
-<p><dt><code>execute-from-path</code><dd><var>service</var> is interpreted as a program on the default <kbd>PATH</kbd>
-(or as a pathname of an executable, if it contains a <code>/</code>).  This
+
+<p><dt><samp>execute-from-path</samp><dd><var>service</var> is interpreted as a program on the default <code>PATH</code>
+(or as a pathname of an executable, if it contains a <samp>/</samp>).  This
 directive is <em>very dangerous</em>, and is only provided to make the
-<kbd>--override</kbd> options effective.  It should not normally be used.
+<code>--override</code> options effective.  It should not normally be used.
 It is an error for the execution to fail when it is attempted (after
 all the configuration has been parsed).
-<p><dt><code>execute-builtin </code><var>service-name</var><code> </code><var>service-arguments</var><code></code><dd>Executes the builtin service <var>service-name</var>.  These builtin
+
+<p><dt><samp>execute-builtin <var>service-name</var> <var>service-arguments</var></samp><dd><p>
+Executes the builtin service <var>service-name</var>.  These builtin
 services display information about the server and/or the request, and
 ignore any arguments passed from the service side except possibly to
 print them as part of their output.  They write their results to their
@@ -281,129 +385,166 @@ standard output (i.e., wherever file descriptor 1 is directed).  The
 builtin services are:
 
 <dl compact>
-<dt><code>execute</code><dd>Displays the execution settings, defined variables,
+<dt><samp>execute</samp><dd>Displays the execution settings, defined variables,
 arguments, etc. with which the builtin service was invoked.
-<dt><code>environment</code><dd>Displays the environment variable settings with which the builtin
+
+<dt><samp>environment</samp><dd>Displays the environment variable settings with which the builtin
 service was invoked.
-<dt><code>parameter </code><var>parameter</var><code></code><dd>Displays the values of the service configuration language parameter
+
+<dt><samp>parameter <var>parameter</var></samp><dd>Displays the values of the service configuration language parameter
 specified.
-<dt><code>version</code><dd>Displays the version string and compilation details of the uservd
+
+<dt><samp>version</samp><dd>Displays the version string and compilation details of the uservd
 server program.
-<dt><code>reset</code><dd>Displays the default reset configuration (evaluated when <kbd>reset</kbd>
+
+<dt><samp>reset</samp><dd>Displays the default reset configuration (evaluated when <code>reset</code>
 is found in a configuration file, or when an error is caught by
-<kbd>catch-quit</kbd>).
-<dt><code>toplevel</code><dd>Displays the top-level default configuration (the configuration data,
+<code>catch-quit</code>).
+
+<dt><samp>toplevel</samp><dd>Displays the top-level default configuration (the configuration data,
 evaluated by the server, which calls all the other configuration
 files).
-<dt><code>override</code><dd>Displays the top-level override configuration (the configuration data,
+
+<dt><samp>override</samp><dd>Displays the top-level override configuration (the configuration data,
 evaluated by the server, which causes all the other configuration data
 to be parsed).
-<dt><code>help</code><dd>Displays a list of the understood builtin service names and arguments.</dl>
 
+<dt><samp>help</samp><dd>Displays a list of the understood builtin service names and arguments.
 
-In the future other builtin services may be defined which do more than
-just print information.
-<dt><code>set-environment</code><dt><code>no-set-environment</code><dd>Runs <code>/etc/environment</code> to set the service user's environment.
+<dt><samp>shutdown</samp><dd>Arranges for the <code>uservd</code> to shut down.  Available only when the
+service user is root.  This only affects new requests; it doesn't
+terminate any currently-running requests
+
+</dl>
+</p>
+
+<dt><samp>set-environment</samp><dt><samp>no-set-environment</samp><dd>Runs <samp>/etc/environment</samp> to set the service user's environment.
 This adds the overhead of invoking a shell, but doesn't cause any
 shell (de)mangling of the service's arguments.  This is achieved by
 invoking
-<pre>.../program arg arg arg ...</pre>
+<pre>
+.../program arg arg arg ...
+</pre>
+
 as
-<pre>/bin/sh -c '. /etc/environment; exec &quot;$@&quot;' - .../program arg arg arg ...</pre>
-<kbd>no-set-environment</kbd> cancels the effect of
-<kbd>set-environment</kbd>.
-<dt><code>no-suppress-args</code><dt><code>suppress-args</code><dd>Include any arguments given to the client as arguments to the program
-invoked as a result of an <kbd>execute</kbd>,
-<kbd>execute-from-directory</kbd> or <kbd>execute-from-path</kbd> directive.
-<kbd>suppress-args</kbd> undoes the effect of <kbd>no-suppress-args</kbd>.
-<dt><code>require-fd </code><var>fd-range</var><code> read|write</code><dd>Insist that the filedescriptor(s) be opened for reading resp. writing.
+<pre>
+/bin/sh -c '. /etc/environment; exec &quot;$@&quot;' - .../program arg arg arg ...
+</pre>
+
+<code>no-set-environment</code> cancels the effect of
+<code>set-environment</code>.
+
+<dt><samp>no-suppress-args</samp><dt><samp>suppress-args</samp><dd>Include any arguments given to the client as arguments to the program
+invoked as a result of an <code>execute</code>,
+<code>execute-from-directory</code> or <code>execute-from-path</code> directive.
+<code>suppress-args</code> undoes the effect of <code>no-suppress-args</code>.
+
+<dt><samp>require-fd <var>fd-range</var> read|write</samp><dd>Insist that the filedescriptor(s) be opened for reading resp. writing.
 It is an error if any descriptor marked as required when the service
 is about to be invoked (after the configuration has been parsed) was
 not specified when the client was invoked.  Each file descriptor has a
-separate setting, and the last one of <kbd>require-fd</kbd>,
-<kbd>allow-fd</kbd>, <kbd>ignore-fd</kbd>, <kbd>null-fd</kbd> or <kbd>reject-fd</kbd>
-which affected a particular file descriptor will take effect.<P>
+separate setting, and the last one of <code>require-fd</code>,
+<code>allow-fd</code>, <code>ignore-fd</code>, <code>null-fd</code> or <code>reject-fd</code>
+which affected a particular file descriptor will take effect.
 
 <var>fd-range</var> may be a single number, two numbers separated by a
 hyphen, or one number followed by a hyphen (indicating all descriptors
 from that number onwards).  It may also be one of the words
-<code>stdin</code>, <code>stdout</code> or <code>stderr</code>.  Open-ended file descriptor
-rangers are allowed only with <kbd>reject-fd</kbd> and <kbd>ignore-fd</kbd>,
+<samp>stdin</samp>, <samp>stdout</samp> or <samp>stderr</samp>.  Open-ended file descriptor
+rangers are allowed only with <code>reject-fd</code> and <code>ignore-fd</code>,
 as otherwise the service program would find itself with a very large
-number of file descriptors open.<P>
+number of file descriptors open.
 
 When the configuration has been parsed, and before the service is
 about to be executed, stderr (fd 2) must be required or allowed
-(<kbd>require-fd</kbd> or <kbd>allow-fd</kbd>) for writing; this is so that
+(<code>require-fd</code> or <code>allow-fd</code>) for writing; this is so that
 the error message printed by the server's child process if it cannot
-<kbd>exec</kbd> the service program is not lost.
-<dt><code>allow-fd </code><var>fd-range</var><code> [read|write]</code><dd>Allow the descriptor(s) to be opened for reading resp. writing, or
-either if neither <code>read</code> nor <code>write</code> is specified.  If a
+<code>exec</code> the service program is not lost.
+
+<dt><samp>allow-fd <var>fd-range</var> [read|write]</samp><dd>Allow the descriptor(s) to be opened for reading resp. writing, or
+either if neither <samp>read</samp> nor <samp>write</samp> is specified.  If a
 particular descriptor not specified by the client then it will be open
-onto <code>/dev/null</code> (for reading, writing, or both, depending on
-whether <code>read</code>, <code>write</code> or neither was specified).
-<dt><code>null-fd </code><var>fd-range</var><code> [read|write]</code><dd>Specify that the descriptor(s) be opened onto <kbd>/dev/null</kbd> for
-reading resp. writing, or both if neither <code>read</code> nor <code>write</code>
+onto <samp>/dev/null</samp> (for reading, writing, or both, depending on
+whether <samp>read</samp>, <samp>write</samp> or neither was specified).
+
+<dt><samp>null-fd <var>fd-range</var> [read|write]</samp><dd>Specify that the descriptor(s) be opened onto <code>/dev/null</code> for
+reading resp. writing, or both if neither <samp>read</samp> nor <samp>write</samp>
 is specified.  Any specification of these file descriptors by the
 client will be silently ignored; the client will see its ends of the
 descriptors being closed immediately.
-<dt><code>reject-fd </code><var>fd-range</var><code></code><dd>Do not allow the descriptor(s) to be specified by the client.  It is
+
+<dt><samp>reject-fd <var>fd-range</var></samp><dd>Do not allow the descriptor(s) to be specified by the client.  It is
 an error if any descriptor(s) marked for rejection are specified when
 the service is about to be invoked (after the configuration has been
 parsed).
-<dt><code>ignore-fd </code><var>fd-range</var><code></code><dd>Silently ignore any specification by the client of those
+
+<dt><samp>ignore-fd <var>fd-range</var></samp><dd>Silently ignore any specification by the client of those
 descriptor(s).  The pipes corresponding to these descriptors will be
 closed just before the service is invoked.
-<dt><code>disconnect-hup</code><dt><code>no-disconnect-hup</code><dd>Causes the service's process group to get a <kbd>SIGHUP</kbd> if the
+
+<dt><samp>disconnect-hup</samp><dt><samp>no-disconnect-hup</samp><dd>Causes the service's process group to get a <code>SIGHUP</code> if the
 client disconnects before the main service process terminates.
-<kbd>no-disconnect-hup</kbd> cancels <kbd>disconnect-hup</kbd>.<P>
+<code>no-disconnect-hup</code> cancels <code>disconnect-hup</code>.
 
 If one of the reading descriptors specified when the client is called
 gets a read error, or if the service is disconnected for some other
-reason, then the <kbd>SIGHUP</kbd> will be delivered <em>before</em> the
+reason, then the <code>SIGHUP</code> will be delivered <em>before</em> the
 writing end(s) of the service's reading pipe(s) are closed, so that
 the client can distinguish disconnection from reading EOF on a pipe.
-<dt><code>reset</code><dd>Resets the execution settings to the default.  This is equivalent to:
-<pre>cd ~/
+
+<dt><samp>reset</samp><dd>Resets the execution settings to the default.  This is equivalent to:
+<pre>
+cd ~/
 reject
 no-set-environment
 suppress-args
 allow-fd 0 read
 allow-fd 1-2 write
 reject-fd 3-
-disconnect-hup</pre>
+disconnect-hup
+</pre>
+
 </dl>
 
 
-If no <kbd>execute</kbd>, <kbd>execute-from-path</kbd>,
-<kbd>execute-from-directory</kbd> or <kbd>builtin</kbd> is interpreted before
+If no <code>execute</code>, <code>execute-from-path</code>,
+<code>execute-from-directory</code> or <code>builtin</code> is interpreted before
 all the files are read then the request is rejected.
+</p>
 
 <hr>
-<h2><A name="s-configerrors">
-4.3 Errors in the configuration file
-</A></h2>
 
+<h2>
+<a name="s-configerrors">4.3 Errors in the configuration file</a>
+</h2>
+
+<p>
 If a syntax error or other problem occurs when processing a
 configuration file then a diagnostic will be issued, to wherever the
-error messages are currently being sent (see the <kbd>errors-</kbd> family
-of directives, above).<P>
+error messages are currently being sent (see the <code>errors-</code> family
+of directives, above).
+</p>
 
+<p>
 The error will cause processing of the configuration files to cease at
-that point, unless the error was inside a <kbd>catch-quit</kbd> construct.
+that point, unless the error was inside a <code>catch-quit</code> construct.
 In this case the settings controlling the program's execution will be
-reset to the defaults as if a <kbd>reset</kbd> directive had been issued,
-and parsing continues after <kbd>hctac</kbd>.
+reset to the defaults as if a <code>reset</code> directive had been issued,
+and parsing continues after <code>hctac</code>.
+</p>
 
 <hr>
-<h2><A name="s-defaults">
-4.4 Defaults
-</A></h2>
 
+<h2>
+<a name="s-defaults">4.4 Defaults</a>
+</h2>
+
+<p>
 The default configuration processing is as if the daemon were parsing
 an overall configuration file whose contents were as follows:
 
-<pre>reset
+<pre>
+reset
 user-rcfile ~/.userv/rc
 errors-to-stderr
 include /etc/userv/system.default
@@ -415,23 +556,41 @@ if grep service-user-shell /etc/shells
    srorre
 fi
 include /etc/userv/system.override
-quit</pre><P>
+quit
+</pre>
+</p>
 
-If one of the <kbd>--override</kbd> options to the client is used then it
+<p>
+If one of the <code>--override</code> options to the client is used then it
 will instead be as if the daemon were parsing an overall configuration
 as follows:
 
-<pre>reset
+<pre>
+reset
 errors-to-stderr
 include <var>file containing configuration data sent by client</var>
-quit</pre>
+quit
+</pre>
+</p>
+
+<hr>
+
+[<a href="ch-envir.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-ipass.html">next</a>]
 
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-ipass.html">next</A>; <A href="ch-envir.html">back</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 64819a3fdd69251aad9e69baddac348ce5d85da2..40b79cd453cb8e1c727ace630ba97381a3763d53 100644 (file)
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification - Execution environment of the service program</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+[<a href="ch-client.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-config.html">next</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 3<br>
+User service daemon and client specification - Chapter 3<br>
 Execution environment of the service program
 </h1>
 
+<hr>
+
+<p>
 The daemon which is handling the service user side of things will read
 configuration files to decide what to do.  If it decides to allow the
 service to be provided it will fork a subprocess to execute the
-service.<P>
+service.
+</p>
 
+<p>
 The service will have no controlling terminal, but it will be a
-process group leader.<P>
+process group leader.
+</p>
 
+<p>
 If the client is killed or times out or a file or descriptor being
 read or written by the client process gets an error then the service
 will be disconnected from the client.  The client will return an exit
 status of 255 and some the service's pipes may be closed at the other
-end.  The service will become a child of <kbd>init</kbd>.  The service may
+end.  The service will become a child of <code>init</code>.  The service may
 well not notice the disconnection, though writing to a pipe after this
-may produce a <kbd>SIGPIPE</kbd> and the facility exists to have a
-<kbd>SIGHUP</kbd> sent to the service on disconnection.
+may produce a <code>SIGPIPE</code> and the facility exists to have a
+<code>SIGHUP</code> sent to the service on disconnection.
+</p>
+
 <hr>
-<h2><A name="s3.1">
-3.1 File descriptors
-</A></h2>
 
+<h2>
+<a name="s3.1">3.1 File descriptors</a>
+</h2>
+
+<p>
 The service program's standard filedescriptors, and possibly other
 file descriptors, will be connected to pipes or to
-<kbd>/dev/null</kbd>.  The <kbd>userv</kbd> client/daemon pair will arrange
+<code>/dev/null</code>.  The <code>userv</code> client/daemon pair will arrange
 that data is copied between the files or file descriptors specified to
-to the client by the caller and these these pipes.<P>
+to the client by the caller and these these pipes.
+</p>
 
+<p>
 Pipes which may be written to will be closed if a write error occurs
 on the corresponding client-side file or descriptor, which may result
-in a <kbd>SIGPIPE</kbd> in the service program; pipes open for reading
-will get <kbd>EOF</kbd> if the client-side file descriptor gets <kbd>EOF</kbd>
-or an error.<P>
+in a <code>SIGPIPE</code> in the service program; pipes open for reading
+will get <code>EOF</code> if the client-side file descriptor gets <code>EOF</code>
+or an error.
+</p>
 
+<p>
 If the service closes one of its reading file descriptors the writing
-end of the corresponding pipe will generate a <kbd>SIGPIPE</kbd> when
+end of the corresponding pipe will generate a <code>SIGPIPE</code> when
 attempts are made by the client/daemon pair to write to it.  This will
 not be considered an error; rather, the relevant pipe will be
 discarded and the corresponding file or file descriptor held by the
-client will be closed.<P>
+client will be closed.
+</p>
 
+<p>
 Likewise, if one of the file descriptors held by the client for
 writing by the service is a pipe whose other end is closed by the
 caller then the client/daemon pair will see an error when trying to
 copy data provided by the service.  This too will not be considered an
 error; rather, the pipe correspondong to that descriptor will be
 closed and any further writes will cause the service to get a
-<kbd>SIGPIPE</kbd>.<P>
+<code>SIGPIPE</code>.
+</p>
 
+<p>
 Note that not all write errors or broken pipes on file descriptors may
 be visible to the service, since buffered data may be discarded by the
 operating system and there will be a finite interval between the error
 happening and the service being disconnected from the client or the
-next write causing a <kbd>SIGPIPE</kbd>.<P>
+next write causing a <code>SIGPIPE</code>.
+</p>
 
+<p>
 Read errors on file descriptors (and disconnection) will only be
 visible to the service and distinguishable from normal end of file if
-<kbd>disconnect-hup</kbd> is in effect.<P>
+<code>disconnect-hup</code> is in effect.
+</p>
 
+<p>
 Read and write errors (other than broken pipes, as described above)
 will always be visible to the caller; they are system errors, and will
 therefore cause the client to print an error message to stderr and
-return with an exit status of 255.<P>
+return with an exit status of 255.
+</p>
 
+<p>
 If the main service program process exits while it still has running
 children any file descriptors held by those children can remain open,
-depending on the use of <code>wait</code>, <code>nowait</code> or <code>close</code> for the
+depending on the use of <samp>wait</samp>, <samp>nowait</samp> or <samp>close</samp> for the
 relevant file descriptor in the client's arguments.  By default
 writing filedescriptors remain open and the client will wait for them
 to be closed at the service end, and reading file descriptors are
 closed immediately.  These leftover child processes will not get a any
-<kbd>SIGHUP</kbd> even if a read or write error occurs or the client
+<code>SIGHUP</code> even if a read or write error occurs or the client
 disconnects before then.
+</p>
+
 <hr>
-<h2><A name="s3.2">
-3.2 Environment
-</A></h2>
 
+<h2>
+<a name="s3.2">3.2 Environment</a>
+</h2>
+
+<p>
 The service will have some information in environment variables:
 <dl compact>
-<dt><code>USERV_USER</code><dd>The login name of the calling user.  If the <kbd>LOGNAME</kbd> variable is
-set (or, if that is unset, if the <kbd>USER</kbd> variable is set) in the
+<dt><samp>USERV_USER</samp><dd>The login name of the calling user.  If the <code>LOGNAME</code> variable is
+set (or, if that is unset, if the <code>USER</code> variable is set) in the
 environment passed to the client by the caller then the password entry
 for that login name will be looked up; if that password entry's uid is
 the same as that of the calling process then that login name will be
-used, otherwise (or if neither <kbd>LOGNAME</kbd> nor <kbd>USER</kbd> is set)
+used, otherwise (or if neither <code>LOGNAME</code> nor <code>USER</code> is set)
 the calling process's uid will be looked up to determine their login
 name (and if this lookup fails then the service will not be invoked).
-<dt><code>USERV_UID</code><dd>The uid of the calling process.
-<dt><code>USERV_GID</code><dd>The gid and supplementary group list of the calling process: first the
+
+<dt><samp>USERV_UID</samp><dd>The uid of the calling process.
+
+<dt><samp>USERV_GID</samp><dd>The gid and supplementary group list of the calling process: first the
 group in gid and then those in the supplementary group list, in
 decimal, separated by spaces.
-<dt><code>USERV_GROUP</code><dd>The group names of the calling process, listed in the same way as the
-ids are in <kbd>USERV_GID</kbd>.  If no name can be found for any of the
+
+<dt><samp>USERV_GROUP</samp><dd>The group names of the calling process, listed in the same way as the
+ids are in <code>USERV_GID</code>.  If no name can be found for any of the
 calling process's group(s) then the service will not be invoked.
-<dt><code>USERV_CWD</code><dd>The client's current working directory name (this directory may not be
+
+<dt><samp>USERV_CWD</samp><dd>The client's current working directory name (this directory may not be
 accessible to the service).  If it could not be determined or the
-<kbd>--hidecwd</kbd> flag was used then this variable will be set to an
+<code>--hidecwd</code> flag was used then this variable will be set to an
 empty string (this is not considered an error).
-<dt><code>USERV_SERVICE</code><dd>The service name requested by the caller.
-<dt><code>USERV_U_</code><var>name</var><code></code><dd>The value supplied to the client by the caller using -D<var>name</var>.
+
+<dt><samp>USERV_SERVICE</samp><dd>The service name requested by the caller.
+
+<dt><samp>USERV_U_<var>name</var></samp><dd>The value supplied to the client by the caller using -D<var>name</var>.
+
 </dl>
 
 
-<kbd>HOME</kbd>, <kbd>PATH</kbd>, <kbd>SHELL</kbd>, <kbd>LOGNAME</kbd> and <kbd>USER</kbd>
+<code>HOME</code>, <code>PATH</code>, <code>SHELL</code>, <code>LOGNAME</code> and <code>USER</code>
 will be set appropriately (according to the details of the service
 user).
+</p>
 
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-config.html">next</A>; <A href="ch-client.html">back</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+[<a href="ch-client.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-config.html">next</a>]
+
+<hr>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index e8a9dc345a2d1cc558b7a6769aac9a9e840ab2dd..c74b554d5784f9a05e1b5cf2c169ac7d8e347a3e 100644 (file)
@@ -1,32 +1,68 @@
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification - Introduction</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-client.html">next</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 1<br>
+User service daemon and client specification - Chapter 1<br>
 Introduction
 </h1>
+
+<hr>
+
+<p>
 There is a daemon which invokes user service programs (henceforth
 `services') in response to requests by callers of a companion client
 program (henceforth the `client') and according to rules set forth in
 system-wide and user-specific configuration files.  The companion
 client program is setuid root, and negotiates with the daemon through
-an <kbd>AF_UNIX</kbd> socket and associated objects in a system-wide
+an <code>AF_UNIX</code> socket and associated objects in a system-wide
 private directory set aside for the purpose.  The user who wishes the
 service to be performed and calls the client is called the `calling
 user'; the process which calls the client is called the `calling
 process'.
-<P>
+</p>
+
+<p>
 The daemon and the client are responsible for ensuring that
 information is safely carried across the security boundary between the
 two users, and that the processes on either side cannot interact with
 each other in any unexpected ways.
+</p>
+
+<hr>
+
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-client.html">next</a>]
+
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-client.html">next</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 38b87dc24c44313a5e5ebdba2295c8a0edfeef9e..766ef4eeafdfbe5db894ea85dbc33f4d49048c53 100644 (file)
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification - Information passed through the client/daemon combination</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+[<a href="ch-config.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-notes.html">next</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 5<br>
+User service daemon and client specification - Chapter 5<br>
 Information passed through the client/daemon combination
 </h1>
 
+<hr>
+
+<p>
 The information described below is the only information which passes
 between the caller and the service.
 
 <ul>
-<li>The service name supplied by the caller is available in the
+<p><li>The service name supplied by the caller is available in the
 configuration language for deciding whether and which service program
-to invoke, in the <kbd>service</kbd> parameter, and is used by the
-<kbd>execute-from-directory</kbd> and <kbd>execute-from-path</kbd>
+to invoke, in the <code>service</code> parameter, and is used by the
+<code>execute-from-directory</code> and <code>execute-from-path</code>
 configuration directives.  It is usually used to select which service
 program to invoke.  It is also passed to the service program in the
-<kbd>USERV_SERVICE</kbd> environment variable.
+<code>USERV_SERVICE</code> environment variable.
+
 <p><li>File descriptors specified by the client and allowed according to the
 configuration language will be connected.  Each file descriptor is
 opened for reading or writing.  Communication is via pipes, one end of
 each pipe being open on the appropriate file descriptor in the service
 program (when it is invoked) and the other end being held by the
 client process, which will read and write files it opens on behalf of
-its caller or file descriptors it is passed by its caller.<P>
+its caller or file descriptors it is passed by its caller.
 
 Data may be passed into the service through reading pipes and out of
 it through writing pipes.  These pipes can remain open only until the
 service and client have terminated, or can be made to stay open after
 the client has terminated and (if the service program forks) the main
 service process has exited; the behaviour is controlled by options
-passed to the client by its caller.<P>
+passed to the client by its caller.
 
 The caller can arrange that a writing pipe be connected to a pipe or
 similar object and cause attempts to write to that descriptor by the
-service to generate a <kbd>SIGPIPE</kbd> (or <kbd>EPIPE</kbd> if
-<kbd>SIGPIPE</kbd> is caught or ignored) in the service.<P>
+service to generate a <code>SIGPIPE</code> (or <code>EPIPE</code> if
+<code>SIGPIPE</code> is caught or ignored) in the service.
 
 Likewise, the service can close filedescriptors specified for reading,
 which will cause the corresponding filedescriptors passed by the
 caller to be closed, so that if these are pipes processes which write
-to them will receive <kbd>SIGPIPE</kbd> or <kbd>EPIPE</kbd>.
-<p><li>If <kbd>no-suppress-args</kbd> is set then arguments passed to the client
+to them will receive <code>SIGPIPE</code> or <code>EPIPE</code>.
+
+<p><li>If <code>no-suppress-args</code> is set then arguments passed to the client
 by its caller will be passed on, verbatim, to the service.
+
 <p><li>Fatal signals and system call failures experienced by the client will
 result in the disconnection of the service from the client and
 possibly some of the communication file descriptors described above;
-if <kbd>disconnect-hup</kbd> is set then the service will also be sent a
-<kbd>SIGHUP</kbd>.
-<p><li>The value of the <kbd>LOGNAME</kbd> (or <kbd>USER</kbd>) environment variable
+if <code>disconnect-hup</code> is set then the service will also be sent a
+<code>SIGHUP</code>.
+
+<p><li>The value of the <code>LOGNAME</code> (or <code>USER</code>) environment variable
 as passed to the client will be used as the login name of the calling
 user if the uid of the calling process matches the uid corresponding
 to that login name.  Otherwise the calling uid's password entry will
-be used to determine the calling user's login name.<P>
+be used to determine the calling user's login name.
 
 This login name and the calling uid are available in the configuration
-language in the <kbd>calling-user</kbd> parameter and are passed to the
-service program in environment variables <kbd>USERV_USER</kbd> and
-<kbd>USERV_UID</kbd>.<P>
+language in the <code>calling-user</code> parameter and are passed to the
+service program in environment variables <code>USERV_USER</code> and
+<code>USERV_UID</code>.
 
 The shell corresponding to that login name (according to the password
 entry) is available as in the configuration language's
-<kbd>calling-user-shell</kbd> parameter.<P>
+<code>calling-user-shell</code> parameter.
 
 If no relevant password entry can be found then no service will be
 invoked.
+
 <p><li>The numeric values and textual names for calling gid and supplementary
 group list are available in the configuration language in the
-<kbd>calling-group</kbd> parameter and are passed to the service in
-environment variables.<P>
+<code>calling-group</code> parameter and are passed to the service in
+environment variables.
 
 If no name can be found for a numeric group to which the calling
 process belongs then no service will be invoked.
+
 <p><li>The name of the current working directory in which the client was
-invoked is passed, if available and not hidden using <kbd>--hidecwd</kbd>,
-to the service program in the <kbd>USERV_CWD</kbd> variable.  This grants no
+invoked is passed, if available and not hidden using <code>--hidecwd</code>,
+to the service program in the <code>USERV_CWD</code> variable.  This grants no
 special access to that directory unless it is a subdirectory of a
 directory which is executable (searchable) but not readable by the
 service user.
-<p><li>Settings specified by the caller using the <code>--defvar
-</code><var>name</var><code>=</code><var>value</var><code></code> option to the client are available in the
-configuration language as the corresponding <code>u-</code><var>name</var><code></code>
+
+<p><li>Settings specified by the caller using the <samp>--defvar
+<var>name</var>=<var>value</var></samp> option to the client are available in the
+configuration language as the corresponding <samp>u-<var>name</var></samp>
 parameters and are passed to the service program in environment
-variables <code>USERV_U_</code><var>name</var><code></code>.
+variables <samp>USERV_U_<var>name</var></samp>.
+
 <p><li>If the calling user is root or the same as the service user then
 options may be given to the client which bypass the usual security
 features; in this case other information may pass between the caller
 and the service.
-<p></ul>
+
+</ul>
+</p>
 
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-notes.html">next</A>; <A href="ch-config.html">back</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+[<a href="ch-config.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+ [<a href="ch-notes.html">next</a>]
+
+<hr>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 74d81cf08e27d7392eedf65fa9839f4994bb0640..e49eb2aca92d4e63ad4752614bd6d53fcff05af5 100644 (file)
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification - Applications and notes on use</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+[<a href="ch-ipass.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+
+<hr>
+
 <h1>
-User service daemon and client specification - chapter 6<br>
+User service daemon and client specification - Chapter 6<br>
 Applications and notes on use
 </h1>
+
 <hr>
-<h2><A name="s-standards">
-6.1 Standard services and directory management
-</A></h2>
 
+<h2>
+<a name="s-standards">6.1 Standard services and directory management</a>
+</h2>
+
+<p>
 In later versions of this specification standard service names and
 interfaces for common services such as mail delivery and WWW CGI
-scripts will be specified.<P>
+scripts will be specified.
+</p>
 
-<kbd>userv</kbd>-using applications and system services which hide
-<kbd>userv</kbd> behind wrapper scripts may need to store information in
+<p>
+<code>userv</code>-using applications and system services which hide
+<code>userv</code> behind wrapper scripts may need to store information in
 the user's filespace to preserve the correct placement of the security
 perimiters.  Such applications should usually do so in a directory
-(created by them) <code>~/.userv/.servdata/</code><var>service</var><code></code>, where
-<var>service</var> is the service name or application in question.<P>
+(created by them) <samp>~/.userv/.servdata/<var>service</var></samp>, where
+<var>service</var> is the service name or application in question.
+</p>
 
-The use of a dot-directory inside <code>~/.userv</code> will hopefully avoid
+<p>
+The use of a dot-directory inside <samp>~/.userv</samp> will hopefully avoid
 the user becoming confused by finding parts of a semi-privileged
 application's internal state in their filespace, and or discourage
 them from fiddling with and thus corrupting it.  (Note that such
 applications should of course not rely for their global integrity on
 the integrity of the data on the user's side of the security
 boundary.)
+</p>
+
 <hr>
-<h2><A name="s-reducepriv">
-6.2 Reducing the number of absolutely privileged subsystems
-</A></h2>
 
+<h2>
+<a name="s-reducepriv">6.2 Reducing the number of absolutely privileged subsystems</a>
+</h2>
+
+<p>
 Currently most Unix systems have many components which need to run as
 root, even though most of their activity does not strictly require
 it.  This gives rise to a large and complex body of code which must be
-trusted with the security of the system.<P>
+trusted with the security of the system.
+</p>
 
-Using <kbd>userv</kbd> many of these subsystems no longer need any unusual
-privilege.<P>
+<p>
+Using <code>userv</code> many of these subsystems no longer need any unusual
+privilege.
+</p>
 
-<kbd>cron</kbd> and <kbd>at</kbd>, <kbd>lpr</kbd> and the system's mail transfer
-agent (<kbd>sendmail</kbd>, <kbd>smail</kbd>, <kbd>exim</kbd> or the like) all
+<p>
+<code>cron</code> and <code>at</code>, <code>lpr</code> and the system's mail transfer
+agent (<code>sendmail</code>, <code>smail</code>, <code>exim</code> or the like) all
 fall into this category.
+</p>
+
 <hr>
-<h2><A name="s-noexcess">
-6.3 Do not give away excessive privilege to <kbd>userv</kbd>-using facilities
-</A></h2>
 
+<h2>
+<a name="s-noexcess">6.3 Do not give away excessive privilege to <code>userv</code>-using facilities</a>
+</h2>
+
+<p>
 There is a danger that people reimplementing the facilities I mention
-above using <kbd>userv</kbd> will discard much of the security benefit by
+above using <code>userv</code> will discard much of the security benefit by
 using a naive implementation technique.  This will become clearer with
-an example:<P>
+an example:
+</p>
 
-Consider the <kbd>lpr</kbd> program.  In current systems this needs to
+<p>
+Consider the <code>lpr</code> program.  In current systems this needs to
 have an absolutely privileged component in order to support delayed
 printing without copying: when the user queues a file to be printed
 the filename is stored in the print queue, rather than a copy of it,
 and the printer daemon accesses the file directly when it is ready to
 print the job.  In order that the user can print files which are not
 world-readable the daemon is given root privilege so that it can open
-the file in the context of the user, rather than its own.<P>
-
-A simple-minded approach to converting this scheme to use <kbd>userv</kbd>
-might involve giving the printer daemon (the <kbd>lp</kbd> user) the
-ability to read the file by allowing them to run <kbd>cat</kbd> (or a
-special-purpose file-reading program) as any user.  The <kbd>lpr</kbd>
-program would use a <kbd>userv</kbd> service to store the filename in the
+the file in the context of the user, rather than its own.
+</p>
+
+<p>
+A simple-minded approach to converting this scheme to use <code>userv</code>
+might involve giving the printer daemon (the <code>lp</code> user) the
+ability to read the file by allowing them to run <code>cat</code> (or a
+special-purpose file-reading program) as any user.  The <code>lpr</code>
+program would use a <code>userv</code> service to store the filename in the
 printer daemon's queues, and the daemon would read the file later when
-it felt like it.<P>
+it felt like it.
+</p>
 
+<p>
 However, this would allow the printer daemon to read any file on the
 system, whether or not someone had asked for it to be printed.  Since
 many files will contain passwords and other security-critical
 information this is nearly as bad as giving the daemon root access in
 the first place.  Any security holes in the print server which allow a
-user to execute commands as the <kbd>lp</kbd> user will give the user the
-ability to read any file on the system.<P>
+user to execute commands as the <code>lp</code> user will give the user the
+ability to read any file on the system.
+</p>
 
+<p>
 Instead, it is necessary to keep a record of which files the daemon
 has been asked to print <em>outside</em> the control of the print daemon.
 This record could be kept by a new root-privileged component, but this
 is not necessary: the record of which files a user has asked to be
 printed can be kept under the control of the user in question.  The
-submission program <kbd>lpr</kbd> will make a record in an area under the
+submission program <code>lpr</code> will make a record in an area under the
 user's control before communicating with the print server, and the
 print server would be given the ability to run a special file-reading
 program which would only allow files to be read which were listed in
-the user's file of things they'd asked to print.<P>
+the user's file of things they'd asked to print.
+</p>
 
+<p>
 Now security holes in most of the printing system do not critically
 affect the security of the entire system: they only allow the attacker
 to read and interfere with print jobs.  Bugs in the programs run by the
 print server to read users' files (and to remove entries from the list
 of files when it has done with them) will still be serious, but this
-program can be quite simple.<P>
+program can be quite simple.
+</p>
 
-Similar considerations apply to many <kbd>userv</kbd>-based versions of
-facilities which currently run as root.<P>
+<p>
+Similar considerations apply to many <code>userv</code>-based versions of
+facilities which currently run as root.
+</p>
 
+<p>
 It is debatable whether the user-controlled state should be kept in
 the user's filespace (in dotfiles, say) or kept in a separate area set
 aside for the purpose; however, using the user's home directory (and
@@ -108,43 +158,68 @@ probably creating a separate subdirectory of it as a dotfile to
 contain many subsystems' state) has fewer implications for the rest of
 the system and makes it entirely clear where the security boundaries
 lie.
+</p>
+
 <hr>
-<h2><A name="s-notreally">
-6.4 <kbd>userv</kbd> is not a replacement for <kbd>really</kbd> and <kbd>sudo</kbd>
-</A></h2>
 
-<kbd>userv</kbd> is not intended as a general-purpose system
+<h2>
+<a name="s-notreally">6.4 <code>userv</code> is not a replacement for <code>really</code> and <code>sudo</code></a>
+</h2>
+
+<p>
+<code>userv</code> is not intended as a general-purpose system
 administration tool with which system administrators can execute
 privileged programs when they need to.  It is unsuitable for this
 purpose precisely because it enforces a strong separation between the
-calling and the called program, which is undesirable in this context.<P>
+calling and the called program, which is undesirable in this context.
+</p>
 
+<p>
 Its facilities for restricting activities to running certain programs
 may at first glance seem to provide similar functionality to
-<kbd>sudo</kbd><A href="footnotes.html#2" name="fr2">[2]</A>.  However, the
+<code>sudo</code><a href="footnotes.html#2" name="fr2">[2]</a>.  However, the
 separation mentioned above is a problem here too, particular for
-interaction - it can be hard for a <kbd>userv</kbd> service program to
+interaction - it can be hard for a <code>userv</code> service program to
 interact with its real caller or the user in question.
+</p>
+
 <hr>
-<h2><A name="s-nogeneral">
-6.5 Don't give access to general-purpose utilities
-</A></h2>
 
-Do not specify general purpose programs like <kbd>mv</kbd> or <kbd>cat</kbd>
-in <kbd>execute-</kbd> directives without careful thought about their
-arguments, and certainly not if <kbd>no-suppress-args</kbd> is specified.
+<h2>
+<a name="s-nogeneral">6.5 Don't give access to general-purpose utilities</a>
+</h2>
+
+<p>
+Do not specify general purpose programs like <code>mv</code> or <code>cat</code>
+in <code>execute-</code> directives without careful thought about their
+arguments, and certainly not if <code>no-suppress-args</code> is specified.
 If you do so it will give the caller much more privilige than you
-probably intend.<P>
+probably intend.
+</p>
 
+<p>
 It is a shame that I have to say this here, but inexperienced
 administrators have made similar mistakes with programs like
-<kbd>sudo</kbd>.
+<code>sudo</code>.
+</p>
+
 <hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>; <A href="ch-ipass.html">back</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+[<a href="ch-ipass.html">back</a>]
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+
+<hr>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 9cf549f3809c498bcc84c95238f12e422e0ee627..6ec76659a95e4eb9fe96f8d329f0bacec8607c19 100644 (file)
@@ -1,21 +1,54 @@
-<html><head>
-<title>User service daemon and client specification - footnotes</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
-<h1>User service daemon and client specification - footnotes</h1>
-<h2><A href="ch-client.html#fr1" name="1">1</A></h2>
-<P>
-<kbd>userv</kbd> is
-short for `user services', and is pronounced `you-serve'.<h2><A href="ch-notes.html#fr2" name="2">2</A></h2>
-<P>
-<kbd>sudo</kbd> is a program which allows users to
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
+<title>User service daemon and client specification - Footnotes</title>
+
+</head>
+
+<body>
+
+<hr>
+
+  [<a href="index.html#abstract">Abstract</a>]
+  [<a href="index.html#copyright">Copyright Notice</a>]
+  [<a href="index.html#contents">Contents</a>]
+
+<hr>
+
+<h1>User service daemon and client specification - Footnotes</h1>
+
+<hr>
+
+<h2><a href="ch-client.html#fr1" name="1">1</a>
+</h2>
+<p>
+<code>userv</code> is
+short for `user services', and is pronounced `you-serve'.
+</p><h2><a href="#fr2" name="2">2</a>
+</h2>
+<p>
+<code>sudo</code> is a program which allows users to
 execute certain programs as root, according to configuration files
-specified by the system administrator.<hr>
-User service daemon and client specification
-- <A href="index.html#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="index.html#toc">Contents</A>; <A href="index.html#abstract">abstract</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+specified by the system administrator.
+</p><hr>
+
+ [<a href="index.html#abstract">Abstract</a>]
+ [<a href="index.html#copyright">Copyright Notice</a>]
+ [<a href="index.html#contents">Contents</a>]
+
+<hr>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
index 6a8d323d02a121158fbc79d30d56d5d0d0540670..46e8edc42eec5a70e4e21fe7e13294a6dd4b5ebe 100644 (file)
-<html><head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<html>
+
+<head>
+
 <title>User service daemon and client specification</title>
-<link rev=made href="mailto:ian@davenant.greenend.org.uk">
-</head><body>
+
+</head>
+
+<body>
+
+<hr>
+
+  [<a href="#abstract">Abstract</a>]
+  [<a href="#copyright">Copyright Notice</a>]
+  [<a href="#contents">Contents</a>]
+
+<hr>
+
 <h1>User service daemon and client specification</h1>
 
-<h2><A name="abstract">
-0.1 Abstract
-</A></h2>
+<hr>
+
+<h2><a name="abstract">Abstract</a></h2>
 
 This is a specification for a Unix system facility to allow one
 program to invoke another when only limited trust exists
 between them.
 
+<h2><a name="copyright">Copyright Notice</a></h2>
+
+<p>
+<code>userv</code> is Copyright 1996-1999 Ian Jackson.
+</p>
+
+<p>
+<code>userv</code> 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 2 of the License, or (at
+your option) any later version.
+</p>
+
+<p>
+This program is distributed in the hope that it will be useful, but
+<em>without any warranty</em>; without even the implied warranty of
+<em>merchantability</em> or <em>fitness for a particular purpose</em>.  See
+the GNU General Public License for more details.
+</p>
+
+<p>
+You should have received a copy of the GNU General Public License
+along with <code>userv</code>; if not, write to the Free Software
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+</p>
+
+
+
 <hr>
-<h2><A name="toc">
-0.2 Table of contents
-</A></h2>
+
+<h2><a name="contents">Contents</a></h2>
+
 <ul>
-<li><A href="ch-intro.html">1 Introduction</A>
-<li><A href="ch-client.html">2 Client program usage
-</A>
+<li><a href="ch-intro.html">1 Introduction</a>
+<li><a href="ch-client.html">2 Client program usage</a>
 <ul>
-<li><A href="ch-client.html#s2.1">2.1</A> Options
-<li><A href="ch-client.html#s-optoverride">2.2</A> Security-overriding options
+<li><a href="ch-client.html#s2.1">2.1</a> Options
+<li><a href="ch-client.html#s-optoverride">2.2</a> Security-overriding options
 </ul>
-<li><A href="ch-envir.html">3 Execution environment of the service program</A>
+<li><a href="ch-envir.html">3 Execution environment of the service program</a>
 <ul>
-<li><A href="ch-envir.html#s3.1">3.1</A> File descriptors
-<li><A href="ch-envir.html#s3.2">3.2</A> Environment
+<li><a href="ch-envir.html#s3.1">3.1</a> File descriptors
+<li><a href="ch-envir.html#s3.2">3.2</a> Environment
 </ul>
-<li><A href="ch-config.html">4 Service-side configuration</A>
+<li><a href="ch-config.html">4 Service-side configuration</a>
+<ul>
+<li><a href="ch-config.html#s4.1">4.1</a> Configuration file syntax
+<li><a href="ch-config.html#s-directives">4.2</a> Configuration file directives
 <ul>
-<li><A href="ch-config.html#s4.1">4.1</A> Configuration file syntax
-<li><A href="ch-config.html#s-directives">4.2</A> Configuration file directives
-<li><A href="ch-config.html#s-configerrors">4.3</A> Errors in the configuration file
-<li><A href="ch-config.html#s-defaults">4.4</A> Defaults
+<li><a href="ch-config.html#s-dirs-immediate">4.2.1</a> Immediate directives
+<li><a href="ch-config.html#s-dirs-delayed">4.2.2</a> Directives with delayed effect
+<li><a href="ch-config.html#s-dirs-control">4.2.3</a> Control structure directives
+<li><a href="ch-config.html#s-dirs-execution">4.2.4</a> Directives for changing execution settings
+</ul>
+<li><a href="ch-config.html#s-configerrors">4.3</a> Errors in the configuration file
+<li><a href="ch-config.html#s-defaults">4.4</a> Defaults
 </ul>
-<li><A href="ch-ipass.html">5 Information passed through the client/daemon combination</A>
-<li><A href="ch-notes.html">6 Applications and notes on use</A>
+<li><a href="ch-ipass.html">5 Information passed through the client/daemon combination</a>
+<li><a href="ch-notes.html">6 Applications and notes on use</a>
 <ul>
-<li><A href="ch-notes.html#s-standards">6.1</A> Standard services and directory management
-<li><A href="ch-notes.html#s-reducepriv">6.2</A> Reducing the number of absolutely privileged subsystems
-<li><A href="ch-notes.html#s-noexcess">6.3</A> Do not give away excessive privilege to <kbd>userv</kbd>-using facilities
-<li><A href="ch-notes.html#s-notreally">6.4</A> <kbd>userv</kbd> is not a replacement for <kbd>really</kbd> and <kbd>sudo</kbd>
-<li><A href="ch-notes.html#s-nogeneral">6.5</A> Don't give access to general-purpose utilities
+<li><a href="ch-notes.html#s-standards">6.1</a> Standard services and directory management
+<li><a href="ch-notes.html#s-reducepriv">6.2</a> Reducing the number of absolutely privileged subsystems
+<li><a href="ch-notes.html#s-noexcess">6.3</a> Do not give away excessive privilege to <code>userv</code>-using facilities
+<li><a href="ch-notes.html#s-notreally">6.4</a> <code>userv</code> is not a replacement for <code>really</code> and <code>sudo</code>
+<li><a href="ch-notes.html#s-nogeneral">6.5</a> Don't give access to general-purpose utilities
 </ul>
 </ul>
-<hr><h2><A name="copyright">0.3 Copyright</A></h2>
-<kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.<P>
 
-<kbd>userv</kbd> 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 2 of the License, or (at
-your option) any later version.<P>
+<hr>
 
-This program is distributed in the hope that it will be useful, but
-<em>without any warranty</em>; without even the implied warranty of
-<em>merchantability</em> or <em>fitness for a particular purpose</em>.  See
-the GNU General Public License for more details.<P>
+ [<a href="#abstract">Abstract</a>]
+ [<a href="#copyright">Copyright Notice</a>]
+ [<a href="#contents">Contents</a>]
 
-You should have received a copy of the GNU General Public License
-along with <kbd>userv</kbd>; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 <hr>
-User service daemon and client specification
-- <A href="#copyright"><kbd>userv</kbd> is Copyright 1996-1999 Ian Jackson.</A>
-<br>
-<A href="#toc">Contents</A>; <A href="#abstract">abstract</A>.
-<br>
-<address>0.62<br>
-Ian Jackson <A href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</A></address>
-</body></html>
+
+User service daemon and client specification<br>
+
+<address>
+0.62<br>
+Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
+</address>
+
+</body>
+
+</html>
+
diff --git a/spec.ps b/spec.ps
index 7a17c9e6a73f74b7c51f5d2973e130a515690816..a4283095edfc4727e7f24d5d2c7b70027be4658f 100644 (file)
--- a/spec.ps
+++ b/spec.ps
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: Basser Lout Version 3.10 (November 1996)
-%%CreationDate: Sun Apr 18 20:08:36 1999
+%%CreationDate: Sun Jun 20 18:45:09 1999
 %%DocumentData: Binary
 %%DocumentNeededResources: (atend)
 %%DocumentMedia: Plain 595 842 0 white ()
@@ -278,12 +278,12 @@ closepath fill
 grestore
 320 fnt84 0 5(0.1.)m 628(Abstract)s 
 grestore
-0 10791(This)m 476(is)s
+0 10959(This)m 476(is)s
 686(a)s 852(speci\207cation)s 2117(for)s 2455(a)s 2621(Unix)s
 3155(system)s 3879(f)s 2(acility)k 4606(to)s 4845(allo)s 6(w)k
 5424(one)s 5826(program)s 6696(to)s 6935(in)s 9(v)k 4(ok)k 2(e)k
-7628(another)s 8405(when)s 0 10551(only)m 480(limited)s 1214(trust)s
-1698(e)s 3(xists)k 2290(between)s 3144(them.)s 9066 610 0 610 240 240 60 0 9587 LoutGr2
+7628(another)s 8405(when)s 0 10719(only)m 480(limited)s 1214(trust)s
+1698(e)s 3(xists)k 2290(between)s 3144(them.)s 9066 670 0 670 240 240 60 0 9695 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -291,102 +291,92 @@ xsize neg 0 rlineto
 closepath fill
 grestore
 320 fnt84
-0 6(0.2.)m 628(Contents)s 
-grestore
-240 fnt84 0 9175(1.)m 1200(Intr)s 4(oduction)k
-8953(3)s 0 8818(2.)m 1200(Client)s 1883(pr)s 4(ogram)k
-2839(usage)s 8952(4)s 240 fnt82 0 8579(2.1.)m 1200(Options)s
-8952(4)s 0 8342(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k
-3118(options)s 8958(7)s 240 fnt84 0 7997(3.)m 1200(Execution)s
-2279(en)s 9(vir)k 4(onment)k 3627(of)s 3899(the)s
-4273(ser)s 2(vice)k 5030(pr)s 4(ogram)k 8952(8)s
-240 fnt82 0 7758(3.1.)m 1200(File)s 1627(descriptors)s 8959(8)s
-0 7521(3.2.)m 1200(En)s 9(vironment)k 8955(9)s 240 fnt84
-0 7176(4.)m 1200(Ser)s 2(vice-side)k 2474(con\207guration)s 8831(10)s
-240 fnt82 0 6937(4.1.)m 1200(Con\207guration)s 2587(\207le)s 2948(syntax)s
-8831(10)s 0 6700(4.2.)m 1200(Con\207guration)s 2587(\207le)s 2948(directi)s 6(v)k 3(es)k
-8831(10)s 0 6462(4.3.)m 1200(Errors)s 1847(in)s 2090(the)s
-2438(con\207guration)s 3771(\207le)s 8833(16)s 0 6225(4.4.)m 1200(Def)s 2(aults)k
-8838(17)s 240 fnt84 0 5880(5.)m 1200(Inf)s 6(ormation)k
-2498(passed)s 3231(thr)s 4(ough)k 4106(the)s 4480(client/daemon)s
-5969(combination)s 8832(18)s 0 5523(6.)m 1200(A)s 6(pplications)k
-2536(and)s 2977(notes)s 3562(on)s 3871(use)s 8831(20)s
-240 fnt82 0 5284(6.1.)m 1200(Standard)s 2108(services)s 2928(and)s
-3332(directory)s 4248(management)s 8831(20)s 0 5046(6.2.)m 1200(Reducing)s
-2171(the)s 2519(number)s 3310(of)s 3581(absolutely)s 4618(pri)s 6(vile)k 3(ged)k
-5636(subsystems)s 8831(20)s 0 4808(6.3.)m 1200(Do)s 1546(not)s
-1912(gi)s 6(v)k 3(e)k 2371(a)s 3(w)k 2(ay)k
-2925(e)s 3(xcessi)k 6(v)k 3(e)k 3885(pri)s 6(vile)k 3(ge)k
-4781(to)s gsave
-5020 4862 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
+0 66(0.2.)m 628(Copyright)s 2109(Notice)s 
 grestore
-5520(-using)s 6171(f)s 2(acilities)k
-8831(20)s 0 4570(6.4.)m gsave
-1200 4624 translate
+gsave
+0 9455 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
+240 fnt31 0 -52(userv)m
+
 grestore
-1760(is)s
-1970(not)s 2336(a)s 2502(replacement)s 3729(for)s gsave
-4067 4624 translate
+560 9401(is)m 770(Cop)s 2(yright)k 1799(1996-1999)s 2889(Ian)s
+3251(Jackson.)s gsave
+0 9047 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(really)m 
+240 fnt31 0 -52(userv)m 
 grestore
-4727(and)s gsave
-5131 4624 translate
+544 8993(is)m 737(free)s
+1146(softw)s 2(are;)k 2062(you)s 2460(can)s 2832(redistrib)s 4(ute)k
+3955(it)s 4130(and/or)s 4784(modify)s 5512(it)s 5688(under)s
+6276(the)s 6607(terms)s 7172(of)s 7426(the)s 7757(GNU)s
+8315(General)s 0 8753(Public)m 659(License)s 1453(as)s 1698(published)s
+2682(by)s 2971(the)s 3314(Free)s 3789(Softw)s 2(are)k
+4699(F)s 3(oundation;)k 5894(either)s 6492(v)s 3(ersion)k
+7245(2)s 7414(of)s 7680(the)s 8023(License,)s 8867(or)s
+0 8513(\(at)m 311(your)s 810(option\))s 1550(an)s 3(y)k
+1947(later)s 2430(v)s 3(ersion.)k 0 8105(This)m 476(program)s
+1346(is)s 1556(distrib)s 4(uted)k 2632(in)s 2875(the)s
+3223(hope)s 3745(that)s 4163(it)s 4355(will)s 4781(be)s
+5063(useful,)s 5754(b)s 4(ut)k 240 fnt83 6116 8107(without)m
+6898(any)s 7300(warr)s 3(anty)k 240 fnt82 8171 8105(;)m
+8283(without)s 0 7864(e)m 6(v)k 3(en)k 500(the)s
+848(implied)s 1636(w)s 2(arranty)k 2537(of)s 240 fnt83
+2808 7866(mer)m 8(c)k 3(hantability)k 240 fnt82 4367 7864(or)m
+240 fnt83 4626 7866(\207tness)m 5279(for)s 5623(a)s 5798(particular)s
+6833(purpose)s 240 fnt82 7598 7864(.)m 7702(See)s 8103(the)s
+8451(GNU)s 0 7624(General)m 811(Public)s 1475(License)s 2274(for)s
+2612(more)s 3159(details.)s 0 7216(Y)m 26(ou)k 442(should)s
+1139(ha)s 4(v)k 3(e)k 1640(re)s 1821(cei)s 6(v)k 3(ed)k
+2494(a)s 2660(cop)s 2(y)k 3178(of)s 3449(the)s
+3797(GNU)s 4372(Gen)s 4768(er)s 4953(al)s 5180(Pub)s
+5546(lic)s 5837(Li)s 6043(cense)s 6630(along)s 7215(with)s
+gsave
+7697 7270 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(sudo)m 
+240 fnt31 0 -52(userv)m 
 grestore
-8851(21)s
-0 4331(6.5.)m 1200(Don')s 4(t)k 1814(gi)s 6(v)k 3(e)k
-2273(access)s 2934(to)s 3173(general-purpose)s 4769(utilities)s 8851(21)s
-9066 670 0 670 240 240 60 0 3080 LoutGr2
+8197(;)s 8309(if)s 8526(not,)s
+0 6975(write)m 546(to)s 785(the)s 1133(Free)s 1613(Soft)s
+2011(w)s 2(are)k 2529(F)s 3(oun)k 3016(da)s
+3242(tion,)s 3721(59)s 4012(T)s 16(em)k 4434(ple)s
+4782(Place)s 5355(-)s 5483(Suite)s 6030(330,)s 6497(Boston,)s
+7283(MA)s 7726(02111-1307,)s 0 6735(USA.)m 9066 610 0 610 240 240 60 0 5771 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
 xsize neg 0 rlineto
 closepath fill
 grestore
-320 fnt84 0 66(0.3.)m 628(Copyright)s 2109(Notice)s 
-grestore
-gsave
-0 2970 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -460(userv)m 
-grestore
-560 2916(is)m 770(Cop)s 2(yright)k 1799(1996-1999)s
-2889(Ian)s 3251(Jackson.)s gsave
-0 2357 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-544 2303(is)m
-737(free)s 1146(softw)s 2(are;)k 2062(you)s 2460(can)s
-2832(redistrib)s 4(ute)k 3955(it)s 4130(and/or)s 4784(modify)s
-5512(it)s 5688(under)s 6276(the)s 6607(terms)s 7172(of)s
-7426(the)s 7757(GNU)s 8315(General)s 0 2063(Public)m 659(License)s
-1453(as)s 1698(published)s 2682(by)s 2971(the)s 3314(Free)s
-3789(Softw)s 2(are)k 4699(F)s 3(oundation;)k 5894(either)s
-6492(v)s 3(ersion)k 7245(2)s 7414(of)s 7680(the)s
-8023(License,)s 8867(or)s 0 1823(\(at)m 311(your)s 810(option\))s
-1550(an)s 3(y)k 1947(later)s 2430(v)s 3(ersion.)k
-0 1415(This)m 476(program)s 1346(is)s 1556(distrib)s 4(uted)k
-2632(in)s 2875(the)s 3223(hope)s 3745(that)s 4163(it)s
-4355(will)s 4781(be)s 5063(useful,)s 5754(b)s 4(ut)k
-240 fnt83 6116 1417(without)m 6898(any)s 7300(warr)s 3(anty)k
-240 fnt82 8171 1415(;)m 8283(without)s 0 1174(e)m 6(v)k 3(en)k
-500(the)s 848(implied)s 1636(w)s 2(arranty)k 2537(of)s
-240 fnt83 2808 1176(mer)m 8(c)k 3(hantability)k 240 fnt82
-4367 1174(or)m 240 fnt83 4626 1176(\207tness)m 5279(for)s 5623(a)s
-5798(particular)s 6833(purpose)s 240 fnt82 7598 1174(.)m 7702(See)s
-8103(the)s 8451(GNU)s 0 934(General)m 811(Public)s 1475(License)s
-2274(for)s 2612(more)s 3159(details.)s 0 52(User)m 511(service)s
-1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8652(0.62)s
-
+320 fnt84 0 6(0.3.)m
+628(Contents)s 
+grestore
+0 5477(1.)m 1200(Introduction)s 8962(3)s 0 5250(2.)m
+1200(Client)s 1844(program)s 2714(usage)s 8952(4)s 0 5013(2.1.)m
+1200(Options)s 8952(4)s 0 4776(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k
+3118(options)s 8958(7)s 0 4539(3.)m 1200(Ex)s 3(ecution)k
+2224(en)s 9(vironment)k 3484(of)s 3755(the)s 4103(service)s
+4835(program)s 8959(8)s 0 4302(3.1.)m 1200(File)s 1627(descriptors)s
+8959(8)s 0 4065(3.2.)m 1200(En)s 9(vironment)k 8955(9)s
+0 3838(4.)m 1200(Service-side)s 2436(con\207guration)s 8831(10)s 0 3601(4.1.)m
+1200(Con\207guration)s 2587(\207le)s 2948(syntax)s 8831(10)s 0 3364(4.2.)m
+1200(Con\207guration)s 2587(\207le)s 2948(directi)s 6(v)k 3(es)k
+8831(10)s 0 3127(4.2.1.)m 1200(Immediate)s 2277(directi)s 6(v)k 3(es)k
+8851(11)s 0 2900(4.2.2.)m 1200(Directi)s 6(v)k 3(es)k
+2223(with)s 2705(delayed)s 3507(ef)s 6(fect)k 8832(12)s
+0 2663(4.2.3.)m 1200(Control)s 1986(structure)s 2877(directi)s 6(v)k 3(es)k
+8832(12)s 0 2436(4.2.4.)m 1200(Directi)s 6(v)k 3(es)k
+2223(for)s 2561(changing)s 3492(e)s 3(x)k 3(ecution)k
+4473(settings)s 8832(14)s 0 2198(4.3.)m 1200(Errors)s 1847(in)s
+2090(the)s 2438(con\207guration)s 3771(\207le)s 8833(16)s 0 1960(4.4.)m
+1200(Def)s 2(aults)k 8833(16)s 0 1733(5.)m 1200(Information)s
+2398(passed)s 3094(through)s 3896(the)s 4244(client/daemon)s 5655(combination)s
+8839(18)s 0 1495(6.)m 1200(Applications)s 2473(and)s 2877(notes)s
+3433(on)s 3730(use)s 8831(20)s 0 1257(6.1.)m 1200(Standard)s
+2108(services)s 2928(and)s 3332(directory)s 4248(management)s 8831(20)s
+0 1019(6.2.)m 1200(Reducing)s 2171(the)s 2519(number)s 3310(of)s
+3581(absolutely)s 4618(pri)s 6(vile)k 3(ged)k 5636(subsystems)s
+8831(20)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
+2462(client)s 3052(speci\207cation)s 8652(0.62)s 
 grestore
 
 grestore
@@ -424,24 +414,37 @@ gsave
 gsave
 0 LoutMargSet
 grestore
-240 fnt84 0 13842(2)m 240 fnt82 0 13254(Y)m 26(ou)k
-442(should)s 1139(ha)s 4(v)k 3(e)k 1640(re)s
-1821(cei)s 6(v)k 3(ed)k 2494(a)s 2660(cop)s 2(y)k
-3178(of)s 3449(the)s 3797(GNU)s 4372(Gen)s 4768(er)s
-4953(al)s 5180(Pub)s 5546(lic)s 5837(Li)s 6043(cense)s
-6630(along)s 7215(with)s gsave
-7697 13308 translate
+240 fnt84 0 13842(2)m 240 fnt82 0 13253(6.3.)m 1200(Do)s
+1546(not)s 1912(gi)s 6(v)k 3(e)k 2371(a)s 3(w)k 2(ay)k
+2925(e)s 3(xcessi)k 6(v)k 3(e)k 3885(pri)s 6(vile)k 3(ge)k
+4781(to)s gsave
+5020 13307 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(userv)m 
+grestore
+5520(-using)s 6171(f)s 2(acilities)k
+8831(20)s 0 13015(6.4.)m gsave
+1200 13069 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
-8197(;)s
-8309(if)s 8526(not,)s 0 13013(write)m 546(to)s 785(the)s
-1133(Free)s 1613(Soft)s 2011(w)s 2(are)k 2529(F)s 3(oun)k
-3016(da)s 3242(tion,)s 3721(59)s 4012(T)s 16(em)k
-4434(ple)s 4782(Place)s 5355(-)s 5483(Suite)s 6030(330,)s
-6497(Boston,)s 7283(MA)s 7726(02111-1307,)s 0 12773(USA.)m 0 52(0.62)m
-4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
-7861(speci\207cation)s 
+1760(is)s
+1970(not)s 2336(a)s 2502(replacement)s 3729(for)s gsave
+4067 13069 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(really)m 
+grestore
+4727(and)s gsave
+5131 13069 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(sudo)m 
+grestore
+8851(21)s
+0 12776(6.5.)m 1200(Don')s 4(t)k 1814(gi)s 6(v)k 3(e)k
+2273(access)s 2934(to)s 3173(general-purpose)s 4769(utilities)s 8851(21)s
+0 52(0.62)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
+7271(client)s 7861(speci\207cation)s 
 grestore
 
 grestore
@@ -580,7 +583,7 @@ grestore
 1382(pr)s 6(ogram)k 2737(usage)s 
 grestore
 gsave
-480 12321 translate
+480 12081 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m
 gsave
@@ -625,12 +628,12 @@ grestore
 9029(\202])s 
 grestore
 240 fnt83
-0 11448(service-user)m 240 fnt82 1232 11446(speci\207es)m 2106(which)s 2748(user)s
+0 11208(service-user)m 240 fnt82 1232 11206(speci\207es)m 2106(which)s 2748(user)s
 3206(is)s 3416(to)s 3655(pro)s 3(vide)k 4439(the)s
 4787(service.)s 5567(The)s 5995(user)s 6453(may)s 6919(be)s
 7201(a)s 7367(login)s 7916(name)s 8490(or)s 8749(a)s
-0 11206(numeric)m 836(uid,)s 1249(or)s gsave
-1508 11260 translate
+0 10966(numeric)m 836(uid,)s 1249(or)s gsave
+1508 11020 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211)m
 
@@ -638,12 +641,12 @@ grestore
 1668(to)s 1907(indicate)s 2719(that)s 3137(the)s 3485(service)s
 4217(user)s 4675(is)s 4885(to)s 5124(be)s 5406(the)s
 5754(same)s 6301(as)s 6551(the)s 6899(calling)s 7602(user)s 13(.)k
-0 10798(The)m 428(service)s 1160(name)s 1734(is)s 1944(interpreted)s
-3036(by)s 3330(the)s 3678(userv)s 153 fnt82 4191 10887(1)m
-240 fnt82 4311 10798(daemon)m 5126(on)s 5423(behalf)s 6092(of)s
+0 10558(The)m 428(service)s 1160(name)s 1734(is)s 1944(interpreted)s
+3036(by)s 3330(the)s 3678(userv)s 153 fnt82 4191 10647(1)m
+240 fnt82 4311 10558(daemon)m 5126(on)s 5423(behalf)s 6092(of)s
 6363(the)s 6711(service)s 7443(user)s 13(.)k 7932(It)s
-8137(will)s 8563(often)s 0 10558(be)m 282(the)s 630(name)s
-1204(of)s 1475(a)s 1641(program.)s 9066 670 0 670 240 240 60 0 9534 LoutGr2
+8137(will)s 8563(often)s 0 10318(be)m 282(the)s 630(name)s
+1204(of)s 1475(a)s 1641(program.)s 9066 670 0 670 240 240 60 0 9294 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -653,201 +656,236 @@ grestore
 320 fnt84 0 66(2.1.)m
 628(Options)s 
 grestore
-0 9072(Single-letter)m 1233(options)s 1983(may)s 2442(be)s
+0 8832(Single-letter)m 1233(options)s 1983(may)s 2442(be)s
 2718(combined)s 3714(as)s 3957(is)s 4161(usual)s 4714(with)s
 5190(Unix)s 5718(programs,)s 6721(and)s 7119(the)s 7461(v)s 6(alue)k
-8022(for)s 8354(such)s 8843(an)s 0 8832(option)m 669(may)s
+8022(for)s 8354(such)s 8843(an)s 0 8592(option)m 669(may)s
 1135(appear)s 1832(in)s 2075(the)s 2423(same)s 2970(ar)s 4(gument)k
 3929(or)s 4188(in)s 4431(the)s 4779(ne)s 3(xt.)k
 gsave
-120 8478 translate
+120 8238 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211B)m 
 grestore
 gsave
-120 8238 translate
+120 7998 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211builtin)m 
 grestore
-480 7944(Requests)m
-1387(that)s 1797(a)s 1955(b)s 4(uiltin)k 2624(service)s
-3347(be)s 3621(pro)s 3(vided.)k 4565(This)s 5033(is)s
-5235(equi)s 6(v)k 6(alent)k 6270(to)s 6501(using)s
-7065(the)s gsave
-7405 7998 translate
+480 7704(Re)m
+742(quests)s 1385(that)s 1797(a)s 1956(b)s 4(uiltin)k
+2627(ser)s 2905(vice)s 3352(be)s 3628(pro)s 3940(vid)s
+4244(ed.)s 4567(This)s 5037(is)s 5241(equi)s 6(v)k
+5762(a)s 5868(lent)s 6279(to)s 6512(us)s 6716(ing)s
+7068(the)s gsave
+7410 7758 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211override)m 
 grestore
-8457(option)s 480 7703(to)m
-719(specify)s 1463(a)s 1629(string)s 2226(consisting)s 3249(of)s
+8464(op)s 8697(tion)s
+480 7463(to)m 719(spec)s 1137(i)s 1197(fy)s 1450(a)s
+1616(string)s 2213(con)s 2556(sist)s 2874(ing)s 3233(of)s
 gsave
-3520 7757 translate
+3504 7517 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211builtin)m 
 grestore
-5081(follo)s 6(wed)k 5983(by)s
-6277(the)s 240 fnt83 6625 7705(b)m 4(uiltin-service)k 240 fnt82
-8053 7703(requested,)m 480 7463(and)m 884(requesting)s 1933(a)s 2099(service)s
-2831(user)s 3289(of)s gsave
-3560 7517 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211)m 
-grestore
-3720(\(indicating)s
-4808(the)s 5156(calling)s 5859(user\).)s 480 7055(If)m 701(the)s
-1039(b)s 4(uiltin)k 1707(ser)s 1985(vice)s 2429(be)s
-2651(ing)s 3000(re)s 3181(quest)s 3686(ed)s 3961(re)s
-4142(quires)s 4767(a)s 240 fnt83 4924 7057(service-)m 5667(ar)s 8(gument)k
-240 fnt82 6631 7055(then)m 7090(this)s 7477(must)s 7992(be)s
-8264(sup)s 8590(plied)s 480 6814(to)m 712(the)s 1052(client)s
-1635(in)s 1870(the)s 2211(same)s 2750(ar)s 2935(gu)s
-3170(ment)s 3700(as)s 3943(the)s 240 fnt83 4283 6816(b)m 4(uiltin-)k
-4970(service)s 240 fnt82 5639 6814(.)m 5736(See)s 6129(`Di)s
-6441(rec)s 6725(ti)s 6(v)k 3(es)k 7211(for)s
-7541(chang)s 8106(ing)s 8457(e)s 3(x)k 8675(e)s
-8777(cu)s 8998(-)s 480 6574(tion)m 909(set)s 1174(tings',)s
-1825(page)s 2333(14)s 2627(for)s 2965(de)s 3187(tails)s
-3635(of)s 3906(the)s 4254(b)s 4(uiltin)k 4931(ser)s
-5209(vices)s 5751(a)s 4(v)k 6(ail)k 6200(able,)s
-6705(and)s 7109(`Security-)s 8052(o)s 3(v)k 3(erriding)k
-480 6334(op)m 713(tions',)s 1364(page)s 1872(7)s 2040(for)s
-2378(de)s 2600(tails)s 3048(of)s 3319(the)s gsave
-3667 6388 translate
+5065(fol)s 5325(lo)s 6(wed)k
+5962(by)s 6256(the)s 240 fnt83 6604 7465(b)m 4(uiltin-)k
+7291(service)s 240 fnt82 8020 7463(re)m 8201(quest)s 8706(ed,)s
+480 7223(and)m 870(re)s 1051(quest)s 1556(ing)s 1900(a)s
+2052(ser)s 2330(vice)s 2769(user)s 3213(of)s gsave
+3469 7277 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(\211)m 
+grestore
+3615(\(in)s 3877(di)s 4057(cat)s 4335(ing)s
+4679(the)s 5012(call)s 5351(ing)s 5696(user\).)s 6322(If)s
+6538(the)s 6871(b)s 4(uiltin)k 7534(ser)s 7812(vice)s
+8251(be)s 8473(ing)s 8817(re)s 8998(-)s 480 6983(quest)m
+985(ed)s 1254(re)s 1435(quires)s 2054(a)s 240 fnt83
+2204 6985(service-)m 2947(ar)s 8(gument)k 240 fnt82 3905 6983(then)m
+4358(this)s 4738(must)s 5247(be)s 5513(sup)s 5839(plied)s
+6359(to)s 6582(the)s 6914(client)s 7488(in)s 7715(the)s
+8047(same)s 8578(ar)s 8763(gu)s 8998(-)s 480 6742(ment)m
+1012(as)s 1256(the)s 240 fnt83 1598 6744(b)m 4(uiltin-)k
+2285(service)s 240 fnt82 2954 6742(.)m 3052(See)s 3447(`Di)s
+3759(rec)s 4043(ti)s 6(v)k 3(es)k 4530(for)s
+4862(chang)s 5427(ing)s 5780(e)s 3(x)k 5998(e)s
+6100(cu)s 6321(tion)s 6744(set)s 7009(tings',)s 7654(page)s
+8156(14)s 8444(for)s 8776(de)s 8998(-)s 480 6502(tails)m
+921(of)s 1184(the)s 1524(b)s 4(uiltin)k 2193(ser)s
+2471(vices)s 3006(a)s 4(v)k 6(ail)k 3455(able,)s
+3952(and)s 4348(`Security-)s 5291(o)s 3(v)k 3(erriding)k
+6326(op)s 6559(tions',)s 7203(page)s 7703(7)s 7863(for)s
+8193(de)s 8415(tails)s 8855(of)s 480 6261(the)m gsave
+822 6315 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211\211override)m 
 grestore
-4728(op)s 4961(tions.)s 480 5926(The)m 897(actual)s
-1511(service)s 2232(name)s 2794(passed)s 3479(will)s 3894(be)s
-4164(the)s 240 fnt83 4501 5928(b)m 4(uiltin-service)k 240 fnt82
-5869 5926(;)m 5970(note)s 6427(that)s 6833(this)s 7218(actual)s
-7832(service)s 8552(name)s 480 5686(\(as)m 809(opposed)s 1666(to)s
-1905(the)s 2253(o)s 3(v)k 3(erride)k 3099(data\))s
-3625(and)s 4029(the)s 240 fnt83 4377 5688(info-ar)m 8(gument)k
-240 fnt82 5742 5686(s)m 5886(supplied)s 6755(will)s 7181(be)s
-7463(ignored)s 8252(by)s 8546(most)s 480 5446(b)m 4(uiltin)k
-1149(services;)s 2022(the)s 2361(o)s 3(v)k 3(erride)k
-3199(mechanism)s 4339(and)s gsave
-4735 5500 translate
+1877(op)s 2110(tions.)s 2733(The)s 3155(ac)s
+3360(tu)s 3541(al)s 3762(ser)s 4040(vice)s 4488(name)s
+5056(passed)s 5746(will)s 6166(be)s 6442(the)s 240 fnt83
+6784 6263(b)m 4(uiltin-)k 7471(service)s 240 fnt82 8140 6261(;)m
+8246(note)s 8708(that)s 480 6021(this)m 876(ac)s 1081(tu)s
+1262(al)s 1489(ser)s 1767(vice)s 2221(name)s 2795(\(as)s
+3124(op)s 3357(posed)s 3974(to)s 4213(the)s 4561(o)s 3(v)k 3(er)k
+4980(ride)s 5407(data\))s 5933(and)s 6337(the)s 240 fnt83
+6685 6023(info-)m 7124(ar)s 8(gument)k 240 fnt82 8038 6021(s)m
+8182(sup)s 8508(plied)s 480 5781(will)m 906(be)s 1188(ig)s
+1367(nored)s 1970(by)s 2264(most)s 2789(b)s 4(uiltin)k
+3466(ser)s 3744(vices;)s 4347(the)s 4695(o)s 3(v)k 3(er)k
+5114(ride)s 5541(mech)s 6056(a)s 6162(nism)s 6687(and)s
+gsave
+7091 5835 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211builtin)m 
 grestore
-6287(will)s
-6705(be)s 6978(used)s 7467(to)s 7697(ensure)s 8369(that)s
-8778(the)s 480 5206(right)m 991(b)s 4(uiltin)k 1668(service)s
-2400(is)s 2610(called)s 3238(with)s 3720(the)s 4068(right)s
-240 fnt83 4579 5208(service-ar)m 8(gument)k 240 fnt82 6248 5206(s.)m
-gsave
-120 4866 translate
+8652(will)s 480 5541(be)m 762(used)s
+1259(to)s 1498(en)s 1721(sure)s 2175(that)s 2593(the)s
+2941(right)s 3452(b)s 4(uiltin)k 4129(ser)s 4407(vice)s
+4861(is)s 5071(called)s 5699(with)s 6181(the)s 6529(right)s
+240 fnt83 7040 5543(service-)m 7783(ar)s 8(gument)k 240 fnt82
+8697 5541(s.)m gsave
+120 5201 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211f)m gsave
 288 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd)m 
+240 fnt83 0 -52(fd)m
+
 grestore
-561([)s
-gsave
+561([)s gsave
 705 0 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(modi\207er)m 2(s)k 
 grestore
-1961(]=)s gsave
+1961(]=)s
+gsave
 2249 0 translate
 1.4219 1.0000 scale
-240 fnt83
-0 -52(\207lename)m 
+240 fnt83 0 -52(\207lename)m 
 grestore
 
 grestore
 gsave
-120 4626 translate
+120 4961 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211file)m gsave
 1008 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd)m
-
+240 fnt83
+0 -52(fd)m 
 grestore
 1281([)s gsave
 1425 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(modi\207er)m 2(s)k 
+240 fnt83 0 -52(modi\207er)m 2(s)k
+
 grestore
-2681(]=)s
-gsave
+2681(]=)s gsave
 2969 0 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(\207lename)m 
 grestore
 
 grestore
-480 4332(Requests)m 1384(that)s 1791(data)s
-2238(be)s 2509(copied)s 3194(in)s 3426(and)s 3819(out)s
-4174(of)s 4434(the)s 4771(service)s 5492(using)s 6053(pipes.)s
-6651(F)s 3(or)k 7029(each)s 7513(\207le)s 7863(or)s
-8111(descriptor)s 480 4092(this)m 858(will)s 1266(be)s 1530(done)s
-2033(by)s 2309(creating)s 3113(a)s 3261(pipe,)s 3761(one)s
-4145(end)s 4531(of)s 4784(which)s 5407(is)s 5599(passed)s
-6277(to)s 6498(the)s 6827(service)s 7541(program)s 8393(and)s
-8778(the)s 480 3852(other)m 1028(end)s 1429(of)s 1697(which)s
-2336(is)s 2543(passed)s 3236(to)s 3472(a)s 3635(cop)s 2(y)k
-4149(of)s gsave
-4417 3906 translate
+480 4667(Requests)m 1384(that)s
+1791(data)s 2238(be)s 2509(copied)s 3194(in)s 3426(and)s
+3819(out)s 4174(of)s 4434(the)s 4771(service)s 5492(using)s
+6053(pipes.)s 6651(F)s 3(or)k 7029(each)s 7513(\207le)s
+7863(or)s 8111(descriptor)s 480 4427(this)m 858(will)s 1266(be)s
+1530(done)s 2033(by)s 2309(creating)s 3113(a)s 3261(pipe,)s
+3761(one)s 4145(end)s 4531(of)s 4784(which)s 5407(is)s
+5599(passed)s 6277(to)s 6498(the)s 6827(service)s 7541(program)s
+8393(and)s 8778(the)s 480 4187(other)m 1028(end)s 1429(of)s
+1697(which)s 2336(is)s 2543(passed)s 3236(to)s 3472(a)s
+3635(cop)s 2(y)k 4149(of)s gsave
+4417 4241 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m 
+240 fnt31 0 -52(cat)m
+
 grestore
-4774(in)s 9(v)k 4(ok)k 2(ed)k
-5586(by)s 5877(the)s 6222(client;)s 6861(the)s 7206(other)s
-7754(\207le)s 8111(descriptor)s 480 3612(passed)m 1176(to)s gsave
-1415 3666 translate
+4774(in)s 9(v)k 4(ok)k 2(ed)k 5586(by)s
+5877(the)s 6222(client;)s 6861(the)s 7206(other)s 7754(\207le)s
+8111(descriptor)s 480 3947(passed)m 1161(to)s gsave
+1384 4001 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(cat)m 
-grestore
-1775(will)s 2201(be)s 2483(one)s 2885(inherited)s
-3792(by)s 4086(the)s 4434(client)s 5024(program)s 5894(from)s
-6418(the)s 6766(caller)s 7355(or)s 7614(one)s 8016(opened)s
-8766(by)s 480 3372(the)m 828(client)s 1418(program)s 2288(on)s
-2585(behalf)s 3254(of)s 3525(the)s 3873(caller)s 13(.)k
-480 2964(The)m 890(descriptor)s 1886(in)s 2110(the)s 2439(service)s
-3152(program)s 4004(that)s 4403(should)s 5081(be)s 5344(connected)s
-6353(must)s 6860(be)s 7123(speci\207ed)s 8012(as)s 240 fnt83
-8243 2966(fd)m 240 fnt82 8435 2964(,)m 8523(either)s 480 2724(as)m
-728(a)s 891(decimal)s 1699(number)s 2487(or)s 2743(as)s
-2990(one)s 3389(of)s 3657(the)s 4002(strings)s gsave
-4688 2778 translate
+240 fnt31 0 -52(cat)m
+
+grestore
+1728(will)s 2139(be)s 2405(one)s 2791(inherited)s 3683(by)s
+3961(the)s 4293(client)s 4868(program)s 5722(from)s 6230(the)s
+6563(caller)s 7136(or)s 7379(one)s 7766(opened)s 8500(by)s
+8778(the)s 480 3707(client)m 1063(program)s 1926(on)s 2215(behalf)s
+2877(of)s 3140(the)s 3481(caller)s 13(.)k 4153(The)s
+4574(descriptor)s 5581(in)s 5817(the)s 6157(service)s 6882(program)s
+7744(that)s 8155(should)s 8844(be)s 480 3466(connected)m 1503(must)s
+2023(be)s 2299(speci\207ed)s 3202(as)s 240 fnt83 3446 3468(fd)m
+240 fnt82 3638 3466(,)m 3740(either)s 4338(as)s 4582(a)s
+4743(decimal)s 5548(number)s 6334(or)s 6588(as)s 6832(one)s
+7229(of)s 7494(the)s 7837(strings)s gsave
+8519 3520 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(stdin)m 
+240 fnt31 0 -52(stdin)m
+
 grestore
-5188(,)s gsave
-5292 2778 translate
+9019(,)s gsave
+480 3280 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stdout)m 
 grestore
-5949(or)s
+1126 3226(or)m gsave
+1370 3280 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(stderr)m 
+grestore
+1970(.)s 2059(The)s 2473(ne)s 3(xt)k
+2927(ar)s 4(gument)k 3871(is)s 4067(a)s 4218(\207lename)s
+5082(which)s 5709(will)s 6121(be)s 6388(opened)s 7123(by)s
+7403(the)s 7736(client)s 8311(with)s 8778(the)s 480 2985(pri)m 6(vile)k 3(ges)k
+1458(of)s 1722(the)s 2064(calling)s 2760(user)s 13(.)k
+240 fnt83 3303 2987(modi\207er)m 2(s)k 240 fnt82 4240 2985(is)m
+4444(used)s 4934(to)s 5166(specify)s 5904(whether)s 6727(the)s
+7069(\207le)s 7423(or)s 7676(descriptor)s 8684(is)s 8887(to)s
+480 2745(be)m 762(read)s 1230(from)s 1754(or)s 2012(written)s
+2745(to.)s 3034(It)s 3239(consists)s 4046(of)s 4317(a)s
+4482(series)s 5076(of)s 5346(w)s 2(ords)k 5980(separated)s
+6939(by)s 7233(commas.)s 8133(A)s 8362(comma)s 480 2504(may)m
+946(separate)s 1784(the)s 240 fnt83 2132 2506(modi\207er)m 2(s)k
+240 fnt82 3076 2504(from)m 3600(the)s 240 fnt83 3948 2506(fd)m
+240 fnt82 4200 2504(and)m 4604(is)s 4814(required)s 5668(if)s
+240 fnt83 5885 2506(fd)m 240 fnt82 6137 2504(is)m 6347(not)s
+6713(numeric.)s 7660(The)s 8088(modi\207er)s 480 2264(w)m 2(ords)k
+1114(are:)s gsave
+600 2078 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(read)m 
+grestore
 gsave
-6205 2778 translate
+960 1838 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(stderr)m 
+240 fnt31 0 -52(O_RDONLY)m
+
 grestore
-6805(.)s 6906(The)s 7331(ne)s 3(xt)k
-7797(ar)s 4(gument)k 8753(is)s 8960(a)s 480 2484(\207lename)m
-1359(which)s 2001(will)s 2427(be)s 2709(opened)s 3459(by)s
-3753(the)s 4101(client)s 4691(with)s 5173(the)s 5521(pri)s 6(vile)k 3(ges)k
-6505(of)s 6776(the)s 7124(calling)s 7827(user)s 13(.)k
-240 fnt83 480 2078(modi\207er)m 2(s)k 240 fnt82 1424 2076(is)m
-1634(used)s 2131(to)s 2370(specify)s 3114(whether)s 3944(the)s
-4292(\207le)s 4653(or)s 4912(descriptor)s 5927(is)s 6137(to)s
-6376(be)s 6658(read)s 7127(from)s 7651(or)s 7910(written)s
-8643(to.)s 480 1835(It)m 682(consists)s 1487(of)s 1755(a)s
-1918(series)s 2508(of)s 2776(w)s 2(ords)k 3407(separated)s
-4364(by)s 4655(commas.)s 5552(A)s 5779(comma)s 6540(may)s
-7003(separate)s 7838(the)s 240 fnt83 8182 1837(modi\207er)m 2(s)k
-240 fnt82 480 1594(from)m 1004(the)s 240 fnt83 1352 1596(fd)m
-240 fnt82 1604 1594(and)m 2008(is)s 2218(required)s 3072(if)s
-240 fnt83 3289 1596(fd)m 240 fnt82 3541 1594(is)m 3751(not)s
-4117(numeric.)s 1134 0 0 0 240 240 60 0 948 LoutGr2
+1761 1784(:)m 1867(Allo)s 6(w)k 2513(reading)s 3283(and)s
+3687(not)s 4053(writing.)s 4847(May)s 5340(not)s 5706(be)s
+5988(used)s 6485(with)s gsave
+6967 1838 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(write)m 
+grestore
+7527(or)s
+7786(things)s 8422(that)s 960 1544(imply)m 1572(it.)s gsave
+600 1358 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(write)m 
+grestore
+1134 0 0 0 240 240 60 0 948 LoutGr2
 0 0 moveto xsize 0 lineto stroke
 grestore
 
@@ -900,482 +938,412 @@ gsave
 gsave
 1 LoutMargSet
 grestore
-240 fnt84 8953 13844(5)m 240 fnt82 480 13254(The)m 908(modi\207er)s
-1778(w)s 2(ords)k 2412(are:)s gsave
-600 13068 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m
-
-grestore
-gsave
-960 12828 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_RDONLY)m 
-grestore
-1761 12774(:)m 1867(Allo)s 6(w)k
-2513(reading)s 3283(and)s 3687(not)s 4053(writing.)s 4847(May)s
-5340(not)s 5706(be)s 5988(used)s 6485(with)s gsave
-6967 12828 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(write)m 
-grestore
-7527(or)s 7786(things)s 8422(that)s 960 12534(imply)m
-1572(it.)s gsave
-600 12348 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-gsave
-960 12108 translate
+240 fnt84 8953 13844(5)m gsave
+960 13308 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(O_WRONLY)m
-
+240 fnt31 0 -52(O_WRONLY)m 
 grestore
-1761 12054(:)m 1867(Allo)s 6(w)k 2513(writing)s 3256(and)s
-3660(not)s 4026(reading.)s 240 fnt83 4847 12056(Doesn')m 7(t)k
+240 fnt82
+1761 13254(:)m 1867(Allo)s 6(w)k 2513(writing)s 3256(and)s
+3660(not)s 4026(reading.)s 240 fnt83 4847 13256(Doesn')m 7(t)k
 5661(truncate)s 6511(or)s 6789(cr)s 8(eate)k 240 fnt82
-7431 12054(without)m gsave
-8222 12108 translate
+7431 13254(without)m gsave
+8222 13308 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(truncate)m 
 grestore
-960 11814(or)m gsave
-1219 11868 translate
+960 13014(or)m gsave
+1219 13068 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(create)m 
 grestore
 1819(.)s gsave
-1923 11868 translate
+1923 13068 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
 2483(or)s
 2742(things)s 3378(that)s 3796(imply)s 4408(it)s 4600(may)s
 5066(not)s 5432(be)s 5714(used)s 6211(with)s gsave
-6693 11868 translate
+6693 13068 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(read)m 
 grestore
 7093(.)s gsave
-600 11628 translate
+600 12828 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(overwrite)m 
 grestore
-960 11334(Equi)m 6(v)k 6(alent)k
+960 12534(Equi)m 6(v)k 6(alent)k
 2044(to)s gsave
-2283 11388 translate
+2283 12588 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write,create,truncate)m 
 grestore
 4385(.)s gsave
-600 11148 translate
+600 12348 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(create)m 
 grestore
 gsave
-600 10908 translate
+600 12108 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(creat)m 
 grestore
 gsave
-960 10668 translate
+960 11868 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(O_CREAT)m
 
 grestore
-1660 10614(:)m 1766(Creates)s 2533(the)s 2881(\207le)s 3242(if)s
+1660 11814(:)m 1766(Creates)s 2533(the)s 2881(\207le)s 3242(if)s
 3459(necessary)s 15(.)k 4477(Implies)s gsave
-5244 10668 translate
+5244 11868 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m
 
 grestore
 5744(.)s gsave
-600 10428 translate
+600 11628 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(exclusive)m 
 grestore
 gsave
-600 10188 translate
+600 11388 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(excl)m
 
 grestore
 gsave
-960 9948 translate
+960 11148 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(O_EXCL)m 
 grestore
-1560 9894(:)m 1666(F)s 3(ails)k
+1560 11094(:)m 1666(F)s 3(ails)k
 2178(if)s 2395(the)s 2743(\207le)s 3104(already)s 3861(e)s 3(xists.)k
 4506(Implies)s gsave
-5273 9948 translate
+5273 11148 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
 5833(and)s gsave
-6237 9948 translate
+6237 11148 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(create)m 
 grestore
 6837(.)s 6941(May)s 7434(not)s 7800(be)s
 8082(used)s 8579(with)s gsave
-960 9708 translate
+960 10908 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(truncate)m 
 grestore
-1761 9654(.)m
+1761 10854(.)m
 gsave
-600 9468 translate
+600 10668 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(truncate)m 
 grestore
 gsave
-600 9228 translate
+600 10428 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(trunc)m 
 grestore
 gsave
-960 8988 translate
+960 10188 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(O_TRUNC)m 
 grestore
-1660 8934(:)m 1766(T)s 8(runcate)k 2663(an)s 3(y)k
+1660 10134(:)m 1766(T)s 8(runcate)k 2663(an)s 3(y)k
 3060(e)s 3(xisting)k 3867(\207le.)s 4276(Implies)s gsave
-5043 8988 translate
+5043 10188 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(write)m 
 grestore
 5543(.)s 5647(May)s 6140(not)s 6506(be)s
 6788(used)s 7285(with)s gsave
-7767 8988 translate
+7767 10188 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(exclusive)m 
 grestore
 8668(.)s
 gsave
-600 8748 translate
+600 9948 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(append)m 
 grestore
 gsave
-960 8508 translate
+960 9708 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(O_APPEND)m 
 grestore
-1761 8454(:)m
+1761 9654(:)m
 1867(All)s 2227(writes)s 2861(will)s 3287(append)s 4037(to)s
 4276(the)s 4624(\207le.)s 5033(Implies)s gsave
-5800 8508 translate
+5800 9708 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m
 
 grestore
 6360(\(b)s 4(ut)k 6801(not)s gsave
-7167 8508 translate
+7167 9708 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(create)m
 
 grestore
 7767(\).)s gsave
-600 8268 translate
+600 9468 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(sync)m 
 grestore
 gsave
-960 8028 translate
+960 9228 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(O_SYNC)m
 
 grestore
-1560 7974(:)m 1666(Do)s 2012(writes)s 2646(synchronously)s 15(.)k
+1560 9174(:)m 1666(Do)s 2012(writes)s 2646(synchronously)s 15(.)k
 4132(Implies)s gsave
-4899 8028 translate
+4899 9228 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
 5399(.)s gsave
-600 7788 translate
+600 8988 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(wait)m 
 grestore
 gsave
-600 7548 translate
+600 8748 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(nowait)m 
 grestore
 gsave
-600 7308 translate
+600 8508 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(close)m
 
 grestore
-960 7014(These)m 1587(modi\207ers)s 2541(control)s 3273(the)s 3621(beha)s 4(viour)k
+960 8214(These)m 1587(modi\207ers)s 2541(control)s 3273(the)s 3621(beha)s 4(viour)k
 4634(of)s 4905(the)s 5253(client,)s 5890(with)s 6372(respect)s
-7108(to)s 7347(the)s 7695(pipes)s 8251(carrying)s 960 6774(data)m
+7108(to)s 7347(the)s 7695(pipes)s 8251(carrying)s 960 7974(data)m
 1418(to)s 1657(and)s 2061(from)s 2585(the)s 2933(service,)s
 3716(when)s 4292(the)s 4640(service)s 5372(terminates.)s 6470(See)s
 6871(belo)s 6(w)k 15(.)k gsave
-600 6588 translate
+600 7788 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(fd)m
 
 grestore
-960 6294(The)m 240 fnt83 1388 6296(\207lename)m 240 fnt82 2252 6294(is)m
+960 7494(The)m 240 fnt83 1388 7496(\207lename)m 240 fnt82 2252 7494(is)m
 2462(not)s 2828(a)s 2994(\207lename)s 3873(b)s 4(ut)k
 4235(a)s 4401(numeric)s 5237(\207le)s 5598(descriptor)s 13(.)k
 6644(One)s 7099(or)s 7358(both)s 7841(of)s gsave
-8112 6348 translate
+8112 7548 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(read)m 
 grestore
 8572(and)s gsave
-960 6107 translate
+960 7307 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
-1520 6053(must)m
+1520 7253(must)m
 2045(be)s 2327(speci\207ed,)s 3284(and)s 3688(no)s 3981(other)s
 4532(w)s 2(ords)k 5166(are)s 5513(allo)s 6(wed.)k
-6368(The)s 240 fnt83 6796 6055(\207lename)m 240 fnt82 7660 6053(may)m
+6368(The)s 240 fnt83 6796 7255(\207lename)m 240 fnt82 7660 7253(may)m
 8126(also)s 8564(be)s gsave
-960 5867 translate
+960 7067 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stdin)m 
 grestore
-1460 5813(,)m
+1460 7013(,)m
 gsave
-1567 5867 translate
+1567 7067 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stdout)m 
 grestore
 2227(or)s gsave
-2486 5867 translate
+2486 7067 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stderr)m
 
 grestore
 3146(for)s 3484(\207le)s 3845(descriptor)s 4860(0,)s 5087(1)s
 5242(or)s 5501(2)s 5675(respecti)s 6(v)k 3(ely)k 15(.)k
-480 5251(If)m 701(no)s 240 fnt83 984 5253(modi\207er)m 2(s)k
-240 fnt82 1918 5251(which)m 2550(imply)s gsave
-3152 5305 translate
+480 6748(If)m 701(no)s 240 fnt83 984 6750(modi\207er)m 2(s)k
+240 fnt82 1918 6748(which)m 2550(imply)s gsave
+3152 6802 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(read)m
 
 grestore
 3602(or)s gsave
-3851 5305 translate
+3851 6802 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
 4401(are)s 4738(used)s
 5226(it)s 5408(is)s 5608(as)s 5848(if)s gsave
-6055 5305 translate
+6055 6802 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(write)m 
 grestore
 6605(had)s 6999(been)s 7498(speci\207ed,)s 8445(e)s 3(xcept)k
-480 5011(that)m 898(if)s 1115(the)s 1463(\207ledescriptor)s 2783(0)s
+480 6508(that)m 898(if)s 1115(the)s 1463(\207ledescriptor)s 2783(0)s
 2958(of)s 3229(the)s 3577(service)s 4309(is)s 4519(being)s
 5104(opened)s 5854(\(either)s 6536(speci\207ed)s 7444(numerically)s 8639(or)s
-480 4771(with)m gsave
-962 4825 translate
+480 6268(with)m gsave
+962 6322 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stdin)m 
 grestore
 1462(\))s 1590(it)s
 1782(is)s 1992(as)s 2242(if)s gsave
-2459 4825 translate
+2459 6322 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(overwrite)m
 
 grestore
 3420(had)s 3824(been)s 4333(speci\207ed)s 5241(\(or)s gsave
-5579 4825 translate
+5579 6322 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(write)m 
 grestore
 6139(if)s 6356(only)s gsave
-6836 4825 translate
+6836 6322 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(fd)m
 
 grestore
-7096(w)s 2(as)k 7517(speci\207ed\).)s 480 4363(The)m 892(client)s
-1465(will)s 1874(also)s 2296(use)s gsave
-2654 4417 translate
+7096(w)s 2(as)k 7517(speci\207ed\).)s 8610(The)s 480 6028(client)m
+1064(will)s 1483(also)s 1915(use)s gsave
+2283 6082 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(O_NOCTTY)m
 
 grestore
-3498(when)s 4057(opening)s 4866(\207les)s 5298(speci\207ed)s 6189(by)s
-6466(the)s 6798(caller)s 9(,)k 7408(to)s 7630(a)s 4(v)k 4(oid)k
-8195(changing)s 480 4123(its)m 756(controlling)s 1858(terminal.)s 480 3715(By)m
-810(de)s 1032(f)s 2(ault)k 1523(stdin,)s 2091(std)s
-2368(out)s 2729(and)s 3129(stderr)s 3728(of)s 3995(the)s
-4338(ser)s 4616(vice)s 5066(will)s 5488(be)s 5766(con)s
-6109(nect)s 6507(ed)s 6786(to)s 7021(the)s 7365(cor)s
-7670(re)s 7851(spond)s 8422(ing)s 8776(de)s 8998(-)s
-480 3475(scrip)m 937(tors)s 1346(on)s 1643(the)s 1991(client.)s
-2625(Di)s 2858(ag)s 3077(nos)s 3401(tics)s 3783(from)s
-4307(the)s 4655(client)s 5245(and)s 5649(dae)s 5977(mon)s
-6460(will)s 6886(also)s 7324(ap)s 7543(pear)s 8014(on)s
-8311(stderr)s 13(.)k 480 3067(If)m gsave
-710 3121 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m
-
-grestore
-1170(is)s 1380(speci\207ed,)s 2337(the)s 2685(client)s 3275(will)s
-3701(w)s 2(ait)k 4170(for)s 4508(the)s 4856(pipe)s
-5324(to)s 5563(be)s 5845(closed,)s 6563(and)s 6967(only)s
-7447(e)s 3(xit)k 7862(after)s 8358(this)s 480 2827(has)m
-850(happened.)s 1872(This)s 2348(means)s 3010(that)s 3428(either)s
-4031(the)s 4379(recei)s 6(ving)k 5315(end)s 5719(of)s
-5990(the)s 6338(pipe)s 6806(connection)s 7913(w)s 2(as)k
-8334(closed)s 480 2587(while)m 1067(data)s 1525(w)s 2(as)k
-1946(still)s 2358(a)s 4(v)k 6(ailable)k 3266(at)s
-3498(the)s 3846(sending)s 4644(end,)s 5097(or)s 5356(that)s
-5774(the)s 6122(end)s 6526(of)s 6797(\207le)s 7158(w)s 2(as)k
-7579(reached)s 8380(on)s 8677(the)s 480 2347(reading)m 1250(\207le)s
-1611(descriptor)s 13(.)k 2657(Errors)s 3304(encountered)s 4531(reading)s
-5301(or)s 5560(writing)s 6303(in)s 6546(the)s 6894(client)s
-7484(at)s 7716(this)s 8112(stage)s 8659(will)s 480 2106(be)m
-762(considered)s 1855(a)s 2021(system)s 2744(error)s 3266(and)s
-3670(cause)s 4256(the)s 4603(client)s 5193(to)s 5431(e)s 3(xit)k
-5845(with)s 6327(status)s 6921(255,)s 7387(b)s 4(ut)k
-7749(will)s 8174(not)s 8539(cause)s 480 1866(disconnection)m 1866(at)s
-2098(the)s 2446(service)s 3178(side)s 3619(since)s 4166(the)s
-4514(service)s 5246(has)s 5616(already)s 6373(e)s 3(xited.)k
-480 1458(If)m gsave
-710 1512 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(close)m 
-grestore
-1270(is)s 1480(speci\207ed)s
-2388(the)s 2736(client)s 3326(will)s 3752(immediately)s 5000(close)s
-5547(the)s 5895(pipe)s 6363(connection)s 7470(by)s 7764(killing)s
-8441(the)s 480 1218(rele)m 6(v)k 6(ant)k 1297(cop)s 2(y)k
-1815(of)s gsave
-2086 1272 translate
+3137(when)s 3707(opening)s 4525(\207les)s 4968(speci\207ed)s 5869(by)s
+6156(the)s 6498(caller)s 9(,)k 7118(to)s 7351(a)s 4(v)k 4(oid)k
+7926(changing)s 8850(its)s 480 5788(controlling)m 1581(terminal.)s 2539(By)s
+2871(def)s 2(ault)k 3591(stdin,)s 4161(stdout)s 4805(and)s
+5207(stderr)s 5809(of)s 6079(the)s 6425(service)s 7156(will)s
+7580(be)s 7861(connected)s 8887(to)s 480 5548(the)m 811(corresponding)s
+2216(descriptors)s 3297(on)s 3577(the)s 3907(client.)s 4524(Diagnostics)s
+5686(from)s 6193(the)s 6523(client)s 7096(and)s 7482(daemon)s
+8280(will)s 8688(also)s 480 5308(appear)m 1177(on)s 1473(stderr)s 13(.)k
+2167(If)s gsave
+2396 5362 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m 
+240 fnt31 0 -52(wait)m 
 grestore
-2386(.)s 2490(If)s
-2720(the)s 3068(service)s 3800(uses)s 4263(the)s 4611(descriptor)s
-5626(it)s 5818(will)s 6244(get)s gsave
-6596 1272 translate
+2856(is)s 3065(speci\207ed,)s
+4022(the)s 4369(client)s 4959(will)s 5384(w)s 2(ait)k
+5853(for)s 6190(the)s 6538(pipe)s 7005(to)s 7244(be)s
+7525(closed,)s 8243(and)s 8646(only)s 480 5068(e)m 3(xit)k
+889(after)s 1379(this)s 1769(has)s 2132(happened.)s 3148(This)s
+3618(means)s 4274(that)s 4685(either)s 5282(the)s 5624(recei)s 6(ving)k
+6554(end)s 6951(of)s 7216(the)s 7558(pipe)s 8019(connection)s
+480 4828(w)m 2(as)k 901(closed)s 1570(while)s 2157(data)s
+2615(w)s 2(as)k 3036(still)s 3448(a)s 4(v)k 6(ailable)k
+4356(at)s 4588(the)s 4936(sending)s 5734(end,)s 6187(or)s
+6446(that)s 6864(the)s 7212(end)s 7616(of)s 7887(\207le)s
+8248(w)s 2(as)k 480 4588(reached)m 1279(on)s 1573(the)s
+1919(reading)s 2686(\207le)s 3045(descriptor)s 13(.)k 4088(Errors)s
+4732(encountered)s 5957(reading)s 6724(or)s 6981(writing)s 7721(in)s
+7962(the)s 8307(client)s 8894(at)s 480 4347(this)m 876(stage)s
+1423(will)s 1849(be)s 2131(considered)s 3225(a)s 3391(system)s
+4115(error)s 4638(and)s 5042(cause)s 5629(the)s 5977(client)s
+6567(to)s 6806(e)s 3(xit)k 7221(with)s 7703(status)s
+8298(255,)s 8764(b)s 4(ut)k 480 4107(will)m 896(not)s
+1251(cause)s 1827(disconnection)s 3203(at)s 3424(the)s 3761(service)s
+4482(side)s 4913(since)s 5449(the)s 5786(service)s 6507(has)s
+6867(already)s 7613(e)s 3(xited.)k 8347(If)s gsave
+8566 4161 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m
-
+240 fnt31
+0 -52(close)m 
 grestore
-7356(\(or)s gsave
-7694 1272 translate
+480 3867(is)m 676(speci\207ed)s 1569(the)s 1902(client)s
+2477(will)s 2888(immediately)s 4121(close)s 4653(the)s 4987(pipe)s
+5440(connection)s 6532(by)s 6811(killing)s 7473(the)s 7806(rele)s 6(v)k 6(ant)k
+8608(cop)s 2(y)k 480 3627(of)m gsave
+744 3681 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(EPIPE)m 
-grestore
-8194(\))s 8322(for)s
-8660(a)s 480 978(writing)m 1218(descriptor)s 2228(or)s 2482(end)s
-2881(of)s 3147(\207le)s 3502(for)s 3835(a)s 3996(reading)s
-4761(one;)s 5214(the)s 5557(descriptor)s 6566(opened)s 7311(by)s
-7600(or)s 7854(passed)s 8545(to)s 8778(the)s 480 738(client)m
-1070(will)s 1496(also)s 1934(be)s 2216(closed.)s 0 52(User)m
-511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s
-8652(0.62)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
+240 fnt31 0 -52(cat)m
 
-%%Page: 6 6
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
 grestore
+1044(.)s 1141(If)s 1364(the)s 1705(service)s 2429(uses)s
+2885(the)s 3226(descriptor)s 4234(it)s 4418(will)s 4837(get)s
 gsave
-0 16840 translate
-0.0000 rotate
-
+5182 3681 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(SIGPIPE)m 
 grestore
+5935(\(or)s gsave
+6265 3681 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(EPIPE)m
 
 grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(6)m 240 fnt82 480 13251(If)m gsave
-707 13305 translate
+6765(\))s 6886(for)s 7217(a)s 7376(writing)s 8111(descriptor)s
+480 3387(or)m 736(end)s 1137(of)s 1404(\207le)s 1762(for)s
+2096(a)s 2259(reading)s 3025(one;)s 3480(the)s 3824(descriptor)s
+4836(opened)s 5582(by)s 5873(or)s 6128(passed)s 6821(to)s
+7056(the)s 7401(client)s 7987(will)s 8410(also)s 8844(be)s
+480 3147(closed.)m 1255(If)s gsave
+1485 3201 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(nowait)m 
-grestore
-1364(is)s 1570(speci\207ed)s 2475(then)s 2941(the)s
-3285(client)s 3872(will)s 4294(not)s 4657(w)s 2(ait)k
-5123(and)s 5523(the)s 5868(connection)s 6972(will)s 7394(remain)s
-8111(open)s 8630(after)s 480 13011(the)m 824(client)s 1409(terminates.)s
-2502(Data)s 3008(may)s 3469(continue)s 4344(to)s 4578(be)s
-4856(passed)s 5547(between)s 6396(the)s 6739(inheritors)s 7700(of)s
-7966(the)s 8309(rele)s 6(v)k 6(ant)k 480 12771(descriptor)m
-1484(on)s 1770(the)s 2107(service)s 2828(side)s 3258(and)s
-3651(the)s 3988(corresponding)s 5399(\207le)s 5749(or)s 5997(descriptor)s
-7001(on)s 7287(the)s 7624(client)s 8203(side)s 8633(until)s
-480 12531(either)m 1071(side)s 1499(closes)s 2121(their)s 2606(descriptor)s 13(.)k
-3639(This)s 4102(should)s 4786(not)s 5140(usually)s 5872(be)s
-6141(speci\207ed)s 7036(for)s 7362(stderr)s 7952(\(or)s 8277(stdout)s
-8909(if)s gsave
-480 12345 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211signals)m 1440(stdout)s 
-grestore
-2141 12291(is)m
-2350(used\))s 2916(since)s 3462(diagnostics)s 4588(from)s 5111(the)s
-5457(service)s 6188(side)s 6628(may)s 7093(arri)s 6(v)k 3(e)k
-7695(after)s 8190(the)s 8536(client)s 480 12051(has)m 850(e)s 3(xited)k
-1489(and)s 1893(be)s 2175(confused)s 3097(with)s 3579(e)s 3(xpected)k
-4484(output.)s 480 11643(The)m 908(def)s 2(ault)k 1629(is)s
-gsave
-1839 11697 translate
+240 fnt31 0 -52(nowait)m 
+grestore
+2145(is)s
+2355(speci\207ed)s 3263(then)s 3732(the)s 4080(client)s 4670(will)s
+5096(not)s 5462(w)s 2(ait)k 5931(and)s 6335(the)s
+6683(connection)s 7790(will)s 8216(remain)s 480 2907(open)m 1003(after)s
+1499(the)s 1847(client)s 2437(terminates.)s 3535(Data)s 4046(may)s
+4512(continue)s 5392(to)s 5631(be)s 5913(passed)s 6609(between)s
+7463(the)s 7811(inheritors)s 8777(of)s 480 2667(the)m 828(rele)s 6(v)k 6(ant)k
+1645(descriptor)s 2660(on)s 2957(the)s 3305(service)s 4037(side)s
+4478(and)s 4882(the)s 5230(corresponding)s 6652(\207le)s 7013(or)s
+7272(descriptor)s 8287(on)s 8584(the)s 480 2427(client)m 1070(side)s
+1511(until)s 2004(either)s 2607(side)s 3048(closes)s 3683(their)s
+4180(descriptor)s 13(.)k 5226(This)s 5702(should)s 6399(not)s
+6765(usually)s 7510(be)s 7792(speci\207ed)s 8700(for)s 480 2187(stderr)m
+1083(\(or)s 1421(stdout)s 2066(if)s gsave
+2283 2241 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(\211\211signals)m
+1440(stdout)s 
+grestore
+3945(is)s 4155(used\))s 4722(since)s 5269(diagnostics)s
+6396(from)s 6920(the)s 7268(service)s 8000(side)s 8441(may)s
+480 1947(arri)m 6(v)k 3(e)k 1083(after)s 1579(the)s
+1927(client)s 2517(has)s 2887(e)s 3(xited)k 3526(and)s
+3930(be)s 4212(confused)s 5134(with)s 5616(e)s 3(xpected)k
+6521(output.)s 7297(The)s 7725(def)s 2(ault)k 8446(is)s
+gsave
+8656 2001 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(wait)m 
 grestore
-2299(for)s 2637(writing)s 3380(\207le)s
-3741(descriptors)s 4840(and)s gsave
-5244 11697 translate
+480 1707(for)m 818(writing)s 1561(\207le)s
+1922(descriptors)s 3021(and)s gsave
+3425 1761 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(close)m 
 grestore
-5804(for)s
-6142(reading)s 6912(ones.)s gsave
-120 11303 translate
+3985(for)s
+4323(reading)s 5093(ones.)s gsave
+120 1367 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211w)m gsave
 288 0 translate
@@ -1391,7 +1359,7 @@ grestore
 
 grestore
 gsave
-120 11063 translate
+120 1127 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211\211fdwait)m gsave
@@ -1407,55 +1375,96 @@ grestore
 grestore
 
 grestore
-480 10769(Sets)m 924(the)s 1267(action)s 1903(on)s
+480 833(Sets)m 924(the)s 1267(action)s 1903(on)s
 2194(termination)s 3347(of)s 3613(the)s 3956(service)s 4682(for)s
 5015(the)s 5358(speci\207ed)s 6261(\207le)s 6616(descriptor;)s 240 fnt83
-7678 10771(action)m 240 fnt82 8325 10769(must)m 8844(be)s gsave
-480 10583 translate
+7678 835(action)m 240 fnt82 8325 833(must)m 8844(be)s 0 52(User)m
+511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s
+8652(0.62)s 
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 6 6
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier-Bold
+%%+ font Times-Italic
+/pgsave save def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+
+grestore
+
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt84 0 13842(6)m gsave
+480 13305 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(wait)m 
+240 fnt31 0 -52(wait)m 
 grestore
-880 10529(,)m gsave
-981 10583 translate
+240 fnt82
+880 13251(,)m gsave
+981 13305 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(nowait)m 
 grestore
-1634(or)s
-gsave
-1886 10583 translate
+1634(or)s gsave
+1886 13305 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(close)m 
+240 fnt31
+0 -52(close)m 
 grestore
 2439(as)s 2682(described)s 3650(abo)s 3(v)k 3(e.)k
 4313(The)s 4734(\207le)s 5088(descriptor)s 6096(must)s 6615(be)s
-6890(speci\207ed)s 7791(as)s 8034(open)s 8550(when)s 480 10289(this)m
+6890(speci\207ed)s 7791(as)s 8034(open)s 8550(when)s 480 13011(this)m
 876(option)s 1545(is)s 1755(encountered;)s 3036(this)s 3432(option)s
 4101(is)s 4311(o)s 3(v)k 3(erridden)k 5398(by)s
 5692(an)s 3(y)k 6089(later)s gsave
-6572 10343 translate
+6572 13065 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211file)m
 
 grestore
 7232(or)s gsave
-7491 10343 translate
+7491 13065 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211fdwait)m 
 grestore
-8352(option)s 480 10049(-)m
+8352(option)s 480 12771(-)m
 608(e)s 6(v)k 3(en)k 1108(by)s 1402(a)s
 gsave
-1568 10103 translate
+1568 12825 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211file)m 
 grestore
 2228(which)s 2870(does)s 3360(not)s
 3726(specify)s 4470(an)s 4753(action)s 5394(on)s 5691(termination)s
 6849(\(in)s 7171(this)s 7567(case)s 8034(the)s 8382(def)s 2(ault)k
-480 9809(will)m 906(be)s 1188(used,)s 1734(as)s 1984(described)s
+480 12531(will)m 906(be)s 1188(used,)s 1734(as)s 1984(described)s
 2958(abo)s 3(v)k 3(e\).)k gsave
-120 9479 translate
+120 12201 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211D)m
 gsave
@@ -1472,7 +1481,7 @@ grestore
 
 grestore
 gsave
-120 9239 translate
+120 11961 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211defvar)m gsave
 1296 0 translate
@@ -1487,17 +1496,17 @@ gsave
 grestore
 
 grestore
-480 8945(Set)m 845(a)s 1011(user)s 4(-)k
+480 11667(Set)m 845(a)s 1011(user)s 4(-)k
 1473(de\207ned)s 2236(v)s 6(ari)k 2595(able)s 240 fnt83
-3049 8947(name)m 240 fnt82 3621 8945(to)m 240 fnt83 3860 8947(val)m
-4152(ue)s 240 fnt82 4371 8945(.)m 4475(These)s 5102(user)s 4(-)k
+3049 11669(name)m 240 fnt82 3621 11667(to)m 240 fnt83 3860 11669(val)m
+4152(ue)s 240 fnt82 4371 11667(.)m 4475(These)s 5102(user)s 4(-)k
 5564(de\207ned)s 6327(v)s 6(ari)k 6686(ables)s 7228(are)s
 7575(made)s 8149(a)s 4(v)k 6(ail)k 8598(able)s
-480 8705(in)m 723(the)s 1071(con)s 1414(\207g)s 1660(u)s
+480 11427(in)m 723(the)s 1071(con)s 1414(\207g)s 1660(u)s
 1775(ra)s 1960(tion)s 2389(lan)s 2678(guage)s 3306(as)s
 3556(the)s 3904(pa)s 4130(ram)s 4501(e)s 4603(ters)s
 gsave
-4998 8759 translate
+4998 11481 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(u\211)m gsave
 288 0 translate
@@ -1508,10 +1517,10 @@ grestore
 grestore
 5764(and)s
 6168(are)s 6515(passed)s 7211(to)s 7450(the)s 7798(ser)s
-8076(vice)s 8530(in)s 8773(en)s 8996(-)s 480 8465(vi)m
+8076(vice)s 8530(in)s 8773(en)s 8996(-)s 480 11187(vi)m
 660(ron)s 976(ment)s 1508(v)s 6(ari)k 1867(ables)s
 gsave
-2402 8519 translate
+2402 11241 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(USERV_U_)m gsave
 1152 0 translate
@@ -1521,18 +1530,18 @@ grestore
 
 grestore
 3709(.)s
-240 fnt83 3806 8467(name)m 240 fnt82 4371 8465(may)m 4831(con)s
+240 fnt83 3806 11189(name)m 240 fnt82 4371 11187(may)m 4831(con)s
 5174(tain)s 5582(only)s 6055(al)s 6222(phanu)s 6803(mer)s
 7174(ics)s 7483(and)s 7880(un)s 8117(der)s 8422(scores,)s
-480 8225(and)m 884(must)s 1409(start)s 1879(with)s 2360(a)s
+480 10947(and)m 884(must)s 1409(start)s 1879(with)s 2360(a)s
 2526(let)s 2764(ter)s 13(.)k 3106(If)s 3335(se)s 6(v)k
 3643(er)s 3828(al)s 4055(de\207)s 4406(ni)s 4586(tions)s
 5102(are)s 5449(gi)s 6(v)k 5744(en)s 6026(for)s
-6364(the)s 6712(same)s 240 fnt83 7258 8227(name)m 240 fnt82
-7830 8225(then)m 8299(only)s 8778(the)s 480 7985(last)m 871(is)s
+6364(the)s 6712(same)s 240 fnt83 7258 10949(name)m 240 fnt82
+7830 10947(then)m 8299(only)s 8778(the)s 480 10707(last)m 871(is)s
 1081(ef)s 1278(fec)s 1562(ti)s 6(v)k 3(e.)k
 gsave
-120 7694 translate
+120 10416 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211t)m gsave
 432 0 translate
@@ -1542,7 +1551,7 @@ grestore
 
 grestore
 gsave
-120 7454 translate
+120 10176 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211\211timeout)m gsave
@@ -1552,130 +1561,170 @@ gsave
 grestore
 
 grestore
-480 7160(T)m 8(ime)k
+480 9882(T)m 8(ime)k
 1029(out)s 1392(the)s 1736(service)s 2465(if)s 2678(it)s
 2867(tak)s 2(es)k 3403(longer)s 4071(than)s 240 fnt83
-4536 7162(seconds)m 240 fnt82 5346 7160(seconds)m 6151(\(a)s 6393(positi)s 6(v)k 3(e)k
+4536 9884(seconds)m 240 fnt82 5346 9882(seconds)m 6151(\(a)s 6393(positi)s 6(v)k 3(e)k
 7193(inte)s 3(ger)k 9(,)k 7948(in)s 8187(decimal\).)s
-480 6919(T)m 8(imeout)k 1331(will)s 1746(produce)s 2562(a)s
+480 9641(T)m 8(imeout)k 1331(will)s 1746(produce)s 2562(a)s
 2717(diagnostic)s 3742(on)s 4028(stderr)s 4620(and)s 5013(an)s
 5284(e)s 3(xit)k 5688(status)s 6272(of)s 6532(255.)s
-6985(If)s 240 fnt83 7204 6921(seconds)m 240 fnt82 8006 6919(is)m
-8205(zero)s 8657(then)s 480 6679(no)m 773(timeout)s 1563(will)s
+6985(If)s 240 fnt83 7204 9643(seconds)m 240 fnt82 8006 9641(is)m
+8205(zero)s 8657(then)s 480 9401(no)m 773(timeout)s 1563(will)s
 1989(be)s 2271(implemented)s 3577(\(this)s 4052(is)s 4262(the)s
 4610(def)s 2(ault\).)k gsave
-120 6339 translate
+120 9061 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211S)m 
 grestore
 240 fnt83
-380 6287(method)m gsave
-120 6099 translate
+380 9009(method)m gsave
+120 8821 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211signals)m 
 grestore
-1081 6047(method)m 240 fnt82
-480 5805(Af)m 6(fects)k 1212(the)s 1544(handling)s 2420(of)s
+1081 8769(method)m 240 fnt82
+480 8527(Af)m 6(fects)k 1212(the)s 1544(handling)s 2420(of)s
 2675(the)s 3008(e)s 3(xit)k 3407(status)s 3987(when)s
 4547(the)s 4879(service)s 5596(terminates)s 6625(due)s 7012(to)s
-7235(a)s 7386(signal.)s 8045(\(The)s 8536(client)s 480 5564(will)m
+7235(a)s 7386(signal.)s 8045(\(The)s 8536(client)s 480 8286(will)m
 906(al)s 2(w)k 2(ays)k 1617(\207nish)s 2206(by)s
 2500(calling)s gsave
-3203 5618 translate
+3203 8340 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(_exit)m 
 grestore
 3703(,)s 3810(so)s
 4076(that)s 4494(only)s 4974(numbers)s 5849(from)s 6373(0)s
 6548(to)s 6787(255)s 7193(can)s 7582(be)s 7864(returned)s
-8718(and)s 480 5324(not)m 830(the)s 1162(full)s 1532(range)s
+8718(and)s 480 8046(not)m 830(the)s 1162(full)s 1532(range)s
 2102(of)s 2357(numbers)s 3216(and)s 3603(signal)s 4213(indications)s
 5297(which)s 5922(can)s 6295(be)s 6561(returned)s 7398(by)s
 7676(the)s gsave
-8008 5378 translate
+8008 8100 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(wait)m 
 grestore
 8451(f)s 2(amily)k
-480 5084(of)m 751(system)s 1475(calls.\))s 480 4676(The)m 240 fnt83
-908 4678(method)m 240 fnt82 1679 4676(may)m 2145(be)s 2427(one)s
-2829(of)s 3100(the)s 3448(follo)s 6(wing:)k 240 fnt83
-600 4438(status)m 240 fnt82 960 4196(The)m 1386(client')s 13(s)k
+480 7805(of)m 751(system)s 1475(calls.\))s 2160(The)s 240 fnt83
+2588 7807(method)m 240 fnt82 3359 7805(may)m 3825(be)s 4107(one)s
+4509(of)s 4780(the)s 5128(follo)s 6(wing:)k 240 fnt83
+600 7567(status)m 240 fnt82 960 7325(The)m 1386(client')s 13(s)k
 2123(e)s 3(xit)k 2536(status)s 3128(will)s 3552(be)s
-240 fnt83 3831 4198(status)m 240 fnt82 4384 4196(.)m 4486(This)s
+240 fnt83 3831 7327(status)m 240 fnt82 4384 7325(.)m 4486(This)s
 4959(will)s 5383(not)s 5746(be)s 6026(distinguishable)s 7527(from)s
-8049(the)s 8394(service)s 960 3955(really)m 1557(ha)s 4(ving)k
+8049(the)s 8394(service)s 960 7084(really)m 1557(ha)s 4(ving)k
 2258(e)s 3(xited)k 2897(with)s 3379(code)s 240 fnt83
-3887 3957(status)m 240 fnt82 4440 3955(.)m 4544(This)s 5020(method)s
+3887 7086(status)m 240 fnt82 4440 7084(.)m 4544(This)s 5020(method)s
 5796(is)s 6006(the)s 6354(def)s 2(ault,)k 7122(with)s
-7604(a)s 240 fnt83 7770 3957(status)m 240 fnt82 8383 3955(of)m
+7604(a)s 240 fnt83 7770 7086(status)m 240 fnt82 8383 7084(of)m
 8654(254.)s gsave
-600 3769 translate
+600 6898 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(number)m 
 grestore
 gsave
-600 3529 translate
+600 6658 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(number\211nocore)m
 
 grestore
-960 3235(The)m 1388(client')s 13(s)k 2128(e)s 3(xit)k
+960 6364(The)m 1388(client')s 13(s)k 2128(e)s 3(xit)k
 2543(status)s 3138(will)s 3564(be)s 3846(the)s 4194(number)s
 4985(of)s 5256(the)s 5604(signal)s 6230(which)s 6872(caused)s
-7581(the)s 7929(termination)s 960 2995(of)m 1231(the)s 1579(service.)s
+7581(the)s 7929(termination)s 960 6124(of)m 1231(the)s 1579(service.)s
 2359(If)s gsave
-2589 3049 translate
+2589 6178 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(number)m 
 grestore
 3249(is)s 3459(used)s
 3956(rather)s 4572(than)s gsave
-5041 3049 translate
+5041 6178 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(number\211nocore)m 
 grestore
 6402(then)s
-6871(128)s 7278(will)s 7704(be)s 7986(added)s 960 2755(if)m
+6871(128)s 7278(will)s 7704(be)s 7986(added)s 960 5884(if)m
 1177(the)s 1525(service)s 2257(dumped)s 3087(core.)s gsave
-3602 2809 translate
+3602 5938 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(number)m 
 grestore
 4262(is)s 4472(v)s 3(ery)k 4948(lik)s 2(e)k
 5360(the)s 5708(e)s 3(xit)k 6123(code)s 6631(mangling)s
-7588(done)s 8110(by)s 8404(the)s 960 2515(Bourne)m 1721(shell.)s
+7588(done)s 8110(by)s 8404(the)s 960 5644(Bourne)m 1721(shell.)s
 gsave
-600 2329 translate
+600 5458 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(highbit)m 
 grestore
-960 2035(The)m 1388(client')s 13(s)k
+960 5164(The)m 1388(client')s 13(s)k
 2128(e)s 3(xit)k 2543(status)s 3138(will)s 3564(be)s
 3846(the)s 4194(number)s 4985(of)s 5256(the)s 5604(signal)s
 6230(with)s 6712(128)s 7119(added.)s 7795(If)s 8025(the)s
-8373(service)s 960 1795(e)m 3(xits)k 1459(normally)s 2376(with)s
+8373(service)s 960 4924(e)m 3(xits)k 1459(normally)s 2376(with)s
 2858(an)s 3141(e)s 3(xit)k 3556(code)s 4064(of)s
 4335(greater)s 5057(than)s 5526(127)s 5934(then)s 6403(127)s
 6811(will)s 7237(be)s 7519(returned.)s gsave
-600 1609 translate
+600 4738 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stdout)m
 
 grestore
-960 1315(The)m 1375(service')s 13(s)k 2247(numeric)s 3069(w)s 2(ait)k
+960 4444(The)m 1375(service')s 13(s)k 2247(numeric)s 3069(w)s 2(ait)k
 3524(status)s 4105(as)s 4341(tw)s 2(o)k 4737(decimal)s
 5534(numbers)s 6395(\(high)s 6943(byte)s 7397(\207rst\))s 7882(and)s
-8272(a)s 8424(te)s 3(xtual)k 960 1075(description)m 2079(of)s
+8272(a)s 8424(te)s 3(xtual)k 960 4204(description)m 2079(of)s
 2350(its)s 2626(meaning)s 3503(will)s 3929(be)s 4211(printed)s
 4946(to)s 5185(the)s 5533(client')s 13(s)k 6273(standard)s
-7141(output.)s 7857(It)s 8062(will)s 8488(be)s 960 835(preceded)m
+7141(output.)s 7857(It)s 8062(will)s 8488(be)s 960 3964(preceded)m
 1865(by)s 2142(a)s 2292(ne)s 6(wline)k 3082(and)s
 3470(follo)s 6(wed)k 4355(by)s 4633(an)s 4899(e)s 3(xtra)k
 5417(ne)s 6(wline,)k 6258(and)s 6646(the)s 6977(numbers)s
-7836(are)s 8166(separated)s 0 52(0.62)m 4809(User)s 5320(service)s
-6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
+7836(are)s 8166(separated)s 960 3724(from)m 1484(each)s 1979(other)s
+2530(and)s 2934(from)s 3458(the)s 3806(te)s 3(xtual)k
+4508(description)s 5627(by)s 5921(single)s 6548(spaces.)s 7276(The)s
+7704(e)s 3(xit)k 8119(status)s 8714(of)s 960 3484(the)m
+1308(client)s 1898(will)s 2324(be)s 2606(zero,)s 3124(unless)s
+3773(a)s 3939(system)s 4663(error)s 5186(occurs)s 5861(in)s
+6104(which)s 6746(case)s 7213(no)s 7506(e)s 3(xit)k
+7921(status)s 8516(and)s 960 3244(description)m 2079(will)s 2505(be)s
+2787(printed)s 3522(to)s 3761(stdout,)s 4453(and)s 4857(an)s
+5140(error)s 5663(message)s 6529(will)s 6955(be)s 7237(printed)s
+7972(to)s 8211(stderr)s 960 3004(as)m 1210(usual.)s 480 2791(Problems)m
+1420(such)s 1902(as)s 2137(client)s 2713(usage)s 3299(errors,)s
+3948(the)s 4281(service)s 4999(not)s 5351(being)s 5921(found)s
+6524(or)s 6768(permission)s 7860(being)s 8430(denied)s 480 2551(or)m
+739(f)s 2(ailure)k 1415(of)s 1686(a)s 1852(system)s
+2576(call)s 2975(are)s 3322(system)s 4046(errors.)s 4706(An)s
+5056(error)s 5579(message)s 6445(describing)s 7494(the)s 7842(problem)s
+8699(will)s 480 2310(be)m 758(printed)s 1489(on)s 1782(the)s
+2125(client')s 13(s)k 2861(stderr)s 9(,)k 3498(and)s
+3898(the)s 4241(client')s 13(s)k 4977(e)s 3(xit)k
+5388(status)s 5978(will)s 6400(be)s 6678(255.)s 7138(If)s
+7363(the)s 7707(client)s 8293(dies)s 8724(due)s 480 2070(to)m
+719(a)s 885(signal)s 1511(this)s 1907(should)s 2604(be)s
+2886(treated)s 3593(as)s 3843(a)s 4009(serious)s 4737(system)s
+5461(error)s 13(.)k gsave
+120 1730 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(\211H)m 
+grestore
+gsave
+120 1490 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(\211\211hidecwd)m 
+grestore
+480 1196(Pre)m 6(v)k 3(ents)k 1345(the)s
+1693(calling)s 2396(process')s 13(s)k 3323(current)s 4059(directory)s
+4975(name)s 5549(from)s 6073(being)s 6658(passed)s 7354(to)s
+7593(the)s 7941(service;)s 8729(the)s 480 956(null)m 907(string)s
+1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(0.62)m
+4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
+7861(speci\207cation)s 
 grestore
 
 grestore
@@ -1714,115 +1763,76 @@ gsave
 gsave
 1 LoutMargSet
 grestore
-240 fnt84 8951 13844(7)m 240 fnt82 960 13256(from)m 1484(each)s
-1979(other)s 2530(and)s 2934(from)s 3458(the)s 3806(te)s 3(xtual)k
-4508(description)s 5627(by)s 5921(single)s 6548(spaces.)s 7276(The)s
-7704(e)s 3(xit)k 8119(status)s 8714(of)s 960 13016(the)m
-1308(client)s 1898(will)s 2324(be)s 2606(zero,)s 3124(unless)s
-3773(a)s 3939(system)s 4663(error)s 5186(occurs)s 5861(in)s
-6104(which)s 6746(case)s 7213(no)s 7506(e)s 3(xit)k
-7921(status)s 8516(and)s 960 12776(description)m 2079(will)s 2505(be)s
-2787(printed)s 3522(to)s 3761(stdout,)s 4453(and)s 4857(an)s
-5140(error)s 5663(message)s 6529(will)s 6955(be)s 7237(printed)s
-7972(to)s 8211(stderr)s 960 12536(as)m 1210(usual.)s 480 12024(Problems)m
-1420(such)s 1902(as)s 2137(client)s 2713(usage)s 3299(errors,)s
-3948(the)s 4281(service)s 4999(not)s 5351(being)s 5921(found)s
-6524(or)s 6768(permission)s 7860(being)s 8430(denied)s 480 11784(or)m
-739(f)s 2(ailure)k 1415(of)s 1686(a)s 1852(system)s
-2576(call)s 2975(are)s 3322(system)s 4046(errors.)s 4706(An)s
-5056(error)s 5579(message)s 6445(describing)s 7494(the)s 7842(problem)s
-8699(will)s 480 11543(be)m 758(printed)s 1489(on)s 1782(the)s
-2125(client')s 13(s)k 2861(stderr)s 9(,)k 3498(and)s
-3898(the)s 4241(client')s 13(s)k 4977(e)s 3(xit)k
-5388(status)s 5978(will)s 6400(be)s 6678(255.)s 7138(If)s
-7363(the)s 7707(client)s 8293(dies)s 8724(due)s 480 11303(to)m
-719(a)s 885(signal)s 1511(this)s 1907(should)s 2604(be)s
-2886(treated)s 3593(as)s 3843(a)s 4009(serious)s 4737(system)s
-5461(error)s 13(.)k gsave
-120 10963 translate
+240 fnt84 8951 13844(7)m gsave
+120 13337 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(\211H)m 
+240 fnt31 0 -52(\211P)m 
 grestore
 gsave
-120 10723 translate
+120 13097 translate
 0.6953 1.0000 scale
 240 fnt31
-0 -52(\211\211hidecwd)m 
-grestore
-480 10429(Pre)m 6(v)k 3(ents)k 1345(the)s
-1693(calling)s 2396(process')s 13(s)k 3323(current)s 4059(directory)s
-4975(name)s 5549(from)s 6073(being)s 6658(passed)s 7354(to)s
-7593(the)s 7941(service;)s 8729(the)s 480 10189(null)m 907(string)s
-1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s gsave
-120 9849 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211P)m 
+0 -52(\211\211sigpipe)m 
 grestore
-gsave
-120 9609 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211sigpipe)m 
-grestore
-480 9315(If)m 700(the)s
-1038(service)s 1760(program)s 2620(is)s 2820(terminated)s 3888(due)s
-4280(to)s 4509(a)s gsave
-4665 9369 translate
+240 fnt82 480 12803(If)m 700(the)s 1038(service)s
+1760(program)s 2620(is)s 2820(terminated)s 3888(due)s 4280(to)s
+4509(a)s gsave
+4665 12857 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(SIGPIPE)m 
 grestore
-5415(the)s
-5753(e)s 3(xit)k 6157(status)s 6742(of)s 7003(the)s
-7341(client)s 7921(will)s 8337(be)s 8608(zero,)s 480 9075(e)m 6(v)k 3(en)k
+5415(the)s 5753(e)s 3(xit)k
+6157(status)s 6742(of)s 7003(the)s 7341(client)s 7921(will)s
+8337(be)s 8608(zero,)s 480 12563(e)m 6(v)k 3(en)k
 967(if)s 1170(it)s 1349(w)s 2(ould)k 1990(ha)s 4(v)k 3(e)k
 2477(been)s 2973(something)s 4009(else)s 4423(according)s 5405(to)s
 5630(the)s 5965(e)s 3(xit)k 6366(status)s 6948(method)s
-7710(speci\207ed.)s 8650(This)s 480 8835(option)m 1149(has)s 1519(no)s
+7710(speci\207ed.)s 8650(This)s 480 12323(option)m 1149(has)s 1519(no)s
 1812(ef)s 6(fect)k 2408(on)s 2705(the)s 3053(code)s
 3561(and)s 3965(description)s 5084(printed)s 5819(if)s 6036(the)s
 6384(e)s 3(xit)k 6799(status)s 7394(method)s gsave
-8170 8889 translate
+8170 12377 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(stdout)m 
 grestore
-8830(is)s 480 8595(in)m 723(use.)s gsave
-120 8305 translate
+8830(is)s 480 12083(in)m 723(use.)s gsave
+120 11793 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211h)m 
 grestore
 gsave
-120 8065 translate
+120 11553 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211help)m 
 grestore
 gsave
-120 7825 translate
+120 11313 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211copyright)m
 
 grestore
 gsave
-480 7585 translate
+480 11073 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211h)m 
 grestore
-740 7531(or)m gsave
-999 7585 translate
+740 11019(or)m gsave
+999 11073 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211help)m
 
 grestore
 1659(prints)s 2254(the)s 2602(client')s 13(s)k 3342(usage)s
 3943(message;)s gsave
-4865 7585 translate
+4865 11073 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211copyright)m 
 grestore
 6026(prints)s 6621(the)s
 6969(cop)s 2(yright)k 7944(and)s 8348(lack)s 8807(of)s
-480 7291(w)m 2(arranty)k 1381(notice.)s 9066 670 0 670 240 240 60 0 6161 LoutGr2
+480 10779(w)m 2(arranty)k 1381(notice.)s 9066 670 0 670 240 240 60 0 9649 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -1832,30 +1842,30 @@ grestore
 320 fnt84 0 66(2.2.)m
 628(Security-o)s 3(v)k 3(erriding)k 3373(options)s 
 grestore
-0 5699(There)m
+0 9187(There)m
 613(are)s 960(also)s 1398(some)s 1959(options)s 2715(which)s
 3357(are)s 3704(a)s 4(v)k 6(ailable)k 4612(for)s
 4950(deb)s 4(ugging)k 6011(and)s 6415(to)s 6654(allo)s 6(w)k
-7233(the)s 7581(system)s 0 5459(administrator)m 1333(to)s 1572(o)s 3(v)k 3(erride)k
+7233(the)s 7581(system)s 0 8947(administrator)m 1333(to)s 1572(o)s 3(v)k 3(erride)k
 2418(a)s 2584(user')s 13(s)k 3192(polic)s 3(y)k 15(.)k
 3876(These)s 4503(options)s 5259(are)s 5606(a)s 4(v)k 6(ailable)k
 6514(only)s 6994(if)s 7211(the)s 7559(client)s 8149(is)s
-8359(called)s 0 5219(by)m 294(root)s 739(or)s 998(if)s
+8359(called)s 0 8707(by)m 294(root)s 739(or)s 998(if)s
 1215(the)s 1563(calling)s 2266(user)s 2724(is)s 2934(the)s
 3282(same)s 3829(as)s 4079(the)s 4427(service)s 5159(user)s 13(.)k
 gsave
-120 4865 translate
+120 8353 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211override)m gsave
 1584 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(con\207gur)m 3(ation-data)k
+240 fnt83 0 -52(con\207gur)m 3(ation\211data)k
 
 grestore
 
 grestore
 gsave
-120 4625 translate
+120 8113 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211override\211file)m gsave
 2304 0 translate
@@ -1864,29 +1874,29 @@ gsave
 grestore
 
 grestore
-480 4331(Do)m
+480 7819(Do)m
 826(not)s 1192(read)s 1661(the)s 2009(usual)s 2569(con\207guration)s
 3902(\207les.)s 4404(Instead,)s 5201(the)s 5549(client)s 6139(sends)s
-240 fnt83 6722 4333(con\207gur)m 3(ation-data)k 240 fnt82 480 4090(\(follo)m 6(wed)k
+240 fnt83 6722 7821(con\207gur)m 3(ation-data)k 240 fnt82 480 7578(\(follo)m 6(wed)k
 1461(by)s 1755(a)s 1921(ne)s 6(wline\))k 2800(or)s
-3059(the)s 3407(contents)s 4255(of)s 240 fnt83 4526 4092(\207lename)m
-240 fnt82 5390 4090(\(which)m 6111(is)s 6321(opened)s 7071(in)s
+3059(the)s 3407(contents)s 4255(of)s 240 fnt83 4526 7580(\207lename)m
+240 fnt82 5390 7578(\(which)m 6111(is)s 6321(opened)s 7071(in)s
 7314(the)s 7662(conte)s 3(xt)k 8423(of)s 8694(the)s
-480 3849(client\))m 1138(to)s 1377(the)s 1725(daemon)s 2540(and)s
+480 7337(client\))m 1138(to)s 1377(the)s 1725(daemon)s 2540(and)s
 2944(the)s 3292(daemon)s 4107(uses)s 4570(that)s 4988(data)s
-5446(instead.)s 6227(The)s 240 fnt83 6655 3851(con\207gur)m 3(ation-data)k
-240 fnt82 8503 3849(must)m 480 3609(all)m 772(be)s 1052(in)s
+5446(instead.)s 6227(The)s 240 fnt83 6655 7339(con\207gur)m 3(ation-data)k
+240 fnt82 8503 7337(must)m 480 7097(all)m 772(be)s 1052(in)s
 1293(one)s 1693(ar)s 4(gument.)k 2694(It)s 2897(will)s
 3321(ha)s 4(v)k 3(e)k 3820(a)s 3984(single)s
 4609(ne)s 6(wline)k 5414(appended)s 6388(so)s 6652(that)s
 7068(a)s 7232(single)s 7857(directi)s 6(v)k 3(e)k
-8737(can)s 480 3369(easily)m 1083(be)s 1357(gi)s 6(v)k 3(en,)k
+8737(can)s 480 6857(easily)m 1083(be)s 1357(gi)s 6(v)k 3(en,)k
 1979(b)s 4(ut)k 2333(if)s 2542(more)s 3080(than)s
 3541(one)s 3935(directi)s 6(v)k 3(e)k 4809(is)s
 5011(required)s 5857(it)s 6040(will)s 6458(ha)s 4(v)k 3(e)k
 6951(to)s 7182(contain)s 7935(one)s 8329(or)s 8579(more)s
-480 3129(real)m 892(ne)s 6(wlines.)k gsave
-120 2838 translate
+480 6617(real)m 892(ne)s 6(wlines.)k gsave
+120 6326 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211spoof\211user)m
 gsave
@@ -1896,33 +1906,33 @@ gsave
 grestore
 
 grestore
-480 2544(Pretend)m 1268(to)s 1507(the)s
+480 6032(Pretend)m 1268(to)s 1507(the)s
 1855(service)s 2587(that)s 3005(it)s 3197(is)s 3407(being)s
-3992(called)s 4620(by)s 240 fnt83 4914 2546(user)m 240 fnt82
-5391 2544(\(which)m 6112(may)s 6578(be)s 6860(a)s 7026(username)s
-7998(or)s 8257(a)s 8423(uid\).)s 480 2304(This)m 956(will)s
+3992(called)s 4620(by)s 240 fnt83 4914 6034(user)m 240 fnt82
+5391 6032(\(which)m 6112(may)s 6578(be)s 6860(a)s 7026(username)s
+7998(or)s 8257(a)s 8423(uid\).)s 480 5792(This)m 956(will)s
 1382(also)s 1820(af)s 6(fect)k 2416(the)s 2764(group)s
 3376(and)s 3780(supplementary)s 5242(groups)s 5945(supplied)s 6814(to)s
 7053(the)s 7401(service;)s 8189(the)s 3(y)k 8652(will)s
-480 2064(be)m 759(the)s 1103(standard)s 1968(group)s 2576(and)s
-2977(supplementary)s 4435(groups)s 5135(for)s 240 fnt83 5469 2066(user)m
-240 fnt82 5886 2064(.)m 5987(The)s gsave
-6411 2118 translate
+480 5552(be)m 759(the)s 1103(standard)s 1968(group)s 2576(and)s
+2977(supplementary)s 4435(groups)s 5135(for)s 240 fnt83 5469 5554(user)m
+240 fnt82 5886 5552(.)m 5987(The)s gsave
+6411 5606 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211spoof\211user)m
 
 grestore
-7669(option)s 8334(will)s 240 fnt83 8756 2066(not)m 240 fnt82
-480 1824(af)m 6(fect)k 1076(which)s 1718(user)s 2176(is)s
+7669(option)s 8334(will)s 240 fnt83 8756 5554(not)m 240 fnt82
+480 5312(af)m 6(fect)k 1076(which)s 1718(user)s 2176(is)s
 2386(chosen)s 3108(if)s 3325(the)s 3673(service)s 4405(user)s
 4863(is)s 5073(speci\207ed)s 5981(as)s 6231(just)s gsave
-6636 1878 translate
+6636 5366 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211)m 
 grestore
 6736(;)s 6848(in)s 7091(this)s 7487(case)s
-7954(the)s 8302(service)s 480 1584(user)m 938(will)s 1364(be)s
+7954(the)s 8302(service)s 480 5072(user)m 938(will)s 1364(be)s
 1646(the)s 1994(real)s 2406(calling)s 3109(user)s 13(.)k
 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
 3052(speci\207cation)s 8652(0.62)s 
@@ -2725,84 +2735,84 @@ grestore
 6048(It)s 6253(is)s 6463(an)s 6746(error)s 7269(if)s
 7486(the)s 7834(directory)s 480 11808(cannot)m 1178(be)s 1460(changed)s
 2316(to.)s gsave
-480 11454 translate
+2666 11862 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(cd)m 
 grestore
-740 11400(should)m 1437(not)s
-1803(be)s 2085(used)s 2582(between)s gsave
-3436 11454 translate
+2926(should)s 3623(not)s
+3989(be)s 4271(used)s 4768(between)s gsave
+5622 11862 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211directory)m
 
 grestore
-5698(and)s 6102(the)s 6450(in)s 9(v)k 4(ocation)k
-7504(of)s 7775(the)s 8123(service)s 480 11160(program,)m 1397(as)s
-1647(the)s 1995(test)s 2386(for)s 2724(the)s 3072(a)s 4(v)k 6(ailability)k
-4190(of)s 4461(the)s 4809(service)s 5541(program)s 6411(w)s 2(ould)k
-7066(be)s 7348(done)s 7870(with)s 8352(the)s 8700(old)s
-480 10920(current)m 1216(directory)s 2132(and)s 2536(the)s 2884(actual)s
-3509(e)s 3(x)k 3(ecution)k 4490(with)s 4972(the)s
-5320(ne)s 6(w)k 5767(\(probably)s 6751(causing)s 7535(an)s
-7818(error\).)s gsave
-120 10580 translate
+7884(and)s 8288(the)s 480 11568(in)m 9(v)k 4(ocation)k
+1534(of)s 1805(the)s 2153(service)s 2885(program,)s 3802(as)s
+4052(the)s 4400(test)s 4791(for)s 5129(the)s 5477(a)s 4(v)k 6(ailability)k
+6595(of)s 6866(the)s 7214(service)s 7946(program)s 480 11328(w)m 2(ould)k
+1117(be)s 1380(done)s 1884(with)s 2347(the)s 2677(old)s
+3022(current)s 3740(directory)s 4637(and)s 5023(the)s 5352(actual)s
+5959(e)s 3(x)k 3(ecution)k 6921(with)s 7385(the)s
+7714(ne)s 6(w)k 8142(\(probably)s 480 11088(causing)m 1264(an)s
+1547(error\).)s gsave
+120 10748 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(eof)m 
 grestore
-480 10286(Stop)m 972(reading)s
+480 10454(Stop)m 972(reading)s
 1742(the)s 2090(con\207guration)s 3423(\207le)s 3784(in)s 4027(question,)s
 4945(as)s 5195(if)s 5412(end)s 5816(of)s 6087(\207le)s
 6448(had)s 6852(been)s 7361(reached.)s 8208(An)s 3(y)k
-480 10046(control)m 1212(constructs)s 2232(\()s gsave
-2305 10100 translate
+480 10214(control)m 1212(constructs)s 2232(\()s gsave
+2305 10268 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(if)m
 
 grestore
 2505(,)s gsave
-2612 10100 translate
+2612 10268 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
 3673(or)s gsave
-3932 10100 translate
+3932 10268 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(errors\211push)m 
 grestore
 5033(\))s 5161(which)s 5803(were)s 6323(started)s
 7017(in)s 7260(that)s 7678(\207le)s 8039(will)s 8465(be)s
-480 9806(considered)m 1574(\207nished.)s 2436(P)s 3(arsing)k 3203(will)s
+480 9974(considered)m 1574(\207nished.)s 2436(P)s 3(arsing)k 3203(will)s
 3629(continue)s 4509(in)s 4752(the)s 5100(\207le)s 5461(which)s
 6103(caused)s 6812(the)s 7160(\207le)s 7521(containing)s 8584(the)s
 gsave
-480 9620 translate
+480 9788 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(eof)m 
 grestore
-840 9566(to)m 1079(be)s 1361(read.)s
+840 9734(to)m 1079(be)s 1361(read.)s
 gsave
-120 9276 translate
+120 9444 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(quit)m 
 grestore
-480 8982(Stop)m 969(reading)s 1735(con\207guration)s
+480 9150(Stop)m 969(reading)s 1735(con\207guration)s
 3064(\207les)s 3510(and)s 3910(act)s 4244(immediately)s 5489(on)s
 5782(the)s 6126(current)s 6859(settings.)s 7689(The)s 8113(beha)s 4(viour)k
-480 8742(of)m gsave
-751 8796 translate
+480 8910(of)m gsave
+751 8964 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(quit)m 
 grestore
 1211(is)s 1421(subject)s
 2158(to)s 2397(the)s gsave
-2745 8796 translate
+2745 8964 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
 3806(control)s
 4538(construct.)s gsave
-120 8402 translate
+120 8570 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include)m gsave
 1152 0 translate
@@ -2813,7 +2823,7 @@ grestore
 
 grestore
 gsave
-120 8162 translate
+120 8330 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211ifexist)m gsave
 2304 0 translate
@@ -2822,25 +2832,25 @@ gsave
 grestore
 
 grestore
-480 7868(Read)m
-1026(the)s 1369(con\207guration)s 2698(\207le)s 240 fnt83 3054 7870(\207lename)m
-240 fnt82 3858 7868(,)m 3961(and)s 4360(then)s 4825(return)s
+480 8036(Read)m
+1026(the)s 1369(con\207guration)s 2698(\207le)s 240 fnt83 3054 8038(\207lename)m
+240 fnt82 3858 8036(,)m 3961(and)s 4360(then)s 4825(return)s
 5447(to)s 5682(this)s 6073(\207le)s 6430(and)s 6829(continue)s
-7705(parsing)s 8457(it)s 8644(with)s 480 7628(the)m 822(ne)s 3(xt)k
+7705(parsing)s 8457(it)s 8644(with)s 480 7796(the)m 822(ne)s 3(xt)k
 1284(directi)s 6(v)k 3(e.)k 2207(It)s 2405(is)s
 2608(an)s 2884(error)s 3400(if)s 3610(the)s 3952(\207le)s
 4306(cannot)s 4997(be)s 5272(opened)s 6015(and)s 6412(read,)s
 6923(unless)s gsave
-7565 7682 translate
+7565 7850 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211ifexist)m 
 grestore
-480 7388(is)m 690(used)s
+480 7556(is)m 690(used)s
 1187(and)s 1591(the)s 1939(\207le)s 2300(does)s 2790(not)s
 3156(e)s 3(xist,)k 3711(in)s 3954(which)s 4596(case)s
 5063(the)s 5411(directi)s 6(v)k 3(e)k 6293(is)s
 6503(silently)s 7260(ignored.)s gsave
-120 7048 translate
+120 7216 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211lookup)m gsave
 2160 0 translate
@@ -2857,7 +2867,7 @@ grestore
 
 grestore
 gsave
-120 6808 translate
+120 6976 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211lookup\211all)m gsave
 2736 0 translate
@@ -2872,113 +2882,113 @@ gsave
 grestore
 
 grestore
-480 6514(Read)m 1030(the)s
-1378(con\207guration)s 2711(\207le)s 3072(in)s 240 fnt83 3315 6516(dir)m 8(ectory)k
-240 fnt82 4239 6514(whose)m 4907(name)s 5481(is)s 5691(the)s
-6039(v)s 6(alue)k 6607(of)s 240 fnt83 6878 6516(par)m 3(ameter)k
-240 fnt82 7937 6514(\(see)m 8377(the)s 480 6274(description)m 1599(of)s
+480 6682(Read)m 1030(the)s
+1378(con\207guration)s 2711(\207le)s 3072(in)s 240 fnt83 3315 6684(dir)m 8(ectory)k
+240 fnt82 4239 6682(whose)m 4907(name)s 5481(is)s 5691(the)s
+6039(v)s 6(alue)k 6607(of)s 240 fnt83 6878 6684(par)m 3(ameter)k
+240 fnt82 7937 6682(\(see)m 8377(the)s 480 6442(description)m 1599(of)s
 gsave
-1870 6328 translate
+1870 6496 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(if)m 
 grestore
 2070(,)s 2177(`Control)s 3042(structure)s
 3933(directi)s 6(v)k 3(es',)k 5038(page)s 5546(12\).)s
-5969(If)s 240 fnt83 6199 6276(par)m 3(ameter)k 240 fnt82
-7258 6274(has)m 7628(se)s 6(v)k 3(eral)k 8350(v)s 6(alues)k
-480 6034(the)m 3(y)k 943(will)s 1369(be)s 1651(tried)s
+5969(If)s 240 fnt83 6199 6444(par)m 3(ameter)k 240 fnt82
+7258 6442(has)m 7628(se)s 6(v)k 3(eral)k 8350(v)s 6(alues)k
+480 6202(the)m 3(y)k 943(will)s 1369(be)s 1651(tried)s
 2146(in)s 2389(order;)s 3005(with)s gsave
-3487 6088 translate
+3487 6256 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211lookup)m
 
 grestore
 4948(this)s 5344(search)s 6011(will)s 6437(stop)s 6889(when)s
 7465(one)s 7867(is)s 8077(found,)s 8743(b)s 4(ut)k
-480 5794(with)m gsave
-962 5848 translate
+480 5962(with)m gsave
+962 6016 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211lookup\211all)m 
 grestore
 2824(the)s 3172(search)s
 3839(will)s 4265(continue)s 5145(and)s 5549(an)s 3(y)k
 5946(\207les)s 6395(appropriate)s 7539(to)s 7778(other)s 8329(v)s 6(alues)k
-480 5554(will)m 906(be)s 1188(read)s 1657(too.)s 480 5146(If)m
-700(none)s 1212(of)s 1473(the)s 1811(parameter')s 13(s)k
-2965(v)s 6(alues)k 3610(had)s 4004(a)s 4160(corresponding)s
-5572(\207le)s 5923(then)s 6381(the)s 6719(\207le)s gsave
-7070 5200 translate
+480 5722(will)m 906(be)s 1188(read)s 1657(too.)s 2127(If)s
+2357(none)s 2879(of)s 3150(the)s 3498(parameter')s 13(s)k
+4662(v)s 6(alues)k 5318(had)s 5722(a)s 5888(corresponding)s
+7310(\207le)s 7671(then)s 8140(the)s 8488(\207le)s gsave
+480 5536 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(:default)m 
 grestore
-7921(will)s 8337(be)s 8608(read,)s 480 4906(if)m
-697(it)s 889(e)s 3(xists.)k 1534(If)s 240 fnt83
-1764 4908(par)m 3(ameter)k 240 fnt82 2763 4906(')m 13(s)k
-2973(list)s 3324(of)s 3595(v)s 6(alues)k 4251(w)s 2(as)k
-4672(empty)s 5324(then)s 5793(the)s 6141(\207le)s gsave
-6502 4960 translate
+1340 5482(will)m 1765(be)s 2045(read,)s 2562(if)s
+2778(it)s 2968(e)s 3(xists.)k 3612(If)s 240 fnt83
+3841 5484(par)m 3(ameter)k 240 fnt82 4840 5482(')m 13(s)k
+5048(list)s 5398(of)s 5668(v)s 6(alues)k 6322(w)s 2(as)k
+6742(empty)s 7393(then)s 7860(the)s 8207(\207le)s gsave
+8566 5536 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(:none)m 
 grestore
-7062(will)s 7488(be)s 7770(tried)s 8265(\207rst)s
-8696(and)s 480 4666(read)m 949(if)s 1166(it)s 1358(e)s 3(xists,)k
-2006(otherwise)s gsave
-2991 4720 translate
+480 5242(will)m 906(be)s 1188(tried)s 1683(\207rst)s
+2114(and)s 2518(read)s 2987(if)s 3204(it)s 3396(e)s 3(xists,)k
+4044(otherwise)s gsave
+5029 5296 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:default)m 
 grestore
-3852(will)s 4278(be)s
-4560(tried.)s 480 4258(It)m 685(is)s 895(not)s 1261(an)s
-1544(error)s 2067(for)s 2405(an)s 3(y)k 2802(of)s
-3073(the)s 3421(\207les)s 3870(\(including)s gsave
-4906 4312 translate
+5890(will)s 6316(be)s
+6598(tried.)s 7199(It)s 7404(is)s 7614(not)s 7980(an)s
+8263(error)s 8786(for)s 480 5002(an)m 3(y)k 877(of)s
+1148(the)s 1496(\207les)s 1945(\(including)s gsave
+2981 5056 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:default)m
 
 grestore
-5707(\))s 5835(not)s 6201(to)s 6440(e)s 3(xist,)k
-6995(b)s 4(ut)k 7357(it)s 7549(is)s 7759(an)s
-8042(error)s 8565(if)s 8782(a)s 480 4018(\207le)m 841(e)s 3(xists)k
-1433(and)s 1837(cannot)s 2535(be)s 2817(read)s 3286(or)s
-3545(if)s 3762(the)s 4110(directory)s 5026(cannot)s 5724(be)s
-6006(accessed.)s 480 3610(A)m 693(translation)s 1741(will)s 2150(be)s
-2415(applied)s 3160(to)s 3382(v)s 6(alues)k 4021(before)s
-4670(the)s 3(y)k 5116(are)s 5446(used)s 5926(to)s
-6148(construct)s 7067(a)s 7216(\207lename,)s 8129(so)s 8378(that)s
-8778(the)s 480 3370(lookup)m 1195(cannot)s 1888(access)s 2545(dot\207les)s
-3295(or)s 3550(\207les)s 3994(in)s 4232(other)s 4779(directories:)s
-5887(v)s 6(alues)k 6539(starting)s 7303(with)s 7781(full)s
-8162(stops)s 8700(will)s 480 3130(ha)m 4(v)k 3(e)k
-970(a)s 1124(colon)s 1702(prepended)s 2745(\(making)s gsave
-3584 3184 translate
+3782(\))s 3910(not)s 4276(to)s 4515(e)s 3(xist,)k
+5070(b)s 4(ut)k 5432(it)s 5624(is)s 5834(an)s
+6117(error)s 6640(if)s 6857(a)s 7023(\207le)s 7384(e)s 3(xists)k
+7976(and)s 8380(cannot)s 480 4762(be)m 753(read)s 1213(or)s
+1462(if)s 1670(the)s 2008(directory)s 2915(cannot)s 3603(be)s
+3876(accessed.)s 4867(A)s 5087(translation)s 6143(will)s 6559(be)s
+6832(applied)s 7584(to)s 7814(v)s 6(alues)k 8460(before)s
+480 4522(the)m 3(y)k 943(are)s 1290(used)s 1787(to)s
+2026(construct)s 2962(a)s 3128(\207lename,)s 4058(so)s 4324(that)s
+4742(the)s 5090(lookup)s 5809(cannot)s 6507(access)s 7168(dot\207les)s
+7923(or)s 8182(\207les)s 8631(in)s 480 4282(other)m 1031(directories:)s
+2144(v)s 6(alues)k 2800(starting)s 3569(with)s 4051(full)s
+4437(stops)s 4980(will)s 5406(ha)s 4(v)k 3(e)k
+5907(a)s 6073(colon)s 6662(prepended)s 7717(\(making)s gsave
+8567 4336 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(:.)m 
 grestore
-3784(\),)s 3958(colons)s 4623(will)s 5037(be)s
-5308(doubled,)s 6175(and)s 6568(each)s 7051(slash)s 7575(will)s
-7989(be)s 8259(replaced)s 480 2890(with)m 962(a)s 1128(colon)s
-1717(follo)s 6(wed)k 2619(by)s 2913(a)s 3079(h)s 1(yphen)k
+8767(\),)s 480 4042(colons)m 1156(will)s 1582(be)s
+1864(doubled,)s 2743(and)s 3147(each)s 3642(slash)s 4177(will)s
+4603(be)s 4885(replaced)s 5752(with)s 6234(a)s 6400(colon)s
+6989(follo)s 6(wed)k 7891(by)s 8185(a)s 8351(h)s 1(yphen)k
 gsave
-3841 2944 translate
+480 3856 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:\211)m 
 grestore
-4041(.)s 4145(A)s 4375(parameter)s
-5389(v)s 6(alue)k 5957(which)s 6599(is)s 6809(the)s
-7157(empty)s 7809(string)s 8406(will)s 8832(be)s 480 2650(replaced)m
-1347(with)s gsave
-1829 2704 translate
+680 3802(.)m 784(A)s 1014(parameter)s
+2028(v)s 6(alue)k 2596(which)s 3238(is)s 3448(the)s
+3796(empty)s 4448(string)s 5045(will)s 5471(be)s 5753(replaced)s
+6620(with)s gsave
+7102 3856 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:empty)m 
 grestore
-2489(\(note)s 3036(that)s
-3454(this)s 3850(is)s 4060(dif)s 6(ferent)k 4935(from)s
-5459(a)s 5625(parameter)s 6639(not)s 7005(ha)s 4(ving)k
-7706(an)s 3(y)k 8103(v)s 6(alues\).)k gsave
-120 2310 translate
+7762(\(note)s 8309(that)s
+8727(this)s 480 3562(is)m 690(dif)s 6(ferent)k 1565(from)s
+2089(a)s 2255(parameter)s 3269(not)s 3635(ha)s 4(ving)k
+4336(an)s 3(y)k 4733(v)s 6(alues\).)k gsave
+120 3222 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(include\211directory)m gsave
@@ -2988,26 +2998,26 @@ grestore
 grestore
 
 grestore
-480 2016(Read)m
+480 2928(Read)m
 1030(con\207guration)s 2363(from)s 2887(all)s 3180(\207les)s 3629(in)s
-3872(directory)s 240 fnt83 4788 2018(dir)m 8(ectory)k 240 fnt82
-5712 2016(which)m 6354(are)s 6701(plain)s 7236(\207les)s 7685(whose)s
-8353(names)s 480 1776(consist)m 1204(only)s 1684(of)s 1955(alphanumerics)s
+3872(directory)s 240 fnt83 4788 2930(dir)m 8(ectory)k 240 fnt82
+5712 2928(which)m 6354(are)s 6701(plain)s 7236(\207les)s 7685(whose)s
+8353(names)s 480 2688(consist)m 1204(only)s 1684(of)s 1955(alphanumerics)s
 3400(and)s 3804(h)s 1(yphens)k 4653(and)s 5057(start)s
 5527(with)s 6009(an)s 6292(alphanumeric.)s 7697(The)s 3(y)k
-8240(will)s 8666(be)s 480 1536(read)m 949(in)s 1192(le)s 3(xical)k
+8240(will)s 8666(be)s 480 2448(read)m 949(in)s 1192(le)s 3(xical)k
 1880(order)s 13(.)k 2475(It)s 2680(is)s 2890(an)s
 3173(error)s 3696(for)s 4034(the)s 4382(directory)s 5298(not)s
 5664(to)s 5903(e)s 3(xist)k 6411(or)s 6670(for)s
 7008(it)s 7200(or)s 7459(an)s 3(y)k 7856(of)s
-8127(the)s 8475(\207les)s 480 1296(found)m 1089(not)s 1447(to)s
+8127(the)s 8475(\207les)s 480 2208(found)m 1089(not)s 1447(to)s
 1677(be)s 1951(read)s 2411(successfully)s 15(,)k 3663(or)s
 3914(for)s 4243(an)s 3(ything)k 5123(with)s 5596(an)s
 5871(appropriate)s 7007(name)s 7572(not)s 7930(to)s 8160(be)s
-8434(a)s 8591(plain)s 480 1056(\207le)m 841(or)s 1100(a)s
+8434(a)s 8591(plain)s 480 1968(\207le)m 841(or)s 1100(a)s
 1266(symbolic)s 2196(link)s 2629(to)s 2868(a)s 3034(plain)s
 3569(\207le.)s gsave
-120 716 translate
+120 1628 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(error)m gsave
 864 0 translate
@@ -3017,8 +3027,19 @@ grestore
 grestore
 
 grestore
-0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
-2462(client)s 3052(speci\207cation)s 8652(0.62)s 
+480 1334(Causes)m 1209(an)s 1492(error)s 2015(whose)s
+2683(message)s 3549(includes)s 4397(the)s 4745(descripti)s 6(v)k 3(e)k
+5840(string)s 240 fnt83 6437 1336(te)m 4(xt)k 240 fnt82
+6781 1334(.)m 240 fnt83 6885 1336(te)m 4(xt)k 240 fnt82
+7289 1334(may)m 7755(consist)s 8479(of)s 480 1094(se)m 6(v)k 3(eral)k
+1192(tok)s 2(ens)k 1855(with)s 2326(interv)s 3(ening)k
+3454(whitespace.)s 4609(The)s 5026(whitespace)s 6134(will)s 6549(be)s
+6820(included)s 7691(in)s 7923(the)s 8260(message)s 480 854(as)m
+726(found)s 1338(in)s 1576(the)s 1919(con\207guration)s 3247(\207le:)s
+3653(all)s 3941(the)s 4284(characters)s 5298(until)s 5786(the)s
+6129(end)s 6528(of)s 6794(the)s 7137(line)s 7546(will)s
+7967(be)s 8244(included)s 0 52(User)m 511(service)s 1243(daemon)s
+2058(and)s 2462(client)s 3052(speci\207cation)s 8652(0.62)s 
 grestore
 
 grestore
@@ -3030,8 +3051,8 @@ showpage
 %%BeginPageSetup
 %%PageResources: font Times-Roman
 %%+ font Times-Bold
-%%+ font Times-Italic
 %%+ font Courier-Bold
+%%+ font Times-Italic
 /pgsave save def
 0.0500 dup scale 10 setlinewidth
 %%EndPageSetup
@@ -3057,55 +3078,44 @@ gsave
 gsave
 0 LoutMargSet
 grestore
-240 fnt84 0 13842(12)m 240 fnt82 480 13254(Causes)m 1209(an)s
-1492(error)s 2015(whose)s 2683(message)s 3549(includes)s 4397(the)s
-4745(descripti)s 6(v)k 3(e)k 5840(string)s 240 fnt83
-6437 13256(te)m 4(xt)k 240 fnt82 6781 13254(.)m 240 fnt83
-6885 13256(te)m 4(xt)k 240 fnt82 7289 13254(may)m 7755(consist)s
-8479(of)s 480 13014(se)m 6(v)k 3(eral)k 1192(tok)s 2(ens)k
-1855(with)s 2326(interv)s 3(ening)k 3454(whitespace.)s 4609(The)s
-5026(whitespace)s 6134(will)s 6549(be)s 6820(included)s 7691(in)s
-7923(the)s 8260(message)s 480 12774(as)m 726(found)s 1338(in)s
-1576(the)s 1919(con\207guration)s 3247(\207le:)s 3653(all)s 3941(the)s
-4284(characters)s 5298(until)s 5786(the)s 6129(end)s 6528(of)s
-6794(the)s 7137(line)s 7546(will)s 7967(be)s 8244(included)s
-480 12534(v)m 3(erbatim,)k 1433(unless)s 2082(the)s 3(y)k
-2545(are)s 2892(part)s 3323(of)s 3594(a)s 3760(double-quoted)s
-5201(string,)s 5852(in)s 6095(which)s 6737(case)s 7204(the)s
-7552(usual)s 8112(meaning)s 480 12294(of)m 751(the)s 1099(string)s
-1696(\(i.e.,)s 2174(after)s 2670(backslash)s 3657(escape)s 4350(processing\))s
-5501(will)s 5927(be)s 6209(used.)s 6752(Comments)s 7840(and)s
-8244(linear)s 480 12054(whitespace)m 1598(at)s 1830(the)s 2178(end)s
-2582(of)s 2853(the)s 3201(line)s 3615(\(or)s 3953(just)s
-4358(before)s 5024(the)s 5372(comment\))s 6390(will)s 6816(still)s
-7228(be)s 7510(ignored.)s gsave
-120 11714 translate
+240 fnt84 0 13842(12)m 240 fnt82 480 13254(v)m 3(erbatim,)k
+1433(unless)s 2082(the)s 3(y)k 2545(are)s 2892(part)s
+3323(of)s 3594(a)s 3760(double-quoted)s 5201(string,)s 5852(in)s
+6095(which)s 6737(case)s 7204(the)s 7552(usual)s 8112(meaning)s
+480 13014(of)m 751(the)s 1099(string)s 1696(\(i.e.,)s 2174(after)s
+2670(backslash)s 3657(escape)s 4350(processing\))s 5501(will)s 5927(be)s
+6209(used.)s 6752(Comments)s 7840(and)s 8244(linear)s 480 12774(whitespace)m
+1598(at)s 1830(the)s 2178(end)s 2582(of)s 2853(the)s
+3201(line)s 3615(\(or)s 3953(just)s 4358(before)s 5024(the)s
+5372(comment\))s 6390(will)s 6816(still)s 7228(be)s 7510(ignored.)s
+gsave
+120 12434 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(message)m gsave
 1152 0 translate
 1.4219 1.0000 scale
-240 fnt83
-0 -52(te)m 4(xt)k 404(\202)s 
+240 fnt83 0 -52(te)m 4(xt)k
+404(\202)s 
 grestore
 
 grestore
-480 11420(Causes)m 1209(a)s
-1375(message)s 2241(including)s 3198(the)s 3546(descripti)s 6(v)k 3(e)k
-4641(string)s 240 fnt83 5238 11422(te)m 4(xt)k 240 fnt82
-5642 11420(to)m 5881(be)s 6163(deli)s 6(v)k 3(ered)k
-7101(as)s 7351(if)s 7568(it)s 7760(were)s 8280(an)s
-8563(error)s 480 11180(message,)m 1397(b)s 4(ut)k 1759(does)s
-2249(not)s 2615(actually)s 3425(cause)s 4012(an)s 4295(error)s 13(.)k
-300 fnt84 0 10513(4.2.2.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
+480 12140(Causes)m 1209(a)s 1375(message)s 2241(including)s
+3198(the)s 3546(descripti)s 6(v)k 3(e)k 4641(string)s
+240 fnt83 5238 12142(te)m 4(xt)k 240 fnt82 5642 12140(to)m
+5881(be)s 6163(deli)s 6(v)k 3(ered)k 7101(as)s
+7351(if)s 7568(it)s 7760(were)s 8280(an)s 8563(error)s
+480 11900(message,)m 1397(b)s 4(ut)k 1759(does)s 2249(not)s
+2615(actually)s 3425(cause)s 4012(an)s 4295(error)s 13(.)k
+300 fnt84 0 11233(4.2.2.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
 2148(with)s 2781(delay)s 3(ed)k 3828(effect)s 240 fnt82
-0 9942(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k
+0 10662(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k
 2375(ha)s 4(v)k 3(e)k 2876(no)s 3169(immediate)s
 4233(ef)s 6(fect,)k 4876(b)s 4(ut)k 5238(are)s
 5585(remembered)s 6837(and)s 7241(ha)s 4(v)k 3(e)k
-7742(an)s 8025(ef)s 6(fect)k 8621(on)s 0 9702(later)m
+7742(an)s 8025(ef)s 6(fect)k 8621(on)s 0 10422(later)m
 483(processing)s 1559(of)s 1830(the)s 2178(con\207guration)s 3511(\207les.)s
 gsave
-120 9348 translate
+120 10068 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(user\211rcfile)m gsave
 1728 0 translate
@@ -3114,99 +3124,99 @@ gsave
 grestore
 
 grestore
-480 9054(Speci\207es)m
-1380(that)s 1784(the)s 2118(\207le)s 240 fnt83 2465 9056(\207lename)m
-240 fnt82 3315 9054(should)m 3998(be)s 4266(read)s 4721(instead)s
+480 9774(Speci\207es)m
+1380(that)s 1784(the)s 2118(\207le)s 240 fnt83 2465 9776(\207lename)m
+240 fnt82 3315 9774(should)m 3998(be)s 4266(read)s 4721(instead)s
 5442(of)s 5699(the)s 6033(user')s 13(s)k gsave
-6627 9108 translate
+6627 9828 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(~/.userv/rc)m 
 grestore
 7728(.)s 7818(This)s 8280(does)s 240 fnt83
-8756 9056(not)m 240 fnt82 480 8814(happen)m 1229(immediately;)s 2535(instead,)s
+8756 9776(not)m 240 fnt82 480 9534(happen)m 1229(immediately;)s 2535(instead,)s
 3319(the)s 3667(setting)s 4357(is)s 4567(remembered)s 5819(and)s
 6223(used)s 6720(after)s 7216(the)s gsave
-7564 8868 translate
+7564 9588 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(system.default)m
 
 grestore
-480 8574(con\207guration)m 1812(\207le)s 2171(has)s 2539(been)s 3046(read.)s
+480 9294(con\207guration)m 1812(\207le)s 2171(has)s 2539(been)s 3046(read.)s
 3559(This)s 4033(directi)s 6(v)k 3(e)k 4913(has)s
 5281(no)s 5572(ef)s 6(fect)k 6166(in)s 6407(a)s
 6571(user')s 13(s)k 7177(con\207guration)s 8508(\207le)s 8867(or)s
-480 8334(in)m 723(the)s gsave
-1071 8388 translate
+480 9054(in)m 723(the)s gsave
+1071 9108 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(system.override)m 
 grestore
 2632(\207le,)s
 3044(as)s 3294(the)s 3642(user')s 13(s)k 4250(con\207guration)s
 5583(\207le)s 5944(has)s 6314(already)s 7071(been)s 7580(found)s
-8197(and)s 8601(read)s 480 8094(by)m 774(then)s 1243(and)s
+8197(and)s 8601(read)s 480 8814(by)m 774(then)s 1243(and)s
 1647(will)s 2073(not)s 2439(be)s 2721(re-read.)s gsave
-120 7754 translate
+120 8474 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(errors\211to\211stderr)m 
 grestore
-480 7460(Causes)m 1209(error)s 1732(messages)s 2686(to)s
+480 8180(Causes)m 1209(error)s 1732(messages)s 2686(to)s
 2925(be)s 3207(deli)s 6(v)k 3(ered)k 4145(to)s
 4384(the)s 4732(client')s 13(s)k 5472(stderr)s 13(.)k
 gsave
-120 7120 translate
+120 7840 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(errors\211to\211file)m 
 grestore
-240 fnt83 1581 7068(\207lename)m 240 fnt82
-480 6826(Error)m 1039(messages)s 1989(will)s 2410(be)s 2688(written)s
-3416(to)s 240 fnt83 3651 6828(\207lename)m 240 fnt82 4455 6826(,)m
+240 fnt83 1581 7788(\207lename)m 240 fnt82
+480 7546(Error)m 1039(messages)s 1989(will)s 2410(be)s 2688(written)s
+3416(to)s 240 fnt83 3651 7548(\207lename)m 240 fnt82 4455 7546(,)m
 4557(which)s 5195(will)s 5617(be)s 5894(opened)s 6640(in)s
 6878(the)s 7222(conte)s 3(xt)k 7978(of)s 8245(and)s
-8644(with)s 480 6586(the)m 828(pri)s 6(vile)k 3(ges)k
+8644(with)s 480 7306(the)m 828(pri)s 6(vile)k 3(ges)k
 1812(of)s 2083(the)s 2431(service)s 3163(user)s 13(.)k
 gsave
-120 6246 translate
+120 6966 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(errors\211to\211syslog)m 
 grestore
-1782 6192([)m 240 fnt83 1853 6194(facility)m
-240 fnt82 2571 6192([)m 240 fnt83 2642 6194(le)m 3(vel)k
-240 fnt82 3089 6192(]])m 480 5952(Error)m 1043(messages)s 1997(will)s
+1782 6912([)m 240 fnt83 1853 6914(facility)m
+240 fnt82 2571 6912([)m 240 fnt83 2642 6914(le)m 3(vel)k
+240 fnt82 3089 6912(]])m 480 6672(Error)m 1043(messages)s 1997(will)s
 2423(be)s 2705(deli)s 6(v)k 3(ered)k 3643(using)s
 gsave
-4215 6006 translate
+4215 6726 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(syslog)m 
 grestore
 4815(.)s 4919(The)s 5347(def)s 2(ault)k
-240 fnt83 6068 5954(facility)m 240 fnt82 6786 5952(is)m gsave
-6996 6006 translate
+240 fnt83 6068 6674(facility)m 240 fnt82 6786 6672(is)m gsave
+6996 6726 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(user)m 
 grestore
 7396(;)s 7508(the)s 7856(def)s 2(ault)k
-240 fnt83 8577 5954(le)m 3(vel)k 240 fnt82 480 5712(is)m
+240 fnt83 8577 6674(le)m 3(vel)k 240 fnt82 480 6432(is)m
 gsave
-690 5766 translate
+690 6486 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(error)m 
 grestore
-1190(.)s 300 fnt84 0 5095(4.2.3.)m
+1190(.)s 300 fnt84 0 5815(4.2.3.)m
 813(Contr)s 5(ol)k 1874(structur)s 5(e)k 3117(dir)s 5(ecti)k 3(v)k 3(es)k
-240 fnt82 0 4580(The)m 421(follo)s 6(wing)k 1390(directi)s 6(v)k 3(es)k
+240 fnt82 0 5300(The)m 421(follo)s 6(wing)k 1390(directi)s 6(v)k 3(es)k
 2353(are)s 2692(used)s 3182(to)s 3413(create)s 4031(control)s
 4755(structures.)s 5780(If)s 6002(the)s 6343(end)s 6739(of)s
-7003(the)s 7343(\207le)s 7697(is)s 7899(encountered)s 0 4340(before)m
+7003(the)s 7343(\207le)s 7697(is)s 7899(encountered)s 0 5060(before)m
 666(the)s 1014(end)s 1418(of)s 1689(an)s 3(y)k
 2086(control)s 2818(structure)s 3709(which)s 4351(w)s 2(as)k
 4772(started)s 5466(inside)s 6093(it)s 6285(then)s 6754(that)s
-7172(control)s 7904(structure)s 8795(is)s 0 4100(considered)m 1094(\207nished.)s
+7172(control)s 7904(structure)s 8795(is)s 0 4820(considered)m 1094(\207nished.)s
 1956(This)s 2432(is)s 2642(not)s 3008(an)s 3291(error)s 13(.)k
 gsave
-120 3746 translate
+120 4466 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(if)m gsave
 432 0 translate
@@ -3216,7 +3226,7 @@ grestore
 
 grestore
 gsave
-120 3506 translate
+120 4226 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(elif)m gsave
@@ -3227,38 +3237,38 @@ grestore
 
 grestore
 gsave
-120 3266 translate
+120 3986 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(else)m
 
 grestore
 gsave
-120 3026 translate
+120 3746 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(fi)m 
 grestore
-480 2732(Lines)m 1062(follo)s 6(wing)k
+480 3452(Lines)m 1062(follo)s 6(wing)k
 gsave
-2039 2786 translate
+2039 3506 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(if)m 
 grestore
 2299(are)s 2646(interpreted)s 3738(only)s
 4218(if)s 4435(the)s 4783(condition)s 5744(is)s 5954(true.)s
-6429(Man)s 3(y)k 7039(conditions)s 8087(are)s 480 2492(properties)m
+6429(Man)s 3(y)k 7039(conditions)s 8087(are)s 480 3212(properties)m
 1486(of)s 1757(parameter)s 2771(v)s 6(alues.)k 3480(Most)s
 4032(parameters)s 5130(ha)s 4(v)k 3(e)k 5631(a)s
 5797(single)s 6424(string)s 7021(as)s 7271(a)s 7437(v)s 6(alue;)k
 8061(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-480 2252(some)m 1035(may)s 1495(yield)s 2025(zero)s 2483(or)s
+480 2972(some)m 1035(may)s 1495(yield)s 2025(zero)s 2483(or)s
 2735(se)s 6(v)k 3(eral)k 3451(strings,)s 4189(in)s
 4426(which)s 5062(case)s 5522(the)s 5864(condition)s 6819(is)s
 7023(true)s 7444(if)s 7654(it)s 7840(is)s 8044(true)s
-8465(of)s 8729(an)s 3(y)k 480 2012(of)m 751(the)s
+8465(of)s 8729(an)s 3(y)k 480 2732(of)m 751(the)s
 1099(strings)s 1787(indi)s 6(vidually)k 15(.)k 3026(P)s 3(arameters)k
 4134(are)s 4481(described)s 5455(belo)s 6(w)k 15(.)k
-480 1604(The)m 908(conditions)s 1956(are:)s gsave
-600 1418 translate
+6183(The)s 6611(conditions)s 7659(are:)s gsave
+600 2545 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(glob)m
 gsave
@@ -3269,65 +3279,25 @@ grestore
 gsave
 2284 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(glob-pattern)m
+240 fnt83 0 -52(glob\211pattern)m
 
 grestore
-4120(\202)s 
+4178(\202)s 
 grestore
-960 1124(The)m 1388(v)s 6(alue)k 1956(of)s
+960 2251(The)m 1388(v)s 6(alue)k 1956(of)s
 2227(the)s 2575(parameter)s 3589(whose)s 4257(name)s 4831(is)s
 5041(gi)s 6(v)k 3(en)k 5621(matches)s 6455(one)s
-6857(of)s 7128(the)s 7476(glob)s 7955(patterns)s 960 884(\(anchored)m
+6857(of)s 7128(the)s 7476(glob)s 7955(patterns)s 960 2011(\(anchored)m
 1974(at)s 2206(both)s 2689(ends;)s 3240(backslashes)s 4420(can)s
 4809(be)s 5091(used)s 5588(to)s 5827(escape)s 6520(metacharacters\).)s
-0 52(0.62)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
-7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
 gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8833 13842(13)m gsave
-600 13310 translate
+600 1825 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(range)m gsave
 864 0 translate
 1.4219 1.0000 scale
-240 fnt83
-0 -52(par)m 3(ameter)k 
+240 fnt83 0 -52(par)m 3(ameter)k
+
 grestore
 gsave
 2428 0 translate
@@ -3337,19 +3307,18 @@ grestore
 gsave
 3073 0 translate
 1.4219 1.0000 scale
-240 fnt83
-0 -52(max)m 
+240 fnt83 0 -52(max)m 
 grestore
 
 grestore
-240 fnt82 960 13016(The)m 1380(v)s 6(alue)k
-1940(of)s 2203(the)s 2543(parameter)s 3548(is)s 3750(a)s
-3908(nonne)s 3(g)k 1(ati)k 6(v)k 3(e)k
+960 1531(The)m
+1380(v)s 6(alue)k 1940(of)s 2203(the)s 2543(parameter)s
+3548(is)s 3750(a)s 3908(nonne)s 3(g)k 1(ati)k 6(v)k 3(e)k
 5113(inte)s 3(ger)k 5825(and)s 6220(lies)s 6594(within)s
-7254(the)s 7594(range)s 8172(speci\207ed.)s 240 fnt83 960 12778(min)m
-240 fnt82 1373 12776(or)m 240 fnt83 1632 12778(max)m 240 fnt82
-2091 12776(may)m 2557(be)s gsave
-2839 12830 translate
+7254(the)s 7594(range)s 8172(speci\207ed.)s 240 fnt83 960 1293(min)m
+240 fnt82 1373 1291(or)m 240 fnt83 1632 1293(max)m 240 fnt82
+2091 1291(may)m 2557(be)s gsave
+2839 1345 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52($)m 
 grestore
@@ -3357,7 +3326,7 @@ grestore
 3238(indicate)s 4050(no)s 4343(lo)s 6(wer)k 4941(or)s
 5200(upper)s 5805(limit,)s 6362(respecti)s 6(v)k 3(ely)k 15(.)k
 gsave
-600 12589 translate
+600 1104 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(grep)m gsave
 720 0 translate
@@ -3372,44 +3341,84 @@ gsave
 grestore
 
 grestore
-960 12295(The)m 240 fnt83 1388 12297(\207lename)m
-240 fnt82 2252 12295(refers)m 2845(to)s 3084(a)s 3250(\207le)s
+960 810(The)m 240 fnt83 1388 812(\207lename)m
+240 fnt82 2252 810(refers)m 2845(to)s 3084(a)s 3250(\207le)s
 3611(one)s 4013(of)s 4284(whose)s 4952(lines)s 5454(is)s
 5664(the)s 6012(v)s 6(alue)k 6580(of)s 6851(the)s
-7199(parameter)s 8213(\(leading)s 960 12055(or)m 1211(trailing)s 1944(whitespace)s
-3053(on)s 3341(each)s 3827(line)s 4232(and)s 4627(empty)s
-5270(lines)s 5764(in)s 5998(the)s 6337(\207le)s 6689(are)s
-7027(ignored\).)s 7932(It)s 8128(is)s 8329(an)s 8603(error)s
-960 11815(for)m 1298(the)s 1646(\207le)s 2007(not)s 2373(to)s
-2612(be)s 2894(opened)s 3644(and)s 4048(read.)s gsave
-600 11628 translate
+7199(parameter)s 8213(\(leading)s 0 52(0.62)m 4809(User)s 5320(service)s
+6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 13 13
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier-Bold
+%%+ font Times-Italic
+/pgsave save def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+
+grestore
+
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt84 8833 13842(13)m 240 fnt82 960 13251(or)m 1211(trailing)s
+1944(whitespace)s 3053(on)s 3341(each)s 3827(line)s 4232(and)s
+4627(empty)s 5270(lines)s 5764(in)s 5998(the)s 6337(\207le)s
+6689(are)s 7027(ignored\).)s 7932(It)s 8128(is)s 8329(an)s
+8603(error)s 960 13011(for)m 1298(the)s 1646(\207le)s 2007(not)s
+2373(to)s 2612(be)s 2894(opened)s 3644(and)s 4048(read.)s
+gsave
+600 12824 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(!)m gsave
+240 fnt31 0 -52(!)m gsave
 288 0 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(condition)m 
 grestore
 
 grestore
-960 11334(The)m 240 fnt83
-1388 11336(condition)m 240 fnt82 2346 11334(is)m 240 fnt83 2556 11336(not)m
-240 fnt82 2926 11334(true.)m 600 11094(Conjunctions:)m gsave
-1983 11148 translate
+960 12530(The)m
+240 fnt83 1388 12532(condition)m 240 fnt82 2346 12530(is)m 240 fnt83
+2556 12532(not)m 240 fnt82 2926 12530(true.)m 600 12290(Conjunctions:)m gsave
+1983 12344 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(&)m
-
+240 fnt31
+0 -52(&)m 
 grestore
 2143(and)s gsave
-2547 11148 translate
+2547 12344 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(|)m 
 grestore
 gsave
-1440 10901 translate
+1440 11864 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(\()m
-gsave
+240 fnt31
+0 -52(\()m gsave
 288 0 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(condition)m 
@@ -3417,113 +3426,113 @@ grestore
 0 -292(&)m gsave
 288 -240 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m
-
+240 fnt83
+0 -52(condition)m 
 grestore
 0 -532(&)m gsave
 288 -480 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(condition)m 
 grestore
-0 -772(\202)m 0 -1012(\))m
-
+0 -772(\202)m
+0 -1012(\))m 
 grestore
-960 9635(is)m 1170(true)s 1597(if)s 1814(all)s 2107(the)s
-2455(listed)s 3030(conditions)s 4078(are)s 4425(true;)s 4908(where)s
-gsave
-5548 9689 translate
+960 10598(is)m 1170(true)s 1597(if)s 1814(all)s
+2107(the)s 2455(listed)s 3030(conditions)s 4078(are)s 4425(true;)s
+4908(where)s gsave
+5548 10652 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(|)m 
 grestore
-5708(is)s 5918(used)s 6415(it)s
-6607(is)s 6817(true)s 7244(if)s 7461(an)s 3(y)k
-7858(of)s 8129(them)s 8667(is)s 960 9390(true.)m 1428(Ne)s 6(wlines)k
+5708(is)s 5918(used)s
+6415(it)s 6607(is)s 6817(true)s 7244(if)s 7461(an)s 3(y)k
+7858(of)s 8129(them)s 8667(is)s 960 10353(true.)m 1428(Ne)s 6(wlines)k
 2368(must)s 2885(be)s 3159(used)s 3648(to)s 3879(separate)s
 4709(one)s 5104(condition)s 6057(from)s 6573(the)s 6913(ne)s 3(xt,)k
 7421(as)s 7663(sho)s 6(wn,)k 8382(and)s 8778(the)s
-960 9150(parentheses)m 2126(are)s 2473(mandatory)s 15(.)k 3585(These)s
+960 10113(parentheses)m 2126(are)s 2473(mandatory)s 15(.)k 3585(These)s
 4212(conjunctions)s 5486(do)s 5779(not)s 6145(do)s 6438(lazy)s
-6890(e)s 6(v)k 6(aluation.)k 480 8588(The)m 908(parameters)s
+6890(e)s 6(v)k 6(aluation.)k 480 9850(The)m 908(parameters)s
 2006(are:)s gsave
-600 8402 translate
+600 9664 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(service)m 
 grestore
-960 8108(The)m 1388(service)s
+960 9370(The)m 1388(service)s
 2120(name)s 2694(speci\207ed)s 3602(when)s 4178(the)s 4526(client)s
 5116(w)s 2(as)k 5537(called.)s gsave
-600 7922 translate
+600 9184 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(calling\211user)m
 
 grestore
-960 7628(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s
+960 8890(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s
 2522(login)s 3071(name)s 3645(of)s 3916(the)s 4264(calling)s
 4967(user)s 5425(\(determined)s 6637(as)s 6887(for)s gsave
-7225 7682 translate
+7225 8944 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(USERV_USER)m 
 grestore
 8226(,)s 8333(abo)s 3(v)k 3(e\))k
-960 7388(and)m 1364(the)s 1712(calling)s 2415(uid)s 2779(\(represented)s
+960 8650(and)m 1364(the)s 1712(calling)s 2415(uid)s 2779(\(represented)s
 4017(in)s 4260(decimal\).)s gsave
-600 7202 translate
+600 8464 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(calling\211group)m 
 grestore
-960 6908(Se)m 6(v)k 3(eral)k
+960 8170(Se)m 6(v)k 3(eral)k
 1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s
 5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s
-7939(decimal\))s 960 6668(of)m 1231(the)s 1579(calling)s 2282(process.)s
+7939(decimal\))s 960 7930(of)m 1231(the)s 1579(calling)s 2282(process.)s
 3103(All)s 3463(the)s 3811(group)s 4423(names)s 5085(come)s
 5659(\207rst,)s 6137(and)s 6541(then)s 7010(the)s 7358(gids.)s
-7861(If)s 8091(the)s 8439(\207rst)s 960 6428(supplementary)m 2422(group)s
+7861(If)s 8091(the)s 8439(\207rst)s 960 7690(supplementary)m 2422(group)s
 3034(is)s 3244(the)s 3592(same)s 4139(as)s 4389(the)s
 4737(primary)s 5547(group)s 6159(then)s 6628(it)s 6820(is)s
 7030(elided.)s gsave
-600 6242 translate
+600 7504 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(calling\211user\211shell)m 
 grestore
-960 5948(The)m 1388(calling)s
+960 7210(The)m 1388(calling)s
 2091(user')s 13(s)k 2699(shell,)s 3257(as)s 3507(listed)s
 4082(in)s 4325(the)s 4673(passw)s 2(ord)k 5633(entry)s
 6178(for)s 6516(the)s 6864(calling)s 7567(login)s 8116(name)s
-8690(\(as)s 960 5708(determined)m 2093(for)s gsave
-2431 5762 translate
+8690(\(as)s 960 6970(determined)m 2093(for)s gsave
+2431 7024 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(USERV_USER)m
 
 grestore
 3432(,)s 3539(abo)s 3(v)k 3(e\).)k gsave
-600 5522 translate
+600 6784 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(service\211user)m 
 grestore
-960 5228(T)m 19(w)k 2(o)k 1431(strings:)s
+960 6490(T)m 19(w)k 2(o)k 1431(strings:)s
 2174(the)s 2522(name)s 3096(of)s 3367(the)s 3715(service)s
 4447(user)s 4905(\(as)s 5234(speci\207ed)s 6142(to)s 6381(the)s
-6729(client\))s 7387(and)s 7791(their)s 8288(uid)s 960 4988(\(represented)m
+6729(client\))s 7387(and)s 7791(their)s 8288(uid)s 960 6250(\(represented)m
 2198(in)s 2441(decimal\).)s gsave
-600 4802 translate
+600 6064 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(service\211group)m 
 grestore
-960 4508(Se)m 6(v)k 3(eral)k
+960 5770(Se)m 6(v)k 3(eral)k
 1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s
 5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s
-7939(decimal\))s 8823(of)s 960 4268(the)m 1308(service)s 2040(user)s 13(.)k
+7939(decimal\))s 8823(of)s 960 5530(the)m 1308(service)s 2040(user)s 13(.)k
 gsave
-600 4082 translate
+600 5344 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(service\211user\211shell)m 
 grestore
-960 3788(The)m 1388(service)s 2120(user')s 13(s)k
+960 5050(The)m 1388(service)s 2120(user')s 13(s)k
 2728(shell,)s 3286(as)s 3536(listed)s 4111(in)s 4354(their)s
 4851(passw)s 2(ord)k 5811(entry)s 15(.)k gsave
-600 3602 translate
+600 4864 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(u\211)m gsave
@@ -3533,240 +3542,239 @@ grestore
 grestore
 
 grestore
-960 3308(The)m 1388(v)s 6(alue)k
+960 4570(The)m 1388(v)s 6(alue)k
 1956(of)s 2227(the)s 2575(user)s 4(-de\207ned)k 3811(v)s 6(ariable)k
-240 fnt83 4630 3310(name)m 240 fnt82 5202 3308(passed)m 5898(by)s
+240 fnt83 4630 4572(name)m 240 fnt82 5202 4570(passed)m 5898(by)s
 6192(the)s 6540(caller)s 7129(using)s 7701(the)s gsave
-8049 3362 translate
+8049 4624 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(\211\211defvar)m 
 grestore
-960 3068(command-line)m 2397(option)s 3066(to)s 3305(the)s
+960 4330(command-line)m 2397(option)s 3066(to)s 3305(the)s
 3653(client.)s 4287(If)s 4517(the)s 4865(v)s 6(ariable)k
 5684(w)s 2(as)k 6105(not)s 6471(de\207ned)s 7234(then)s
-7703(this)s 8099(parameter)s 960 2828(is)m 1170(an)s 1453(empty)s
+7703(this)s 8099(parameter)s 960 4090(is)m 1170(an)s 1453(empty)s
 2105(list)s 2456(of)s 2727(strings;)s 3476(in)s 3719(this)s
 4115(case)s 4582(an)s 3(y)k 4979(condition)s 5940(which)s
 6582(tests)s 7057(it)s 7249(will)s 7675(be)s 7957(f)s 2(alse,)k
 8512(and)s gsave
-960 2642 translate
+960 3904 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(include\211lookup)m 
 grestore
-2421 2588(on)m 2718(it)s
+2421 3850(on)m 2718(it)s
 2910(will)s 3336(read)s 3805(the)s gsave
-4153 2642 translate
+4153 3904 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:none)m
 
 grestore
 4713(\207le,)s 5125(or)s gsave
-5384 2642 translate
+5384 3904 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:default)m 
 grestore
 6245(if)s
 gsave
-6462 2642 translate
+6462 3904 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(:none)m 
 grestore
 7022(is)s 7232(not)s 7598(found.)s
 gsave
-120 2219 translate
+120 3481 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(errors\211push)m 
 grestore
-240 fnt83 1281 2167(\207lename)m gsave
-120 1979 translate
+240 fnt83 1281 3429(\207lename)m gsave
+120 3241 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(srorre)m 
 grestore
-240 fnt82 480 1685(Stacks)m 1155(the)s 1503(error)s
+240 fnt82 480 2947(Stacks)m 1155(the)s 1503(error)s
 2026(handling)s 2917(beha)s 4(viour)k 3930(currently)s 4846(in)s
 5089(ef)s 6(fect.)k 5729(An)s 3(y)k 6193(changes)s
-7015(to)s 7254(error)s 7777(handling)s 8668(will)s 480 1445(tak)m 2(e)k
+7015(to)s 7254(error)s 7777(handling)s 8668(will)s 480 2707(tak)m 2(e)k
 932(ef)s 6(fect)k 1528(only)s 2008(between)s gsave
-2862 1499 translate
+2862 2761 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(errors\211push)m 
 grestore
 4023(and)s gsave
-4427 1499 translate
+4427 2761 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(srorre)m 
 grestore
 5027(.)s
 gsave
-120 1105 translate
+120 2367 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
 gsave
-120 865 translate
+120 2127 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(hctac)m 
 grestore
-0 52(User)m
-511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s
-8652(0.62)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 14
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(14)m 240 fnt82 480 13254(An)m 3(y)k
+480 1833(An)m 3(y)k
 935(use)s 1301(of)s gsave
-1563 13308 translate
+1563 1887 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(quit)m 
 grestore
 2013(inside)s
 gsave
-2631 13308 translate
+2631 1887 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
 3683(will)s 4100(merely)s 4807(cause)s
 5385(the)s 5724(parsing)s 6472(to)s 6701(continue)s 7572(at)s
 gsave
-7795 13308 translate
+7795 1887 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(hctac)m 
 grestore
-8345(instead.)s 480 13014(An)m 3(y)k
+8345(instead.)s 480 1593(An)m 3(y)k
 944(control)s 1676(constructs)s 2696(started)s 3390(since)s 3937(the)s
 gsave
-4285 13068 translate
+4285 1647 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
 5346(will)s 5772(be)s 6054(considered)s
 7148(\207nished)s 7964(if)s 8181(a)s gsave
-8347 13068 translate
+8347 1647 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(quit)m
 
 grestore
-480 12774(is)m 690(found.)s 480 12366(If)m 710(an)s 993(error)s
-1516(occurs)s 2191(inside)s gsave
-2818 12420 translate
+8807(is)s 480 1353(found.)m 1203(If)s 1433(an)s 1716(error)s
+2239(occurs)s 2914(inside)s gsave
+3541 1407 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
-3879(the)s
-4227(e)s 3(x)k 3(ecution)k 5208(settings)s 5989(will)s
-6415(be)s 6697(reset)s 7207(\(as)s 7536(if)s 7753(by)s
-8047(the)s gsave
-8395 12420 translate
+4602(the)s
+4950(e)s 3(x)k 3(ecution)k 5931(settings)s 6712(will)s
+7138(be)s 7420(reset)s 7930(\(as)s 8259(if)s 8476(by)s
+8770(the)s gsave
+480 1167 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reset)m 
 grestore
-480 12126(directi)m 6(v)k 3(e\))k
-1434(and)s 1838(parsing)s 2595(will)s 3021(lik)s 2(e)k 6(wise)k
-3865(continue)s 4745(at)s gsave
-4977 12180 translate
+1040 1113(directi)m 6(v)k 3(e\))k
+1994(and)s 2398(parsing)s 3155(will)s 3581(lik)s 2(e)k 6(wise)k
+4425(continue)s 5305(at)s gsave
+5537 1167 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(hctac)m 
 grestore
-5477(.)s
-480 11718(If)m 705(a)s 865(le)s 3(xical)k 1548(or)s
-1801(syntax)s 2476(error)s 2993(is)s 3198(detected)s 4046(in)s
-4283(the)s 4626(same)s 5167(con\207guration)s 6495(\207le)s 6850(as)s
-7095(the)s gsave
-7437 11772 translate
+6037(.)s
+6201(If)s 6431(a)s 6597(le)s 3(xical)k 7285(or)s
+7544(syntax)s 8224(error)s 8747(is)s 480 873(detected)m 1334(in)s
+1577(the)s 1925(same)s 2472(con\207guration)s 3805(\207le)s 4166(as)s
+4416(the)s gsave
+4764 927 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(catch\211quit)m 
 grestore
-8438(,)s 8539(while)s
-480 11478(looking)m 1265(for)s 1603(the)s gsave
-1951 11532 translate
+5765(,)s 5872(while)s
+6459(looking)s 7244(for)s 7582(the)s gsave
+7930 927 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(hctac)m
 
 grestore
-2511(after)s 3007(an)s 3290(error)s 3813(or)s gsave
-4072 11532 translate
+8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
+2462(client)s 3052(speci\207cation)s 8652(0.62)s 
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 14 14
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier-Bold
+%%+ font Times-Italic
+/pgsave save def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+
+grestore
+
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt84 0 13842(14)m 240 fnt82 480 13254(an)m 763(error)s
+1286(or)s gsave
+1545 13308 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(quit)m 
+240 fnt31 0 -52(quit)m 
 grestore
-4472(,)s 4579(that)s 4997(ne)s 6(w)k
-5444(error)s 5967(will)s 6393(not)s 6759(be)s 7041(caught.)s
-300 fnt84 0 10811(4.2.4.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
+1945(,)s 2052(that)s
+2470(ne)s 6(w)k 2917(error)s 3440(will)s 3866(not)s
+4232(be)s 4514(caught.)s 300 fnt84 0 12587(4.2.4.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
 2148(f)s 7(or)k 2595(changing)s 3829(execution)s 5112(settings)s
-240 fnt82 0 10240(The)m 419(follo)s 6(wing)k 1386(directi)s 6(v)k 3(es)k
+240 fnt82 0 12016(The)m 419(follo)s 6(wing)k 1386(directi)s 6(v)k 3(es)k
 2346(modify)s 3082(the)s 3420(e)s 3(x)k 3(ecution)k
 4391(settings;)s 5223(the)s 5562(serv)s 3(er)k 6192(will)s
 6608(remember)s 7627(the)s 7965(f)s 2(act)k 8370(that)s
-8778(the)s 0 9999(directi)m 6(v)k 3(e)k 881(w)s 2(as)k
+8778(the)s 0 11775(directi)m 6(v)k 3(e)k 881(w)s 2(as)k
 1300(encountered)s 2525(and)s 2927(act)s 3263(on)s 3559(it)s
 3749(only)s 4227(after)s 4721(all)s 5012(the)s 5359(con\207guration)s
 6690(has)s 7058(been)s 7565(parsed.)s 8291(The)s 240 fnt83
-8717 10001(last)m 240 fnt82 0 9759(directi)m 6(v)k 3(e)k
+8717 11777(last)m 240 fnt82 0 11535(directi)m 6(v)k 3(e)k
 882(which)s 1524(modi\207es)s 2399(an)s 3(y)k 2796(particuar)s
 3704(setting)s 4394(will)s 4820(tak)s 2(e)k 5272(ef)s 6(fect.)k
 gsave
-120 9405 translate
+120 11181 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reject)m 
 grestore
-480 9111(Reject)m 1150(the)s 1498(request.)s
+480 10887(Reject)m 1150(the)s 1498(request.)s
 gsave
-2292 9165 translate
+2292 10941 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute)m 
 grestore
 2992(,)s gsave
-3099 9165 translate
+3099 10941 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211directory)m
 
 grestore
 5361(and)s gsave
-5765 9165 translate
+5765 10941 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211path)m 
 grestore
 7527(will)s 7953(change)s
-480 8871(this)m 876(setting.)s gsave
-120 8531 translate
+480 10647(this)m 876(setting.)s gsave
+120 10307 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute)m gsave
 1152 0 translate
@@ -3782,13 +3790,13 @@ gsave
 grestore
 4048(\202])s 
 grestore
-480 8237(Ex)m 3(ecute)k
-1300(the)s 1645(program)s 240 fnt83 2512 8239(pr)m 10(o)k 2(gr)k 3(am)k
-240 fnt82 3332 8237(,)m 3436(with)s 3915(the)s 4259(ar)s 4(guments)k
+480 10013(Ex)m 3(ecute)k
+1300(the)s 1645(program)s 240 fnt83 2512 10015(pr)m 10(o)k 2(gr)k 3(am)k
+240 fnt82 3332 10013(,)m 3436(with)s 3915(the)s 4259(ar)s 4(guments)k
 5299(as)s 5546(speci\207ed,)s 6500(follo)s 6(wed)k 7399(by)s
-7690(an)s 3(y)k 8083(ar)s 4(guments)k 480 7997(gi)m 6(v)k 3(en)k
+7690(an)s 3(y)k 8083(ar)s 4(guments)k 480 9773(gi)m 6(v)k 3(en)k
 1052(to)s 1282(the)s 1621(client)s 2203(if)s gsave
-2411 8051 translate
+2411 9827 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(no\211suppress\211args)m 
@@ -3796,15 +3804,15 @@ grestore
 4064(is)s 4266(in)s 4500(ef)s 6(fect.)k
 5131(It)s 5328(is)s 5529(an)s 5803(error)s 6318(for)s
 6647(the)s 6986(e)s 3(x)k 3(ecution)k 7959(to)s
-8189(f)s 2(ail)k 8550(when)s 480 7757(it)m 672(is)s
+8189(f)s 2(ail)k 8550(when)s 480 9533(it)m 672(is)s
 882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s 3098(con\207guration)s
 4431(has)s 4801(been)s 5310(parsed\).)s 6117(If)s 240 fnt83
-6347 7759(pr)m 10(o)k 2(gr)k 3(am)k 240 fnt82
-7227 7757(does)m 7717(not)s 8083(contain)s 8844(a)s 480 7517(slash)m
+6347 9535(pr)m 10(o)k 2(gr)k 3(am)k 240 fnt82
+7227 9533(does)m 7717(not)s 8083(contain)s 8844(a)s 480 9293(slash)m
 1015(it)s 1207(will)s 1633(be)s 1915(searched)s 2809(for)s
 3147(on)s 3444(the)s 3792(service)s 4524(user')s 13(s)k
 5132(path.)s gsave
-120 7177 translate
+120 8953 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211directory)m gsave
 3312 0 translate
@@ -3820,117 +3828,172 @@ grestore
 6376(\202])s
 
 grestore
-480 6883(T)m 19(ak)k 2(e)k 993(all)s 1286(the)s
+480 8659(T)m 19(ak)k 2(e)k 993(all)s 1286(the)s
 1634(characters)s 2652(after)s 3148(the)s 3496(last)s 3887(slash)s
 4422(of)s 4693(the)s 5041(service)s 5773(name)s 6347(speci\207ed)s
-7255(when)s 7831(the)s 8179(client)s 480 6642(w)m 2(as)k
+7255(when)s 7831(the)s 8179(client)s 480 8418(w)m 2(as)k
 901(called,)s 1578(and)s 1982(e)s 3(x)k 3(ecute)k
 2762(that)s 3180(program)s 4050(in)s 4293(the)s 4641(directory)s
-5557(named)s 6253(by)s 240 fnt83 6547 6644(pathname)m 240 fnt82
-7545 6642(as)m 7795(if)s 8012(it)s 8204(had)s 8608(been)s
-480 6402(speci\207ed)m 1388(for)s 240 fnt83 1726 6404(e)m 4(xecute)k
-240 fnt82 2431 6402(.)m 2535(The)s 2963(part)s 3394(of)s
+5557(named)s 6253(by)s 240 fnt83 6547 8420(pathname)m 240 fnt82
+7545 8418(as)m 7795(if)s 8012(it)s 8204(had)s 8608(been)s
+480 8178(speci\207ed)m 1388(for)s 240 fnt83 1726 8180(e)m 4(xecute)k
+240 fnt82 2431 8178(.)m 2535(The)s 2963(part)s 3394(of)s
 3665(the)s 4013(service)s 4745(name)s 5319(used)s 5816(may)s
-6282(contain)s 7043(only)s 7523(alphanumerics)s 480 6162(and)m 884(h)s 1(yphens)k
+6282(contain)s 7043(only)s 7523(alphanumerics)s 480 7938(and)m 884(h)s 1(yphens)k
 1732(and)s 2136(must)s 2660(start)s 3130(with)s 3611(an)s
 3894(alphanumeric)s 5247(\(and)s 5730(it)s 5921(must)s 6446(be)s
-6727(non-empty\),)s 7950(otherwise)s 8934(it)s 480 5922(is)m 690(an)s
-973(error)s 13(.)k 480 5514(This)m 956(directi)s 6(v)k 3(e)k
-1838(is)s 2048(ignored)s 2837(if)s 3054(the)s 3402(rele)s 6(v)k 6(ant)k
-4219(program)s 5089(does)s 5579(not)s 5945(e)s 3(xist)k
-6453(in)s 6696(the)s 7044(directory)s 7960(speci\207ed;)s 480 5274(in)m
-723(this)s 1119(case)s 1586(the)s 1934(program)s 2804(to)s
-3043(e)s 3(x)k 3(ecute)k 3823(is)s 4033(left)s
-4410(at)s 4642(its)s 4918(pre)s 6(vious)k 5787(setting)s
-6477(\(or)s 6815(unset,)s 7427(if)s 7644(it)s 7836(w)s 2(as)k
-8257(not)s 480 5034(set)m 805(before\).)s 480 4626(It)m 672(is)s
-869(an)s 1139(error)s 1649(for)s 1974(the)s 2309(test)s
-2687(for)s 3012(the)s 3347(e)s 3(xistence)k 4276(of)s
-4533(the)s 4868(program)s 5725(to)s 5951(f)s 2(ail)k
-6308(other)s 6846(than)s 7302(with)s 7771(a)s 7924(`no)s
-8283(such)s 8765(\207le)s 480 4386(or)m 729(directory')s 1693(indication.)s
-2743(It)s 2938(is)s 3138(also)s 3566(an)s 3839(error)s
-4352(for)s 4680(the)s 5018(e)s 3(x)k 3(ecution)k
-5989(to)s 6218(f)s 2(ail)k 6578(if)s 6785(and)s
-7179(when)s 7745(it)s 7927(is)s 8126(attempted)s 480 4146(\(after)m
-1055(all)s 1348(the)s 1696(con\207guration)s 3029(has)s 3399(been)s
-3908(parsed\).)s gsave
-120 3806 translate
+6727(non-empty\),)s 7950(otherwise)s 8934(it)s 480 7698(is)m 690(an)s
+973(error)s 13(.)k 1587(This)s 2063(directi)s 6(v)k 3(e)k
+2945(is)s 3155(ignored)s 3944(if)s 4161(the)s 4509(rele)s 6(v)k 6(ant)k
+5326(program)s 6196(does)s 6686(not)s 7052(e)s 3(xist)k
+7560(in)s 7803(the)s 8151(directory)s 480 7458(speci\207ed;)m 1437(in)s
+1675(this)s 2066(case)s 2528(the)s 2871(program)s 3735(to)s
+3969(e)s 3(x)k 3(ecute)k 4744(is)s 4949(left)s
+5321(at)s 5548(its)s 5818(pre)s 6(vious)k 6682(setting)s
+7367(\(or)s 7700(unset,)s 8307(if)s 8519(it)s 8705(w)s 2(as)k
+480 7218(not)m 846(set)s 1171(before\).)s 2024(It)s 2229(is)s
+2439(an)s 2722(error)s 3245(for)s 3583(the)s 3931(test)s
+4322(for)s 4660(the)s 5008(e)s 3(xistence)k 5950(of)s
+6221(the)s 6569(program)s 7439(to)s 7678(f)s 2(ail)k
+8048(other)s 8599(than)s 480 6978(with)m 958(a)s 1120(`no)s
+1488(such)s 1980(\207le)s 2336(or)s 2591(directory')s 3561(indication.)s
+4617(It)s 4818(is)s 5023(also)s 5457(an)s 5736(error)s
+6255(for)s 6589(the)s 6932(e)s 3(x)k 3(ecution)k
+7909(to)s 8144(f)s 2(ail)k 8510(if)s 8722(and)s
+480 6738(when)m 1056(it)s 1248(is)s 1458(attempted)s 2458(\(after)s
+3033(all)s 3326(the)s 3674(con\207guration)s 5007(has)s 5377(been)s
+5886(parsed\).)s gsave
+120 6398 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211path)m 
 grestore
-240 fnt83 480 3514(service)m
-240 fnt82 1202 3512(is)m 1404(interpreted)s 2488(as)s 2731(a)s
+240 fnt83 480 6106(service)m
+240 fnt82 1202 6104(is)m 1404(interpreted)s 2488(as)s 2731(a)s
 2889(program)s 3751(on)s 4041(the)s 4381(def)s 2(ault)k
 gsave
-5094 3566 translate
+5094 6158 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(PATH)m 
 grestore
 5546(\(or)s 5877(as)s 6119(a)s
 6277(pathname)s 7256(of)s 7519(an)s 7794(e)s 3(x)k 3(ecutable,)k
-8909(if)s 480 3271(it)m 660(contains)s 1495(a)s gsave
-1649 3325 translate
+8909(if)s 480 5863(it)m 660(contains)s 1495(a)s gsave
+1649 5917 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(/)m 
 grestore
 1749(\).)s 1919(This)s 2383(directi)s 6(v)k 3(e)k
-3252(is)s 240 fnt83 3450 3273(very)m 3904(dang)s 2(er)k 10(ous)k
-240 fnt82 4899 3271(,)m 4994(and)s 5385(is)s 5583(only)s
+3252(is)s 240 fnt83 3450 5865(very)m 3904(dang)s 2(er)k 10(ous)k
+240 fnt82 4899 5863(,)m 4994(and)s 5385(is)s 5583(only)s
 6050(pro)s 3(vided)k 6944(to)s 7170(mak)s 2(e)k
 7730(the)s gsave
-8065 3325 translate
+8065 5917 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(\211\211override)m 
 grestore
-480 3031(options)m 1230(ef)s 6(fecti)k 6(v)k 3(e.)k
+480 5623(options)m 1230(ef)s 6(fecti)k 6(v)k 3(e.)k
 2146(It)s 2344(should)s 3034(not)s 3393(normally)s 4304(be)s
 4579(used.)s 5115(It)s 5313(is)s 5516(an)s 5792(error)s
 6309(for)s 6640(the)s 6981(e)s 3(x)k 3(ecution)k
-7955(to)s 8187(f)s 2(ail)k 8550(when)s 480 2791(it)m
+7955(to)s 8187(f)s 2(ail)k 8550(when)s 480 5383(it)m
 672(is)s 882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s
 3098(con\207guration)s 4431(has)s 4801(been)s 5310(parsed\).)s gsave
-120 2451 translate
+120 5043 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(execute\211builtin)m gsave
 2304 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(service-name)m 
+240 fnt83 0 -52(service\211name)m 
 grestore
 gsave
-4249 0 translate
+4307 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(service-ar)m 8(guments)k
+240 fnt83 0 -52(service\211ar)m 8(guments)k
 
 grestore
 
 grestore
-480 2157(Ex)m 3(ecutes)k 1388(the)s 1732(b)s 4(uiltin)k
-2405(service)s 240 fnt83 3133 2159(service-name)m 240 fnt82 4400 2157(.)m
+480 4749(Ex)m 3(ecutes)k 1388(the)s 1732(b)s 4(uiltin)k
+2405(service)s 240 fnt83 3133 4751(service-name)m 240 fnt82 4400 4749(.)m
 4500(These)s 5123(b)s 4(uiltin)k 5796(services)s 6612(display)s
-7353(information)s 8534(about)s 480 1917(the)m 822(serv)s 3(er)k
+7353(information)s 8534(about)s 480 4509(the)m 822(serv)s 3(er)k
 1455(and/or)s 2120(the)s 2461(request,)s 3252(and)s 3649(ignore)s
 4310(an)s 3(y)k 4700(ar)s 4(guments)k 5737(passed)s
 6426(from)s 6944(the)s 7285(service)s 8011(side)s 8445(e)s 3(xcept)k
-480 1677(possibly)m 1320(to)s 1547(print)s 2046(them)s 2572(as)s
+480 4269(possibly)m 1320(to)s 1547(print)s 2046(them)s 2572(as)s
 2810(part)s 3228(of)s 3487(their)s 3972(output.)s 4676(The)s 3(y)k
 5207(write)s 5740(their)s 6225(results)s 6887(to)s 7114(their)s
-7599(standard)s 8454(output)s 480 1437(\(i.e.,)m 958(where)s 6(v)k 3(er)k
+7599(standard)s 8454(output)s 480 4029(\(i.e.,)m 958(where)s 6(v)k 3(er)k
 1898(\207le)s 2259(descriptor)s 3274(1)s 3429(is)s 3639(directed\).)s
 4591(The)s 5019(b)s 4(uiltin)k 5696(services)s 6516(are:)s
 gsave
-600 1251 translate
+600 3843 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute)m 
 grestore
-960 957(Displays)m 1848(the)s 2196(e)s 3(x)k 3(ecution)k
+960 3549(Displays)m 1848(the)s 2196(e)s 3(x)k 3(ecution)k
 3177(settings,)s 4014(de\207ned)s 4777(v)s 6(ariables,)k 5740(ar)s 4(guments,)k
-6839(etc.)s 7221(with)s 7703(which)s 8345(the)s 960 717(b)m 4(uiltin)k
+6839(etc.)s 7221(with)s 7703(which)s 8345(the)s 960 3309(b)m 4(uiltin)k
 1637(service)s 2369(w)s 2(as)k 2790(in)s 9(v)k 4(ok)k 2(ed.)k
-0 52(0.62)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
-7271(client)s 7861(speci\207cation)s 
+gsave
+600 3123 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(environment)m 
+grestore
+960 2829(Dis)m 1283(plays)s 1839(the)s
+2187(en)s 2410(vi)s 2590(ron)s 2906(ment)s 3444(v)s 6(ari)k
+3803(able)s 4257(set)s 4522(tings)s 5038(with)s 5520(which)s
+6162(the)s 6510(b)s 4(uiltin)k 7187(ser)s 7465(vice)s
+7919(w)s 2(as)k 960 2589(in)m 1143(v)s 4(ok)k 2(ed.)k
+gsave
+600 2403 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(parameter)m gsave
+1440 0 translate
+1.4219 1.0000 scale
+240 fnt83 0 -52(par)m 3(ameter)k
+
+grestore
+
+grestore
+960 2109(Displays)m 1848(the)s 2196(v)s 6(alues)k 2852(of)s
+3123(the)s 3471(service)s 4203(con\207guration)s 5536(language)s 6456(parameter)s
+7470(speci\207ed.)s gsave
+600 1923 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(version)m 
+grestore
+960 1629(Displays)m 1848(the)s
+2196(v)s 3(ersion)k 2954(string)s 3551(and)s 3955(compilation)s
+5154(details)s 5828(of)s 6099(the)s 6447(uservd)s 7143(serv)s 3(er)k
+7783(program.)s gsave
+600 1443 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(reset)m 
+grestore
+960 1149(Dis)m 1283(plays)s
+1838(the)s 2184(de)s 2406(f)s 2(ault)k 2899(re)s
+3080(set)s 3403(con)s 3746(\207g)s 3992(u)s 4107(ra)s
+4292(tion)s 4719(\(e)s 6(v)k 6(al)k 5179(u)s
+5294(at)s 5466(ed)s 5748(when)s gsave
+6323 1203 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(reset)m
+
+grestore
+6881(is)s 7089(found)s 7704(in)s 7945(a)s 8109(con)s
+8452(\207g)s 8698(u)s 8813(ra)s 8998(-)s 960 909(tion)m
+1389(\207le,)s 1801(or)s 2060(when)s 2636(an)s 2919(er)s
+3104(ror)s 3442(is)s 3652(caught)s 4350(by)s gsave
+4644 963 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(catch\211quit)m 
+grestore
+5645(\).)s 0 52(0.62)m 4809(User)s 5320(service)s
+6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
 grestore
@@ -3970,435 +4033,361 @@ gsave
 1 LoutMargSet
 grestore
 240 fnt84 8833 13842(15)m gsave
-600 13310 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(environment)m 
-grestore
-240 fnt82
-960 13016(Dis)m 1283(plays)s 1839(the)s 2187(en)s 2410(vi)s
-2590(ron)s 2906(ment)s 3444(v)s 6(ari)k 3803(able)s
-4257(set)s 4522(tings)s 5038(with)s 5520(which)s 6162(the)s
-6510(b)s 4(uiltin)k 7187(ser)s 7465(vice)s 7919(w)s 2(as)k
-960 12776(in)m 1143(v)s 4(ok)k 2(ed.)k gsave
-600 12590 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(parameter)m gsave
-1440 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k 
-grestore
-
-grestore
-960 12296(Displays)m
-1848(the)s 2196(v)s 6(alues)k 2852(of)s 3123(the)s
-3471(service)s 4203(con\207guration)s 5536(language)s 6456(parameter)s 7470(speci\207ed.)s
-gsave
-600 12110 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(version)m 
-grestore
-960 11816(Displays)m 1848(the)s 2196(v)s 3(ersion)k
-2954(string)s 3551(and)s 3955(compilation)s 5154(details)s 5828(of)s
-6099(the)s 6447(uservd)s 7143(serv)s 3(er)k 7783(program.)s
-gsave
-600 11630 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 
-grestore
-960 11336(Dis)m 1283(plays)s 1838(the)s
-2184(de)s 2406(f)s 2(ault)k 2899(re)s 3080(set)s
-3403(con)s 3746(\207g)s 3992(u)s 4107(ra)s 4292(tion)s
-4719(\(e)s 6(v)k 6(al)k 5179(u)s 5294(at)s
-5466(ed)s 5748(when)s gsave
-6323 11390 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 
-grestore
-6881(is)s
-7089(found)s 7704(in)s 7945(a)s 8109(con)s 8452(\207g)s
-8698(u)s 8813(ra)s 8998(-)s 960 11096(tion)m 1389(\207le,)s
-1801(or)s 2060(when)s 2636(an)s 2919(er)s 3104(ror)s
-3442(is)s 3652(caught)s 4350(by)s gsave
-4644 11150 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m
-
-grestore
-5645(\).)s gsave
-600 10910 translate
+600 13318 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(toplevel)m 
 grestore
-960 10616(Displays)m 1848(the)s
-2196(top-le)s 6(v)k 3(el)k 3091(def)s 2(ault)k
-3812(con\207guration)s 5145(\(the)s 5572(con\207guration)s 6905(data,)s 7410(e)s 6(v)k 6(aluated)k
-8372(by)s 8666(the)s 960 10376(serv)m 3(er)k 9(,)k
-1638(which)s 2280(calls)s 2768(all)s 3061(the)s 3409(other)s
-3960(con\207guration)s 5293(\207les\).)s gsave
-600 10190 translate
+240 fnt82
+960 13024(Displays)m 1848(the)s 2196(top-le)s 6(v)k 3(el)k
+3091(def)s 2(ault)k 3812(con\207guration)s 5145(\(the)s 5572(con\207guration)s
+6905(data,)s 7410(e)s 6(v)k 6(aluated)k 8372(by)s
+8666(the)s 960 12784(serv)m 3(er)k 9(,)k 1638(which)s
+2280(calls)s 2768(all)s 3061(the)s 3409(other)s 3960(con\207guration)s
+5293(\207les\).)s gsave
+600 12598 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(override)m 
 grestore
-960 9896(Displays)m
-1847(the)s 2194(top-le)s 6(v)k 3(el)k 3088(o)s 3(v)k 3(erride)k
+960 12304(Displays)m 1847(the)s
+2194(top-le)s 6(v)k 3(el)k 3088(o)s 3(v)k 3(erride)k
 3932(con\207guration)s 5264(\(the)s 5690(con\207guration)s 7021(data,)s 7525(e)s 6(v)k 6(aluated)k
-8486(by)s 8778(the)s 960 9656(serv)m 3(er)k 9(,)k
+8486(by)s 8778(the)s 960 12064(serv)m 3(er)k 9(,)k
 1638(which)s 2280(causes)s 2955(all)s 3248(the)s 3596(other)s
 4147(con\207guration)s 5480(data)s 5938(to)s 6177(be)s 6459(parsed\).)s
 gsave
-600 9470 translate
+600 11878 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(help)m 
 grestore
-960 9176(Displays)m 1848(a)s 2014(list)s
+960 11584(Displays)m 1848(a)s 2014(list)s
 2365(of)s 2636(the)s 2984(understood)s 4106(b)s 4(uiltin)k
 4783(service)s 5515(names)s 6177(and)s 6581(ar)s 4(guments.)k
-480 8913(In)m 736(the)s 1084(fu)s 1278(ture)s 1705(oth)s
-2008(er)s 2253(b)s 4(uiltin)k 2930(ser)s 3208(vices)s
-3750(may)s 4216(be)s 4498(de)s 4720(\207ned)s 5257(which)s
-5899(do)s 6192(more)s 6739(than)s 7208(just)s 7613(print)s
-8124(in)s 8307(for)s 8585(-)s 480 8673(ma)m 772(tion.)s
 gsave
-120 8383 translate
+600 11398 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(set\211environment)m 
+240 fnt31 0 -52(shutdown)m 
 grestore
+960 11104(Arranges)m 1876(for)s 2203(the)s
 gsave
-120 8143 translate
+2540 11158 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(no\211set\211environment)m 
+240 fnt31 0 -52(uservd)m 
+grestore
+3189(to)s 3417(shut)s 3865(do)s 6(wn.)k
+4485(A)s 17(v)k 6(ailable)k 5435(only)s 5904(when)s
+6469(the)s 6806(service)s 7527(user)s 7974(is)s 8173(root.)s
+8650(This)s 960 10864(only)m 1440(af)s 6(fects)k 2120(ne)s 6(w)k
+2567(requests;)s 3462(it)s 3654(doesn')s 4(t)k 4414(terminate)s
+5371(an)s 3(y)k 5768(currently-running)s 7507(requests)s gsave
+120 10476 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(set\211environment)m 
 grestore
-480 7849(Runs)m
 gsave
-1024 7903 translate
+120 10236 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(/etc/environment)m 
+240 fnt31 0 -52(no\211set\211environment)m 
+grestore
+480 9942(Runs)m gsave
+1024 9996 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(/etc/environment)m 
 grestore
-2686(to)s 2925(set)s 3250(the)s
-3598(service)s 4330(user')s 13(s)k 4938(en)s 9(vironment.)k
-6242(This)s 6718(adds)s 7208(the)s 7556(o)s 3(v)k 3(erhead)k
-8485(of)s 480 7609(in)m 9(v)k 4(oking)k 1372(a)s
+2686(to)s 2925(set)s 3250(the)s 3598(service)s
+4330(user')s 13(s)k 4938(en)s 9(vironment.)k 6242(This)s
+6718(adds)s 7208(the)s 7556(o)s 3(v)k 3(erhead)k
+8485(of)s 480 9702(in)m 9(v)k 4(oking)k 1372(a)s
 1538(shell,)s 2096(b)s 4(ut)k 2458(doesn')s 4(t)k
 3218(cause)s 3805(an)s 3(y)k 4202(shell)s 4708(\(de\)mangling)s
 6049(of)s 6320(the)s 6668(service')s 13(s)k 7554(ar)s 4(guments.)k
-8650(This)s 480 7369(is)m 690(achie)s 6(v)k 3(ed)k
+8650(This)s 480 9462(is)m 690(achie)s 6(v)k 3(ed)k
 1589(by)s 1883(in)s 9(v)k 4(oking)k gsave
-960 7183 translate
+960 9276 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(.../program)m 1728(arg)s 2304(arg)s 2880(arg)s 3456(\202)s
 
 grestore
-480 6938(as)m gsave
-960 6752 translate
+480 9031(as)m gsave
+960 8845 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(/bin/sh)m 1152(\211c)s 1584('.)s
 2016(/etc/environment;)s 4608(exec)s 5328("$@"')s 6192(\211)s 6480(.../program)s
 8208(arg)s 8784(arg)s 9360(arg)s 9936(\202)s 
 grestore
 gsave
-480 6508 translate
+480 8601 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(no\211set\211environment)m 
 grestore
-2342 6454(cancels)m 3096(the)s 3444(ef)s 6(fect)k
+2342 8547(cancels)m 3096(the)s 3444(ef)s 6(fect)k
 4040(of)s gsave
-4311 6508 translate
+4311 8601 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(set\211environment)m 
 grestore
 5812(.)s gsave
-120 6164 translate
+120 8257 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(no\211suppress\211args)m 
 grestore
 gsave
-120 5924 translate
+120 8017 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(suppress\211args)m 
 grestore
-480 5630(Include)m 1253(an)s 3(y)k
+480 7723(Include)m 1253(an)s 3(y)k
 1650(ar)s 4(guments)k 2693(gi)s 6(v)k 3(en)k
 3273(to)s 3512(the)s 3860(client)s 4450(as)s 4700(ar)s 4(guments)k
 5743(to)s 5982(the)s 6330(program)s 7200(in)s 9(v)k 4(ok)k 2(ed)k
-8015(as)s 8265(a)s 8431(result)s 480 5390(of)m 749(an)s
+8015(as)s 8265(a)s 8431(result)s 480 7483(of)m 749(an)s
 gsave
-1030 5444 translate
+1030 7537 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute)m 
 grestore
 1730(,)s gsave
-1834 5444 translate
+1834 7537 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211directory)m
 
 grestore
 4094(or)s gsave
-4351 5444 translate
+4351 7537 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211path)m 
 grestore
 6110(directi)s 6(v)k 3(e.)k
 gsave
-7038 5444 translate
+7038 7537 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(suppress\211args)m 
 grestore
-8396(undoes)s 480 5150(the)m 828(ef)s 6(fect)k
+8396(undoes)s 480 7243(the)m 828(ef)s 6(fect)k
 1424(of)s gsave
-1695 5204 translate
+1695 7297 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(no\211suppress\211args)m 
 grestore
 3297(.)s gsave
-120 4829 translate
+120 6922 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(require\211fd)m gsave
 1584 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd-r)m 3(ang)k 2(e)k
+240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
 
 grestore
-2882(read|write)s 
+2940(read|write)s 
 grestore
-480 4530(In)m 676(sist)s 1054(that)s 1472(the)s
+480 6623(In)m 676(sist)s 1054(that)s 1472(the)s
 1820(\207ledescrip)s 2808(tor\(s\))s 3373(be)s 3655(opened)s 4405(for)s
 4743(read)s 5152(ing)s 5511(resp.)s 6013(writ)s 6397(ing.)s
 6807(It)s 7012(is)s 7222(an)s 7505(er)s 7690(ror)s
 8028(if)s 8245(an)s 3(y)k 8642(de)s 8864(-)s
-480 4290(scrip)m 937(tor)s 1258(mark)s 2(ed)k 2027(as)s
+480 6383(scrip)m 937(tor)s 1258(mark)s 2(ed)k 2027(as)s
 2272(re)s 2453(quired)s 3118(when)s 3689(the)s 4033(ser)s
 4311(vice)s 4760(is)s 4966(about)s 5554(to)s 5788(be)s
 6066(in)s 6249(v)s 4(ok)k 2(ed)k 6882(\(af)s
 7158(ter)s 7465(the)s 7808(con)s 8151(\207g)s 8397(u)s
-8512(ra)s 8697(tion)s 480 4050(has)m 850(been)s 1359(parsed\))s
+8512(ra)s 8697(tion)s 480 6143(has)m 850(been)s 1359(parsed\))s
 2111(w)s 2(as)k 2532(not)s 2898(spec)s 3316(i)s
 3376(\207ed)s 3793(when)s 4369(the)s 4717(client)s 5307(w)s 2(as)k
 5728(in)s 5911(v)s 4(ok)k 2(ed.)k 6595(Each)s
 7130(\207le)s 7491(de)s 7713(scrip)s 8170(tor)s 8495(has)s
-480 3810(a)m 646(sep)s 958(a)s 1064(rate)s 1477(set)s
+480 5903(a)m 646(sep)s 958(a)s 1064(rate)s 1477(set)s
 1742(ting,)s 2221(and)s 2625(the)s 2973(last)s 3364(one)s
 3766(of)s gsave
-4037 3864 translate
+4037 5957 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(require\211fd)m 
 grestore
 5038(,)s gsave
-5145 3864 translate
+5145 5957 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(allow\211fd)m 
 grestore
 5946(,)s gsave
-6053 3864 translate
+6053 5957 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(ignore\211fd)m 
 grestore
 6954(,)s
 gsave
-7061 3864 translate
+7061 5957 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(null\211fd)m 
 grestore
 7821(or)s gsave
-8080 3864 translate
+8080 5957 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reject\211fd)m
 
 grestore
-480 3570(which)m 1122(af)s 1319(fect)s 1676(ed)s 1960(a)s
+480 5662(which)m 1122(af)s 1319(fect)s 1676(ed)s 1960(a)s
 2126(par)s 2431(tic)s 2662(u)s 2777(lar)s 3088(\207le)s
 3449(de)s 3671(scrip)s 4128(tor)s 4453(will)s 4879(tak)s 2(e)k
-5331(ef)s 5528(fect.)s 240 fnt83 480 3164(fd-r)m 3(ang)k 2(e)k
-240 fnt82 1352 3162(may)m 1818(be)s 2100(a)s 2266(single)s
-2893(number)s 9(,)k 3722(tw)s 2(o)k 4132(numbers)s
-5007(separated)s 5967(by)s 6261(a)s 6427(h)s 1(yphen,)k
-7239(or)s 7498(one)s 7900(number)s 480 2922(follo)m 6(wed)k
-1382(by)s 1676(a)s 1842(h)s 1(yphen)k 2604(\(indicating)s
-3692(all)s 3985(descriptors)s 5084(from)s 5608(that)s 6026(number)s
-6817(onw)s 2(ards\).)k 7809(It)s 8014(may)s 8480(also)s
-480 2682(be)m 760(one)s 1159(of)s 1428(the)s 1773(w)s 2(ords)k
-gsave
-2405 2736 translate
+5331(ef)s 5528(fect.)s 240 fnt83 6049 5664(fd-)m 6302(r)s 3(ang)k 2(e)k
+240 fnt82 6909 5662(may)m 7375(be)s 7657(a)s 7823(sin)s
+8099(gle)s 8447(num)s 8873(-)s 480 5422(ber)m 9(,)k
+883(tw)s 2(o)k 1293(num)s 1719(bers)s 2168(sep)s
+2480(a)s 2586(rat)s 2837(ed)s 3121(by)s 3415(a)s
+3581(h)s 1(y)k 3814(phen,)s 4387(or)s 4646(one)s
+5048(num)s 5474(ber)s 5839(fol)s 6099(lo)s 6(wed)k
+6736(by)s 7030(a)s 7196(h)s 1(y)k 7429(phen)s
+7952(\(in)s 8214(di)s 8394(cat)s 8672(ing)s 480 5182(all)m
+772(de)s 994(scrip)s 1451(tors)s 1858(from)s 2380(that)s
+2796(num)s 3222(ber)s 3585(on)s 3822(w)s 2(ards\).)k
+4573(It)s 4776(may)s 5240(also)s 5676(be)s 5956(one)s
+6357(of)s 6626(the)s 6972(w)s 2(ords)k gsave
+7604 5236 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(stdin)m 
+240 fnt31
+0 -52(stdin)m 
 grestore
-2905(,)s gsave
-3009 2736 translate
+8104(,)s gsave
+8209 5236 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(stdout)m
-
+240 fnt31 0 -52(stdout)m 
 grestore
-3667(or)s gsave
-3923 2736 translate
+8867(or)s
+gsave
+480 4996 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(stderr)m 
 grestore
-4523(.)s 4625(Open-ended)s
-5850(\207le)s 6209(descriptor)s 7221(rangers)s 7973(are)s 8317(allo)s 6(wed)k
-480 2442(only)m 960(with)s gsave
-1442 2496 translate
+1080 4942(.)m 1174(Open-)s 1761(ended)s
+2380(\207le)s 2730(de)s 2952(scrip)s 3409(tor)s 3723(rangers)s
+4466(are)s 4802(al)s 4969(lo)s 6(wed)k 5596(only)s
+6065(with)s gsave
+6536 4996 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reject\211fd)m 
 grestore
-2403(and)s
-gsave
-2807 2496 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(ignore\211fd)m 
-grestore
-3708(,)s 3815(as)s 4065(otherwise)s
-5050(the)s 5398(service)s 6130(program)s 7000(w)s 2(ould)k
-7655(\207nd)s 8086(itself)s 8634(with)s 480 2202(a)m 646(v)s 3(ery)k
-1122(lar)s 4(ge)k 1651(number)s 2442(of)s 2713(\207le)s
-3074(descriptors)s 4173(open.)s 480 1794(When)m 1109(the)s 1457(con\207guration)s
-2790(has)s 3160(been)s 3669(parsed,)s 4400(and)s 4804(before)s
-5470(the)s 5818(service)s 6550(is)s 6760(about)s 7352(to)s
-7591(be)s 7873(e)s 3(x)k 3(ecuted,)k 480 1554(stderr)m
-1082(\(fd)s 1417(2\))s 1663(must)s 2187(be)s 2468(required)s
-3320(or)s 3578(allo)s 6(wed)k 4385(\()s gsave
-4458 1608 translate
+7486(and)s gsave
+7879 4996 translate
 0.6953 1.0000 scale
 240 fnt31
-0 -52(require\211fd)m 
+0 -52(ignore\211fd)m 
+grestore
+8780(,)s 8876(as)s 480 4702(oth)m 783(er)s
+968(wise)s 1457(the)s 1799(ser)s 2077(vice)s 2526(pro)s
+2838(gram)s 3383(w)s 2(ould)k 4033(\207nd)s 4458(it)s
+4590(self)s 5001(with)s 5477(a)s 5638(v)s 3(ery)k
+6108(lar)s 4(ge)k 6632(num)s 7058(ber)s 7417(of)s
+7683(\207le)s 8038(de)s 8260(scrip)s 8717(tors)s 480 4462(open.)m
+1090(When)s 1699(the)s 2027(con)s 2370(\207g)s 2616(u)s
+2731(ra)s 2916(tion)s 3325(has)s 3674(been)s 4163(parsed,)s
+4874(and)s 5258(be)s 5480(fore)s 5900(the)s 6227(ser)s
+6505(vice)s 6939(is)s 7129(about)s 7701(to)s 7920(be)s
+8181(e)s 3(x)k 8399(e)s 8501(cut)s 8793(ed,)s
+480 4222(stderr)m 1083(\(fd)s 1418(2\))s 1665(must)s 2189(be)s
+2470(re)s 2651(quired)s 3320(or)s 3578(al)s 3745(lo)s 6(wed)k
+4381(\()s gsave
+4454 4276 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(require\211fd)m 
 grestore
-5518(or)s gsave
-5776 1608 translate
+5514(or)s gsave
+5772 4276 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(allow\211fd)m 
+240 fnt31
+0 -52(allow\211fd)m 
 grestore
-6577(\))s
-6703(for)s 7040(writing;)s 7841(this)s 8235(is)s 8444(so)s
-8708(that)s 480 1314(the)m 823(error)s 1341(message)s 2202(printed)s
-2931(by)s 3220(the)s 3563(serv)s 3(er')k 13(s)k
-4348(child)s 4878(process)s 5641(if)s 5853(it)s 6040(cannot)s
-gsave
-6732 1368 translate
+6573(\))s 6701(for)s 7038(writ)s 7422(ing;)s
+7839(this)s 8234(is)s 8443(so)s 8708(that)s 480 3982(the)m
+825(er)s 1010(ror)s 1345(mes)s 1721(sage)s 2198(print)s
+2649(ed)s 2930(by)s 3220(the)s 3565(serv)s 3958(er')s 13(s)k
+4350(child)s 4882(pro)s 5194(cess)s 5640(if)s 5853(it)s
+6042(can)s 6371(not)s gsave
+6734 4036 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(exec)m 
 grestore
-7187(the)s 7530(service)s 8256(program)s
-480 1074(is)m 690(not)s 1056(lost.)s gsave
-120 784 translate
+7190(the)s
+7535(ser)s 7813(vice)s 8263(pro)s 8575(gram)s 480 3742(is)m
+690(not)s 1056(lost.)s gsave
+120 3452 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(allow\211fd)m
-gsave
+240 fnt31 0 -52(allow\211fd)m gsave
 1296 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd-r)m 3(ang)k 2(e)k 
-grestore
-2594([read|write])s
-
-grestore
-0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
-3052(speci\207cation)s 8652(0.62)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
+240 fnt83
+0 -52(fd\211r)m 3(ang)k 2(e)k 
 grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
+2652([read|write])s 
 grestore
-240 fnt84 0 13842(16)m 240 fnt82 480 13251(Allo)m 6(w)k
+480 3153(Allo)m 6(w)k
 1126(the)s 1474(descriptor\(s\))s 2729(to)s 2968(be)s 3250(opened)s
 4000(for)s 4338(reading)s 5108(resp.)s 5610(writing,)s 6407(or)s
 6666(either)s 7269(if)s 7486(neither)s gsave
-8209 13305 translate
+8209 3207 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(read)m
 
 grestore
 8669(nor)s gsave
-480 13065 translate
+480 2967 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m 
 grestore
-1040 13011(is)m 1250(speci\207ed.)s
+1040 2913(is)m 1250(speci\207ed.)s
 2204(If)s 2434(a)s 2600(particular)s 3574(descriptor)s 4589(not)s
 4955(speci\207ed)s 5863(by)s 6157(the)s 6505(client)s 7095(then)s
-7564(it)s 7756(will)s 8182(be)s 8464(open)s 480 12771(onto)m
+7564(it)s 7756(will)s 8182(be)s 8464(open)s 480 2673(onto)m
 gsave
-959 12825 translate
+959 2727 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(/dev/null)m 
 grestore
 1920(\(for)s 2337(reading,)s 3161(writing,)s
 3958(or)s 4217(both,)s 4750(depending)s 5801(on)s 6098(whether)s
 gsave
-6928 12825 translate
+6928 2727 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(read)m 
 grestore
 7328(,)s gsave
-7435 12825 translate
+7435 2727 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m
 
 grestore
-7995(or)s 8254(neither)s 480 12531(w)m 2(as)k 901(speci\207ed\).)s
+7995(or)s 8254(neither)s 480 2433(w)m 2(as)k 901(speci\207ed\).)s
 gsave
-120 12191 translate
+120 2093 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(null\211fd)m gsave
 1152 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd-r)m 3(ang)k 2(e)k
+240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
 
 grestore
-2450([read|write])s 
+2508([read|write])s 
 grestore
-480 11892(Spec)m 938(i)s 998(fy)s 1251(that)s
+480 1794(Spec)m 938(i)s 998(fy)s 1251(that)s
 1669(the)s 2017(de)s 2239(scrip)s 2696(tor\(s\))s 3261(be)s
 3543(opened)s 4293(onto)s gsave
-4772 11946 translate
+4772 1848 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(/dev/null)m 
 grestore
 5733(for)s
 6071(read)s 6480(ing)s 6839(resp.)s 7341(writ)s 7725(ing,)s
-8138(or)s 8397(both)s 8880(if)s 480 11652(nei)m 766(ther)s
+8138(or)s 8397(both)s 8880(if)s 480 1554(nei)m 766(ther)s
 gsave
-1181 11706 translate
+1181 1608 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(read)m 
 grestore
 1624(nor)s gsave
-1986 11706 translate
+1986 1608 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(write)m
 
@@ -4407,141 +4396,189 @@ grestore
 4093(spec)s 4511(i)s 4571(\207)s 4696(ca)s 4908(tion)s
 5320(of)s 5574(these)s 6104(\207le)s 6448(de)s 6670(scrip)s
 7127(tors)s 7519(by)s 7796(the)s 8127(client)s 8700(will)s
-480 11412(be)m 762(silent)s 1279(ly)s 1519(ig)s 1698(nored;)s
+480 1314(be)m 762(silent)s 1279(ly)s 1519(ig)s 1698(nored;)s
 2355(the)s 2703(client)s 3293(will)s 3719(see)s 4080(its)s
 4356(ends)s 4846(of)s 5117(the)s 5465(de)s 5687(scrip)s
 6144(tors)s 6553(be)s 6775(ing)s 7134(closed)s 7803(im)s
 8055(me)s 8343(di)s 8523(ate)s 8797(ly)s 15(.)k
 gsave
-120 11072 translate
+120 974 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reject\211fd)m gsave
 1440 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd-r)m 3(ang)k 2(e)k
+240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
+
+grestore
 
+grestore
+0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
+3052(speci\207cation)s 8652(0.62)s 
 grestore
 
 grestore
-480 10778(Do)m 824(not)s 1187(allo)s 6(w)k 1764(the)s
-2109(descriptor\(s\))s 3362(to)s 3598(be)s 3878(speci\207ed)s 4783(by)s
-5075(the)s 5420(client.)s 6052(It)s 6254(is)s 6462(an)s
-6742(error)s 7263(if)s 7477(an)s 3(y)k 7871(descriptor\(s\))s
-480 10538(mark)m 2(ed)k 1253(for)s 1591(rejection)s 2483(are)s
-2830(speci\207ed)s 3738(when)s 4314(the)s 4662(service)s 5394(is)s
-5604(about)s 6196(to)s 6435(be)s 6717(in)s 9(v)k 4(ok)k 2(ed)k
-7532(\(after)s 8107(the)s 480 10298(con\207guration)m 1813(has)s 2183(been)s
+
+pgsave restore
+showpage
+
+%%Page: 16 16
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier-Bold
+%%+ font Times-Italic
+/pgsave save def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+
+grestore
+
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt84 0 13842(16)m 240 fnt82 480 13251(Do)m 824(not)s
+1187(allo)s 6(w)k 1764(the)s 2109(descriptor\(s\))s 3362(to)s
+3598(be)s 3878(speci\207ed)s 4783(by)s 5075(the)s 5420(client.)s
+6052(It)s 6254(is)s 6462(an)s 6742(error)s 7263(if)s
+7477(an)s 3(y)k 7871(descriptor\(s\))s 480 13011(mark)m 2(ed)k
+1253(for)s 1591(rejection)s 2483(are)s 2830(speci\207ed)s 3738(when)s
+4314(the)s 4662(service)s 5394(is)s 5604(about)s 6196(to)s
+6435(be)s 6717(in)s 9(v)k 4(ok)k 2(ed)k
+7532(\(after)s 8107(the)s 480 12771(con\207guration)m 1813(has)s 2183(been)s
 2692(parsed\).)s gsave
-120 9958 translate
+120 12431 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(ignore\211fd)m gsave
 1440 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(fd-r)m 3(ang)k 2(e)k
+240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
 
 grestore
 
 grestore
-480 9664(Silent)m 1037(ly)s 1260(ig)s 1439(nore)s 1902(an)s 3(y)k
+480 12137(Silent)m 1037(ly)s 1260(ig)s 1439(nore)s 1902(an)s 3(y)k
 2281(spec)s 2699(i)s 2759(\207)s 2884(ca)s 3096(tion)s
 3507(by)s 3783(the)s 4113(client)s 4685(of)s 4938(those)s
 5481(de)s 5703(scrip)s 6160(tor\(s\).)s 6762(The)s 7172(pipes)s
-7710(cor)s 8015(re)s 8196(spond)s 8767(ing)s 480 9424(to)m
+7710(cor)s 8015(re)s 8196(spond)s 8767(ing)s 480 11897(to)m
 719(these)s 1266(de)s 1488(scrip)s 1945(tors)s 2354(will)s
 2780(be)s 3062(closed)s 3731(just)s 4136(be)s 4358(fore)s
 4798(the)s 5146(ser)s 5424(vice)s 5878(is)s 6088(in)s
 6271(v)s 4(ok)k 2(ed.)k gsave
-120 9084 translate
+120 11557 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(disconnect\211hup)m
 
 grestore
 gsave
-120 8844 translate
+120 11317 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(no\211disconnect\211hup)m 
 grestore
-480 8550(Causes)m 1209(the)s 1557(service')s 13(s)k
-2443(process)s 3211(group)s 3823(to)s 4062(get)s 4414(a)s
-gsave
-4580 8604 translate
+480 11023(Caus)m 950(es)s 1200(the)s
+1548(ser)s 1826(vice')s 13(s)k 2434(pro)s 2746(cess)s
+3195(group)s 3807(to)s 4046(get)s 4398(a)s gsave
+4564 11077 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(SIGHUP)m 
+240 fnt31
+0 -52(SIGHUP)m 
 grestore
-5240(if)s 5457(the)s 5805(client)s
-6395(disconnects)s 7562(before)s 8228(the)s 8576(main)s 480 8310(service)m
-1212(process)s 1980(terminates.)s gsave
-3078 8364 translate
+5224(if)s 5441(the)s 5789(client)s 6379(dis)s
+6649(con)s 6992(nects)s 7534(be)s 7756(fore)s 8196(the)s
+8544(main)s 480 10783(ser)m 758(vice)s 1209(pro)s 1521(cess)s
+1966(ter)s 2217(mi)s 2463(nates.)s gsave
+3055 10837 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(no\211disconnect\211hup)m 
+240 fnt31 0 -52(no\211disconnect\211hup)m
+
 grestore
-4840(cancels)s
-gsave
-5594 8364 translate
+4813(can)s 5142(cels)s gsave
+5560 10837 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(disconnect\211hup)m 
 grestore
-6995(.)s 480 7902(If)m 700(one)s
-1091(of)s 1352(the)s 1689(reading)s 2449(descriptors)s 3537(speci\207ed)s
-4435(when)s 5000(the)s 5337(client)s 5917(is)s 6116(called)s
-6734(gets)s 7159(a)s 7315(read)s 7773(error)s 9(,)k
-8324(or)s 8572(if)s 8778(the)s 480 7661(service)m 1212(is)s
-1422(disconnected)s 2729(for)s 3067(some)s 3628(other)s 4179(reason,)s
-4910(then)s 5379(the)s gsave
-5727 7715 translate
+6961(.)s
+7122(If)s 7348(one)s 7747(of)s 8014(the)s 8358(read)s
+8767(ing)s 480 10543(de)m 702(scrip)s 1159(tors)s 1568(spec)s
+1986(i)s 2046(\207ed)s 2463(when)s 3039(the)s 3387(client)s
+3977(is)s 4187(called)s 4815(gets)s 5251(a)s 5417(read)s
+5886(er)s 6071(ror)s 9(,)k 6447(or)s 6706(if)s
+6923(the)s 7271(ser)s 7549(vice)s 8003(is)s 8213(dis)s
+8483(con)s 8826(-)s 480 10302(nect)m 878(ed)s 1162(for)s
+1500(some)s 2061(oth)s 2364(er)s 2609(rea)s 2900(son,)s
+3340(then)s 3809(the)s gsave
+4157 10356 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(SIGHUP)m 
 grestore
-6387(will)s
-6813(be)s 7095(deli)s 6(v)k 3(ered)k 240 fnt83
-8033 7663(befor)m 8(e)k 240 fnt82 8689 7661(the)m 480 7421(writing)m
-1223(end\(s\))s 1869(of)s 2140(the)s 2488(service')s 13(s)k
-3374(reading)s 4144(pipe\(s\))s 4856(are)s 5203(closed,)s 5921(so)s
-6187(that)s 6605(the)s 6953(client)s 7543(can)s 7932(distinguish)s
-480 7181(disconnection)m 1866(from)s 2390(reading)s 3160(EOF)s 3670(on)s
-3967(a)s 4133(pipe.)s gsave
-120 6841 translate
+4817(will)s
+5243(be)s 5525(de)s 5747(li)s 6(v)k 5988(ered)s
+240 fnt83 6457 10304(be)m 6676(for)s 8(e)k 240 fnt82
+7106 10302(the)m 7454(writ)s 7838(ing)s 8197(end\(s\))s 8843(of)s
+480 10062(the)m 818(ser)s 1096(vice')s 13(s)k 1694(read)s
+2103(ing)s 2452(pipe\(s\))s 3154(are)s 3491(closed,)s 4199(so)s
+4455(that)s 4863(the)s 5201(client)s 5781(can)s 6160(dis)s
+6430(tin)s 6679(guish)s 7245(dis)s 7515(con)s 7858(nec)s
+8183(tion)s 8602(from)s 480 9822(read)m 889(ing)s 1248(EOF)s
+1758(on)s 2055(a)s 2221(pipe.)s gsave
+120 9482 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 
+240 fnt31 0 -52(reset)m
+
 grestore
-480 6547(Resets)m
-1155(the)s 1503(e)s 3(x)k 3(ecution)k 2484(settings)s
-3265(to)s 3504(the)s 3852(def)s 2(ault.)k 4617(This)s
-5093(is)s 5303(equi)s 6(v)k 6(alent)k 6347(to:)s
-gsave
-960 6361 translate
+480 9188(Resets)m 1155(the)s 1503(e)s 3(x)k 3(ecution)k
+2484(settings)s 3265(to)s 3504(the)s 3852(def)s 2(ault.)k
+4617(This)s 5093(is)s 5303(equi)s 6(v)k 6(alent)k
+6347(to:)s gsave
+960 9002 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(cd)m 432(~/)s 0 -292(reject)m 0 -532(no\211set\211environment)m
-0 -772(suppress\211args)m 0 -1012(allow\211fd)m 1296(0)s 1584(read)s 0 -1252(allow\211fd)m
-1296(1\2112)s 1872(write)s 0 -1492(reject\211fd)m 1440(3\211)s 0 -1732(disconnect\211hup)m
-
+240 fnt31 0 -52(cd)m 432(~/)s 0 -292(reject)m
+0 -532(no\211set\211environment)m 0 -772(suppress\211args)m 0 -1012(allow\211fd)m 1296(0)s 1584(read)s
+0 -1252(allow\211fd)m 1296(1\2112)s 1872(write)s 0 -1492(reject\211fd)m 1440(3\211)s
+0 -1732(disconnect\211hup)m 
 grestore
-0 4085(If)m 230(no)s gsave
-523 4139 translate
+0 7025(If)m 230(no)s gsave
+523 7079 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m 
+240 fnt31 0 -52(execute)m
+
 grestore
-1223(,)s
-gsave
-1330 4139 translate
+1223(,)s gsave
+1330 7079 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(execute\211from\211path)m 
 grestore
 3032(,)s gsave
-3139 4139 translate
+3139 7079 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m
-
+240 fnt31
+0 -52(execute\211from\211directory)m 
 grestore
 5401(or)s gsave
-5660 4139 translate
+5660 7079 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(builtin)m 
 grestore
-6420(is)s 6630(interpreted)s
-7722(before)s 8388(all)s 8681(the)s 0 3845(\207les)m 449(are)s
-796(read)s 1265(then)s 1734(the)s 2082(request)s 2832(is)s
-3042(rejected.)s 9066 670 0 670 240 240 60 0 2821 LoutGr2
+6420(is)s
+6630(interpreted)s 7722(before)s 8388(all)s 8681(the)s 0 6785(\207les)m
+449(are)s 796(read)s 1265(then)s 1734(the)s 2082(request)s
+2832(is)s 3042(rejected.)s 9066 670 0 670 240 240 60 0 5761 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -4551,35 +4588,35 @@ grestore
 320 fnt84 0 66(4.3.)m 628(Err)s 5(ors)k
 1618(in)s 1958(the)s 2458(con\207guration)s 4359(\207le)s 
 grestore
-0 2359(If)m
+0 5299(If)m
 230(a)s 396(syntax)s 1076(error)s 1599(or)s 1858(other)s
 2409(problem)s 3266(occurs)s 3941(when)s 4517(processing)s 5593(a)s
 5759(con\207guration)s 7092(\207le)s 7453(then)s 7922(a)s 8088(diagnostic)s
-0 2119(will)m 422(be)s 699(issued,)s 1399(to)s 1633(where)s 6(v)k 3(er)k
+0 5059(will)m 422(be)s 699(issued,)s 1399(to)s 1633(where)s 6(v)k 3(er)k
 2568(the)s 2911(error)s 3429(messages)s 4378(are)s 4721(currently)s
 5632(being)s 6212(sent)s 6652(\(see)s 7087(the)s gsave
-7430 2173 translate
+7430 5113 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(errors\211)m 
 grestore
-8185(f)s 2(amily)k 8855(of)s 0 1879(directi)m 6(v)k 3(es,)k
-1026(abo)s 3(v)k 3(e\).)k 0 1471(The)m 428(error)s
+8185(f)s 2(amily)k 8855(of)s 0 4819(directi)m 6(v)k 3(es,)k
+1026(abo)s 3(v)k 3(e\).)k 0 4411(The)m 428(error)s
 951(will)s 1377(cause)s 1964(processing)s 3040(of)s 3311(the)s
 3659(con\207guration)s 4992(\207les)s 5441(to)s 5680(cease)s 6253(at)s
 6485(that)s 6903(point,)s 7502(unless)s 8151(the)s 8499(error)s
-0 1231(w)m 2(as)k 421(inside)s 1048(a)s gsave
-1214 1285 translate
+0 4171(w)m 2(as)k 421(inside)s 1048(a)s gsave
+1214 4225 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(catch\211quit)m 
 grestore
 2275(construct.)s 3255(In)s 3511(this)s 3907(case)s
 4374(the)s 4722(settings)s 5503(controlling)s 6605(the)s 6953(program')s 13(s)k
-7973(e)s 3(x)k 3(ecution)k 0 991(will)m 426(be)s
+7973(e)s 3(x)k 3(ecution)k 0 3931(will)m 426(be)s
 708(reset)s 1218(to)s 1457(the)s 1805(def)s 2(aults)k
 2610(as)s 2860(if)s 3077(a)s gsave
-3243 1045 translate
+3243 3985 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(reset)m
 
@@ -4587,11 +4624,25 @@ grestore
 3803(directi)s 6(v)k 3(e)k 4685(had)s 5089(been)s
 5598(issued,)s 6303(and)s 6707(parsing)s 7464(continues)s 8432(after)s
 gsave
-0 805 translate
+0 3745 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(hctac)m 
 grestore
-500 751(.)m 0 52(0.62)m 4809(User)s
+500 3691(.)m 9066 609 0 609 240 240 60 0 2728 LoutGr2
+newpath 0 ysize 0.3 ft sub moveto
+xsize 0 rlineto
+0 0.1 ft rlineto
+xsize neg 0 rlineto
+closepath fill
+grestore
+320 fnt84 0 5(4.4.)m
+628(Defaults)s 
+grestore
+0 2266(The)m 428(def)s 2(ault)k 1149(con\207guration)s
+2482(processing)s 3558(is)s 3768(as)s 4018(if)s 4235(the)s
+4583(daemon)s 5398(were)s 5918(parsing)s 6675(an)s 6958(o)s 3(v)k 3(erall)k
+7670(con\207guration)s 0 2026(\207le)m 361(whose)s 1029(contents)s 1877(were)s
+2397(as)s 2647(follo)s 6(ws:)k 0 52(0.62)m 4809(User)s
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
@@ -4633,51 +4684,34 @@ gsave
 1 LoutMargSet
 grestore
 240 fnt84 8831 13842(17)m gsave
-0 12808 translate
-240 fnt82 9066 609 0 609 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 5(4.4.)m 628(Defaults)s
-
-grestore
-240 fnt82 0 12346(The)m 428(def)s 2(ault)k 1149(con\207guration)s
-2482(processing)s 3558(is)s 3768(as)s 4018(if)s 4235(the)s
-4583(daemon)s 5398(were)s 5918(parsing)s 6675(an)s 6958(o)s 3(v)k 3(erall)k
-7670(con\207guration)s 0 12106(\207le)m 361(whose)s 1029(contents)s 1877(were)s
-2397(as)s 2647(follo)s 6(ws:)k gsave
-480 11920 translate
+480 13335 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m
-0 -292(user\211rcfile)m 1728(~/.userv/rc)s 0 -532(errors\211to\211stderr)m 0 -772(include)m 1152(/etc/userv/system.default)s
-0 -1012(if)m 432(grep)s 1152(service\211user\211shell)s 3888(/etc/shells)s 432 -1252(errors\211push)m
-720 -1492(catch\211quit)m 1008 -1732(include\211ifexist)m gsave
+240 fnt31 0 -52(reset)m 0 -292(user\211rcfile)m
+1728(~/.userv/rc)s 0 -532(errors\211to\211stderr)m 0 -772(include)m 1152(/etc/userv/system.default)s 0 -1012(if)m
+432(grep)s 1152(service\211user\211shell)s 3888(/etc/shells)s 432 -1252(errors\211push)m 720 -1492(catch\211quit)m
+1008 -1732(include\211ifexist)m gsave
 3312 -1680 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(\207le)m 345(speci\207ed)s
-1248(by)s 1530(most)s 2046(r)s 8(ecent)k 2699(user\211r)s 8(c\207le)k
+240 fnt83 0 -52(\207le)m 345(speci\207ed)s 1248(by)s
+1530(most)s 2046(r)s 8(ecent)k 2699(user\211r)s 8(c\207le)k
 3767(dir)s 8(ective)k 
 grestore
 720 -1972(hctac)m 432 -2212(srorre)m 0 -2452(fi)m
 0 -2692(include)m 1152(/etc/userv/system.override)s 0 -2932(quit)m 
 grestore
-0 8444(If)m 226(one)s
-624(of)s 891(the)s gsave
-1235 8498 translate
+240 fnt82 0 9859(If)m
+226(one)s 624(of)s 891(the)s gsave
+1235 9913 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override)m 
+240 fnt31 0 -52(\211\211override)m
+
 grestore
-2292(options)s
-3044(to)s 3279(the)s 3623(client)s 4209(is)s 4415(used)s
-4908(then)s 5373(it)s 5561(will)s 5983(instead)s 6714(be)s
-6992(as)s 7238(if)s 7451(the)s 7795(daemon)s 8606(were)s
-0 8204(parsing)m 757(an)s 1040(o)s 3(v)k 3(erall)k
+2292(options)s 3044(to)s 3279(the)s 3623(client)s 4209(is)s
+4415(used)s 4908(then)s 5373(it)s 5561(will)s 5983(instead)s
+6714(be)s 6992(as)s 7238(if)s 7451(the)s 7795(daemon)s
+8606(were)s 0 9619(parsing)m 757(an)s 1040(o)s 3(v)k 3(erall)k
 1752(con\207guration)s 3085(as)s 3335(follo)s 6(ws:)k gsave
-480 8018 translate
+480 9433 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(reset)m 0 -292(errors\211to\211stderr)m 0 -532(include)m gsave
@@ -4790,73 +4824,73 @@ grestore
 832(pipes,)s 1444(one)s 1846(end)s 2250(of)s 2521(each)s
 3016(pipe)s 3484(being)s 4069(open)s 4592(on)s 4889(the)s
 5237(appropriate)s 6381(\207le)s 6742(descriptor)s 7757(in)s 8000(the)s
-8348(service)s 480 9505(program)m 1350(\(when)s 2005(it)s 2197(is)s
-2407(in)s 9(v)k 4(ok)k 2(ed\))k 3292(and)s
-3696(the)s 4044(other)s 4595(end)s 4999(being)s 5584(held)s
-6054(by)s 6348(the)s 6696(client)s 7286(process,)s 8110(which)s
-480 9265(will)m 906(read)s 1375(and)s 1779(write)s 2325(\207les)s
-2774(it)s 2966(opens)s 3576(on)s 3873(behalf)s 4542(of)s
-4813(its)s 5089(caller)s 5678(or)s 5937(\207le)s 6298(descriptors)s
-7397(it)s 7589(is)s 7799(passed)s 8495(by)s 480 9025(its)m
-756(caller)s 13(.)k 480 8617(Data)m 991(may)s 1457(be)s
+8348(service)s 480 9505(program)m 1347(\(when)s 1999(it)s 2188(is)s
+2394(in)s 9(v)k 4(ok)k 2(ed\))k 3276(and)s
+3677(the)s 4022(other)s 4569(end)s 4970(being)s 5552(held)s
+6019(by)s 6309(the)s 6654(client)s 7241(process,)s 8062(which)s
+8700(will)s 480 9265(read)m 942(and)s 1339(write)s 1878(\207les)s
+2320(it)s 2505(opens)s 3108(on)s 3398(behalf)s 4060(of)s
+4324(its)s 4593(caller)s 5175(or)s 5427(\207le)s 5781(descriptors)s
+6873(it)s 7058(is)s 7261(passed)s 7950(by)s 8237(its)s
+8506(caller)s 13(.)k 480 9025(Data)m 991(may)s 1457(be)s
 1739(passed)s 2435(into)s 2860(the)s 3208(service)s 3940(through)s
 4742(reading)s 5512(pipes)s 6068(and)s 6472(out)s 6838(of)s
-7109(it)s 7301(through)s 8103(writing)s 480 8377(pipes.)m 1083(These)s
+7109(it)s 7301(through)s 8103(writing)s 480 8785(pipes.)m 1083(These)s
 1703(pipes)s 2252(can)s 2634(remain)s 3347(open)s 3864(only)s
 4337(until)s 4823(the)s 5164(service)s 5889(and)s 6287(client)s
 6870(ha)s 4(v)k 3(e)k 7364(terminated,)s 8485(or)s
-8737(can)s 480 8137(be)m 762(made)s 1336(to)s 1575(stay)s
+8737(can)s 480 8545(be)m 762(made)s 1336(to)s 1575(stay)s
 2014(open)s 2537(after)s 3033(the)s 3381(client)s 3971(has)s
 4341(terminated)s 5420(and)s 5824(\(if)s 6120(the)s 6468(service)s
-7200(program)s 8070(forks\))s 8689(the)s 480 7897(main)m 1015(service)s
-1747(process)s 2515(has)s 2885(e)s 3(xited;)k 3578(the)s
-3926(beha)s 4(viour)k 4939(is)s 5149(controlled)s 6176(by)s
-6470(options)s 7226(passed)s 7922(to)s 8161(the)s 8509(client)s
-480 7657(by)m 774(its)s 1050(caller)s 13(.)k 480 7249(The)m
-901(caller)s 1483(can)s 1864(arrange)s 2629(that)s 3039(a)s
-3198(writing)s 3934(pipe)s 4394(be)s 4669(connected)s 5689(to)s
-5921(a)s 6080(pipe)s 6540(or)s 6792(similar)s 7506(object)s
-8143(and)s 8539(cause)s 480 7009(attempts)m 1340(to)s 1579(write)s
-2125(to)s 2364(that)s 2782(descriptor)s 3797(by)s 4091(the)s
-4439(service)s 5171(to)s 5410(generate)s 6275(a)s gsave
-6441 7063 translate
+7200(program)s 8070(forks\))s 8689(the)s 480 8305(main)m 998(service)s
+1712(process)s 2462(has)s 2814(e)s 3(xited;)k 3489(the)s
+3820(beha)s 4(viour)k 4815(is)s 5007(controlled)s 6016(by)s
+6292(options)s 7031(passed)s 7709(to)s 7930(the)s 8260(client)s
+8832(by)s 480 8065(its)m 751(caller)s 13(.)k 1426(The)s
+1848(caller)s 2432(can)s 2816(arrange)s 3582(that)s 3995(a)s
+4156(writing)s 4893(pipe)s 5356(be)s 5633(connected)s 6655(to)s
+6889(a)s 7050(pipe)s 7512(or)s 7766(similar)s 8482(object)s
+480 7825(and)m 884(cause)s 1471(attempts)s 2331(to)s 2570(write)s
+3116(to)s 3355(that)s 3773(descriptor)s 4788(by)s 5082(the)s
+5430(service)s 6162(to)s 6401(generate)s 7266(a)s gsave
+7432 7879 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(SIGPIPE)m 
 grestore
-7201(\(or)s gsave
-7539 7063 translate
+8192(\(or)s gsave
+8530 7879 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(EPIPE)m 
 grestore
-8099(if)s
+480 7585(if)m
 gsave
-8316 7063 translate
+684 7639 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(SIGPIPE)m 
 grestore
-480 6769(is)m 690(caught)s 1388(or)s
-1647(ignored\))s 2506(in)s 2749(the)s 3097(service.)s 480 6361(Lik)m 2(e)k 6(wise,)k
-1455(the)s 1803(service)s 2535(can)s 2924(close)s 3471(\207ledescriptors)s
-4875(speci\207ed)s 5783(for)s 6121(reading,)s 6945(which)s 7587(will)s
-8013(cause)s 8600(the)s 480 6121(corresponding)m 1902(\207ledescriptors)s 3306(passed)s
-4002(by)s 4296(the)s 4644(caller)s 5233(to)s 5472(be)s
-5754(closed,)s 6472(so)s 6738(that)s 7156(if)s 7373(these)s
-7920(are)s 8267(pipes)s 480 5881(processes)m 1447(which)s 2089(write)s
-2635(to)s 2874(them)s 3412(will)s 3838(recei)s 6(v)k 3(e)k
+1431(is)s 1628(caught)s 2313(or)s
+2559(ignored\))s 3405(in)s 3635(the)s 3970(service.)s 4797(Lik)s 2(e)k 6(wise,)k
+5759(the)s 6094(service)s 6813(can)s 7189(close)s 7722(\207ledescriptors)s
+480 7345(speci\207ed)m 1373(for)s 1696(reading,)s 2505(which)s 3132(will)s
+3543(cause)s 4115(the)s 4448(corresponding)s 5855(\207ledescriptors)s 7244(passed)s
+7925(by)s 8204(the)s 8537(caller)s 480 7105(to)m 716(be)s
+995(closed,)s 1709(so)s 1972(that)s 2387(if)s 2600(these)s
+3144(are)s 3488(pipes)s 4040(processes)s 5004(which)s 5643(write)s
+6185(to)s 6421(them)s 6956(will)s 7378(recei)s 6(v)k 3(e)k
 gsave
-4574 5935 translate
+8111 7159 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(SIGPIPE)m 
 grestore
-5334(or)s gsave
-5593 5935 translate
+8867(or)s gsave
+480 6919 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(EPIPE)m
 
 grestore
-6093(.)s 0 5426(\213)m 480(If)s gsave
-706 5480 translate
+980 6865(.)m 0 6460(\213)m 480(If)s gsave
+706 6514 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(no\211suppress\211args)m
 
@@ -4864,96 +4898,133 @@ grestore
 2363(is)s 2568(set)s 2888(then)s 3353(ar)s 4(guments)k
 4391(passed)s 5082(to)s 5316(the)s 5660(client)s 6245(by)s
 6534(its)s 6805(caller)s 7390(will)s 7811(be)s 8088(passed)s
-8779(on,)s 480 5186(v)m 3(erbatim,)k 1433(to)s 1672(the)s
-2020(service.)s 0 4750(\213)m 480(F)s 3(a)k 716(tal)s
+8779(on,)s 480 6220(v)m 3(erbatim,)k 1433(to)s 1672(the)s
+2020(service.)s 0 5784(\213)m 480(F)s 3(a)k 716(tal)s
 1009(sig)s 1281(nals)s 1717(and)s 2121(sys)s 2418(tem)s
 2836(call)s 3235(f)s 2(ail)k 3545(ures)s 3994(e)s 3(x)k
 4212(pe)s 4434(ri)s 4573(enced)s 5189(by)s 5483(the)s
 5831(client)s 6421(will)s 6847(re)s 7028(sult)s 7433(in)s
 7676(the)s 8024(dis)s 8294(con)s 8637(nec)s 8962(-)s
-480 4510(tion)m 909(of)s 1180(the)s 1528(ser)s 1806(vice)s
+480 5544(tion)m 909(of)s 1180(the)s 1528(ser)s 1806(vice)s
 2260(from)s 2784(the)s 3132(client)s 3722(and)s 4126(pos)s
 4450(si)s 4603(bly)s 4963(some)s 5524(of)s 5795(the)s
 6143(com)s 6555(mu)s 6856(ni)s 7036(ca)s 7248(tion)s
-7677(\207le)s 8038(de)s 8260(scrip)s 8717(tors)s 480 4270(de)m
+7677(\207le)s 8038(de)s 8260(scrip)s 8717(tors)s 480 5304(de)m
 702(scribed)s 1450(abo)s 3(v)k 3(e;)k 2128(if)s
 gsave
-2345 4324 translate
+2345 5358 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(disconnect\211hup)m 
 grestore
 3806(is)s 4016(set)s 4341(then)s
 4810(the)s 5158(ser)s 5436(vice)s 5890(will)s 6316(also)s
 6754(be)s 7036(sent)s 7481(a)s gsave
-7647 4324 translate
+7647 5358 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(SIGHUP)m
 
 grestore
-8247(.)s 0 3834(\213)m 480(The)s 908(v)s 6(alue)k
+8247(.)s 0 4868(\213)m 480(The)s 908(v)s 6(alue)k
 1476(of)s 1747(the)s gsave
-2095 3888 translate
+2095 4922 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(LOGNAME)m 
 grestore
 2855(\(or)s
 gsave
-3193 3888 translate
+3193 4922 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(USER)m 
 grestore
 3593(\))s 3721(en)s 9(vironment)k
 4981(v)s 6(ariable)k 5800(as)s 6050(passed)s 6746(to)s
-6985(the)s 7333(client)s 7923(will)s 8349(be)s 480 3594(used)m
+6985(the)s 7333(client)s 7923(will)s 8349(be)s 480 4628(used)m
 977(as)s 1227(the)s 1575(login)s 2124(name)s 2698(of)s
 2969(the)s 3317(calling)s 4020(user)s 4478(if)s 4695(the)s
 5043(uid)s 5407(of)s 5678(the)s 6026(calling)s 6729(process)s
-7497(matches)s 8331(the)s 8679(uid)s 480 3354(corresponding)m 1902(to)s
+7497(matches)s 8331(the)s 8679(uid)s 480 4388(corresponding)m 1902(to)s
 2141(that)s 2559(login)s 3108(name.)s 3730(Otherwise)s 4768(the)s
 5116(calling)s 5819(uid')s 13(s)k 6335(passw)s 2(ord)k
-7295(entry)s 7840(will)s 8266(be)s 8548(used)s 480 3114(to)m
-719(determine)s 1730(the)s 2078(calling)s 2781(user')s 13(s)k
-3389(login)s 3938(name.)s 480 2706(This)m 956(login)s 1505(name)s
-2079(and)s 2483(the)s 2831(calling)s 3534(uid)s 3898(are)s
-4245(a)s 4(v)k 6(ailable)k 5153(in)s 5396(the)s
-5744(con\207guration)s 7077(language)s 7997(in)s 8240(the)s gsave
-480 2520 translate
+7295(entry)s 7840(will)s 8266(be)s 8548(used)s 480 4148(to)m
+708(determine)s 1708(the)s 2045(calling)s 2737(user')s 13(s)k
+3334(login)s 3872(name.)s 4543(This)s 5007(login)s 5545(name)s
+6108(and)s 6501(the)s 6838(calling)s 7530(uid)s 7883(are)s
+8218(a)s 4(v)k 6(ailable)k 480 3908(in)m 723(the)s
+1071(con\207guration)s 2404(language)s 3324(in)s 3567(the)s gsave
+3915 3962 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(calling\211user)m 
 grestore
-1741 2466(parameter)m 2755(and)s 3159(are)s 3506(passed)s
-4202(to)s 4441(the)s 4789(service)s 5521(program)s 6391(in)s
-6634(en)s 9(vironment)k 7894(v)s 6(ariables)k gsave
-480 2280 translate
+5176(parameter)s 6190(and)s 6594(are)s 6941(passed)s
+7637(to)s 7876(the)s 8224(service)s 480 3668(program)m 1334(in)s
+1561(en)s 9(vironment)k 2805(v)s 6(ariables)k gsave
+3696 3722 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(USERV_USER)m 
 grestore
-1541 2226(and)m gsave
-1945 2280 translate
+4741(and)s gsave
+5129 3722 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(USERV_UID)m 
 grestore
-2846(.)s
-480 1818(The)m 901(shell)s 1400(corresponding)s 2815(to)s 3047(that)s
-3458(login)s 4000(name)s 4567(\(according)s 5635(to)s 5867(the)s
-6208(passw)s 2(ord)k 7161(entry\))s 7773(is)s 7976(a)s 4(v)k 6(ailable)k
-8876(as)s 480 1578(in)m 723(the)s 1071(con\207guration)s 2404(language')s 13(s)k
+6030(.)s
+6178(The)s 6590(shell)s 7080(corresponding)s 8486(to)s 8708(that)s
+480 3428(login)m 1023(name)s 1591(\(according)s 2659(to)s 2892(the)s
+3233(passw)s 2(ord)k 4187(entry\))s 4799(is)s 5003(a)s 4(v)k 6(ailable)k
+5904(as)s 6148(in)s 6384(the)s 6726(con\207guration)s 8052(language')s 13(s)k
 gsave
-3478 1632 translate
+480 3242 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(calling\211user\211shell)m 
 grestore
-5340(parameter)s 13(.)k 480 1170(If)m
-710(no)s 1003(rele)s 6(v)k 6(ant)k 1820(passw)s 2(ord)k
-2780(entry)s 3325(can)s 3714(be)s 3996(found)s 4613(then)s
-5082(no)s 5375(service)s 6107(will)s 6533(be)s 6815(in)s 9(v)k 4(ok)k 2(ed.)k
-0 715(\213)m 480(The)s 908(numeric)s 1744(v)s 6(alues)k
+2342 3188(parameter)m 13(.)k 3447(If)s
+3677(no)s 3970(rele)s 6(v)k 6(ant)k 4787(passw)s 2(ord)k
+5747(entry)s 6292(can)s 6681(be)s 6963(found)s 7580(then)s
+8049(no)s 8342(service)s 480 2948(will)m 906(be)s 1188(in)s 9(v)k 4(ok)k 2(ed.)k
+0 2542(\213)m 480(The)s 908(numeric)s 1744(v)s 6(alues)k
 2400(and)s 2804(te)s 3(xtual)k 3506(names)s 4168(for)s
 4506(calling)s 5209(gid)s 5573(and)s 5977(supplementary)s 7439(group)s
-8051(list)s 8402(are)s 0 52(0.62)m 4809(User)s 5320(service)s
-6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
+8051(list)s 8402(are)s 480 2302(a)m 4(v)k 6(ailable)k
+1380(in)s 1615(the)s 1955(con\207guration)s 3280(language)s 4192(in)s
+4427(the)s gsave
+4766 2356 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(calling\211group)m 
+grestore
+6119(parameter)s 7125(and)s
+7521(are)s 7860(passed)s 8548(to)s 8778(the)s 480 2062(service)m
+1212(in)s 1455(en)s 9(vironment)k 2715(v)s 6(ariables.)k
+3735(If)s 3965(no)s 4258(name)s 4832(can)s 5221(be)s
+5503(found)s 6120(for)s 6458(a)s 6624(numeric)s 7460(group)s
+8072(to)s 8311(which)s 480 1822(the)m 828(calling)s 1531(process)s
+2299(belongs)s 3095(then)s 3564(no)s 3857(service)s 4589(will)s
+5015(be)s 5297(in)s 9(v)k 4(ok)k 2(ed.)k
+0 1367(\213)m 480(The)s 908(name)s 1482(of)s 1753(the)s
+2101(current)s 2837(w)s 2(orking)k 3686(directory)s 4602(in)s
+4845(which)s 5487(the)s 5835(client)s 6425(w)s 2(as)k
+6846(in)s 9(v)k 4(ok)k 2(ed)k 7661(is)s
+7871(passed,)s 8616(if)s 480 1127(a)m 4(v)k 6(ailable)k
+1388(and)s 1792(not)s 2158(hidden)s 2867(using)s gsave
+3439 1181 translate
+0.6953 1.0000 scale
+240 fnt31
+0 -52(\211\211hidecwd)m 
+grestore
+4340(,)s 4447(to)s 4686(the)s 5034(service)s
+5766(program)s 6636(in)s 6879(the)s gsave
+7227 1181 translate
+0.6953 1.0000 scale
+240 fnt31 0 -52(USERV_CWD)m
+
+grestore
+8188(v)s 6(ariable.)k 480 887(This)m 946(grants)s 1570(no)s
+1852(special)s 2560(access)s 3210(to)s 3438(that)s 3846(directory)s
+4751(unless)s 5389(it)s 5571(is)s 5770(a)s 5925(subdirectory)s
+7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(0.62)m
+4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
+7861(speci\207cation)s 
 grestore
 
 grestore
@@ -4992,101 +5063,65 @@ gsave
 gsave
 1 LoutMargSet
 grestore
-240 fnt84 8832 13842(19)m 240 fnt82 480 13251(a)m 4(v)k 6(ailable)k
-1380(in)s 1615(the)s 1955(con\207guration)s 3280(language)s 4192(in)s
-4427(the)s gsave
-4766 13305 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211group)m 
-grestore
-6119(parameter)s 7125(and)s
-7521(are)s 7860(passed)s 8548(to)s 8778(the)s 480 13011(service)m
-1212(in)s 1455(en)s 9(vironment)k 2715(v)s 6(ariables.)k
-480 12603(If)m 710(no)s 1003(name)s 1577(can)s 1966(be)s
-2248(found)s 2865(for)s 3203(a)s 3369(numeric)s 4205(group)s
-4817(to)s 5056(which)s 5698(the)s 6046(calling)s 6749(process)s
-7517(belongs)s 8313(then)s 8782(no)s 480 12363(service)m 1212(will)s
-1638(be)s 1920(in)s 9(v)k 4(ok)k 2(ed.)k
-0 11957(\213)m 480(The)s 908(name)s 1482(of)s 1753(the)s
-2101(current)s 2837(w)s 2(orking)k 3686(directory)s 4602(in)s
-4845(which)s 5487(the)s 5835(client)s 6425(w)s 2(as)k
-6846(in)s 9(v)k 4(ok)k 2(ed)k 7661(is)s
-7871(passed,)s 8616(if)s 480 11717(a)m 4(v)k 6(ailable)k
-1388(and)s 1792(not)s 2158(hidden)s 2867(using)s gsave
-3439 11771 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211hidecwd)m 
-grestore
-4340(,)s 4447(to)s 4686(the)s 5034(service)s
-5766(program)s 6636(in)s 6879(the)s gsave
-7227 11771 translate
+240 fnt84 8832 13842(19)m 240 fnt82 480 13251(is)m 690(e)s 3(x)k 3(ecutable)k
+1762(\(searchable\))s 2977(b)s 4(ut)k 3339(not)s 3705(readable)s
+4570(by)s 4864(the)s 5212(service)s 5944(user)s 13(.)k
+0 12794(\213)m 480(Settings)s 1301(speci\207ed)s 2209(by)s 2503(the)s
+2851(caller)s 3440(using)s 4012(the)s gsave
+4360 12848 translate
 0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_CWD)m
-
-grestore
-8188(v)s 6(ariable.)k 480 11477(This)m 946(grants)s 1570(no)s
-1852(special)s 2560(access)s 3210(to)s 3438(that)s 3846(directory)s
-4751(unless)s 5389(it)s 5571(is)s 5770(a)s 5925(subdirectory)s
-7164(of)s 7424(a)s 7579(directory)s 8484(which)s 480 11237(is)m
-690(e)s 3(x)k 3(ecutable)k 1762(\(searchable\))s 2977(b)s 4(ut)k
-3339(not)s 3705(readable)s 4570(by)s 4864(the)s 5212(service)s
-5944(user)s 13(.)k 0 10780(\213)m 480(Settings)s 1301(speci\207ed)s
-2209(by)s 2503(the)s 2851(caller)s 3440(using)s 4012(the)s
+240 fnt31 0 -52(\211\211defvar)m
 gsave
-4360 10834 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211defvar)m gsave
 1295 0 translate
 1.4219 1.0000 scale
 240 fnt83 0 -52(name)m 
 grestore
-2023(=)s
-gsave
+2023(=)s gsave
 2167 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(value)m 
+240 fnt83 0 -52(value)m
+
 grestore
 
 grestore
-6432(option)s 7101(to)s 7340(the)s
-7688(client)s 8278(are)s 480 10540(a)m 4(v)k 6(ailable)k
-1388(in)s 1631(the)s 1979(con\207guration)s 3312(language)s 4232(as)s
-4482(the)s 4830(corresponding)s gsave
-6252 10594 translate
+6432(option)s 7101(to)s 7340(the)s 7688(client)s 8278(are)s
+480 12554(a)m 4(v)k 6(ailable)k 1388(in)s 1631(the)s
+1979(con\207guration)s 3312(language)s 4232(as)s 4482(the)s 4830(corresponding)s
+gsave
+6252 12608 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(u\211)m gsave
 288 0 translate
 1.4219 1.0000 scale
-240 fnt83
-0 -52(name)m 
+240 fnt83 0 -52(name)m 
 grestore
 
 grestore
-7018(parameters)s 8116(and)s 8520(are)s 480 10300(passed)m
-1176(to)s 1415(the)s 1763(service)s 2495(program)s 3365(in)s
-3608(en)s 9(vironment)k 4868(v)s 6(ariables)k gsave
-5775 10354 translate
+7018(parameters)s
+8116(and)s 8520(are)s 480 12314(passed)m 1176(to)s 1415(the)s
+1763(service)s 2495(program)s 3365(in)s 3608(en)s 9(vironment)k
+4868(v)s 6(ariables)k gsave
+5775 12368 translate
 0.6953 1.0000 scale
-240 fnt31
-0 -52(USERV_U_)m gsave
+240 fnt31 0 -52(USERV_U_)m gsave
 1152 0 translate
 1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
+240 fnt83
+0 -52(name)m 
 grestore
 
 grestore
-7082(.)s 0 9845(\213)m
-480(If)s 710(the)s 1058(calling)s 1761(user)s 2219(is)s
-2429(root)s 2874(or)s 3133(the)s 3481(same)s 4028(as)s
-4278(the)s 4626(service)s 5358(user)s 5816(then)s 6285(options)s
-7041(may)s 7507(be)s 7789(gi)s 6(v)k 3(en)k
-8369(to)s 8608(the)s 480 9605(client)m 1070(which)s 1712(bypass)s
-2415(the)s 2763(usual)s 3323(security)s 4133(features;)s 5000(in)s
-5243(this)s 5639(case)s 6106(other)s 6657(information)s 7842(may)s
-8308(pass)s 480 9365(between)m 1334(the)s 1682(caller)s 2271(and)s
-2675(the)s 3023(service.)s 0 52(User)m 511(service)s 1243(daemon)s
-2058(and)s 2462(client)s 3052(speci\207cation)s 8652(0.62)s 
+7082(.)s 0 11859(\213)m 480(If)s 710(the)s
+1058(calling)s 1761(user)s 2219(is)s 2429(root)s 2874(or)s
+3133(the)s 3481(same)s 4028(as)s 4278(the)s 4626(service)s
+5358(user)s 5816(then)s 6285(options)s 7041(may)s 7507(be)s
+7789(gi)s 6(v)k 3(en)k 8369(to)s 8608(the)s
+480 11619(client)m 1070(which)s 1712(bypass)s 2415(the)s 2763(usual)s
+3323(security)s 4133(features;)s 5000(in)s 5243(this)s 5639(case)s
+6106(other)s 6657(information)s 7842(may)s 8308(pass)s 480 11379(between)m
+1334(the)s 1682(caller)s 2271(and)s 2675(the)s 3023(service.)s
+0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
+3052(speci\207cation)s 8652(0.62)s 
 grestore
 
 grestore