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 ee39b15..8e9a041 100644 (file)
--- a/README
+++ b/README
@@ -20,8 +20,8 @@ list if you are subscribed to it.
 
 
 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
index c5fbcd5..6664fbc 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"
-    "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");
index 9b7f63e..ecda7cf 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).
+  * 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
 
index 2ebce1b..a08b87f 100644 (file)
@@ -12,8 +12,8 @@ scheme, by adding various debian/* files and arranging for the uservd
 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
diff --git a/spec.ps b/spec.ps
index 60e7188..ca50b1f 100644 (file)
--- a/spec.ps
+++ b/spec.ps
@@ -1,5 +1,5 @@
 %!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
@@ -10,7 +10,7 @@
 %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
@@ -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
-% @@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
-% 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:
 % 
@@ -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.
 % 
-% (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)
@@ -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
- % 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
@@ -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
- /.notdef /.notdef /quotesinglbase /florin
+ /Euro /.notdef /quotesinglbase /florin
  /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
-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
@@ -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
-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
@@ -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
-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
-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
-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
-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
-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
-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[{
-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[{
-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
-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[{
-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
-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[{
-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
-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
-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
-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[{
-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
-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
-
+ end
 %%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
-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
-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
-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(.)
@@ -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
-84 w(23)p Black Black Black eop
+84 w(23)p Black Black Black eop end
 %%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
-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
@@ -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
-(unexpected)e(ways.)p Black Black eop
+(unexpected)e(ways.)p Black Black eop end
 %%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
-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
@@ -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
-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
@@ -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
-Black eop
+Black eop end
 %%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
@@ -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
-(esponding)p Black Black eop
+(esponding)p Black Black eop end
 %%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
@@ -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)
-e(calls.\))p Black Black eop
+e(calls.\))p Black Black eop end
 %%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
@@ -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
+end
 %%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
@@ -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
-eop
+eop end
 %%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
-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
@@ -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
-Black Black eop
+Black Black eop end
 %%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
@@ -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
-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
-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)
@@ -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
-Black eop
+Black eop end
 %%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)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
-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
-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
-(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
-(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)
-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
-(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
-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
-(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)
-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
-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
-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
-(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
-(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
-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
-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
@@ -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
-b(.)p Black Black eop
+b(.)p Black Black eop end
 %%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)
@@ -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
-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
@@ -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
-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
-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
@@ -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
-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
-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
-(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
@@ -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
-(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
-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
@@ -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
-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
-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
-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
-(...)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
-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
-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
@@ -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
-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 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
@@ -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
-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
-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
-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
-(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 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
-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)
-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
-eop
+eop end
 %%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
-y Fo(quit)p Black Black eop
+y Fo(quit)p Black Black eop end
 %%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
-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
@@ -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
-(to)e(the)f(service.)p Black Black eop
+(to)e(the)f(service.)p Black Black eop end
 %%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)
@@ -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
-(service.)p Black Black eop
+(service.)p Black Black eop end
 %%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
@@ -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
-Black Black eop
+Black Black eop end
 %%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
@@ -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
-Black Black eop
+Black Black eop end
 %%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
@@ -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
-Black eop
+Black eop end
 %%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
-end
+
 userdict /end-hook known{end-hook}if
 %%EOF
index 30ec12f..abb037b 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
-<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
@@ -11,7 +11,9 @@ program to invoke another when only limited trust exists
 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
index dc775ac..8d04194 100644 (file)
@@ -11,7 +11,9 @@ program to invoke another when only limited trust exists
 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
diff --git a/userv.1 b/userv.1
index 97ce974..9ad59c2 100644 (file)
--- a/userv.1
+++ b/userv.1
@@ -449,7 +449,7 @@ service.
 .%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
index d32c550..b54e65a 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
-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