chiark / gitweb /
regen debian_version_1_0_1_99_1
authorian <ian>
Fri, 31 Oct 2003 23:02:29 +0000 (23:02 +0000)
committerian <ian>
Fri, 31 Oct 2003 23:02:29 +0000 (23:02 +0000)
spec.ps

diff --git a/spec.ps b/spec.ps
index f482349..d3e0fe2 100644 (file)
--- a/spec.ps
+++ b/spec.ps
-%!PS-Adobe-3.0
-%%Creator: Basser Lout Version 3.10 (November 1996)
-%%CreationDate: Sun Aug 13 13:16:53 2000
-%%DocumentData: Binary
-%%DocumentNeededResources: (atend)
-%%DocumentMedia: Plain 595 842 0 white ()
-%%DocumentSuppliedResources: (atend)
-%%Pages: (atend)
-%%BoundingBox: 0 0 595 842
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software
+%%Title: spec.dvi
+%%Pages: 30
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: Palatino-Roman Courier Palatino-Bold Palatino-Italic
+%%+ Courier-Oblique Courier-Bold Courier-BoldOblique Palatino-BoldItalic
 %%EndComments
-
-%%BeginProlog
-%%BeginResource: procset LoutStartUp
-/m  { 3 1 roll moveto show } bind def
-/s  { exch currentpoint exch pop moveto show } bind def
-/k  { exch neg 0 rmoveto show } bind def
-/ul { gsave setlinewidth dup 3 1 roll
-      moveto lineto stroke grestore } bind def
-/in { 1440 mul } def
-/cm { 567 mul } def
-/pt { 20 mul } def
-/em { 120 mul } def
-/sp { louts mul } def
-/vs { loutv mul } def
-/ft { loutf mul } def
-/dg {           } def
-
-/LoutGraphic {
-  /louts exch def
-  /loutv exch def
-  /loutf exch def
-  /ymark exch def
-  /xmark exch def
-  /ysize exch def
-  /xsize exch def
-} def
-
-/LoutGr2 { gsave translate LoutGraphic gsave } def
-
-/LoutFont
-{ findfont exch scalefont setfont
-} bind def
-
-/LoutRecode {
-  { findfont dup length dict begin
-    {1 index /FID ne {def} {pop pop} ifelse} forall
-    /Encoding exch def
-    currentdict end definefont pop
-  }
-  stopped pop
-} bind def
-
-/BeginEPSF {
-  /LoutEPSFState save def
-  /dict_count countdictstack def
-  /op_count count 1 sub def
-  userdict begin
-  /showpage { } def
-  0 setgray 0 setlinecap
-  1 setlinewidth 0 setlinejoin
-  10 setmiterlimit [] 0 setdash newpath
-  /languagelevel where
-  { pop languagelevel
-    1 ne
-    { false setstrokeadjust false setoverprint
-    } if
-  } if
-} bind def
-
-/EndEPSF {
-  count op_count sub { pop } repeat
-  countdictstack dict_count sub { end } repeat
-  LoutEPSFState restore
-} bind def
-%%EndResource
-
-%%BeginResource encoding vec2
-/vec2 [
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
-/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-/zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /less /equal /greater /question
-/at /A /B /C /D /E /F /G
-/H /I /J /K /L /M /N /O
-/P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-/quoteleft /a /b /c /d /e /f /g
-/h /i /j /k /l /m /n /o
-/p /q /r /s /t /u /v /w
-/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
-/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi
-/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
-/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
-/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
-/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
-/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
-/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
-/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
-/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
-/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
-/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
-/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
-/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
-/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
-/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
-/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o spec.ps spec
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2003.10.31:2300
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+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."
+% @}
+% 
+% 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.
+% 
+% Character code assignments were made as follows:
+% 
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+% 
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+% 
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+% 
+% (4) Remaining positions left undefined are for use in (hopefully)
+% upward-compatible revisions, if someday more characters are generally
+% available.
+% 
+% (5) hyphen appears twice for compatibility with both 
+% ASCII and Windows.
+% 
+/TeXBase1Encoding [
+% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
+  /.notdef /dotaccent /fi /fl
+  /fraction /hungarumlaut /Lslash /lslash
+  /ogonek /ring /.notdef
+  /breve /minus /.notdef 
+% These are the only two remaining unencoded characters, so may as
+% well include them.
+  /Zcaron /zcaron 
+% 0x10
+ /caron /dotlessi 
+% (unusual TeX characters available in, e.g., Lucida Bright)
+ /dotlessj /ff /ffi /ffl 
+ /.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.
+ /grave /quotesingle 
+% 0x20 (ASCII begins)
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef % rubout; ASCII ends
+% 0x80
+ /.notdef /.notdef /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /.notdef /.notdef /Ydieresis
+% 0xA0
+ /.notdef % nobreakspace
+ /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot
+ /hyphen % Y&Y (also at 45); Windows' softhyphen
+ /registered
+ /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
 ] def
-%%EndResource
-
-%%BeginResource: procset LoutMarginNotes
-% @PrependGraphic file /usr/lib/lout/include/dl.lpg
-
-% path for @FullWidthRule symbol
-/LoutRule
-{ 0 0 moveto xsize 0 lineto
-} def
-
-% path for @Box symbol
-/LoutBox
-{ 0 0 moveto xsize 0 lineto
-  xsize ysize lineto 0 ysize lineto
-  closepath
-} def
-
-% path for @CurveBox symbol
-/LoutCurveBox
-{ xmark 0 moveto
-  xsize xmark sub xmark xmark 270 360 arc
-  xsize xmark sub ysize xmark sub xmark 0 90 arc
-  xmark ysize xmark sub xmark 90 180 arc
-  xmark xmark xmark 180 270 arc
-  closepath
-} def
-
-% path for @ShadowBox symbol
-/LoutShadowBox
-{ xmark 2 mul 0 moveto xsize 0 lineto
-  xsize ysize xmark 2 mul sub lineto
-  xsize xmark sub ysize xmark 2 mul sub lineto
-  xsize xmark sub xmark lineto
-  xmark 2 mul xmark lineto
-  closepath
-} def
-
-% set up dictionary containing margin note data: parity LoutMargSet -
-/LoutMargSet
-{ /LoutMargDict 12 dict def
-  LoutMargDict begin
-    /parity exch def
-    /matr matrix currentmatrix def
-    /rightx xsize def
-    /lefty ysize def   % highest allowable point for top of next left note
-    /righty ysize def  % highest allowable point for top of next right note
-    /max { 2 copy gt { pop } { exch pop } ifelse } def
-    /min { 2 copy lt { pop } { exch pop } ifelse } def
-  end
-} def
-
-%translate coordinate system for marginal notes:  type LoutMargShift -
-% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
-/LoutMargShift
-{ LoutMargDict begin
-
-    % y coordinate of top of note, in margin coords, before vertical adjust
-    0 ysize transform matr itransform exch pop
-
-    % decide whether left or right margin based on type and parity
-    exch [ 0 1 parity 1 parity sub ] exch get 0 eq
-    {
-      % left margin: adjust top of note downwards if overlaps previous note
-      lefty min
-
-      % bottom of note is new lefty position and also translate position
-      ysize sub dup /lefty exch def
-
-      % want right edge of note at coordinate zero
-      xsize neg exch
-    }
-    {
-      % right margin: adjust top of note downwards if overlaps previous note
-      righty min
-
-      % bottom of note is new righty position and also translate position
-      ysize sub dup /righty exch def
-
-      % want left edge of note at coordinate rightx
-      rightx exch
-    } ifelse
-
-    % stack now contains coord of bottom left corner in margin coordinates
-    matr setmatrix translate
-  end
-} def
-
-% create LoutPageDict with left, right, foot, top for @Place symbol users
-/LoutPageSet
-{
-  /LoutPageDict 5 dict def
-  LoutPageDict begin
-    /matr matrix currentmatrix def
-    /left 0 def
-    /right xsize def
-    /foot 0 def
-    /top ysize def
-  end
-
-} def
-
-%%EndResource
 
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+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
+
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+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
+
+%%EndProcSet
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+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
+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
+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
+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
+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
+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
+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
+/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
+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
+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
+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
+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
+/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
+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
+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
+rf /Fs 140[42 3[54 58 2[55 7[44 1[50 22[33 34 73[{
+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
+206.559 /Palatino-Roman rf end
 %%EndProlog
-
 %%BeginSetup
-%%IncludeResource: font Times-Roman
-/Times-Romanfnt82 vec2 /Times-Roman LoutRecode
-/fnt82 { /Times-Romanfnt82 LoutFont } def
-%%IncludeResource: font Times-Bold
-/Times-Boldfnt84 vec2 /Times-Bold LoutRecode
-/fnt84 { /Times-Boldfnt84 LoutFont } def
-%%IncludeResource: font Courier-Bold
-/Courier-Boldfnt31 vec2 /Courier-Bold LoutRecode
-/fnt31 { /Courier-Boldfnt31 LoutFont } def
-%%IncludeResource: font Times-Italic
-/Times-Italicfnt83 vec2 /Times-Italic LoutRecode
-/fnt83 { /Times-Italicfnt83 LoutFont } def
-%%EndSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
 
+%%EndSetup
 %%Page: 1 1
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-340 fnt84 1359 13532(User)m 2118(ser)s 3(vice)k 3190(daemon)s
-4421(and)s 5047(client)s 5922(speci\207cation)s 200 fnt82 2792 13016(Ian)m
-3093(Jackson)s gsave
-3770 13061 translate
-0.6953 1.0000 scale
-200 fnt31 1031 -43(<ian@davenant.greenend.org.uk>)m 
-grestore
-240 fnt82 4305 12515(1.0.1)m
-9066 609 0 609 240 240 60 0 11255 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 5(0.1.)m 628(Abstract)s 
-grestore
-0 10961(This)m 476(is)s
-686(a)s 852(speci\207cation)s 2117(for)s 2455(a)s 2621(Unix)s
-3155(system)s 3879(f)s 2(acility)k 4606(to)s 4845(allo)s 6(w)k
-5424(one)s 5826(program)s 6696(to)s 6935(in)s 9(v)k 4(ok)k 2(e)k
-7628(another)s 8405(when)s 0 10721(only)m 480(limited)s 1214(trust)s
-1698(e)s 3(xists)k 2290(between)s 3144(them.)s 9066 670 0 670 240 240 60 0 9697 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84
-0 66(0.2.)m 628(Copyright)s 2109(Notice)s 
-grestore
-gsave
-0 9457 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-
-grestore
-560 9403(is)m 770(Cop)s 2(yright)k 1799(1996-2000)s 2893(Ian)s
-3255(Jackson.)s gsave
-0 9049 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-544 8995(is)m 737(free)s
-1146(softw)s 2(are;)k 2062(you)s 2460(can)s 2832(redistrib)s 4(ute)k
-3955(it)s 4130(and/or)s 4784(modify)s 5512(it)s 5688(under)s
-6276(the)s 6607(terms)s 7172(of)s 7426(the)s 7757(GNU)s
-8315(General)s 0 8755(Public)m 659(License)s 1453(as)s 1698(published)s
-2682(by)s 2971(the)s 3314(Free)s 3789(Softw)s 2(are)k
-4699(F)s 3(oundation;)k 5894(either)s 6492(v)s 3(ersion)k
-7245(2)s 7414(of)s 7680(the)s 8023(License,)s 8867(or)s
-0 8515(\(at)m 311(your)s 810(option\))s 1550(an)s 3(y)k
-1947(later)s 2430(v)s 3(ersion.)k 0 8107(This)m 476(program)s
-1346(is)s 1556(distrib)s 4(uted)k 2632(in)s 2875(the)s
-3223(hope)s 3745(that)s 4163(it)s 4355(will)s 4781(be)s
-5063(useful,)s 5754(b)s 4(ut)k 240 fnt83 6116 8109(without)m
-6898(any)s 7300(warr)s 3(anty)k 240 fnt82 8171 8107(;)m
-8283(without)s 0 7866(e)m 6(v)k 3(en)k 500(the)s
-848(implied)s 1636(w)s 2(arranty)k 2537(of)s 240 fnt83
-2808 7868(mer)m 8(c)k 3(hantability)k 240 fnt82 4367 7866(or)m
-240 fnt83 4626 7868(\207tness)m 5279(for)s 5623(a)s 5798(particular)s
-6833(purpose)s 240 fnt82 7598 7866(.)m 7702(See)s 8103(the)s
-8451(GNU)s 0 7626(General)m 811(Public)s 1475(License)s 2274(for)s
-2612(more)s 3159(details.)s 0 7218(Y)m 26(ou)k 442(should)s
-1139(ha)s 4(v)k 3(e)k 1640(re)s 1821(cei)s 6(v)k 3(ed)k
-2494(a)s 2660(cop)s 2(y)k 3178(of)s 3449(the)s
-3797(GNU)s 4372(Gen)s 4768(er)s 4953(al)s 5180(Pub)s
-5546(lic)s 5837(Li)s 6043(cense)s 6630(along)s 7215(with)s
-gsave
-7697 7272 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-8197(;)s 8309(if)s 8526(not,)s
-0 6977(write)m 546(to)s 785(the)s 1133(Free)s 1613(Soft)s
-2011(w)s 2(are)k 2529(F)s 3(oun)k 3016(da)s
-3242(tion,)s 3721(59)s 4012(T)s 16(em)k 4434(ple)s
-4782(Place)s 5355(-)s 5483(Suite)s 6030(330,)s 6497(Boston,)s
-7283(MA)s 7726(02111-1307,)s 0 6737(USA.)m 9066 610 0 610 240 240 60 0 5773 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 6(0.3.)m
-628(Contents)s 
-grestore
-0 5479(1.)m 1200(Introduction)s 8962(3)s 0 5252(2.)m
-1200(Client)s 1844(program)s 2714(usage)s 8952(4)s 0 5015(2.1.)m
-1200(Options)s 8952(4)s 0 4778(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k
-3118(options)s 8958(7)s 0 4541(3.)m 1200(Ex)s 3(ecution)k
-2224(en)s 9(vironment)k 3484(of)s 3755(the)s 4103(service)s
-4835(program)s 8959(8)s 0 4304(3.1.)m 1200(File)s 1627(descriptors)s
-8959(8)s 0 4067(3.2.)m 1200(En)s 9(vironment)k 8955(9)s
-0 3840(4.)m 1200(Service-side)s 2436(con\207guration)s 8831(10)s 0 3603(4.1.)m
-1200(Con\207guration)s 2587(\207le)s 2948(syntax)s 8831(10)s 0 3366(4.2.)m
-1200(Con\207guration)s 2587(\207le)s 2948(directi)s 6(v)k 3(es)k
-8831(10)s 0 3128(4.3.)m 1200(Errors)s 1847(in)s 2090(the)s
-2438(con\207guration)s 3771(\207le)s 8833(16)s 0 2890(4.4.)m 1200(Def)s 2(aults)k
-8833(16)s 0 2663(5.)m 1200(Information)s 2398(passed)s 3094(through)s
-3896(the)s 4244(client/daemon)s 5655(combination)s 8839(18)s 0 2425(6.)m
-1200(Applications)s 2473(and)s 2877(notes)s 3433(on)s 3730(use)s
-8831(20)s 0 2187(6.1.)m 1200(Examples)s 8831(20)s 0 1949(6.2.)m
-1200(Standard)s 2108(services)s 2928(and)s 3332(directory)s 4248(management)s
-8831(20)s 0 1711(6.3.)m 1200(Reducing)s 2171(the)s 2519(number)s
-3310(of)s 3581(absolutely)s 4618(pri)s 6(vile)k 3(ged)k
-5636(subsystems)s 8831(20)s 0 1473(6.4.)m 1200(Do)s 1546(not)s
-1912(gi)s 6(v)k 3(e)k 2371(a)s 3(w)k 2(ay)k
-2925(e)s 3(xcessi)k 6(v)k 3(e)k 3885(pri)s 6(vile)k 3(ge)k
-4781(to)s gsave
-5020 1527 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-5520(-using)s 6171(f)s 2(acilities)k
-8831(20)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
-2462(client)s 3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
+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 1592 1686 a Fq(1.0.1.1potatp.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
 %%Page: 2 2
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(2)m 240 fnt82 0 13252(6.5.)m gsave
-1200 13306 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(userv)m 
-grestore
-1760(can)s 2149(often)s 2697(replace)s gsave
-3442 13306 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(sudo)m 
-grestore
-3842(,)s 3949(b)s 4(ut)k 4311(not)s
-gsave
-4677 13306 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(really)m 
-grestore
-8851(21)s 0 13014(6.6.)m 1200(Error)s
-1763(handling)s 2654(and)s 3058(input)s 3610(streams)s 4390(\(e)s 3(g)k
-4745(stdin\))s 8832(22)s 0 12776(6.7.)m 1200(Don')s 4(t)k
-1814(gi)s 6(v)k 3(e)k 2273(access)s 2934(to)s
-3173(general-purpose)s 4769(utilities)s 8832(22)s 0 52(1.0.1)m 4809(User)s
-5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 3 3
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8953 13842(3)m gsave
-0 12792 translate
-240 fnt82 9066 622 0 622 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 4(1.)m 412(Intr)s 6(oduction)k
-
-grestore
-240 fnt82 0 12330(There)m 613(is)s 823(a)s 989(daemon)s
-1804(which)s 2446(in)s 9(v)k 4(ok)k 2(es)k
-3227(user)s 3685(service)s 4417(programs)s 5371(\(henceforth)s 6529(`services'\))s
-7584(in)s 7827(response)s 8720(to)s 0 12090(requests)m 822(by)s
-1104(callers)s 1765(of)s 2024(a)s 2178(companion)s 3287(client)s
-3865(program)s 4723(\(henceforth)s 5869(the)s 6205(`client'\))s 7009(and)s
-7401(according)s 8385(to)s 8611(rules)s 0 11850(set)m 325(forth)s
-846(in)s 1089(system-wide)s 2353(and)s 2757(user)s 4(-speci\207c)k
-4013(con\207guration)s 5346(\207les.)s 5848(The)s 6276(companion)s 7397(client)s
-7987(program)s 0 11610(is)m 210(setuid)s 839(root,)s 1331(and)s
-1735(ne)s 3(gotiates)k 2752(with)s 3234(the)s 3582(daemon)s
-4397(through)s 5199(an)s gsave
-5482 11664 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(AF_UNIX)m 
-grestore
-6242(sock)s 2(et)k
-6911(and)s 7315(associated)s 8355(objects)s 0 11370(in)m 243(a)s
-409(system-wide)s 1673(pri)s 6(v)k 6(ate)k 2380(directory)s
-3296(set)s 3621(aside)s 4168(for)s 4506(the)s 4854(purpose.)s
-5716(The)s 6144(user)s 6602(who)s 7068(wishes)s 7770(the)s
-8118(service)s 8850(to)s 0 11130(be)m 282(performed)s 1335(and)s
-1739(calls)s 2227(the)s 2575(client)s 3165(is)s 3375(called)s
-4003(the)s 4351(`calling)s 5133(user';)s 5722(the)s 6070(process)s
-6838(which)s 7480(calls)s 7968(the)s 8316(client)s 8906(is)s
-0 10890(called)m 628(the)s 976(`calling)s 1758(process'.)s 0 10482(The)m
-428(daemon)s 1243(and)s 1647(the)s 1995(client)s 2585(are)s
-2932(responsible)s 4077(for)s 4415(ensuring)s 5292(that)s 5710(information)s
-6895(is)s 7105(safely)s 7729(carried)s 8449(across)s 0 10242(the)m
-338(security)s 1138(boundary)s 2087(between)s 2931(the)s 3269(tw)s 2(o)k
-3669(users,)s 4257(and)s 4650(that)s 5058(the)s 5396(processes)s
-6353(on)s 6640(either)s 7233(side)s 7664(cannot)s 8351(interact)s
-0 10002(with)m 482(each)s 977(other)s 1528(in)s 1771(an)s 3(y)k
-2168(une)s 3(xpected)k 3313(w)s 2(ays.)k 0 52(User)m
-511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s
-8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 4 4
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(4)m gsave
-0 12729 translate
-240 fnt82 9066 688 0 688 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 70(2.)m 412(Client)s
-1382(pr)s 6(ogram)k 2737(usage)s 
-grestore
-gsave
-480 12081 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-gsave
-864 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(options)m 
-grestore
-2003([\211\211])s gsave
-2723 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(service\211user)m
-
-grestore
-gsave
-4591 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(service\211name)m 
-grestore
-6594([)s gsave
-6738 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(ar)m 8(gument)k
-
-grestore
-8181(\202])s 0 -305(userv)m gsave
-864 -253 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(options)m 
-grestore
-2003(\211B|\211\211builtin)s
-3875([\211\211])s gsave
-4595 -253 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(b)m 4(uiltin\211service)k 
-grestore
-6742([)s
-gsave
-6886 -253 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(info\211ar)m 8(gument)k 
-grestore
-9029(\202])s 
-grestore
-240 fnt83
-0 11208(service-user)m 240 fnt82 1232 11206(speci\207es)m 2106(which)s 2748(user)s
-3206(is)s 3416(to)s 3655(pro)s 3(vide)k 4439(the)s
-4787(service.)s 5567(The)s 5995(user)s 6453(may)s 6919(be)s
-7201(a)s 7367(login)s 7916(name)s 8490(or)s 8749(a)s
-0 10966(numeric)m 836(uid,)s 1249(or)s gsave
-1508 11020 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211)m
-
-grestore
-1668(to)s 1907(indicate)s 2719(that)s 3137(the)s 3485(service)s
-4217(user)s 4675(is)s 4885(to)s 5124(be)s 5406(the)s
-5754(same)s 6301(as)s 6551(the)s 6899(calling)s 7602(user)s 13(.)k
-0 10558(The)m 428(service)s 1160(name)s 1734(is)s 1944(interpreted)s
-3036(by)s 3330(the)s 3678(userv)s 153 fnt82 4191 10647(1)m
-240 fnt82 4311 10558(daemon)m 5126(on)s 5423(behalf)s 6092(of)s
-6363(the)s 6711(service)s 7443(user)s 13(.)k 7932(It)s
-8137(will)s 8563(often)s 0 10318(be)m 282(the)s 630(name)s
-1204(of)s 1475(a)s 1641(program.)s 9066 670 0 670 240 240 60 0 9294 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(2.1.)m
-628(Options)s 
-grestore
-0 8832(Single-letter)m 1233(options)s 1983(may)s 2442(be)s
-2718(combined)s 3714(as)s 3957(is)s 4161(usual)s 4714(with)s
-5190(Unix)s 5718(programs,)s 6721(and)s 7119(the)s 7461(v)s 6(alue)k
-8022(for)s 8354(such)s 8843(an)s 0 8592(option)m 669(may)s
-1135(appear)s 1832(in)s 2075(the)s 2423(same)s 2970(ar)s 4(gument)k
-3929(or)s 4188(in)s 4431(the)s 4779(ne)s 3(xt.)k
-gsave
-120 8238 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211B)m 
-grestore
-gsave
-120 7998 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211builtin)m 
-grestore
-480 7704(Re)m
-742(quests)s 1385(that)s 1797(a)s 1956(b)s 4(uiltin)k
-2627(ser)s 2905(vice)s 3352(be)s 3628(pro)s 3940(vid)s
-4244(ed.)s 4567(This)s 5037(is)s 5241(equi)s 6(v)k
-5762(a)s 5868(lent)s 6279(to)s 6512(us)s 6716(ing)s
-7068(the)s gsave
-7410 7758 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override)m 
-grestore
-8464(op)s 8697(tion)s
-480 7463(to)m 719(spec)s 1137(i)s 1197(fy)s 1450(a)s
-1616(string)s 2213(con)s 2556(sist)s 2874(ing)s 3233(of)s
-gsave
-3504 7517 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211builtin)m 
-grestore
-5065(fol)s 5325(lo)s 6(wed)k
-5962(by)s 6256(the)s 240 fnt83 6604 7465(b)m 4(uiltin-)k
-7291(service)s 240 fnt82 8020 7463(re)m 8201(quest)s 8706(ed,)s
-480 7223(and)m 870(re)s 1051(quest)s 1556(ing)s 1900(a)s
-2052(ser)s 2330(vice)s 2769(user)s 3213(of)s gsave
-3469 7277 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211)m 
-grestore
-3615(\(in)s 3877(di)s 4057(cat)s 4335(ing)s
-4679(the)s 5012(call)s 5351(ing)s 5696(user\).)s 6322(If)s
-6538(the)s 6871(b)s 4(uiltin)k 7534(ser)s 7812(vice)s
-8251(be)s 8473(ing)s 8817(re)s 8998(-)s 480 6983(quest)m
-985(ed)s 1254(re)s 1435(quires)s 2054(a)s 240 fnt83
-2204 6985(service-)m 2947(ar)s 8(gument)k 240 fnt82 3905 6983(then)m
-4358(this)s 4738(must)s 5247(be)s 5513(sup)s 5839(plied)s
-6359(to)s 6582(the)s 6914(client)s 7488(in)s 7715(the)s
-8047(same)s 8578(ar)s 8763(gu)s 8998(-)s 480 6742(ment)m
-1012(as)s 1256(the)s 240 fnt83 1598 6744(b)m 4(uiltin-)k
-2285(service)s 240 fnt82 2954 6742(.)m 3052(See)s 3447(`Di)s
-3759(rec)s 4043(ti)s 6(v)k 3(es)k 4530(for)s
-4862(chang)s 5427(ing)s 5780(e)s 3(x)k 5998(e)s
-6100(cu)s 6321(tion)s 6744(set)s 7009(tings',)s 7654(page)s
-8156(14)s 8444(for)s 8776(de)s 8998(-)s 480 6502(tails)m
-921(of)s 1184(the)s 1524(b)s 4(uiltin)k 2193(ser)s
-2471(vices)s 3006(a)s 4(v)k 6(ail)k 3455(able,)s
-3952(and)s 4348(`Security-)s 5291(o)s 3(v)k 3(erriding)k
-6326(op)s 6559(tions',)s 7203(page)s 7703(7)s 7863(for)s
-8193(de)s 8415(tails)s 8855(of)s 480 6261(the)m gsave
-822 6315 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211override)m 
-grestore
-1877(op)s 2110(tions.)s 2733(The)s 3155(ac)s
-3360(tu)s 3541(al)s 3762(ser)s 4040(vice)s 4488(name)s
-5056(passed)s 5746(will)s 6166(be)s 6442(the)s 240 fnt83
-6784 6263(b)m 4(uiltin-)k 7471(service)s 240 fnt82 8140 6261(;)m
-8246(note)s 8708(that)s 480 6021(this)m 876(ac)s 1081(tu)s
-1262(al)s 1489(ser)s 1767(vice)s 2221(name)s 2795(\(as)s
-3124(op)s 3357(posed)s 3974(to)s 4213(the)s 4561(o)s 3(v)k 3(er)k
-4980(ride)s 5407(data\))s 5933(and)s 6337(the)s 240 fnt83
-6685 6023(info-)m 7124(ar)s 8(gument)k 240 fnt82 8038 6021(s)m
-8182(sup)s 8508(plied)s 480 5781(will)m 906(be)s 1188(ig)s
-1367(nored)s 1970(by)s 2264(most)s 2789(b)s 4(uiltin)k
-3466(ser)s 3744(vices;)s 4347(the)s 4695(o)s 3(v)k 3(er)k
-5114(ride)s 5541(mech)s 6056(a)s 6162(nism)s 6687(and)s
-gsave
-7091 5835 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211builtin)m 
-grestore
-8652(will)s 480 5541(be)m 762(used)s
-1259(to)s 1498(en)s 1721(sure)s 2175(that)s 2593(the)s
-2941(right)s 3452(b)s 4(uiltin)k 4129(ser)s 4407(vice)s
-4861(is)s 5071(called)s 5699(with)s 6181(the)s 6529(right)s
-240 fnt83 7040 5543(service-)m 7783(ar)s 8(gument)k 240 fnt82
-8697 5541(s.)m gsave
-120 5201 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211f)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(fd)m
-
-grestore
-561([)s gsave
-705 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(modi\207er)m 2(s)k 
-grestore
-1961(]=)s
-gsave
-2249 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-gsave
-120 4961 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211file)m gsave
-1008 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(fd)m 
-grestore
-1281([)s gsave
-1425 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(modi\207er)m 2(s)k
-
-grestore
-2681(]=)s gsave
-2969 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-480 4667(Requests)m 1384(that)s
-1791(data)s 2238(be)s 2509(copied)s 3194(in)s 3426(and)s
-3819(out)s 4174(of)s 4434(the)s 4771(service)s 5492(using)s
-6053(pipes.)s 6651(F)s 3(or)k 7029(each)s 7513(\207le)s
-7863(or)s 8111(descriptor)s 480 4427(this)m 858(will)s 1266(be)s
-1530(done)s 2033(by)s 2309(creating)s 3113(a)s 3261(pipe,)s
-3761(one)s 4145(end)s 4531(of)s 4784(which)s 5407(is)s
-5599(passed)s 6277(to)s 6498(the)s 6827(service)s 7541(program)s
-8393(and)s 8778(the)s 480 4187(other)m 1028(end)s 1429(of)s
-1697(which)s 2336(is)s 2543(passed)s 3236(to)s 3472(a)s
-3635(cop)s 2(y)k 4149(of)s gsave
-4417 4241 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m
-
-grestore
-4774(in)s 9(v)k 4(ok)k 2(ed)k 5586(by)s
-5877(the)s 6222(client;)s 6861(the)s 7206(other)s 7754(\207le)s
-8111(descriptor)s 480 3947(passed)m 1161(to)s gsave
-1384 4001 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m
-
-grestore
-1728(will)s 2139(be)s 2405(one)s 2791(inherited)s 3683(by)s
-3961(the)s 4293(client)s 4868(program)s 5722(from)s 6230(the)s
-6563(caller)s 7136(or)s 7379(one)s 7766(opened)s 8500(by)s
-8778(the)s 480 3707(client)m 1063(program)s 1926(on)s 2215(behalf)s
-2877(of)s 3140(the)s 3481(caller)s 13(.)k 4153(The)s
-4574(descriptor)s 5581(in)s 5817(the)s 6157(service)s 6882(program)s
-7744(that)s 8155(should)s 8844(be)s 480 3466(connected)m 1503(must)s
-2023(be)s 2299(speci\207ed)s 3202(as)s 240 fnt83 3446 3468(fd)m
-240 fnt82 3638 3466(,)m 3740(either)s 4338(as)s 4582(a)s
-4743(decimal)s 5548(number)s 6334(or)s 6588(as)s 6832(one)s
-7229(of)s 7494(the)s 7837(strings)s gsave
-8519 3520 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdin)m
-
-grestore
-9019(,)s gsave
-480 3280 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdout)m 
-grestore
-1126 3226(or)m gsave
-1370 3280 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(stderr)m 
-grestore
-1970(.)s 2059(The)s 2473(ne)s 3(xt)k
-2927(ar)s 4(gument)k 3871(is)s 4067(a)s 4218(\207lename)s
-5082(which)s 5709(will)s 6121(be)s 6388(opened)s 7123(by)s
-7403(the)s 7736(client)s 8311(with)s 8778(the)s 480 2985(pri)m 6(vile)k 3(ges)k
-1458(of)s 1722(the)s 2064(calling)s 2760(user)s 13(.)k
-240 fnt83 3303 2987(modi\207er)m 2(s)k 240 fnt82 4240 2985(is)m
-4444(used)s 4934(to)s 5166(specify)s 5904(whether)s 6727(the)s
-7069(\207le)s 7423(or)s 7676(descriptor)s 8684(is)s 8887(to)s
-480 2745(be)m 762(read)s 1230(from)s 1754(or)s 2012(written)s
-2745(to.)s 3034(It)s 3239(consists)s 4046(of)s 4317(a)s
-4482(series)s 5076(of)s 5346(w)s 2(ords)k 5980(separated)s
-6939(by)s 7233(commas.)s 8133(A)s 8362(comma)s 480 2504(may)m
-946(separate)s 1784(the)s 240 fnt83 2132 2506(modi\207er)m 2(s)k
-240 fnt82 3076 2504(from)m 3600(the)s 240 fnt83 3948 2506(fd)m
-240 fnt82 4200 2504(and)m 4604(is)s 4814(required)s 5668(if)s
-240 fnt83 5885 2506(fd)m 240 fnt82 6137 2504(is)m 6347(not)s
-6713(numeric.)s 7660(The)s 8088(modi\207er)s 480 2264(w)m 2(ords)k
-1114(are:)s gsave
-600 2078 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m 
-grestore
-gsave
-960 1838 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_RDONLY)m
-
-grestore
-1761 1784(:)m 1867(Allo)s 6(w)k 2513(reading)s 3283(and)s
-3687(not)s 4053(writing.)s 4847(May)s 5340(not)s 5706(be)s
-5988(used)s 6485(with)s gsave
-6967 1838 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-7527(or)s
-7786(things)s 8422(that)s 960 1544(imply)m 1572(it.)s gsave
-600 1358 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(write)m 
-grestore
-1134 0 0 0 240 240 60 0 947 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-122 fnt82 0 752(1)m gsave
-58 725 translate
-0.6953 1.0000 scale
-192 fnt31 0 -42(userv)m
-
-grestore
-192 fnt82 505 682(is)m 673(short)s 1103(for)s 1373(`user)s
-1802(services',)s 2566(and)s 2890(is)s 3058(pronounced)s 4010(`you-serv)s 2(e'.)k
-240 fnt82 0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s
-6867(and)s 7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 5 5
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8953 13844(5)m gsave
-960 13308 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_WRONLY)m 
-grestore
-240 fnt82
-1761 13254(:)m 1867(Allo)s 6(w)k 2513(writing)s 3256(and)s
-3660(not)s 4026(reading.)s 240 fnt83 4847 13256(Doesn')m 7(t)k
-5661(truncate)s 6511(or)s 6789(cr)s 8(eate)k 240 fnt82
-7431 13254(without)m gsave
-8222 13308 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(truncate)m 
-grestore
-960 13014(or)m gsave
-1219 13068 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(create)m 
-grestore
-1819(.)s gsave
-1923 13068 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-2483(or)s
-2742(things)s 3378(that)s 3796(imply)s 4408(it)s 4600(may)s
-5066(not)s 5432(be)s 5714(used)s 6211(with)s gsave
-6693 13068 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(read)m 
-grestore
-7093(.)s gsave
-600 12828 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(overwrite)m 
-grestore
-960 12534(Equi)m 6(v)k 6(alent)k
-2044(to)s gsave
-2283 12588 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write,create,truncate)m 
-grestore
-4385(.)s gsave
-600 12348 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(create)m 
-grestore
-gsave
-600 12108 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(creat)m 
-grestore
-gsave
-960 11868 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_CREAT)m
-
-grestore
-1660 11814(:)m 1766(Creates)s 2533(the)s 2881(\207le)s 3242(if)s
-3459(necessary)s 15(.)k 4477(Implies)s gsave
-5244 11868 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m
-
-grestore
-5744(.)s gsave
-600 11628 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(exclusive)m 
-grestore
-gsave
-600 11388 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(excl)m
-
-grestore
-gsave
-960 11148 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_EXCL)m 
-grestore
-1560 11094(:)m 1666(F)s 3(ails)k
-2178(if)s 2395(the)s 2743(\207le)s 3104(already)s 3861(e)s 3(xists.)k
-4506(Implies)s gsave
-5273 11148 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-5833(and)s gsave
-6237 11148 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(create)m 
-grestore
-6837(.)s 6941(May)s 7434(not)s 7800(be)s
-8082(used)s 8579(with)s gsave
-960 10908 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(truncate)m 
-grestore
-1761 10854(.)m
-gsave
-600 10668 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(truncate)m 
-grestore
-gsave
-600 10428 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(trunc)m 
-grestore
-gsave
-960 10188 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(O_TRUNC)m 
-grestore
-1660 10134(:)m 1766(T)s 8(runcate)k 2663(an)s 3(y)k
-3060(e)s 3(xisting)k 3867(\207le.)s 4276(Implies)s gsave
-5043 10188 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(write)m 
-grestore
-5543(.)s 5647(May)s 6140(not)s 6506(be)s
-6788(used)s 7285(with)s gsave
-7767 10188 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(exclusive)m 
-grestore
-8668(.)s
-gsave
-600 9948 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(append)m 
-grestore
-gsave
-960 9708 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_APPEND)m 
-grestore
-1761 9654(:)m
-1867(All)s 2227(writes)s 2861(will)s 3287(append)s 4037(to)s
-4276(the)s 4624(\207le.)s 5033(Implies)s gsave
-5800 9708 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m
-
-grestore
-6360(\(b)s 4(ut)k 6801(not)s gsave
-7167 9708 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(create)m
-
-grestore
-7767(\).)s gsave
-600 9468 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sync)m 
-grestore
-gsave
-960 9228 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_SYNC)m
-
-grestore
-1560 9174(:)m 1666(Do)s 2012(writes)s 2646(synchronously)s 15(.)k
-4132(Implies)s gsave
-4899 9228 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-5399(.)s gsave
-600 8988 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(wait)m 
-grestore
-gsave
-600 8748 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(nowait)m 
-grestore
-gsave
-600 8508 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(close)m
-
-grestore
-960 8214(These)m 1587(modi\207ers)s 2541(control)s 3273(the)s 3621(beha)s 4(viour)k
-4634(of)s 4905(the)s 5253(client,)s 5890(with)s 6372(respect)s
-7108(to)s 7347(the)s 7695(pipes)s 8251(carrying)s 960 7974(data)m
-1418(to)s 1657(and)s 2061(from)s 2585(the)s 2933(service,)s
-3716(when)s 4292(the)s 4640(service)s 5372(terminates.)s 6470(See)s
-6871(belo)s 6(w)k 15(.)k gsave
-600 7788 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(fd)m
-
-grestore
-960 7494(The)m 240 fnt83 1388 7496(\207lename)m 240 fnt82 2252 7494(is)m
-2462(not)s 2828(a)s 2994(\207lename)s 3873(b)s 4(ut)k
-4235(a)s 4401(numeric)s 5237(\207le)s 5598(descriptor)s 13(.)k
-6644(One)s 7099(or)s 7358(both)s 7841(of)s gsave
-8112 7548 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(read)m 
-grestore
-8572(and)s gsave
-960 7307 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-1520 7253(must)m
-2045(be)s 2327(speci\207ed,)s 3284(and)s 3688(no)s 3981(other)s
-4532(w)s 2(ords)k 5166(are)s 5513(allo)s 6(wed.)k
-6368(The)s 240 fnt83 6796 7255(\207lename)m 240 fnt82 7660 7253(may)m
-8126(also)s 8564(be)s gsave
-960 7067 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdin)m 
-grestore
-1460 7013(,)m
-gsave
-1567 7067 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdout)m 
-grestore
-2227(or)s gsave
-2486 7067 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stderr)m
-
-grestore
-3146(for)s 3484(\207le)s 3845(descriptor)s 4860(0,)s 5087(1)s
-5242(or)s 5501(2)s 5675(respecti)s 6(v)k 3(ely)k 15(.)k
-480 6748(If)m 701(no)s 240 fnt83 984 6750(modi\207er)m 2(s)k
-240 fnt82 1918 6748(which)m 2550(imply)s gsave
-3152 6802 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m
-
-grestore
-3602(or)s gsave
-3851 6802 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-4401(are)s 4738(used)s
-5226(it)s 5408(is)s 5608(as)s 5848(if)s gsave
-6055 6802 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(write)m 
-grestore
-6605(had)s 6999(been)s 7498(speci\207ed,)s 8445(e)s 3(xcept)k
-480 6508(that)m 898(if)s 1115(the)s 1463(\207ledescriptor)s 2783(0)s
-2958(of)s 3229(the)s 3577(service)s 4309(is)s 4519(being)s
-5104(opened)s 5854(\(either)s 6536(speci\207ed)s 7444(numerically)s 8639(or)s
-480 6268(with)m gsave
-962 6322 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdin)m 
-grestore
-1462(\))s 1590(it)s
-1782(is)s 1992(as)s 2242(if)s gsave
-2459 6322 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(overwrite)m
-
-grestore
-3420(had)s 3824(been)s 4333(speci\207ed)s 5241(\(or)s gsave
-5579 6322 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(write)m 
-grestore
-6139(if)s 6356(only)s gsave
-6836 6322 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(fd)m
-
-grestore
-7096(w)s 2(as)k 7517(speci\207ed\).)s 8610(The)s 480 6028(client)m
-1064(will)s 1483(also)s 1915(use)s gsave
-2283 6082 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(O_NOCTTY)m
-
-grestore
-3137(when)s 3707(opening)s 4525(\207les)s 4968(speci\207ed)s 5869(by)s
-6156(the)s 6498(caller)s 9(,)k 7118(to)s 7351(a)s 4(v)k 4(oid)k
-7926(changing)s 8850(its)s 480 5788(controlling)m 1581(terminal.)s 2539(By)s
-2871(def)s 2(ault)k 3591(stdin,)s 4161(stdout)s 4805(and)s
-5207(stderr)s 5809(of)s 6079(the)s 6425(service)s 7156(will)s
-7580(be)s 7861(connected)s 8887(to)s 480 5548(the)m 811(corresponding)s
-2216(descriptors)s 3297(on)s 3577(the)s 3907(client.)s 4524(Diagnostics)s
-5686(from)s 6193(the)s 6523(client)s 7096(and)s 7482(daemon)s
-8280(will)s 8688(also)s 480 5308(appear)m 1177(on)s 1473(stderr)s 13(.)k
-2167(If)s gsave
-2396 5362 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m 
-grestore
-2856(is)s 3065(speci\207ed,)s
-4022(the)s 4369(client)s 4959(will)s 5384(w)s 2(ait)k
-5853(for)s 6190(the)s 6538(pipe)s 7005(to)s 7244(be)s
-7525(closed,)s 8243(and)s 8646(only)s 480 5068(e)m 3(xit)k
-889(after)s 1379(this)s 1769(has)s 2132(happened.)s 3148(This)s
-3618(means)s 4274(that)s 4685(either)s 5282(the)s 5624(recei)s 6(ving)k
-6554(end)s 6951(of)s 7216(the)s 7558(pipe)s 8019(connection)s
-480 4828(w)m 2(as)k 901(closed)s 1570(while)s 2157(data)s
-2615(w)s 2(as)k 3036(still)s 3448(a)s 4(v)k 6(ailable)k
-4356(at)s 4588(the)s 4936(sending)s 5734(end,)s 6187(or)s
-6446(that)s 6864(the)s 7212(end)s 7616(of)s 7887(\207le)s
-8248(w)s 2(as)k 480 4588(reached)m 1279(on)s 1573(the)s
-1919(reading)s 2686(\207le)s 3045(descriptor)s 13(.)k 4088(Errors)s
-4732(encountered)s 5957(reading)s 6724(or)s 6981(writing)s 7721(in)s
-7962(the)s 8307(client)s 8894(at)s 480 4347(this)m 876(stage)s
-1423(will)s 1849(be)s 2131(considered)s 3225(a)s 3391(system)s
-4115(error)s 4638(and)s 5042(cause)s 5629(the)s 5977(client)s
-6567(to)s 6806(e)s 3(xit)k 7221(with)s 7703(status)s
-8298(255,)s 8764(b)s 4(ut)k 480 4107(will)m 896(not)s
-1251(cause)s 1827(disconnection)s 3203(at)s 3424(the)s 3761(service)s
-4482(side)s 4913(since)s 5449(the)s 5786(service)s 6507(has)s
-6867(already)s 7613(e)s 3(xited.)k 8347(If)s gsave
-8566 4161 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(close)m 
-grestore
-480 3867(is)m 676(speci\207ed)s 1569(the)s 1902(client)s
-2477(will)s 2888(immediately)s 4121(close)s 4653(the)s 4987(pipe)s
-5440(connection)s 6532(by)s 6811(killing)s 7473(the)s 7806(rele)s 6(v)k 6(ant)k
-8608(cop)s 2(y)k 480 3627(of)m gsave
-744 3681 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m
-
-grestore
-1044(.)s 1141(If)s 1364(the)s 1705(service)s 2429(uses)s
-2885(the)s 3226(descriptor)s 4234(it)s 4418(will)s 4837(get)s
-gsave
-5182 3681 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-5935(\(or)s gsave
-6265 3681 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(EPIPE)m
-
-grestore
-6765(\))s 6886(for)s 7217(a)s 7376(writing)s 8111(descriptor)s
-480 3387(or)m 736(end)s 1137(of)s 1404(\207le)s 1762(for)s
-2096(a)s 2259(reading)s 3025(one;)s 3480(the)s 3824(descriptor)s
-4836(opened)s 5582(by)s 5873(or)s 6128(passed)s 6821(to)s
-7056(the)s 7401(client)s 7987(will)s 8410(also)s 8844(be)s
-480 3147(closed.)m 1255(If)s gsave
-1485 3201 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(nowait)m 
-grestore
-2145(is)s
-2355(speci\207ed)s 3263(then)s 3732(the)s 4080(client)s 4670(will)s
-5096(not)s 5462(w)s 2(ait)k 5931(and)s 6335(the)s
-6683(connection)s 7790(will)s 8216(remain)s 480 2907(open)m 1003(after)s
-1499(the)s 1847(client)s 2437(terminates.)s 3535(Data)s 4046(may)s
-4512(continue)s 5392(to)s 5631(be)s 5913(passed)s 6609(between)s
-7463(the)s 7811(inheritors)s 8777(of)s 480 2667(the)m 828(rele)s 6(v)k 6(ant)k
-1645(descriptor)s 2660(on)s 2957(the)s 3305(service)s 4037(side)s
-4478(and)s 4882(the)s 5230(corresponding)s 6652(\207le)s 7013(or)s
-7272(descriptor)s 8287(on)s 8584(the)s 480 2427(client)m 1070(side)s
-1511(until)s 2004(either)s 2607(side)s 3048(closes)s 3683(their)s
-4180(descriptor)s 13(.)k 5226(This)s 5702(should)s 6399(not)s
-6765(usually)s 7510(be)s 7792(speci\207ed)s 8700(for)s 480 2187(stderr)m
-1083(\(or)s 1421(stdout)s 2066(if)s gsave
-2283 2241 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211signals)m
-1440(stdout)s 
-grestore
-3945(is)s 4155(used\))s 4722(since)s 5269(diagnostics)s
-6396(from)s 6920(the)s 7268(service)s 8000(side)s 8441(may)s
-480 1947(arri)m 6(v)k 3(e)k 1083(after)s 1579(the)s
-1927(client)s 2517(has)s 2887(e)s 3(xited)k 3526(and)s
-3930(be)s 4212(confused)s 5134(with)s 5616(e)s 3(xpected)k
-6521(output.)s 7297(The)s 7725(def)s 2(ault)k 8446(is)s
-gsave
-8656 2001 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m 
-grestore
-480 1707(for)m 818(writing)s 1561(\207le)s
-1922(descriptors)s 3021(and)s gsave
-3425 1761 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(close)m 
-grestore
-3985(for)s
-4323(reading)s 5093(ones.)s gsave
-120 1367 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211w)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(fd)m 
-grestore
-561(=)s gsave
-705 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(action)m 
-grestore
-
-grestore
-gsave
-120 1127 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211fdwait)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(fd)m 
-grestore
-1425(=)s gsave
-1569 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(action)m 
-grestore
-
-grestore
-480 833(Sets)m 924(the)s 1267(action)s 1903(on)s
-2194(termination)s 3347(of)s 3613(the)s 3956(service)s 4682(for)s
-5015(the)s 5358(speci\207ed)s 6261(\207le)s 6616(descriptor;)s 240 fnt83
-7678 835(action)m 240 fnt82 8325 833(must)m 8844(be)s 0 52(User)m
-511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s
-8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 6 6
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(6)m gsave
-480 13305 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m 
-grestore
-240 fnt82
-880 13251(,)m gsave
-981 13305 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(nowait)m 
-grestore
-1634(or)s gsave
-1886 13305 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(close)m 
-grestore
-2439(as)s 2682(described)s 3650(abo)s 3(v)k 3(e.)k
-4313(The)s 4734(\207le)s 5088(descriptor)s 6096(must)s 6615(be)s
-6890(speci\207ed)s 7791(as)s 8034(open)s 8550(when)s 480 13011(this)m
-876(option)s 1545(is)s 1755(encountered;)s 3036(this)s 3432(option)s
-4101(is)s 4311(o)s 3(v)k 3(erridden)k 5398(by)s
-5692(an)s 3(y)k 6089(later)s gsave
-6572 13065 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211file)m
-
-grestore
-7232(or)s gsave
-7491 13065 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211fdwait)m 
-grestore
-8352(option)s 480 12771(-)m
-608(e)s 6(v)k 3(en)k 1108(by)s 1402(a)s
-gsave
-1568 12825 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211file)m 
-grestore
-2228(which)s 2870(does)s 3360(not)s
-3726(specify)s 4470(an)s 4753(action)s 5394(on)s 5691(termination)s
-6849(\(in)s 7171(this)s 7567(case)s 8034(the)s 8382(def)s 2(ault)k
-480 12531(will)m 906(be)s 1188(used,)s 1734(as)s 1984(described)s
-2958(abo)s 3(v)k 3(e\).)k gsave
-120 12201 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211D)m
-gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-1016(=)s gsave
-1160 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(value)m
-
-grestore
-
-grestore
-gsave
-120 11961 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211defvar)m gsave
-1296 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-2024(=)s
-gsave
-2168 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(value)m 
-grestore
-
-grestore
-480 11667(Set)m 845(a)s 1011(user)s 4(-)k
-1473(de\207ned)s 2236(v)s 6(ari)k 2595(able)s 240 fnt83
-3049 11669(name)m 240 fnt82 3621 11667(to)m 240 fnt83 3860 11669(val)m
-4152(ue)s 240 fnt82 4371 11667(.)m 4475(These)s 5102(user)s 4(-)k
-5564(de\207ned)s 6327(v)s 6(ari)k 6686(ables)s 7228(are)s
-7575(made)s 8149(a)s 4(v)k 6(ail)k 8598(able)s
-480 11427(in)m 723(the)s 1071(con)s 1414(\207g)s 1660(u)s
-1775(ra)s 1960(tion)s 2389(lan)s 2678(guage)s 3306(as)s
-3556(the)s 3904(pa)s 4130(ram)s 4501(e)s 4603(ters)s
-gsave
-4998 11481 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(u\211)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-
-grestore
-5764(and)s
-6168(are)s 6515(passed)s 7211(to)s 7450(the)s 7798(ser)s
-8076(vice)s 8530(in)s 8773(en)s 8996(-)s 480 11187(vi)m
-660(ron)s 976(ment)s 1508(v)s 6(ari)k 1867(ables)s
-gsave
-2402 11241 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_U_)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-
-grestore
-3709(.)s
-240 fnt83 3806 11189(name)m 240 fnt82 4371 11187(may)m 4831(con)s
-5174(tain)s 5582(only)s 6055(al)s 6222(phanu)s 6803(mer)s
-7174(ics)s 7483(and)s 7880(un)s 8117(der)s 8422(scores,)s
-480 10947(and)m 884(must)s 1409(start)s 1879(with)s 2360(a)s
-2526(let)s 2764(ter)s 13(.)k 3106(If)s 3335(se)s 6(v)k
-3643(er)s 3828(al)s 4055(de\207)s 4406(ni)s 4586(tions)s
-5102(are)s 5449(gi)s 6(v)k 5744(en)s 6026(for)s
-6364(the)s 6712(same)s 240 fnt83 7258 10949(name)m 240 fnt82
-7830 10947(then)m 8299(only)s 8778(the)s 480 10707(last)m 871(is)s
-1081(ef)s 1278(fec)s 1562(ti)s 6(v)k 3(e.)k
-gsave
-120 10416 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211t)m gsave
-432 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(seconds)m 
-grestore
-
-grestore
-gsave
-120 10176 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211timeout)m gsave
-1440 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(seconds)m 
-grestore
-
-grestore
-480 9882(T)m 8(ime)k
-1029(out)s 1392(the)s 1736(service)s 2465(if)s 2678(it)s
-2867(tak)s 2(es)k 3403(longer)s 4071(than)s 240 fnt83
-4536 9884(seconds)m 240 fnt82 5346 9882(seconds)m 6151(\(a)s 6393(positi)s 6(v)k 3(e)k
-7193(inte)s 3(ger)k 9(,)k 7948(in)s 8187(decimal\).)s
-480 9641(T)m 8(imeout)k 1331(will)s 1746(produce)s 2562(a)s
-2717(diagnostic)s 3742(on)s 4028(stderr)s 4620(and)s 5013(an)s
-5284(e)s 3(xit)k 5688(status)s 6272(of)s 6532(255.)s
-6985(If)s 240 fnt83 7204 9643(seconds)m 240 fnt82 8006 9641(is)m
-8205(zero)s 8657(then)s 480 9401(no)m 773(timeout)s 1563(will)s
-1989(be)s 2271(implemented)s 3577(\(this)s 4052(is)s 4262(the)s
-4610(def)s 2(ault\).)k gsave
-120 9061 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211S)m 
-grestore
-240 fnt83
-380 9009(method)m gsave
-120 8821 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211signals)m 
-grestore
-1081 8769(method)m 240 fnt82
-480 8527(Af)m 6(fects)k 1212(the)s 1544(handling)s 2420(of)s
-2675(the)s 3008(e)s 3(xit)k 3407(status)s 3987(when)s
-4547(the)s 4879(service)s 5596(terminates)s 6625(due)s 7012(to)s
-7235(a)s 7386(signal.)s 8045(\(The)s 8536(client)s 480 8286(will)m
-906(al)s 2(w)k 2(ays)k 1617(\207nish)s 2206(by)s
-2500(calling)s gsave
-3203 8340 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(_exit)m 
-grestore
-3703(,)s 3810(so)s
-4076(that)s 4494(only)s 4974(numbers)s 5849(from)s 6373(0)s
-6548(to)s 6787(255)s 7193(can)s 7582(be)s 7864(returned)s
-8718(and)s 480 8046(not)m 830(the)s 1162(full)s 1532(range)s
-2102(of)s 2357(numbers)s 3216(and)s 3603(signal)s 4213(indications)s
-5297(which)s 5922(can)s 6295(be)s 6561(returned)s 7398(by)s
-7676(the)s gsave
-8008 8100 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m 
-grestore
-8451(f)s 2(amily)k
-480 7805(of)m 751(system)s 1475(calls.\))s 2160(The)s 240 fnt83
-2588 7807(method)m 240 fnt82 3359 7805(may)m 3825(be)s 4107(one)s
-4509(of)s 4780(the)s 5128(follo)s 6(wing:)k 240 fnt83
-600 7567(status)m 240 fnt82 960 7325(The)m 1386(client')s 13(s)k
-2123(e)s 3(xit)k 2536(status)s 3128(will)s 3552(be)s
-240 fnt83 3831 7327(status)m 240 fnt82 4384 7325(.)m 4486(This)s
-4959(will)s 5383(not)s 5746(be)s 6026(distinguishable)s 7527(from)s
-8049(the)s 8394(service)s 960 7084(really)m 1557(ha)s 4(ving)k
-2258(e)s 3(xited)k 2897(with)s 3379(code)s 240 fnt83
-3887 7086(status)m 240 fnt82 4440 7084(.)m 4544(This)s 5020(method)s
-5796(is)s 6006(the)s 6354(def)s 2(ault,)k 7122(with)s
-7604(a)s 240 fnt83 7770 7086(status)m 240 fnt82 8383 7084(of)m
-8654(254.)s gsave
-600 6898 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(number)m 
-grestore
-gsave
-600 6658 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(number\211nocore)m
-
-grestore
-960 6364(The)m 1388(client')s 13(s)k 2128(e)s 3(xit)k
-2543(status)s 3138(will)s 3564(be)s 3846(the)s 4194(number)s
-4985(of)s 5256(the)s 5604(signal)s 6230(which)s 6872(caused)s
-7581(the)s 7929(termination)s 960 6124(of)m 1231(the)s 1579(service.)s
-2359(If)s gsave
-2589 6178 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(number)m 
-grestore
-3249(is)s 3459(used)s
-3956(rather)s 4572(than)s gsave
-5041 6178 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(number\211nocore)m 
-grestore
-6402(then)s
-6871(128)s 7278(will)s 7704(be)s 7986(added)s 960 5884(if)m
-1177(the)s 1525(service)s 2257(dumped)s 3087(core.)s gsave
-3602 5938 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(number)m 
-grestore
-4262(is)s 4472(v)s 3(ery)k 4948(lik)s 2(e)k
-5360(the)s 5708(e)s 3(xit)k 6123(code)s 6631(mangling)s
-7588(done)s 8110(by)s 8404(the)s 960 5644(Bourne)m 1721(shell.)s
-gsave
-600 5458 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(highbit)m 
-grestore
-960 5164(The)m 1388(client')s 13(s)k
-2128(e)s 3(xit)k 2543(status)s 3138(will)s 3564(be)s
-3846(the)s 4194(number)s 4985(of)s 5256(the)s 5604(signal)s
-6230(with)s 6712(128)s 7119(added.)s 7795(If)s 8025(the)s
-8373(service)s 960 4924(e)m 3(xits)k 1459(normally)s 2376(with)s
-2858(an)s 3141(e)s 3(xit)k 3556(code)s 4064(of)s
-4335(greater)s 5057(than)s 5526(127)s 5934(then)s 6403(127)s
-6811(will)s 7237(be)s 7519(returned.)s gsave
-600 4738 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdout)m
-
-grestore
-960 4444(The)m 1375(service')s 13(s)k 2247(numeric)s 3069(w)s 2(ait)k
-3524(status)s 4105(as)s 4341(tw)s 2(o)k 4737(decimal)s
-5534(numbers)s 6395(\(high)s 6943(byte)s 7397(\207rst\))s 7882(and)s
-8272(a)s 8424(te)s 3(xtual)k 960 4204(description)m 2079(of)s
-2350(its)s 2626(meaning)s 3503(will)s 3929(be)s 4211(printed)s
-4946(to)s 5185(the)s 5533(client')s 13(s)k 6273(standard)s
-7141(output.)s 7857(It)s 8062(will)s 8488(be)s 960 3964(preceded)m
-1865(by)s 2142(a)s 2292(ne)s 6(wline)k 3082(and)s
-3470(follo)s 6(wed)k 4355(by)s 4633(an)s 4899(e)s 3(xtra)k
-5417(ne)s 6(wline,)k 6258(and)s 6646(the)s 6977(numbers)s
-7836(are)s 8166(separated)s 960 3724(from)m 1484(each)s 1979(other)s
-2530(and)s 2934(from)s 3458(the)s 3806(te)s 3(xtual)k
-4508(description)s 5627(by)s 5921(single)s 6548(spaces.)s 7276(The)s
-7704(e)s 3(xit)k 8119(status)s 8714(of)s 960 3484(the)m
-1308(client)s 1898(will)s 2324(be)s 2606(zero,)s 3124(unless)s
-3773(a)s 3939(system)s 4663(error)s 5186(occurs)s 5861(in)s
-6104(which)s 6746(case)s 7213(no)s 7506(e)s 3(xit)k
-7921(status)s 8516(and)s 960 3244(description)m 2079(will)s 2505(be)s
-2787(printed)s 3522(to)s 3761(stdout,)s 4453(and)s 4857(an)s
-5140(error)s 5663(message)s 6529(will)s 6955(be)s 7237(printed)s
-7972(to)s 8211(stderr)s 960 3004(as)m 1210(usual.)s 480 2791(Problems)m
-1420(such)s 1902(as)s 2137(client)s 2713(usage)s 3299(errors,)s
-3948(the)s 4281(service)s 4999(not)s 5351(being)s 5921(found)s
-6524(or)s 6768(permission)s 7860(being)s 8430(denied)s 480 2551(or)m
-739(f)s 2(ailure)k 1415(of)s 1686(a)s 1852(system)s
-2576(call)s 2975(are)s 3322(system)s 4046(errors.)s 4706(An)s
-5056(error)s 5579(message)s 6445(describing)s 7494(the)s 7842(problem)s
-8699(will)s 480 2310(be)m 758(printed)s 1489(on)s 1782(the)s
-2125(client')s 13(s)k 2861(stderr)s 9(,)k 3498(and)s
-3898(the)s 4241(client')s 13(s)k 4977(e)s 3(xit)k
-5388(status)s 5978(will)s 6400(be)s 6678(255.)s 7138(If)s
-7363(the)s 7707(client)s 8293(dies)s 8724(due)s 480 2070(to)m
-719(a)s 885(signal)s 1511(this)s 1907(should)s 2604(be)s
-2886(treated)s 3593(as)s 3843(a)s 4009(serious)s 4737(system)s
-5461(error)s 13(.)k gsave
-120 1730 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211H)m 
-grestore
-gsave
-120 1490 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211hidecwd)m 
-grestore
-480 1196(Pre)m 6(v)k 3(ents)k 1345(the)s
-1693(calling)s 2396(process')s 13(s)k 3323(current)s 4059(directory)s
-4975(name)s 5549(from)s 6073(being)s 6658(passed)s 7354(to)s
-7593(the)s 7941(service;)s 8729(the)s 480 956(null)m 907(string)s
-1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(1.0.1)m
-4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
-7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 7 7
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8951 13844(7)m gsave
-120 13337 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211P)m 
-grestore
-gsave
-120 13097 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211sigpipe)m 
-grestore
-240 fnt82 480 12803(If)m 700(the)s 1038(service)s
-1760(program)s 2620(is)s 2820(terminated)s 3888(due)s 4280(to)s
-4509(a)s gsave
-4665 12857 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-5415(the)s 5753(e)s 3(xit)k
-6157(status)s 6742(of)s 7003(the)s 7341(client)s 7921(will)s
-8337(be)s 8608(zero,)s 480 12563(e)m 6(v)k 3(en)k
-967(if)s 1170(it)s 1349(w)s 2(ould)k 1990(ha)s 4(v)k 3(e)k
-2477(been)s 2973(something)s 4009(else)s 4423(according)s 5405(to)s
-5630(the)s 5965(e)s 3(xit)k 6366(status)s 6948(method)s
-7710(speci\207ed.)s 8650(This)s 480 12323(option)m 1149(has)s 1519(no)s
-1812(ef)s 6(fect)k 2408(on)s 2705(the)s 3053(code)s
-3561(and)s 3965(description)s 5084(printed)s 5819(if)s 6036(the)s
-6384(e)s 3(xit)k 6799(status)s 7394(method)s gsave
-8170 12377 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(stdout)m 
-grestore
-8830(is)s 480 12083(in)m 723(use.)s gsave
-120 11793 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211h)m 
-grestore
-gsave
-120 11553 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211help)m 
-grestore
-gsave
-120 11313 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211copyright)m
-
-grestore
-gsave
-480 11073 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211h)m 
-grestore
-740 11019(or)m gsave
-999 11073 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211help)m
-
-grestore
-1659(prints)s 2254(the)s 2602(client')s 13(s)k 3342(usage)s
-3943(message;)s gsave
-4865 11073 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211copyright)m 
-grestore
-6026(prints)s 6621(the)s
-6969(cop)s 2(yright)k 7944(and)s 8348(lack)s 8807(of)s
-480 10779(w)m 2(arranty)k 1381(notice.)s 9066 670 0 670 240 240 60 0 9649 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(2.2.)m
-628(Security-o)s 3(v)k 3(erriding)k 3373(options)s 
-grestore
-0 9187(There)m
-613(are)s 960(also)s 1398(some)s 1959(options)s 2715(which)s
-3357(are)s 3704(a)s 4(v)k 6(ailable)k 4612(for)s
-4950(deb)s 4(ugging)k 6011(and)s 6415(to)s 6654(allo)s 6(w)k
-7233(the)s 7581(system)s 0 8947(administrator)m 1333(to)s 1572(o)s 3(v)k 3(erride)k
-2418(a)s 2584(user')s 13(s)k 3192(polic)s 3(y)k 15(.)k
-3876(These)s 4503(options)s 5259(are)s 5606(a)s 4(v)k 6(ailable)k
-6514(only)s 6994(if)s 7211(the)s 7559(client)s 8149(is)s
-8359(called)s 0 8707(by)m 294(root)s 739(or)s 998(if)s
-1215(the)s 1563(calling)s 2266(user)s 2724(is)s 2934(the)s
-3282(same)s 3829(as)s 4079(the)s 4427(service)s 5159(user)s 13(.)k
-gsave
-120 8353 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override)m gsave
-1584 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(con\207gur)m 3(ation\211data)k
-
-grestore
-
-grestore
-gsave
-120 8113 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override\211file)m gsave
-2304 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-480 7819(Do)m
-826(not)s 1192(read)s 1661(the)s 2009(usual)s 2569(con\207guration)s
-3902(\207les.)s 4404(Instead,)s 5201(the)s 5549(client)s 6139(sends)s
-240 fnt83 6722 7821(con\207gur)m 3(ation-data)k 240 fnt82 480 7578(\(follo)m 6(wed)k
-1461(by)s 1755(a)s 1921(ne)s 6(wline\))k 2800(or)s
-3059(the)s 3407(contents)s 4255(of)s 240 fnt83 4526 7580(\207lename)m
-240 fnt82 5390 7578(\(which)m 6111(is)s 6321(opened)s 7071(in)s
-7314(the)s 7662(conte)s 3(xt)k 8423(of)s 8694(the)s
-480 7337(client\))m 1138(to)s 1377(the)s 1725(daemon)s 2540(and)s
-2944(the)s 3292(daemon)s 4107(uses)s 4570(that)s 4988(data)s
-5446(instead.)s 6227(The)s 240 fnt83 6655 7339(con\207gur)m 3(ation-data)k
-240 fnt82 8503 7337(must)m 480 7097(all)m 772(be)s 1052(in)s
-1293(one)s 1693(ar)s 4(gument.)k 2694(It)s 2897(will)s
-3321(ha)s 4(v)k 3(e)k 3820(a)s 3984(single)s
-4609(ne)s 6(wline)k 5414(appended)s 6388(so)s 6652(that)s
-7068(a)s 7232(single)s 7857(directi)s 6(v)k 3(e)k
-8737(can)s 480 6857(easily)m 1083(be)s 1357(gi)s 6(v)k 3(en,)k
-1979(b)s 4(ut)k 2333(if)s 2542(more)s 3080(than)s
-3541(one)s 3935(directi)s 6(v)k 3(e)k 4809(is)s
-5011(required)s 5857(it)s 6040(will)s 6458(ha)s 4(v)k 3(e)k
-6951(to)s 7182(contain)s 7935(one)s 8329(or)s 8579(more)s
-480 6617(real)m 892(ne)s 6(wlines.)k gsave
-120 6326 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211spoof\211user)m
-gsave
-1872 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(user)m 
-grestore
-
-grestore
-480 6032(Pretend)m 1268(to)s 1507(the)s
-1855(service)s 2587(that)s 3005(it)s 3197(is)s 3407(being)s
-3992(called)s 4620(by)s 240 fnt83 4914 6034(user)m 240 fnt82
-5391 6032(\(which)m 6112(may)s 6578(be)s 6860(a)s 7026(username)s
-7998(or)s 8257(a)s 8423(uid\).)s 480 5792(This)m 956(will)s
-1382(also)s 1820(af)s 6(fect)k 2416(the)s 2764(group)s
-3376(and)s 3780(supplementary)s 5242(groups)s 5945(supplied)s 6814(to)s
-7053(the)s 7401(service;)s 8189(the)s 3(y)k 8652(will)s
-480 5552(be)m 759(the)s 1103(standard)s 1968(group)s 2576(and)s
-2977(supplementary)s 4435(groups)s 5135(for)s 240 fnt83 5469 5554(user)m
-240 fnt82 5886 5552(.)m 5987(The)s gsave
-6411 5606 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211spoof\211user)m
-
-grestore
-7669(option)s 8334(will)s 240 fnt83 8756 5554(not)m 240 fnt82
-480 5312(af)m 6(fect)k 1076(which)s 1718(user)s 2176(is)s
-2386(chosen)s 3108(if)s 3325(the)s 3673(service)s 4405(user)s
-4863(is)s 5073(speci\207ed)s 5981(as)s 6231(just)s gsave
-6636 5366 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211)m 
-grestore
-6736(;)s 6848(in)s 7091(this)s 7487(case)s
-7954(the)s 8302(service)s 480 5072(user)m 938(will)s 1364(be)s
-1646(the)s 1994(real)s 2406(calling)s 3109(user)s 13(.)k
-0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
-3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 8 8
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(8)m gsave
-0 12726 translate
-240 fnt82 9066 688 0 688 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 70(3.)m 412(Execution)s
-1943(en)s 13(vir)k 6(onment)k 3856(of)s 4243(the)s
-4774(ser)s 3(vice)k 5846(pr)s 6(ogram)k 
-grestore
-240 fnt82
-0 12264(The)m 428(daemon)s 1243(which)s 1885(is)s 2095(handling)s
-2986(the)s 3334(service)s 4066(user)s 4524(side)s 4965(of)s
-5236(things)s 5872(will)s 6298(read)s 6767(con\207guration)s 8100(\207les)s
-8549(to)s 0 12024(decide)m 680(what)s 1205(to)s 1444(do.)s
-1788(If)s 2018(it)s 2210(decides)s 2978(to)s 3217(allo)s 6(w)k
-3796(the)s 4144(service)s 4876(to)s 5115(be)s 5397(pro)s 3(vided)k
-6303(it)s 6495(will)s 6921(fork)s 7380(a)s 7546(subprocess)s
-8647(to)s 0 11784(e)m 3(x)k 3(ecute)k 780(the)s
-1128(service.)s 0 11376(The)m 428(service)s 1160(will)s 1586(ha)s 4(v)k 3(e)k
-2087(no)s 2380(controlling)s 3482(terminal,)s 4384(b)s 4(ut)k
-4746(it)s 4938(will)s 5364(be)s 5646(a)s 5812(process)s
-6580(group)s 7192(leader)s 13(.)k 0 10968(If)m 223(the)s
-563(client)s 1146(is)s 1348(killed)s 1942(or)s 2194(times)s
-2754(out)s 3112(or)s 3364(a)s 3522(\207le)s 3875(or)s
-4127(descriptor)s 5134(being)s 5711(read)s 6173(or)s 6424(written)s
-7149(by)s 7436(the)s 7776(client)s 8358(process)s 0 10728(gets)m
-436(an)s 719(error)s 1242(then)s 1711(the)s 2059(service)s
-2791(will)s 3217(be)s 3499(disconnected)s 4806(from)s 5330(the)s
-5678(client.)s 6312(The)s 6740(client)s 7330(will)s 7756(return)s
-8383(an)s 0 10487(e)m 3(xit)k 415(status)s 1010(of)s
-1281(255)s 1687(and)s 2091(some)s 2652(the)s 3000(service')s 13(s)k
-3886(pipes)s 4442(may)s 4908(be)s 5190(closed)s 5859(at)s
-6091(the)s 6439(other)s 6990(end.)s 7440(The)s 7868(service)s
-8600(will)s 0 10247(become)m 800(a)s 966(child)s 1502(of)s
-gsave
-1773 10301 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(init)m 
-grestore
-2173(.)s 2277(The)s 2705(service)s
-3437(may)s 3903(well)s 4369(not)s 4735(notice)s 5375(the)s
-5723(disconnection,)s 7159(though)s 7882(writing)s 8625(to)s 8864(a)s
-0 10007(pipe)m 468(after)s 964(this)s 1360(may)s 1826(produce)s
-2653(a)s gsave
-2819 10061 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-3579(and)s 3983(the)s
-4331(f)s 2(acility)k 5058(e)s 3(xists)k 5650(to)s
-5889(ha)s 4(v)k 3(e)k 6390(a)s gsave
-6556 10061 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(SIGHUP)m 
-grestore
-7216(sent)s 7661(to)s 7900(the)s 8248(service)s
-0 9767(on)m 297(disconnection.)s 9066 670 0 670 240 240 60 0 8743 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(3.1.)m 628(File)s
-1216(descriptors)s 
-grestore
-0 8281(The)m 428(service)s 1160(program')s 13(s)k
-2180(standard)s 3048(\207ledescriptors,)s 4508(and)s 4912(possibly)s 5764(other)s
-6315(\207le)s 6676(descriptors,)s 7831(will)s 8257(be)s 0 8041(connected)m
-1028(to)s 1266(pipes)s 1821(or)s 2080(to)s gsave
-2318 8095 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(/dev/null)m 
-grestore
-3219(.)s 3322(The)s gsave
-3750 8095 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-
-grestore
-4309(client/daemon)s 5719(pair)s 6150(will)s 6575(arrange)s 7346(that)s
-7764(data)s 8221(is)s 8430(copied)s 0 7801(between)m 854(the)s
-1202(\207les)s 1651(or)s 1910(\207le)s 2271(descriptors)s 3370(speci\207ed)s
-4278(to)s 4517(to)s 4756(the)s 5104(client)s 5694(by)s
-5988(the)s 6336(caller)s 6925(and)s 7329(these)s 7876(these)s
-8423(pipes.)s 0 7393(Pipes)m 569(which)s 1211(may)s 1677(be)s
-1959(written)s 2692(to)s 2931(will)s 3357(be)s 3639(closed)s
-4308(if)s 4525(a)s 4691(write)s 5237(error)s 5760(occurs)s
-6435(on)s 6732(the)s 7080(corresponding)s 0 7153(client-side)m 1043(\207le)s
-1396(or)s 1647(descriptor)s 9(,)k 2692(which)s 3326(may)s
-3784(result)s 4366(in)s 4601(a)s gsave
-4760 7207 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m
-
-grestore
-5512(in)s 5747(the)s 6087(service)s 6811(program;)s 7725(pipes)s
-8273(open)s 8788(for)s 0 6913(reading)m 770(will)s 1196(get)s
-gsave
-1548 6967 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(EOF)m 
-grestore
-1908(if)s 2125(the)s 2473(client-side)s
-3523(\207le)s 3884(descriptor)s 4899(gets)s gsave
-5335 6967 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(EOF)m
-
-grestore
-5695(or)s 5954(an)s 6237(error)s 13(.)k 0 6505(If)m
-230(the)s 578(service)s 1310(closes)s 1945(one)s 2347(of)s
-2618(its)s 2894(reading)s 3663(\207le)s 4024(descriptors)s 5123(the)s
-5471(writing)s 6214(end)s 6618(of)s 6889(the)s 7237(corresponding)s
-8658(pipe)s 0 6265(will)m 421(generate)s 1280(a)s gsave
-1441 6319 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(SIGPIPE)m 
-grestore
-2195(when)s 2766(attempts)s 3620(are)s 3962(made)s
-4530(by)s 4819(the)s 5161(client/daemon)s 6567(pair)s 6992(to)s
-7226(write)s 7766(to)s 8000(it.)s 8230(This)s 8700(will)s
-0 6025(not)m 366(be)s 648(considered)s 1742(an)s 2025(error;)s
-2600(rather)s 9(,)k 3254(the)s 3602(rele)s 6(v)k 6(ant)k
-4419(pipe)s 4887(will)s 5313(be)s 5595(discarded)s 6569(and)s
-6973(the)s 7321(corresponding)s 8743(\207le)s 0 5785(or)m 259(\207le)s
-620(descriptor)s 1635(held)s 2105(by)s 2399(the)s 2747(client)s
-3337(will)s 3763(be)s 4045(closed.)s 0 5377(Lik)m 2(e)k 6(wise,)k
-975(if)s 1192(one)s 1594(of)s 1865(the)s 2213(\207le)s
-2574(descriptors)s 3673(held)s 4143(by)s 4437(the)s 4785(client)s
-5375(for)s 5713(writing)s 6456(by)s 6750(the)s 7098(service)s
-7830(is)s 8040(a)s 8206(pipe)s 0 5137(whose)m 665(other)s
-1213(end)s 1613(is)s 1820(closed)s 2485(by)s 2776(the)s
-3120(caller)s 3706(then)s 4171(the)s 4516(client/daemon)s 5923(pair)s
-6351(will)s 6773(see)s 7131(an)s 7410(error)s 7930(when)s
-8502(trying)s 0 4897(to)m 239(cop)s 2(y)k 757(data)s
-1215(pro)s 3(vided)k 2121(by)s 2415(the)s 2763(service.)s
-3543(This)s 4019(too)s 4378(will)s 4804(not)s 5170(be)s
-5452(considered)s 6546(an)s 6829(error;)s 7404(rather)s 9(,)k
-8058(the)s 8406(pipe)s 0 4657(correspondong)m 1476(to)s 1715(that)s
-2133(descriptor)s 3148(will)s 3574(be)s 3856(closed)s 4525(and)s
-4929(an)s 3(y)k 5326(further)s 6035(writes)s 6669(will)s
-7095(cause)s 7682(the)s 8030(service)s 8762(to)s 0 4417(get)m
-352(a)s gsave
-518 4471 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-1218(.)s 0 4009(Note)m
-521(that)s 939(not)s 1305(all)s 1598(write)s 2144(errors)s
-2751(or)s 3010(brok)s 2(en)k 3730(pipes)s 4286(on)s
-4583(\207le)s 4944(descriptors)s 6043(may)s 6509(be)s 6791(visible)s
-7484(to)s 7723(the)s 8071(service,)s 0 3769(since)m 547(b)s 4(uf)k 6(fered)k
-1404(data)s 1862(may)s 2328(be)s 2610(discarded)s 3584(by)s
-3878(the)s 4226(operating)s 5182(system)s 5906(and)s 6310(there)s
-6843(will)s 7269(be)s 7551(a)s 7717(\207nite)s 8264(interv)s 6(al)k
-0 3529(between)m 847(the)s 1188(error)s 1703(happening)s 2747(and)s
-3144(the)s 3484(service)s 4209(being)s 4787(disconnected)s 6086(from)s
-6603(the)s 6944(client)s 7526(or)s 7778(the)s 8119(ne)s 3(xt)k
-8580(write)s 0 3289(causing)m 784(a)s gsave
-950 3343 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m
-
-grestore
-1650(.)s 0 2881(Read)m 550(errors)s 1157(on)s 1454(\207le)s
-1815(descriptors)s 2914(\(and)s 3397(disconnection\))s 4854(will)s 5280(only)s
-5760(be)s 6042(visible)s 6735(to)s 6974(the)s 7322(service)s
-8054(and)s 0 2641(distinguishable)m 1504(from)s 2028(normal)s 2760(end)s
-3164(of)s 3435(\207le)s 3796(if)s gsave
-4013 2695 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(disconnect\211hup)m
-
-grestore
-5474(is)s 5684(in)s 5927(ef)s 6(fect.)k 0 2233(Read)m
-549(and)s 951(write)s 1495(errors)s 2100(\(other)s 2728(than)s
-3196(brok)s 2(en)k 3914(pipes,)s 4524(as)s 4772(described)s
-5744(abo)s 3(v)k 3(e\))k 6437(will)s 6861(al)s 2(w)k 2(ays)k
-7570(be)s 7850(visible)s 8541(to)s 8778(the)s 0 1993(caller;)m
-627(the)s 3(y)k 1075(are)s 1408(system)s 2117(errors,)s
-2766(and)s 3155(will)s 3566(therefore)s 4469(cause)s 5041(the)s
-5375(client)s 5950(to)s 6174(print)s 6671(an)s 6939(error)s
-7448(message)s 8299(to)s 8523(stderr)s 0 1752(and)m 404(return)s
-1031(with)s 1513(an)s 1796(e)s 3(xit)k 2211(status)s
-2806(of)s 3077(255.)s 0 1344(If)m 230(the)s 578(main)s
-1113(service)s 1845(program)s 2715(process)s 3483(e)s 3(xits)k
-3982(while)s 4569(it)s 4761(still)s 5173(has)s 5543(running)s
-6341(children)s 7181(an)s 3(y)k 7578(\207le)s 7939(descriptors)s
-0 1104(held)m 470(by)s 764(those)s 1325(children)s 2165(can)s
-2554(remain)s 3274(open,)s 3847(depending)s 4898(on)s 5195(the)s
-5543(use)s 5918(of)s gsave
-6189 1158 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(wait)m 
-grestore
-6589(,)s
-gsave
-6696 1158 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(nowait)m 
-grestore
-7356(or)s gsave
-7615 1158 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(close)m
-
-grestore
-8175(for)s 8513(the)s 0 864(rele)m 6(v)k 6(ant)k
-817(\207le)s 1178(descriptor)s 2193(in)s 2436(the)s 2784(client')s 13(s)k
-3524(ar)s 4(guments.)k 4620(By)s 4954(def)s 2(ault)k
-5675(writing)s 6418(\207ledescriptors)s 7822(remain)s 8542(open)s 0 52(1.0.1)m
-4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
-7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 9 9
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8952 13842(9)m 240 fnt82 0 13251(and)m 404(the)s
-752(client)s 1342(will)s 1768(w)s 2(ait)k 2237(for)s
-2575(them)s 3113(to)s 3352(be)s 3634(closed)s 4303(at)s
-4535(the)s 4883(service)s 5615(end,)s 6068(and)s 6472(reading)s
-7242(\207le)s 7603(descriptors)s 8702(are)s 0 13011(closed)m 669(immediately)s 15(.)k
-1952(These)s 2579(lefto)s 3(v)k 3(er)k 3375(child)s
-3911(processes)s 4878(will)s 5304(not)s 5670(get)s 6022(a)s
-6188(an)s 3(y)k gsave
-6585 13065 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGHUP)m 
-grestore
-7245(e)s 6(v)k 3(en)k
-7745(if)s 7962(a)s 8128(read)s 8597(or)s 0 12771(write)m
-546(error)s 1069(occurs)s 1744(or)s 2003(the)s 2351(client)s
-2941(disconnects)s 4108(before)s 4774(then.)s 9066 609 0 609 240 240 60 0 11808 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 5(3.2.)m
-628(En)s 12(vir)k 5(onment)k 
-grestore
-0 11346(The)m 428(service)s
-1160(will)s 1586(ha)s 4(v)k 3(e)k 2087(some)s
-2648(information)s 3833(in)s 4076(en)s 9(vironment)k 5336(v)s 6(ariables:)k
-gsave
-120 11160 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_USER)m 
-grestore
-480 10866(The)m 908(login)s 1457(name)s
-2031(of)s 2302(the)s 2650(calling)s 3353(user)s 13(.)k
-3842(If)s 4072(the)s gsave
-4420 10920 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(LOGNAME)m 
-grestore
-5180(v)s 6(ariable)k
-5999(is)s 6209(set)s 6534(\(or)s 9(,)k 6910(if)s
-7127(that)s 7545(is)s 7755(unset,)s 8367(if)s 8584(the)s
-gsave
-480 10680 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USER)m 
-grestore
-940 10626(v)m 6(ariable)k 1759(is)s
-1969(set\))s 2362(in)s 2605(the)s 2953(en)s 9(vironment)k
-4213(passed)s 4909(to)s 5148(the)s 5496(client)s 6086(by)s
-6380(the)s 6728(caller)s 7317(then)s 7786(the)s 8134(passw)s 2(ord)k
-480 10386(entry)m 1025(for)s 1363(that)s 1781(login)s 2330(name)s
-2904(will)s 3330(be)s 3612(look)s 2(ed)k 4320(up;)s
-4672(if)s 4889(that)s 5307(passw)s 2(ord)k 6267(entry')s 13(s)k
-6968(uid)s 7332(is)s 7542(the)s 7890(same)s 8437(as)s
-8687(that)s 480 10146(of)m 745(the)s 1086(calling)s 1782(process)s
-2543(then)s 3005(that)s 3416(login)s 3958(name)s 4525(will)s
-4945(be)s 5220(used,)s 5759(otherwise)s 6737(\(or)s 7068(if)s
-7278(neither)s gsave
-7994 10200 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(LOGNAME)m 
-grestore
-8747(nor)s gsave
-480 9960 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(USER)m 
-grestore
-938 9906(is)m 1146(set\))s 1537(the)s 1883(calling)s
-2583(process')s 13(s)k 3508(uid)s 3870(will)s 4294(be)s
-4573(look)s 2(ed)k 5279(up)s 5570(to)s 5807(determine)s
-6815(their)s 7310(login)s 7857(name)s 8429(\(and)s 8909(if)s
-480 9666(this)m 876(lookup)s 1595(f)s 2(ails)k 2054(then)s
-2523(the)s 2871(service)s 3603(will)s 4029(not)s 4395(be)s
-4677(in)s 9(v)k 4(ok)k 2(ed\).)k gsave
-120 9480 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(USERV_UID)m 
-grestore
-480 9186(The)m 908(uid)s 1272(of)s 1543(the)s
-1891(calling)s 2594(process.)s gsave
-120 9000 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_GID)m 
-grestore
-480 8706(The)m
-908(gid)s 1272(and)s 1676(supplementary)s 3138(group)s 3750(list)s
-4101(of)s 4372(the)s 4720(calling)s 5423(process:)s 6246(\207rst)s
-6677(the)s 7025(group)s 7637(in)s 7880(gid)s 8244(and)s
-8648(then)s 480 8466(those)m 1041(in)s 1284(the)s 1632(supplementary)s
-3094(group)s 3706(list,)s 4104(in)s 4347(decimal,)s 5210(separated)s
-6170(by)s 6464(spaces.)s gsave
-120 8280 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_GROUP)m 
-grestore
-480 7986(The)m
-908(group)s 1520(names)s 2182(of)s 2453(the)s 2801(calling)s
-3504(process,)s 4328(listed)s 4903(in)s 5146(the)s 5494(same)s
-6041(w)s 2(ay)k 6492(as)s 6742(the)s 7090(ids)s
-7420(are)s 7767(in)s gsave
-8010 8040 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_GID)m 
-grestore
-8911(.)s
-480 7746(If)m 710(no)s 1003(name)s 1577(can)s 1966(be)s
-2248(found)s 2865(for)s 3203(an)s 3(y)k 3600(of)s
-3871(the)s 4219(calling)s 4922(process')s 13(s)k 5849(group\(s\))s
-6708(then)s 7177(the)s 7525(service)s 8257(will)s 8683(not)s
-480 7506(be)m 762(in)s 9(v)k 4(ok)k 2(ed.)k
-gsave
-120 7320 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_CWD)m 
-grestore
-480 7026(The)m 908(client')s 13(s)k
-1648(current)s 2384(w)s 2(orking)k 3233(directory)s 4149(name)s
-4723(\(this)s 5198(directory)s 6114(may)s 6580(not)s 6946(be)s
-7228(accessible)s 8252(to)s 8491(the)s 480 6786(service\).)m 1339(If)s
-1568(it)s 1759(could)s 2348(not)s 2713(be)s 2994(determined)s
-4126(or)s 4384(the)s gsave
-4732 6840 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211hidecwd)m 
-grestore
-5692(\210ag)s
-6103(w)s 2(as)k 6523(used)s 7019(then)s 7487(this)s
-7882(v)s 6(ariable)k 8700(will)s 480 6546(be)m 762(set)s
-1087(to)s 1326(an)s 1609(empty)s 2261(string)s 2858(\(this)s
-3333(is)s 3543(not)s 3909(considered)s 5003(an)s 5286(error\).)s
-gsave
-120 6360 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_SERVICE)m 
-grestore
-480 6066(The)m 908(service)s 1640(name)s
-2214(requested)s 3188(by)s 3482(the)s 3830(caller)s 13(.)k
-gsave
-120 5880 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_U_)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-
-grestore
-480 5586(The)m
-908(v)s 6(alue)k 1476(supplied)s 2345(to)s 2584(the)s
-2932(client)s 3522(by)s 3816(the)s 4164(caller)s 4753(using)s
-5325(-D)s 240 fnt83 5569 5588(name)m 240 fnt82 6081 5586(.)m
-gsave
-0 5377 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(HOME)m 
-grestore
-400 5323(,)m gsave
-507 5377 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(PATH)m
-
-grestore
-907(,)s gsave
-1014 5377 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SHELL)m 
-grestore
-1514(,)s gsave
-1621 5377 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(LOGNAME)m 
-grestore
-2381(and)s gsave
-2785 5377 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USER)m 
-grestore
-3245(will)s
-3671(be)s 3953(set)s 4278(appropriately)s 5606(\(according)s 6681(to)s
-6920(the)s 7268(details)s 7942(of)s 8213(the)s 0 5083(service)m
-732(user\).)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
-2462(client)s 3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 10 10
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(10)m gsave
-0 12725 translate
-240 fnt82 9066 689 0 689 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 70(4.)m 412(Ser)s 3(vice-side)k
-2219(con\207guration)s 
-grestore
-240 fnt82 0 12263(Which)m 695(ser)s 973(vices)s
-1515(may)s 1981(be)s 2263(run)s 2639(by)s 2933(whom)s
-3592(and)s 3996(un)s 4233(der)s 4598(what)s 5123(con)s
-5466(di)s 5646(tions)s 6162(is)s 6372(con)s 6715(trolled)s
-7396(by)s 7690(con)s 8033(\207g)s 8279(u)s 8394(ra)s
-8579(-)s 0 12023(tion)m 429(\207les.)s 0 11615(The)m 428(daemon)s
-1243(will)s 1669(read)s 2138(these)s 2685(\207les)s 3134(in)s
-3377(order)s 13(.)k 3972(Certain)s 4732(directi)s 6(v)k 3(es)k
-5702(in)s 5945(the)s 6293(\207les)s 6742(modify)s 7487(the)s
-7835(daemon')s 13(s)k 0 11375(e)m 3(x)k 3(ecution)k
-981(settings)s 1762(for)s 2100(in)s 9(v)k 4(oking)k
-2992(the)s 3340(service,)s 4123(for)s 4461(e)s 3(xample)k
-5324(allo)s 6(wing)k 6208(certain)s 6914(\207le)s 7275(descriptors)s
-8374(to)s 8613(be)s 0 11135(speci\207ed)m 908(by)s 1202(the)s
-1550(client)s 2140(or)s 2399(specifying)s 3448(which)s 4090(program)s
-4960(to)s 5199(e)s 3(x)k 3(ecute)k 5979(to)s
-6218(pro)s 3(vide)k 7002(the)s 7350(service.)s 0 10727(The)m
-240 fnt83 428 10729(last)m 240 fnt82 837 10727(instance)m 1676(of)s
-1947(each)s 2442(such)s 2938(setting)s 3628(will)s 4054(tak)s 2(e)k
-4506(ef)s 6(fect.)k 5146(The)s 5574(directi)s 6(v)k 3(es)k
-6544(which)s 7186(specify)s 7930(which)s 0 10487(program)m 864(to)s
-1096(e)s 3(x)k 3(ecute)k 1869(will)s 2288(not)s
-2647(stop)s 3092(the)s 3433(con\207guration)s 4759(\207le)s 5113(from)s
-5630(being)s 6208(read;)s 6724(the)s 3(y)k 7180(will)s
-7599(be)s 7874(remembered)s 0 10247(and)m 404(will)s 830(only)s
-1310(tak)s 2(e)k 1762(ef)s 6(fect)k 2358(if)s
-2575(the)s 3(y)k 3038(are)s 3385(not)s 3751(o)s 3(v)k 3(erridden)k
-4838(by)s 5132(a)s 5298(later)s 5781(directi)s 6(v)k 3(e.)k
-0 9839(The)m 428(daemon)s 1243(will)s 1669(\207rst)s 2100(read)s
-gsave
-2569 9893 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/etc/userv/system.default)m 
-grestore
-5072(.)s 5176(Then,)s 5775(by)s
-6069(def)s 2(ault)k 6790(\(this)s 7265(beha)s 4(viour)k
-8278(may)s 0 9599(be)m 282(modi\207ed\),)s 1319(it)s 1511(will)s
-1937(read)s 2406(a)s 2572(per)s 4(-user)k 3410(\207le)s
-gsave
-3771 9653 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(~/.userv/rc)m 
-grestore
-4872(,)s 4979(if)s 5196(it)s
-5388(e)s 3(xists)k 5980(and)s 6384(the)s 6732(service)s
-7464(user')s 13(s)k 8072(shell)s 8578(is)s 8788(in)s
-gsave
-0 9413 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/etc/shells)m 
-grestore
-1101 9359(.)m 1205(Finally)s 1936(it)s
-2128(will)s 2554(read)s gsave
-3023 9413 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/etc/userv/system.override)m 
-grestore
-5626(.)s
-0 8951(When)m 627(it)s 816(has)s 1183(read)s 1650(all)s
-1940(of)s 2208(these)s 2753(\207les)s 3199(it)s 3388(will)s
-3812(act)s 4147(ac)s 4352(cord)s 4775(ing)s 5131(to)s
-5368(the)s 5713(cur)s 6018(rent)s 6389(ly)s 6626(v)s 6(al)k
-6907(ues)s 7275(of)s 7543(of)s 7811(the)s 8156(e)s 3(x)k
-8374(e)s 8476(cu)s 8697(tion)s 0 8711(set)m 265(tings.)s
-9066 670 0 670 240 240 60 0 7687 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(4.1.)m 628(Con\207guration)s 2618(\207le)s 3100(syntax)s
-
-grestore
-0 7225(The)m 414(con\207guration)s 1733(\207le)s 2080(is)s 2276(a)s
-2428(series)s 3007(of)s 3264(directi)s 6(v)k 3(es,)k
-4276(usually)s 5007(one)s 5395(per)s 5746(line.)s 6193(The)s
-6607(portion)s 7341(of)s 7598(a)s 7750(line)s 8149(follo)s 6(wing)k
-0 6985(a)m 154(hash)s 638(character)s gsave
-1560 7039 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(#)m
-
-grestore
-1708(is)s 1906(tak)s 2(en)k 2466(as)s 2704(a)s
-2858(comment)s 3796(and)s 4188(ignored.)s 5011(Each)s 5533(directi)s 6(v)k 3(e)k
-6403(consists)s 7199(of)s 7458(a)s 7612(series)s 8194(of)s
-8452(tok)s 2(ens)k 0 6745(separated)m 960(by)s 1254(linear)s
-1857(whitespace)s 2975(\(spaces)s 3729(and)s 4133(tabs\);)s 4709(tok)s 2(ens)k
-5383(may)s 5849(be)s 6131(w)s 2(ords)k 6765(consisting)s
-7788(of)s 8059(non-space)s 0 6505(characters,)m 1074(or)s 9(,)k
-1371(where)s 2011(a)s 2177(string)s 2774(is)s 2984(required,)s
-3887(a)s 4053(string)s 4650(in)s 4893(double)s 5601(quotes.)s
-6330(Double-quoted)s 7824(strings)s 8512(may)s 0 6265(contain)m 761(the)s
-1109(follo)s 6(wing)k 2086(backslash)s 3073(escapes:)s gsave
-120 6079 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\\n)m 
-grestore
-480 5785(ne)m 6(wline)k gsave
-120 5599 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\t)m
-
-grestore
-480 5305(tab)m gsave
-120 5119 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\r)m 
-grestore
-480 4825(carriage)m 1304(return)s
-gsave
-120 4639 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\)m gsave
-144 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(OOO)m 
-grestore
-
-grestore
-480 4345(character)m
-1414(whose)s 2082(octal)s 2601(code)s 3109(is)s 240 fnt83
-3319 4347(OOO)m gsave
-120 4159 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\x)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(XX)m
-
-grestore
-
-grestore
-240 fnt82 480 3865(character)m 1414(whose)s 2082(he)s 3(x)k
-2480(code)s 2988(is)s 240 fnt83 3198 3867(XX)m gsave
-120 3679 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\\)m gsave
-144 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(punctuation)m 
-grestore
-
-grestore
-240 fnt82 480 3385(literal)m
-1090(punctuation)s 2277(character)s 3211(\(e)s 3(g)k gsave
-3566 3439 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\\\\)m 
-grestore
-3766(,)s gsave
-3873 3439 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\")m 
-grestore
-4073(\))s
-gsave
-120 3198 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\\)m gsave
-144 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(ne)m 3(wline)k
-
-grestore
-
-grestore
-1005 3144(\(ie,)m 1363(backslash)s 2350(at)s 2582(end)s 2986(of)s
-3257(line\))s 480 2904(string)m 1077(continues)s 2045(on)s 2342(ne)s 3(xt)k
-2811(line)s 0 2342(Relati)m 6(v)k 3(e)k 843(pathnames)s
-1917(in)s 2160(directi)s 6(v)k 3(es)k 3130(are)s
-3477(relati)s 6(v)k 3(e)k 4239(to)s 4478(the)s
-4826(service)s 5558(program')s 13(s)k 6578(current)s 7314(directory)s
-8230(\(usually)s 0 2102(the)m 348(service)s 1080(user')s 13(s)k
-1687(home)s 2275(directory\).)s 3319(P)s 3(athnames)k 4403(starting)s
-5171(with)s 5653(the)s 6000(tw)s 2(o)k 6410(characters)s
-gsave
-7427 2156 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(~/)m 
-grestore
-7687(are)s 8033(tak)s 2(en)k
-8606(to)s 8844(be)s 0 1862(relati)m 6(v)k 3(e)k
-762(to)s 1001(the)s 1349(service)s 2081(user')s 13(s)k
-2689(home)s 3277(directory)s 15(.)k 9066 670 0 670 240 240 60 0 838 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(4.2.)m
-628(Con\207guration)s 2618(\207le)s 3100(dir)s 5(ecti)k 3(v)k 3(es)k
-
-grestore
-0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
-7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 11 11
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8839 13842(11)m 300 fnt84 0 13210(4.2.1.)m 813(Immediate)s
-2261(dir)s 5(ecti)k 3(v)k 3(es)k 240 fnt82
-0 12696(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k
-2375(tak)s 2(e)k 2827(ef)s 6(fect)k 3423(immediately:)s
-gsave
-120 12342 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cd)m gsave
-432 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(pathname)m 
-grestore
-
-grestore
-480 12048(Change)m
-1268(directory)s 2184(in)s 2427(the)s 2775(service)s 3507(program.)s
-gsave
-4421 12102 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cd)m 
-grestore
-4681(is)s 4891(cumulati)s 6(v)k 3(e.)k
-6048(It)s 6253(is)s 6463(an)s 6746(error)s 7269(if)s
-7486(the)s 7834(directory)s 480 11808(cannot)m 1178(be)s 1460(changed)s
-2316(to.)s gsave
-2666 11862 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cd)m 
-grestore
-2926(should)s 3623(not)s
-3989(be)s 4271(used)s 4768(between)s gsave
-5622 11862 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m
-
-grestore
-7884(and)s 8288(the)s 480 11568(in)m 9(v)k 4(ocation)k
-1534(of)s 1805(the)s 2153(service)s 2885(program,)s 3802(as)s
-4052(the)s 4400(test)s 4791(for)s 5129(the)s 5477(a)s 4(v)k 6(ailability)k
-6595(of)s 6866(the)s 7214(service)s 7946(program)s 480 11328(w)m 2(ould)k
-1117(be)s 1380(done)s 1884(with)s 2347(the)s 2677(old)s
-3022(current)s 3740(directory)s 4637(and)s 5023(the)s 5352(actual)s
-5959(e)s 3(x)k 3(ecution)k 6921(with)s 7385(the)s
-7714(ne)s 6(w)k 8142(\(probably)s 480 11088(causing)m 1264(an)s
-1547(error\).)s gsave
-120 10748 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(eof)m 
-grestore
-480 10454(Stop)m 972(reading)s
-1742(the)s 2090(con\207guration)s 3423(\207le)s 3784(in)s 4027(question,)s
-4945(as)s 5195(if)s 5412(end)s 5816(of)s 6087(\207le)s
-6448(had)s 6852(been)s 7361(reached.)s 8208(An)s 3(y)k
-480 10214(control)m 1212(constructs)s 2232(\()s gsave
-2305 10268 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(if)m
-
-grestore
-2505(,)s gsave
-2612 10268 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-3673(or)s gsave
-3932 10268 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(errors\211push)m 
-grestore
-5033(\))s 5161(which)s 5803(were)s 6323(started)s
-7017(in)s 7260(that)s 7678(\207le)s 8039(will)s 8465(be)s
-480 9974(considered)m 1574(\207nished.)s 2436(P)s 3(arsing)k 3203(will)s
-3629(continue)s 4509(in)s 4752(the)s 5100(\207le)s 5461(which)s
-6103(caused)s 6812(the)s 7160(\207le)s 7521(containing)s 8584(the)s
-gsave
-480 9788 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(eof)m 
-grestore
-840 9734(to)m 1079(be)s 1361(read.)s
-gsave
-120 9444 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(quit)m 
-grestore
-480 9150(Stop)m 969(reading)s 1735(con\207guration)s
-3064(\207les)s 3510(and)s 3910(act)s 4244(immediately)s 5489(on)s
-5782(the)s 6126(current)s 6859(settings.)s 7689(The)s 8113(beha)s 4(viour)k
-480 8910(of)m gsave
-751 8964 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(quit)m 
-grestore
-1211(is)s 1421(subject)s
-2158(to)s 2397(the)s gsave
-2745 8964 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-3806(control)s
-4538(construct.)s gsave
-120 8570 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m
-
-grestore
-
-grestore
-gsave
-120 8330 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211ifexist)m gsave
-2304 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-480 8036(Read)m
-1026(the)s 1369(con\207guration)s 2698(\207le)s 240 fnt83 3054 8038(\207lename)m
-240 fnt82 3858 8036(,)m 3961(and)s 4360(then)s 4825(return)s
-5447(to)s 5682(this)s 6073(\207le)s 6430(and)s 6829(continue)s
-7705(parsing)s 8457(it)s 8644(with)s 480 7796(the)m 822(ne)s 3(xt)k
-1284(directi)s 6(v)k 3(e.)k 2207(It)s 2405(is)s
-2608(an)s 2884(error)s 3400(if)s 3610(the)s 3952(\207le)s
-4306(cannot)s 4997(be)s 5272(opened)s 6015(and)s 6412(read,)s
-6923(unless)s gsave
-7565 7850 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211ifexist)m 
-grestore
-480 7556(is)m 690(used)s
-1187(and)s 1591(the)s 1939(\207le)s 2300(does)s 2790(not)s
-3156(e)s 3(xist,)k 3711(in)s 3954(which)s 4596(case)s
-5063(the)s 5411(directi)s 6(v)k 3(e)k 6293(is)s
-6503(silently)s 7260(ignored.)s gsave
-120 7216 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211lookup)m gsave
-2160 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(par)m 3(ameter)k 
-grestore
-gsave
-3724 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(dir)m 8(ectory)k
-
-grestore
-
-grestore
-gsave
-120 6976 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211lookup\211all)m gsave
-2736 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k
-
-grestore
-gsave
-4300 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(dir)m 8(ectory)k 
-grestore
-
-grestore
-480 6682(Read)m 1030(the)s
-1378(con\207guration)s 2711(\207le)s 3072(in)s 240 fnt83 3315 6684(dir)m 8(ectory)k
-240 fnt82 4239 6682(whose)m 4907(name)s 5481(is)s 5691(the)s
-6039(v)s 6(alue)k 6607(of)s 240 fnt83 6878 6684(par)m 3(ameter)k
-240 fnt82 7937 6682(\(see)m 8377(the)s 480 6442(description)m 1599(of)s
-gsave
-1870 6496 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(if)m 
-grestore
-2070(,)s 2177(`Control)s 3042(structure)s
-3933(directi)s 6(v)k 3(es',)k 5038(page)s 5546(12\).)s
-5969(If)s 240 fnt83 6199 6444(par)m 3(ameter)k 240 fnt82
-7258 6442(has)m 7628(se)s 6(v)k 3(eral)k 8350(v)s 6(alues)k
-480 6202(the)m 3(y)k 943(will)s 1369(be)s 1651(tried)s
-2146(in)s 2389(order;)s 3005(with)s gsave
-3487 6256 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211lookup)m
-
-grestore
-4948(this)s 5344(search)s 6011(will)s 6437(stop)s 6889(when)s
-7465(one)s 7867(is)s 8077(found,)s 8743(b)s 4(ut)k
-480 5962(with)m gsave
-962 6016 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211lookup\211all)m 
-grestore
-2824(the)s 3172(search)s
-3839(will)s 4265(continue)s 5145(and)s 5549(an)s 3(y)k
-5946(\207les)s 6395(appropriate)s 7539(to)s 7778(other)s 8329(v)s 6(alues)k
-480 5722(will)m 906(be)s 1188(read)s 1657(too.)s 2127(If)s
-2357(none)s 2879(of)s 3150(the)s 3498(parameter')s 13(s)k
-4662(v)s 6(alues)k 5318(had)s 5722(a)s 5888(corresponding)s
-7310(\207le)s 7671(then)s 8140(the)s 8488(\207le)s gsave
-480 5536 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(:default)m 
-grestore
-1340 5482(will)m 1765(be)s 2045(read,)s 2562(if)s
-2778(it)s 2968(e)s 3(xists.)k 3612(If)s 240 fnt83
-3841 5484(par)m 3(ameter)k 240 fnt82 4840 5482(')m 13(s)k
-5048(list)s 5398(of)s 5668(v)s 6(alues)k 6322(w)s 2(as)k
-6742(empty)s 7393(then)s 7860(the)s 8207(\207le)s gsave
-8566 5536 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(:none)m 
-grestore
-480 5242(will)m 906(be)s 1188(tried)s 1683(\207rst)s
-2114(and)s 2518(read)s 2987(if)s 3204(it)s 3396(e)s 3(xists,)k
-4044(otherwise)s gsave
-5029 5296 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:default)m 
-grestore
-5890(will)s 6316(be)s
-6598(tried.)s 7199(It)s 7404(is)s 7614(not)s 7980(an)s
-8263(error)s 8786(for)s 480 5002(an)m 3(y)k 877(of)s
-1148(the)s 1496(\207les)s 1945(\(including)s gsave
-2981 5056 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:default)m
-
-grestore
-3782(\))s 3910(not)s 4276(to)s 4515(e)s 3(xist,)k
-5070(b)s 4(ut)k 5432(it)s 5624(is)s 5834(an)s
-6117(error)s 6640(if)s 6857(a)s 7023(\207le)s 7384(e)s 3(xists)k
-7976(and)s 8380(cannot)s 480 4762(be)m 753(read)s 1213(or)s
-1462(if)s 1670(the)s 2008(directory)s 2915(cannot)s 3603(be)s
-3876(accessed.)s 4867(A)s 5087(translation)s 6143(will)s 6559(be)s
-6832(applied)s 7584(to)s 7814(v)s 6(alues)k 8460(before)s
-480 4522(the)m 3(y)k 943(are)s 1290(used)s 1787(to)s
-2026(construct)s 2962(a)s 3128(\207lename,)s 4058(so)s 4324(that)s
-4742(the)s 5090(lookup)s 5809(cannot)s 6507(access)s 7168(dot\207les)s
-7923(or)s 8182(\207les)s 8631(in)s 480 4282(other)m 1031(directories:)s
-2144(v)s 6(alues)k 2800(starting)s 3569(with)s 4051(full)s
-4437(stops)s 4980(will)s 5406(ha)s 4(v)k 3(e)k
-5907(a)s 6073(colon)s 6662(prepended)s 7717(\(making)s gsave
-8567 4336 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(:.)m 
-grestore
-8767(\),)s 480 4042(colons)m 1156(will)s 1582(be)s
-1864(doubled,)s 2743(and)s 3147(each)s 3642(slash)s 4177(will)s
-4603(be)s 4885(replaced)s 5752(with)s 6234(a)s 6400(colon)s
-6989(follo)s 6(wed)k 7891(by)s 8185(a)s 8351(h)s 1(yphen)k
-gsave
-480 3856 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:\211)m 
-grestore
-680 3802(.)m 784(A)s 1014(parameter)s
-2028(v)s 6(alue)k 2596(which)s 3238(is)s 3448(the)s
-3796(empty)s 4448(string)s 5045(will)s 5471(be)s 5753(replaced)s
-6620(with)s gsave
-7102 3856 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:empty)m 
-grestore
-7762(\(note)s 8309(that)s
-8727(this)s 480 3562(is)m 690(dif)s 6(ferent)k 1565(from)s
-2089(a)s 2255(parameter)s 3269(not)s 3635(ha)s 4(ving)k
-4336(an)s 3(y)k 4733(v)s 6(alues\).)k gsave
-120 3222 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(include\211directory)m gsave
-2592 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(dir)m 8(ectory)k 
-grestore
-
-grestore
-480 2928(Read)m
-1030(con\207guration)s 2363(from)s 2887(all)s 3180(\207les)s 3629(in)s
-3872(directory)s 240 fnt83 4788 2930(dir)m 8(ectory)k 240 fnt82
-5712 2928(which)m 6354(are)s 6701(plain)s 7236(\207les)s 7685(whose)s
-8353(names)s 480 2688(consist)m 1204(only)s 1684(of)s 1955(alphanumerics)s
-3400(and)s 3804(h)s 1(yphens)k 4653(and)s 5057(start)s
-5527(with)s 6009(an)s 6292(alphanumeric.)s 7697(The)s 3(y)k
-8240(will)s 8666(be)s 480 2448(read)m 949(in)s 1192(le)s 3(xical)k
-1880(order)s 13(.)k 2475(It)s 2680(is)s 2890(an)s
-3173(error)s 3696(for)s 4034(the)s 4382(directory)s 5298(not)s
-5664(to)s 5903(e)s 3(xist)k 6411(or)s 6670(for)s
-7008(it)s 7200(or)s 7459(an)s 3(y)k 7856(of)s
-8127(the)s 8475(\207les)s 480 2208(found)m 1089(not)s 1447(to)s
-1677(be)s 1951(read)s 2411(successfully)s 15(,)k 3663(or)s
-3914(for)s 4243(an)s 3(ything)k 5123(with)s 5596(an)s
-5871(appropriate)s 7007(name)s 7572(not)s 7930(to)s 8160(be)s
-8434(a)s 8591(plain)s 480 1968(\207le)m 841(or)s 1100(a)s
-1266(symbolic)s 2196(link)s 2629(to)s 2868(a)s 3034(plain)s
-3569(\207le.)s gsave
-120 1628 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(error)m gsave
-864 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(te)m 4(xt)k
-404(\202)s 
-grestore
-
-grestore
-480 1334(Causes)m 1209(an)s 1492(error)s 2015(whose)s
-2683(message)s 3549(includes)s 4397(the)s 4745(descripti)s 6(v)k 3(e)k
-5840(string)s 240 fnt83 6437 1336(te)m 4(xt)k 240 fnt82
-6781 1334(.)m 240 fnt83 6885 1336(te)m 4(xt)k 240 fnt82
-7289 1334(may)m 7755(consist)s 8479(of)s 480 1094(se)m 6(v)k 3(eral)k
-1192(tok)s 2(ens)k 1855(with)s 2326(interv)s 3(ening)k
-3454(whitespace.)s 4609(The)s 5026(whitespace)s 6134(will)s 6549(be)s
-6820(included)s 7691(in)s 7923(the)s 8260(message)s 480 854(as)m
-726(found)s 1338(in)s 1576(the)s 1919(con\207guration)s 3247(\207le:)s
-3653(all)s 3941(the)s 4284(characters)s 5298(until)s 5786(the)s
-6129(end)s 6528(of)s 6794(the)s 7137(line)s 7546(will)s
-7967(be)s 8244(included)s 0 52(User)m 511(service)s 1243(daemon)s
-2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 12 12
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(12)m 240 fnt82 480 13254(v)m 3(erbatim,)k
-1433(unless)s 2082(the)s 3(y)k 2545(are)s 2892(part)s
-3323(of)s 3594(a)s 3760(double-quoted)s 5201(string,)s 5852(in)s
-6095(which)s 6737(case)s 7204(the)s 7552(usual)s 8112(meaning)s
-480 13014(of)m 751(the)s 1099(string)s 1696(\(i.e.,)s 2174(after)s
-2670(backslash)s 3657(escape)s 4350(processing\))s 5501(will)s 5927(be)s
-6209(used.)s 6752(Comments)s 7840(and)s 8244(linear)s 480 12774(whitespace)m
-1598(at)s 1830(the)s 2178(end)s 2582(of)s 2853(the)s
-3201(line)s 3615(\(or)s 3953(just)s 4358(before)s 5024(the)s
-5372(comment\))s 6390(will)s 6816(still)s 7228(be)s 7510(ignored.)s
-gsave
-120 12434 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(message)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(te)m 4(xt)k
-404(\202)s 
-grestore
-
-grestore
-480 12140(Causes)m 1209(a)s 1375(message)s 2241(including)s
-3198(the)s 3546(descripti)s 6(v)k 3(e)k 4641(string)s
-240 fnt83 5238 12142(te)m 4(xt)k 240 fnt82 5642 12140(to)m
-5881(be)s 6163(deli)s 6(v)k 3(ered)k 7101(as)s
-7351(if)s 7568(it)s 7760(were)s 8280(an)s 8563(error)s
-480 11900(message,)m 1397(b)s 4(ut)k 1759(does)s 2249(not)s
-2615(actually)s 3425(cause)s 4012(an)s 4295(error)s 13(.)k
-300 fnt84 0 11233(4.2.2.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
-2148(with)s 2781(delay)s 3(ed)k 3828(effect)s 240 fnt82
-0 10662(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k
-2375(ha)s 4(v)k 3(e)k 2876(no)s 3169(immediate)s
-4233(ef)s 6(fect,)k 4876(b)s 4(ut)k 5238(are)s
-5585(remembered)s 6837(and)s 7241(ha)s 4(v)k 3(e)k
-7742(an)s 8025(ef)s 6(fect)k 8621(on)s 0 10422(later)m
-483(processing)s 1559(of)s 1830(the)s 2178(con\207guration)s 3511(\207les.)s
-gsave
-120 10068 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(user\211rcfile)m gsave
-1728 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-480 9774(Speci\207es)m
-1380(that)s 1784(the)s 2118(\207le)s 240 fnt83 2465 9776(\207lename)m
-240 fnt82 3315 9774(should)m 3998(be)s 4266(read)s 4721(instead)s
-5442(of)s 5699(the)s 6033(user')s 13(s)k gsave
-6627 9828 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(~/.userv/rc)m 
-grestore
-7728(.)s 7818(This)s 8280(does)s 240 fnt83
-8756 9776(not)m 240 fnt82 480 9534(happen)m 1229(immediately;)s 2535(instead,)s
-3319(the)s 3667(setting)s 4357(is)s 4567(remembered)s 5819(and)s
-6223(used)s 6720(after)s 7216(the)s gsave
-7564 9588 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(system.default)m
-
-grestore
-480 9294(con\207guration)m 1812(\207le)s 2171(has)s 2539(been)s 3046(read.)s
-3559(This)s 4033(directi)s 6(v)k 3(e)k 4913(has)s
-5281(no)s 5572(ef)s 6(fect)k 6166(in)s 6407(a)s
-6571(user')s 13(s)k 7177(con\207guration)s 8508(\207le)s 8867(or)s
-480 9054(in)m 723(the)s gsave
-1071 9108 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(system.override)m 
-grestore
-2632(\207le,)s
-3044(as)s 3294(the)s 3642(user')s 13(s)k 4250(con\207guration)s
-5583(\207le)s 5944(has)s 6314(already)s 7071(been)s 7580(found)s
-8197(and)s 8601(read)s 480 8814(by)m 774(then)s 1243(and)s
-1647(will)s 2073(not)s 2439(be)s 2721(re-read.)s gsave
-120 8474 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(errors\211to\211stderr)m 
-grestore
-480 8180(Causes)m 1209(error)s 1732(messages)s 2686(to)s
-2925(be)s 3207(deli)s 6(v)k 3(ered)k 4145(to)s
-4384(the)s 4732(client')s 13(s)k 5472(stderr)s 13(.)k
-gsave
-120 7840 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(errors\211to\211file)m 
-grestore
-240 fnt83 1581 7788(\207lename)m 240 fnt82
-480 7546(Error)m 1039(messages)s 1989(will)s 2410(be)s 2688(written)s
-3416(to)s 240 fnt83 3651 7548(\207lename)m 240 fnt82 4455 7546(,)m
-4557(which)s 5195(will)s 5617(be)s 5894(opened)s 6640(in)s
-6878(the)s 7222(conte)s 3(xt)k 7978(of)s 8245(and)s
-8644(with)s 480 7306(the)m 828(pri)s 6(vile)k 3(ges)k
-1812(of)s 2083(the)s 2431(service)s 3163(user)s 13(.)k
-gsave
-120 6966 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(errors\211to\211syslog)m 
-grestore
-1782 6912([)m 240 fnt83 1853 6914(facility)m
-240 fnt82 2571 6912([)m 240 fnt83 2642 6914(le)m 3(vel)k
-240 fnt82 3089 6912(]])m 480 6672(Error)m 1043(messages)s 1997(will)s
-2423(be)s 2705(deli)s 6(v)k 3(ered)k 3643(using)s
-gsave
-4215 6726 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(syslog)m 
-grestore
-4815(.)s 4919(The)s 5347(def)s 2(ault)k
-240 fnt83 6068 6674(facility)m 240 fnt82 6786 6672(is)m gsave
-6996 6726 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(user)m 
-grestore
-7396(;)s 7508(the)s 7856(def)s 2(ault)k
-240 fnt83 8577 6674(le)m 3(vel)k 240 fnt82 480 6432(is)m
-gsave
-690 6486 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(error)m 
-grestore
-1190(.)s 300 fnt84 0 5815(4.2.3.)m
-813(Contr)s 5(ol)k 1874(structur)s 5(e)k 3117(dir)s 5(ecti)k 3(v)k 3(es)k
-240 fnt82 0 5300(The)m 421(follo)s 6(wing)k 1390(directi)s 6(v)k 3(es)k
-2353(are)s 2692(used)s 3182(to)s 3413(create)s 4031(control)s
-4755(structures.)s 5780(If)s 6002(the)s 6343(end)s 6739(of)s
-7003(the)s 7343(\207le)s 7697(is)s 7899(encountered)s 0 5060(before)m
-666(the)s 1014(end)s 1418(of)s 1689(an)s 3(y)k
-2086(control)s 2818(structure)s 3709(which)s 4351(w)s 2(as)k
-4772(started)s 5466(inside)s 6093(it)s 6285(then)s 6754(that)s
-7172(control)s 7904(structure)s 8795(is)s 0 4820(considered)m 1094(\207nished.)s
-1956(This)s 2432(is)s 2642(not)s 3008(an)s 3291(error)s 13(.)k
-gsave
-120 4466 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(if)m gsave
-432 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m 
-grestore
-
-grestore
-gsave
-120 4226 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(elif)m gsave
-720 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m 
-grestore
-
-grestore
-gsave
-120 3986 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(else)m
-
-grestore
-gsave
-120 3746 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(fi)m 
-grestore
-480 3452(Lines)m 1062(follo)s 6(wing)k
-gsave
-2039 3506 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(if)m 
-grestore
-2299(are)s 2646(interpreted)s 3738(only)s
-4218(if)s 4435(the)s 4783(condition)s 5744(is)s 5954(true.)s
-6429(Man)s 3(y)k 7039(conditions)s 8087(are)s 480 3212(properties)m
-1486(of)s 1757(parameter)s 2771(v)s 6(alues.)k 3480(Most)s
-4032(parameters)s 5130(ha)s 4(v)k 3(e)k 5631(a)s
-5797(single)s 6424(string)s 7021(as)s 7271(a)s 7437(v)s 6(alue;)k
-8061(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-480 2972(some)m 1035(may)s 1495(yield)s 2025(zero)s 2483(or)s
-2735(se)s 6(v)k 3(eral)k 3451(strings,)s 4189(in)s
-4426(which)s 5062(case)s 5522(the)s 5864(condition)s 6819(is)s
-7023(true)s 7444(if)s 7654(it)s 7840(is)s 8044(true)s
-8465(of)s 8729(an)s 3(y)k 480 2732(of)m 751(the)s
-1099(strings)s 1787(indi)s 6(vidually)k 15(.)k 3026(P)s 3(arameters)k
-4134(are)s 4481(described)s 5455(belo)s 6(w)k 15(.)k
-6183(The)s 6611(conditions)s 7659(are:)s gsave
-600 2545 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(glob)m
-gsave
-720 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k 
-grestore
-gsave
-2284 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(glob\211pattern)m
-
-grestore
-4178(\202)s 
-grestore
-960 2251(The)m 1388(v)s 6(alue)k 1956(of)s
-2227(the)s 2575(parameter)s 3589(whose)s 4257(name)s 4831(is)s
-5041(gi)s 6(v)k 3(en)k 5621(matches)s 6455(one)s
-6857(of)s 7128(the)s 7476(glob)s 7955(patterns)s 960 2011(\(anchored)m
-1974(at)s 2206(both)s 2689(ends;)s 3240(backslashes)s 4420(can)s
-4809(be)s 5091(used)s 5588(to)s 5827(escape)s 6520(metacharacters\).)s
-gsave
-600 1825 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(range)m gsave
-864 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k
-
-grestore
-gsave
-2428 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(min)m 
-grestore
-gsave
-3073 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(max)m 
-grestore
-
-grestore
-960 1531(The)m
-1380(v)s 6(alue)k 1940(of)s 2203(the)s 2543(parameter)s
-3548(is)s 3750(a)s 3908(nonne)s 3(g)k 1(ati)k 6(v)k 3(e)k
-5113(inte)s 3(ger)k 5825(and)s 6220(lies)s 6594(within)s
-7254(the)s 7594(range)s 8172(speci\207ed.)s 240 fnt83 960 1293(min)m
-240 fnt82 1373 1291(or)m 240 fnt83 1632 1293(max)m 240 fnt82
-2091 1291(may)m 2557(be)s gsave
-2839 1345 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52($)m 
-grestore
-2999(to)s
-3238(indicate)s 4050(no)s 4343(lo)s 6(wer)k 4941(or)s
-5200(upper)s 5805(limit,)s 6362(respecti)s 6(v)k 3(ely)k 15(.)k
-gsave
-600 1104 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(grep)m gsave
-720 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k
-
-grestore
-gsave
-2284 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207lename)m 
-grestore
-
-grestore
-960 810(The)m 240 fnt83 1388 812(\207lename)m
-240 fnt82 2252 810(refers)m 2845(to)s 3084(a)s 3250(\207le)s
-3611(one)s 4013(of)s 4284(whose)s 4952(lines)s 5454(is)s
-5664(the)s 6012(v)s 6(alue)k 6580(of)s 6851(the)s
-7199(parameter)s 8213(\(leading)s 0 52(1.0.1)m 4809(User)s 5320(service)s
-6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 13 13
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8833 13842(13)m 240 fnt82 960 13251(or)m 1211(trailing)s
-1944(whitespace)s 3053(on)s 3341(each)s 3827(line)s 4232(and)s
-4627(empty)s 5270(lines)s 5764(in)s 5998(the)s 6337(\207le)s
-6689(are)s 7027(ignored\).)s 7932(It)s 8128(is)s 8329(an)s
-8603(error)s 960 13011(for)m 1298(the)s 1646(\207le)s 2007(not)s
-2373(to)s 2612(be)s 2894(opened)s 3644(and)s 4048(read.)s
-gsave
-600 12824 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(!)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m 
-grestore
-
-grestore
-960 12530(The)m
-240 fnt83 1388 12532(condition)m 240 fnt82 2346 12530(is)m 240 fnt83
-2556 12532(not)m 240 fnt82 2926 12530(true.)m 600 12290(Conjunctions:)m gsave
-1983 12344 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(&)m 
-grestore
-2143(and)s gsave
-2547 12344 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(|)m 
-grestore
-gsave
-1440 11864 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\()m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m 
-grestore
-0 -292(&)m gsave
-288 -240 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(condition)m 
-grestore
-0 -532(&)m gsave
-288 -480 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(condition)m 
-grestore
-0 -772(\202)m
-0 -1012(\))m 
-grestore
-960 10598(is)m 1170(true)s 1597(if)s 1814(all)s
-2107(the)s 2455(listed)s 3030(conditions)s 4078(are)s 4425(true;)s
-4908(where)s gsave
-5548 10652 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(|)m 
-grestore
-5708(is)s 5918(used)s
-6415(it)s 6607(is)s 6817(true)s 7244(if)s 7461(an)s 3(y)k
-7858(of)s 8129(them)s 8667(is)s 960 10353(true.)m 1428(Ne)s 6(wlines)k
-2368(must)s 2885(be)s 3159(used)s 3648(to)s 3879(separate)s
-4709(one)s 5104(condition)s 6057(from)s 6573(the)s 6913(ne)s 3(xt,)k
-7421(as)s 7663(sho)s 6(wn,)k 8382(and)s 8778(the)s
-960 10113(parentheses)m 2126(are)s 2473(mandatory)s 15(.)k 3585(These)s
-4212(conjunctions)s 5486(do)s 5779(not)s 6145(do)s 6438(lazy)s
-6890(e)s 6(v)k 6(aluation.)k 480 9850(The)m 908(parameters)s
-2006(are:)s gsave
-600 9664 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(service)m 
-grestore
-960 9370(The)m 1388(service)s
-2120(name)s 2694(speci\207ed)s 3602(when)s 4178(the)s 4526(client)s
-5116(w)s 2(as)k 5537(called.)s gsave
-600 9184 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211user)m
-
-grestore
-960 8890(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s
-2522(login)s 3071(name)s 3645(of)s 3916(the)s 4264(calling)s
-4967(user)s 5425(\(determined)s 6637(as)s 6887(for)s gsave
-7225 8944 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(USERV_USER)m 
-grestore
-8226(,)s 8333(abo)s 3(v)k 3(e\))k
-960 8650(and)m 1364(the)s 1712(calling)s 2415(uid)s 2779(\(represented)s
-4017(in)s 4260(decimal\).)s gsave
-600 8464 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211group)m 
-grestore
-960 8170(Se)m 6(v)k 3(eral)k
-1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s
-5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s
-7939(decimal\))s 960 7930(of)m 1231(the)s 1579(calling)s 2282(process.)s
-3103(All)s 3463(the)s 3811(group)s 4423(names)s 5085(come)s
-5659(\207rst,)s 6137(and)s 6541(then)s 7010(the)s 7358(gids.)s
-7861(If)s 8091(the)s 8439(\207rst)s 960 7690(supplementary)m 2422(group)s
-3034(is)s 3244(the)s 3592(same)s 4139(as)s 4389(the)s
-4737(primary)s 5547(group)s 6159(then)s 6628(it)s 6820(is)s
-7030(elided.)s gsave
-600 7504 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211user\211shell)m 
-grestore
-960 7210(The)m 1388(calling)s
-2091(user')s 13(s)k 2699(shell,)s 3257(as)s 3507(listed)s
-4082(in)s 4325(the)s 4673(passw)s 2(ord)k 5633(entry)s
-6178(for)s 6516(the)s 6864(calling)s 7567(login)s 8116(name)s
-8690(\(as)s 960 6970(determined)m 2093(for)s gsave
-2431 7024 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_USER)m
-
-grestore
-3432(,)s 3539(abo)s 3(v)k 3(e\).)k gsave
-600 6784 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(service\211user)m 
-grestore
-960 6490(T)m 19(w)k 2(o)k 1431(strings:)s
-2174(the)s 2522(name)s 3096(of)s 3367(the)s 3715(service)s
-4447(user)s 4905(\(as)s 5234(speci\207ed)s 6142(to)s 6381(the)s
-6729(client\))s 7387(and)s 7791(their)s 8288(uid)s 960 6250(\(represented)m
-2198(in)s 2441(decimal\).)s gsave
-600 6064 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(service\211group)m 
-grestore
-960 5770(Se)m 6(v)k 3(eral)k
-1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s
-5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s
-7939(decimal\))s 8823(of)s 960 5530(the)m 1308(service)s 2040(user)s 13(.)k
-gsave
-600 5344 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(service\211user\211shell)m 
-grestore
-960 5050(The)m 1388(service)s 2120(user')s 13(s)k
-2728(shell,)s 3286(as)s 3536(listed)s 4111(in)s 4354(their)s
-4851(passw)s 2(ord)k 5811(entry)s 15(.)k gsave
-600 4864 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(u\211)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-
-grestore
-960 4570(The)m 1388(v)s 6(alue)k
-1956(of)s 2227(the)s 2575(user)s 4(-de\207ned)k 3811(v)s 6(ariable)k
-240 fnt83 4630 4572(name)m 240 fnt82 5202 4570(passed)m 5898(by)s
-6192(the)s 6540(caller)s 7129(using)s 7701(the)s gsave
-8049 4624 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211defvar)m 
-grestore
-960 4330(command-line)m 2397(option)s 3066(to)s 3305(the)s
-3653(client.)s 4287(If)s 4517(the)s 4865(v)s 6(ariable)k
-5684(w)s 2(as)k 6105(not)s 6471(de\207ned)s 7234(then)s
-7703(this)s 8099(parameter)s 960 4090(is)m 1170(an)s 1453(empty)s
-2105(list)s 2456(of)s 2727(strings;)s 3476(in)s 3719(this)s
-4115(case)s 4582(an)s 3(y)k 4979(condition)s 5940(which)s
-6582(tests)s 7057(it)s 7249(will)s 7675(be)s 7957(f)s 2(alse,)k
-8512(and)s gsave
-960 3904 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(include\211lookup)m 
-grestore
-2421 3850(on)m 2718(it)s
-2910(will)s 3336(read)s 3805(the)s gsave
-4153 3904 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:none)m
-
-grestore
-4713(\207le,)s 5125(or)s gsave
-5384 3904 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:default)m 
-grestore
-6245(if)s
-gsave
-6462 3904 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(:none)m 
-grestore
-7022(is)s 7232(not)s 7598(found.)s
-gsave
-120 3481 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(errors\211push)m 
-grestore
-240 fnt83 1281 3429(\207lename)m gsave
-120 3241 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(srorre)m 
-grestore
-240 fnt82 480 2947(Stacks)m 1155(the)s 1503(error)s
-2026(handling)s 2917(beha)s 4(viour)k 3930(currently)s 4846(in)s
-5089(ef)s 6(fect.)k 5729(An)s 3(y)k 6193(changes)s
-7015(to)s 7254(error)s 7777(handling)s 8668(will)s 480 2707(tak)m 2(e)k
-932(ef)s 6(fect)k 1528(only)s 2008(between)s gsave
-2862 2761 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(errors\211push)m 
-grestore
-4023(and)s gsave
-4427 2761 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(srorre)m 
-grestore
-5027(.)s
-gsave
-120 2367 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-gsave
-120 2127 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(hctac)m 
-grestore
-480 1833(An)m 3(y)k
-935(use)s 1301(of)s gsave
-1563 1887 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(quit)m 
-grestore
-2013(inside)s
-gsave
-2631 1887 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-3683(will)s 4100(merely)s 4807(cause)s
-5385(the)s 5724(parsing)s 6472(to)s 6701(continue)s 7572(at)s
-gsave
-7795 1887 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(hctac)m 
-grestore
-8345(instead.)s 480 1593(An)m 3(y)k
-944(control)s 1676(constructs)s 2696(started)s 3390(since)s 3937(the)s
-gsave
-4285 1647 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-5346(will)s 5772(be)s 6054(considered)s
-7148(\207nished)s 7964(if)s 8181(a)s gsave
-8347 1647 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(quit)m
-
-grestore
-8807(is)s 480 1353(found.)m 1203(If)s 1433(an)s 1716(error)s
-2239(occurs)s 2914(inside)s gsave
-3541 1407 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-4602(the)s
-4950(e)s 3(x)k 3(ecution)k 5931(settings)s 6712(will)s
-7138(be)s 7420(reset)s 7930(\(as)s 8259(if)s 8476(by)s
-8770(the)s gsave
-480 1167 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 
-grestore
-1040 1113(directi)m 6(v)k 3(e\))k
-1994(and)s 2398(parsing)s 3155(will)s 3581(lik)s 2(e)k 6(wise)k
-4425(continue)s 5305(at)s gsave
-5537 1167 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(hctac)m 
-grestore
-6037(.)s
-6201(If)s 6431(a)s 6597(le)s 3(xical)k 7285(or)s
-7544(syntax)s 8224(error)s 8747(is)s 480 873(detected)m 1334(in)s
-1577(the)s 1925(same)s 2472(con\207guration)s 3805(\207le)s 4166(as)s
-4416(the)s gsave
-4764 927 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(catch\211quit)m 
-grestore
-5765(,)s 5872(while)s
-6459(looking)s 7244(for)s 7582(the)s gsave
-7930 927 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(hctac)m
-
-grestore
-8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
-2462(client)s 3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 14 14
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(14)m 240 fnt82 480 13254(an)m 763(error)s
-1286(or)s gsave
-1545 13308 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(quit)m 
-grestore
-1945(,)s 2052(that)s
-2470(ne)s 6(w)k 2917(error)s 3440(will)s 3866(not)s
-4232(be)s 4514(caught.)s 300 fnt84 0 12587(4.2.4.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k
-2148(f)s 7(or)k 2595(changing)s 3829(execution)s 5112(settings)s
-240 fnt82 0 12016(The)m 419(follo)s 6(wing)k 1386(directi)s 6(v)k 3(es)k
-2346(modify)s 3082(the)s 3420(e)s 3(x)k 3(ecution)k
-4391(settings;)s 5223(the)s 5562(serv)s 3(er)k 6192(will)s
-6608(remember)s 7627(the)s 7965(f)s 2(act)k 8370(that)s
-8778(the)s 0 11775(directi)m 6(v)k 3(e)k 881(w)s 2(as)k
-1300(encountered)s 2525(and)s 2927(act)s 3263(on)s 3559(it)s
-3749(only)s 4227(after)s 4721(all)s 5012(the)s 5359(con\207guration)s
-6690(has)s 7058(been)s 7565(parsed.)s 8291(The)s 240 fnt83
-8717 11777(last)m 240 fnt82 0 11535(directi)m 6(v)k 3(e)k
-882(which)s 1524(modi\207es)s 2399(an)s 3(y)k 2796(particuar)s
-3704(setting)s 4394(will)s 4820(tak)s 2(e)k 5272(ef)s 6(fect.)k
-gsave
-120 11181 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reject)m 
-grestore
-480 10887(Reject)m 1150(the)s 1498(request.)s
-gsave
-2292 10941 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m 
-grestore
-2992(,)s gsave
-3099 10941 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m
-
-grestore
-5361(and)s gsave
-5765 10941 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211path)m 
-grestore
-7527(will)s 7953(change)s
-480 10647(this)m 876(setting.)s gsave
-120 10307 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(pr)m 10(o)k 2(gr)k 3(am)k 
-grestore
-2461([)s
-gsave
-2605 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(ar)m 8(gument)k 
-grestore
-4048(\202])s 
-grestore
-480 10013(Ex)m 3(ecute)k
-1300(the)s 1645(program)s 240 fnt83 2512 10015(pr)m 10(o)k 2(gr)k 3(am)k
-240 fnt82 3332 10013(,)m 3436(with)s 3915(the)s 4259(ar)s 4(guments)k
-5299(as)s 5546(speci\207ed,)s 6500(follo)s 6(wed)k 7399(by)s
-7690(an)s 3(y)k 8083(ar)s 4(guments)k 480 9773(gi)m 6(v)k 3(en)k
-1052(to)s 1282(the)s 1621(client)s 2203(if)s gsave
-2411 9827 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(no\211suppress\211args)m 
-grestore
-4064(is)s 4266(in)s 4500(ef)s 6(fect.)k
-5131(It)s 5328(is)s 5529(an)s 5803(error)s 6318(for)s
-6647(the)s 6986(e)s 3(x)k 3(ecution)k 7959(to)s
-8189(f)s 2(ail)k 8550(when)s 480 9533(it)m 672(is)s
-882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s 3098(con\207guration)s
-4431(has)s 4801(been)s 5310(parsed\).)s 6117(If)s 240 fnt83
-6347 9535(pr)m 10(o)k 2(gr)k 3(am)k 240 fnt82
-7227 9533(does)m 7717(not)s 8083(contain)s 8844(a)s 480 9293(slash)m
-1015(it)s 1207(will)s 1633(be)s 1915(searched)s 2809(for)s
-3147(on)s 3444(the)s 3792(service)s 4524(user')s 13(s)k
-5132(path.)s gsave
-120 8953 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m gsave
-3312 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(pathname)m
-
-grestore
-4789([)s gsave
-4933 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(ar)m 8(gument)k 
-grestore
-6376(\202])s
-
-grestore
-480 8659(T)m 19(ak)k 2(e)k 993(all)s 1286(the)s
-1634(characters)s 2652(after)s 3148(the)s 3496(last)s 3887(slash)s
-4422(of)s 4693(the)s 5041(service)s 5773(name)s 6347(speci\207ed)s
-7255(when)s 7831(the)s 8179(client)s 480 8418(w)m 2(as)k
-901(called,)s 1578(and)s 1982(e)s 3(x)k 3(ecute)k
-2762(that)s 3180(program)s 4050(in)s 4293(the)s 4641(directory)s
-5557(named)s 6253(by)s 240 fnt83 6547 8420(pathname)m 240 fnt82
-7545 8418(as)m 7795(if)s 8012(it)s 8204(had)s 8608(been)s
-480 8178(speci\207ed)m 1388(for)s 240 fnt83 1726 8180(e)m 4(xecute)k
-240 fnt82 2431 8178(.)m 2535(The)s 2963(part)s 3394(of)s
-3665(the)s 4013(service)s 4745(name)s 5319(used)s 5816(may)s
-6282(contain)s 7043(only)s 7523(alphanumerics)s 480 7938(and)m 884(h)s 1(yphens)k
-1732(and)s 2136(must)s 2660(start)s 3130(with)s 3611(an)s
-3894(alphanumeric)s 5247(\(and)s 5730(it)s 5921(must)s 6446(be)s
-6727(non-empty\),)s 7950(otherwise)s 8934(it)s 480 7698(is)m 690(an)s
-973(error)s 13(.)k 1587(This)s 2063(directi)s 6(v)k 3(e)k
-2945(is)s 3155(ignored)s 3944(if)s 4161(the)s 4509(rele)s 6(v)k 6(ant)k
-5326(program)s 6196(does)s 6686(not)s 7052(e)s 3(xist)k
-7560(in)s 7803(the)s 8151(directory)s 480 7458(speci\207ed;)m 1437(in)s
-1675(this)s 2066(case)s 2528(the)s 2871(program)s 3735(to)s
-3969(e)s 3(x)k 3(ecute)k 4744(is)s 4949(left)s
-5321(at)s 5548(its)s 5818(pre)s 6(vious)k 6682(setting)s
-7367(\(or)s 7700(unset,)s 8307(if)s 8519(it)s 8705(w)s 2(as)k
-480 7218(not)m 846(set)s 1171(before\).)s 2024(It)s 2229(is)s
-2439(an)s 2722(error)s 3245(for)s 3583(the)s 3931(test)s
-4322(for)s 4660(the)s 5008(e)s 3(xistence)k 5950(of)s
-6221(the)s 6569(program)s 7439(to)s 7678(f)s 2(ail)k
-8048(other)s 8599(than)s 480 6978(with)m 958(a)s 1120(`no)s
-1488(such)s 1980(\207le)s 2336(or)s 2591(directory')s 3561(indication.)s
-4617(It)s 4818(is)s 5023(also)s 5457(an)s 5736(error)s
-6255(for)s 6589(the)s 6932(e)s 3(x)k 3(ecution)k
-7909(to)s 8144(f)s 2(ail)k 8510(if)s 8722(and)s
-480 6738(when)m 1056(it)s 1248(is)s 1458(attempted)s 2458(\(after)s
-3033(all)s 3326(the)s 3674(con\207guration)s 5007(has)s 5377(been)s
-5886(parsed\).)s gsave
-120 6398 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211path)m 
-grestore
-240 fnt83 480 6106(service)m
-240 fnt82 1202 6104(is)m 1404(interpreted)s 2488(as)s 2731(a)s
-2889(program)s 3751(on)s 4041(the)s 4381(def)s 2(ault)k
-gsave
-5094 6158 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(PATH)m 
-grestore
-5546(\(or)s 5877(as)s 6119(a)s
-6277(pathname)s 7256(of)s 7519(an)s 7794(e)s 3(x)k 3(ecutable,)k
-8909(if)s 480 5863(it)m 660(contains)s 1495(a)s gsave
-1649 5917 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(/)m 
-grestore
-1749(\).)s 1919(This)s 2383(directi)s 6(v)k 3(e)k
-3252(is)s 240 fnt83 3450 5865(very)m 3904(dang)s 2(er)k 10(ous)k
-240 fnt82 4899 5863(,)m 4994(and)s 5385(is)s 5583(only)s
-6050(pro)s 3(vided)k 6944(to)s 7170(mak)s 2(e)k
-7730(the)s gsave
-8065 5917 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override)m 
-grestore
-480 5623(options)m 1230(ef)s 6(fecti)k 6(v)k 3(e.)k
-2146(It)s 2344(should)s 3034(not)s 3393(normally)s 4304(be)s
-4579(used.)s 5115(It)s 5313(is)s 5516(an)s 5792(error)s
-6309(for)s 6640(the)s 6981(e)s 3(x)k 3(ecution)k
-7955(to)s 8187(f)s 2(ail)k 8550(when)s 480 5383(it)m
-672(is)s 882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s
-3098(con\207guration)s 4431(has)s 4801(been)s 5310(parsed\).)s gsave
-120 5043 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(execute\211builtin)m gsave
-2304 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(service\211name)m 
-grestore
-gsave
-4307 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(service\211ar)m 8(guments)k
-
-grestore
-
-grestore
-480 4749(Ex)m 3(ecutes)k 1388(the)s 1732(b)s 4(uiltin)k
-2405(service)s 240 fnt83 3133 4751(service-name)m 240 fnt82 4400 4749(.)m
-4500(These)s 5123(b)s 4(uiltin)k 5796(services)s 6612(display)s
-7353(information)s 8534(about)s 480 4509(the)m 822(serv)s 3(er)k
-1455(and/or)s 2120(the)s 2461(request,)s 3252(and)s 3649(ignore)s
-4310(an)s 3(y)k 4700(ar)s 4(guments)k 5737(passed)s
-6426(from)s 6944(the)s 7285(service)s 8011(side)s 8445(e)s 3(xcept)k
-480 4269(possibly)m 1320(to)s 1547(print)s 2046(them)s 2572(as)s
-2810(part)s 3228(of)s 3487(their)s 3972(output.)s 4676(The)s 3(y)k
-5207(write)s 5740(their)s 6225(results)s 6887(to)s 7114(their)s
-7599(standard)s 8454(output)s 480 4029(\(i.e.,)m 958(where)s 6(v)k 3(er)k
-1898(\207le)s 2259(descriptor)s 3274(1)s 3429(is)s 3639(directed\).)s
-4591(The)s 5019(b)s 4(uiltin)k 5696(services)s 6516(are:)s
-gsave
-600 3843 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m 
-grestore
-960 3549(Displays)m 1848(the)s 2196(e)s 3(x)k 3(ecution)k
-3177(settings,)s 4014(de\207ned)s 4777(v)s 6(ariables,)k 5740(ar)s 4(guments,)k
-6839(etc.)s 7221(with)s 7703(which)s 8345(the)s 960 3309(b)m 4(uiltin)k
-1637(service)s 2369(w)s 2(as)k 2790(in)s 9(v)k 4(ok)k 2(ed.)k
-gsave
-600 3123 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(environment)m 
-grestore
-960 2829(Dis)m 1283(plays)s 1839(the)s
-2187(en)s 2410(vi)s 2590(ron)s 2906(ment)s 3444(v)s 6(ari)k
-3803(able)s 4257(set)s 4522(tings)s 5038(with)s 5520(which)s
-6162(the)s 6510(b)s 4(uiltin)k 7187(ser)s 7465(vice)s
-7919(w)s 2(as)k 960 2589(in)m 1143(v)s 4(ok)k 2(ed.)k
-gsave
-600 2403 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(parameter)m gsave
-1440 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(par)m 3(ameter)k
-
-grestore
-
-grestore
-960 2109(Displays)m 1848(the)s 2196(v)s 6(alues)k 2852(of)s
-3123(the)s 3471(service)s 4203(con\207guration)s 5536(language)s 6456(parameter)s
-7470(speci\207ed.)s gsave
-600 1923 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(version)m 
-grestore
-960 1629(Displays)m 1848(the)s
-2196(v)s 3(ersion)k 2954(string)s 3551(and)s 3955(compilation)s
-5154(details)s 5828(of)s 6099(the)s 6447(uservd)s 7143(serv)s 3(er)k
-7783(program.)s gsave
-600 1443 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 
-grestore
-960 1149(Dis)m 1283(plays)s
-1838(the)s 2184(de)s 2406(f)s 2(ault)k 2899(re)s
-3080(set)s 3403(con)s 3746(\207g)s 3992(u)s 4107(ra)s
-4292(tion)s 4719(\(e)s 6(v)k 6(al)k 5179(u)s
-5294(at)s 5466(ed)s 5748(when)s gsave
-6323 1203 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m
-
-grestore
-6881(is)s 7089(found)s 7704(in)s 7945(a)s 8109(con)s
-8452(\207g)s 8698(u)s 8813(ra)s 8998(-)s 960 909(tion)m
-1389(\207le,)s 1801(or)s 2060(when)s 2636(an)s 2919(er)s
-3104(ror)s 3442(is)s 3652(caught)s 4350(by)s gsave
-4644 963 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(catch\211quit)m 
-grestore
-5645(\).)s 0 52(1.0.1)m 4809(User)s 5320(service)s
-6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 15 15
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8833 13842(15)m gsave
-600 13318 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(toplevel)m 
-grestore
-240 fnt82
-960 13024(Displays)m 1848(the)s 2196(top-le)s 6(v)k 3(el)k
-3091(def)s 2(ault)k 3812(con\207guration)s 5145(\(the)s 5572(con\207guration)s
-6905(data,)s 7410(e)s 6(v)k 6(aluated)k 8372(by)s
-8666(the)s 960 12784(serv)m 3(er)k 9(,)k 1638(which)s
-2280(calls)s 2768(all)s 3061(the)s 3409(other)s 3960(con\207guration)s
-5293(\207les\).)s gsave
-600 12598 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(override)m 
-grestore
-960 12304(Displays)m 1847(the)s
-2194(top-le)s 6(v)k 3(el)k 3088(o)s 3(v)k 3(erride)k
-3932(con\207guration)s 5264(\(the)s 5690(con\207guration)s 7021(data,)s 7525(e)s 6(v)k 6(aluated)k
-8486(by)s 8778(the)s 960 12064(serv)m 3(er)k 9(,)k
-1638(which)s 2280(causes)s 2955(all)s 3248(the)s 3596(other)s
-4147(con\207guration)s 5480(data)s 5938(to)s 6177(be)s 6459(parsed\).)s
-gsave
-600 11878 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(help)m 
-grestore
-960 11584(Displays)m 1848(a)s 2014(list)s
-2365(of)s 2636(the)s 2984(understood)s 4106(b)s 4(uiltin)k
-4783(service)s 5515(names)s 6177(and)s 6581(ar)s 4(guments.)k
-480 11321(In)m 736(the)s 1084(fu)s 1278(ture)s 1705(oth)s
-2008(er)s 2253(b)s 4(uiltin)k 2930(ser)s 3208(vices)s
-3750(may)s 4216(be)s 4498(de)s 4720(\207ned)s 5257(which)s
-5899(do)s 6192(more)s 6739(than)s 7208(just)s 7613(print)s
-8124(in)s 8307(for)s 8585(-)s 480 11081(ma)m 772(tion.)s
-gsave
-120 10791 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(set\211environment)m 
-grestore
-gsave
-120 10551 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211set\211environment)m 
-grestore
-480 10257(Runs)m
-gsave
-1024 10311 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/etc/environment)m 
-grestore
-2686(to)s 2925(set)s 3250(the)s
-3598(service)s 4330(user')s 13(s)k 4938(en)s 9(vironment.)k
-6242(This)s 6718(adds)s 7208(the)s 7556(o)s 3(v)k 3(erhead)k
-8485(of)s 480 10017(in)m 9(v)k 4(oking)k 1372(a)s
-1538(shell,)s 2096(b)s 4(ut)k 2458(doesn')s 4(t)k
-3218(cause)s 3805(an)s 3(y)k 4202(shell)s 4708(\(de\)mangling)s
-6049(of)s 6320(the)s 6668(service')s 13(s)k 7554(ar)s 4(guments.)k
-8650(This)s 480 9777(is)m 690(achie)s 6(v)k 3(ed)k
-1589(by)s 1883(in)s 9(v)k 4(oking)k gsave
-960 9591 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(.../program)m 1728(arg)s 2304(arg)s 2880(arg)s 3456(\202)s
-
-grestore
-480 9346(as)m gsave
-960 9160 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/bin/sh)m 1152(\211c)s 1584('.)s
-2016(/etc/environment;)s 4608(exec)s 5328("$@"')s 6192(\211)s 6480(.../program)s
-8208(arg)s 8784(arg)s 9360(arg)s 9936(\202)s 
-grestore
-gsave
-480 8916 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(no\211set\211environment)m 
-grestore
-2342 8862(cancels)m 3096(the)s 3444(ef)s 6(fect)k
-4040(of)s gsave
-4311 8916 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(set\211environment)m 
-grestore
-5812(.)s gsave
-120 8572 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(no\211suppress\211args)m 
-grestore
-gsave
-120 8332 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(suppress\211args)m 
-grestore
-480 8038(Include)m 1253(an)s 3(y)k
-1650(ar)s 4(guments)k 2693(gi)s 6(v)k 3(en)k
-3273(to)s 3512(the)s 3860(client)s 4450(as)s 4700(ar)s 4(guments)k
-5743(to)s 5982(the)s 6330(program)s 7200(in)s 9(v)k 4(ok)k 2(ed)k
-8015(as)s 8265(a)s 8431(result)s 480 7798(of)m 749(an)s
-gsave
-1030 7852 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m 
-grestore
-1730(,)s gsave
-1834 7852 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m
-
-grestore
-4094(or)s gsave
-4351 7852 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211path)m 
-grestore
-6110(directi)s 6(v)k 3(e.)k
-gsave
-7038 7852 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(suppress\211args)m 
-grestore
-8396(undoes)s 480 7558(the)m 828(ef)s 6(fect)k
-1424(of)s gsave
-1695 7612 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211suppress\211args)m 
-grestore
-3297(.)s gsave
-120 7237 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(require\211fd)m gsave
-1584 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
-
-grestore
-2940(read|write)s 
-grestore
-480 6938(In)m 676(sist)s 1054(that)s 1472(the)s
-1820(\207ledescrip)s 2808(tor\(s\))s 3373(be)s 3655(opened)s 4405(for)s
-4743(read)s 5152(ing)s 5511(resp.)s 6013(writ)s 6397(ing.)s
-6807(It)s 7012(is)s 7222(an)s 7505(er)s 7690(ror)s
-8028(if)s 8245(an)s 3(y)k 8642(de)s 8864(-)s
-480 6698(scrip)m 937(tor)s 1258(mark)s 2(ed)k 2027(as)s
-2272(re)s 2453(quired)s 3118(when)s 3689(the)s 4033(ser)s
-4311(vice)s 4760(is)s 4966(about)s 5554(to)s 5788(be)s
-6066(in)s 6249(v)s 4(ok)k 2(ed)k 6882(\(af)s
-7158(ter)s 7465(the)s 7808(con)s 8151(\207g)s 8397(u)s
-8512(ra)s 8697(tion)s 480 6458(has)m 850(been)s 1359(parsed\))s
-2111(w)s 2(as)k 2532(not)s 2898(spec)s 3316(i)s
-3376(\207ed)s 3793(when)s 4369(the)s 4717(client)s 5307(w)s 2(as)k
-5728(in)s 5911(v)s 4(ok)k 2(ed.)k 6595(Each)s
-7130(\207le)s 7491(de)s 7713(scrip)s 8170(tor)s 8495(has)s
-480 6218(a)m 646(sep)s 958(a)s 1064(rate)s 1477(set)s
-1742(ting,)s 2221(and)s 2625(the)s 2973(last)s 3364(one)s
-3766(of)s gsave
-4037 6272 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(require\211fd)m 
-grestore
-5038(,)s gsave
-5145 6272 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(allow\211fd)m 
-grestore
-5946(,)s gsave
-6053 6272 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(ignore\211fd)m 
-grestore
-6954(,)s
-gsave
-7061 6272 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(null\211fd)m 
-grestore
-7821(or)s gsave
-8080 6272 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reject\211fd)m
-
-grestore
-480 5977(which)m 1122(af)s 1319(fect)s 1676(ed)s 1960(a)s
-2126(par)s 2431(tic)s 2662(u)s 2777(lar)s 3088(\207le)s
-3449(de)s 3671(scrip)s 4128(tor)s 4453(will)s 4879(tak)s 2(e)k
-5331(ef)s 5528(fect.)s 240 fnt83 6049 5979(fd-)m 6302(r)s 3(ang)k 2(e)k
-240 fnt82 6909 5977(may)m 7375(be)s 7657(a)s 7823(sin)s
-8099(gle)s 8447(num)s 8873(-)s 480 5737(ber)m 9(,)k
-883(tw)s 2(o)k 1293(num)s 1719(bers)s 2168(sep)s
-2480(a)s 2586(rat)s 2837(ed)s 3121(by)s 3415(a)s
-3581(h)s 1(y)k 3814(phen,)s 4387(or)s 4646(one)s
-5048(num)s 5474(ber)s 5839(fol)s 6099(lo)s 6(wed)k
-6736(by)s 7030(a)s 7196(h)s 1(y)k 7429(phen)s
-7952(\(in)s 8214(di)s 8394(cat)s 8672(ing)s 480 5497(all)m
-772(de)s 994(scrip)s 1451(tors)s 1858(from)s 2380(that)s
-2796(num)s 3222(ber)s 3585(on)s 3822(w)s 2(ards\).)k
-4573(It)s 4776(may)s 5240(also)s 5676(be)s 5956(one)s
-6357(of)s 6626(the)s 6972(w)s 2(ords)k gsave
-7604 5551 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(stdin)m 
-grestore
-8104(,)s gsave
-8209 5551 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stdout)m 
-grestore
-8867(or)s
-gsave
-480 5311 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(stderr)m 
-grestore
-1080 5257(.)m 1174(Open-)s 1761(ended)s
-2380(\207le)s 2730(de)s 2952(scrip)s 3409(tor)s 3723(rangers)s
-4466(are)s 4802(al)s 4969(lo)s 6(wed)k 5596(only)s
-6065(with)s gsave
-6536 5311 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reject\211fd)m 
-grestore
-7486(and)s gsave
-7879 5311 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(ignore\211fd)m 
-grestore
-8780(,)s 8876(as)s 480 5017(oth)m 783(er)s
-968(wise)s 1457(the)s 1799(ser)s 2077(vice)s 2526(pro)s
-2838(gram)s 3383(w)s 2(ould)k 4033(\207nd)s 4458(it)s
-4590(self)s 5001(with)s 5477(a)s 5638(v)s 3(ery)k
-6108(lar)s 4(ge)k 6632(num)s 7058(ber)s 7417(of)s
-7683(\207le)s 8038(de)s 8260(scrip)s 8717(tors)s 480 4777(open.)m
-1090(When)s 1699(the)s 2027(con)s 2370(\207g)s 2616(u)s
-2731(ra)s 2916(tion)s 3325(has)s 3674(been)s 4163(parsed,)s
-4874(and)s 5258(be)s 5480(fore)s 5900(the)s 6227(ser)s
-6505(vice)s 6939(is)s 7129(about)s 7701(to)s 7920(be)s
-8181(e)s 3(x)k 8399(e)s 8501(cut)s 8793(ed,)s
-480 4537(stderr)m 1083(\(fd)s 1418(2\))s 1665(must)s 2189(be)s
-2470(re)s 2651(quired)s 3320(or)s 3578(al)s 3745(lo)s 6(wed)k
-4381(\()s gsave
-4454 4591 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(require\211fd)m 
-grestore
-5514(or)s gsave
-5772 4591 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(allow\211fd)m 
-grestore
-6573(\))s 6701(for)s 7038(writ)s 7422(ing;)s
-7839(this)s 8234(is)s 8443(so)s 8708(that)s 480 4297(the)m
-825(er)s 1010(ror)s 1345(mes)s 1721(sage)s 2198(print)s
-2649(ed)s 2930(by)s 3220(the)s 3565(serv)s 3958(er')s 13(s)k
-4350(child)s 4882(pro)s 5194(cess)s 5640(if)s 5853(it)s
-6042(can)s 6371(not)s gsave
-6734 4351 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(exec)m 
-grestore
-7190(the)s
-7535(ser)s 7813(vice)s 8263(pro)s 8575(gram)s 480 4057(is)m
-690(not)s 1056(lost.)s gsave
-120 3767 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(allow\211fd)m gsave
-1296 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(fd\211r)m 3(ang)k 2(e)k 
-grestore
-2652([read|write])s 
-grestore
-480 3468(Allo)m 6(w)k
-1126(the)s 1474(descriptor\(s\))s 2729(to)s 2968(be)s 3250(opened)s
-4000(for)s 4338(reading)s 5108(resp.)s 5610(writing,)s 6407(or)s
-6666(either)s 7269(if)s 7486(neither)s gsave
-8209 3522 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m
-
-grestore
-8669(nor)s gsave
-480 3282 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m 
-grestore
-1040 3228(is)m 1250(speci\207ed.)s
-2204(If)s 2434(a)s 2600(particular)s 3574(descriptor)s 4589(not)s
-4955(speci\207ed)s 5863(by)s 6157(the)s 6505(client)s 7095(then)s
-7564(it)s 7756(will)s 8182(be)s 8464(open)s 480 2988(onto)m
-gsave
-959 3042 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/dev/null)m 
-grestore
-1920(\(for)s 2337(reading,)s 3161(writing,)s
-3958(or)s 4217(both,)s 4750(depending)s 5801(on)s 6098(whether)s
-gsave
-6928 3042 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m 
-grestore
-7328(,)s gsave
-7435 3042 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m
-
-grestore
-7995(or)s 8254(neither)s 480 2748(w)m 2(as)k 901(speci\207ed\).)s
-gsave
-120 2408 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(null\211fd)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
-
-grestore
-2508([read|write])s 
-grestore
-480 2109(Spec)m 938(i)s 998(fy)s 1251(that)s
-1669(the)s 2017(de)s 2239(scrip)s 2696(tor\(s\))s 3261(be)s
-3543(opened)s 4293(onto)s gsave
-4772 2163 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(/dev/null)m 
-grestore
-5733(for)s
-6071(read)s 6480(ing)s 6839(resp.)s 7341(writ)s 7725(ing,)s
-8138(or)s 8397(both)s 8880(if)s 480 1869(nei)m 766(ther)s
-gsave
-1181 1923 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(read)m 
-grestore
-1624(nor)s gsave
-1986 1923 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(write)m
-
-grestore
-2529(is)s 2722(spec)s 3140(i)s 3200(\207ed.)s 3646(An)s 3(y)k
-4093(spec)s 4511(i)s 4571(\207)s 4696(ca)s 4908(tion)s
-5320(of)s 5574(these)s 6104(\207le)s 6448(de)s 6670(scrip)s
-7127(tors)s 7519(by)s 7796(the)s 8127(client)s 8700(will)s
-480 1629(be)m 762(silent)s 1279(ly)s 1519(ig)s 1698(nored;)s
-2355(the)s 2703(client)s 3293(will)s 3719(see)s 4080(its)s
-4356(ends)s 4846(of)s 5117(the)s 5465(de)s 5687(scrip)s
-6144(tors)s 6553(be)s 6775(ing)s 7134(closed)s 7803(im)s
-8055(me)s 8343(di)s 8523(ate)s 8797(ly)s 15(.)k
-gsave
-120 1289 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reject\211fd)m gsave
-1440 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(fd\211r)m 3(ang)k 2(e)k
-
-grestore
-
-grestore
-480 995(Do)m 824(not)s 1187(allo)s 6(w)k 1764(the)s
-2109(descriptor\(s\))s 3362(to)s 3598(be)s 3878(speci\207ed)s 4783(by)s
-5075(the)s 5420(client.)s 6052(It)s 6254(is)s 6462(an)s
-6742(error)s 7263(if)s 7477(an)s 3(y)k 7871(descriptor\(s\))s
-480 755(mark)m 2(ed)k 1253(for)s 1591(rejection)s 2483(are)s
-2830(speci\207ed)s 3738(when)s 4314(the)s 4662(service)s 5394(is)s
-5604(about)s 6196(to)s 6435(be)s 6717(in)s 9(v)k 4(ok)k 2(ed)k
-7532(\(after)s 8107(the)s 0 52(User)m 511(service)s 1243(daemon)s
-2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 16 16
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(16)m 240 fnt82 480 13251(con\207guration)m 1813(has)s
-2183(been)s 2692(parsed\).)s gsave
-120 12911 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(ignore\211fd)m gsave
-1440 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(fd\211r)m 3(ang)k 2(e)k 
-grestore
-
-grestore
-480 12617(Silent)m 1037(ly)s
-1260(ig)s 1439(nore)s 1902(an)s 3(y)k 2281(spec)s
-2699(i)s 2759(\207)s 2884(ca)s 3096(tion)s 3507(by)s
-3783(the)s 4113(client)s 4685(of)s 4938(those)s 5481(de)s
-5703(scrip)s 6160(tor\(s\).)s 6762(The)s 7172(pipes)s 7710(cor)s
-8015(re)s 8196(spond)s 8767(ing)s 480 12377(to)m 719(these)s
-1266(de)s 1488(scrip)s 1945(tors)s 2354(will)s 2780(be)s
-3062(closed)s 3731(just)s 4136(be)s 4358(fore)s 4798(the)s
-5146(ser)s 5424(vice)s 5878(is)s 6088(in)s 6271(v)s 4(ok)k 2(ed.)k
-gsave
-120 12037 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(disconnect\211hup)m 
-grestore
-gsave
-120 11797 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211disconnect\211hup)m 
-grestore
-480 11503(Caus)m
-950(es)s 1200(the)s 1548(ser)s 1826(vice')s 13(s)k
-2434(pro)s 2746(cess)s 3195(group)s 3807(to)s 4046(get)s
-4398(a)s gsave
-4564 11557 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGHUP)m 
-grestore
-5224(if)s 5441(the)s
-5789(client)s 6379(dis)s 6649(con)s 6992(nects)s 7534(be)s
-7756(fore)s 8196(the)s 8544(main)s 480 11263(ser)m 758(vice)s
-1209(pro)s 1521(cess)s 1966(ter)s 2217(mi)s 2463(nates.)s
-gsave
-3055 11317 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211disconnect\211hup)m 
-grestore
-4813(can)s 5142(cels)s gsave
-5560 11317 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(disconnect\211hup)m 
-grestore
-6961(.)s 7122(If)s 7348(one)s 7747(of)s
-8014(the)s 8358(read)s 8767(ing)s 480 11023(de)m 702(scrip)s
-1159(tors)s 1568(spec)s 1986(i)s 2046(\207ed)s 2463(when)s
-3039(the)s 3387(client)s 3977(is)s 4187(called)s 4815(gets)s
-5251(a)s 5417(read)s 5886(er)s 6071(ror)s 9(,)k
-6447(or)s 6706(if)s 6923(the)s 7271(ser)s 7549(vice)s
-8003(is)s 8213(dis)s 8483(con)s 8826(-)s 480 10782(nect)m
-878(ed)s 1162(for)s 1500(some)s 2061(oth)s 2364(er)s
-2609(rea)s 2900(son,)s 3340(then)s 3809(the)s gsave
-4157 10836 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(SIGHUP)m 
-grestore
-4817(will)s 5243(be)s 5525(de)s 5747(li)s 6(v)k
-5988(ered)s 240 fnt83 6457 10784(be)m 6676(for)s 8(e)k
-240 fnt82 7106 10782(the)m 7454(writ)s 7838(ing)s 8197(end\(s\))s
-8843(of)s 480 10542(the)m 818(ser)s 1096(vice')s 13(s)k
-1694(read)s 2103(ing)s 2452(pipe\(s\))s 3154(are)s 3491(closed,)s
-4199(so)s 4455(that)s 4863(the)s 5201(client)s 5781(can)s
-6160(dis)s 6430(tin)s 6679(guish)s 7245(dis)s 7515(con)s
-7858(nec)s 8183(tion)s 8602(from)s 480 10302(read)m 889(ing)s
-1248(EOF)s 1758(on)s 2055(a)s 2221(pipe.)s gsave
-120 9962 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(reset)m 
-grestore
-480 9668(Resets)m 1155(the)s 1503(e)s 3(x)k 3(ecution)k
-2484(settings)s 3265(to)s 3504(the)s 3852(def)s 2(ault.)k
-4617(This)s 5093(is)s 5303(equi)s 6(v)k 6(alent)k
-6347(to:)s gsave
-960 9482 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cd)m 432(~/)s 0 -292(reject)m
-0 -532(no\211set\211environment)m 0 -772(suppress\211args)m 0 -1012(allow\211fd)m 1296(0)s 1584(read)s
-0 -1252(allow\211fd)m 1296(1\2112)s 1872(write)s 0 -1492(reject\211fd)m 1440(3\211)s
-0 -1732(disconnect\211hup)m 
-grestore
-0 7505(If)m 230(no)s gsave
-523 7559 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute)m
-
-grestore
-1223(,)s gsave
-1330 7559 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211path)m 
-grestore
-3032(,)s gsave
-3139 7559 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(execute\211from\211directory)m 
-grestore
-5401(or)s gsave
-5660 7559 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(builtin)m 
-grestore
-6420(is)s
-6630(interpreted)s 7722(before)s 8388(all)s 8681(the)s 0 7265(\207les)m
-449(are)s 796(read)s 1265(then)s 1734(the)s 2082(request)s
-2832(is)s 3042(rejected.)s 9066 670 0 670 240 240 60 0 6241 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(4.3.)m 628(Err)s 5(ors)k
-1618(in)s 1958(the)s 2458(con\207guration)s 4359(\207le)s 
-grestore
-0 5779(If)m
-230(a)s 396(syntax)s 1076(error)s 1599(or)s 1858(other)s
-2409(problem)s 3266(occurs)s 3941(when)s 4517(processing)s 5593(a)s
-5759(con\207guration)s 7092(\207le)s 7453(then)s 7922(a)s 8088(diagnostic)s
-0 5539(will)m 422(be)s 699(issued,)s 1399(to)s 1633(where)s 6(v)k 3(er)k
-2568(the)s 2911(error)s 3429(messages)s 4378(are)s 4721(currently)s
-5632(being)s 6212(sent)s 6652(\(see)s 7087(the)s gsave
-7430 5593 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(errors\211)m 
-grestore
-8185(f)s 2(amily)k 8855(of)s 0 5299(directi)m 6(v)k 3(es,)k
-1026(abo)s 3(v)k 3(e\).)k 0 4891(The)m 428(error)s
-951(will)s 1377(cause)s 1964(processing)s 3040(of)s 3311(the)s
-3659(con\207guration)s 4992(\207les)s 5441(to)s 5680(cease)s 6253(at)s
-6485(that)s 6903(point,)s 7502(unless)s 8151(the)s 8499(error)s
-0 4651(w)m 2(as)k 421(inside)s 1048(a)s gsave
-1214 4705 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(catch\211quit)m 
-grestore
-2275(construct.)s 3255(In)s 3511(this)s 3907(case)s
-4374(the)s 4722(settings)s 5503(controlling)s 6605(the)s 6953(program')s 13(s)k
-7973(e)s 3(x)k 3(ecution)k 0 4411(will)m 426(be)s
-708(reset)s 1218(to)s 1457(the)s 1805(def)s 2(aults)k
-2610(as)s 2860(if)s 3077(a)s gsave
-3243 4465 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m
-
-grestore
-3803(directi)s 6(v)k 3(e)k 4685(had)s 5089(been)s
-5598(issued,)s 6303(and)s 6707(parsing)s 7464(continues)s 8432(after)s
-gsave
-0 4225 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(hctac)m 
-grestore
-500 4171(.)m 9066 609 0 609 240 240 60 0 3208 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 5(4.4.)m
-628(Defaults)s 
-grestore
-0 2746(The)m 428(def)s 2(ault)k 1149(con\207guration)s
-2482(processing)s 3558(is)s 3768(as)s 4018(if)s 4235(the)s
-4583(daemon)s 5398(were)s 5918(parsing)s 6675(an)s 6958(o)s 3(v)k 3(erall)k
-7670(con\207guration)s 0 2506(\207le)m 361(whose)s 1029(contents)s 1877(were)s
-2397(as)s 2647(follo)s 6(ws:)k 0 52(1.0.1)m 4809(User)s
-5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 17 17
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8831 13842(17)m gsave
-480 13335 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(reset)m 0 -292(user\211rcfile)m
-1728(~/.userv/rc)s 0 -532(errors\211to\211stderr)m 0 -772(include)m 1152(/etc/userv/system.default)s 0 -1012(if)m
-432(grep)s 1152(service\211user\211shell)s 3888(/etc/shells)s 432 -1252(errors\211push)m 720 -1492(catch\211quit)m
-1008 -1732(include\211ifexist)m gsave
-3312 -1680 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207le)m 345(speci\207ed)s 1248(by)s
-1530(most)s 2046(r)s 8(ecent)k 2699(user\211r)s 8(c\207le)k
-3767(dir)s 8(ective)k 
-grestore
-720 -1972(hctac)m 432 -2212(srorre)m 0 -2452(fi)m
-0 -2692(include)m 1152(/etc/userv/system.override)s 0 -2932(quit)m 
-grestore
-240 fnt82 0 9859(If)m
-226(one)s 624(of)s 891(the)s gsave
-1235 9913 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211override)m
-
-grestore
-2292(options)s 3044(to)s 3279(the)s 3623(client)s 4209(is)s
-4415(used)s 4908(then)s 5373(it)s 5561(will)s 5983(instead)s
-6714(be)s 6992(as)s 7238(if)s 7451(the)s 7795(daemon)s
-8606(were)s 0 9619(parsing)m 757(an)s 1040(o)s 3(v)k 3(erall)k
-1752(con\207guration)s 3085(as)s 3335(follo)s 6(ws:)k gsave
-480 9433 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(reset)m 0 -292(errors\211to\211stderr)m 0 -532(include)m gsave
-1152 -480 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(\207le)m
-345(containing)s 1423(con\207gur)s 3(ation)k 2765(data)s 3246(sent)s
-3695(by)s 3977(client)s 
-grestore
-0 -772(quit)m 
-grestore
-0 52(User)m 511(service)s
-1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 18 18
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(18)m gsave
-0 12726 translate
-240 fnt82 9066 688 0 688 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 70(5.)m 412(Inf)s 8(ormation)k
-2257(passed)s 3297(thr)s 6(ough)k 4539(the)s 5070(client/daemon)s
-7185(combination)s 
-grestore
-240 fnt82 0 12264(The)m 428(information)s 1613(described)s
-2587(belo)s 6(w)k 3220(is)s 3430(the)s 3778(only)s
-4258(information)s 5443(which)s 6085(passes)s 6747(between)s 7601(the)s
-7949(caller)s 8538(and)s 0 12024(the)m 348(service.)s 0 11616(\213)m
-480(The)s 908(service)s 1640(name)s 2214(supplied)s 3083(by)s
-3377(the)s 3725(caller)s 4314(is)s 4524(a)s 4(v)k 6(ailable)k
-5432(in)s 5675(the)s 6023(con\207guration)s 7356(language)s 8276(for)s
-480 11376(deciding)m 1343(whether)s 2158(and)s 2547(which)s 3175(service)s
-3892(program)s 4747(to)s 4971(in)s 9(v)k 4(ok)k 2(e,)k
-5701(in)s 5929(the)s gsave
-6262 11430 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(service)m 
-grestore
-7008(parameter)s 9(,)k
-8045(and)s 8434(is)s 8629(used)s 480 11136(by)m 774(the)s
-gsave
-1122 11190 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211directory)m 
-grestore
-3384(and)s gsave
-3788 11190 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211from\211path)m
-
-grestore
-5550(con\207guration)s 6883(directi)s 6(v)k 3(es.)k 7906(It)s
-8111(is)s 8321(usually)s 480 10896(used)m 977(to)s 1216(select)s
-1819(which)s 2461(service)s 3193(program)s 4063(to)s 4302(in)s 9(v)k 4(ok)k 2(e.)k
-5043(It)s 5248(is)s 5458(also)s 5896(passed)s 6592(to)s
-6831(the)s 7179(service)s 7911(program)s 8781(in)s 480 10656(the)m
-gsave
-828 10710 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_SERVICE)m 
-grestore
-2189(en)s 9(vironment)k 3449(v)s 6(ariable.)k
-0 10225(\213)m 480(File)s 902(descriptors)s 1995(speci\207ed)s 2897(by)s
-3185(the)s 3528(client)s 4112(and)s 4510(allo)s 6(wed)k
-5313(according)s 6304(to)s 6537(the)s 6879(con\207guration)s 8206(language)s
-480 9985(will)m 906(be)s 1188(connected.)s 2262(Each)s 2797(\207le)s
-3158(descriptor)s 4173(is)s 4383(opened)s 5133(for)s 5471(reading)s
-6241(or)s 6500(writing.)s 7294(Communication)s 8893(is)s 480 9745(via)m
-832(pipes,)s 1444(one)s 1846(end)s 2250(of)s 2521(each)s
-3016(pipe)s 3484(being)s 4069(open)s 4592(on)s 4889(the)s
-5237(appropriate)s 6381(\207le)s 6742(descriptor)s 7757(in)s 8000(the)s
-8348(service)s 480 9505(program)m 1347(\(when)s 1999(it)s 2188(is)s
-2394(in)s 9(v)k 4(ok)k 2(ed\))k 3276(and)s
-3677(the)s 4022(other)s 4569(end)s 4970(being)s 5552(held)s
-6019(by)s 6309(the)s 6654(client)s 7241(process,)s 8062(which)s
-8700(will)s 480 9265(read)m 942(and)s 1339(write)s 1878(\207les)s
-2320(it)s 2505(opens)s 3108(on)s 3398(behalf)s 4060(of)s
-4324(its)s 4593(caller)s 5175(or)s 5427(\207le)s 5781(descriptors)s
-6873(it)s 7058(is)s 7261(passed)s 7950(by)s 8237(its)s
-8506(caller)s 13(.)k 480 9025(Data)m 991(may)s 1457(be)s
-1739(passed)s 2435(into)s 2860(the)s 3208(service)s 3940(through)s
-4742(reading)s 5512(pipes)s 6068(and)s 6472(out)s 6838(of)s
-7109(it)s 7301(through)s 8103(writing)s 480 8785(pipes.)m 1083(These)s
-1703(pipes)s 2252(can)s 2634(remain)s 3347(open)s 3864(only)s
-4337(until)s 4823(the)s 5164(service)s 5889(and)s 6287(client)s
-6870(ha)s 4(v)k 3(e)k 7364(terminated,)s 8485(or)s
-8737(can)s 480 8545(be)m 762(made)s 1336(to)s 1575(stay)s
-2014(open)s 2537(after)s 3033(the)s 3381(client)s 3971(has)s
-4341(terminated)s 5420(and)s 5824(\(if)s 6120(the)s 6468(service)s
-7200(program)s 8070(forks\))s 8689(the)s 480 8305(main)m 998(service)s
-1712(process)s 2462(has)s 2814(e)s 3(xited;)k 3489(the)s
-3820(beha)s 4(viour)k 4815(is)s 5007(controlled)s 6016(by)s
-6292(options)s 7031(passed)s 7709(to)s 7930(the)s 8260(client)s
-8832(by)s 480 8065(its)m 751(caller)s 13(.)k 1426(The)s
-1848(caller)s 2432(can)s 2816(arrange)s 3582(that)s 3995(a)s
-4156(writing)s 4893(pipe)s 5356(be)s 5633(connected)s 6655(to)s
-6889(a)s 7050(pipe)s 7512(or)s 7766(similar)s 8482(object)s
-480 7825(and)m 884(cause)s 1471(attempts)s 2331(to)s 2570(write)s
-3116(to)s 3355(that)s 3773(descriptor)s 4788(by)s 5082(the)s
-5430(service)s 6162(to)s 6401(generate)s 7266(a)s gsave
-7432 7879 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(SIGPIPE)m 
-grestore
-8192(\(or)s gsave
-8530 7879 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(EPIPE)m 
-grestore
-480 7585(if)m
-gsave
-684 7639 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-1431(is)s 1628(caught)s 2313(or)s
-2559(ignored\))s 3405(in)s 3635(the)s 3970(service.)s 4797(Lik)s 2(e)k 6(wise,)k
-5759(the)s 6094(service)s 6813(can)s 7189(close)s 7722(\207ledescriptors)s
-480 7345(speci\207ed)m 1373(for)s 1696(reading,)s 2505(which)s 3132(will)s
-3543(cause)s 4115(the)s 4448(corresponding)s 5855(\207ledescriptors)s 7244(passed)s
-7925(by)s 8204(the)s 8537(caller)s 480 7105(to)m 716(be)s
-995(closed,)s 1709(so)s 1972(that)s 2387(if)s 2600(these)s
-3144(are)s 3488(pipes)s 4040(processes)s 5004(which)s 5643(write)s
-6185(to)s 6421(them)s 6956(will)s 7378(recei)s 6(v)k 3(e)k
-gsave
-8111 7159 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGPIPE)m 
-grestore
-8867(or)s gsave
-480 6919 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(EPIPE)m
-
-grestore
-980 6865(.)m 0 6460(\213)m 480(If)s gsave
-706 6514 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211suppress\211args)m
-
-grestore
-2363(is)s 2568(set)s 2888(then)s 3353(ar)s 4(guments)k
-4391(passed)s 5082(to)s 5316(the)s 5660(client)s 6245(by)s
-6534(its)s 6805(caller)s 7390(will)s 7811(be)s 8088(passed)s
-8779(on,)s 480 6220(v)m 3(erbatim,)k 1433(to)s 1672(the)s
-2020(service.)s 0 5784(\213)m 480(F)s 3(a)k 716(tal)s
-1009(sig)s 1281(nals)s 1717(and)s 2121(sys)s 2418(tem)s
-2836(call)s 3235(f)s 2(ail)k 3545(ures)s 3994(e)s 3(x)k
-4212(pe)s 4434(ri)s 4573(enced)s 5189(by)s 5483(the)s
-5831(client)s 6421(will)s 6847(re)s 7028(sult)s 7433(in)s
-7676(the)s 8024(dis)s 8294(con)s 8637(nec)s 8962(-)s
-480 5544(tion)m 909(of)s 1180(the)s 1528(ser)s 1806(vice)s
-2260(from)s 2784(the)s 3132(client)s 3722(and)s 4126(pos)s
-4450(si)s 4603(bly)s 4963(some)s 5524(of)s 5795(the)s
-6143(com)s 6555(mu)s 6856(ni)s 7036(ca)s 7248(tion)s
-7677(\207le)s 8038(de)s 8260(scrip)s 8717(tors)s 480 5304(de)m
-702(scribed)s 1450(abo)s 3(v)k 3(e;)k 2128(if)s
-gsave
-2345 5358 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(disconnect\211hup)m 
-grestore
-3806(is)s 4016(set)s 4341(then)s
-4810(the)s 5158(ser)s 5436(vice)s 5890(will)s 6316(also)s
-6754(be)s 7036(sent)s 7481(a)s gsave
-7647 5358 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(SIGHUP)m
-
-grestore
-8247(.)s 0 4868(\213)m 480(The)s 908(v)s 6(alue)k
-1476(of)s 1747(the)s gsave
-2095 4922 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(LOGNAME)m 
-grestore
-2855(\(or)s
-gsave
-3193 4922 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USER)m 
-grestore
-3593(\))s 3721(en)s 9(vironment)k
-4981(v)s 6(ariable)k 5800(as)s 6050(passed)s 6746(to)s
-6985(the)s 7333(client)s 7923(will)s 8349(be)s 480 4628(used)m
-977(as)s 1227(the)s 1575(login)s 2124(name)s 2698(of)s
-2969(the)s 3317(calling)s 4020(user)s 4478(if)s 4695(the)s
-5043(uid)s 5407(of)s 5678(the)s 6026(calling)s 6729(process)s
-7497(matches)s 8331(the)s 8679(uid)s 480 4388(corresponding)m 1902(to)s
-2141(that)s 2559(login)s 3108(name.)s 3730(Otherwise)s 4768(the)s
-5116(calling)s 5819(uid')s 13(s)k 6335(passw)s 2(ord)k
-7295(entry)s 7840(will)s 8266(be)s 8548(used)s 480 4148(to)m
-708(determine)s 1708(the)s 2045(calling)s 2737(user')s 13(s)k
-3334(login)s 3872(name.)s 4543(This)s 5007(login)s 5545(name)s
-6108(and)s 6501(the)s 6838(calling)s 7530(uid)s 7883(are)s
-8218(a)s 4(v)k 6(ailable)k 480 3908(in)m 723(the)s
-1071(con\207guration)s 2404(language)s 3324(in)s 3567(the)s gsave
-3915 3962 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(calling\211user)m 
-grestore
-5176(parameter)s 6190(and)s 6594(are)s 6941(passed)s
-7637(to)s 7876(the)s 8224(service)s 480 3668(program)m 1334(in)s
-1561(en)s 9(vironment)k 2805(v)s 6(ariables)k gsave
-3696 3722 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(USERV_USER)m 
-grestore
-4741(and)s gsave
-5129 3722 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_UID)m 
-grestore
-6030(.)s
-6178(The)s 6590(shell)s 7080(corresponding)s 8486(to)s 8708(that)s
-480 3428(login)m 1023(name)s 1591(\(according)s 2659(to)s 2892(the)s
-3233(passw)s 2(ord)k 4187(entry\))s 4799(is)s 5003(a)s 4(v)k 6(ailable)k
-5904(as)s 6148(in)s 6384(the)s 6726(con\207guration)s 8052(language')s 13(s)k
-gsave
-480 3242 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211user\211shell)m 
-grestore
-2342 3188(parameter)m 13(.)k 3447(If)s
-3677(no)s 3970(rele)s 6(v)k 6(ant)k 4787(passw)s 2(ord)k
-5747(entry)s 6292(can)s 6681(be)s 6963(found)s 7580(then)s
-8049(no)s 8342(service)s 480 2948(will)m 906(be)s 1188(in)s 9(v)k 4(ok)k 2(ed.)k
-0 2542(\213)m 480(The)s 908(numeric)s 1744(v)s 6(alues)k
-2400(and)s 2804(te)s 3(xtual)k 3506(names)s 4168(for)s
-4506(calling)s 5209(gid)s 5573(and)s 5977(supplementary)s 7439(group)s
-8051(list)s 8402(are)s 480 2302(a)m 4(v)k 6(ailable)k
-1380(in)s 1615(the)s 1955(con\207guration)s 3280(language)s 4192(in)s
-4427(the)s gsave
-4766 2356 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(calling\211group)m 
-grestore
-6119(parameter)s 7125(and)s
-7521(are)s 7860(passed)s 8548(to)s 8778(the)s 480 2062(service)m
-1212(in)s 1455(en)s 9(vironment)k 2715(v)s 6(ariables.)k
-3735(If)s 3965(no)s 4258(name)s 4832(can)s 5221(be)s
-5503(found)s 6120(for)s 6458(a)s 6624(numeric)s 7460(group)s
-8072(to)s 8311(which)s 480 1822(the)m 828(calling)s 1531(process)s
-2299(belongs)s 3095(then)s 3564(no)s 3857(service)s 4589(will)s
-5015(be)s 5297(in)s 9(v)k 4(ok)k 2(ed.)k
-0 1367(\213)m 480(The)s 908(name)s 1482(of)s 1753(the)s
-2101(current)s 2837(w)s 2(orking)k 3686(directory)s 4602(in)s
-4845(which)s 5487(the)s 5835(client)s 6425(w)s 2(as)k
-6846(in)s 9(v)k 4(ok)k 2(ed)k 7661(is)s
-7871(passed,)s 8616(if)s 480 1127(a)m 4(v)k 6(ailable)k
-1388(and)s 1792(not)s 2158(hidden)s 2867(using)s gsave
-3439 1181 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(\211\211hidecwd)m 
-grestore
-4340(,)s 4447(to)s 4686(the)s 5034(service)s
-5766(program)s 6636(in)s 6879(the)s gsave
-7227 1181 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_CWD)m
-
-grestore
-8188(v)s 6(ariable.)k 480 887(This)m 946(grants)s 1570(no)s
-1852(special)s 2560(access)s 3210(to)s 3438(that)s 3846(directory)s
-4751(unless)s 5389(it)s 5571(is)s 5770(a)s 5925(subdirectory)s
-7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(1.0.1)m
-4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
-7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 19 19
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8832 13842(19)m 240 fnt82 480 13251(is)m 690(e)s 3(x)k 3(ecutable)k
-1762(\(searchable\))s 2977(b)s 4(ut)k 3339(not)s 3705(readable)s
-4570(by)s 4864(the)s 5212(service)s 5944(user)s 13(.)k
-0 12794(\213)m 480(Settings)s 1301(speci\207ed)s 2209(by)s 2503(the)s
-2851(caller)s 3440(using)s 4012(the)s gsave
-4360 12848 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(\211\211defvar)m
-gsave
-1295 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-2023(=)s gsave
-2167 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(value)m
-
-grestore
-
-grestore
-6432(option)s 7101(to)s 7340(the)s 7688(client)s 8278(are)s
-480 12554(a)m 4(v)k 6(ailable)k 1388(in)s 1631(the)s
-1979(con\207guration)s 3312(language)s 4232(as)s 4482(the)s 4830(corresponding)s
-gsave
-6252 12608 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(u\211)m gsave
-288 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(name)m 
-grestore
-
-grestore
-7018(parameters)s
-8116(and)s 8520(are)s 480 12314(passed)m 1176(to)s 1415(the)s
-1763(service)s 2495(program)s 3365(in)s 3608(en)s 9(vironment)k
-4868(v)s 6(ariables)k gsave
-5775 12368 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(USERV_U_)m gsave
-1152 0 translate
-1.4219 1.0000 scale
-240 fnt83
-0 -52(name)m 
-grestore
-
-grestore
-7082(.)s 0 11859(\213)m 480(If)s 710(the)s
-1058(calling)s 1761(user)s 2219(is)s 2429(root)s 2874(or)s
-3133(the)s 3481(same)s 4028(as)s 4278(the)s 4626(service)s
-5358(user)s 5816(then)s 6285(options)s 7041(may)s 7507(be)s
-7789(gi)s 6(v)k 3(en)k 8369(to)s 8608(the)s
-480 11619(client)m 1070(which)s 1712(bypass)s 2415(the)s 2763(usual)s
-3323(security)s 4133(features;)s 5000(in)s 5243(this)s 5639(case)s
-6106(other)s 6657(information)s 7842(may)s 8308(pass)s 480 11379(between)m
-1334(the)s 1682(caller)s 2271(and)s 2675(the)s 3023(service.)s
-0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
-3052(speci\207cation)s 8611(1.0.1)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 20 20
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(20)m gsave
-0 12727 translate
-240 fnt82 9066 687 0 687 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.2 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-340 fnt84 0 69(6.)m 412(A)s 8(pplications)k
-2309(and)s 2935(notes)s 3765(on)s 4204(use)s 
-grestore
-gsave
-0 11650 translate
-240 fnt82 9066 669 0 669 240 240 60 LoutGraphic
-gsave
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84
-0 66(6.1.)m 628(Examples)s 
-grestore
-240 fnt82 0 11188(The)m 428(companion)s
-1549(package,)s gsave
-2440 11242 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv\211utils)m 
-grestore
-3541(,)s 3648(contains)s
-4496(a)s 4662(selection)s 5568(of)s 5839(e)s 3(xample)k
-6702(services,)s 7578(some)s 8139(of)s 8410(which)s 0 10948(are)m
-347(useful)s 986(tools)s 1502(in)s 1745(their)s 2242(o)s 6(wn)k
-2706(right.)s 3261(See)s 3662(the)s gsave
-4010 11002 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(README)m
-
-grestore
-4670(in)s 4913(its)s 5189(top-le)s 6(v)k 3(el)k
-6084(directory)s 7000(for)s 7338(details.)s 9066 670 0 670 240 240 60 0 9924 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(6.2.)m
-628(Standard)s 1977(ser)s 3(vices)k 3110(and)s 3697(dir)s 5(ectory)k
-5025(management)s 
-grestore
-0 9462(In)m 250(later)s 726(v)s 3(ersions)k
-1565(of)s 1829(this)s 2219(speci\207cation)s 3477(standard)s 4339(service)s
-5064(names)s 5720(and)s 6117(interf)s 2(aces)k 7087(for)s
-7418(common)s 8306(services)s 0 9222(such)m 496(as)s 746(mail)s
-1225(deli)s 6(v)k 3(ery)k 2053(and)s 2457(WWW)s
-3193(CGI)s 3661(scripts)s 4335(may)s 4801(be)s 5083(speci\207ed.)s
-gsave
-0 8868 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-500 8814(-us)m 783(ing)s 1142(ap)s
-1361(pli)s 1607(ca)s 1819(tions)s 2334(and)s 2737(sys)s
-3034(tem)s 3451(ser)s 3729(vices)s 4270(which)s 4911(hide)s
-gsave
-5379 8868 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-5938(be)s 6160(hind)s 6643(wrap)s
-7114(per)s 7478(scripts)s 8151(may)s 8616(need)s 0 8574(to)m
-225(store)s 731(in)s 914(for)s 1192(ma)s 1484(tion)s
-1899(in)s 2128(the)s 2462(user')s 13(s)k 3056(\207lespace)s
-3934(to)s 4159(pre)s 4460(serv)s 3(e)k 5003(the)s
-5337(cor)s 5642(rect)s 6045(place)s 6545(ment)s 7069(of)s
-7326(the)s 7660(se)s 7855(cu)s 8076(ri)s 8215(ty)s
-8441(perim)s 8998(-)s 0 8334(iters.)m 514(Such)s 1050(ap)s
-1269(pli)s 1515(ca)s 1727(tions)s 2243(should)s 2940(usu)s
-3268(al)s 3435(ly)s 3675(do)s 3968(so)s 4234(in)s
-4477(a)s 4643(di)s 4823(rec)s 5107(to)s 5286(ry)s
-5539(\(cre)s 5905(at)s 6077(ed)s 6361(by)s 6655(them\))s
-gsave
-7261 8388 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(~/.userv/)m gsave
-1296 0 translate
-1.4219 1.0000 scale
-240 fnt83 0 -52(service)m 
-grestore
-
-grestore
-8823(,)s
-0 8094(where)m 240 fnt83 640 8096(ser)m 937(vice)s 240 fnt82
-1374 8094(is)m 1584(the)s 1932(ser)s 2210(vice)s 2664(name)s
-3238(or)s 3497(ap)s 3716(pli)s 3962(ca)s 4174(tion)s
-4603(in)s 4846(ques)s 5276(tion.)s 0 7686(If)m 230(desired,)s
-1027(a)s 1193(dot-directory)s 2494(inside)s gsave
-3121 7740 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(~/.userv)m
-
-grestore
-3982(may)s 4448(be)s 4730(used)s 5227(to)s 5466(a)s 4(v)k 4(oid)k
-6048(the)s 6396(user)s 6854(becoming)s 7851(confused)s 8773(by)s
-0 7446(\207nding)m 724(parts)s 1231(of)s 1493(a)s 1651(semi-pri)s 6(vile)k 3(ged)k
-3190(application')s 13(s)k 4454(internal)s 5230(state)s 5714(in)s
-5949(their)s 6437(\207lespace,)s 7372(and/or)s 8034(discourage)s 0 7206(them)m
-538(from)s 1062(\207ddling)s 1860(with)s 2342(and)s 2746(thus)s
-3196(corrupting)s 4245(it.)s 0 6798(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
-gsave
-960 6852 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-1520(applications)s 2726(should)s 3423(of)s
-3694(course)s 4374(not)s 4740(rely)s 5165(for)s 5503(their)s
-6000(global)s 6653(inte)s 3(grity)k 7513(and)s 7917(security)s
-8727(on)s 0 6558(the)m 348(inte)s 3(grity)k 1208(of)s
-1479(the)s 1827(data)s 2285(on)s 2582(the)s 2930(user')s 13(s)k
-3538(side)s 3979(of)s 4250(the)s 4598(security)s 5408(boundary)s 15(.)k
-9066 670 0 670 240 240 60 0 5534 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(6.3.)m 628(Reducing)s 1997(the)s 2497(number)s
-3655(of)s 4018(absolutely)s 5474(pri)s 3(vileged)k 6908(subsystems)s
-
-grestore
-0 5072(Currently)m 970(most)s 1495(Unix)s 2029(systems)s 2837(ha)s 4(v)k 3(e)k
-3338(man)s 3(y)k 3921(components)s 5129(which)s 5771(need)s
-6281(to)s 6520(run)s 6896(as)s 7146(root,)s 7638(e)s 6(v)k 3(en)k
-8138(though)s 0 4832(most)m 525(of)s 796(their)s 1293(acti)s 6(vity)k
-2057(does)s 2547(not)s 2913(strictly)s 3629(require)s 4361(it.)s
-4597(This)s 5073(gi)s 6(v)k 3(es)k 5620(rise)s
-6020(to)s 6259(a)s 6425(lar)s 4(ge)k 6954(and)s
-7358(comple)s 3(x)k 8234(body)s 8768(of)s 0 4592(code)m
-508(which)s 1150(must)s 1675(be)s 1957(trusted)s 2665(with)s
-3147(the)s 3495(security)s 4305(of)s 4576(the)s 4924(system.)s
-0 4184(If)m 230(the)s 3(y)k 693(were)s 1213(to)s
-1452(use)s gsave
-1827 4238 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-2327(,)s 2434(man)s 3(y)k
-3017(of)s 3288(these)s 3835(sub)s 4161(sys)s 4458(tems)s
-4960(w)s 2(ould)k 5615(no)s 5908(longer)s 6579(need)s
-7089(an)s 3(y)k 7486(un)s 7723(usu)s 8051(al)s
-8278(pri)s 6(v)k 8652(-)s 0 3944(i)m 60(le)s 3(ge.)k
-gsave
-0 3590 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cron)m 
-grestore
-455 3536(and)m gsave
-853 3590 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(at)m
-
-grestore
-1053(,)s gsave
-1154 3590 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lpr)m 
-grestore
-1509(and)s 1907(the)s
-2249(system')s 13(s)k 3117(mail)s 3591(transfer)s 4373(agent)s
-4945(\()s gsave
-5018 3590 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sendmail)m 
-grestore
-5819(,)s gsave
-5921 3590 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(smail)m 
-grestore
-6421(,)s gsave
-6522 3590 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(exim)m 
-grestore
-6976(or)s
-7229(the)s 7572(lik)s 2(e\))k 8050(all)s 8337(f)s 2(all)k
-8701(into)s 0 3296(this)m 396(cate)s 3(gory)k 15(,)k
-1308(though)s gsave
-2031 3350 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-2531(-based)s 3213(v)s 3(ersions)k
-4058(of)s 4329(these)s 4876(programs)s 5830(are)s 6177(not)s
-6543(currently)s 7459(a)s 4(v)k 6(ailable.)k 9066 670 0 670 240 240 60 0 2272 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84
-0 66(6.4.)m 628(Do)s 1092(not)s 1615(gi)s 3(v)k 3(e)k
-2234(away)s 3019(excessi)s 3(v)k 3(e)k 4312(pri)s 3(vilege)k
-5571(to)s gsave
-5910 139 translate
-0.6953 1.0000 scale
-320 fnt31 0 -70(userv)m 
-grestore
-6577(-using)s 7484(facilities)s
-
-grestore
-0 1810(There)m 613(is)s 823(a)s 989(danger)s 1700(that)s
-2118(people)s 2812(reimplementing)s 4378(the)s 4726(f)s 2(acilities)k
-5595(I)s 5730(mention)s 6571(abo)s 3(v)k 3(e)k
-7193(using)s gsave
-7765 1864 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-8325(will)s 0 1570(discard)m
-731(much)s 1303(of)s 1557(the)s 1888(security)s 2680(bene\207t)s
-3374(by)s 3651(using)s 4206(a)s 4355(nai)s 6(v)k 3(e)k
-4902(implementation)s 6442(technique.)s 7459(This)s 7918(will)s 8326(become)s
-0 1330(clearer)m 708(with)s 1190(an)s 1473(e)s 3(xample:)k
-0 922(Consider)m 924(the)s gsave
-1272 976 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lpr)m 
-grestore
-1632(program.)s
-2546(In)s 2802(current)s 3538(systems)s 4346(this)s 4742(needs)s
-5338(to)s 5577(ha)s 4(v)k 3(e)k 6078(an)s
-6361(absolutely)s 7398(pri)s 6(vile)k 3(ged)k 0 52(1.0.1)m
-4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
-7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 21 21
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-%%+ font Times-Italic
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-1 LoutMargSet
-grestore
-240 fnt84 8839 13842(21)m 240 fnt82 0 13254(component)m 1124(in)s
-1367(order)s 1931(to)s 2170(support)s 2948(delayed)s 3750(printing)s
-4560(without)s 5351(cop)s 2(ying:)k 6227(when)s 6803(the)s
-7151(user)s 7609(queues)s 8325(a)s 8491(\207le)s 0 13014(to)m
-239(be)s 521(printed)s 1256(the)s 1604(\207lename)s 2483(is)s
-2693(stored)s 3335(in)s 3578(the)s 3926(print)s 4437(queue,)s
-5116(rather)s 5732(than)s 6201(a)s 6367(cop)s 2(y)k
-6885(of)s 7156(it,)s 7395(and)s 7799(the)s 8147(printer)s
-0 12774(daemon)m 813(accesses)s 1671(the)s 2016(\207le)s 2375(directly)s
-3155(when)s 3729(it)s 3918(is)s 4126(ready)s 4708(to)s
-4945(print)s 5453(the)s 5799(job)s 9(.)k 6197(In)s
-6451(order)s 7012(that)s 7428(the)s 7773(user)s 8229(can)s
-8615(print)s 0 12534(\207les)m 449(which)s 1091(are)s 1438(not)s
-1804(w)s 2(orld-readable)k 3304(the)s 3652(daemon)s 4467(is)s
-4677(gi)s 6(v)k 3(en)k 5257(root)s 5702(pri)s 6(vile)k 3(ge)k
-6598(so)s 6864(that)s 7282(it)s 7474(can)s 7863(open)s
-8386(the)s 8734(\207le)s 0 12294(in)m 243(the)s 591(conte)s 3(xt)k
-1352(of)s 1623(the)s 1971(user)s 9(,)k 2467(rather)s
-3083(than)s 3552(its)s 3828(o)s 6(wn.)k 0 11886(A)m
-212(simple-minded)s 1686(approach)s 2602(to)s 2823(con)s 9(v)k 3(erting)k
-3868(this)s 4246(scheme)s 5001(to)s 5222(use)s gsave
-5579 11940 translate
-0.6953 1.0000 scale
-240 fnt31
-0 -52(userv)m 
-grestore
-6120(might)s 6720(in)s 9(v)k 4(olv)k 3(e)k
-7460(gi)s 6(ving)k 8101(the)s 8430(printer)s 0 11646(daemon)m
-811(\(the)s gsave
-1233 11700 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lp)m 
-grestore
-1489(user\))s 2010(the)s
-2354(ability)s 3013(to)s 3248(read)s 3712(the)s 4055(\207le)s
-4412(by)s 4701(allo)s 6(wing)k 5581(them)s 6114(to)s
-6349(run)s gsave
-6720 11700 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m 
-grestore
-7076(\(or)s 7409(a)s
-7570(special-purpose)s 0 11406(\207le-reading)m 1140(program\))s 2063(as)s 2299(an)s 3(y)k
-2681(user)s 13(.)k 3155(The)s gsave
-3569 11460 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lpr)m
-
-grestore
-3914(program)s 4769(w)s 2(ould)k 5410(use)s 5770(a)s
-gsave
-5922 11460 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-6467(service)s 7184(to)s 7409(store)s
-7914(the)s 8247(\207lename)s 0 11166(in)m 243(the)s 591(printer)s
-1287(daemon')s 13(s)k 2255(queues,)s 3027(and)s 3431(the)s
-3779(daemon)s 4594(w)s 2(ould)k 5249(read)s 5718(the)s
-6066(\207le)s 6427(later)s 6910(when)s 7486(it)s 7678(felt)s
-8055(lik)s 2(e)k 8467(it.)s 0 10758(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
-960(this)s 1356(w)s 2(ould)k 2011(allo)s 6(w)k
-2590(the)s 2938(printer)s 3634(daemon)s 4449(to)s 4688(read)s
-5157(an)s 3(y)k 5554(\207le)s 5915(on)s 6212(the)s
-6560(system,)s 7331(whether)s 8161(or)s 8420(not)s 0 10518(someone)m
-907(had)s 1311(ask)s 2(ed)k 1912(for)s 2250(it)s
-2442(to)s 2681(be)s 2963(printed.)s 3744(Since)s 4331(man)s 3(y)k
-4914(\207les)s 5363(will)s 5789(contain)s 6550(passw)s 2(ords)k
-7596(and)s 8000(other)s 0 10278(security-critical)m 1551(information)s 2736(this)s
-3132(is)s 3342(nearly)s 3993(as)s 4243(bad)s 4647(as)s
-4897(gi)s 6(ving)k 5556(the)s 5904(daemon)s 6719(root)s
-7164(access)s 7825(in)s 8068(the)s 8416(\207rst)s 0 10038(place.)m
-608(An)s 3(y)k 1072(security)s 1882(holes)s 2438(in)s
-2681(the)s 3029(print)s 3540(serv)s 3(er)k 4180(which)s
-4822(allo)s 6(w)k 5401(a)s 5567(user)s 6025(to)s
-6264(e)s 3(x)k 3(ecute)k 7044(commands)s 8132(as)s
-8382(the)s gsave
-8730 10092 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lp)m 
-grestore
-0 9798(user)m 458(will)s
-884(gi)s 6(v)k 3(e)k 1343(the)s 1691(user)s
-2149(the)s 2497(ability)s 3161(to)s 3400(read)s 3869(an)s 3(y)k
-4266(\207le)s 4627(on)s 4924(the)s 5272(system.)s 0 9390(Instead,)m
-790(it)s 975(is)s 1178(necessary)s 2153(to)s 2385(k)s 2(eep)k
-2881(a)s 3040(record)s 3700(of)s 3964(which)s 4599(\207les)s
-5040(the)s 5381(daemon)s 6189(has)s 6552(been)s 7053(ask)s 2(ed)k
-7647(to)s 7879(print)s 240 fnt83 8382 9392(outside)m 240 fnt82
-0 9150(the)m 348(control)s 1080(of)s 1351(the)s 1699(print)s
-2210(daemon.)s 3072(This)s 3548(record)s 4216(could)s 4806(be)s
-5088(k)s 2(ept)k 5558(by)s 5852(a)s 6018(ne)s 6(w)k
-6465(root-pri)s 6(vile)k 3(ged)k 7947(component,)s 0 8910(b)m 4(ut)k
-352(this)s 737(is)s 936(not)s 1291(necessary:)s 2315(the)s
-2652(record)s 3309(of)s 3569(which)s 4200(\207les)s 4638(a)s
-4794(user)s 5241(has)s 5600(ask)s 2(ed)k 6190(to)s
-6418(be)s 6689(printed)s 7413(can)s 7791(be)s 8062(k)s 2(ept)k
-8521(under)s 0 8670(the)m 348(control)s 1080(of)s 1351(the)s
-1699(user)s 2157(in)s 2400(question.)s 3315(The)s 3743(submission)s
-4877(program)s gsave
-5747 8724 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(lpr)m 
-grestore
-6107(will)s 6533(mak)s 2(e)k
-7105(a)s 7271(record)s 7939(in)s 8182(an)s 8465(area)s
-0 8430(under)m 605(the)s 953(user')s 13(s)k 1561(control)s
-2293(before)s 2959(communicating)s 4500(with)s 4982(the)s 5330(print)s
-5841(serv)s 3(er)k 9(,)k 6519(and)s 6923(the)s
-7271(print)s 7782(serv)s 3(er)k 8422(w)s 2(ould)k
-0 8190(be)m 279(gi)s 6(v)k 3(en)k 855(the)s
-1199(ability)s 1859(to)s 2094(run)s 2466(a)s 2628(special)s
-3342(\207le-reading)s 4493(program)s 5359(which)s 5997(w)s 2(ould)k
-6648(only)s 7124(allo)s 6(w)k 7699(\207les)s 8144(to)s
-8379(be)s 8657(read)s 0 7950(which)m 642(were)s 1162(listed)s
-1737(in)s 1980(the)s 2328(user')s 13(s)k 2936(\207le)s
-3297(of)s 3568(things)s 4204(the)s 3(y')k 12(d)k
-4858(ask)s 2(ed)k 5459(to)s 5698(print.)s 0 7542(No)m 6(w)k
-502(security)s 1300(holes)s 1844(in)s 2075(most)s 2588(of)s
-2846(the)s 3182(printing)s 3980(system)s 4692(do)s 4973(not)s
-5327(critically)s 6215(af)s 6(fect)k 6799(the)s 7135(security)s
-7933(of)s 8192(the)s 8527(entire)s 0 7302(system:)m 770(the)s 3(y)k
-1233(only)s 1713(allo)s 6(w)k 2292(the)s 2640(attack)s 2(er)k
-3453(to)s 3692(read)s 4161(and)s 4565(interfere)s 5428(with)s
-5910(print)s 6421(jobs.)s 6924(Bugs)s 7468(in)s 7711(the)s
-8059(programs)s 0 7062(run)m 373(by)s 664(the)s 1009(print)s
-1517(serv)s 3(er)k 2154(to)s 2390(read)s 2856(users')s
-3456(\207les)s 3902(\(and)s 4382(to)s 4618(remo)s 3(v)k 3(e)k
-5382(entries)s 6066(from)s 6587(the)s 6932(list)s 7280(of)s
-7548(\207les)s 7994(when)s 8567(it)s 8756(has)s 0 6822(done)m
-522(with)s 1004(them\))s 1610(will)s 2036(still)s 2448(be)s
-2730(serious,)s 3514(b)s 4(ut)k 3876(this)s 4272(program)s
-5142(can)s 5531(be)s 5813(quite)s 6347(simple.)s 0 6414(Similar)m
-762(considerations)s 2194(apply)s 2780(to)s 3019(man)s 3(y)k
-gsave
-3602 6468 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-4102(-based)s 4784(v)s 3(ersions)k
-5629(of)s 5900(f)s 2(acilities)k 6769(which)s 7411(currently)s
-8327(run)s 0 6174(as)m 250(root.)s 0 5766(It)m 198(is)s
-401(debatable)s 1366(whether)s 2189(the)s 2530(user)s 4(-controlled)k
-4023(state)s 4509(should)s 5199(be)s 5474(k)s 2(ept)k
-5937(in)s 6173(the)s 6514(user')s 13(s)k 7115(\207lespace)s
-8000(\(in)s 8315(dot\207les,)s 0 5526(say\))m 440(or)s 692(k)s 2(ept)k
-1155(in)s 1391(a)s 1550(separate)s 2381(area)s 2831(set)s
-3149(aside)s 3688(for)s 4019(the)s 4360(purpose;)s 5223(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-6123(using)s 6688(the)s 7029(user')s 13(s)k 7630(home)s
-8210(directory)s 0 5286(\(and)m 483(possibly)s 1335(creating)s 2157(a)s
-2323(separate)s 3161(subdirectory)s 4410(of)s 4681(it)s 4873(as)s
-5123(a)s 5289(dot\207le)s 5956(to)s 6195(contain)s 6956(subsystem)s
-8013(state\))s 0 5046(has)m 370(fe)s 6(wer)k 967(implications)s
-2199(for)s 2537(the)s 2885(rest)s 3289(of)s 3560(the)s
-3908(system)s 4632(and)s 5036(mak)s 2(es)k 5696(it)s
-5888(entirely)s 6671(clear)s 7194(where)s 7834(the)s 8182(security)s
-0 4806(boundaries)m 1101(lie.)s 9066 670 0 670 240 240 60 0 3782 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(6.5.)m gsave
-628 139 translate
-0.6953 1.0000 scale
-320 fnt31
-0 -70(userv)m 
-grestore
-1375(can)s 1929(often)s 2695(r)s 5(eplace)k
-gsave
-3758 139 translate
-0.6953 1.0000 scale
-320 fnt31 0 -70(sudo)m 
-grestore
-4292(,)s 4444(b)s 6(ut)k
-4978(not)s gsave
-5501 139 translate
-0.6953 1.0000 scale
-320 fnt31 0 -70(really)m 
-grestore
-
-grestore
-gsave
-0 3374 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-
-grestore
-559 3320(is)m 768(not)s 1133(in)s 1316(tend)s 1726(ed)s
-2009(as)s 2258(a)s 2423(general-)s 3194(purpose)s 4007(sys)s
-4304(tem)s 4721(ad)s 4945(min)s 5314(is)s 5464(tra)s
-5715(tion)s 6143(tool)s 6569(with)s 7050(which)s 7691(sys)s
-7988(tem)s 8405(ad)s 8629(min)s 8998(-)s 0 3080(is)m
-150(tra)s 401(tors)s 801(can)s 1181(e)s 3(x)k
-1399(e)s 1501(cute)s 1946(ar)s 2131(bi)s 2311(trary)s
-2806(pro)s 3118(grams)s 3744(lik)s 2(e)k 4147(te)s 3(xt)k
-4553(ed)s 4777(i)s 4837(tors)s 5236(as)s 5477(root)s
-5913(\(or)s 6242(oth)s 6545(er)s 6781(sys)s 7078(tem)s
-7487(users\))s 8097(when)s 8663(the)s 3(y)k 0 2840(need)m
-501(to.)s 782(It)s 978(is)s 1179(un)s 1416(suit)s
-1761(able)s 2205(for)s 2534(this)s 2921(pur)s 3240(pose)s
-3726(pre)s 4027(cise)s 4394(ly)s 4625(be)s 4847(cause)s
-5424(it)s 5607(en)s 5830(forces)s 6455(a)s 6612(strong)s
-7254(sep)s 7566(a)s 7672(ra)s 7857(tion)s 8276(be)s
-8498(tween)s 0 2600(the)m 348(call)s 687(ing)s 1046(and)s
-1450(the)s 1798(called)s 2426(pro)s 2738(gram,)s 3336(which)s
-3978(is)s 4188(un)s 4425(de)s 4647(sir)s 4885(able)s
-5339(in)s 5582(this)s 5978(con)s 6321(te)s 3(xt.)k
-0 2192(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
-951(its)s 1217(use)s 1582(when)s 2148(restricted)s 3084(to)s
-3313(running)s 4101(particular)s 5065(programs)s 6009(in)s 6243(particular)s
-7207(w)s 2(ays)k 7738(is)s 7938(v)s 3(ery)k
-8404(similar)s 0 1924(to)m 239(man)s 3(y)k 822(common)s
-1717(uses)s 2180(of)s gsave
-2451 1978 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sudo)m 
-grestore
-153 fnt82
-2851 2013(1)m 240 fnt82 2911 1924(.)m gsave
-3015 1978 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-
-grestore
-3575(is)s 3785(generally)s 4728(much)s 5317(better)s 5920(than)s
-6389(restricted)s gsave
-7334 1978 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sudo)m 
-grestore
-7734(,)s 7841(because)s
-8654(it)s 0 1684(protects)m 796(the)s 1132(called)s 1748(program)s
-2607(much)s 3184(more)s 3719(strongly)s 4545(from)s 5058(bad)s
-5450(en)s 9(vironmental)k 6865(conditions)s 7902(set)s 8215(up)s
-8496(by)s 8778(the)s 1134 0 0 0 240 240 60 0 1177 LoutGr2
-0 0 moveto xsize 0 lineto stroke
-grestore
-
-grestore
-122 fnt82 0 982(1)m gsave
-58 955 translate
-0.6953 1.0000 scale
-192 fnt31
-0 -42(sudo)m 
-grestore
-192 fnt82 425 912(is)m 593(a)s 726(program)s
-1422(which)s 1936(allo)s 4(ws)k 2472(users)s 2905(to)s
-3097(e)s 2(x)k 2(ecute)k 3723(certain)s 4289(programs)s
-5052(as)s 5252(root,)s 5646(according)s 6444(to)s 6636(con\207guration)s
-7703(\207les)s 8062(speci\207ed)s 8789(by)s 0 682(the)m 279(system)s
-858(administrator)s 10(.)k 240 fnt82 0 52(User)m 511(service)s
-1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8611(1.0.1)s
-
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
-%%Page: 22 22
-%%BeginPageSetup
-%%PageResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Courier-Bold
-/pgsave save def
-0.0500 dup scale 10 setlinewidth
-%%EndPageSetup
-gsave
-0 0 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic
-gsave
-LoutPageSet
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-
-grestore
-
-grestore
-gsave
-0 16840 translate
-0.0000 rotate
-gsave
-1417 -15423 translate
-240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic
-gsave
-0 LoutMargSet
-grestore
-240 fnt84 0 13842(22)m 240 fnt82 0 13254(caller)m 13(.)k
-604(Most)s 1140(programs)s 2077(that)s 2479(one)s 2864(might)s
-3466(w)s 2(ant)k 3972(to)s 4195(run)s 4554(via)s
-4890(restricted)s gsave
-5818 13308 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sudo)m 
-grestore
-6218(,)s 6309(ha)s 4(v)k 3(e)k
-6793(not)s 7143(been)s 7635(designed)s 8528(to)s 8750(run)s
-0 13014(in)m 243(a)s 409(partially)s 1258(hostile)s 1951(en)s 9(vironment.)k
-gsave
-3255 13068 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-3815(allo)s 6(ws)k 4484(these)s
-5031(programs)s 5985(to)s 6224(be)s 6506(run)s 6882(in)s
-7125(a)s 7291(safer)s 7814(en)s 9(vironment)k 0 12774(and)m
-404(should)s 1101(be)s 1383(used)s 1880(instead.)s 9066 671 0 671 240 240 60 0 11749 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84
-0 66(6.6.)m 628(Err)s 5(or)k 1499(handling)s 2778(and)s
-3365(input)s 4170(str)s 5(eams)k 5301(\(eg)s 5784(stdin\))s
-
-grestore
-0 11287(When)m 610(the)s 938(service)s 1651(program)s 2501(is)s
-2692(reading)s 3442(from)s 3947(a)s 4093(\207le)s 4435(descriptor)s
-5430(connected)s 6439(to)s 6658(the)s 6987(calling)s 7670(side,)s
-8143(the)s 8471(fd)s 8708(that)s 0 11047(the)m 348(service)s
-1080(program)s 1950(refers)s 2543(to)s 2782(a)s 2948(pipe)s
-3416(set)s 3741(up)s 4034(by)s gsave
-4328 11101 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m
-
-grestore
-4888(and)s 5292(not)s 5658(to)s 5897(the)s 6245(same)s
-6792(object)s 7436(as)s 7686(w)s 2(as)k 8107(presented)s
-0 10807(by)m 294(the)s 642(caller)s 13(.)k 0 10399(Therefore)m
-988(if)s 1195(there)s 1718(is)s 1918(some)s 2469(kind)s
-2943(of)s 3205(error)s 3718(it)s 3900(is)s 4100(possible)s
-4930(for)s 5258(the)s 5597(service-side)s 6783(fd)s 7030(to)s
-7259(gi)s 6(v)k 3(e)k 7708(premature)s 8722(end)s
-0 10159(of)m 271(\207le.)s 680(If)s 910(it)s 1102(is)s
-1312(important)s 2301(to)s 2540(tell)s 2899(whether)s 3729(all)s
-4022(of)s 4293(the)s 4641(intended)s 5523(data)s 5981(has)s
-6351(been)s 6860(recei)s 6(v)k 3(ed)k 7718(by)s
-8012(the)s 8360(service)s 0 9919(program,)m 917(the)s 1265(datastream)s
-2359(must)s 2884(contain)s 3645(an)s 3928(e)s 3(xplicit)k
-4701(end-of-\207le)s 5765(indication)s 6778(of)s 7049(some)s 7610(kind.)s
-0 9511(F)m 3(or)k 385(e)s 3(xample,)k 1294(consider)s
-2159(a)s gsave
-2321 9565 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(userv)m 
-grestore
-2876(service)s 3603(for)s
-3936(submitting)s 5008(a)s 5169(mail)s 5643(message,)s 6556(where)s
-7191(message)s 8052(is)s 8257(supplied)s 0 9271(on)m 297(the)s
-645(service')s 13(s)k 1531(stdin.)s 2100(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
-3060(if)s 3277(the)s 3625(calling)s 4328(process)s 5096(is)s
-5306(interrupted)s 6412(before)s 7078(it)s 7270(has)s 7640(written)s
-8373(all)s 8666(of)s 0 9031(the)m 347(message,)s 1262(the)s
-1608(service)s 2339(program)s 3207(will)s 3631(get)s 3982(EOF)s
-4490(on)s 4785(the)s 5132(message)s 5996(data.)s 6496(In)s
-6751(a)s 6915(nai)s 6(v)k 3(e)k 7478(arrangement)s
-8730(this)s 0 8791(w)m 2(ould)k 655(cause)s 1242(a)s
-1408(half-complete)s 2790(message)s 3656(to)s 3895(be)s 4177(sent.)s
-4666(T)s 19(o)k 4966(pre)s 6(v)k 3(ent)k
-5734(this,)s 6186(it)s 6378(is)s 6588(necessary)s 7571(to)s
-7810(adopt)s 8402(some)s 0 8551(kind)m 484(of)s 755(e)s 3(xplicit)k
-1528(end)s 1932(indication;)s 3000(for)s 3338(e)s 3(xample,)k
-4252(the)s 4600(end)s 5004(of)s 5275(the)s 5623(message)s
-6489(could)s 7079(be)s 7361(signalled)s 8282(by)s 8576(a)s
-8742(dot)s 0 8311(on)m 297(a)s 463(line)s 877(by)s
-1171(itself,)s 1754(and)s 2158(dots)s 2608(doubled,)s 3487(as)s
-3737(in)s 3980(SMTP)s 26(.)k 4683(Then)s 5232(the)s
-5580(service)s 6312(program)s 7182(w)s 2(ould)k 7837(kno)s 6(w)k
-8418(when)s 0 8071(the)m 348(entire)s 947(message)s 1813(had)s
-2217(been)s 2726(recei)s 6(v)k 3(ed,)k 3633(and)s
-4037(could)s 4627(a)s 4(v)k 4(oid)k 5209(queueing)s
-6140(incomplete)s 7258(messages.)s 9066 670 0 670 240 240 60 0 7047 LoutGr2
-newpath 0 ysize 0.3 ft sub moveto
-xsize 0 rlineto
-0 0.1 ft rlineto
-xsize neg 0 rlineto
-closepath fill
-grestore
-320 fnt84 0 66(6.7.)m 628(Don't)s
-1488(gi)s 3(v)k 3(e)k 2107(access)s 3013(to)s
-3352(general-pur)s 3(pose)k 5640(utilities)s 
-grestore
-0 6585(Do)m 346(not)s
-712(specify)s 1456(general)s 2214(purpose)s 3028(programs)s 3982(lik)s 2(e)k
-gsave
-4394 6639 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(mv)m 
-grestore
-4654(or)s gsave
-4913 6639 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(cat)m
-
-grestore
-5273(in)s gsave
-5516 6639 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(execute\211)m 
-grestore
-6377(directi)s 6(v)k 3(es)k
-7347(without)s 8138(careful)s 0 6345(thought)m 792(about)s 1384(their)s
-1881(ar)s 4(guments,)k 2980(and)s 3384(certainly)s 4273(not)s
-4639(if)s gsave
-4856 6399 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(no\211suppress\211args)m 
-grestore
-6518(is)s 6728(speci\207ed.)s
-7682(If)s 7912(you)s 8327(do)s 8620(so)s 8886(it)s
-0 6105(will)m 426(gi)s 6(v)k 3(e)k 885(the)s
-1233(caller)s 1822(much)s 2411(more)s 2958(pri)s 6(vilige)k
-3817(than)s 4286(you)s 4701(probably)s 5606(intend.)s 0 5697(It)m
-205(is)s 415(a)s 581(shame)s 1248(that)s 1666(I)s
-1801(ha)s 4(v)k 3(e)k 2302(to)s 2541(say)s
-2914(this)s 3310(here,)s 3828(b)s 4(ut)k 4190(ine)s 3(xperienced)k
-5586(administrators)s 7003(ha)s 4(v)k 3(e)k 7504(made)s
-8078(similar)s 0 5457(mistak)m 2(es)k 885(with)s 1367(programs)s
-2321(lik)s 2(e)k gsave
-2733 5511 translate
-0.6953 1.0000 scale
-240 fnt31 0 -52(sudo)m 
-grestore
-3133(.)s
-0 52(1.0.1)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
-7271(client)s 7861(speci\207cation)s 
-grestore
-
-grestore
-
-pgsave restore
-showpage
-
+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-2000)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
+%%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
+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(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 129 w(3)p Black 1 0 0 TeXcolorrgb 136 2372 a(2.2)96
+b(Security-overriding)22 b(options)p Black 64 w(.)45
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 129 w(6)p Black 1 0 0 TeXcolorrgb 0 2630 a Fl(3)91
+b(Execution)23 b(environment)f(of)h(the)g(service)h(program)p
+Black 1667 w(9)p 1 0 0 TeXcolorrgb 136 2796 a Fq(3.1)96
+b(File)23 b(descriptors)p Black 79 w(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black
+129 w(9)p Black 1 0 0 TeXcolorrgb 136 2962 a(3.2)96 b(Envir)n(onment)p
+Black 34 w(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black 84 w(10)p Black
+1 0 0 TeXcolorrgb 0 3219 a Fl(4)91 b(Service-side)25
+b(con\002guration)p Black 2454 w(11)p 1 0 0 TeXcolorrgb
+136 3386 a Fq(4.1)96 b(Con\002guration)23 b(\002le)f(syntax)p
+Black 38 w(.)46 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)p Black 84 w(11)p Black 1 0 0 TeXcolorrgb 136 3552
+a(4.2)96 b(Con\002guration)23 b(\002le)f(dir)n(ectives)p
+Black 50 w(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(12)p Black 1 0 0 TeXcolorrgb 345 3718 a(4.2.1)110
+b(Immediate)22 b(dir)n(ectives)p Black 39 w(.)45 b(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black 84 w(12)p Black 1 0 0
+TeXcolorrgb 345 3885 a(4.2.2)110 b(Dir)n(ectives)24 b(with)e(delayed)g
+(ef)n(fect)p Black 33 w(.)45 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(13)p Black 1 0 0 TeXcolorrgb 345 4051 a(4.2.3)110
+b(Contr)n(ol)23 b(str)o(uctur)n(e)f(dir)n(ectives)p Black
+55 w(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p Black 84
+w(13)p Black 1 0 0 TeXcolorrgb 345 4217 a(4.2.4)110 b(Dir)n(ectives)24
+b(for)e(changing)h(execution)f(settings)p Black 21 w(.)45
+b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)p Black 84 w(15)p Black 1 0 0 TeXcolorrgb 136 4383
+a(4.3)96 b(Err)n(ors)22 b(in)h(the)f(con\002guration)g(\002le)p
+Black 31 w(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(18)p Black 1 0 0 TeXcolorrgb 136 4550 a(4.4)96
+b(Defaults)p Black 89 w(.)45 b(.)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(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(18)p Black 1 0 0 TeXcolorrgb 0 4807 a Fl(5)91
+b(Information)23 b(passed)h(through)d(the)i(client/daemon)g
+(combination)p Black 1054 w(21)p 1 0 0 TeXcolorrgb 0
+5064 a(6)91 b(Applications)23 b(and)g(notes)f(on)g(use)p
+Black 2287 w(23)p 1 0 0 TeXcolorrgb 136 5230 a Fq(6.1)96
+b(Examples)p Black 36 w(.)45 b(.)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(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)p
+Black 84 w(23)p Black 1 0 0 TeXcolorrgb 136 5397 a(6.2)96
+b(Standar)n(d)23 b(services)f(and)g(dir)n(ectory)g(management)p
+Black 39 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(23)p Black 1 0 0
+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
+%%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
+%%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
+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
+(to)f(be)g(performed)f(and)i(calls)h(the)e(client)h(is)f(called)i(the)e
+(`calling)i(user)7 b(';)28 b(the)d(pr)n(ocess)0 2805
+y(which)e(calls)h(the)e(client)h(is)g(called)g(the)f(`calling)j(pr)n
+(ocess'.)0 2975 y(The)18 b(daemon)h(and)g(the)f(client)h(ar)n(e)g(r)n
+(esponsible)f(for)h(ensuring)f(that)g(information)i(is)f(safely)g
+(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
+%%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
+%%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
+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
+(service)h(user)e(is)i(to)f(be)g(the)g(same)h(as)f(the)g(calling)j
+(user)-7 b(.)0 2817 y(The)18 b(service)h(name)h(is)f(interpr)n(eted)e
+(by)i(the)f(userv)p 1 0 0 TeXcolorrgb -33 x Fi(1)p Black
+1811 2817 a Fq(daemon)g(on)h(behalf)h(of)f(the)f(service)h(user)-7
+b(.)26 b(It)19 b(will)h(often)0 2930 y(be)j(the)e(name)i(of)g(a)g(pr)n
+(ogram.)0 3301 y Fp(2.1)119 b(Options)0 3574 y Fq(Single-letter)21
+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
+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
+22 w(6)p Black 23 w(for)h(details)f(of)h(the)e Fo(-override)e
+Fq(options.)227 5040 y(The)33 b(actual)h(service)f(name)g(passed)f
+(will)i(be)f(the)f Fn(builtin-service)p Fq(;)41 b(note)32
+b(that)h(this)g(actual)h(service)227 5153 y(name)27 b(\(as)f(opposed)d
+(to)i(the)h(override)e(data\))j(and)f(the)f Fn(info-ar)n(gument)p
+Fq(s)i(supplied)e(will)i(be)f(ignor)n(ed)227 5266 y(by)g(most)g
+(builtin)h(services;)g(the)e(override)g(mechanism)i(and)f
+Fo(execute-builti)o(n)20 b Fq(will)28 b(be)d(used)227
+5379 y(to)d(ensur)n(e)g(that)g(the)g(right)g(builtin)i(service)e(is)h
+(called)g(with)g(the)f(right)g Fn(service-ar)n(gument)p
+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
+%%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
+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
+(which)h(is)f(passed)e(to)i(a)h(copy)e(of)227 814 y Fo(cat)27
+b Fq(invoked)g(by)h(the)f(client;)j(the)d(other)g(\002le)h(descriptor)e
+(passed)g(to)h Fo(cat)g Fq(will)i(be)f(one)f(inherited)227
+927 y(by)h(the)f(client)h(pr)n(ogram)f(fr)n(om)h(the)f(caller)i(or)e
+(one)g(opened)e(by)j(the)f(client)h(pr)n(ogram)f(on)g(behalf)i(of)227
+1040 y(the)22 b(caller)-7 b(.)227 1203 y(The)26 b(descriptor)f(in)h
+(the)g(service)g(pr)n(ogram)g(that)g(should)g(be)g(connected)f(must)h
+(be)g(speci\002ed)f(as)h Fn(fd)p Fq(,)227 1316 y(either)33
+b(as)h(a)g(decimal)h(number)e(or)h(as)f(one)g(of)h(the)f(strings)f
+Fo(stdin)p Fq(,)i Fo(stdout)d Fq(or)i Fo(stderr)p Fq(.)59
+b(The)227 1429 y(next)22 b(ar)n(gument)g(is)g(a)h(\002lename)f(which)h
+(will)h(be)e(opened)e(by)j(the)e(client)i(with)f(the)g(privileges)g(of)
+g(the)227 1542 y(calling)j(user)-7 b(.)227 1705 y Fn(modi\002ers)21
+b Fq(is)e(used)e(to)h(specify)h(whether)e(the)h(\002le)h(or)f
+(descriptor)f(is)i(to)f(be)h(r)n(ead)f(fr)n(om)i(or)e(written)g(to.)26
+b(It)227 1818 y(consists)d(of)h(a)h(series)d(of)i(wor)n(ds)f(separated)
+g(by)h(commas.)33 b(A)23 b(comma)j(may)e(separate)f(the)g
+Fn(modi\002ers)227 1931 y Fq(fr)n(om)g(the)f Fn(fd)i
+Fq(and)e(is)h(r)n(equir)n(ed)f(if)i Fn(fd)f Fq(is)g(not)f(numeric.)227
+2093 y(The)g(modi\002er)g(wor)n(ds)g(ar)n(e:)p Black
+227 2206 a Fh(read)p Black 44 w Fo(O_RDONLY)p Fq(:)15
+b(Allow)k(r)n(eading)g(and)g(not)g(writing.)26 b(May)19
+b(not)g(be)g(used)e(with)i Fo(write)e Fq(or)i(things)427
+2319 y(that)k(imply)g(it.)p Black 227 2432 a Fh(write)p
+Black 43 w Fo(O_WRONLY)p Fq(:)33 b(Allow)j(writing)g(and)h(not)e(r)n
+(eading.)69 b Fn(Doesn')m(t)36 b(truncate)i(or)f(cr)n(eate)h
+Fq(without)427 2545 y Fo(truncate)19 b Fq(or)k Fo(create)p
+Fq(.)i Fo(write)20 b Fq(or)j(things)e(that)i(imply)g(it)g(may)g(not)e
+(be)i(used)e(with)i Fo(read)p Fq(.)p Black 227 2658 a
+Fh(overwrite)p Black 42 w Fq(Equivalent)f(to)g Fo(write,create,tru)o
+(nc)o(at)o(e)p Fq(.)p Black 227 2771 a Fh(create)p Black
+Black 227 2884 a(creat)p Black 43 w Fo(O_CREAT)p Fq(:)e(Cr)n(eates)i
+(the)g(\002le)g(if)i(necessary)-10 b(.)26 b(Implies)c
+Fo(write)p Fq(.)p Black 227 2997 a Fh(exclusive)p Black
+Black 227 3110 a(excl)p Black 44 w Fo(O_EXCL)p Fq(:)j(Fails)j(if)h(the)
+e(\002le)h(alr)n(eady)h(exists.)42 b(Implies)28 b Fo(write)e
+Fq(and)i Fo(create)p Fq(.)41 b(May)28 b(not)f(be)427
+3223 y(used)21 b(with)i Fo(truncate)p Fq(.)p Black 227
+3335 a Fh(truncate)p Black Black 227 3448 a(trunc)p Black
+43 w Fo(O_TRUNC)p Fq(:)34 b(T)-8 b(r)o(uncate)36 b(any)h(existing)f
+(\002le.)70 b(Implies)37 b Fo(write)p Fq(.)68 b(May)37
+b(not)f(be)h(used)e(with)427 3561 y Fo(exclusive)p Fq(.)p
+Black 227 3674 a Fh(append)p Black 43 w Fo(O_APPEND)p
+Fq(:)18 b(All)k(writes)f(will)i(append)e(to)g(the)f(\002le.)28
+b(Implies)21 b Fo(write)f Fq(\(but)i(not)f Fo(create)p
+Fq(\).)p Black 227 3787 a Fh(sync)p Black 44 w Fo(O_SYNC)p
+Fq(:)f(Do)i(writes)g(synchr)n(onously)-10 b(.)26 b(Implies)c
+Fo(write)p Fq(.)p Black 227 3900 a Fh(wait)p Black Black
+227 4013 a(nowait)p Black Black 227 4126 a(close)p Black
+43 w Fq(These)f(modi\002ers)g(contr)n(ol)i(the)e(behaviour)i(of)f(the)g
+(client,)g(with)g(r)n(espect)f(to)h(the)f(pipes)h(car)n(-)427
+4239 y(rying)g(data)h(to)f(and)h(fr)n(om)g(the)f(service,)g(when)g(the)
+g(service)g(terminates.)27 b(See)22 b(below)-8 b(.)p
+Black 227 4352 a Fh(fd)p Black 45 w Fq(The)22 b Fn(\002lename)j
+Fq(is)e(not)g(a)h(\002lename)f(but)h(a)g(numeric)f(\002le)h(descriptor)
+-7 b(.)29 b(One)23 b(or)g(both)g(of)g Fo(read)f Fq(and)427
+4465 y Fo(write)e Fq(must)h(be)g(speci\002ed,)f(and)i(no)f(other)f(wor)
+n(ds)h(ar)n(e)h(allowed.)27 b(The)21 b Fn(\002lename)h
+Fq(may)g(also)g(be)427 4578 y Fo(stdin)p Fq(,)e Fo(stdout)g
+Fq(or)j Fo(stderr)d Fq(for)i(\002le)h(descriptor)e(0,)i(1)g(or)f(2)h(r)
+n(espectively)-10 b(.)227 4755 y(If)24 b(no)f Fn(modi\002ers)i
+Fq(which)f(imply)g Fo(read)e Fq(or)h Fo(write)f Fq(ar)n(e)i(used)e(it)h
+(is)h(as)g(if)g Fo(write)d Fq(had)j(been)f(speci\002ed,)227
+4868 y(except)g(that)h(if)h(the)f(\002ledescriptor)e(0)j(of)f(the)g
+(service)g(is)g(being)g(opened)e(\(either)i(speci\002ed)f(numeri-)227
+4981 y(cally)k(or)d(with)h Fo(stdin)p Fq(\))f(it)h(is)g(as)g(if)h
+Fo(overwrite)21 b Fq(had)k(been)g(speci\002ed)e(\(or)i
+Fo(write)e Fq(if)j(only)f Fo(fd)f Fq(was)227 5094 y(speci\002ed\).)227
+5272 y(The)30 b(client)h(will)h(also)f(use)f Fo(O_NOCTTY)d
+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
+%%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
+(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
+(the)f(client)h(has)g(exited)e(and)i(be)f(confused)f(with)i(expected)d
+(output.)227 2713 y(The)i(default)h(is)f Fo(wait)f Fq(for)i(writing)f
+(\002le)h(descriptors)d(and)j Fo(close)e Fq(for)h(r)n(eading)h(ones.)p
+Black 0 2910 a Fh(-w)p Fd(fd)t Fh(=)p Fd(action)p Black
+Black 0 3108 a Fh(--fdwait)p Fd(fd)t Fh(=)p Fd(acti)o(on)p
+Black 40 w Fq(Sets)k(the)h(action)h(on)f(termination)g(of)h(the)e
+(service)i(for)f(the)g(speci\002ed)f(\002le)i(de-)227
+3221 y(scriptor;)c Fn(action)h Fq(must)e(be)g Fo(wait)p
+Fq(,)f Fo(nowait)f Fq(or)j Fo(close)d Fq(as)j(described)f(above.)34
+b(The)24 b(\002le)h(descriptor)227 3333 y(must)f(be)h(speci\002ed)e(as)
+i(open)f(when)g(this)g(option)g(is)h(encounter)n(ed;)e(this)h(option)g
+(is)h(overridden)e(by)227 3446 y(any)g(later)g Fo(-file)e
+Fq(or)i Fo(-fdwait)d Fq(option)i(-)h(even)g(by)g(a)g
+Fo(-file)e Fq(which)j(does)d(not)i(specify)f(an)h(action)227
+3559 y(on)g(termination)f(\(in)h(this)g(case)f(the)g(default)h(will)h
+(be)e(used,)f(as)i(described)e(above\).)p Black 0 3757
+a Fh(-D)p Fd(name)p Fh(=)p Fd(value)p Black Black 0 3954
+a Fh(--defvar)51 b Fd(name)p Fh(=)p Fd(value)p Black
+42 w Fq(Set)25 b(a)j(user)n(-de\002ned)d(variable)j Fn(name)g
+Fq(to)e Fn(value)p Fq(.)42 b(These)25 b(user)n(-de\002ned)f(vari-)227
+4067 y(ables)31 b(ar)n(e)f(made)g(available)j(in)e(the)e
+(con\002guration)h(language)g(as)g(the)f(parameters)h
+Fo(u-)p Fj(name)d Fq(and)227 4180 y(ar)n(e)j(passed)e(to)h(the)g
+(service)g(in)h(envir)n(onment)f(variables)j Fo(USERV_U_)p
+Fj(name)p Fq(.)43 b Fn(name)30 b Fq(may)g(contain)227
+4293 y(only)c(alphanumerics)h(and)f(underscor)n(es,)f(and)h(must)g
+(start)f(with)h(a)h(letter)-7 b(.)38 b(If)26 b(several)g(de\002nitions)
+227 4406 y(ar)n(e)d(given)g(for)f(the)g(same)h Fn(name)f
+Fq(then)g(only)g(the)g(last)h(is)g(ef)n(fective.)p Black
+0 4603 a Fh(-t)54 b Fd(seconds)p Black Black 0 4801 a
+Fh(--timeout)c Fd(seconds)p Black 43 w Fq(T)-5 b(ime)25
+b(out)f(the)g(service)g(if)i(it)e(takes)g(longer)g(than)g
+Fn(seconds)i Fq(seconds)d(\(a)j(positive)227 4914 y(integer)-7
+b(,)31 b(in)g(decimal\).)52 b(T)-5 b(imeout)30 b(will)h(pr)n(oduce)f(a)
+g(diagnostic)g(on)g(stderr)f(and)h(an)h(exit)f(status)f(of)227
+5027 y(255.)h(If)22 b Fn(seconds)i Fq(is)f(zer)n(o)g(then)e(no)i
+(timeout)e(will)j(be)f(implemented)e(\(this)i(is)g(the)f(default\).)p
+Black 0 5224 a Fh(--signals)d Fc(method)p Black 44 w
+Fq(Af)n(fects)i(the)f(handling)i(of)f(the)f(exit)g(status)g(when)h(the)
+f(service)h(terminates)f(due)g(to)227 5337 y(a)25 b(signal.)33
+b(\(The)24 b(client)h(will)h(always)e(\002nish)g(by)h(calling)h
+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
+%%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
+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
+(to)g(stdout,)h(and)g(an)h(err)n(or)f(message)f(will)i(be)427
+2395 y(printed)22 b(to)g(stderr)e(as)j(usual.)227 2559
+y(Pr)n(oblems)32 b(such)g(as)f(client)i(usage)d(err)n(ors,)j(the)e
+(service)g(not)g(being)h(found)f(or)g(permission)g(being)227
+2672 y(denied)h(or)h(failur)n(e)i(of)e(a)h(system)d(call)36
+b(ar)n(e)d(system)f(err)n(ors.)58 b(An)33 b(err)n(or)g(message)f
+(describing)h(the)227 2785 y(pr)n(oblem)c(will)g(be)f(printed)f(on)h
+(the)f(client's)h(stderr)-7 b(,)28 b(and)g(the)g(client's)g(exit)g
+(status)f(will)i(be)f(255.)46 b(If)227 2898 y(the)22
+b(client)h(dies)f(due)g(to)g(a)h(signal)g(this)f(should)g(be)g(tr)n
+(eated)g(as)g(a)i(serious)d(system)g(err)n(or)-7 b(.)p
+Black 0 3095 a Fh(-H)p Black Black 0 3292 a(--hidecwd)p
+Black 41 w Fq(Pr)n(events)30 b(the)h(calling)h(pr)n(ocess's)e(curr)n
+(ent)h(dir)n(ectory)f(name)h(fr)n(om)h(being)f(passed)e(to)i(the)227
+3405 y(service;)22 b(the)g(null)i(string)d(will)j(be)f(passed)e
+(instead.)p Black 0 3602 a Fh(-P)p Black Black 0 3799
+a(--sigpipe)p Black 41 w Fq(If)g(the)f(service)g(pr)n(ogram)g(is)h
+(terminated)e(due)h(to)g(a)h Fo(SIGPIPE)c Fq(the)j(exit)g(status)f(of)i
+(the)f(client)227 3912 y(will)40 b(be)f(zer)n(o,)j(even)c(if)h(it)g
+(would)f(have)h(been)f(something)f(else)g(accor)n(ding)j(to)d(the)h
+(exit)g(status)227 4025 y(method)29 b(speci\002ed.)50
+b(This)30 b(option)g(has)g(no)g(ef)n(fect)h(on)f(the)f(code)h(and)g
+(description)f(printed)h(if)h(the)227 4138 y(exit)23
+b(status)e(method)g Fo(stdout)f Fq(is)j(in)g(use.)p Black
+0 4335 a Fh(-h)p Black Black 0 4533 a(--help)p Black
+Black 0 4730 a(--copyright)p Black 40 w Fo(-h)38 b Fq(or)g
+Fo(--help)d Fq(prints)j(the)f(client's)i(usage)e(message;)44
+b Fo(--copyright)33 b Fq(prints)38 b(the)227 4843 y(copyright)22
+b(and)g(lack)i(of)e(warranty)h(notice.)0 5188 y Fp(2.2)119
+b(Security-overriding)29 b(options)0 5450 y Fq(Ther)n(e)19
+b(ar)n(e)h(also)g(some)f(options)g(which)h(ar)n(e)h(available)i(for)d
+(debugging)e(and)i(to)f(allow)i(the)e(system)f(admin-)0
+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
+%%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
+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
+b Fn(con\002guration-data)42 b Fq(\(followed)c(by)h(a)g(newline\))f(or)
+h(the)f(contents)e(of)j Fn(\002lename)g Fq(\(which)h(is)227
+1158 y(opened)31 b(in)i(the)f(context)g(of)h(the)f(client\))h(to)f(the)
+g(daemon)g(and)h(the)f(daemon)g(uses)g(that)g(data)h(in-)227
+1271 y(stead.)42 b(The)27 b Fn(con\002guration-data)k
+Fq(must)c(all)i(be)f(in)g(one)f(ar)n(gument.)43 b(It)27
+b(will)i(have)f(a)g(single)f(newline)227 1384 y(appended)c(so)h(that)h
+(a)g(single)f(dir)n(ective)h(can)h(easily)f(be)f(given,)h(but)g(if)h
+(mor)n(e)e(than)h(one)f(dir)n(ective)h(is)227 1497 y(r)n(equir)n(ed)d
+(it)h(will)h(have)f(to)f(contain)h(one)f(or)g(mor)n(e)h(r)n(eal)g
+(newlines.)p Black 0 1685 a Fh(--spoof-user)49 b Fd(user)p
+Black 49 w Fq(Pr)n(etend)26 b(to)i(the)f(service)h(that)g(it)h(is)f
+(being)g(called)h(by)g Fn(user)g Fq(\(which)g(may)f(be)g(a)227
+1797 y(username)d(or)g(a)h(uid\).)37 b(This)25 b(will)i(also)e(af)n
+(fect)i(the)e(gr)n(oup)f(and)i(supplementary)d(gr)n(oups)h(supplied)227
+1910 y(to)i(the)f(service;)j(they)d(will)i(be)g(the)e(standar)n(d)h(gr)
+n(oup)f(and)h(supplementary)e(gr)n(oups)h(for)h Fn(user)p
+Fq(.)40 b(The)227 2023 y Fo(--spoof-user)17 b Fq(option)j(will)j
+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
+%%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
+%%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
+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
+b(If)24 b(it)h(decides)d(to)i(allow)h(the)f(service)g(to)f(be)h(pr)n
+(ovided)g(it)g(will)i(fork)d(a)i(subpr)n(ocess)e(to)0
+2588 y(execute)e(the)h(service.)0 2747 y(The)g(service)g(will)i(have)f
+(no)g(contr)n(olling)g(terminal,)g(but)f(it)h(will)h(be)e(a)i(pr)n
+(ocess)d(gr)n(oup)g(leader)-7 b(.)0 2907 y(If)34 b(the)f(client)i(is)f
+(killed)g(or)f(times)h(out)f(or)h(a)g(\002le)g(or)g(descriptor)e(being)
+i(r)n(ead)g(or)g(written)f(by)g(the)h(client)0 3020 y(pr)n(ocess)g
+(gets)f(an)i(err)n(or)f(then)g(the)g(service)h(will)h(be)f
+(disconnected)e(fr)n(om)i(the)f(client.)65 b(The)34 b(client)i(will)0
+3133 y(r)n(eturn)26 b(an)h(exit)g(status)f(of)g(255)j(and)e(some)f(the)
+g(service's)g(pipes)g(may)h(be)g(closed)f(at)h(the)f(other)g(end.)40
+b(The)0 3246 y(service)19 b(will)i(become)e(a)h(child)h(of)e
+Fo(init)p Fq(.)25 b(The)19 b(service)g(may)h(well)g(not)f(notice)g(the)
+g(disconnection,)f(though)0 3359 y(writing)27 b(to)g(a)i(pipe)e(after)g
+(this)g(may)h(pr)n(oduce)f(a)h Fo(SIGPIPE)c Fq(and)k(the)f(facility)i
+(exists)e(to)g(have)h(a)g Fo(SIGHUP)0 3472 y Fq(sent)21
+b(to)h(the)g(service)h(on)f(disconnection.)0 3810 y Fp(3.1)119
+b(File)30 b(descriptors)0 4068 y Fq(The)20 b(service)g(pr)n(ogram's)g
+(standar)n(d)g(\002ledescriptors,)e(and)i(possibly)g(other)f(\002le)h
+(descriptors,)f(will)i(be)g(con-)0 4181 y(nected)31 b(to)g(pipes)g(or)g
+(to)g Fo(/dev/null)p Fq(.)52 b(The)31 b Fo(userv)f Fq(client/daemon)i
+(pair)g(will)h(arrange)f(that)g(data)g(is)0 4294 y(copied)h(between)f
+(the)h(\002les)g(or)g(\002le)h(descriptors)d(speci\002ed)h(to)h(to)g
+(the)g(client)h(by)g(the)e(caller)j(and)f(these)0 4406
+y(these)21 b(pipes.)0 4566 y(Pipes)d(which)h(may)g(be)f(written)g(to)g
+(will)i(be)e(closed)g(if)h(a)g(write)g(err)n(or)e(occurs)i(on)f(the)g
+(corr)n(esponding)e(client-)0 4679 y(side)25 b(\002le)g(or)h
+(descriptor)-7 b(,)24 b(which)j(may)f(r)n(esult)e(in)j(a)f
+Fo(SIGPIPE)c Fq(in)k(the)f(service)h(pr)n(ogram;)g(pipes)f(open)f(for)0
+4792 y(r)n(eading)e(will)i(get)e Fo(EOF)f Fq(if)j(the)d(client-side)i
+(\002le)g(descriptor)e(gets)g Fo(EOF)g Fq(or)h(an)h(err)n(or)-7
+b(.)0 4952 y(If)33 b(the)f(service)g(closes)g(one)g(of)h(its)f(r)n
+(eading)h(\002le)g(descriptors)d(the)i(writing)h(end)e(of)i(the)f(corr)
+n(esponding)0 5065 y(pipe)g(will)h(generate)e(a)h Fo(SIGPIPE)d
+Fq(when)j(attempts)f(ar)n(e)h(made)g(by)h(the)e(client/daemon)h(pair)h
+(to)f(write)0 5177 y(to)26 b(it.)41 b(This)27 b(will)h(not)e(be)h
+(consider)n(ed)e(an)j(err)n(or;)g(rather)-7 b(,)27 b(the)f(r)n(elevant)
+h(pipe)g(will)h(be)f(discar)n(ded)f(and)h(the)0 5290
+y(corr)n(esponding)21 b(\002le)h(or)h(\002le)f(descriptor)f(held)h(by)h
+(the)f(client)h(will)h(be)e(closed.)0 5450 y(Likewise,)32
+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
+%%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
+(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
+1661 y(Read)j(and)g(write)f(err)n(ors)g(\(other)h(than)g(br)n(oken)f
+(pipes,)h(as)g(described)f(above\))i(will)h(always)e(be)g(visible)i(to)
+0 1774 y(the)c(caller;)j(they)d(ar)n(e)h(system)e(err)n(ors,)h(and)h
+(will)h(ther)n(efor)n(e)e(cause)h(the)f(client)h(to)f(print)h(an)g(err)
+n(or)f(message)0 1887 y(to)e(stderr)f(and)h(r)n(eturn)g(with)h(an)g
+(exit)f(status)g(of)g(255.)0 2056 y(If)f(the)f(main)i(service)e(pr)n
+(ogram)h(pr)n(ocess)e(exits)h(while)h(it)g(still)g(has)g(r)o(unning)f
+(childr)n(en)i(any)e(\002le)h(descriptors)0 2169 y(held)32
+b(by)g(those)e(childr)n(en)j(can)g(r)n(emain)g(open,)g(depending)c(on)j
+(the)f(use)h(of)g Fo(wait)p Fq(,)g Fo(nowait)e Fq(or)h
+Fo(close)0 2282 y Fq(for)k(the)g(r)n(elevant)h(\002le)f(descriptor)f
+(in)i(the)e(client's)i(ar)n(guments.)65 b(By)35 b(default)g(writing)g
+(\002ledescriptors)0 2395 y(r)n(emain)26 b(open)e(and)i(the)e(client)i
+(will)h(wait)e(for)h(them)e(to)h(be)g(closed)g(at)g(the)g(service)g
+(end,)g(and)g(r)n(eading)g(\002le)0 2508 y(descriptors)f(ar)n(e)j
+(closed)f(immediately)-10 b(.)39 b(These)25 b(leftover)h(child)h(pr)n
+(ocesses)d(will)k(not)e(get)f(a)i(any)g Fo(SIGHUP)0 2621
+y Fq(even)22 b(if)i(a)f(r)n(ead)f(or)h(write)f(err)n(or)g(occurs)g(or)g
+(the)g(client)h(disconnects)e(befor)n(e)i(then.)0 2976
+y Fp(3.2)119 b(Environment)0 3244 y Fq(The)22 b(service)g(will)i(have)f
+(some)f(information)h(in)g(envir)n(onment)g(variables:)p
+Black 0 3356 a Fh(USERV_USER)p Black 41 w Fq(The)j(login)h(name)h(of)f
+(the)f(calling)j(user)-7 b(.)40 b(If)27 b(the)f Fo(LOGNAME)e
+Fq(variable)29 b(is)e(set)f(\(or)-7 b(,)28 b(if)g(that)f(is)227
+3469 y(unset,)k(if)h(the)e Fo(USER)f Fq(variable)j(is)f(set\))f(in)h
+(the)f(envir)n(onment)g(passed)f(to)h(the)g(client)h(by)g(the)f(caller)
+227 3582 y(then)25 b(the)g(passwor)n(d)f(entry)g(for)i(that)f(login)h
+(name)g(will)h(be)e(looked)f(up;)j(if)f(that)f(passwor)n(d)g(entry's)
+227 3695 y(uid)c(is)h(the)e(same)h(as)g(that)g(of)h(the)e(calling)j(pr)
+n(ocess)d(then)g(that)h(login)g(name)h(will)g(be)f(used,)f(otherwise)
+227 3808 y(\(or)33 b(if)h(neither)e Fo(LOGNAME)d Fq(nor)k
+Fo(USER)e Fq(is)i(set\))f(the)g(calling)j(pr)n(ocess's)c(uid)i(will)h
+(be)f(looked)e(up)i(to)227 3921 y(determine)20 b(their)h(login)g(name)h
+(\(and)f(if)h(this)f(lookup)f(fails)j(then)d(the)h(service)g(will)h
+(not)f(be)g(invoked\).)p Black 0 4034 a Fh(USERV_UID)p
+Black 41 w Fq(The)h(uid)h(of)f(the)g(calling)j(pr)n(ocess.)p
+Black 0 4147 a Fh(USERV_GID)p Black 41 w Fq(The)30 b(gid)g(and)g
+(supplementary)f(gr)n(oup)g(list)i(of)f(the)g(calling)i(pr)n(ocess:)42
+b(\002rst)30 b(the)f(gr)n(oup)h(in)227 4260 y(gid)23
+b(and)f(then)g(those)f(in)i(the)f(supplementary)e(gr)n(oup)i(list,)h
+(in)g(decimal,)g(separated)e(by)i(spaces.)p Black 0 4373
+a Fh(USERV_GROUP)p Black 40 w Fq(The)k(gr)n(oup)f(names)h(of)g(the)f
+(calling)j(pr)n(ocess,)d(listed)g(in)i(the)e(same)h(way)g(as)g(the)f
+(ids)h(ar)n(e)227 4486 y(in)21 b Fo(USERV_GID)p Fq(.)c(If)k(no)f(name)h
+(can)h(be)e(found)g(for)h(any)g(of)g(the)e(calling)k(pr)n(ocess's)c(gr)
+n(oup\(s\))h(then)g(the)227 4598 y(service)j(will)h(not)e(be)g
+(invoked.)p Black 0 4711 a Fh(USERV_CWD)p Black 41 w
+Fq(The)f(client's)g(curr)n(ent)g(working)f(dir)n(ectory)g(name)h
+(\(this)g(dir)n(ectory)f(may)i(not)e(be)h(accessible)227
+4824 y(to)29 b(the)f(service\).)47 b(If)30 b(it)f(could)g(not)f(be)h
+(determined)e(or)i(the)f Fo(-hidecwd)e Fq(\003ag)k(was)f(used)e(then)h
+(this)227 4937 y(variable)d(will)f(be)e(set)g(to)g(an)h(empty)e(string)
+h(\(this)h(is)f(not)g(consider)n(ed)f(an)i(err)n(or\).)p
+Black 0 5050 a Fh(USERV_SERVICE)p Black 40 w Fq(The)e(service)i(name)g
+(r)n(equested)d(by)i(the)g(caller)-7 b(.)p Black 0 5163
+a Fh(USERV_U_)p Fd(name)p Black 40 w Fq(The)22 b(value)i(supplied)d(to)
+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
+%%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
+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)
+g(for)h(invoking)g(the)g(service,)g(for)h(example)f(allowing)h(certain)
+g(\002le)f(descriptors)e(to)i(be)0 2640 y(speci\002ed)c(by)i(the)f
+(client)h(or)f(specifying)g(which)h(pr)n(ogram)g(to)f(execute)f(to)h
+(pr)n(ovide)g(the)g(service.)0 2807 y(The)i Fn(last)i
+Fq(instance)e(of)g(each)h(such)f(setting)f(will)j(take)e(ef)n(fect.)33
+b(The)24 b(dir)n(ectives)g(which)h(specify)f(which)h(pr)n(o-)0
+2920 y(gram)f(to)g(execute)e(will)k(not)d(stop)g(the)g(con\002guration)
+g(\002le)i(fr)n(om)f(being)g(r)n(ead;)h(they)d(will)k(be)e(r)n(emember)
+n(ed)0 3033 y(and)f(will)h(only)e(take)g(ef)n(fect)g(if)i(they)d(ar)n
+(e)i(not)f(overridden)f(by)i(a)g(later)g(dir)n(ective.)0
+3200 y(The)c(daemon)g(will)i(\002rst)d(r)n(ead)i Fo(/etc/userv/sys)o
+(te)o(m.d)o(ef)o(au)o(lt)o Fq(.)h(Then,)e(by)h(default)f(\(this)h
+(behaviour)0 3313 y(may)26 b(be)g(modi\002ed\),)g(it)g(will)h(r)n(ead)f
+(a)h(per)n(-user)d(\002le)i Fo(~/.userv/rc)p Fq(,)c(if)27
+b(it)f(exists)f(and)h(the)f(service)h(user)7 b('s)0 3425
+y(shell)23 b(is)f(in)h Fo(/etc/shells)p Fq(.)g(Finally)h(it)f(will)h(r)
+n(ead)e Fo(/etc/userv/syst)o(em)o(.ov)o(er)o(ri)o(de)o
+Fq(.)0 3592 y(When)d(it)h(has)f(r)n(ead)h(all)h(of)e(these)f(\002les)i
+(it)f(will)i(act)f(accor)n(ding)g(to)f(the)g(curr)n(ently)g(values)h
+(of)g(of)f(the)g(execution)0 3705 y(settings.)0 4056
+y Fp(4.1)119 b(Con\002guration)31 b(\002le)e(syntax)0
+4321 y Fq(The)19 b(con\002guration)h(\002le)g(is)h(a)f(series)f(of)h
+(dir)n(ectives,)h(usually)f(one)f(per)h(line.)27 b(The)20
+b(portion)f(of)h(a)h(line)f(follow-)0 4434 y(ing)27 b(a)h(hash)g
+(character)g Fo(#)f Fq(is)g(taken)g(as)g(a)h(comment)f(and)h(ignor)n
+(ed.)41 b(Each)27 b(dir)n(ective)h(consists)e(of)h(a)h(series)0
+4547 y(of)22 b(tokens)e(separated)g(by)i(linear)h(whitespace)e
+(\(spaces)h(and)g(tabs\);)g(tokens)e(may)i(be)g(wor)n(ds)f(consisting)g
+(of)0 4660 y(non-space)j(characters,)g(or)-7 b(,)24 b(wher)n(e)g(a)h
+(string)e(is)h(r)n(equir)n(ed,)g(a)h(string)e(in)i(double)f(quotes.)30
+b(Double-quoted)0 4773 y(strings)21 b(may)i(contain)g(the)f(following)h
+(backslash)g(escapes:)p Black 0 4886 a Fh(\\n)p Black
+45 w Fq(newline)p Black 0 4998 a Fh(\\t)p Black 45 w
+Fq(tab)p Black 0 5111 a Fh(\\r)p Black 45 w Fq(carriage)g(r)n(eturn)p
+Black 0 5224 a Fh(\\)p Fd(OOO)p Black 48 w Fq(character)g(whose)e
+(octal)i(code)f(is)h Fn(OOO)p Black 0 5337 a Fh(\\x)p
+Fd(XX)p Black 52 w Fq(character)g(whose)e(hex)h(code)g(is)h
+Fn(XX)p Black 0 5450 a Fh(\\)p Fd(punctuation)p Black
+41 w Fq(literal)h(punctuation)e(character)h(\(eg)f Fo(\\\\)p
+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
+%%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
+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
+(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
+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
+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
+(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
+(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
+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(\()
+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
+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
+(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
+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
+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
+(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
+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
+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
+%%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
+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
+(the)227 927 y(empty)g(string)g(will)i(be)f(r)n(eplaced)g(with)g
+Fo(:empty)e Fq(\(note)h(that)h(this)f(is)h(dif)n(fer)n(ent)g(fr)n(om)h
+(a)g(parameter)227 1040 y(not)22 b(having)i(any)e(values\).)p
+Black 0 1212 a Fh(include-directo)o(ry)48 b Fd(directory)p
+Black 50 w Fq(Read)36 b(con\002guration)h(fr)n(om)g(all)i(\002les)e(in)
+h(dir)n(ectory)e Fn(dir)n(ectory)227 1324 y Fq(which)25
+b(ar)n(e)f(plain)g(\002les)g(whose)e(names)i(consist)f(only)g(of)h
+(alphanumerics)g(and)g(hyphens)e(and)i(start)227 1437
+y(with)i(an)h(alphanumeric.)39 b(They)25 b(will)i(be)f(r)n(ead)g(in)g
+(lexical)i(or)n(der)-7 b(.)37 b(It)26 b(is)g(an)g(err)n(or)g(for)g(the)
+f(dir)n(ectory)227 1550 y(not)g(to)h(exist)f(or)g(for)h(it)g(or)g(any)g
+(of)g(the)f(\002les)g(found)g(not)h(to)f(be)h(r)n(ead)g(successfully)
+-10 b(,)25 b(or)h(for)g(anything)227 1663 y(with)d(an)g(appr)n(opriate)
+f(name)h(not)f(to)g(be)g(a)h(plain)h(\002le)f(or)f(a)h(symbolic)h(link)
+f(to)f(a)h(plain)g(\002le.)p Black 0 1834 a Fh(error)52
+b Fd(text)h(...)p Black 44 w Fq(Causes)30 b(an)g(err)n(or)g(whose)e
+(message)h(includes)h(the)f(descriptive)h(string)f Fn(text)p
+Fq(.)52 b Fn(text)227 1947 y Fq(may)30 b(consist)e(of)h(several)h
+(tokens)d(with)i(intervening)f(whitespace.)47 b(The)28
+b(whitespace)h(will)h(be)f(in-)227 2060 y(cluded)c(in)h(the)f(message)f
+(as)h(found)g(in)h(the)f(con\002guration)g(\002le:)33
+b(all)27 b(the)e(characters)g(until)h(the)f(end)227 2173
+y(of)j(the)e(line)i(will)h(be)f(included)f(verbatim,)i(unless)e(they)f
+(ar)n(e)i(part)f(of)h(a)g(double-quoted)d(string,)j(in)227
+2286 y(which)20 b(case)f(the)f(usual)h(meaning)g(of)g(the)f(string)g
+(\(i.e.,)i(after)e(backslash)i(escape)e(pr)n(ocessing\))g(will)i(be)227
+2399 y(used.)25 b(Comments)19 b(and)g(linear)h(whitespace)e(at)h(the)g
+(end)f(of)h(the)f(line)i(\(or)f(just)f(befor)n(e)h(the)f(comment\))227
+2512 y(will)24 b(still)f(be)g(ignor)n(ed.)p Black 0 2683
+a Fh(message)51 b Fd(text)i(...)p Black 44 w Fq(Causes)28
+b(a)i(message)d(including)j(the)e(descriptive)g(string)f
+Fn(text)k Fq(to)d(be)h(deliver)n(ed)227 2796 y(as)23
+b(if)g(it)g(wer)n(e)f(an)h(err)n(or)f(message,)f(but)i(does)e(not)h
+(actually)h(cause)g(an)g(err)n(or)-7 b(.)0 3088 y Fb(4.2.2)99
+b(Directives)26 b(with)f(delayed)f(ef)n(fect)0 3310 y
+Fq(The)f(following)i(dir)n(ectives)f(have)g(no)g(immediate)g(ef)n
+(fect,)g(but)g(ar)n(e)h(r)n(emember)n(ed)e(and)h(have)h(an)f(ef)n(fect)
+g(on)0 3423 y(later)f(pr)n(ocessing)e(of)i(the)e(con\002guration)h
+(\002les.)p Black 0 3632 a Fh(user-rcfile)50 b Fd(filename)p
+Black 42 w Fq(Speci\002es)23 b(that)i(the)f(\002le)h
+Fn(\002lename)g Fq(should)f(be)g(r)n(ead)h(instead)f(of)h(the)f(user)7
+b('s)227 3745 y Fo(~/.userv/rc)p Fq(.)42 b(This)29 b(does)e
+Fn(not)i Fq(happen)f(immediately;)k(instead,)e(the)e(setting)f(is)i(r)n
+(emember)n(ed)227 3858 y(and)34 b(used)e(after)h(the)g
+Fo(system.default)27 b Fq(con\002guration)33 b(\002le)g(has)h(been)e(r)
+n(ead.)61 b(This)33 b(dir)n(ective)227 3971 y(has)23
+b(no)f(ef)n(fect)g(in)h(a)g(user)7 b('s)20 b(con\002guration)i(\002le)h
+(or)f(in)g(the)g Fo(system.overrid)o(e)16 b Fq(\002le,)23
+b(as)f(the)g(user)7 b('s)227 4084 y(con\002guration)22
+b(\002le)h(has)g(alr)n(eady)g(been)f(found)g(and)g(r)n(ead)h(by)f(then)
+g(and)h(will)h(not)d(be)i(r)n(e-r)n(ead.)p Black 0 4255
+a Fh(errors-to-stder)o(r)p Black 39 w Fq(Causes)f(err)n(or)g(messages)f
+(to)h(be)h(deliver)n(ed)f(to)g(the)f(client's)i(stderr)-7
+b(.)p Black 0 4426 a Fh(errors-to-file)16 b Fc(\002lename)p
+Black 45 w Fq(Err)n(or)25 b(messages)e(will)j(be)f(written)f(to)h
+Fn(\002lename)p Fq(,)h(which)g(will)g(be)f(opened)227
+4539 y(in)e(the)f(context)g(of)g(and)h(with)f(the)g(privileges)g(of)h
+(the)f(service)g(user)-7 b(.)p Black 0 4710 a Fh(errors-to-syslo)o(g)16
+b Fl([)p Fc(facility)24 b Fl([)p Fc(level)p Black 47
+w Fq(]])29 b(Err)n(or)f(messages)f(will)i(be)g(deliver)n(ed)f(using)g
+Fo(syslog)p Fq(.)43 b(The)227 4823 y(default)23 b Fn(facility)i
+Fq(is)d Fo(user)p Fq(;)f(the)h(default)g Fn(level)j Fq(is)d
+Fo(error)p Fq(.)0 5115 y Fb(4.2.3)99 b(Control)25 b(structure)g
+(directives)0 5337 y Fq(The)h(following)h(dir)n(ectives)f(ar)n(e)h
+(used)e(to)h(cr)n(eate)g(contr)n(ol)h(str)o(uctur)n(es.)38
+b(If)27 b(the)e(end)h(of)g(the)g(\002le)h(is)f(encoun-)0
+5450 y(ter)n(ed)19 b(befor)n(e)g(the)h(end)f(of)h(any)g(contr)n(ol)g
+(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
+%%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
+(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)
+-8 b(.)227 978 y(The)22 b(conditions)g(ar)n(e:)p Black
+227 1091 a Fh(glob)53 b Fd(parameter)i(glob-pattern)c
+Fh(...)p Black 44 w Fq(The)35 b(value)i(of)g(the)e(parameter)h(whose)e
+(name)j(is)427 1204 y(given)26 b(matches)h(one)e(of)h(the)g(glob)g
+(patterns)f(\(anchor)n(ed)h(at)h(both)e(ends;)i(backslashes)f(can)h(be)
+427 1317 y(used)21 b(to)h(escape)g(metacharacters\).)p
+Black 227 1430 a Fh(range)53 b Fd(parameter)i(min)f(max)p
+Black 51 w Fq(The)20 b(value)h(of)g(the)e(parameter)h(is)h(a)g
+(nonnegative)f(integer)f(and)427 1543 y(lies)26 b(within)h(the)e(range)
+g(speci\002ed.)37 b Fn(min)25 b Fq(or)h Fn(max)g Fq(may)h(be)f
+Fo($)f Fq(to)g(indicate)i(no)e(lower)h(or)f(upper)427
+1655 y(limit,)f(r)n(espectively)-10 b(.)p Black 227 1768
+a Fh(grep)53 b Fd(parameter)i(filename)p Black 43 w Fq(The)16
+b Fn(\002lename)j Fq(r)n(efers)e(to)g(a)h(\002le)g(one)e(of)i(whose)e
+(lines)i(is)f(the)g(value)427 1881 y(of)23 b(the)f(parameter)g
+(\(leading)g(or)g(trailing)i(whitespace)d(on)i(each)g(line)g(and)f
+(empty)f(lines)i(in)g(the)427 1994 y(\002le)g(ar)n(e)g(ignor)n(ed\).)k
+(It)22 b(is)h(an)g(err)n(or)f(for)g(the)g(\002le)h(not)f(to)g(be)g
+(opened)f(and)i(r)n(ead.)p Black 227 2107 a Fh(!)109
+b Fd(condition)p Black 43 w Fq(The)21 b Fn(condition)j
+Fq(is)f Fn(not)g Fq(tr)o(ue.)p Black 227 2220 a Fl(Conjunctions:)k
+Fh(&)22 b Fl(and)g Fh(|)p Black Black Black 427 w Fo(\()54
+b Fj(condition)809 2333 y Fo(&)g Fj(condition)809 2446
+y Fo(&)g Fj(condition)809 2559 y Fo(...)809 2672 y(\))427
+2785 y Fq(is)29 b(tr)o(ue)e(if)i(all)h(the)d(listed)g(conditions)h(ar)n
+(e)g(tr)o(ue;)i(wher)n(e)d Fo(|)h Fq(is)h(used)d(it)j(is)f(tr)o(ue)f
+(if)i(any)f(of)h(them)427 2897 y(is)d(tr)o(ue.)37 b(Newlines)25
+b(must)g(be)h(used)f(to)g(separate)g(one)g(condition)g(fr)n(om)i(the)e
+(next,)g(as)h(shown,)427 3010 y(and)d(the)f(par)n(entheses)e(ar)n(e)j
+(mandatory)-10 b(.)27 b(These)21 b(conjunctions)h(do)g(not)g(do)g(lazy)
+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
+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
+b(All)29 b(the)g(gr)n(oup)f(names)h(come)g(\002rst,)h(and)f(then)427
+3866 y(the)c(gids.)37 b(If)26 b(the)f(\002rst)g(supplementary)f(gr)n
+(oup)g(is)i(the)f(same)h(as)g(the)f(primary)h(gr)n(oup)f(then)g(it)427
+3979 y(is)e(elided.)p Black 227 4092 a Fh(calling-user-sh)o(ell)p
+Black 39 w Fq(The)h(calling)j(user)7 b('s)24 b(shell,)i(as)f(listed)g
+(in)g(the)g(passwor)n(d)f(entry)g(for)h(the)427 4205
+y(calling)g(login)d(name)h(\(as)g(determined)e(for)h
+Fo(USERV_USER)p Fq(,)c(above\).)p Black 227 4318 a Fh(service-user)p
+Black 40 w Fq(T)-8 b(wo)21 b(strings:)k(the)c(name)g(of)g(the)g
+(service)g(user)f(\(as)h(speci\002ed)f(to)h(the)f(client\))i(and)427
+4431 y(their)g(uid)h(\(r)n(epr)n(esented)d(in)j(decimal\).)p
+Black 227 4544 a Fh(service-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 4657 y(gids)22 b(\(in)h(decimal\))i(of)d(the)g
+(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
+%%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
+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
+Fq(will)36 b(mer)n(ely)f(cause)g(the)f(parsing)h(to)f(continue)h(at)227
+1106 y Fo(hctac)20 b Fq(instead.)26 b(Any)21 b(contr)n(ol)g(constr)o
+(ucts)g(started)e(since)j(the)e Fo(catch-quit)d Fq(will)23
+b(be)f(consider)n(ed)227 1219 y(\002nished)g(if)h(a)h
+Fo(quit)c Fq(is)j(found.)227 1385 y(If)32 b(an)f(err)n(or)g(occurs)g
+(inside)g Fo(catch-quit)c Fq(the)j(execution)h(settings)e(will)k(be)e
+(r)n(eset)f(\(as)h(if)i(by)e(the)227 1498 y Fo(reset)21
+b Fq(dir)n(ective\))i(and)g(parsing)f(will)i(likewise)e(continue)g(at)h
+Fo(hctac)p Fq(.)227 1665 y(If)h(a)h(lexical)h(or)d(syntax)g(err)n(or)h
+(is)g(detected)d(in)k(the)e(same)h(con\002guration)f(\002le)h(as)h(the)
+e Fo(catch-quit)p Fq(,)227 1778 y(while)g(looking)f(for)h(the)e
+Fo(hctac)g Fq(after)h(an)i(err)n(or)e(or)g Fo(quit)p
+Fq(,)e(that)j(new)f(err)n(or)g(will)i(not)e(be)g(caught.)0
+2085 y Fb(4.2.4)99 b(Directives)26 b(for)e(changing)i(execution)f
+(settings)0 2315 y Fq(The)f(following)h(dir)n(ectives)g(modify)g(the)f
+(execution)f(settings;)h(the)g(server)g(will)i(r)n(emember)f(the)f
+(fact)h(that)0 2428 y(the)k(dir)n(ective)h(was)f(encounter)n(ed)e(and)j
+(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
+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
+(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
+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
+(execute)g(is)h(left)g(at)g(its)g(pr)n(evious)g(setting)e(\(or)i
+(unset,)f(if)i(it)f(was)g(not)f(set)227 4553 y(befor)n(e\).)227
+4702 y(It)g(is)g(an)g(err)n(or)g(for)g(the)f(test)g(for)h(the)f
+(existence)f(of)i(the)g(pr)n(ogram)g(to)f(fail)j(other)d(than)h(with)g
+(a)g(`no)g(such)227 4815 y(\002le)29 b(or)f(dir)n(ectory')g
+(indication.)46 b(It)28 b(is)g(also)h(an)g(err)n(or)f(for)g(the)g
+(execution)f(to)h(fail)i(if)f(and)g(when)e(it)i(is)227
+4928 y(attempted)21 b(\(after)i(all)h(the)e(con\002guration)g(has)g
+(been)g(parsed\).)p Black 0 5111 a Fh(execute-from-pa)o(th)p
+Black 39 w Fn(service)29 b Fq(is)f(interpr)n(eted)d(as)j(a)g(pr)n
+(ogram)f(on)g(the)g(default)g Fo(PATH)f Fq(\(or)h(as)h(a)g(path-)227
+5224 y(name)k(of)g(an)h(executable,)g(if)g(it)f(contains)g(a)g
+Fo(/)p Fq(\).)55 b(This)32 b(dir)n(ective)g(is)g Fn(very)h(danger)n
+(ous)p Fq(,)k(and)31 b(is)h(only)227 5337 y(pr)n(ovided)21
+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
+%%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
+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
+w Fq(Displays)23 b(the)f(values)i(of)f(the)f(service)h(con\002guration)
+g(language)g(pa-)427 1605 y(rameter)f(speci\002ed.)p
+Black 227 1718 a Fh(version)p Black 43 w Fq(Displays)27
+b(the)f(version)g(string)g(and)h(compilation)h(details)f(of)f(the)h
+(uservd)e(server)h(pr)n(o-)427 1831 y(gram.)p Black 227
+1944 a Fh(reset)p Black 43 w Fq(Displays)34 b(the)e(default)i(r)n(eset)
+e(con\002guration)g(\(evaluated)i(when)e Fo(reset)g Fq(is)h(found)g(in)
+g(a)427 2056 y(con\002guration)22 b(\002le,)h(or)f(when)g(an)h(err)n
+(or)f(is)h(caught)f(by)h Fo(catch-quit)p Fq(\).)p Black
+227 2169 a Fh(toplevel)p Black 42 w Fq(Displays)30 b(the)g(top-level)g
+(default)g(con\002guration)g(\(the)f(con\002guration)h(data,)i(evalu-)
+427 2282 y(ated)22 b(by)h(the)f(server)-7 b(,)21 b(which)i(calls)h(all)
+g(the)e(other)g(con\002guration)g(\002les\).)p Black
+227 2395 a Fh(override)p Black 42 w Fq(Displays)i(the)e(top-level)h
+(override)g(con\002guration)g(\(the)g(con\002guration)f(data,)i(evalu-)
+427 2508 y(ated)e(by)h(the)f(server)-7 b(,)21 b(which)i(causes)f(all)i
+(the)e(other)g(con\002guration)g(data)g(to)g(be)h(parsed\).)p
+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
+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,)
+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)
+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
+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
+%%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
+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
+b(,)30 b(two)f(numbers)f(separated)g(by)h(a)h(hyphen,)f(or)g(one)f
+(number)227 1098 y(followed)33 b(by)h(a)g(hyphen)e(\(indicating)j(all)g
+(descriptors)c(fr)n(om)k(that)e(number)g(onwar)n(ds\).)61
+b(It)33 b(may)227 1211 y(also)21 b(be)g(one)f(of)h(the)f(wor)n(ds)f
+Fo(stdin)p Fq(,)g Fo(stdout)f Fq(or)j Fo(stderr)p Fq(.)j(Open-ended)19
+b(\002le)i(descriptor)e(rangers)227 1324 y(ar)n(e)31
+b(allowed)f(only)f(with)h Fo(reject-fd)c Fq(and)k Fo(ignore-fd)p
+Fq(,)e(as)i(otherwise)e(the)h(service)h(pr)n(ogram)227
+1437 y(would)22 b(\002nd)g(itself)h(with)g(a)g(very)f(lar)n(ge)h
+(number)f(of)h(\002le)g(descriptors)d(open.)227 1608
+y(When)k(the)g(con\002guration)g(has)g(been)g(parsed,)g(and)g(befor)n
+(e)h(the)e(service)i(is)f(about)h(to)f(be)g(executed,)227
+1721 y(stderr)h(\(fd)i(2\))g(must)f(be)g(r)n(equir)n(ed)g(or)g(allowed)
+h(\()p Fo(require-fd)22 b Fq(or)k Fo(allow-fd)p Fq(\))d(for)j(writing;)
+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 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
+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
+(marked)h(for)g(r)n(ejection)g(ar)n(e)h(speci\002ed)e(when)g(the)h
+(service)g(is)g(about)h(to)227 3483 y(be)c(invoked)f(\(after)g(the)g
+(con\002guration)g(has)h(been)f(parsed\).)p Black 0 3694
+a Fh(ignore-fd)50 b Fd(fd-range)p Black 43 w Fq(Silently)27
+b(ignor)n(e)h(any)g(speci\002cation)g(by)g(the)f(client)i(of)f(those)e
+(descriptor\(s\).)227 3806 y(The)g(pipes)f(corr)n(esponding)f(to)i
+(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
+(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)
+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
+(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
+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
+%%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
+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
+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
+%%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
+(configuration)e(data)53 b(sent)g(by)g(client)164 814
+y Fo(quit)p Black Black eop
+%%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
+%%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
+(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
+(has)h(exited;)e(the)i(behaviour)g(is)g(contr)n(olled)f(by)h(options)f
+(passed)227 4522 y(to)g(the)g(client)h(by)g(its)f(caller)-7
+b(.)227 4669 y(The)29 b(caller)j(can)e(arrange)g(that)g(a)g(writing)g
+(pipe)f(be)h(connected)e(to)i(a)g(pipe)f(or)h(similar)h(object)f(and)
+227 4782 y(cause)19 b(attempts)e(to)h(write)g(to)g(that)g(descriptor)f
+(by)h(the)g(service)g(to)g(generate)f(a)i Fo(SIGPIPE)d
+Fq(\(or)i Fo(EPIPE)227 4895 y Fq(if)24 b Fo(SIGPIPE)19
+b Fq(is)k(caught)f(or)h(ignor)n(ed\))f(in)h(the)f(service.)227
+5043 y(Likewise,)g(the)h(service)g(can)h(close)f(\002ledescriptors)e
+(speci\002ed)h(for)h(r)n(eading,)g(which)h(will)h(cause)e(the)227
+5155 y(corr)n(esponding)h(\002ledescriptors)f(passed)h(by)h(the)f
+(caller)j(to)e(be)g(closed,)g(so)g(that)g(if)h(these)d(ar)n(e)j(pipes)
+227 5268 y(pr)n(ocesses)21 b(which)i(write)f(to)g(them)g(will)i(r)n
+(eceive)f Fo(SIGPIPE)c Fq(or)k Fo(EPIPE)p Fq(.)p Black
+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
+%%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
+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)
+j(using)d(the)h Fo(--defvar)51 b Fj(name)p Fo(=)p Fj(value)14
+b Fq(option)j(to)h(the)f(client)i(ar)n(e)227 3634 y(available)j(in)d
+(the)f(con\002guration)g(language)h(as)g(the)e(corr)n(esponding)g
+Fo(u-)p Fj(name)f Fq(parameters)i(and)h(ar)n(e)227 3747
+y(passed)i(to)h(the)g(service)h(pr)n(ogram)f(in)h(envir)n(onment)f
+(variables)i Fo(USERV_U_)p Fj(name)p Fq(.)p Black 127
+3934 a(\225)p Black 45 w(If)e(the)f(calling)j(user)d(is)h(r)n(oot)f(or)
+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
+%%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
+(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
+2886 y Fp(6.2)119 b(Standard)29 b(services)g(and)h(directory)g
+(management)0 3151 y Fq(In)f(later)g(versions)f(of)h(this)g
+(speci\002cation)g(standar)n(d)g(service)g(names)g(and)g(interfaces)g
+(for)g(common)g(ser)n(-)0 3263 y(vices)23 b(such)f(as)h(mail)h
+(delivery)f(and)f(WWW)h(CGI)g(scripts)f(may)h(be)f(speci\002ed.)0
+3430 y Fo(userv)p Fq(-using)c(applications)j(and)g(system)e(services)h
+(which)h(hide)f Fo(userv)f Fq(behind)h(wrapper)g(scripts)g(may)0
+3543 y(need)29 b(to)h(stor)n(e)f(information)j(in)f(the)e(user)7
+b('s)29 b(\002lespace)i(to)f(pr)n(eserve)f(the)g(corr)n(ect)i
+(placement)f(of)h(the)f(se-)0 3656 y(curity)35 b(perimiters.)63
+b(Such)35 b(applications)h(should)e(usually)h(do)f(so)g(in)i(a)f(dir)n
+(ectory)f(\(cr)n(eated)g(by)h(them\))0 3769 y Fo(~/.userv/)p
+Fj(servic)o(e)p Fq(,)16 b(wher)n(e)22 b Fn(service)j
+Fq(is)e(the)e(service)i(name)g(or)f(application)i(in)f(question.)0
+3936 y(If)e(desir)n(ed,)f(a)i(dot-dir)n(ectory)d(inside)i
+Fo(~/.userv)d Fq(may)k(be)f(used)f(to)g(avoid)i(the)f(user)f(becoming)h
+(confused)0 4049 y(by)j(\002nding)f(parts)g(of)g(a)i(semi-privileged)e
+(application's)i(internal)f(state)e(in)i(their)g(\002lespace,)f(and/or)
+g(dis-)0 4162 y(courage)f(them)g(fr)n(om)h(\002ddling)f(with)h(and)g
+(thus)e(corr)o(upting)h(it.)0 4329 y(However)-7 b(,)25
+b Fo(userv)e Fq(applications)j(should)e(of)h(course)g(not)f(r)n(ely)h
+(for)h(their)f(global)h(integrity)e(and)h(security)0
+4442 y(on)d(the)g(integrity)f(of)i(the)f(data)h(on)f(the)g(user)7
+b('s)21 b(side)h(of)g(the)g(security)g(boundary)-10 b(.)0
+4792 y Fp(6.3)119 b(Reducing)30 b(the)g(number)g(of)f(absolutely)h
+(privileged)g(subsystems)0 5057 y Fq(Curr)n(ently)23
+b(most)f(Unix)i(systems)c(have)k(many)f(components)f(which)i(need)d(to)
+i(r)o(un)g(as)g(r)n(oot,)g(even)f(though)0 5170 y(most)f(of)h(their)f
+(activity)i(does)d(not)h(strictly)h(r)n(equir)n(e)g(it.)27
+b(This)22 b(gives)f(rise)h(to)f(a)h(lar)n(ge)h(and)e(complex)h(body)f
+(of)0 5283 y(code)h(which)h(must)f(be)h(tr)o(usted)d(with)j(the)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
+%%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
+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
+(absolutely)e(privileged)0 1835 y(component)21 b(in)i(or)n(der)e(to)h
+(support)e(delayed)h(printing)h(without)f(copying:)27
+b(when)22 b(the)f(user)g(queues)g(a)i(\002le)0 1948 y(to)g(be)g
+(printed)f(the)h(\002lename)g(is)h(stor)n(ed)e(in)h(the)g(print)g
+(queue,)f(rather)h(than)g(a)h(copy)f(of)g(it,)h(and)f(the)g(printer)0
+2061 y(daemon)28 b(accesses)f(the)h(\002le)g(dir)n(ectly)h(when)e(it)i
+(is)f(r)n(eady)g(to)g(print)g(the)f(job.)46 b(In)28 b(or)n(der)f(that)h
+(the)g(user)f(can)0 2174 y(print)c(\002les)g(which)h(ar)n(e)f(not)g
+(world-r)n(eadable)g(the)g(daemon)g(is)g(given)g(r)n(oot)g(privilege)g
+(so)g(that)g(it)g(can)h(open)0 2286 y(the)e(\002le)h(in)g(the)e
+(context)h(of)g(the)g(user)-7 b(,)22 b(rather)g(than)h(its)f(own.)0
+2456 y(A)j(simple-minded)g(appr)n(oach)h(to)e(converting)h(this)g
+(scheme)f(to)h(use)f Fo(userv)f Fq(might)i(involve)h(giving)g(the)0
+2569 y(printer)32 b(daemon)g(\(the)g Fo(lp)g Fq(user\))g(the)g(ability)
+j(to)d(r)n(ead)h(the)f(\002le)h(by)f(allowing)i(them)e(to)g(r)o(un)h
+Fo(cat)f Fq(\(or)g(a)0 2682 y(special-purpose)23 b(\002le-r)n(eading)i
+(pr)n(ogram\))g(as)f(any)h(user)-7 b(.)33 b(The)24 b
+Fo(lpr)f Fq(pr)n(ogram)i(would)f(use)g(a)h Fo(userv)d
+Fq(ser)n(-)0 2795 y(vice)i(to)e(stor)n(e)g(the)h(\002lename)g(in)h(the)
+e(printer)g(daemon's)h(queues,)e(and)i(the)f(daemon)h(would)g(r)n(ead)g
+(the)f(\002le)0 2908 y(later)h(when)f(it)g(felt)h(like)g(it.)0
+3078 y(However)-7 b(,)23 b(this)h(would)g(allow)h(the)f(printer)f
+(daemon)h(to)g(r)n(ead)g(any)g(\002le)h(on)f(the)f(system,)g(whether)g
+(or)h(not)0 3190 y(someone)30 b(had)i(asked)e(for)i(it)g(to)f(be)g
+(printed.)54 b(Since)32 b(many)g(\002les)g(will)h(contain)f(passwor)n
+(ds)e(and)h(other)0 3303 y(security-critical)c(information)g(this)f(is)
+g(nearly)g(as)g(bad)g(as)h(giving)f(the)f(daemon)h(r)n(oot)f(access)h
+(in)h(the)e(\002rst)0 3416 y(place.)42 b(Any)26 b(security)g(holes)g
+(in)i(the)e(print)h(server)f(which)h(allow)h(a)g(user)e(to)g(execute)g
+(commands)h(as)g(the)0 3529 y Fo(lp)22 b Fq(user)f(will)j(give)f(the)f
+(user)f(the)h(ability)i(to)e(r)n(ead)h(any)f(\002le)h(on)f(the)g
+(system.)0 3699 y(Instead,)35 b(it)e(is)h(necessary)e(to)h(keep)f(a)j
+(r)n(ecor)n(d)e(of)h(which)g(\002les)f(the)g(daemon)g(has)h(been)f
+(asked)f(to)h(print)0 3812 y Fn(outside)f Fq(the)e(contr)n(ol)h(of)f
+(the)g(print)g(daemon.)52 b(This)30 b(r)n(ecor)n(d)g(could)h(be)f(kept)
+f(by)i(a)g(new)f(r)n(oot-privileged)0 3925 y(component,)c(but)g(this)g
+(is)h(not)f(necessary:)33 b(the)26 b(r)n(ecor)n(d)g(of)h(which)g
+(\002les)f(a)h(user)e(has)i(asked)e(to)h(be)g(printed)0
+4038 y(can)e(be)f(kept)f(under)g(the)g(contr)n(ol)h(of)g(the)f(user)g
+(in)i(question.)k(The)22 b(submission)h(pr)n(ogram)g
+Fo(lpr)f Fq(will)i(make)0 4151 y(a)k(r)n(ecor)n(d)f(in)g(an)h(ar)n(ea)g
+(under)e(the)g(user)7 b('s)26 b(contr)n(ol)h(befor)n(e)g(communicating)
+h(with)g(the)e(print)h(server)-7 b(,)27 b(and)0 4263
+y(the)c(print)h(server)f(would)g(be)h(given)g(the)f(ability)i(to)e(r)o
+(un)h(a)h(special)f(\002le-r)n(eading)g(pr)n(ogram)g(which)h(would)0
+4376 y(only)d(allow)i(\002les)e(to)g(be)h(r)n(ead)f(which)h(wer)n(e)f
+(listed)g(in)h(the)f(user)7 b('s)21 b(\002le)i(of)g(things)e(they'd)g
+(asked)h(to)g(print.)0 4546 y(Now)29 b(security)g(holes)h(in)g(most)g
+(of)g(the)f(printing)h(system)f(do)g(not)h(critically)i(af)n(fect)f
+(the)f(security)f(of)h(the)0 4659 y(entir)n(e)e(system:)37
+b(they)27 b(only)h(allow)h(the)e(attacker)h(to)g(r)n(ead)g(and)g
+(interfer)n(e)g(with)g(print)g(jobs.)44 b(Bugs)27 b(in)i(the)0
+4772 y(pr)n(ograms)20 b(r)o(un)h(by)g(the)f(print)h(server)f(to)g(r)n
+(ead)h(users')e(\002les)i(\(and)g(to)g(r)n(emove)f(entries)g(fr)n(om)h
+(the)f(list)h(of)g(\002les)0 4885 y(when)h(it)h(has)f(done)g(with)g
+(them\))h(will)h(still)f(be)f(serious,)f(but)i(this)f(pr)n(ogram)g(can)
+i(be)e(quite)h(simple.)0 5055 y(Similar)29 b(considerations)e(apply)g
+(to)g(many)h Fo(userv)p Fq(-based)d(versions)i(of)g(facilities)j(which)
+e(curr)n(ently)f(r)o(un)0 5167 y(as)c(r)n(oot.)0 5337
+y(It)h(is)h(debatable)g(whether)e(the)h(user)n(-contr)n(olled)g(state)f
+(should)h(be)h(kept)e(in)i(the)f(user)7 b('s)23 b(\002lespace)h(\(in)i
+(dot-)0 5450 y(\002les,)e(say\))g(or)g(kept)f(in)h(a)h(separate)e(ar)n
+(ea)i(set)e(aside)h(for)g(the)g(purpose;)e(however)-7
+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
+%%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
+b(.)0 3279 y(Ther)n(efor)n(e)25 b(if)j(ther)n(e)d(is)i(some)f(kind)g
+(of)g(err)n(or)g(it)h(is)g(possible)f(for)g(the)g(service-side)f(fd)i
+(to)f(give)g(pr)n(ematur)n(e)0 3392 y(end)g(of)h(\002le.)41
+b(If)27 b(it)g(is)g(important)f(to)g(tell)h(whether)f(all)i(of)f(the)f
+(intended)f(data)i(has)g(been)f(r)n(eceived)h(by)g(the)0
+3505 y(service)22 b(pr)n(ogram,)h(the)e(datastr)n(eam)i(must)f(contain)
+h(an)g(explicit)g(end-of-\002le)g(indication)g(of)g(some)e(kind.)0
+3671 y(For)j(example,)h(consider)f(a)h Fo(userv)e Fq(service)h(for)h
+(submitting)f(a)i(mail)g(message,)e(wher)n(e)g(message)f(is)i(sup-)0
+3784 y(plied)e(on)f(the)h(service's)f(stdin.)29 b(However)-7
+b(,)21 b(if)j(the)e(calling)j(pr)n(ocess)d(is)h(interr)o(upted)e(befor)
+n(e)i(it)g(has)g(written)0 3897 y(all)j(of)f(the)e(message,)h(the)f
+(service)i(pr)n(ogram)f(will)i(get)d(EOF)h(on)h(the)e(message)h(data.)
+33 b(In)24 b(a)i(naive)f(arrange-)0 4010 y(ment)i(this)g(would)g(cause)
+h(a)g(half-complete)g(message)e(to)h(be)h(sent.)41 b(T)-8
+b(o)27 b(pr)n(event)g(this,)h(it)g(is)g(necessary)e(to)0
+4122 y(adopt)e(some)h(kind)g(of)g(explicit)h(end)e(indication;)j(for)f
+(example,)f(the)g(end)f(of)h(the)g(message)f(could)h(be)g(sig-)0
+4235 y(nalled)31 b(by)f(a)h(dot)e(on)h(a)h(line)g(by)f(itself,)j(and)d
+(dots)f(doubled,)i(as)f(in)h(SMTP)-12 b(.)30 b(Then)f(the)h(service)g
+(pr)n(ogram)0 4348 y(would)e(know)g(when)h(the)f(entir)n(e)h(message)e
+(had)i(been)g(r)n(eceived,)h(and)f(could)g(avoid)g(queueing)f(incom-)0
+4461 y(plete)22 b(messages.)0 4811 y Fp(6.7)119 b(Don')n(t)30
+b(give)g(access)g(to)g(general-purpose)f(utilities)0
+5075 y Fq(Do)20 b(not)g(specify)g(general)g(purpose)e(pr)n(ograms)i
+(like)g Fo(mv)g Fq(or)g Fo(cat)f Fq(in)i Fo(execute-)16
+b Fq(dir)n(ectives)21 b(without)e(car)n(e-)0 5188 y(ful)31
+b(thought)e(about)h(their)g(ar)n(guments,)i(and)e(certainly)h(not)f(if)
+h Fo(no-suppress-arg)o(s)24 b Fq(is)31 b(speci\002ed.)50
+b(If)0 5301 y(you)22 b(do)g(so)g(it)g(will)i(give)f(the)f(caller)i
+(much)f(mor)n(e)f(privilige)i(than)e(you)g(pr)n(obably)h(intend.)p
+Black 0 5384 1507 4 v 134 5440 a Fg(1)p 0 TeXcolorgray
+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
+%%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
 %%Trailer
-%%DocumentNeededResources: font Courier-Bold
-%%+ font Times-Roman
-%%+ font Times-Italic
-%%+ font Times-Bold
-%%DocumentSuppliedResources: procset LoutStartUp
-%%+  procset LoutMarginNotes
-%%+ encoding vec2
-%%Pages: 22
+end
+userdict /end-hook known{end-hook}if
 %%EOF