chiark / gitweb /
udated copyright notices; rebuilt documentation
authorian <ian>
Fri, 7 Apr 2006 19:04:48 +0000 (19:04 +0000)
committerian <ian>
Fri, 7 Apr 2006 19:04:48 +0000 (19:04 +0000)
README
client.c
debian/changelog
debian/copyright
spec.ps
spec.sgml
spec.sgml.in
userv.1
uservd.8

diff --git a/README b/README
index ee39b1515fcdb433bb38b4e1c4dd3aab095c5c85..8e9a041bbcea82b62b9ad1ac9dac2e3cca32c7b5 100644 (file)
--- a/README
+++ b/README
@@ -20,8 +20,8 @@ list if you are subscribed to it.
 
 
 userv is
 
 
 userv is
-Copyright (C)1996-2003 Ian Jackson <ian@davenant.greenend.org.uk>.
-Copyright (C)2000      Ben Harris <bjh21@cam.ac.uk>
+Copyright (C)1996-2003,2006 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)2000           Ben Harris <bjh21@cam.ac.uk>
 
 userv 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
 
 userv 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
index c5fbcd5a356dffaa61d3178932035dad1070a1a4..6664fbc4a8080b27d29b3cd1b3931584c4105da4 100644 (file)
--- a/client.c
+++ b/client.c
@@ -432,7 +432,8 @@ static void usage(FILE *stream) {
     "(separate with commas)  append  sync   excl[usive]  creat[e]  fd\n"
     "userv -B 'X' ... is same as userv --override 'execute-builtin X' - 'X' ...\n"
     "         for help, type `userv -B help'; remember to quote multi-word X\n"
     "(separate with commas)  append  sync   excl[usive]  creat[e]  fd\n"
     "userv -B 'X' ... is same as userv --override 'execute-builtin X' - 'X' ...\n"
     "         for help, type `userv -B help'; remember to quote multi-word X\n"
-    "userv and uservd version " VERSION VEREXT "; copyright (C)1996-1999 Ian Jackson.\n"
+    "userv and uservd version " VERSION VEREXT ".\n"
+    "Copyright (C)1996-2003,2006 Ian Jackson; copyright (C)2000 Ben Harris.\n"
     "there is NO WARRANTY; type `userv --copyright' for details.\n",
             stream) < 0)
     syscallerror("write usage message");
     "there is NO WARRANTY; type `userv --copyright' for details.\n",
             stream) < 0)
     syscallerror("write usage message");
index 9b7f63effa2e929f6072fed79416260b1ead554a..ecda7cffda637e3a9f35e41e90b8be5b59d50386 100644 (file)
@@ -16,8 +16,9 @@ userv (1.0.4) unstable; urgency=low
   * spec.tex and spec.html are autogenerated: clean and .cvsignore them.
   * SHELL=/bin/bash in debian/rules; use of install(8).  Closes: #263979.
   * Reran autoconf/autoheader (autoconf Debian 2.13-54).
   * spec.tex and spec.html are autogenerated: clean and .cvsignore them.
   * SHELL=/bin/bash in debian/rules; use of install(8).  Closes: #263979.
   * Reran autoconf/autoheader (autoconf Debian 2.13-54).
+  * Updated copyright notices.
 
 
- -- Ian Jackson <ian@davenant.greenend.org.uk>  Fri,  7 Apr 2006 19:54:59 +0100
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Fri,  7 Apr 2006 20:04:29 +0100
 
 userv (1.0.3-2) unstable; urgency=low
 
 
 userv (1.0.3-2) unstable; urgency=low
 
index 2ebce1bb0c7b90851643611958a58b5b408298b4..a08b87f386586e003bb5bbddfb0c4ff2380d3f78 100644 (file)
@@ -12,8 +12,8 @@ scheme, by adding various debian/* files and arranging for the uservd
 daemon to be started automatically.
 
 
 daemon to be started automatically.
 
 
-Copyright (C)1996-2000 Ian Jackson <ian@davenant.greenend.org.uk>.
-Copyright (C)2000      Ben Harris <bjh21@cam.ac.uk>.
+Copyright (C)1996-2000,2006 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)2000           Ben Harris <bjh21@cam.ac.uk>.
 
 userv 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
 
 userv 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
diff --git a/spec.ps b/spec.ps
index 60e7188cd8689033938c62d10647c4d1dfd026b8..ca50b1f4fb4bdb9de7b9de98fe8c18faab3976b1 100644 (file)
--- a/spec.ps
+++ b/spec.ps
@@ -1,5 +1,5 @@
 %!PS-Adobe-2.0
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
 %%Title: spec.dvi
 %%Pages: 30
 %%PageOrder: Ascend
 %%Title: spec.dvi
 %%Pages: 30
 %%PageOrder: Ascend
@@ -10,7 +10,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -o spec.ps spec
 %DVIPSParameters: dpi=600, compressed
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -o spec.ps spec
 %DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2004.11.12:0048
+%DVIPSSource:  TeX output 2006.04.07:2003
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -70,19 +70,16 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 
 %%EndProcSet
 %%BeginProcSet: 8r.enc
 
 %%EndProcSet
 %%BeginProcSet: 8r.enc
-% @@psencodingfile@{
-%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
-%   version = "0.6",
-%   date = "1 July 1998",
-%   filename = "8r.enc",
-%   email = "tex-fonts@@tug.org",
-%   docstring = "Encoding for TrueType or Type 1 fonts
-%                to be used with TeX."
-% @}
+% File  8r.enc as of 2002-03-12 for PSNFSS 9
+%
+% This is the encoding vector for Type1 and TrueType fonts to be used
+% with TeX.  This file is part of the PSNFSS bundle, version 9
 % 
 % 
+% Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt
+%
 % Idea is to have all the characters normally included in Type 1 fonts
 % available for typesetting. This is effectively the characters in Adobe
 % Idea is to have all the characters normally included in Type 1 fonts
 % available for typesetting. This is effectively the characters in Adobe
-% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
+% Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro.
 % 
 % Character code assignments were made as follows:
 % 
 % 
 % Character code assignments were made as follows:
 % 
@@ -105,8 +102,9 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 % upward-compatible revisions, if someday more characters are generally
 % available.
 % 
 % upward-compatible revisions, if someday more characters are generally
 % available.
 % 
-% (5) hyphen appears twice for compatibility with both 
-% ASCII and Windows.
+% (5) hyphen appears twice for compatibility with both ASCII and Windows.
+%
+% (6) /Euro is assigned to 128, as in Windows ANSI
 % 
 /TeXBase1Encoding [
 % 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
 % 
 /TeXBase1Encoding [
 % 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
@@ -124,7 +122,7 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
  /.notdef /.notdef /.notdef /.notdef
  /.notdef /.notdef /.notdef /.notdef
  % very contentious; it's so painful not having quoteleft and quoteright
  /.notdef /.notdef /.notdef /.notdef
  /.notdef /.notdef /.notdef /.notdef
  % very contentious; it's so painful not having quoteleft and quoteright
- % at 96 and 145 that we move the things normally found there to here.
+ % at 96 and 145 that we move the things normally found there down to here.
  /grave /quotesingle 
 % 0x20 (ASCII begins)
  /space /exclam /quotedbl /numbersign
  /grave /quotesingle 
 % 0x20 (ASCII begins)
  /space /exclam /quotedbl /numbersign
@@ -145,7 +143,7 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
  /x /y /z /braceleft /bar /braceright /asciitilde
  /.notdef % rubout; ASCII ends
 % 0x80
  /x /y /z /braceleft /bar /braceright /asciitilde
  /.notdef % rubout; ASCII ends
 % 0x80
- /.notdef /.notdef /quotesinglbase /florin
+ /Euro /.notdef /quotesinglbase /florin
  /quotedblbase /ellipsis /dagger /daggerdbl
  /circumflex /perthousand /Scaron /guilsinglleft
  /OE /.notdef /.notdef /.notdef
  /quotedblbase /ellipsis /dagger /daggerdbl
  /circumflex /perthousand /Scaron /guilsinglleft
  /OE /.notdef /.notdef /.notdef
@@ -194,16 +192,17 @@ rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 %!
 TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
 %!
 TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
-exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
-dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
-ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
-end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
-dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
-roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
-dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
-if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
-def end
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
 
 %%EndProcSet
 %%BeginProcSet: special.pro
 
 %%EndProcSet
 %%BeginProcSet: special.pro
@@ -243,25 +242,26 @@ currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
 /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
 psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
 psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
 /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
 psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
 psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
-psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
-roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
-moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
-begin/SpecialSave save N gsave normalscale currentpoint TR
-@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
-CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
-closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
-sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
-}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
-CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
-lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
-/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
-repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
-/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
-currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
-moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
-/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
-1 startangle endangle arc savematrix setmatrix}N end
+TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
+@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
+closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
+/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
+currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
+N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
+neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
+rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
+scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
+lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
+ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
+/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
+pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
+/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
+setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
+moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
+matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
+savematrix setmatrix}N end
 
 %%EndProcSet
 %%BeginProcSet: color.pro
 
 %%EndProcSet
 %%BeginProcSet: color.pro
@@ -315,108 +315,110 @@ setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
 %%EndProcSet
 TeXDict begin 39158280 55380996 1000 600 600 (spec.dvi)
 @start /Fa 134[72 2[72 72 1[72 72 2[72 2[72 6[72 72 2[72
 %%EndProcSet
 TeXDict begin 39158280 55380996 1000 600 600 (spec.dvi)
 @start /Fa 134[72 2[72 72 1[72 72 2[72 2[72 6[72 72 2[72
-97[{TeXBase1Encoding ReEncodeFont}10 119.552 /Courier-Bold
+97[{ TeXBase1Encoding ReEncodeFont }10 119.552 /Courier-Bold
 rf /Fb 134[55 50 83 55 61 33 44 39 2[55 61 89 33 2[33
 61 55 39 50 61 44 1[50 23[39 4[83 72 14[50 50 50 50 2[25
 rf /Fb 134[55 50 83 55 61 33 44 39 2[55 61 89 33 2[33
 61 55 39 50 61 44 1[50 23[39 4[83 72 14[50 50 50 50 2[25
-46[{TeXBase1Encoding ReEncodeFont}28 99.6264 /Palatino-Bold
+46[{ TeXBase1Encoding ReEncodeFont }28 99.6264 /Palatino-Bold
 rf /Fc 134[51 2[51 51 35 40 3[51 51 76 30 2[30 51 1[30
 rf /Fc 134[51 2[51 51 35 40 3[51 51 76 30 2[30 51 1[30
-40 51 40 1[51 94[56 2[{TeXBase1Encoding ReEncodeFont}17
+40 51 40 1[51 94[56 2[{ TeXBase1Encoding ReEncodeFont }17
 90.9091 /Palatino-BoldItalic rf /Fd 134[55 55 55 55 55
 55 55 55 1[55 55 55 55 55 2[55 55 55 55 55 55 55 55 55
 90.9091 /Palatino-BoldItalic rf /Fd 134[55 55 55 55 55
 55 55 55 1[55 55 55 55 55 2[55 55 55 55 55 55 55 55 55
-8[55 8[55 32[55 55 45[{TeXBase1Encoding ReEncodeFont}26
+8[55 8[55 32[55 55 45[{ TeXBase1Encoding ReEncodeFont }26
 90.9091 /Courier-BoldOblique rf /Fe 134[42 39 62 42 45
 24 32 30 1[45 41 43 66 22 2[22 43 42 25 36 46 33 41 37
 90.9091 /Courier-BoldOblique rf /Fe 134[42 39 62 42 45
 24 32 30 1[45 41 43 66 22 2[22 43 42 25 36 46 33 41 37
-21 49[19 25 19 4[21 36[45 2[{TeXBase1Encoding ReEncodeFont}28
+21 49[19 25 19 4[21 36[45 2[{ TeXBase1Encoding ReEncodeFont }28
 74.7198 /Palatino-Roman rf /Ff 137[45 45 1[45 45 2[45
 74.7198 /Palatino-Roman rf /Ff 137[45 45 1[45 45 2[45
-9[45 45 100[{TeXBase1Encoding ReEncodeFont}7 74.7198
-/Courier rf /Fg 206[25 49[{TeXBase1Encoding ReEncodeFont}1
+9[45 45 100[{ TeXBase1Encoding ReEncodeFont }7 74.7198
+/Courier rf /Fg 206[25 49[{ TeXBase1Encoding ReEncodeFont }1
 49.8132 /Palatino-Roman rf /Fh 131[55 2[55 55 55 55 55
 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
 55 55 1[55 1[55 55 55 3[55 55 55 1[55 55 1[55 55 5[55
 55 55 1[55 55 55 55 4[55 14[55 55 6[55 4[55 33[{
 49.8132 /Palatino-Roman rf /Fh 131[55 2[55 55 55 55 55
 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
 55 55 1[55 1[55 55 55 3[55 55 55 1[55 55 1[55 55 5[55
 55 55 1[55 55 55 55 4[55 14[55 55 6[55 4[55 33[{
-TeXBase1Encoding ReEncodeFont}49 90.9091 /Courier-Bold
-rf /Fi 206[33 49[{TeXBase1Encoding ReEncodeFont}1 66.4176
+ TeXBase1Encoding ReEncodeFont }49 90.9091 /Courier-Bold
+rf /Fi 206[33 49[{ TeXBase1Encoding ReEncodeFont }1 66.4176
 /Palatino-Roman rf /Fj 134[55 2[55 55 55 55 55 1[55 55
 55 55 55 2[55 1[55 55 55 55 55 55 55 51[55 45[{
 /Palatino-Roman rf /Fj 134[55 2[55 55 55 55 55 1[55 55
 55 55 55 2[55 1[55 55 55 55 55 55 55 51[55 45[{
-TeXBase1Encoding ReEncodeFont}20 90.9091 /Courier-Oblique
+ TeXBase1Encoding ReEncodeFont }20 90.9091 /Courier-Oblique
 rf /Fk 139[57 1[67 1[105 7[105 2[86 3[86 29[124 12[86
 rf /Fk 139[57 1[67 1[105 7[105 2[86 3[86 29[124 12[86
-86 86 86 86 86 49[{TeXBase1Encoding ReEncodeFont}13 172.188
-/Palatino-Bold rf /Fl 135[45 1[51 56 30 40 35 1[56 51
-56 81 30 56 30 30 56 51 35 45 56 40 56 45 5[30 7[56 9[35
-3[56 1[66 1[71 6[23 45 2[45 45 45 45 45 45 1[27 1[30
-23 2[30 30 37[56 2[{TeXBase1Encoding ReEncodeFont}42
+86 86 86 86 86 49[{ TeXBase1Encoding ReEncodeFont }13
+172.188 /Palatino-Bold rf /Fl 135[45 1[51 56 30 40 35
+1[56 51 56 81 30 56 30 30 56 51 35 45 56 40 56 45 5[30
+7[56 9[35 3[56 1[66 1[71 6[23 45 2[45 45 45 45 45 45
+1[27 1[30 23 2[30 30 37[56 2[{ TeXBase1Encoding ReEncodeFont }42
 90.9091 /Palatino-Bold rf /Fm 135[103 1[115 126 69 92
 80 1[126 115 126 184 69 2[69 126 115 80 103 126 92 126
 103 13[126 9[80 3[126 1[149 1[161 17[61 1[69 42[126 2[{
 90.9091 /Palatino-Bold rf /Fm 135[103 1[115 126 69 92
 80 1[126 115 126 184 69 2[69 126 115 80 103 126 92 126
 103 13[126 9[80 3[126 1[149 1[161 17[61 1[69 42[126 2[{
-TeXBase1Encoding ReEncodeFont}28 206.559 /Palatino-Bold
+ TeXBase1Encoding ReEncodeFont }28 206.559 /Palatino-Bold
 rf /Fn 134[45 45 66 45 51 30 35 35 1[45 40 51 71 25 2[25
 45 45 25 35 45 37 42 40 8[66 8[71 10[71 22[30 5[25 36[48
 rf /Fn 134[45 45 66 45 51 30 35 35 1[45 40 51 71 25 2[25
 45 45 25 35 45 37 42 40 8[66 8[71 10[71 22[30 5[25 36[48
-2[{TeXBase1Encoding ReEncodeFont}28 90.9091 /Palatino-Italic
+2[{ TeXBase1Encoding ReEncodeFont }28 90.9091 /Palatino-Italic
 rf /Fo 108[55 20[55 1[55 2[55 55 55 55 55 55 55 55 55
 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 1[55
 1[55 55 55 1[55 55 55 55 55 55 55 55 1[55 55 55 55 55
 2[55 55 55 55 55 55 55 55 55 55 2[55 1[55 55 6[55 55
 55 55 55 55 55 55 2[55 55 55 55 1[55 55 55 34[{
 rf /Fo 108[55 20[55 1[55 2[55 55 55 55 55 55 55 55 55
 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 1[55
 1[55 55 55 1[55 55 55 55 55 55 55 55 1[55 55 55 55 55
 2[55 55 55 55 55 55 55 55 55 55 2[55 1[55 55 6[55 55
 55 55 55 55 55 55 2[55 55 55 55 1[55 55 55 34[{
-TeXBase1Encoding ReEncodeFont}73 90.9091 /Courier rf
+ TeXBase1Encoding ReEncodeFont }73 90.9091 /Courier rf
 /Fp 134[66 60 100 66 73 40 53 47 1[73 66 73 106 40 2[40
 73 66 47 60 73 53 73 60 13[73 86 2[100 100 7[66 73 100
 86 1[93 9[60 60 60 60 60 60 60 2[30 40 30 2[40 40 33
 /Fp 134[66 60 100 66 73 40 53 47 1[73 66 73 106 40 2[40
 73 66 47 60 73 53 73 60 13[73 86 2[100 100 7[66 73 100
 86 1[93 9[60 60 60 60 60 60 60 2[30 40 30 2[40 40 33
-36[73 2[{TeXBase1Encoding ReEncodeFont}45 119.552 /Palatino-Bold
+36[73 2[{ TeXBase1Encoding ReEncodeFont }45 119.552 /Palatino-Bold
 rf /Fq 106[55 26[45 51 47 76 51 55 30 39 36 51 55 50
 53 80 26 51 21 26 53 51 30 44 56 40 50 45 25 2[30 3[61
 1[91 1[71 56 48 61 1[55 71 76 86 56 1[30 31 76 69 51
 56 70 64 56 71 5[23 23 45 45 45 45 45 45 45 45 45 45
 rf /Fq 106[55 26[45 51 47 76 51 55 30 39 36 51 55 50
 53 80 26 51 21 26 53 51 30 44 56 40 50 45 25 2[30 3[61
 1[91 1[71 56 48 61 1[55 71 76 86 56 1[30 31 76 69 51
 56 70 64 56 71 5[23 23 45 45 45 45 45 45 45 45 45 45
-55 23 30 23 2[30 30 25 35[55 55 2[{TeXBase1Encoding ReEncodeFont}71
+55 23 30 23 2[30 30 25 35[55 55 2[{ TeXBase1Encoding ReEncodeFont }71
 90.9091 /Palatino-Roman rf /Fr 137[60 60 60 1[60 2[60
 60 2[60 1[60 1[60 1[60 60 2[60 32[60 1[60 1[60 13[60
 90.9091 /Palatino-Roman rf /Fr 137[60 60 60 1[60 2[60
 60 2[60 1[60 1[60 1[60 60 2[60 32[60 1[60 1[60 13[60
-46[{TeXBase1Encoding ReEncodeFont}16 99.6264 /Courier
+46[{ TeXBase1Encoding ReEncodeFont }16 99.6264 /Courier
 rf /Fs 140[42 3[54 58 2[55 7[44 1[50 22[33 34 73[{
 rf /Fs 140[42 3[54 58 2[55 7[44 1[50 22[33 34 73[{
-TeXBase1Encoding ReEncodeFont}8 99.6264 /Palatino-Roman
+ TeXBase1Encoding ReEncodeFont }8 99.6264 /Palatino-Roman
 rf /Ft 137[117 1[67 88 82 1[124 113 120 182 60 2[60 3[99
 rf /Ft 137[117 1[67 88 82 1[124 113 120 182 60 2[60 3[99
-126 92 1[103 11[161 82[125 2[{TeXBase1Encoding ReEncodeFont}16
+126 92 1[103 11[161 82[125 2[{ TeXBase1Encoding ReEncodeFont }16
 206.559 /Palatino-Roman rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
 %%PaperSize: A4
 206.559 /Palatino-Roman rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
 %%PaperSize: A4
-
+ end
 %%EndSetup
 %%Page: 1 1
 %%EndSetup
 %%Page: 1 1
-1 0 bop Black 0 TeXcolorgray Black Black Black Black
-452 875 a Ft(User)50 b(service)g(daemon)j(and)f(client)1312
+TeXDict begin 1 0 bop Black 0 TeXcolorgray Black Black
+Black Black 452 875 a Ft(User)50 b(service)g(daemon)j(and)f(client)1312
 1037 y(speci\002cation)p Black Black 718 1275 a Fs(Ian)24
 b(Jackson)i Fr(<)t(ian@davenant.greenend.org.uk>)p Black
 1037 y(speci\002cation)p Black Black 718 1275 a Fs(Ian)24
 b(Jackson)i Fr(<)t(ian@davenant.greenend.org.uk>)p Black
-Black 1629 1686 a Fq(1.0.3.99-0.0.1)p Black Black 1654
-2184 a Fp(Abstract)0 2453 y Fq(This)d(is)h(a)f(speci\002cation)h(for)f
-(a)h(Unix)f(system)f(facility)j(to)e(allow)h(one)f(pr)n(ogram)g(to)f
-(invoke)h(another)g(when)0 2566 y(only)f(limited)h(tr)o(ust)f(exists)f
-(between)g(them.)p Black Black eop
+Black Black Black 1792 1955 a Fq(1.0.4)p Black Black
+1654 2453 a Fp(Abstract)0 2722 y Fq(This)d(is)h(a)f(speci\002cation)h
+(for)f(a)h(Unix)f(system)f(facility)j(to)e(allow)h(one)f(pr)n(ogram)g
+(to)f(invoke)h(another)g(when)0 2835 y(only)f(limited)h(tr)o(ust)f
+(exists)f(between)g(them.)p Black Black eop end
 %%Page: 2 2
 %%Page: 2 2
-2 1 bop Black 0 TeXcolorgray Black Black 0 4108 a Fp(Copyright)31
-b(Notice)0 4375 y Fo(userv)20 b Fq(is)j(Copyright)f(1996-2003)k(Ian)d
-(Jackson.)0 4545 y Fo(userv)h Fq(is)j(fr)n(ee)f(softwar)n(e;)h(you)f
-(can)h(r)n(edistribute)e(it)i(and/or)f(modify)g(it)h(under)e(the)h
-(terms)f(of)i(the)e(GNU)0 4658 y(General)i(Public)h(License)e(as)h
-(published)g(by)f(the)g(Fr)n(ee)g(Softwar)n(e)h(Foundation;)g(either)f
-(version)g(2)i(of)f(the)0 4771 y(License,)21 b(or)i(\(at)g(your)e
-(option\))h(any)h(later)g(version.)0 4940 y(This)e(pr)n(ogram)h(is)f
-(distributed)f(in)i(the)f(hope)f(that)h(it)h(will)h(be)e(useful,)g(but)
-h Fn(without)g(any)g(warranty)p Fq(;)h(without)0 5053
-y(even)33 b(the)f(implied)i(warranty)e(of)i Fn(mer)n(chantability)i
-Fq(or)d Fn(\002tness)h(for)g(a)g(particular)i(purpose)p
-Fq(.)61 b(See)32 b(the)g(GNU)0 5166 y(General)23 b(Public)h(License)e
-(for)g(mor)n(e)h(details.)0 5335 y(Y)-8 b(ou)21 b(should)f(have)i(r)n
-(eceived)g(a)g(copy)f(of)h(the)e(GNU)i(General)g(Public)h(License)e
-(along)g(with)h Fo(userv)p Fq(;)e(if)i(not,)0 5448 y(write)29
-b(to)g(the)g(Fr)n(ee)g(Softwar)n(e)h(Foundation,)g(59)g(T)-8
-b(emple)29 b(Place)i(-)f(Suite)f(330,)k(Boston,)c(MA)h(02111-1307,)0
-5561 y(USA.)p Black Black eop
+TeXDict begin 2 1 bop Black 0 TeXcolorgray Black Black
+0 4108 a Fp(Copyright)31 b(Notice)0 4375 y Fo(userv)20
+b Fq(is)j(Copyright)f(1996-2003,2006)28 b(Ian)23 b(Jackson;)f
+(Copyright)f(2000)k(Ben)c(Harris.)0 4545 y Fo(userv)j
+Fq(is)j(fr)n(ee)f(softwar)n(e;)h(you)f(can)h(r)n(edistribute)e(it)i
+(and/or)f(modify)g(it)h(under)e(the)h(terms)f(of)i(the)e(GNU)0
+4658 y(General)i(Public)h(License)e(as)h(published)g(by)f(the)g(Fr)n
+(ee)g(Softwar)n(e)h(Foundation;)g(either)f(version)g(2)i(of)f(the)0
+4771 y(License,)21 b(or)i(\(at)g(your)e(option\))h(any)h(later)g
+(version.)0 4940 y(This)e(pr)n(ogram)h(is)f(distributed)f(in)i(the)f
+(hope)f(that)h(it)h(will)h(be)e(useful,)g(but)h Fn(without)g(any)g
+(warranty)p Fq(;)h(without)0 5053 y(even)33 b(the)f(implied)i(warranty)
+e(of)i Fn(mer)n(chantability)i Fq(or)d Fn(\002tness)h(for)g(a)g
+(particular)i(purpose)p Fq(.)61 b(See)32 b(the)g(GNU)0
+5166 y(General)23 b(Public)h(License)e(for)g(mor)n(e)h(details.)0
+5335 y(Y)-8 b(ou)21 b(should)f(have)i(r)n(eceived)g(a)g(copy)f(of)h
+(the)e(GNU)i(General)g(Public)h(License)e(along)g(with)h
+Fo(userv)p Fq(;)e(if)i(not,)0 5448 y(write)29 b(to)g(the)g(Fr)n(ee)g
+(Softwar)n(e)h(Foundation,)g(59)g(T)-8 b(emple)29 b(Place)i(-)f(Suite)f
+(330,)k(Boston,)c(MA)h(02111-1307,)0 5561 y(USA.)p Black
+Black eop end
 %%Page: 1 3
 %%Page: 1 3
-1 2 bop Black 0 TeXcolorgray Black 3739 91 a Fq(i)p 0
-128 3766 4 v Black 0 1193 a Fm(Contents)p 1 0 0 TeXcolorrgb
-0 1783 a Fl(1)91 b(Introduction)p Black 3058 w(1)p 1 0 0
-TeXcolorrgb 0 2040 a(2)g(Client)24 b(program)e(usage)p
+TeXDict begin 1 2 bop Black 0 TeXcolorgray Black 3739
+91 a Fq(i)p 0 128 3766 4 v Black 0 1193 a Fm(Contents)p
+1 0 0 TeXcolorrgb 0 1783 a Fl(1)91 b(Introduction)p Black
+3058 w(1)p 1 0 0 TeXcolorrgb 0 2040 a(2)g(Client)24 b(program)e(usage)p
 Black 2690 w(3)p 1 0 0 TeXcolorrgb 136 2206 a Fq(2.1)96
 b(Options)p Black 36 w(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 Black 2690 w(3)p 1 0 0 TeXcolorrgb 136 2206 a Fq(2.1)96
 b(Options)p Black 36 w(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
@@ -481,36 +483,37 @@ Black 39 w(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 TeXcolorrgb 136 5563 a(6.3)96 b(Reducing)22 b(the)g(number)g(of)h
 (absolutely)f(privileged)g(subsystems)p Black 64 w(.)45
 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black
 TeXcolorrgb 136 5563 a(6.3)96 b(Reducing)22 b(the)g(number)g(of)h
 (absolutely)f(privileged)g(subsystems)p Black 64 w(.)45
 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black
-84 w(23)p Black Black Black eop
+84 w(23)p Black Black Black eop end
 %%Page: 2 4
 %%Page: 2 4
-2 3 bop Black 0 TeXcolorgray Black 0 91 a Fq(CONTENTS)3210
-b(ii)p 0 128 3766 4 v Black 1 0 0 TeXcolorrgb 136 476
-a(6.4)96 b(Do)23 b(not)f(give)h(away)g(excessive)e(privilege)i(to)f
-Fo(userv)p Fq(-using)e(facilities)p Black 48 w(.)45 b(.)h(.)f(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)p Black 84 w(24)p Black 1 0 0
-TeXcolorrgb 136 645 a(6.5)96 b Fo(userv)21 b Fq(can)i(often)f(r)n
-(eplace)h Fo(sudo)p Fq(,)e(but)h(not)g Fo(really)p Black
-25 w Fq(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)p Black 84 w(25)p Black 1 0 0 TeXcolorrgb
-136 814 a(6.6)96 b(Err)n(or)22 b(handling)h(and)g(input)f(str)n(eams)g
-(\(eg)g(stdin\))p Black 39 w(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black
-84 w(25)p Black 1 0 0 TeXcolorrgb 136 984 a(6.7)96 b(Don't)23
-b(give)g(access)f(to)g(general-purpose)e(utilities)p
-Black 58 w(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black 84 w(25)p Black Black
-Black eop
+TeXDict begin 2 3 bop Black 0 TeXcolorgray Black 0 91
+a Fq(CONTENTS)3210 b(ii)p 0 128 3766 4 v Black 1 0 0
+TeXcolorrgb 136 476 a(6.4)96 b(Do)23 b(not)f(give)h(away)g(excessive)e
+(privilege)i(to)f Fo(userv)p Fq(-using)e(facilities)p
+Black 48 w(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(24)p Black 1 0 0 TeXcolorrgb 136 645 a(6.5)96
+b Fo(userv)21 b Fq(can)i(often)f(r)n(eplace)h Fo(sudo)p
+Fq(,)e(but)h(not)g Fo(really)p Black 25 w Fq(.)45 b(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(25)p Black 1 0 0 TeXcolorrgb 136 814 a(6.6)96
+b(Err)n(or)22 b(handling)h(and)g(input)f(str)n(eams)g(\(eg)g(stdin\))p
+Black 39 w(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black 84 w(25)p Black
+1 0 0 TeXcolorrgb 136 984 a(6.7)96 b(Don't)23 b(give)g(access)f(to)g
+(general-purpose)e(utilities)p Black 58 w(.)45 b(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(25)p Black Black Black eop end
 %%Page: 1 5
 %%Page: 1 5
-1 4 bop Black 0 TeXcolorgray Black 3720 91 a Fq(1)p 0
-128 3766 4 v Black 0 1155 a Fk(Chapter)44 b(1)0 1626
-y Fm(Introduction)0 2128 y Fq(Ther)n(e)32 b(is)h(a)h(daemon)f(which)g
-(invokes)g(user)f(service)h(pr)n(ograms)f(\(henceforth)g(`services'\))i
-(in)f(r)n(esponse)0 2241 y(to)e(r)n(equests)e(by)j(callers)g(of)f(a)h
-(companion)g(client)g(pr)n(ogram)f(\(henceforth)g(the)f(`client'\))j
-(and)e(accor)n(ding)0 2354 y(to)e(r)o(ules)h(set)e(forth)h(in)i
-(system-wide)c(and)j(user)n(-speci\002c)f(con\002guration)g(\002les.)49
-b(The)29 b(companion)i(client)0 2467 y(pr)n(ogram)c(is)h(setuid)e(r)n
-(oot,)i(and)g(negotiates)d(with)j(the)e(daemon)h(thr)n(ough)g(an)h
+TeXDict begin 1 4 bop Black 0 TeXcolorgray Black 3720
+91 a Fq(1)p 0 128 3766 4 v Black 0 1155 a Fk(Chapter)44
+b(1)0 1626 y Fm(Introduction)0 2128 y Fq(Ther)n(e)32
+b(is)h(a)h(daemon)f(which)g(invokes)g(user)f(service)h(pr)n(ograms)f
+(\(henceforth)g(`services'\))i(in)f(r)n(esponse)0 2241
+y(to)e(r)n(equests)e(by)j(callers)g(of)f(a)h(companion)g(client)g(pr)n
+(ogram)f(\(henceforth)g(the)f(`client'\))j(and)e(accor)n(ding)0
+2354 y(to)e(r)o(ules)h(set)e(forth)h(in)i(system-wide)c(and)j(user)n
+(-speci\002c)f(con\002guration)g(\002les.)49 b(The)29
+b(companion)i(client)0 2467 y(pr)n(ogram)c(is)h(setuid)e(r)n(oot,)i
+(and)g(negotiates)d(with)j(the)e(daemon)h(thr)n(ough)g(an)h
 Fo(AF_UNIX)c Fq(socket)i(and)i(as-)0 2579 y(sociated)i(objects)g(in)h
 (a)g(system-wide)e(private)i(dir)n(ectory)e(set)h(aside)g(for)h(the)e
 (purpose.)50 b(The)30 b(user)g(who)0 2692 y(wishes)c(the)f(service)i
 Fo(AF_UNIX)c Fq(socket)i(and)i(as-)0 2579 y(sociated)i(objects)g(in)h
 (a)g(system-wide)e(private)i(dir)n(ectory)e(set)h(aside)g(for)h(the)e
 (purpose.)50 b(The)30 b(user)g(who)0 2692 y(wishes)c(the)f(service)i
@@ -522,19 +525,19 @@ y(which)e(calls)h(the)e(client)h(is)g(called)g(the)f(`calling)j(pr)n
 (carried)g(acr)n(oss)0 3088 y(the)33 b(security)g(boundary)h(between)e
 (the)h(two)h(users,)h(and)f(that)g(the)f(pr)n(ocesses)f(on)i(either)f
 (side)g(cannot)0 3200 y(interact)23 b(with)f(each)h(other)f(in)h(any)f
 (carried)g(acr)n(oss)0 3088 y(the)33 b(security)g(boundary)h(between)e
 (the)h(two)h(users,)h(and)f(that)g(the)f(pr)n(ocesses)f(on)i(either)f
 (side)g(cannot)0 3200 y(interact)23 b(with)f(each)h(other)f(in)h(any)f
-(unexpected)e(ways.)p Black Black eop
+(unexpected)e(ways.)p Black Black eop end
 %%Page: 2 6
 %%Page: 2 6
-2 5 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(1.)h(Intr)n(oduction)2772 b(2)p 0 128 3766 4 v Black
-Black Black eop
+TeXDict begin 2 5 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(1.)h(Intr)n(oduction)2772 b(2)p 0 128
+3766 4 v Black Black Black eop end
 %%Page: 3 7
 %%Page: 3 7
-3 6 bop Black 0 TeXcolorgray Black 3720 91 a Fq(3)p 0
-128 3766 4 v Black 0 1158 a Fk(Chapter)44 b(2)0 1633
-y Fm(Client)52 b(program)g(usage)p Black Black 164 2137
-a Fo(userv)g Fj(options)f Fo([--])i Fj(service-user)f(service-name)d
-Fo([)p Fj(argument)i Fo(...])164 2250 y(userv)h Fj(options)f
-Fo(-B|--builtin)e([--])k Fj(builtin-service)48 b Fo([)p
-Fj(info-argument)g Fo(...])0 2532 y Fn(service-user)30
+TeXDict begin 3 6 bop Black 0 TeXcolorgray Black 3720
+91 a Fq(3)p 0 128 3766 4 v Black 0 1158 a Fk(Chapter)44
+b(2)0 1633 y Fm(Client)52 b(program)g(usage)p Black Black
+164 2137 a Fo(userv)g Fj(options)f Fo([--])i Fj(service-user)f
+(service-name)d Fo([)p Fj(argument)i Fo(...])164 2250
+y(userv)h Fj(options)f Fo(-B|--builtin)e([--])k Fj(builtin-service)48
+b Fo([)p Fj(info-argument)g Fo(...])0 2532 y Fn(service-user)30
 b Fq(speci\002es)c(which)i(user)e(is)i(to)e(pr)n(ovide)h(the)g
 (service.)41 b(The)27 b(user)f(may)i(be)f(a)h(login)f(name)h(or)e(a)0
 2645 y(numeric)d(uid,)f(or)h Fo(-)f Fq(to)g(indicate)h(that)f(the)g
 b Fq(speci\002es)c(which)i(user)e(is)i(to)e(pr)n(ovide)h(the)g
 (service.)41 b(The)27 b(user)f(may)i(be)f(a)h(login)f(name)h(or)e(a)0
 2645 y(numeric)d(uid,)f(or)h Fo(-)f Fq(to)g(indicate)h(that)f(the)g
@@ -548,18 +551,18 @@ b(options)h(may)h(be)f(combined)h(as)g(is)g(usual)g(with)f(Unix)h(pr)n
 (ograms,)f(and)g(the)g(value)i(for)e(such)0 3687 y(an)h(option)f(may)h
 (appear)f(in)h(the)f(same)h(ar)n(gument)f(or)g(in)h(the)f(next.)p
 Black 0 3968 a Fh(-B)p Black Black 0 4165 a(--builtin)p
 (ograms,)f(and)g(the)g(value)i(for)e(such)0 3687 y(an)h(option)f(may)h
 (appear)f(in)h(the)f(same)h(ar)n(gument)f(or)g(in)h(the)f(next.)p
 Black 0 3968 a Fh(-B)p Black Black 0 4165 a(--builtin)p
-Black 41 w Fq(Requests)15 b(that)i(a)h(builtin)g(service)f(be)g(pr)n
-(ovided.)25 b(This)17 b(is)g(equivalent)h(to)e(using)h(the)f
-Fo(-override)227 4278 y Fq(option)j(to)g(specify)g(a)h(string)e
-(consisting)h(of)g Fo(execute-builtin)13 b Fq(followed)19
-b(by)h(the)e Fn(builtin-service)227 4391 y Fq(r)n(equested,)i(and)j(r)n
-(equesting)e(a)i(service)f(user)g(of)g Fo(-)h Fq(\(indicating)g(the)f
-(calling)j(user\).)227 4546 y(If)k(the)f(builtin)i(service)f(being)g(r)
-n(equested)d(r)n(equir)n(es)i(a)i Fn(service-ar)n(gument)i
-Fq(then)c(this)h(must)f(be)h(sup-)227 4659 y(plied)20
-b(to)f(the)h(client)g(in)g(the)g(same)g(ar)n(gument)f(as)h(the)f
-Fn(builtin-service)p Fq(.)30 b(See)19 b(`Dir)n(ectives)i(for)f
-(changing)227 4772 y(execution)25 b(settings')e(on)i(page)p
+Black 41 w Fq(Requests)39 b(that)i(a)h(builtin)g(service)f(be)h(pr)n
+(ovided.)83 b(This)41 b(is)g(equivalent)h(to)e(using)h(the)227
+4278 y Fo(-override)19 b Fq(option)j(to)g(specify)h(a)g(string)f
+(consisting)g(of)h Fo(execute-builtin)17 b Fq(followed)22
+b(by)h(the)227 4391 y Fn(builtin-service)j Fq(r)n(equested,)20
+b(and)i(r)n(equesting)f(a)i(service)g(user)e(of)i Fo(-)f
+Fq(\(indicating)i(the)e(calling)i(user\).)227 4546 y(If)29
+b(the)f(builtin)i(service)f(being)g(r)n(equested)d(r)n(equir)n(es)i(a)i
+Fn(service-ar)n(gument)i Fq(then)c(this)h(must)f(be)h(sup-)227
+4659 y(plied)20 b(to)f(the)h(client)g(in)g(the)g(same)g(ar)n(gument)f
+(as)h(the)f Fn(builtin-service)p Fq(.)30 b(See)19 b(`Dir)n(ectives)i
+(for)f(changing)227 4772 y(execution)25 b(settings')e(on)i(page)p
 0 1 0 0 TeXcolorcmyk 25 w(15)p Black 27 w(for)g(details)g(of)h(the)f
 (builtin)h(services)f(available,)k(and)c(`Security-)227
 4885 y(overriding)d(options')g(on)g(page)p 0 1 0 0 TeXcolorcmyk
 0 1 0 0 TeXcolorcmyk 25 w(15)p Black 27 w(for)g(details)g(of)h(the)f
 (builtin)h(services)f(available,)k(and)c(`Security-)227
 4885 y(overriding)d(options')g(on)g(page)p 0 1 0 0 TeXcolorcmyk
@@ -576,14 +579,14 @@ Fo(execute-builti)o(n)20 b Fq(will)28 b(be)d(used)227
 Fq(s.)p Black 0 5475 1507 4 v 134 5531 a Fg(1)p 0 TeXcolorgray
 Black 163 5563 a Ff(userv)c Fe(is)g(short)g(for)g(`user)g(services',)e
 (and)j(is)g(pr)o(onounced)f(`you-serve'.)p Black Black
 Fq(s.)p Black 0 5475 1507 4 v 134 5531 a Fg(1)p 0 TeXcolorgray
 Black 163 5563 a Ff(userv)c Fe(is)g(short)g(for)g(`user)g(services',)e
 (and)j(is)g(pr)o(onounced)f(`you-serve'.)p Black Black
-Black eop
+Black eop end
 %%Page: 4 8
 %%Page: 4 8
-4 7 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(2.)h(Client)g(pr)n(ogram)g(usage)2406 b(4)p 0 128 3766
-4 v Black Black 0 476 a Fh(--file)52 b Fd(fd)t Fh([)p
-Fd(modifiers)q Fh(]=)o Fd(fi)o(le)o(na)o(me)p Black 39
-w Fq(Requests)20 b(that)i(data)g(be)g(copied)g(in)g(and)g(out)g(of)g
-(the)f(service)227 589 y(using)27 b(pipes.)42 b(For)27
+TeXDict begin 4 7 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(2.)h(Client)g(pr)n(ogram)g(usage)2406
+b(4)p 0 128 3766 4 v Black Black 0 476 a Fh(--file)52
+b Fd(fd)t Fh([)p Fd(modifiers)q Fh(]=)o Fd(fi)o(le)o(na)o(me)p
+Black 39 w Fq(Requests)20 b(that)i(data)g(be)g(copied)g(in)g(and)g(out)
+g(of)g(the)f(service)227 589 y(using)27 b(pipes.)42 b(For)27
 b(each)h(\002le)g(or)f(descriptor)f(this)h(will)i(be)e(done)g(by)g(cr)n
 (eating)h(a)h(pipe,)e(one)g(end)g(of)227 702 y(which)c(is)f(passed)f
 (to)g(the)g(service)h(pr)n(ogram)g(and)h(the)e(other)g(end)g(of)h
 b(each)h(\002le)g(or)f(descriptor)f(this)h(will)i(be)e(done)g(by)g(cr)n
 (eating)h(a)h(pipe,)e(one)g(end)g(of)227 702 y(which)c(is)f(passed)f
 (to)g(the)g(service)h(pr)n(ogram)g(and)h(the)e(other)g(end)g(of)h
@@ -660,41 +663,42 @@ Fq(when)j(opening)f(\002les)i(speci\002ed)e(by)i(the)e(caller)-7
 b(,)34 b(to)c(avoid)227 5385 y(changing)23 b(its)f(contr)n(olling)h
 (terminal.)227 5563 y(By)g(default)h(stdin,)f(stdout)f(and)i(stderr)e
 (of)i(the)f(service)h(will)h(be)f(connected)f(to)g(the)g(corr)n
 b(,)34 b(to)c(avoid)227 5385 y(changing)23 b(its)f(contr)n(olling)h
 (terminal.)227 5563 y(By)g(default)h(stdin,)f(stdout)f(and)i(stderr)e
 (of)i(the)f(service)h(will)h(be)f(connected)f(to)g(the)g(corr)n
-(esponding)p Black Black eop
+(esponding)p Black Black eop end
 %%Page: 5 9
 %%Page: 5 9
-5 8 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(2.)h(Client)g(pr)n(ogram)g(usage)2406 b(5)p 0 128 3766
-4 v Black 227 476 a(descriptors)29 b(on)i(the)g(client.)54
-b(Diagnostics)32 b(fr)n(om)g(the)e(client)i(and)f(daemon)g(will)i(also)
-e(appear)g(on)227 589 y(stderr)-7 b(.)227 753 y(If)25
-b Fo(wait)f Fq(is)h(speci\002ed,)f(the)g(client)h(will)i(wait)e(for)g
-(the)f(pipe)g(to)h(be)g(closed,)f(and)h(only)g(exit)f(after)h(this)227
-866 y(has)19 b(happened.)24 b(This)18 b(means)h(that)f(either)f(the)h
-(r)n(eceiving)h(end)e(of)h(the)g(pipe)g(connection)g(was)g(closed)227
-978 y(while)h(data)h(was)e(still)i(available)i(at)d(the)f(sending)f
-(end,)i(or)f(that)h(the)f(end)g(of)h(\002le)g(was)g(r)n(eached)f(on)h
-(the)227 1091 y(r)n(eading)28 b(\002le)g(descriptor)-7
-b(.)43 b(Err)n(ors)26 b(encounter)n(ed)g(r)n(eading)i(or)g(writing)f
-(in)i(the)e(client)h(at)h(this)e(stage)227 1204 y(will)c(be)f(consider)
-n(ed)e(a)j(system)d(err)n(or)h(and)h(cause)g(the)f(client)h(to)f(exit)h
-(with)f(status)g(255,)i(but)f(will)h(not)227 1317 y(cause)g
-(disconnection)e(at)i(the)f(service)g(side)g(since)h(the)f(service)g
-(has)h(alr)n(eady)g(exited.)227 1481 y(If)i Fo(close)d
-Fq(is)j(speci\002ed)e(the)h(client)h(will)g(immediately)g(close)f(the)g
-(pipe)g(connection)g(by)g(killing)i(the)227 1594 y(r)n(elevant)20
-b(copy)f(of)g Fo(cat)p Fq(.)26 b(If)19 b(the)g(service)g(uses)f(the)h
-(descriptor)e(it)j(will)h(get)d Fo(SIGPIPE)e Fq(\(or)k
-Fo(EPIPE)p Fq(\))d(for)227 1707 y(a)26 b(writing)f(descriptor)e(or)i
-(end)f(of)i(\002le)f(for)g(a)h(r)n(eading)f(one;)g(the)f(descriptor)g
-(opened)f(by)i(or)g(passed)227 1820 y(to)d(the)g(client)h(will)h(also)f
-(be)f(closed.)227 1984 y(If)k Fo(nowait)c Fq(is)k(speci\002ed)e(then)g
-(the)h(client)h(will)g(not)f(wait)h(and)f(the)f(connection)h(will)i(r)n
-(emain)f(open)227 2097 y(after)d(the)f(client)i(terminates.)k(Data)c
-(may)f(continue)g(to)f(be)h(passed)e(between)h(the)g(inheritors)g(of)h
-(the)227 2210 y(r)n(elevant)32 b(descriptor)e(on)i(the)f(service)g
-(side)g(and)h(the)f(corr)n(esponding)f(\002le)i(or)f(descriptor)f(on)i
-(the)227 2323 y(client)d(side)e(until)i(either)e(side)h(closes)f(their)
-h(descriptor)-7 b(.)43 b(This)28 b(should)f(not)h(usually)g(be)g
+TeXDict begin 5 8 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(2.)h(Client)g(pr)n(ogram)g(usage)2406
+b(5)p 0 128 3766 4 v Black 227 476 a(descriptors)29 b(on)i(the)g
+(client.)54 b(Diagnostics)32 b(fr)n(om)g(the)e(client)i(and)f(daemon)g
+(will)i(also)e(appear)g(on)227 589 y(stderr)-7 b(.)227
+753 y(If)25 b Fo(wait)f Fq(is)h(speci\002ed,)f(the)g(client)h(will)i
+(wait)e(for)g(the)f(pipe)g(to)h(be)g(closed,)f(and)h(only)g(exit)f
+(after)h(this)227 866 y(has)19 b(happened.)24 b(This)18
+b(means)h(that)f(either)f(the)h(r)n(eceiving)h(end)e(of)h(the)g(pipe)g
+(connection)g(was)g(closed)227 978 y(while)h(data)h(was)e(still)i
+(available)i(at)d(the)f(sending)f(end,)i(or)f(that)h(the)f(end)g(of)h
+(\002le)g(was)g(r)n(eached)f(on)h(the)227 1091 y(r)n(eading)28
+b(\002le)g(descriptor)-7 b(.)43 b(Err)n(ors)26 b(encounter)n(ed)g(r)n
+(eading)i(or)g(writing)f(in)i(the)e(client)h(at)h(this)e(stage)227
+1204 y(will)c(be)f(consider)n(ed)e(a)j(system)d(err)n(or)h(and)h(cause)
+g(the)f(client)h(to)f(exit)h(with)f(status)g(255,)i(but)f(will)h(not)
+227 1317 y(cause)g(disconnection)e(at)i(the)f(service)g(side)g(since)h
+(the)f(service)g(has)h(alr)n(eady)g(exited.)227 1481
+y(If)i Fo(close)d Fq(is)j(speci\002ed)e(the)h(client)h(will)g
+(immediately)g(close)f(the)g(pipe)g(connection)g(by)g(killing)i(the)227
+1594 y(r)n(elevant)20 b(copy)f(of)g Fo(cat)p Fq(.)26
+b(If)19 b(the)g(service)g(uses)f(the)h(descriptor)e(it)j(will)h(get)d
+Fo(SIGPIPE)e Fq(\(or)k Fo(EPIPE)p Fq(\))d(for)227 1707
+y(a)26 b(writing)f(descriptor)e(or)i(end)f(of)i(\002le)f(for)g(a)h(r)n
+(eading)f(one;)g(the)f(descriptor)g(opened)f(by)i(or)g(passed)227
+1820 y(to)d(the)g(client)h(will)h(also)f(be)f(closed.)227
+1984 y(If)k Fo(nowait)c Fq(is)k(speci\002ed)e(then)g(the)h(client)h
+(will)g(not)f(wait)h(and)f(the)f(connection)h(will)i(r)n(emain)f(open)
+227 2097 y(after)d(the)f(client)i(terminates.)k(Data)c(may)f(continue)g
+(to)f(be)h(passed)e(between)h(the)g(inheritors)g(of)h(the)227
+2210 y(r)n(elevant)32 b(descriptor)e(on)i(the)f(service)g(side)g(and)h
+(the)f(corr)n(esponding)f(\002le)i(or)f(descriptor)f(on)i(the)227
+2323 y(client)d(side)e(until)i(either)e(side)h(closes)f(their)h
+(descriptor)-7 b(.)43 b(This)28 b(should)f(not)h(usually)g(be)g
 (speci\002ed)227 2436 y(for)g(stderr)e(\(or)i(stdout)e(if)j
 Fo(--signals)50 b(stdout)26 b Fq(is)i(used\))f(since)g(diagnostics)h
 (fr)n(om)g(the)f(service)227 2549 y(side)22 b(may)h(arrive)g(after)g
 (speci\002ed)227 2436 y(for)g(stderr)e(\(or)i(stdout)e(if)j
 Fo(--signals)50 b(stdout)26 b Fq(is)i(used\))f(since)g(diagnostics)h
 (fr)n(om)g(the)f(service)227 2549 y(side)22 b(may)h(arrive)g(after)g
@@ -743,38 +747,38 @@ Fo(_exit)p Fq(,)c(so)h(that)h(only)g(numbers)g(fr)n(om)h(0)g(to)227
 5450 y(255)i(can)f(be)f(r)n(eturned)e(and)j(not)e(the)g(full)j(range)d
 (of)i(numbers)e(and)h(signal)h(indications)f(which)h(can)227
 5563 y(be)d(r)n(eturned)e(by)h(the)g Fo(wait)f Fq(family)j(of)f(system)
 5450 y(255)i(can)f(be)f(r)n(eturned)e(and)j(not)e(the)g(full)j(range)d
 (of)i(numbers)e(and)h(signal)h(indications)f(which)h(can)227
 5563 y(be)d(r)n(eturned)e(by)h(the)g Fo(wait)f Fq(family)j(of)f(system)
-e(calls.\))p Black Black eop
+e(calls.\))p Black Black eop end
 %%Page: 6 10
 %%Page: 6 10
-6 9 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(2.)h(Client)g(pr)n(ogram)g(usage)2406 b(6)p 0 128 3766
-4 v Black 227 476 a(The)22 b Fn(method)j Fq(may)e(be)f(one)g(of)h(the)e
-(following:)p Black 227 589 a Fc(status)p Black 46 w
-Fq(The)31 b(client's)h(exit)f(status)f(will)j(be)f Fn(status)p
-Fq(.)55 b(This)32 b(will)g(not)f(be)h(distinguishable)f(fr)n(om)h(the)
-427 702 y(service)i(r)n(eally)h(having)f(exited)f(with)h(code)f
-Fn(status)p Fq(.)63 b(This)34 b(method)e(is)i(the)f(default,)k(with)c
-(a)427 814 y Fn(status)24 b Fq(of)f(254.)p Black 227
-927 a Fh(number)p Black Black 227 1040 a(number-nocore)p
-Black 40 w Fq(The)h(client's)h(exit)g(status)e(will)j(be)f(the)f
-(number)h(of)g(the)f(signal)h(which)h(caused)427 1153
-y(the)c(termination)g(of)g(the)f(service.)28 b(If)22
-b Fo(number)e Fq(is)i(used)f(rather)g(than)i Fo(number-nocore)16
-b Fq(then)427 1266 y(128)34 b(will)g(be)f(added)f(if)h(the)f(service)h
-(dumped)e(cor)n(e.)58 b Fo(number)30 b Fq(is)j(very)f(like)h(the)e
-(exit)i(code)427 1379 y(mangling)24 b(done)d(by)h(the)g(Bourne)f
-(shell.)p Black 227 1492 a Fh(highbit)p Black 43 w Fq(The)i(client's)h
-(exit)f(status)g(will)i(be)f(the)f(number)g(of)h(the)f(signal)i(with)e
-(128)j(added.)k(If)24 b(the)427 1605 y(service)18 b(exits)f(normally)i
-(with)f(an)g(exit)f(code)h(of)f(gr)n(eater)g(than)h(127)i(then)d(127)i
-(will)g(be)f(r)n(eturned.)p Black 227 1718 a Fh(stdout)p
-Black 43 w Fq(The)k(service's)h(numeric)h(wait)f(status)f(as)h(two)f
-(decimal)j(numbers)d(\(high)h(byte)f(\002rst\))h(and)427
-1831 y(a)e(textual)e(description)g(of)h(its)f(meaning)h(will)h(be)f
-(printed)f(to)g(the)g(client's)h(standar)n(d)g(output.)25
-b(It)427 1944 y(will)i(be)e(pr)n(eceded)f(by)h(a)h(newline)f(and)h
-(followed)f(by)g(an)h(extra)f(newline,)h(and)f(the)g(numbers)427
-2056 y(ar)n(e)20 b(separated)d(fr)n(om)i(each)h(other)d(and)i(fr)n(om)h
-(the)e(textual)g(description)g(by)h(single)f(spaces.)26
+TeXDict begin 6 9 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(2.)h(Client)g(pr)n(ogram)g(usage)2406
+b(6)p 0 128 3766 4 v Black 227 476 a(The)22 b Fn(method)j
+Fq(may)e(be)f(one)g(of)h(the)e(following:)p Black 227
+589 a Fc(status)p Black 46 w Fq(The)31 b(client's)h(exit)f(status)f
+(will)j(be)f Fn(status)p Fq(.)55 b(This)32 b(will)g(not)f(be)h
+(distinguishable)f(fr)n(om)h(the)427 702 y(service)i(r)n(eally)h
+(having)f(exited)f(with)h(code)f Fn(status)p Fq(.)63
+b(This)34 b(method)e(is)i(the)f(default,)k(with)c(a)427
+814 y Fn(status)24 b Fq(of)f(254.)p Black 227 927 a Fh(number)p
+Black Black 227 1040 a(number-nocore)p Black 40 w Fq(The)h(client's)h
+(exit)g(status)e(will)j(be)f(the)f(number)h(of)g(the)f(signal)h(which)h
+(caused)427 1153 y(the)c(termination)g(of)g(the)f(service.)28
+b(If)22 b Fo(number)e Fq(is)i(used)f(rather)g(than)i
+Fo(number-nocore)16 b Fq(then)427 1266 y(128)34 b(will)g(be)f(added)f
+(if)h(the)f(service)h(dumped)e(cor)n(e.)58 b Fo(number)30
+b Fq(is)j(very)f(like)h(the)e(exit)i(code)427 1379 y(mangling)24
+b(done)d(by)h(the)g(Bourne)f(shell.)p Black 227 1492
+a Fh(highbit)p Black 43 w Fq(The)i(client's)h(exit)f(status)g(will)i
+(be)f(the)f(number)g(of)h(the)f(signal)i(with)e(128)j(added.)k(If)24
+b(the)427 1605 y(service)18 b(exits)f(normally)i(with)f(an)g(exit)f
+(code)h(of)f(gr)n(eater)g(than)h(127)i(then)d(127)i(will)g(be)f(r)n
+(eturned.)p Black 227 1718 a Fh(stdout)p Black 43 w Fq(The)k(service's)
+h(numeric)h(wait)f(status)f(as)h(two)f(decimal)j(numbers)d(\(high)h
+(byte)f(\002rst\))h(and)427 1831 y(a)e(textual)e(description)g(of)h
+(its)f(meaning)h(will)h(be)f(printed)f(to)g(the)g(client's)h(standar)n
+(d)g(output.)25 b(It)427 1944 y(will)i(be)e(pr)n(eceded)f(by)h(a)h
+(newline)f(and)h(followed)f(by)g(an)h(extra)f(newline,)h(and)f(the)g
+(numbers)427 2056 y(ar)n(e)20 b(separated)d(fr)n(om)i(each)h(other)d
+(and)i(fr)n(om)h(the)e(textual)g(description)g(by)h(single)f(spaces.)26
 b(The)427 2169 y(exit)i(status)e(of)i(the)f(client)h(will)h(be)f(zer)n
 (o,)h(unless)d(a)j(system)c(err)n(or)j(occurs)f(in)h(which)h(case)e(no)
 427 2282 y(exit)h(status)f(and)i(description)e(will)i(be)g(printed)e
 b(The)427 2169 y(exit)i(status)e(of)i(the)f(client)h(will)h(be)f(zer)n
 (o,)h(unless)d(a)j(system)c(err)n(or)j(occurs)f(in)h(which)h(case)e(no)
 427 2282 y(exit)h(status)f(and)i(description)e(will)i(be)g(printed)e
@@ -813,12 +817,13 @@ b(ar)n(e)h(also)g(some)f(options)g(which)h(ar)n(e)h(available)i(for)d
 5563 y(istrator)29 b(to)g(override)g(a)i(user)7 b('s)28
 b(policy)-10 b(.)49 b(These)29 b(options)f(ar)n(e)i(available)j(only)c
 (if)i(the)e(client)h(is)g(called)h(by)p Black Black eop
 5563 y(istrator)29 b(to)g(override)g(a)i(user)7 b('s)28
 b(policy)-10 b(.)49 b(These)29 b(options)f(ar)n(e)i(available)j(only)c
 (if)i(the)e(client)h(is)g(called)h(by)p Black Black eop
+end
 %%Page: 7 11
 %%Page: 7 11
-7 10 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(2.)h(Client)g(pr)n(ogram)g(usage)2406 b(7)p 0 128 3766
-4 v Black 0 476 a(r)n(oot)22 b(or)g(if)i(the)d(calling)k(user)c(is)i
-(the)f(same)g(as)h(the)f(service)g(user)-7 b(.)p Black
-0 745 a Fh(--override)50 b Fd(configuration-d)o(at)o(a)p
+TeXDict begin 7 10 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(2.)h(Client)g(pr)n(ogram)g(usage)2406
+b(7)p 0 128 3766 4 v Black 0 476 a(r)n(oot)22 b(or)g(if)i(the)d
+(calling)k(user)c(is)i(the)f(same)g(as)h(the)f(service)g(user)-7
+b(.)p Black 0 745 a Fh(--override)50 b Fd(configuration-d)o(at)o(a)p
 Black Black 0 932 a Fh(--override-file)e Fd(filename)p
 Black 42 w Fq(Do)25 b(not)g(r)n(ead)g(the)g(usual)g(con\002guration)g
 (\002les.)35 b(Instead,)24 b(the)h(client)227 1045 y(sends)37
 Black Black 0 932 a Fh(--override-file)e Fd(filename)p
 Black 42 w Fq(Do)25 b(not)g(r)n(ead)g(the)g(usual)g(con\002guration)g
 (\002les.)35 b(Instead,)24 b(the)h(client)227 1045 y(sends)37
@@ -844,15 +849,15 @@ Fn(not)f Fq(af)n(fect)h(which)f(user)f(is)g(chosen)g(if)i(the)d
 (service)i(user)f(is)g(speci\002ed)227 2136 y(as)i(just)f
 Fo(-)p Fq(;)g(in)h(this)f(case)h(the)f(service)g(user)g(will)i(be)e
 (the)g(r)n(eal)i(calling)g(user)-7 b(.)p Black Black
 (service)i(user)f(is)g(speci\002ed)227 2136 y(as)i(just)f
 Fo(-)p Fq(;)g(in)h(this)f(case)h(the)f(service)g(user)g(will)i(be)e
 (the)g(r)n(eal)i(calling)g(user)-7 b(.)p Black Black
-eop
+eop end
 %%Page: 8 12
 %%Page: 8 12
-8 11 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(2.)h(Client)g(pr)n(ogram)g(usage)2406 b(8)p 0 128 3766
-4 v Black Black Black eop
+TeXDict begin 8 11 bop Black 0 TeXcolorgray Black 0 91
+a Fq(Chapter)22 b(2.)h(Client)g(pr)n(ogram)g(usage)2406
+b(8)p 0 128 3766 4 v Black Black Black eop end
 %%Page: 9 13
 %%Page: 9 13
-9 12 bop Black 0 TeXcolorgray Black 3720 91 a Fq(9)p
-0 128 3766 4 v Black 0 1145 a Fk(Chapter)44 b(3)0 1607
-y Fm(Execution)52 b(environment)g(of)g(the)g(service)0
+TeXDict begin 9 12 bop Black 0 TeXcolorgray Black 3720
+91 a Fq(9)p 0 128 3766 4 v Black 0 1145 a Fk(Chapter)44
+b(3)0 1607 y Fm(Execution)52 b(environment)g(of)g(the)g(service)0
 1856 y(program)0 2362 y Fq(The)27 b(daemon)g(which)h(is)g(handling)g
 (the)f(service)g(user)g(side)g(of)g(things)g(will)i(r)n(ead)e
 (con\002guration)g(\002les)h(to)0 2475 y(decide)23 b(what)h(to)g(do.)32
 1856 y(program)0 2362 y Fq(The)27 b(daemon)g(which)h(is)g(handling)g
 (the)f(service)g(user)g(side)g(of)g(things)g(will)i(r)n(ead)e
 (con\002guration)g(\002les)h(to)0 2475 y(decide)23 b(what)h(to)g(do.)32
@@ -900,24 +905,25 @@ b(if)g(one)e(of)h(the)g(\002le)g(descriptors)e(held)i(by)g(the)f
 (client)i(for)f(writing)g(by)g(the)g(service)g(is)g(a)h(pipe)0
 5563 y(whose)e(other)g(end)h(is)g(closed)g(by)g(the)g(caller)i(then)d
 (the)h(client/daemon)g(pair)h(will)h(see)d(an)i(err)n(or)f(when)p
 (client)i(for)f(writing)g(by)g(the)g(service)g(is)g(a)h(pipe)0
 5563 y(whose)e(other)g(end)h(is)g(closed)g(by)g(the)g(caller)i(then)d
 (the)h(client/daemon)g(pair)h(will)h(see)d(an)i(err)n(or)f(when)p
-Black Black eop
+Black Black eop end
 %%Page: 10 14
 %%Page: 10 14
-10 13 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(3.)h(Execution)f(envir)n(onment)g(of)h(the)e(service)i(pr)n(ogram)
-1367 b(10)p 0 128 3766 4 v Black 0 476 a(trying)27 b(to)g(copy)g(data)h
-(pr)n(ovided)f(by)h(the)f(service.)43 b(This)28 b(too)f(will)i(not)e
-(be)g(consider)n(ed)g(an)h(err)n(or;)i(rather)-7 b(,)0
-589 y(the)23 b(pipe)h(corr)n(espondong)d(to)i(that)h(descriptor)f(will)
-i(be)f(closed)f(and)h(any)g(further)g(writes)f(will)i(cause)f(the)0
-702 y(service)e(to)g(get)g(a)h Fo(SIGPIPE)p Fq(.)0 871
-y(Note)h(that)g(not)h(all)h(write)f(err)n(ors)f(or)h(br)n(oken)f(pipes)
-g(on)h(\002le)g(descriptors)e(may)i(be)g(visible)i(to)d(the)g(service,)
-0 984 y(since)19 b(buf)n(fer)n(ed)h(data)g(may)f(be)h(discar)n(ded)f
-(by)g(the)g(operating)f(system)g(and)h(ther)n(e)g(will)i(be)e(a)h
-(\002nite)f(interval)0 1097 y(between)29 b(the)h(err)n(or)g(happening)g
-(and)g(the)g(service)h(being)f(disconnected)f(fr)n(om)i(the)f(client)h
-(or)f(the)g(next)0 1210 y(write)22 b(causing)h(a)g Fo(SIGPIPE)p
-Fq(.)0 1379 y(Read)i(err)n(ors)g(on)h(\002le)g(descriptors)e(\(and)i
+TeXDict begin 10 13 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(3.)h(Execution)f(envir)n(onment)g(of)h(the)e
+(service)i(pr)n(ogram)1367 b(10)p 0 128 3766 4 v Black
+0 476 a(trying)27 b(to)g(copy)g(data)h(pr)n(ovided)f(by)h(the)f
+(service.)43 b(This)28 b(too)f(will)i(not)e(be)g(consider)n(ed)g(an)h
+(err)n(or;)i(rather)-7 b(,)0 589 y(the)23 b(pipe)h(corr)n(espondong)d
+(to)i(that)h(descriptor)f(will)i(be)f(closed)f(and)h(any)g(further)g
+(writes)f(will)i(cause)f(the)0 702 y(service)e(to)g(get)g(a)h
+Fo(SIGPIPE)p Fq(.)0 871 y(Note)h(that)g(not)h(all)h(write)f(err)n(ors)f
+(or)h(br)n(oken)f(pipes)g(on)h(\002le)g(descriptors)e(may)i(be)g
+(visible)i(to)d(the)g(service,)0 984 y(since)19 b(buf)n(fer)n(ed)h
+(data)g(may)f(be)h(discar)n(ded)f(by)g(the)g(operating)f(system)g(and)h
+(ther)n(e)g(will)i(be)e(a)h(\002nite)f(interval)0 1097
+y(between)29 b(the)h(err)n(or)g(happening)g(and)g(the)g(service)h
+(being)f(disconnected)f(fr)n(om)i(the)f(client)h(or)f(the)g(next)0
+1210 y(write)22 b(causing)h(a)g Fo(SIGPIPE)p Fq(.)0 1379
+y(Read)i(err)n(ors)g(on)h(\002le)g(descriptors)e(\(and)i
 (disconnection\))g(will)h(only)f(be)f(visible)j(to)d(the)g(service)h
 (and)g(dis-)0 1492 y(tinguishable)d(fr)n(om)g(normal)g(end)f(of)h
 (\002le)f(if)i Fo(disconnect-hup)16 b Fq(is)23 b(in)g(ef)n(fect.)0
 (disconnection\))g(will)h(only)f(be)f(visible)j(to)d(the)g(service)h
 (and)g(dis-)0 1492 y(tinguishable)d(fr)n(om)g(normal)g(end)f(of)h
 (\002le)f(if)i Fo(disconnect-hup)16 b Fq(is)23 b(in)g(ef)n(fect.)0
@@ -981,13 +987,13 @@ h(the)g(client)h(by)f(the)g(caller)i(using)e(-D)p Fn(name)p
 Fq(.)0 5276 y Fo(HOME)p Fq(,)h Fo(PATH)p Fq(,)f Fo(SHELL)p
 Fq(,)g Fo(LOGNAME)g Fq(and)j Fo(USER)d Fq(will)k(be)f(set)e(appr)n
 (opriately)h(\(accor)n(ding)i(to)e(the)g(details)g(of)0
 Fq(.)0 5276 y Fo(HOME)p Fq(,)h Fo(PATH)p Fq(,)f Fo(SHELL)p
 Fq(,)g Fo(LOGNAME)g Fq(and)j Fo(USER)d Fq(will)k(be)f(set)e(appr)n
 (opriately)h(\(accor)n(ding)i(to)e(the)g(details)g(of)0
-5389 y(the)e(service)g(user\).)p Black Black eop
+5389 y(the)e(service)g(user\).)p Black Black eop end
 %%Page: 11 15
 %%Page: 11 15
-11 14 bop Black 0 TeXcolorgray Black 3675 91 a Fq(11)p
-0 128 3766 4 v Black 0 1152 a Fk(Chapter)44 b(4)0 1621
-y Fm(Service-side)52 b(con\002guration)0 2134 y Fq(Which)20
-b(services)f(may)g(be)h(r)o(un)f(by)g(whom)g(and)g(under)g(what)g
-(conditions)f(is)i(contr)n(olled)e(by)i(con\002guration)0
+TeXDict begin 11 14 bop Black 0 TeXcolorgray Black 3675
+91 a Fq(11)p 0 128 3766 4 v Black 0 1152 a Fk(Chapter)44
+b(4)0 1621 y Fm(Service-side)52 b(con\002guration)0 2134
+y Fq(Which)20 b(services)f(may)g(be)h(r)o(un)f(by)g(whom)g(and)g(under)
+g(what)g(conditions)f(is)i(contr)n(olled)e(by)i(con\002guration)0
 2247 y(\002les.)0 2414 y(The)25 b(daemon)g(will)i(r)n(ead)f(these)e
 (\002les)h(in)i(or)n(der)-7 b(.)36 b(Certain)26 b(dir)n(ectives)g(in)g
 (the)f(\002les)g(modify)h(the)f(daemon's)0 2527 y(execution)f(settings)
 2247 y(\002les.)0 2414 y(The)25 b(daemon)g(will)i(r)n(ead)f(these)e
 (\002les)h(in)i(or)n(der)-7 b(.)36 b(Certain)26 b(dir)n(ectives)g(in)g
 (the)f(\002les)g(modify)h(the)f(daemon's)0 2527 y(execution)f(settings)
@@ -1033,87 +1039,87 @@ Fn(XX)p Black 0 5450 a Fh(\\)p Fd(punctuation)p Black
 Fq(,)g Fo(\\\223)p Fq(\))p Black 0 5563 a Fh(\\)p Fd(newline)d
 Fl(\(ie,)24 b(backslash)g(at)f(end)f(of)h(line\))p Black
 46 w Fq(string)f(continues)f(on)i(next)e(line)p Black
 Fq(,)g Fo(\\\223)p Fq(\))p Black 0 5563 a Fh(\\)p Fd(newline)d
 Fl(\(ie,)24 b(backslash)g(at)f(end)f(of)h(line\))p Black
 46 w Fq(string)f(continues)f(on)i(next)e(line)p Black
-Black eop
+Black eop end
 %%Page: 12 16
 %%Page: 12 16
-12 15 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(12)p 0 128
-3766 4 v Black 0 476 a(Relative)18 b(pathnames)g(in)g(dir)n(ectives)g
-(ar)n(e)h(r)n(elative)g(to)e(the)g(service)h(pr)n(ogram's)g(curr)n(ent)
-g(dir)n(ectory)f(\(usually)0 589 y(the)k(service)g(user)7
+TeXDict begin 12 15 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(12)p 0 128 3766 4 v Black 0 476 a(Relative)18 b(pathnames)g(in)g(dir)
+n(ectives)g(ar)n(e)h(r)n(elative)g(to)e(the)g(service)h(pr)n(ogram's)g
+(curr)n(ent)g(dir)n(ectory)f(\(usually)0 589 y(the)k(service)g(user)7
 b('s)21 b(home)g(dir)n(ectory\).)26 b(Pathnames)c(starting)f(with)g
 (the)g(two)g(characters)h Fo(~/)f Fq(ar)n(e)h(taken)f(to)0
 702 y(be)i(r)n(elative)g(to)f(the)g(service)g(user)7
 b('s)21 b(home)g(dir)n(ectory\).)26 b(Pathnames)c(starting)f(with)g
 (the)g(two)g(characters)h Fo(~/)f Fq(ar)n(e)h(taken)f(to)0
 702 y(be)i(r)n(elative)g(to)f(the)g(service)g(user)7
-b('s)21 b(home)h(dir)n(ectory)-10 b(.)0 1074 y Fp(4.2)119
-b(Con\002guration)31 b(\002le)e(directives)0 1351 y Fb(4.2.1)99
-b(Immediate)23 b(directives)0 1591 y Fq(The)f(following)h(dir)n
+b('s)21 b(home)h(dir)n(ectory)-10 b(.)0 1058 y Fp(4.2)119
+b(Con\002guration)31 b(\002le)e(directives)0 1330 y Fb(4.2.1)99
+b(Immediate)23 b(directives)0 1563 y Fq(The)f(following)h(dir)n
 (ectives)f(take)g(ef)n(fect)h(immediately:)p Black 0
 (ectives)f(take)g(ef)n(fect)h(immediately:)p Black 0
-1874 a Fh(cd)54 b Fd(pathname)p Black 42 w Fq(Change)22
+1834 a Fh(cd)54 b Fd(pathname)p Black 42 w Fq(Change)22
 b(dir)n(ectory)g(in)h(the)f(service)h(pr)n(ogram.)k Fo(cd)22
 b Fq(is)h(cumulative.)29 b(It)22 b(is)h(an)g(err)n(or)f(if)i(the)227
 b(dir)n(ectory)g(in)h(the)f(service)h(pr)n(ogram.)k Fo(cd)22
 b Fq(is)h(cumulative.)29 b(It)22 b(is)h(an)g(err)n(or)f(if)i(the)227
-1987 y(dir)n(ectory)e(cannot)h(be)f(changed)g(to.)227
-2143 y Fo(cd)j Fq(should)g(not)g(be)g(used)f(between)g
+1947 y(dir)n(ectory)e(cannot)h(be)f(changed)g(to.)227
+2097 y Fo(cd)j Fq(should)g(not)g(be)g(used)f(between)g
 Fo(execute-from-dir)o(ec)o(to)o(ry)19 b Fq(and)26 b(the)f(invocation)h
 Fo(execute-from-dir)o(ec)o(to)o(ry)19 b Fq(and)26 b(the)f(invocation)h
-(of)g(the)227 2255 y(service)32 b(pr)n(ogram,)h(as)f(the)f(test)f(for)i
+(of)g(the)227 2210 y(service)32 b(pr)n(ogram,)h(as)f(the)f(test)f(for)i
 (the)f(availability)k(of)d(the)f(service)g(pr)n(ogram)h(would)f(be)g
 (the)f(availability)k(of)d(the)f(service)g(pr)n(ogram)h(would)f(be)g
-(done)227 2368 y(with)c(the)e(old)h(curr)n(ent)g(dir)n(ectory)g(and)g
+(done)227 2323 y(with)c(the)e(old)h(curr)n(ent)g(dir)n(ectory)g(and)g
 (the)g(actual)h(execution)f(with)g(the)g(new)g(\(pr)n(obably)h(causing)
 (the)g(actual)h(execution)f(with)g(the)g(new)g(\(pr)n(obably)h(causing)
-227 2481 y(an)c(err)n(or\).)p Black 0 2680 a Fh(eof)p
+227 2436 y(an)c(err)n(or\).)p Black 0 2625 a Fh(eof)p
 Black 44 w Fq(Stop)17 b(r)n(eading)g(the)g(con\002guration)g(\002le)h
 (in)h(question,)e(as)h(if)g(end)f(of)h(\002le)g(had)g(been)f(r)n
 Black 44 w Fq(Stop)17 b(r)n(eading)g(the)g(con\002guration)g(\002le)h
 (in)h(question,)e(as)h(if)g(end)f(of)h(\002le)g(had)g(been)f(r)n
-(eached.)26 b(Any)17 b(con-)227 2792 y(tr)n(ol)27 b(constr)o(ucts)f(\()
+(eached.)26 b(Any)17 b(con-)227 2738 y(tr)n(ol)27 b(constr)o(ucts)f(\()
 p Fo(if)p Fq(,)h Fo(catch-quit)22 b Fq(or)27 b Fo(errors-push)p
 Fq(\))22 b(which)28 b(wer)n(e)e(started)f(in)i(that)g(\002le)g(will)227
 p Fo(if)p Fq(,)h Fo(catch-quit)22 b Fq(or)27 b Fo(errors-push)p
 Fq(\))22 b(which)28 b(wer)n(e)e(started)f(in)i(that)g(\002le)g(will)227
-2905 y(be)d(consider)n(ed)d(\002nished.)29 b(Parsing)23
+2851 y(be)d(consider)n(ed)d(\002nished.)29 b(Parsing)23
 b(will)i(continue)e(in)g(the)g(\002le)g(which)h(caused)f(the)f(\002le)i
 b(will)i(continue)e(in)g(the)g(\002le)g(which)h(caused)f(the)f(\002le)i
-(containing)227 3018 y(the)e Fo(eof)f Fq(to)h(be)h(r)n(ead.)p
-Black 0 3217 a Fh(quit)p Black 44 w Fq(Stop)30 b(r)n(eading)h
+(containing)227 2964 y(the)e Fo(eof)f Fq(to)h(be)h(r)n(ead.)p
+Black 0 3152 a Fh(quit)p Black 44 w Fq(Stop)30 b(r)n(eading)h
 (con\002guration)f(\002les)h(and)g(act)h(immediately)g(on)f(the)f(curr)
 (con\002guration)f(\002les)h(and)g(act)h(immediately)g(on)f(the)f(curr)
-n(ent)h(settings.)51 b(The)31 b(be-)227 3330 y(haviour)24
+n(ent)h(settings.)51 b(The)31 b(be-)227 3265 y(haviour)24
 b(of)e Fo(quit)f Fq(is)i(subject)f(to)g(the)g Fo(catch-quit)c
 b(of)e Fo(quit)f Fq(is)i(subject)f(to)g(the)g Fo(catch-quit)c
-Fq(contr)n(ol)23 b(constr)o(uct.)p Black 0 3528 a Fh(include)51
-b Fd(filename)p Black Black 0 3726 a Fh(include-ifexist)d
+Fq(contr)n(ol)23 b(constr)o(uct.)p Black 0 3454 a Fh(include)51
+b Fd(filename)p Black Black 0 3642 a Fh(include-ifexist)d
 Fd(filename)p Black 42 w Fq(Read)29 b(the)g(con\002guration)h(\002le)g
 Fn(\002lename)p Fq(,)i(and)e(then)f(r)n(eturn)g(to)g(this)227
 Fd(filename)p Black 42 w Fq(Read)29 b(the)g(con\002guration)h(\002le)g
 Fn(\002lename)p Fq(,)i(and)e(then)f(r)n(eturn)g(to)g(this)227
-3839 y(\002le)34 b(and)f(continue)g(parsing)g(it)g(with)h(the)e(next)h
+3755 y(\002le)34 b(and)f(continue)g(parsing)g(it)g(with)h(the)e(next)h
 (dir)n(ective.)60 b(It)33 b(is)g(an)h(err)n(or)f(if)h(the)e(\002le)i
 (dir)n(ective.)60 b(It)33 b(is)g(an)h(err)n(or)f(if)h(the)e(\002le)i
-(cannot)f(be)227 3952 y(opened)19 b(and)i(r)n(ead,)g(unless)e
+(cannot)f(be)227 3868 y(opened)19 b(and)i(r)n(ead,)g(unless)e
 Fo(include-ifexist)14 b Fq(is)21 b(used)e(and)i(the)f(\002le)h(does)e
 Fo(include-ifexist)14 b Fq(is)21 b(used)e(and)i(the)f(\002le)h(does)e
-(not)h(exist,)g(in)h(which)227 4065 y(case)i(the)f(dir)n(ective)h(is)f
-(silently)h(ignor)n(ed.)p Black 0 4263 a Fh(include-lookup)48
-b Fd(parameter)56 b(directory)p Black Black 0 4461 a
+(not)h(exist,)g(in)h(which)227 3981 y(case)i(the)f(dir)n(ective)h(is)f
+(silently)h(ignor)n(ed.)p Black 0 4170 a Fh(include-lookup)48
+b Fd(parameter)56 b(directory)p Black Black 0 4358 a
 Fh(include-lookup-)o(al)o(l)48 b Fd(parameter)56 b(directory)p
 Fh(include-lookup-)o(al)o(l)48 b Fd(parameter)56 b(directory)p
-Black 50 w Fq(Read)16 b(the)h(con\002guration)f(\002le)h(in)h
-Fn(dir)n(ectory)j Fq(whose)227 4574 y(name)31 b(is)g(the)e(value)j(of)e
-Fn(parameter)j Fq(\(see)d(the)g(description)f(of)h Fo(if)p
-Fq(,)i(`Contr)n(ol)f(str)o(uctur)n(e)e(dir)n(ectives')227
-4687 y(on)36 b(the)f(facing)j(page\).)68 b(If)36 b Fn(parameter)j
-Fq(has)d(several)g(values)g(they)f(will)i(be)g(tried)e(in)h(or)n(der;)
-42 b(with)227 4800 y Fo(include-lookup)11 b Fq(this)17
-b(sear)n(ch)g(will)i(stop)d(when)g(one)g(is)i(found,)f(but)g(with)g
-Fo(include-lookup-)o(al)o(l)227 4913 y Fq(the)22 b(sear)n(ch)h(will)h
-(continue)e(and)g(any)h(\002les)f(appr)n(opriate)g(to)g(other)g(values)
-h(will)h(be)e(r)n(ead)h(too.)227 5069 y(If)d(none)g(of)g(the)f
-(parameter)7 b('s)19 b(values)h(had)h(a)f(corr)n(esponding)e(\002le)j
-(then)e(the)g(\002le)h Fo(:default)d Fq(will)k(be)227
-5182 y(r)n(ead,)27 b(if)g(it)g(exists.)37 b(If)26 b Fn(parameter)p
-Fq('s)j(list)e(of)f(values)h(was)f(empty)f(then)g(the)h(\002le)g
-Fo(:none)e Fq(will)k(be)e(tried)227 5294 y(\002rst)c(and)h(r)n(ead)f
-(if)i(it)f(exists,)e(otherwise)f Fo(:default)f Fq(will)24
-b(be)f(tried.)227 5450 y(It)e(is)h(not)f(an)h(err)n(or)f(for)h(any)g
-(of)g(the)e(\002les)i(\(including)g Fo(:default)p Fq(\))d(not)i(to)g
-(exist,)g(but)g(it)h(is)g(an)g(err)n(or)f(if)227 5563
-y(a)i(\002le)g(exists)f(and)g(cannot)h(be)f(r)n(ead)h(or)f(if)i(the)d
-(dir)n(ectory)h(cannot)h(be)f(accessed.)p Black Black
-eop
+Black 50 w Fq(Read)44 b(the)h(con\002guration)f(\002le)i(in)g
+Fn(dir)n(ectory)227 4471 y Fq(whose)41 b(name)h(is)h(the)e(value)i(of)f
+Fn(parameter)j Fq(\(see)c(the)h(description)e(of)j Fo(if)p
+Fq(,)j(`Contr)n(ol)c(str)o(uctur)n(e)227 4584 y(dir)n(ectives')48
+b(on)f(the)g(facing)h(page\).)102 b(If)48 b Fn(parameter)i
+Fq(has)d(several)h(values)f(they)g(will)h(be)g(tried)227
+4697 y(in)39 b(or)n(der;)46 b(with)39 b Fo(include-lookup)32
+b Fq(this)39 b(sear)n(ch)g(will)h(stop)d(when)h(one)g(is)h(found,)j
+(but)c(with)227 4810 y Fo(include-lookup-)o(all)19 b
+Fq(the)25 b(sear)n(ch)h(will)h(continue)e(and)h(any)g(\002les)f(appr)n
+(opriate)h(to)f(other)f(val-)227 4923 y(ues)e(will)i(be)e(r)n(ead)h
+(too.)227 5074 y(If)d(none)g(of)g(the)f(parameter)7 b('s)19
+b(values)h(had)h(a)f(corr)n(esponding)e(\002le)j(then)e(the)g(\002le)h
+Fo(:default)d Fq(will)k(be)227 5186 y(r)n(ead,)27 b(if)g(it)g(exists.)
+37 b(If)26 b Fn(parameter)p Fq('s)j(list)e(of)f(values)h(was)f(empty)f
+(then)g(the)h(\002le)g Fo(:none)e Fq(will)k(be)e(tried)227
+5299 y(\002rst)c(and)h(r)n(ead)f(if)i(it)f(exists,)e(otherwise)f
+Fo(:default)f Fq(will)24 b(be)f(tried.)227 5450 y(It)e(is)h(not)f(an)h
+(err)n(or)f(for)h(any)g(of)g(the)e(\002les)i(\(including)g
+Fo(:default)p Fq(\))d(not)i(to)g(exist,)g(but)g(it)h(is)g(an)g(err)n
+(or)f(if)227 5563 y(a)i(\002le)g(exists)f(and)g(cannot)h(be)f(r)n(ead)h
+(or)f(if)i(the)d(dir)n(ectory)h(cannot)h(be)f(accessed.)p
+Black Black eop end
 %%Page: 13 17
 %%Page: 13 17
-13 16 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(13)p 0 128
-3766 4 v Black 227 476 a(A)29 b(translation)h(will)g(be)f(applied)g(to)
-g(values)h(befor)n(e)f(they)f(ar)n(e)h(used)f(to)h(constr)o(uct)f(a)i
-(\002lename,)h(so)227 589 y(that)19 b(the)f(lookup)g(cannot)h(access)g
-(dot\002les)e(or)i(\002les)g(in)g(other)f(dir)n(ectories:)25
-b(values)19 b(starting)f(with)h(full)227 702 y(stops)25
-b(will)j(have)f(a)g(colon)f(pr)n(epended)e(\(making)j
+TeXDict begin 13 16 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(13)p 0 128 3766 4 v Black 227 476 a(A)29 b(translation)h(will)g(be)f
+(applied)g(to)g(values)h(befor)n(e)f(they)f(ar)n(e)h(used)f(to)h
+(constr)o(uct)f(a)i(\002lename,)h(so)227 589 y(that)19
+b(the)f(lookup)g(cannot)h(access)g(dot\002les)e(or)i(\002les)g(in)g
+(other)f(dir)n(ectories:)25 b(values)19 b(starting)f(with)h(full)227
+702 y(stops)25 b(will)j(have)f(a)g(colon)f(pr)n(epended)e(\(making)j
 Fo(:.)p Fq(\),)g(colons)f(will)i(be)e(doubled,)h(and)f(each)h(slash)227
 814 y(will)f(be)f(r)n(eplaced)g(with)f(a)i(colon)e(followed)h(by)f(a)i
 (hyphen)d Fo(:-)p Fq(.)33 b(A)25 b(parameter)f(value)i(which)f(is)g
 Fo(:.)p Fq(\),)g(colons)f(will)i(be)e(doubled,)h(and)f(each)h(slash)227
 814 y(will)f(be)f(r)n(eplaced)g(with)f(a)i(colon)e(followed)h(by)f(a)i
 (hyphen)d Fo(:-)p Fq(.)33 b(A)25 b(parameter)f(value)i(which)f(is)g
@@ -1187,16 +1193,16 @@ b(If)27 b(the)e(end)h(of)g(the)g(\002le)h(is)f(encoun-)0
 (str)o(uctur)n(e)f(which)i(was)f(started)e(inside)i(it)g(then)f(that)h
 (contr)n(ol)g(str)o(uc-)0 5563 y(tur)n(e)i(is)h(consider)n(ed)e
 (\002nished.)27 b(This)22 b(is)h(not)f(an)h(err)n(or)-7
 (str)o(uctur)n(e)f(which)i(was)f(started)e(inside)i(it)g(then)f(that)h
 (contr)n(ol)g(str)o(uc-)0 5563 y(tur)n(e)i(is)h(consider)n(ed)e
 (\002nished.)27 b(This)22 b(is)h(not)f(an)h(err)n(or)-7
-b(.)p Black Black eop
+b(.)p Black Black eop end
 %%Page: 14 18
 %%Page: 14 18
-14 17 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(14)p 0 128
-3766 4 v Black Black 0 476 a Fh(fi)p Black 45 w Fq(Lines)21
-b(following)i Fo(if)f Fq(ar)n(e)h(interpr)n(eted)d(only)j(if)g(the)f
-(condition)g(is)h(tr)o(ue.)k(Many)c(conditions)e(ar)n(e)i(pr)n(op-)227
-589 y(erties)30 b(of)h(parameter)g(values.)54 b(Most)30
-b(parameters)g(have)i(a)f(single)g(string)f(as)i(a)f(value;)36
-b(however)-7 b(,)227 702 y(some)25 b(may)g(yield)g(zer)n(o)g(or)g
+TeXDict begin 14 17 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(14)p 0 128 3766 4 v Black Black 0 476 a Fh(fi)p Black
+45 w Fq(Lines)21 b(following)i Fo(if)f Fq(ar)n(e)h(interpr)n(eted)d
+(only)j(if)g(the)f(condition)g(is)h(tr)o(ue.)k(Many)c(conditions)e(ar)n
+(e)i(pr)n(op-)227 589 y(erties)30 b(of)h(parameter)g(values.)54
+b(Most)30 b(parameters)g(have)i(a)f(single)g(string)f(as)i(a)f(value;)
+36 b(however)-7 b(,)227 702 y(some)25 b(may)g(yield)g(zer)n(o)g(or)g
 (several)g(strings,)f(in)i(which)f(case)g(the)g(condition)f(is)i(tr)o
 (ue)e(if)i(it)f(is)h(tr)o(ue)e(of)227 814 y(any)f(of)g(the)e(strings)h
 (individually)-10 b(.)29 b(Parameters)22 b(ar)n(e)h(described)e(below)
 (several)g(strings,)f(in)i(which)f(case)g(the)g(condition)f(is)i(tr)o
 (ue)e(if)i(it)f(is)h(tr)o(ue)e(of)227 814 y(any)f(of)g(the)e(strings)h
 (individually)-10 b(.)29 b(Parameters)22 b(ar)n(e)h(described)e(below)
@@ -1234,10 +1240,10 @@ i(evaluation.)227 3189 y(The)e(parameters)g(ar)n(e:)p
 Black 227 3302 a Fh(service)p Black 43 w Fq(The)f(service)i(name)g
 (speci\002ed)e(when)h(the)g(client)h(was)g(called.)p
 Black 227 3415 a Fh(calling-user)p Black 40 w Fq(T)-8
 Black 227 3302 a Fh(service)p Black 43 w Fq(The)f(service)i(name)g
 (speci\002ed)e(when)h(the)g(client)h(was)g(called.)p
 Black 227 3415 a Fh(calling-user)p Black 40 w Fq(T)-8
-b(wo)17 b(strings:)23 b(the)17 b(login)g(name)g(of)h(the)e(calling)j
-(user)d(\(determined)f(as)j(for)f Fo(USERV_USER)p Fq(,)427
-3527 y(above\))24 b(and)e(the)g(calling)i(uid)f(\(r)n(epr)n(esented)d
-(in)j(decimal\).)p Black 227 3640 a Fh(calling-group)p
+b(wo)40 b(strings:)63 b(the)39 b(login)i(name)g(of)g(the)f(calling)i
+(user)d(\(determined)g(as)i(for)427 3527 y Fo(USERV_USER)p
+Fq(,)18 b(above\))23 b(and)g(the)f(calling)i(uid)f(\(r)n(epr)n(esented)
+d(in)j(decimal\).)p Black 227 3640 a Fh(calling-group)p
 Black 40 w Fq(Several)37 b(strings:)55 b(the)36 b(primary)h(and)g
 (supplementary)e(gr)n(oup)h(names)h(and)427 3753 y(gids)29
 b(\(in)h(decimal\))g(of)f(the)g(calling)i(pr)n(ocess.)46
 Black 40 w Fq(Several)37 b(strings:)55 b(the)36 b(primary)h(and)g
 (supplementary)e(gr)n(oup)h(names)h(and)427 3753 y(gids)29
 b(\(in)h(decimal\))g(of)f(the)g(calling)i(pr)n(ocess.)46
@@ -1258,24 +1264,24 @@ b(strings:)55 b(the)36 b(primary)h(and)g(supplementary)e(gr)n(oup)h
 (service)g(user)-7 b(.)p Black 227 4769 a Fh(service-user-sh)o(ell)p
 Black 39 w Fq(The)21 b(service)i(user)7 b('s)21 b(shell,)h(as)h(listed)
 f(in)h(their)f(passwor)n(d)f(entry)-10 b(.)p Black 227
 (service)g(user)-7 b(.)p Black 227 4769 a Fh(service-user-sh)o(ell)p
 Black 39 w Fq(The)21 b(service)i(user)7 b('s)21 b(shell,)h(as)h(listed)
 f(in)h(their)f(passwor)n(d)f(entry)-10 b(.)p Black 227
-4882 a Fh(u-)p Fd(name)p Black 43 w Fq(The)17 b(value)h(of)f(the)f
-(user)n(-de\002ned)f(variable)k Fn(name)f Fq(passed)d(by)i(the)g
-(caller)h(using)f(the)f Fo(-defvar)427 4995 y Fq(command-line)25
-b(option)e(to)g(the)f(client.)32 b(If)23 b(the)g(variable)j(was)d(not)g
-(de\002ned)f(then)h(this)g(param-)427 5108 y(eter)f(is)i(an)g(empty)e
-(list)i(of)f(strings;)f(in)i(this)f(case)g(any)h(condition)f(which)h
-(tests)d(it)j(will)h(be)e(false,)427 5221 y(and)h Fo(include-lookup)17
-b Fq(on)24 b(it)g(will)h(r)n(ead)e(the)g Fo(:none)f Fq(\002le,)h(or)h
-Fo(:default)c Fq(if)k Fo(:none)e Fq(is)i(not)427 5334
-y(found.)p Black 0 5563 a Fh(errors-push)18 b Fc(\002lename)p
-Black Black Black eop
+4882 a Fh(u-)p Fd(name)p Black 43 w Fq(The)40 b(value)h(of)f(the)g
+(user)n(-de\002ned)e(variable)k Fn(name)f Fq(passed)e(by)h(the)f
+(caller)j(using)e(the)427 4995 y Fo(-defvar)27 b Fq(command-line)j
+(option)f(to)f(the)h(client.)49 b(If)29 b(the)g(variable)i(was)f(not)e
+(de\002ned)g(then)427 5108 y(this)h(parameter)g(is)h(an)g(empty)e(list)
+i(of)f(strings;)i(in)f(this)f(case)h(any)f(condition)g(which)h(tests)e
+(it)427 5221 y(will)e(be)f(false,)g(and)g Fo(include-lookup)18
+b Fq(on)24 b(it)h(will)h(r)n(ead)f(the)e Fo(:none)g Fq(\002le,)i(or)f
+Fo(:default)d Fq(if)427 5334 y Fo(:none)g Fq(is)h(not)g(found.)p
+Black 0 5563 a Fh(errors-push)c Fc(\002lename)p Black
+Black Black eop end
 %%Page: 15 19
 %%Page: 15 19
-15 18 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(15)p 0 128
-3766 4 v Black Black 0 476 a Fh(srorre)p Black 43 w Fq(Stacks)30
-b(the)h(err)n(or)f(handling)h(behaviour)h(curr)n(ently)f(in)g(ef)n
-(fect.)54 b(Any)30 b(changes)g(to)h(err)n(or)f(han-)227
-589 y(dling)23 b(will)h(take)e(ef)n(fect)g(only)h(between)e
+TeXDict begin 15 18 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(15)p 0 128 3766 4 v Black Black 0 476 a Fh(srorre)p
+Black 43 w Fq(Stacks)30 b(the)h(err)n(or)f(handling)h(behaviour)h(curr)
+n(ently)f(in)g(ef)n(fect.)54 b(Any)30 b(changes)g(to)h(err)n(or)f(han-)
+227 589 y(dling)23 b(will)h(take)e(ef)n(fect)g(only)h(between)e
 Fo(errors-push)c Fq(and)23 b Fo(srorre)p Fq(.)p Black
 0 791 a Fh(catch-quit)p Black Black 0 993 a(hctac)p Black
 43 w Fq(Any)35 b(use)f(of)h Fo(quit)e Fq(inside)i Fo(catch-quit)c
 Fo(errors-push)c Fq(and)23 b Fo(srorre)p Fq(.)p Black
 0 791 a Fh(catch-quit)p Black Black 0 993 a(hctac)p Black
 43 w Fq(Any)35 b(use)f(of)h Fo(quit)e Fq(inside)i Fo(catch-quit)c
@@ -1299,31 +1305,31 @@ Fq(,)e(that)j(new)f(err)n(or)g(will)i(not)e(be)g(caught.)0
 (act)g(on)f(it)h(only)f(after)h(all)h(the)d(con\002guration)h(has)h
 (been)f(parsed.)0 2541 y(The)22 b Fn(last)i Fq(dir)n(ective)f(which)g
 (modi\002es)f(any)g(particuar)i(setting)d(will)j(take)e(ef)n(fect.)p
 (act)g(on)f(it)h(only)f(after)h(all)h(the)d(con\002guration)h(has)h
 (been)f(parsed.)0 2541 y(The)22 b Fn(last)i Fq(dir)n(ective)f(which)g
 (modi\002es)f(any)g(particuar)i(setting)d(will)j(take)e(ef)n(fect.)p
-Black 0 2796 a Fh(reject)p Black 43 w Fq(Reject)16 b(the)g(r)n(equest.)
-25 b Fo(execute)p Fq(,)15 b Fo(execute-from-d)o(ir)o(ect)o(or)o(y)c
-Fq(and)17 b Fo(execute-from-pa)o(th)227 2909 y Fq(will)24
-b(change)f(this)f(setting.)p Black 0 3092 a Fh(execute)51
-b Fd(program)56 b Fh([)p Fd(argument)51 b Fh(...])p Black
-43 w Fq(Execute)17 b(the)g(pr)n(ogram)h Fn(pr)n(ogram)p
-Fq(,)k(with)c(the)g(ar)n(guments)f(as)227 3205 y(speci\002ed,)k
-(followed)h(by)h(any)f(ar)n(guments)g(given)g(to)g(the)g(client)h(if)g
-Fo(no-suppress-arg)o(s)16 b Fq(is)23 b(in)g(ef-)227 3318
-y(fect.)28 b(It)20 b(is)i(an)f(err)n(or)g(for)g(the)g(execution)f(to)h
-(fail)i(when)e(it)g(is)h(attempted)d(\(after)i(all)i(the)e
-(con\002guration)227 3431 y(has)g(been)g(parsed\).)26
+Black 0 2796 a Fh(reject)p Black 43 w Fq(Reject)136 b(the)h(r)n
+(equest.)371 b Fo(execute)p Fq(,)162 b Fo(execute-from-dir)o(ec)o(to)o
+(ry)131 b Fq(and)227 2909 y Fo(execute-from-pa)o(th)16
+b Fq(will)24 b(change)f(this)f(setting.)p Black 0 3092
+a Fh(execute)51 b Fd(program)56 b Fh([)p Fd(argument)51
+b Fh(...])p Black 43 w Fq(Execute)17 b(the)g(pr)n(ogram)h
+Fn(pr)n(ogram)p Fq(,)k(with)c(the)g(ar)n(guments)f(as)227
+3205 y(speci\002ed,)k(followed)h(by)h(any)f(ar)n(guments)g(given)g(to)g
+(the)g(client)h(if)g Fo(no-suppress-arg)o(s)16 b Fq(is)23
+b(in)g(ef-)227 3318 y(fect.)28 b(It)20 b(is)i(an)f(err)n(or)g(for)g
+(the)g(execution)f(to)h(fail)i(when)e(it)g(is)h(attempted)d(\(after)i
+(all)i(the)e(con\002guration)227 3431 y(has)g(been)g(parsed\).)26
 b(If)21 b Fn(pr)n(ogram)i Fq(does)d(not)g(contain)h(a)h(slash)f(it)g
 (will)h(be)f(sear)n(ched)g(for)f(on)h(the)f(service)227
 3544 y(user)7 b('s)21 b(path.)p Black 0 3728 a Fh(execute-from-di)o(re)
 o(ct)o(or)o(y)49 b Fd(pathname)i Fh([)p Fd(argument)f
 b(If)21 b Fn(pr)n(ogram)i Fq(does)d(not)g(contain)h(a)h(slash)f(it)g
 (will)h(be)f(sear)n(ched)g(for)f(on)h(the)f(service)227
 3544 y(user)7 b('s)21 b(path.)p Black 0 3728 a Fh(execute-from-di)o(re)
 o(ct)o(or)o(y)49 b Fd(pathname)i Fh([)p Fd(argument)f
-Fh(...])p Black 44 w Fq(T)-8 b(ake)16 b(all)j(the)d(characters)h(after)
-h(the)227 3841 y(last)24 b(slash)g(of)g(the)f(service)g(name)h
-(speci\002ed)e(when)h(the)g(client)i(was)e(called,)i(and)f(execute)e
-(that)h(pr)n(o-)227 3954 y(gram)i(in)f(the)f(dir)n(ectory)g(named)h(by)
-g Fn(pathname)i Fq(as)e(if)g(it)h(had)f(been)f(speci\002ed)g(for)h
-Fn(execute)p Fq(.)33 b(The)23 b(part)227 4066 y(of)k(the)f(service)h
+Fh(...])p Black 44 w Fq(T)-8 b(ake)51 b(all)i(the)d(characters)i(after)
+227 3841 y(the)26 b(last)h(slash)f(of)h(the)e(service)i(name)g
+(speci\002ed)e(when)h(the)f(client)i(was)g(called,)h(and)e(execute)f
+(that)227 3954 y(pr)n(ogram)i(in)h(the)e(dir)n(ectory)g(named)h(by)g
+Fn(pathname)h Fq(as)f(if)h(it)f(had)g(been)g(speci\002ed)e(for)i
+Fn(execute)p Fq(.)43 b(The)227 4066 y(part)28 b(of)g(the)f(service)h
 (name)g(used)f(may)h(contain)g(only)g(alphanumerics)h(and)f(hyphens)e
 (name)g(used)f(may)h(contain)g(only)g(alphanumerics)h(and)f(hyphens)e
-(and)h(must)h(start)227 4179 y(with)c(an)g(alphanumeric)h(\(and)f(it)g
-(must)f(be)g(non-empty\),)f(otherwise)g(it)i(is)f(an)i(err)n(or)-7
+(and)i(must)227 4179 y(start)22 b(with)h(an)g(alphanumeric)h(\(and)f
+(it)f(must)g(be)h(non-empty\),)e(otherwise)g(it)i(is)f(an)h(err)n(or)-7
 b(.)227 4328 y(This)23 b(dir)n(ective)g(is)f(ignor)n(ed)g(if)i(the)e(r)
 n(elevant)g(pr)n(ogram)h(does)e(not)h(exist)g(in)h(the)f(dir)n(ectory)g
 (speci\002ed;)227 4441 y(in)h(this)f(case)g(the)f(pr)n(ogram)h(to)f
 b(.)227 4328 y(This)23 b(dir)n(ective)g(is)f(ignor)n(ed)g(if)i(the)e(r)
 n(elevant)g(pr)n(ogram)h(does)e(not)h(exist)g(in)h(the)f(dir)n(ectory)g
 (speci\002ed;)227 4441 y(in)h(this)f(case)g(the)f(pr)n(ogram)h(to)f
@@ -1345,25 +1351,25 @@ b(to)g(make)h(the)f Fo(-override)d Fq(options)i(ef)n(fective.)28
 b(It)21 b(should)g(not)g(normally)h(be)g(used.)k(It)21
 b(is)227 5450 y(an)h(err)n(or)e(for)h(the)f(execution)f(to)i(fail)h
 (when)e(it)h(is)g(attempted)e(\(after)i(all)i(the)d(con\002guration)g
 b(It)21 b(should)g(not)g(normally)h(be)g(used.)k(It)21
 b(is)227 5450 y(an)h(err)n(or)e(for)h(the)f(execution)f(to)i(fail)h
 (when)e(it)h(is)g(attempted)e(\(after)i(all)i(the)d(con\002guration)g
-(has)h(been)227 5563 y(parsed\).)p Black Black eop
+(has)h(been)227 5563 y(parsed\).)p Black Black eop end
 %%Page: 16 20
 %%Page: 16 20
-16 19 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(16)p 0 128
-3766 4 v Black Black 0 476 a Fh(execute-builtin)48 b
-Fd(service-name)h(service-argumen)o(ts)p Black 40 w Fq(Executes)15
-b(the)h(builtin)i(service)f Fn(service-)227 589 y(name)p
-Fq(.)57 b(These)30 b(builtin)j(services)f(display)g(information)g
-(about)h(the)e(server)g(and/or)h(the)f(r)n(equest,)227
-702 y(and)25 b(ignor)n(e)f(any)g(ar)n(guments)g(passed)f(fr)n(om)i(the)
-f(service)g(side)g(except)f(possibly)h(to)g(print)g(them)g(as)227
-814 y(part)h(of)h(their)f(output.)34 b(They)24 b(write)h(their)g(r)n
-(esults)f(to)h(their)g(standar)n(d)f(output)g(\(i.e.,)i(wher)n(ever)e
-(\002le)227 927 y(descriptor)d(1)i(is)g(dir)n(ected\).)k(The)22
-b(builtin)i(services)e(ar)n(e:)p Black 227 1040 a Fh(execute)p
-Black 43 w Fq(Displays)f(the)f(execution)h(settings,)e(de\002ned)g
-(variables,)k(ar)n(guments,)d(etc.)27 b(with)21 b(which)427
-1153 y(the)h(builtin)i(service)e(was)h(invoked.)p Black
-227 1266 a Fh(environment)p Black 41 w Fq(Displays)17
+TeXDict begin 16 19 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(16)p 0 128 3766 4 v Black Black 0 476 a Fh(execute-builtin)48
+b Fd(service-name)h(service-argumen)o(ts)p Black 40 w
+Fq(Executes)59 b(the)i(builtin)h(service)227 589 y Fn(service-name)p
+Fq(.)43 b(These)25 b(builtin)j(services)e(display)h(information)g
+(about)g(the)f(server)f(and/or)i(the)f(r)n(e-)227 702
+y(quest,)31 b(and)f(ignor)n(e)f(any)i(ar)n(guments)e(passed)f(fr)n(om)j
+(the)e(service)h(side)g(except)f(possibly)g(to)g(print)227
+814 y(them)22 b(as)h(part)f(of)h(their)f(output.)k(They)c(write)g
+(their)g(r)n(esults)g(to)g(their)g(standar)n(d)g(output)f(\(i.e.,)h
+(wher)n(-)227 927 y(ever)g(\002le)h(descriptor)e(1)i(is)g(dir)n
+(ected\).)k(The)22 b(builtin)i(services)e(ar)n(e:)p Black
+227 1040 a Fh(execute)p Black 43 w Fq(Displays)f(the)f(execution)h
+(settings,)e(de\002ned)g(variables,)k(ar)n(guments,)d(etc.)27
+b(with)21 b(which)427 1153 y(the)h(builtin)i(service)e(was)h(invoked.)p
+Black 227 1266 a Fh(environment)p Black 41 w Fq(Displays)17
 b(the)g(envir)n(onment)g(variable)i(settings)d(with)h(which)h(the)f
 (builtin)h(service)427 1379 y(was)23 b(invoked.)p Black
 227 1492 a Fh(parameter)51 b Fd(parameter)p Black 46
 b(the)g(envir)n(onment)g(variable)i(settings)d(with)h(which)h(the)f
 (builtin)h(service)427 1379 y(was)23 b(invoked.)p Black
 227 1492 a Fh(parameter)51 b Fd(parameter)p Black 46
@@ -1388,41 +1394,41 @@ Black 227 2621 a Fh(help)p Black 44 w Fq(Displays)g(a)g(list)g(of)f
 (the)g(understood)e(builtin)j(service)g(names)f(and)h(ar)n(guments.)227
 2734 y(In)j(the)g(futur)n(e)g(other)f(builtin)j(services)e(may)h(be)f
 (de\002ned)f(which)i(do)e(mor)n(e)i(than)f(just)g(print)g(infor)n(-)227
 (the)g(understood)e(builtin)j(service)g(names)f(and)h(ar)n(guments.)227
 2734 y(In)j(the)g(futur)n(e)g(other)f(builtin)j(services)e(may)h(be)f
 (de\002ned)f(which)i(do)e(mor)n(e)i(than)f(just)g(print)g(infor)n(-)227
-2847 y(mation.)p Black 0 3057 a Fh(set-environment)p
-Black Black 0 3268 a(no-set-environm)o(en)o(t)p Black
+2847 y(mation.)p Black 0 3049 a Fh(set-environment)p
+Black Black 0 3252 a(no-set-environm)o(en)o(t)p Black
 39 w Fq(Runs)39 b Fo(/etc/environmen)o(t)34 b Fq(to)39
 b(set)f(the)h(service)h(user)7 b('s)38 b(envir)n(onment.)227
 39 w Fq(Runs)39 b Fo(/etc/environmen)o(t)34 b Fq(to)39
 b(set)f(the)h(service)h(user)7 b('s)38 b(envir)n(onment.)227
-3381 y(This)33 b(adds)g(the)f(over)n(head)h(of)g(invoking)g(a)h(shell,)
+3365 y(This)33 b(adds)g(the)f(over)n(head)h(of)g(invoking)g(a)h(shell,)
 i(but)d(doesn't)e(cause)i(any)h(shell)f(\(de\)mangling)227
 i(but)d(doesn't)e(cause)i(any)h(shell)f(\(de\)mangling)227
-3493 y(of)23 b(the)f(service's)g(ar)n(guments.)27 b(This)22
-b(is)h(achieved)g(by)f(invoking)p Black Black 500 3768
-a Fo(.../program)50 b(arg)j(arg)g(arg)g(...)227 4043
-y Fq(as)p Black Black 500 4318 a Fo(/bin/sh)e(-c)j('.)g(/etc/environme)
+3478 y(of)23 b(the)f(service's)g(ar)n(guments.)27 b(This)22
+b(is)h(achieved)g(by)f(invoking)p Black Black 500 3734
+a Fo(.../program)50 b(arg)j(arg)g(arg)g(...)227 3991
+y Fq(as)p Black Black 500 4247 a Fo(/bin/sh)e(-c)j('.)g(/etc/environme)
 o(nt)o(;)48 b(exec)53 b("$@"')f(-)j(.../program)49 b(arg)k(arg)g(arg)h
 o(nt)o(;)48 b(exec)53 b("$@"')f(-)j(.../program)49 b(arg)k(arg)g(arg)h
-(...)227 4593 y(no-set-environm)o(ent)16 b Fq(cancels)23
+(...)227 4503 y(no-set-environm)o(ent)16 b Fq(cancels)23
 b(the)f(ef)n(fect)h(of)f Fo(set-environment)p Fq(.)p
 b(the)f(ef)n(fect)h(of)f Fo(set-environment)p Fq(.)p
-Black 0 4803 a Fh(no-suppress-arg)o(s)p Black Black 0
-5014 a(suppress-args)p Black 40 w Fq(Include)i(any)h(ar)n(guments)e
-(given)i(to)f(the)g(client)i(as)f(ar)n(guments)e(to)i(the)f(pr)n(ogram)
-g(in-)227 5127 y(voked)16 b(as)h(a)h(r)n(esult)f(of)g(an)h
-Fo(execute)p Fq(,)c Fo(execute-from-dir)o(ec)o(to)o(ry)d
-Fq(or)17 b Fo(execute-from-p)o(at)o(h)227 5240 y Fq(dir)n(ective.)28
-b Fo(suppress-args)17 b Fq(undoes)k(the)h(ef)n(fect)g(of)h
-Fo(no-suppress-arg)o(s)p Fq(.)p Black 0 5450 a Fh(require-fd)50
-b Fd(fd-range)h Fh(read|write)p Black 41 w Fq(Insist)32
-b(that)g(the)g(\002ledescriptor\(s\))g(be)g(opened)f(for)i(r)n(ead-)227
-5563 y(ing)d(r)n(esp.)48 b(writing.)h(It)29 b(is)h(an)g(err)n(or)f(if)i
-(any)e(descriptor)f(marked)h(as)h(r)n(equir)n(ed)f(when)g(the)g
-(service)p Black Black eop
+Black 0 4706 a Fh(no-suppress-arg)o(s)p Black Black 0
+4909 a(suppress-args)p Black 40 w Fq(Include)75 b(any)h(ar)n(guments)f
+(given)g(to)g(the)g(client)i(as)f(ar)n(guments)f(to)g(the)227
+5022 y(pr)n(ogram)88 b(invoked)f(as)g(a)i(r)n(esult)e(of)g(an)h
+Fo(execute)p Fq(,)101 b Fo(execute-from-di)o(re)o(ct)o(or)o(y)227
+5135 y Fq(or)85 b Fo(execute-from-pa)o(th)78 b Fq(dir)n(ective.)215
+b Fo(suppress-args)80 b Fq(undoes)j(the)h(ef)n(fect)h(of)227
+5247 y Fo(no-suppress-arg)o(s)p Fq(.)p Black 0 5450 a
+Fh(require-fd)50 b Fd(fd-range)h Fh(read|write)p Black
+41 w Fq(Insist)32 b(that)g(the)g(\002ledescriptor\(s\))g(be)g(opened)f
+(for)i(r)n(ead-)227 5563 y(ing)d(r)n(esp.)48 b(writing.)h(It)29
+b(is)h(an)g(err)n(or)f(if)i(any)e(descriptor)f(marked)h(as)h(r)n(equir)
+n(ed)f(when)g(the)g(service)p Black Black eop end
 %%Page: 17 21
 %%Page: 17 21
-17 20 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(17)p 0 128
-3766 4 v Black 227 476 a(is)25 b(about)g(to)f(be)h(invoked)f(\(after)h
-(the)g(con\002guration)f(has)h(been)f(parsed\))g(was)h(not)f
-(speci\002ed)g(when)227 589 y(the)31 b(client)g(was)g(invoked.)52
-b(Each)32 b(\002le)f(descriptor)e(has)i(a)h(separate)e(setting,)h(and)g
-(the)g(last)g(one)f(of)227 702 y Fo(require-fd)p Fq(,)c
-Fo(allow-fd)p Fq(,)g Fo(ignore-fd)p Fq(,)g Fo(null-fd)g
+TeXDict begin 17 20 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(17)p 0 128 3766 4 v Black 227 476 a(is)25 b(about)g(to)f(be)h
+(invoked)f(\(after)h(the)g(con\002guration)f(has)h(been)f(parsed\))g
+(was)h(not)f(speci\002ed)g(when)227 589 y(the)31 b(client)g(was)g
+(invoked.)52 b(Each)32 b(\002le)f(descriptor)e(has)i(a)h(separate)e
+(setting,)h(and)g(the)g(last)g(one)f(of)227 702 y Fo(require-fd)p
+Fq(,)c Fo(allow-fd)p Fq(,)g Fo(ignore-fd)p Fq(,)g Fo(null-fd)g
 Fq(or)i Fo(reject-fd)d Fq(which)k(af)n(fected)g(a)g(par)n(-)227
 814 y(ticular)24 b(\002le)f(descriptor)e(will)j(take)e(ef)n(fect.)227
 985 y Fn(fd-range)32 b Fq(may)d(be)g(a)h(single)f(number)-7
 Fq(or)i Fo(reject-fd)d Fq(which)k(af)n(fected)g(a)g(par)n(-)227
 814 y(ticular)24 b(\002le)f(descriptor)e(will)j(take)e(ef)n(fect.)227
 985 y Fn(fd-range)32 b Fq(may)d(be)g(a)h(single)f(number)-7
@@ -1444,23 +1450,23 @@ i(this)227 1834 y(is)j(so)e(that)i(the)e(err)n(or)h(message)f(printed)g
 (by)h(the)g(server)7 b('s)29 b(child)i(pr)n(ocess)e(if)i(it)g(cannot)f
 Fo(exec)f Fq(the)227 1947 y(service)23 b(pr)n(ogram)f(is)h(not)f(lost.)
 p Black 0 2158 a Fh(allow-fd)51 b Fd(fd-range)g Fh([read|write])p
 (by)h(the)g(server)7 b('s)29 b(child)i(pr)n(ocess)e(if)i(it)g(cannot)f
 Fo(exec)f Fq(the)227 1947 y(service)23 b(pr)n(ogram)f(is)h(not)f(lost.)
 p Black 0 2158 a Fh(allow-fd)51 b Fd(fd-range)g Fh([read|write])p
-Black 40 w Fq(Allow)18 b(the)e(descriptor\(s\))f(to)i(be)g(opened)e
-(for)i(r)n(eading)g(r)n(esp.)227 2271 y(writing,)31 b(or)f(either)f(if)
-h(neither)f Fo(read)f Fq(nor)i Fo(write)d Fq(is)j(speci\002ed.)48
-b(If)30 b(a)h(particular)g(descriptor)d(not)227 2384
-y(speci\002ed)34 b(by)g(the)g(client)h(then)f(it)h(will)h(be)f(open)e
-(onto)h Fo(/dev/null)d Fq(\(for)k(r)n(eading,)i(writing,)g(or)227
-2496 y(both,)22 b(depending)f(on)h(whether)f Fo(read)p
-Fq(,)f Fo(write)h Fq(or)h(neither)g(was)g(speci\002ed\).)p
+Black 40 w Fq(Allow)43 b(the)g(descriptor\(s\))e(to)h(be)h(opened)e
+(for)i(r)n(eading)227 2271 y(r)n(esp.)49 b(writing,)32
+b(or)d(either)h(if)g(neither)f Fo(read)g Fq(nor)g Fo(write)f
+Fq(is)i(speci\002ed.)49 b(If)30 b(a)g(particular)i(descrip-)227
+2384 y(tor)22 b(not)f(speci\002ed)g(by)h(the)f(client)h(then)f(it)i
+(will)g(be)f(open)f(onto)g Fo(/dev/null)d Fq(\(for)k(r)n(eading,)f
+(writing,)227 2496 y(or)i(both,)e(depending)g(on)h(whether)f
+Fo(read)p Fq(,)g Fo(write)f Fq(or)i(neither)g(was)h(speci\002ed\).)p
 Black 0 2707 a Fh(null-fd)51 b Fd(fd-range)h Fh([read|write])p
 Black 0 2707 a Fh(null-fd)51 b Fd(fd-range)h Fh([read|write])p
-Black 40 w Fq(Specify)16 b(that)h(the)g(descriptor\(s\))e(be)i(opened)e
-(onto)i Fo(/dev/null)227 2820 y Fq(for)25 b(r)n(eading)f(r)n(esp.)34
-b(writing,)24 b(or)h(both)f(if)h(neither)f Fo(read)f
-Fq(nor)h Fo(write)f Fq(is)i(speci\002ed.)32 b(Any)24
-b(speci\002ca-)227 2933 y(tion)29 b(of)g(these)f(\002le)h(descriptors)e
-(by)i(the)g(client)g(will)i(be)e(silently)g(ignor)n(ed;)i(the)d(client)
-i(will)g(see)e(its)227 3046 y(ends)22 b(of)g(the)g(descriptors)e(being)
-j(closed)f(immediately)-10 b(.)p Black 0 3257 a Fh(reject-fd)50
+Black 40 w Fq(Specify)79 b(that)g(the)f(descriptor\(s\))g(be)h(opened)e
+(onto)227 2820 y Fo(/dev/null)27 b Fq(for)k(r)n(eading)f(r)n(esp.)52
+b(writing,)32 b(or)e(both)h(if)g(neither)f Fo(read)f
+Fq(nor)h Fo(write)f Fq(is)i(speci\002ed.)227 2933 y(Any)23
+b(speci\002cation)g(of)h(these)d(\002le)j(descriptors)d(by)i(the)g
+(client)h(will)g(be)g(silently)f(ignor)n(ed;)f(the)h(client)227
+3046 y(will)h(see)e(its)g(ends)f(of)i(the)f(descriptors)e(being)j
+(closed)e(immediately)-10 b(.)p Black 0 3257 a Fh(reject-fd)50
 b Fd(fd-range)p Black 43 w Fq(Do)29 b(not)g(allow)h(the)f
 (descriptor\(s\))f(to)h(be)g(speci\002ed)f(by)i(the)e(client.)49
 b(It)29 b(is)h(an)227 3370 y(err)n(or)c(if)h(any)f(descriptor\(s\))f
 b Fd(fd-range)p Black 43 w Fq(Do)29 b(not)g(allow)h(the)f
 (descriptor\(s\))f(to)h(be)g(speci\002ed)f(by)i(the)e(client.)49
 b(It)29 b(is)h(an)227 3370 y(err)n(or)c(if)h(any)f(descriptor\(s\))f
@@ -1473,108 +1479,108 @@ b(ignor)n(e)h(any)g(speci\002cation)g(by)g(the)f(client)i(of)f(those)e
 (these)e(descriptors)g(will)k(be)e(closed)f(just)h(befor)n(e)g(the)f
 (service)h(is)g(in-)227 3919 y(voked.)p Black 0 4130
 a Fh(disconnect-hup)p Black Black 0 4341 a(no-disconnect-h)o(up)p
 (these)e(descriptors)g(will)k(be)e(closed)f(just)h(befor)n(e)g(the)f
 (service)h(is)g(in-)227 3919 y(voked.)p Black 0 4130
 a Fh(disconnect-hup)p Black Black 0 4341 a(no-disconnect-h)o(up)p
-Black 39 w Fq(Causes)18 b(the)f(service's)i(pr)n(ocess)e(gr)n(oup)g(to)
-h(get)f(a)i Fo(SIGHUP)d Fq(if)k(the)d(client)i(discon-)227
-4454 y(nects)e(befor)n(e)f(the)h(main)h(service)f(pr)n(ocess)f
-(terminates.)25 b Fo(no-disconnect-h)o(up)10 b Fq(cancels)18
-b Fo(disconnect-hup)p Fq(.)227 4625 y(If)28 b(one)f(of)h(the)f(r)n
+Black 39 w Fq(Causes)k(the)f(service's)h(pr)n(ocess)f(gr)n(oup)h(to)f
+(get)h(a)h Fo(SIGHUP)c Fq(if)32 b(the)d(client)i(dis-)227
+4454 y(connects)40 b(befor)n(e)g(the)f(main)j(service)e(pr)n(ocess)f
+(terminates.)81 b Fo(no-disconnect-)o(hu)o(p)34 b Fq(cancels)227
+4567 y Fo(disconnect-hup)p Fq(.)227 4738 y(If)28 b(one)f(of)h(the)f(r)n
 (eading)h(descriptors)e(speci\002ed)h(when)g(the)g(client)h(is)g
 (called)h(gets)d(a)j(r)n(ead)f(err)n(or)-7 b(,)28 b(or)227
 (eading)h(descriptors)e(speci\002ed)h(when)g(the)g(client)h(is)g
 (called)h(gets)d(a)j(r)n(ead)f(err)n(or)-7 b(,)28 b(or)227
-4738 y(if)h(the)e(service)h(is)g(disconnected)e(for)i(some)f(other)g(r)
+4851 y(if)h(the)e(service)h(is)g(disconnected)e(for)i(some)f(other)g(r)
 n(eason,)h(then)f(the)g Fo(SIGHUP)f Fq(will)j(be)f(deliver)n(ed)227
 n(eason,)h(then)f(the)g Fo(SIGHUP)f Fq(will)j(be)f(deliver)n(ed)227
-4851 y Fn(befor)n(e)g Fq(the)d(writing)g(end\(s\))g(of)g(the)g
+4964 y Fn(befor)n(e)g Fq(the)d(writing)g(end\(s\))g(of)g(the)g
 (service's)g(r)n(eading)h(pipe\(s\))e(ar)n(e)i(closed,)g(so)e(that)i
 (service's)g(r)n(eading)h(pipe\(s\))e(ar)n(e)i(closed,)g(so)e(that)i
-(the)e(client)i(can)227 4964 y(distinguish)c(disconnection)f(fr)n(om)j
-(r)n(eading)e(EOF)g(on)h(a)g(pipe.)p Black 0 5175 a Fh(reset)p
+(the)e(client)i(can)227 5077 y(distinguish)c(disconnection)f(fr)n(om)j
+(r)n(eading)e(EOF)g(on)h(a)g(pipe.)p Black 0 5287 a Fh(reset)p
 Black 43 w Fq(Resets)d(the)i(execution)g(settings)e(to)i(the)g
 (default.)28 b(This)22 b(is)h(equivalent)g(to:)p Black
 Black 43 w Fq(Resets)d(the)i(execution)g(settings)e(to)i(the)g
 (default.)28 b(This)22 b(is)h(equivalent)g(to:)p Black
-Black 500 5450 a Fo(cd)54 b(~/)500 5563 y(reject)p Black
-Black eop
+Black 500 5563 a Fo(cd)54 b(~/)p Black Black eop end
 %%Page: 18 22
 %%Page: 18 22
-18 21 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(18)p 0 128
-3766 4 v Black 500 476 a Fo(no-set-environm)o(en)o(t)500
-589 y(suppress-args)500 702 y(allow-fd)51 b(0)j(read)500
-814 y(allow-fd)d(1-2)i(write)500 927 y(reject-fd)d(3-)500
-1040 y(disconnect-hup)0 1316 y Fq(If)36 b(no)g Fo(execute)p
-Fq(,)h Fo(execute-from-p)o(ath)o Fq(,)d Fo(execute-from-d)o(ir)o(ec)o
-(tor)o(y)c Fq(or)36 b Fo(builtin)d Fq(is)k(inter)n(-)0
-1429 y(pr)n(eted)21 b(befor)n(e)h(all)i(the)e(\002les)g(ar)n(e)h(r)n
-(ead)g(then)f(the)f(r)n(equest)g(is)i(r)n(ejected.)0
-1792 y Fp(4.3)119 b(Errors)29 b(in)h(the)f(con\002guration)i(\002le)0
-2062 y Fq(If)19 b(a)h(syntax)f(err)n(or)g(or)g(other)f(pr)n(oblem)h
-(occurs)g(when)g(pr)n(ocessing)f(a)i(con\002guration)f(\002le)g(then)f
-(a)i(diagnostic)0 2175 y(will)f(be)f(issued,)f(to)g(wher)n(ever)g(the)g
-(err)n(or)g(messages)f(ar)n(e)i(curr)n(ently)f(being)h(sent)e(\(see)h
-(the)g Fo(errors-)d Fq(family)0 2288 y(of)23 b(dir)n(ectives,)f
-(above\).)0 2459 y(The)f(err)n(or)h(will)h(cause)f(pr)n(ocessing)f(of)h
-(the)f(con\002guration)g(\002les)h(to)g(cease)f(at)h(that)g(point,)f
-(unless)g(the)h(err)n(or)0 2572 y(was)h(inside)f(a)h
-Fo(catch-quit)c Fq(constr)o(uct.)27 b(In)c(this)f(case)h(the)f
-(settings)f(contr)n(olling)i(the)f(pr)n(ogram's)g(execu-)0
-2685 y(tion)f(will)h(be)f(r)n(eset)e(to)h(the)h(defaults)f(as)h(if)h(a)
-f Fo(reset)e Fq(dir)n(ective)i(had)g(been)f(issued,)g(and)h(parsing)f
-(continues)0 2798 y(after)j Fo(hctac)p Fq(.)0 3161 y
-Fp(4.4)119 b(Defaults)0 3431 y Fq(The)20 b(default)h(con\002guration)f
-(pr)n(ocessing)g(is)h(as)g(if)h(the)e(daemon)h(wer)n(e)f(parsing)g(an)i
-(overall)g(con\002guration)0 3544 y(\002le)h(whose)e(contents)g(wer)n
-(e)h(as)g(follows:)p Black Black 164 3820 a Fo(reset)164
-3933 y(user-rcfile)49 b(~/.userv/rc)164 4045 y(errors-to-stde)o(rr)164
-4158 y(include)i(/etc/userv/syst)o(em)o(.d)o(ef)o(aul)o(t)164
-4271 y(if)i(grep)g(service-user-sh)o(el)o(l)48 b(/etc/shells)327
-4384 y(errors-push)436 4497 y(catch-quit)545 4610 y(include-ifexist)g
+TeXDict begin 18 21 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(18)p 0 128 3766 4 v Black 500 476 a Fo(reject)500 589
+y(no-set-environm)o(en)o(t)500 702 y(suppress-args)500
+814 y(allow-fd)51 b(0)j(read)500 927 y(allow-fd)d(1-2)i(write)500
+1040 y(reject-fd)d(3-)500 1153 y(disconnect-hup)0 1406
+y Fq(If)36 b(no)g Fo(execute)p Fq(,)h Fo(execute-from-p)o(ath)o
+Fq(,)d Fo(execute-from-d)o(ir)o(ec)o(tor)o(y)c Fq(or)36
+b Fo(builtin)d Fq(is)k(inter)n(-)0 1518 y(pr)n(eted)21
+b(befor)n(e)h(all)i(the)e(\002les)g(ar)n(e)h(r)n(ead)g(then)f(the)f(r)n
+(equest)g(is)i(r)n(ejected.)0 1868 y Fp(4.3)119 b(Errors)29
+b(in)h(the)f(con\002guration)i(\002le)0 2133 y Fq(If)19
+b(a)h(syntax)f(err)n(or)g(or)g(other)f(pr)n(oblem)h(occurs)g(when)g(pr)
+n(ocessing)f(a)i(con\002guration)f(\002le)g(then)f(a)i(diagnostic)0
+2245 y(will)f(be)f(issued,)f(to)g(wher)n(ever)g(the)g(err)n(or)g
+(messages)f(ar)n(e)i(curr)n(ently)f(being)h(sent)e(\(see)h(the)g
+Fo(errors-)d Fq(family)0 2358 y(of)23 b(dir)n(ectives,)f(above\).)0
+2525 y(The)f(err)n(or)h(will)h(cause)f(pr)n(ocessing)f(of)h(the)f
+(con\002guration)g(\002les)h(to)g(cease)f(at)h(that)g(point,)f(unless)g
+(the)h(err)n(or)0 2638 y(was)h(inside)f(a)h Fo(catch-quit)c
+Fq(constr)o(uct.)27 b(In)c(this)f(case)h(the)f(settings)f(contr)n
+(olling)i(the)f(pr)n(ogram's)g(execu-)0 2750 y(tion)f(will)h(be)f(r)n
+(eset)e(to)h(the)h(defaults)f(as)h(if)h(a)f Fo(reset)e
+Fq(dir)n(ective)i(had)g(been)f(issued,)g(and)h(parsing)f(continues)0
+2863 y(after)j Fo(hctac)p Fq(.)0 3213 y Fp(4.4)119 b(Defaults)0
+3477 y Fq(The)20 b(default)h(con\002guration)f(pr)n(ocessing)g(is)h(as)
+g(if)h(the)e(daemon)h(wer)n(e)f(parsing)g(an)i(overall)g
+(con\002guration)0 3590 y(\002le)h(whose)e(contents)g(wer)n(e)h(as)g
+(follows:)p Black Black 164 3843 a Fo(reset)164 3956
+y(user-rcfile)49 b(~/.userv/rc)164 4069 y(errors-to-stde)o(rr)164
+4182 y(include)i(/etc/userv/syst)o(em)o(.d)o(ef)o(aul)o(t)164
+4294 y(if)i(grep)g(service-user-sh)o(el)o(l)48 b(/etc/shells)327
+4407 y(errors-push)436 4520 y(catch-quit)545 4633 y(include-ifexist)g
 Fj(file)53 b(specified)d(by)k(most)f(recent)f(user-rcfile)d(directive)
 Fj(file)53 b(specified)d(by)k(most)f(recent)f(user-rcfile)d(directive)
-436 4723 y Fo(hctac)327 4836 y(srorre)164 4949 y(fi)164
-5062 y(include)i(/etc/userv/syst)o(em)o(.o)o(ve)o(rri)o(de)164
-5175 y(quit)0 5450 y Fq(If)27 b(one)e(of)i(the)f Fo(-override)d
+436 4746 y Fo(hctac)327 4859 y(srorre)164 4972 y(fi)164
+5085 y(include)i(/etc/userv/syst)o(em)o(.o)o(ve)o(rri)o(de)164
+5198 y(quit)0 5450 y Fq(If)27 b(one)e(of)i(the)f Fo(-override)d
 Fq(options)i(to)h(the)g(client)h(is)f(used)g(then)f(it)i(will)h
 (instead)e(be)h(as)f(if)i(the)e(daemon)0 5563 y(wer)n(e)c(parsing)g(an)
 h(overall)h(con\002guration)e(as)g(follows:)p Black Black
 Fq(options)i(to)h(the)g(client)h(is)f(used)g(then)f(it)i(will)h
 (instead)e(be)h(as)f(if)i(the)e(daemon)0 5563 y(wer)n(e)c(parsing)g(an)
 h(overall)h(con\002guration)e(as)g(follows:)p Black Black
-eop
+eop end
 %%Page: 19 23
 %%Page: 19 23
-19 22 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(19)p 0 128
-3766 4 v Black Black Black 164 476 a Fo(reset)164 589
-y(errors-to-stde)o(rr)164 702 y(include)51 b Fj(file)i(containing)d
+TeXDict begin 19 22 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(19)p 0 128 3766 4 v Black Black Black 164 476 a Fo(reset)164
+589 y(errors-to-stde)o(rr)164 702 y(include)51 b Fj(file)i(containing)d
 (configuration)e(data)53 b(sent)g(by)g(client)164 814
 (configuration)e(data)53 b(sent)g(by)g(client)164 814
-y Fo(quit)p Black Black eop
+y Fo(quit)p Black Black eop end
 %%Page: 20 24
 %%Page: 20 24
-20 23 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(4.)h(Service-side)f(con\002guration)2185 b(20)p 0 128
-3766 4 v Black Black Black eop
+TeXDict begin 20 23 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(4.)h(Service-side)f(con\002guration)2185
+b(20)p 0 128 3766 4 v Black Black Black eop end
 %%Page: 21 25
 %%Page: 21 25
-21 24 bop Black 0 TeXcolorgray Black 3675 91 a Fq(21)p
-0 128 3766 4 v Black 0 1151 a Fk(Chapter)44 b(5)0 1618
-y Fm(Information)52 b(passed)g(through)g(the)0 1867 y(client/daemon)g
-(combination)0 2365 y Fq(The)23 b(information)g(described)f(below)i(is)
-f(the)f(only)h(information)h(which)g(passes)d(between)h(the)h(caller)h
-(and)0 2478 y(the)e(service.)p Black 127 2725 a(\225)p
-Black 45 w(The)32 b(service)h(name)f(supplied)g(by)g(the)g(caller)i(is)
-e(available)k(in)d(the)f(con\002guration)g(language)g(for)227
-2838 y(deciding)22 b(whether)f(and)i(which)g(service)f(pr)n(ogram)h(to)
-f(invoke,)g(in)h(the)e Fo(service)f Fq(parameter)-7 b(,)22
-b(and)227 2951 y(is)33 b(used)e(by)i(the)f Fo(execute-from-di)o(re)o
-(ct)o(or)o(y)27 b Fq(and)33 b Fo(execute-from-p)o(at)o(h)27
-b Fq(con\002guration)227 3064 y(dir)n(ectives.)34 b(It)25
-b(is)f(usually)h(used)f(to)g(select)g(which)h(service)g(pr)n(ogram)g
-(to)f(invoke.)34 b(It)24 b(is)h(also)g(passed)227 3177
-y(to)d(the)g(service)h(pr)n(ogram)f(in)h(the)f Fo(USERV_SERVICE)17
-b Fq(envir)n(onment)22 b(variable.)p Black 127 3359 a(\225)p
-Black 45 w(File)31 b(descriptors)c(speci\002ed)i(by)h(the)g(client)g
-(and)h(allowed)f(accor)n(ding)g(to)g(the)f(con\002guration)h(lan-)227
-3471 y(guage)23 b(will)i(be)f(connected.)31 b(Each)24
-b(\002le)g(descriptor)e(is)i(opened)e(for)i(r)n(eading)g(or)g(writing.)
-31 b(Commu-)227 3584 y(nication)c(is)e(via)i(pipes,)e(one)f(end)h(of)g
-(each)h(pipe)f(being)g(open)g(on)g(the)f(appr)n(opriate)h(\002le)h
-(descriptor)227 3697 y(in)k(the)f(service)g(pr)n(ogram)h(\(when)f(it)g
-(is)h(invoked\))f(and)g(the)g(other)f(end)h(being)g(held)g(by)h(the)f
-(client)227 3810 y(pr)n(ocess,)c(which)g(will)i(r)n(ead)e(and)g(write)g
-(\002les)g(it)g(opens)f(on)h(behalf)h(of)f(its)g(caller)i(or)e(\002le)g
-(descriptors)227 3923 y(it)e(is)g(passed)e(by)h(its)h(caller)-7
-b(.)227 4070 y(Data)24 b(may)f(be)f(passed)f(into)h(the)g(service)g
-(thr)n(ough)g(r)n(eading)g(pipes)f(and)i(out)f(of)g(it)h(thr)n(ough)e
-(writing)227 4183 y(pipes.)50 b(These)29 b(pipes)g(can)i(r)n(emain)g
-(open)e(only)h(until)h(the)e(service)i(and)f(client)h(have)f
+TeXDict begin 21 24 bop Black 0 TeXcolorgray Black 3675
+91 a Fq(21)p 0 128 3766 4 v Black 0 1151 a Fk(Chapter)44
+b(5)0 1618 y Fm(Information)52 b(passed)g(through)g(the)0
+1867 y(client/daemon)g(combination)0 2365 y Fq(The)23
+b(information)g(described)f(below)i(is)f(the)f(only)h(information)h
+(which)g(passes)d(between)h(the)h(caller)h(and)0 2478
+y(the)e(service.)p Black 127 2725 a(\225)p Black 45 w(The)32
+b(service)h(name)f(supplied)g(by)g(the)g(caller)i(is)e(available)k(in)d
+(the)f(con\002guration)g(language)g(for)227 2838 y(deciding)22
+b(whether)f(and)i(which)g(service)f(pr)n(ogram)h(to)f(invoke,)g(in)h
+(the)e Fo(service)f Fq(parameter)-7 b(,)22 b(and)227
+2951 y(is)33 b(used)e(by)i(the)f Fo(execute-from-di)o(re)o(ct)o(or)o(y)
+27 b Fq(and)33 b Fo(execute-from-p)o(at)o(h)27 b Fq(con\002guration)227
+3064 y(dir)n(ectives.)34 b(It)25 b(is)f(usually)h(used)f(to)g(select)g
+(which)h(service)g(pr)n(ogram)g(to)f(invoke.)34 b(It)24
+b(is)h(also)g(passed)227 3177 y(to)d(the)g(service)h(pr)n(ogram)f(in)h
+(the)f Fo(USERV_SERVICE)17 b Fq(envir)n(onment)22 b(variable.)p
+Black 127 3359 a(\225)p Black 45 w(File)31 b(descriptors)c(speci\002ed)
+i(by)h(the)g(client)g(and)h(allowed)f(accor)n(ding)g(to)g(the)f
+(con\002guration)h(lan-)227 3471 y(guage)23 b(will)i(be)f(connected.)31
+b(Each)24 b(\002le)g(descriptor)e(is)i(opened)e(for)i(r)n(eading)g(or)g
+(writing.)31 b(Commu-)227 3584 y(nication)c(is)e(via)i(pipes,)e(one)f
+(end)h(of)g(each)h(pipe)f(being)g(open)g(on)g(the)f(appr)n(opriate)h
+(\002le)h(descriptor)227 3697 y(in)k(the)f(service)g(pr)n(ogram)h
+(\(when)f(it)g(is)h(invoked\))f(and)g(the)g(other)f(end)h(being)g(held)
+g(by)h(the)f(client)227 3810 y(pr)n(ocess,)c(which)g(will)i(r)n(ead)e
+(and)g(write)g(\002les)g(it)g(opens)f(on)h(behalf)h(of)f(its)g(caller)i
+(or)e(\002le)g(descriptors)227 3923 y(it)e(is)g(passed)e(by)h(its)h
+(caller)-7 b(.)227 4070 y(Data)24 b(may)f(be)f(passed)f(into)h(the)g
+(service)g(thr)n(ough)g(r)n(eading)g(pipes)f(and)i(out)f(of)g(it)h(thr)
+n(ough)e(writing)227 4183 y(pipes.)50 b(These)29 b(pipes)g(can)i(r)n
+(emain)g(open)e(only)h(until)h(the)e(service)i(and)f(client)h(have)f
 (terminated,)227 4296 y(or)e(can)g(be)g(made)f(to)g(stay)g(open)g
 (after)g(the)g(client)h(has)g(terminated)e(and)i(\(if)h(the)e(service)g
 (pr)n(ogram)227 4409 y(forks\))22 b(the)h(main)h(service)e(pr)n(ocess)g
 (terminated,)227 4296 y(or)e(can)g(be)g(made)f(to)g(stay)g(open)g
 (after)g(the)g(client)h(has)g(terminated)e(and)i(\(if)h(the)e(service)g
 (pr)n(ogram)227 4409 y(forks\))22 b(the)h(main)h(service)e(pr)n(ocess)g
@@ -1595,53 +1601,54 @@ b Fq(is)k(caught)f(or)h(ignor)n(ed\))f(in)h(the)f(service.)227
 127 5450 a(\225)p Black 45 w(If)33 b Fo(no-suppress-ar)o(gs)26
 b Fq(is)33 b(set)e(then)g(ar)n(guments)h(passed)f(to)h(the)f(client)i
 (by)f(its)h(caller)g(will)h(be)227 5563 y(passed)21 b(on,)h(verbatim,)i
 127 5450 a(\225)p Black 45 w(If)33 b Fo(no-suppress-ar)o(gs)26
 b Fq(is)33 b(set)e(then)g(ar)n(guments)h(passed)f(to)h(the)f(client)i
 (by)f(its)h(caller)g(will)h(be)227 5563 y(passed)21 b(on,)h(verbatim,)i
-(to)e(the)f(service.)p Black Black eop
+(to)e(the)f(service.)p Black Black eop end
 %%Page: 22 26
 %%Page: 22 26
-22 25 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(5.)h(Information)g(passed)e(thr)n(ough)g(the)h(client/daemon)g
-(combination)806 b(22)p 0 128 3766 4 v Black Black 127
-476 a(\225)p Black 45 w(Fatal)28 b(signals)e(and)h(system)e(call)j
-(failur)n(es)f(experienced)e(by)i(the)e(client)i(will)h(r)n(esult)e(in)
-h(the)f(discon-)227 589 y(nection)k(of)h(the)e(service)h(fr)n(om)h(the)
-f(client)h(and)f(possibly)g(some)f(of)i(the)e(communication)j(\002le)f
-(de-)227 702 y(scriptors)23 b(described)f(above;)j(if)g
-Fo(disconnect-hup)17 b Fq(is)24 b(set)f(then)g(the)g(service)g(will)i
-(also)f(be)g(sent)e(a)227 814 y Fo(SIGHUP)p Fq(.)p Black
-127 1002 a(\225)p Black 45 w(The)g(value)h(of)f(the)g
-Fo(LOGNAME)d Fq(\(or)j Fo(USER)p Fq(\))f(envir)n(onment)h(variable)i
-(as)f(passed)e(to)g(the)h(client)h(will)g(be)227 1115
-y(used)29 b(as)h(the)f(login)h(name)g(of)g(the)f(calling)j(user)c(if)j
-(the)e(uid)h(of)g(the)f(calling)j(pr)n(ocess)c(matches)i(the)227
-1228 y(uid)e(corr)n(esponding)f(to)g(that)h(login)g(name.)45
-b(Otherwise)27 b(the)g(calling)j(uid's)e(passwor)n(d)f(entry)g(will)227
-1341 y(be)c(used)e(to)h(determine)f(the)h(calling)i(user)7
-b('s)21 b(login)i(name.)227 1491 y(This)32 b(login)f(name)h(and)g(the)e
-(calling)k(uid)d(ar)n(e)h(available)j(in)d(the)f(con\002guration)f
-(language)i(in)g(the)227 1604 y Fo(calling-user)22 b
-Fq(parameter)k(and)g(ar)n(e)h(passed)e(to)h(the)g(service)h(pr)n(ogram)
-f(in)h(envir)n(onment)f(vari-)227 1717 y(ables)d Fo(USERV_USER)18
-b Fq(and)23 b Fo(USERV_UID)p Fq(.)227 1867 y(The)c(shell)h(corr)n
-(esponding)d(to)i(that)h(login)f(name)h(\(accor)n(ding)h(to)e(the)g
-(passwor)n(d)f(entry\))g(is)i(available)227 1980 y(as)j(in)g(the)f
-(con\002guration)g(language's)g Fo(calling-user-sh)o(el)o(l)17
-b Fq(parameter)-7 b(.)227 2130 y(If)23 b(no)f(r)n(elevant)h(passwor)n
-(d)e(entry)h(can)h(be)g(found)e(then)h(no)g(service)h(will)h(be)e
-(invoked.)p Black 127 2318 a(\225)p Black 45 w(The)37
-b(numeric)h(values)g(and)g(textual)f(names)h(for)g(calling)h(gid)f(and)
-f(supplementary)f(gr)n(oup)h(list)227 2431 y(ar)n(e)31
-b(available)h(in)f(the)e(con\002guration)g(language)h(in)g(the)f
-Fo(calling-group)24 b Fq(parameter)30 b(and)g(ar)n(e)227
-2544 y(passed)21 b(to)h(the)g(service)h(in)g(envir)n(onment)f
-(variables.)227 2694 y(If)27 b(no)f(name)h(can)g(be)f(found)g(for)g(a)h
-(numeric)g(gr)n(oup)f(to)g(which)h(the)e(calling)j(pr)n(ocess)d
-(belongs)h(then)227 2807 y(no)d(service)f(will)i(be)e(invoked.)p
-Black 127 2995 a(\225)p Black 45 w(The)30 b(name)h(of)g(the)f(curr)n
-(ent)g(working)g(dir)n(ectory)g(in)h(which)g(the)f(client)i(was)e
-(invoked)g(is)h(passed,)227 3107 y(if)c(available)h(and)e(not)e(hidden)
-h(using)g Fo(-hidecwd)p Fq(,)d(to)j(the)g(service)g(pr)n(ogram)g(in)h
-(the)f Fo(USERV_CWD)227 3220 y Fq(variable.)54 b(This)30
-b(grants)g(no)g(special)h(access)f(to)g(that)g(dir)n(ectory)g(unless)f
-(it)i(is)g(a)g(subdir)n(ectory)e(of)h(a)227 3333 y(dir)n(ectory)22
+TeXDict begin 22 25 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(5.)h(Information)g(passed)e(thr)n(ough)g(the)h
+(client/daemon)g(combination)806 b(22)p 0 128 3766 4
+v Black Black 127 476 a(\225)p Black 45 w(Fatal)28 b(signals)e(and)h
+(system)e(call)j(failur)n(es)f(experienced)e(by)i(the)e(client)i(will)h
+(r)n(esult)e(in)h(the)f(discon-)227 589 y(nection)k(of)h(the)e(service)
+h(fr)n(om)h(the)f(client)h(and)f(possibly)g(some)f(of)i(the)e
+(communication)j(\002le)f(de-)227 702 y(scriptors)23
+b(described)f(above;)j(if)g Fo(disconnect-hup)17 b Fq(is)24
+b(set)f(then)g(the)g(service)g(will)i(also)f(be)g(sent)e(a)227
+814 y Fo(SIGHUP)p Fq(.)p Black 127 1002 a(\225)p Black
+45 w(The)g(value)h(of)f(the)g Fo(LOGNAME)d Fq(\(or)j
+Fo(USER)p Fq(\))f(envir)n(onment)h(variable)i(as)f(passed)e(to)g(the)h
+(client)h(will)g(be)227 1115 y(used)29 b(as)h(the)f(login)h(name)g(of)g
+(the)f(calling)j(user)c(if)j(the)e(uid)h(of)g(the)f(calling)j(pr)n
+(ocess)c(matches)i(the)227 1228 y(uid)e(corr)n(esponding)f(to)g(that)h
+(login)g(name.)45 b(Otherwise)27 b(the)g(calling)j(uid's)e(passwor)n(d)
+f(entry)g(will)227 1341 y(be)c(used)e(to)h(determine)f(the)h(calling)i
+(user)7 b('s)21 b(login)i(name.)227 1491 y(This)32 b(login)f(name)h
+(and)g(the)e(calling)k(uid)d(ar)n(e)h(available)j(in)d(the)f
+(con\002guration)f(language)i(in)g(the)227 1604 y Fo(calling-user)22
+b Fq(parameter)k(and)g(ar)n(e)h(passed)e(to)h(the)g(service)h(pr)n
+(ogram)f(in)h(envir)n(onment)f(vari-)227 1717 y(ables)d
+Fo(USERV_USER)18 b Fq(and)23 b Fo(USERV_UID)p Fq(.)227
+1867 y(The)c(shell)h(corr)n(esponding)d(to)i(that)h(login)f(name)h
+(\(accor)n(ding)h(to)e(the)g(passwor)n(d)f(entry\))g(is)i(available)227
+1980 y(as)j(in)g(the)f(con\002guration)g(language's)g
+Fo(calling-user-sh)o(el)o(l)17 b Fq(parameter)-7 b(.)227
+2130 y(If)23 b(no)f(r)n(elevant)h(passwor)n(d)e(entry)h(can)h(be)g
+(found)e(then)h(no)g(service)h(will)h(be)e(invoked.)p
+Black 127 2318 a(\225)p Black 45 w(The)37 b(numeric)h(values)g(and)g
+(textual)f(names)h(for)g(calling)h(gid)f(and)f(supplementary)f(gr)n
+(oup)h(list)227 2431 y(ar)n(e)31 b(available)h(in)f(the)e
+(con\002guration)g(language)h(in)g(the)f Fo(calling-group)24
+b Fq(parameter)30 b(and)g(ar)n(e)227 2544 y(passed)21
+b(to)h(the)g(service)h(in)g(envir)n(onment)f(variables.)227
+2694 y(If)27 b(no)f(name)h(can)g(be)f(found)g(for)g(a)h(numeric)g(gr)n
+(oup)f(to)g(which)h(the)e(calling)j(pr)n(ocess)d(belongs)h(then)227
+2807 y(no)d(service)f(will)i(be)e(invoked.)p Black 127
+2995 a(\225)p Black 45 w(The)30 b(name)h(of)g(the)f(curr)n(ent)g
+(working)g(dir)n(ectory)g(in)h(which)g(the)f(client)i(was)e(invoked)g
+(is)h(passed,)227 3107 y(if)c(available)h(and)e(not)e(hidden)h(using)g
+Fo(-hidecwd)p Fq(,)d(to)j(the)g(service)g(pr)n(ogram)g(in)h(the)f
+Fo(USERV_CWD)227 3220 y Fq(variable.)54 b(This)30 b(grants)g(no)g
+(special)h(access)f(to)g(that)g(dir)n(ectory)g(unless)f(it)i(is)g(a)g
+(subdir)n(ectory)e(of)h(a)227 3333 y(dir)n(ectory)22
 b(which)h(is)g(executable)f(\(sear)n(chable\))i(but)f(not)f(r)n
 (eadable)h(by)f(the)g(service)h(user)-7 b(.)p Black 127
 3521 a(\225)p Black 45 w(Settings)17 b(speci\002ed)g(by)h(the)f(caller)
 b(which)h(is)g(executable)f(\(sear)n(chable\))i(but)f(not)f(r)n
 (eadable)h(by)f(the)g(service)h(user)-7 b(.)p Black 127
 3521 a(\225)p Black 45 w(Settings)17 b(speci\002ed)g(by)h(the)f(caller)
@@ -1656,13 +1663,13 @@ h(the)f(same)h(as)g(the)f(service)h(user)f(then)g(options)f(may)j(be)f
 (given)g(to)f(the)227 4047 y(client)27 b(which)g(bypass)e(the)h(usual)g
 (security)f(featur)n(es;)i(in)g(this)f(case)g(other)f(information)i
 (may)g(pass)227 4160 y(between)21 b(the)h(caller)i(and)f(the)e
 (given)g(to)f(the)227 4047 y(client)27 b(which)g(bypass)e(the)h(usual)g
 (security)f(featur)n(es;)i(in)g(this)f(case)g(other)f(information)i
 (may)g(pass)227 4160 y(between)21 b(the)h(caller)i(and)f(the)e
-(service.)p Black Black eop
+(service.)p Black Black eop end
 %%Page: 23 27
 %%Page: 23 27
-23 26 bop Black 0 TeXcolorgray Black 3675 91 a Fq(23)p
-0 128 3766 4 v Black 0 1152 a Fk(Chapter)44 b(6)0 1621
-y Fm(Applications)51 b(and)h(notes)f(on)h(use)0 2157
-y Fp(6.1)119 b(Examples)0 2422 y Fq(The)35 b(companion)g(package,)j
-Fo(userv-utils)p Fq(,)c(contains)h(a)h(selection)e(of)i(example)f
+TeXDict begin 23 26 bop Black 0 TeXcolorgray Black 3675
+91 a Fq(23)p 0 128 3766 4 v Black 0 1152 a Fk(Chapter)44
+b(6)0 1621 y Fm(Applications)51 b(and)h(notes)f(on)h(use)0
+2157 y Fp(6.1)119 b(Examples)0 2422 y Fq(The)35 b(companion)g(package,)
+Fo(userv-utils)p Fq(,)c(contains)h(a)h(selection)e(of)i(example)f
 (services,)j(some)c(of)0 2535 y(which)23 b(ar)n(e)g(useful)f(tools)g
 (in)h(their)f(own)g(right.)28 b(See)21 b(the)h Fo(README)e
 Fq(in)j(its)g(top-level)f(dir)n(ectory)f(for)i(details.)0
 (services,)j(some)c(of)0 2535 y(which)23 b(ar)n(e)g(useful)f(tools)g
 (in)h(their)f(own)g(right.)28 b(See)21 b(the)h Fo(README)e
 Fq(in)j(its)g(top-level)f(dir)n(ectory)f(for)i(details.)0
@@ -1700,22 +1707,22 @@ b(This)22 b(gives)f(rise)h(to)f(a)h(lar)n(ge)h(and)e(complex)h(body)f
 (security)f(of)i(the)f(system.)0 5450 y(If)36 b(they)e(wer)n(e)i(to)f
 (use)g Fo(userv)p Fq(,)i(many)f(of)g(these)e(subsystems)f(would)i(no)h
 (longer)f(need)f(any)i(unusual)0 5563 y(privilege.)p
 (security)f(of)i(the)f(system.)0 5450 y(If)36 b(they)e(wer)n(e)i(to)f
 (use)g Fo(userv)p Fq(,)i(many)f(of)g(these)e(subsystems)f(would)i(no)h
 (longer)f(need)f(any)i(unusual)0 5563 y(privilege.)p
-Black Black eop
+Black Black eop end
 %%Page: 24 28
 %%Page: 24 28
-24 27 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019 b(24)p
-0 128 3766 4 v Black 0 476 a Fo(cron)23 b Fq(and)h Fo(at)p
-Fq(,)g Fo(lpr)f Fq(and)h(the)g(system's)e(mail)k(transfer)e(agent)g(\()
-p Fo(sendmail)p Fq(,)d Fo(smail)p Fq(,)h Fo(exim)h Fq(or)h(the)g
-(like\))0 589 y(all)33 b(fall)g(into)e(this)g(category)-10
-b(,)31 b(though)f Fo(userv)p Fq(-based)f(versions)h(of)h(these)f(pr)n
-(ograms)g(ar)n(e)i(not)e(curr)n(ently)0 702 y(available.)0
-1058 y Fp(6.4)119 b(Do)30 b(not)g(give)h(away)e(excessive)h(privilege)f
-(to)h Fa(userv)p Fp(-using)f(facilities)0 1326 y Fq(Ther)n(e)24
-b(is)h(a)g(danger)f(that)h(people)e(r)n(eimplementing)h(the)g
-(facilities)j(I)d(mention)h(above)g(using)f Fo(userv)f
-Fq(will)0 1439 y(discar)n(d)34 b(much)g(of)f(the)g(security)f
-(bene\002t)g(by)i(using)f(a)h(naive)g(implementation)f(technique.)60
+TeXDict begin 24 27 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019
+b(24)p 0 128 3766 4 v Black 0 476 a Fo(cron)23 b Fq(and)h
+Fo(at)p Fq(,)g Fo(lpr)f Fq(and)h(the)g(system's)e(mail)k(transfer)e
+(agent)g(\()p Fo(sendmail)p Fq(,)d Fo(smail)p Fq(,)h
+Fo(exim)h Fq(or)h(the)g(like\))0 589 y(all)33 b(fall)g(into)e(this)g
+(category)-10 b(,)31 b(though)f Fo(userv)p Fq(-based)f(versions)h(of)h
+(these)f(pr)n(ograms)g(ar)n(e)i(not)e(curr)n(ently)0
+702 y(available.)0 1058 y Fp(6.4)119 b(Do)30 b(not)g(give)h(away)e
+(excessive)h(privilege)f(to)h Fa(userv)p Fp(-using)f(facilities)0
+1326 y Fq(Ther)n(e)24 b(is)h(a)g(danger)f(that)h(people)e(r)n
+(eimplementing)h(the)g(facilities)j(I)d(mention)h(above)g(using)f
+Fo(userv)f Fq(will)0 1439 y(discar)n(d)34 b(much)g(of)f(the)g(security)
+f(bene\002t)g(by)i(using)f(a)h(naive)g(implementation)f(technique.)60
 b(This)33 b(will)0 1552 y(become)22 b(clear)n(er)i(with)e(an)h
 (example:)0 1722 y(Consider)32 b(the)h Fo(lpr)e Fq(pr)n(ogram.)60
 b(In)32 b(curr)n(ent)h(systems)e(this)i(needs)e(to)i(have)g(an)h
 b(This)33 b(will)0 1552 y(become)22 b(clear)n(er)i(with)e(an)h
 (example:)0 1722 y(Consider)32 b(the)h Fo(lpr)e Fq(pr)n(ogram.)60
 b(In)32 b(curr)n(ent)h(systems)e(this)i(needs)e(to)i(have)g(an)h
@@ -1785,44 +1792,44 @@ y(It)h(is)h(debatable)g(whether)e(the)h(user)n(-contr)n(olled)g(state)f
 b(,)24 b(using)f(the)h(user)7 b('s)23 b(home)0 5563 y(dir)n(ectory)g
 (\(and)i(possibly)e(cr)n(eating)h(a)h(separate)e(subdir)n(ectory)g(of)h
 (it)g(as)g(a)h(dot\002le)e(to)h(contain)g(subsystem)p
 b(,)24 b(using)f(the)h(user)7 b('s)23 b(home)0 5563 y(dir)n(ectory)g
 (\(and)i(possibly)e(cr)n(eating)h(a)h(separate)e(subdir)n(ectory)g(of)h
 (it)g(as)g(a)h(dot\002le)e(to)h(contain)g(subsystem)p
-Black Black eop
+Black Black eop end
 %%Page: 25 29
 %%Page: 25 29
-25 28 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019 b(25)p
-0 128 3766 4 v Black 0 476 a(state\))28 b(has)h(fewer)g(implications)h
-(for)f(the)f(r)n(est)h(of)g(the)f(system)f(and)i(makes)g(it)g(entir)n
-(ely)g(clear)h(wher)n(e)e(the)0 589 y(security)22 b(boundaries)f(lie.)0
-938 y Fp(6.5)119 b Fa(userv)29 b Fp(can)g(often)h(replace)e
-Fa(sudo)p Fp(,)h(but)h(not)g Fa(really)0 1203 y Fo(userv)h
-Fq(is)i(not)g(intended)e(as)j(a)f(general-purpose)e(system)h
-(administration)h(tool)g(with)g(which)h(system)0 1316
-y(administrators)24 b(can)h(execute)d(arbitrary)j(pr)n(ograms)f(like)g
-(text)f(editors)g(as)h(r)n(oot)g(\(or)g(other)f(system)f(users\))0
-1429 y(when)34 b(they)g(need)g(to.)65 b(It)34 b(is)h(unsuitable)g(for)g
-(this)g(purpose)e(pr)n(ecisely)h(because)h(it)g(enfor)n(ces)g(a)g(str)n
-(ong)0 1542 y(separation)22 b(between)f(the)h(calling)i(and)f(the)f
-(called)h(pr)n(ogram,)f(which)h(is)g(undesirable)f(in)h(this)g
-(context.)0 1708 y(However)-7 b(,)33 b(its)f(use)f(when)g(r)n
-(estricted)g(to)g(r)o(unning)h(particular)h(pr)n(ograms)e(in)i
-(particular)g(ways)e(is)i(very)0 1821 y(similar)24 b(to)d(many)i
-(common)f(uses)f(of)h Fo(sudo)p 1 0 0 TeXcolorrgb -33
-x Fi(1)p Black 1586 1821 a Fq(.)28 b Fo(userv)20 b Fq(is)i(generally)g
-(much)g(better)f(than)h(r)n(estricted)f Fo(sudo)p Fq(,)0
-1934 y(because)e(it)g(pr)n(otects)f(the)h(called)h(pr)n(ogram)f(much)h
-(mor)n(e)f(str)n(ongly)f(fr)n(om)h(bad)h(envir)n(onmental)g(conditions)
-0 2047 y(set)25 b(up)g(by)h(the)f(caller)-7 b(.)39 b(Most)25
-b(pr)n(ograms)g(that)h(one)f(might)g(want)h(to)f(r)o(un)h(via)h(r)n
-(estricted)e Fo(sudo)p Fq(,)g(have)h(not)0 2159 y(been)h(designed)f(to)
-h(r)o(un)h(in)g(a)h(partially)g(hostile)e(envir)n(onment.)43
-b Fo(userv)26 b Fq(allows)i(these)f(pr)n(ograms)g(to)g(be)0
-2272 y(r)o(un)c(in)g(a)g(safer)f(envir)n(onment)h(and)f(should)g(be)g
-(used)g(instead.)0 2622 y Fp(6.6)119 b(Error)29 b(handling)h(and)g
-(input)f(streams)g(\(eg)h(stdin\))0 2887 y Fq(When)e(the)f(service)h
-(pr)n(ogram)g(is)g(r)n(eading)g(fr)n(om)h(a)f(\002le)h(descriptor)d
-(connected)h(to)g(the)h(calling)h(side,)g(the)0 2999
-y(fd)23 b(that)g(the)f(service)h(pr)n(ogram)g(r)n(efers)f(to)h(a)g
-(pipe)g(set)e(up)i(by)g Fo(userv)e Fq(and)i(not)f(to)h(the)f(same)h
-(object)g(as)g(was)0 3112 y(pr)n(esented)d(by)i(the)g(caller)-7
+TeXDict begin 25 28 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019
+b(25)p 0 128 3766 4 v Black 0 476 a(state\))28 b(has)h(fewer)g
+(implications)h(for)f(the)f(r)n(est)h(of)g(the)f(system)f(and)i(makes)g
+(it)g(entir)n(ely)g(clear)h(wher)n(e)e(the)0 589 y(security)22
+b(boundaries)f(lie.)0 938 y Fp(6.5)119 b Fa(userv)29
+b Fp(can)g(often)h(replace)e Fa(sudo)p Fp(,)h(but)h(not)g
+Fa(really)0 1203 y Fo(userv)h Fq(is)i(not)g(intended)e(as)j(a)f
+(general-purpose)e(system)h(administration)h(tool)g(with)g(which)h
+(system)0 1316 y(administrators)24 b(can)h(execute)d(arbitrary)j(pr)n
+(ograms)f(like)g(text)f(editors)g(as)h(r)n(oot)g(\(or)g(other)f(system)
+f(users\))0 1429 y(when)34 b(they)g(need)g(to.)65 b(It)34
+b(is)h(unsuitable)g(for)g(this)g(purpose)e(pr)n(ecisely)h(because)h(it)
+g(enfor)n(ces)g(a)g(str)n(ong)0 1542 y(separation)22
+b(between)f(the)h(calling)i(and)f(the)f(called)h(pr)n(ogram,)f(which)h
+(is)g(undesirable)f(in)h(this)g(context.)0 1708 y(However)-7
+b(,)33 b(its)f(use)f(when)g(r)n(estricted)g(to)g(r)o(unning)h
+(particular)h(pr)n(ograms)e(in)i(particular)g(ways)e(is)i(very)0
+1821 y(similar)24 b(to)d(many)i(common)f(uses)f(of)h
+Fo(sudo)p 1 0 0 TeXcolorrgb -33 x Fi(1)p Black 1586 1821
+a Fq(.)28 b Fo(userv)20 b Fq(is)i(generally)g(much)g(better)f(than)h(r)
+n(estricted)f Fo(sudo)p Fq(,)0 1934 y(because)e(it)g(pr)n(otects)f(the)
+h(called)h(pr)n(ogram)f(much)h(mor)n(e)f(str)n(ongly)f(fr)n(om)h(bad)h
+(envir)n(onmental)g(conditions)0 2047 y(set)25 b(up)g(by)h(the)f
+(caller)-7 b(.)39 b(Most)25 b(pr)n(ograms)g(that)h(one)f(might)g(want)h
+(to)f(r)o(un)h(via)h(r)n(estricted)e Fo(sudo)p Fq(,)g(have)h(not)0
+2159 y(been)h(designed)f(to)h(r)o(un)h(in)g(a)h(partially)g(hostile)e
+(envir)n(onment.)43 b Fo(userv)26 b Fq(allows)i(these)f(pr)n(ograms)g
+(to)g(be)0 2272 y(r)o(un)c(in)g(a)g(safer)f(envir)n(onment)h(and)f
+(should)g(be)g(used)g(instead.)0 2622 y Fp(6.6)119 b(Error)29
+b(handling)h(and)g(input)f(streams)g(\(eg)h(stdin\))0
+2887 y Fq(When)e(the)f(service)h(pr)n(ogram)g(is)g(r)n(eading)g(fr)n
+(om)h(a)f(\002le)h(descriptor)d(connected)h(to)g(the)h(calling)h(side,)
+g(the)0 2999 y(fd)23 b(that)g(the)f(service)h(pr)n(ogram)g(r)n(efers)f
+(to)h(a)g(pipe)g(set)e(up)i(by)g Fo(userv)e Fq(and)i(not)f(to)h(the)f
+(same)h(object)g(as)g(was)0 3112 y(pr)n(esented)d(by)i(the)g(caller)-7
 b(.)0 3279 y(Ther)n(efor)n(e)25 b(if)j(ther)n(e)d(is)i(some)f(kind)g
 (of)g(err)n(or)g(it)h(is)g(possible)f(for)g(the)g(service-side)f(fd)i
 (to)f(give)g(pr)n(ematur)n(e)0 3392 y(end)g(of)h(\002le.)41
 b(.)0 3279 y(Ther)n(efor)n(e)25 b(if)j(ther)n(e)d(is)i(some)f(kind)g
 (of)g(err)n(or)g(it)h(is)g(possible)f(for)g(the)g(service-side)f(fd)i
 (to)f(give)g(pr)n(ematur)n(e)0 3392 y(end)g(of)h(\002le.)41
@@ -1859,15 +1866,15 @@ Black 163 5472 a Ff(sudo)h Fe(is)g(a)h(pr)o(ogram)f(which)i(allows)e
 (users)g(to)h(execute)f(certain)h(pr)o(ograms)e(as)i(r)o(oot,)g(accor)o
 (ding)f(to)h(con\002guration)h(\002les)0 5563 y(speci\002ed)18
 b(by)g(the)h(system)f(administrator)-6 b(.)p Black Black
 (users)g(to)h(execute)f(certain)h(pr)o(ograms)e(as)i(r)o(oot,)g(accor)o
 (ding)f(to)h(con\002guration)h(\002les)0 5563 y(speci\002ed)18
 b(by)g(the)h(system)f(administrator)-6 b(.)p Black Black
-Black eop
+Black eop end
 %%Page: 26 30
 %%Page: 26 30
-26 29 bop Black 0 TeXcolorgray Black 0 91 a Fq(Chapter)22
-b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019 b(26)p
-0 128 3766 4 v Black 0 476 a(It)25 b(is)g(a)h(shame)f(that)g(I)g(have)g
-(to)g(say)g(this)f(her)n(e,)h(but)g(inexperienced)f(administrators)h
-(have)g(made)g(similar)0 589 y(mistakes)d(with)g(pr)n(ograms)g(like)h
-Fo(sudo)p Fq(.)p Black Black eop
+TeXDict begin 26 29 bop Black 0 TeXcolorgray Black 0
+91 a Fq(Chapter)22 b(6.)h(Applications)g(and)f(notes)f(on)i(use)2019
+b(26)p 0 128 3766 4 v Black 0 476 a(It)25 b(is)g(a)h(shame)f(that)g(I)g
+(have)g(to)g(say)g(this)f(her)n(e,)h(but)g(inexperienced)f
+(administrators)h(have)g(made)g(similar)0 589 y(mistakes)d(with)g(pr)n
+(ograms)g(like)h Fo(sudo)p Fq(.)p Black Black eop end
 %%Trailer
 %%Trailer
-end
+
 userdict /end-hook known{end-hook}if
 %%EOF
 userdict /end-hook known{end-hook}if
 %%EOF
index 30ec12f4b24ca4fb5f23642612f5dc3b2b8b9eab..abb037b09111d3650b75b6d0156b2463092640fb 100644 (file)
--- a/spec.sgml
+++ b/spec.sgml
@@ -3,7 +3,7 @@
 <book>
 <title>User service daemon and client specification
 <author>Ian Jackson <email>ian@davenant.greenend.org.uk
 <book>
 <title>User service daemon and client specification
 <author>Ian Jackson <email>ian@davenant.greenend.org.uk
-<version>1.0.3.99-0.0.1</version>
+<version>1.0.4</version>
 
 <abstract>
 This is a specification for a Unix system facility to allow one
 
 <abstract>
 This is a specification for a Unix system facility to allow one
@@ -11,7 +11,9 @@ program to invoke another when only limited trust exists
 between them.
 
 <copyright>
 between them.
 
 <copyright>
-<prgn/userv/ is Copyright 1996-2003 Ian Jackson.
+<prgn/userv/ is
+Copyright 1996-2003,2006 Ian Jackson;
+Copyright 2000 Ben Harris.
 <p>
 
 <prgn/userv/ is free software; you can redistribute it and/or modify
 <p>
 
 <prgn/userv/ is free software; you can redistribute it and/or modify
index dc775ac0167f5ad22bd2030e7771780abd3be2d8..8d04194d0650c417f2e6289c90a38dab4f24e215 100644 (file)
@@ -11,7 +11,9 @@ program to invoke another when only limited trust exists
 between them.
 
 <copyright>
 between them.
 
 <copyright>
-<prgn/userv/ is Copyright 1996-2003 Ian Jackson.
+<prgn/userv/ is
+Copyright 1996-2003,2006 Ian Jackson;
+Copyright 2000 Ben Harris.
 <p>
 
 <prgn/userv/ is free software; you can redistribute it and/or modify
 <p>
 
 <prgn/userv/ is free software; you can redistribute it and/or modify
diff --git a/userv.1 b/userv.1
index 97ce9741e61f9c355b745441f5c1ef38c564009c..9ad59c22c3c2bbbcca6865961b1aeb1766aabb69 100644 (file)
--- a/userv.1
+++ b/userv.1
@@ -449,7 +449,7 @@ service.
 .%A Ian Jackson
 .Re
 .Sh COPYRIGHT
 .%A Ian Jackson
 .Re
 .Sh COPYRIGHT
-GNU userv is Copyright (C)1996-2003 Ian Jackson, except that this
+GNU userv is Copyright (C)1996-2003,2006 Ian Jackson, except that this
 manpage is Copyright (C)2000 Ben Harris and Copyright (C)2003 Ian
 Jackson.
 .Pp
 manpage is Copyright (C)2000 Ben Harris and Copyright (C)2003 Ian
 Jackson.
 .Pp
index d32c550151c83a869544bbbdacb6474f3c8ebac3..b54e65ad459bc92b5e9f210654950570c334789d 100644 (file)
--- a/uservd.8
+++ b/uservd.8
@@ -123,7 +123,7 @@ can modify the environment.  Consult the specification.)
 .%A Ian Jackson
 .Re
 .Sh COPYRIGHT
 .%A Ian Jackson
 .Re
 .Sh COPYRIGHT
-GNU userv, including this manpage, is Copyright (C)1996-2003 Ian
+GNU userv, including this manpage, is Copyright (C)1996-2003,2006 Ian
 Jackson, except that the
 .Xr userv 1
 manpage is Copyright (C)2000 Ben Harris and Copyright (C)2003 Ian
 Jackson, except that the
 .Xr userv 1
 manpage is Copyright (C)2000 Ben Harris and Copyright (C)2003 Ian