chiark / gitweb /
@@ -1,8 +1,10 @@ debian_version_1_0_0
authorian <ian>
Mon, 6 Mar 2000 18:14:46 +0000 (18:14 +0000)
committerian <ian>
Mon, 6 Mar 2000 18:14:46 +0000 (18:14 +0000)
 userv (1.0.0) unstable; urgency=low

-  * Released out of beta (version number increased).
+  * Manpage userv(1) from Ben Harris.  (Debian bug #33777.)
+  * Released out of beta (version number change).
+  * Added a couple of things to .cvsignore.

- -- Ian Jackson <ian@davenant.greenend.org.uk>  Mon,  6 Mar 2000 17:13:13 +0000
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Mon,  6 Mar 2000 18:13:49 +0000

 userv (0.95.0) unstable; urgency=low

20 files changed:
.cvsignore
INSTALL
Makefile.in
README
debian/.cvsignore [new file with mode: 0644]
debian/changelog
debian/copyright
debian/rules
servexec.c
spec.html/ch-client.html
spec.html/ch-config.html
spec.html/ch-envir.html
spec.html/ch-intro.html
spec.html/ch-ipass.html
spec.html/ch-notes.html
spec.html/footnotes.html
spec.html/index.html
spec.ps
spec.sgml
userv.1 [new file with mode: 0644]

index f7324d14781735918c56abe6decb2fbaa723a811..e363f6639550d5cf6ada6929ad9ad11dc4b67474 100644 (file)
@@ -24,3 +24,4 @@ slash-etc
 shipcheck
 
 userv-*.tar.gz
 shipcheck
 
 userv-*.tar.gz
+build
diff --git a/INSTALL b/INSTALL
index 1399ae8af0e4c4a204432cfd468c13023a0807fe..681b61d3ceb6eb7c82d66d4e490ef73d4bf03371 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -231,7 +231,9 @@ COPYRIGHT
 This file, INSTALL, contains installation instructions and other
 details for userv.
 
 This file, INSTALL, contains installation instructions and other
 details for userv.
 
-userv is Copyright (C)1996-9 Ian Jackson <ian@davenant.greenend.org.uk>.
+userv is
+Copyright (C)1996-2000 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)2000      Ben Harris <bjh21@cam.ac.uk>
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
index eb162513118cb847dc678c4fa72ce6f2bcc668c7..0b430e86f73ab5859fefedca68b67d9abefa5db4 100644 (file)
@@ -39,6 +39,8 @@ INSTALL_DATA=@INSTALL_DATA@ $(INSTALL_FLAGS)
 prefix=@prefix@
 exec_prefix=$(prefix)
 bindir=$(exec_prefix)/bin
 prefix=@prefix@
 exec_prefix=$(prefix)
 bindir=$(exec_prefix)/bin
+mandir=$(prefix)/man
+man1dir=$(mandir)/man1
 sbindir=$(exec_prefix)/sbin
 etcdir=/etc
 etcsubdir=$(etcdir)/userv
 sbindir=$(exec_prefix)/sbin
 etcdir=/etc
 etcsubdir=$(etcdir)/userv
@@ -46,7 +48,9 @@ docdir=$(prefix)/userv
 
 TARGETS=       daemon client
 TARGETS_DOC_PS=        spec.ps overview.ps
 
 TARGETS=       daemon client
 TARGETS_DOC_PS=        spec.ps overview.ps
-TARGETS_DOC=   spec.html $(TARGETS_DOC_PS)
+TARGETS_DOC_RM=        $(TARGETS_DOC_PS) spec.html
+TARGETS_DOC=   $(TARGETS_DOC_PS) spec.html/index.html
+MAN1PAGES=     userv.1
 
 SOURCES=       Makefile.in configure.in acconfig.h                     \
                client.c common.h                                       \
 
 SOURCES=       Makefile.in configure.in acconfig.h                     \
                client.c common.h                                       \
@@ -79,14 +83,16 @@ install-strip:
 
 install-doc:   $(TARGETS_DOC)
                $(INSTALL) -d -m 2755 $(docdir) $(docdir)/spec.html
 
 install-doc:   $(TARGETS_DOC)
                $(INSTALL) -d -m 2755 $(docdir) $(docdir)/spec.html
+               $(INSTALL) -d -m 2755 $(mandir) $(man1dir)
                $(INSTALL_DATA) -m 644 $(TARGETS_DOC_PS) $(docdir)/.
                $(INSTALL_DATA) -m 644 spec.html/*.html $(docdir)/spec.html/.
                $(INSTALL_DATA) -m 644 $(TARGETS_DOC_PS) $(docdir)/.
                $(INSTALL_DATA) -m 644 spec.html/*.html $(docdir)/spec.html/.
+               $(INSTALL_DATA) -m 644 $(MAN1PAGES) $(man1dir)
 
 uninstall:
                rm -f $(bindir)/userv $(sbindir)/uservd
 
 uninstall-doc:
 
 uninstall:
                rm -f $(bindir)/userv $(sbindir)/uservd
 
 uninstall-doc:
-               cd $docdir && rm -rf $(TARGETS_DOC)
+               cd $docdir && rm -rf $(TARGETS_DOC_RM)
 
 daemon:                overlord.o process.o servexec.o parserlexer.o debug.o lib.o both.o
                $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
 
 daemon:                overlord.o process.o servexec.o parserlexer.o debug.o lib.o both.o
                $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
@@ -168,8 +174,8 @@ dist:                       dist-prep distclean
 linecount:     $(SOURCES)
                wc -l $^
 
 linecount:     $(SOURCES)
                wc -l $^
 
-%.html:                %.sgml
-               debiandoc2html $<
+%.html/index.html:     %.sgml
+                       debiandoc2html $<
 
 %.ps:          %.sgml
                debiandoc2ps -1 -O $< >$@.new && mv $@.new $@
 
 %.ps:          %.sgml
                debiandoc2ps -1 -O $< >$@.new && mv $@.new $@
diff --git a/README b/README
index 55fe762316a48c4537910c734103c75332685c31..3b6a57d0b09f0ff537e833062c79cb617b2021b6 100644 (file)
--- a/README
+++ b/README
@@ -21,7 +21,9 @@ userv-maint@chiark.greenend.org.uk, or to the userv-discuss mailing
 list if you are subscribed to it.
 
 
 list if you are subscribed to it.
 
 
-userv is Copyright (C)1996-9 Ian Jackson <ian@davenant.greenend.org.uk>.
+userv is
+Copyright (C)1996-2000 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)2000      Ben Harris <bjh21@cam.ac.uk>
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644 (file)
index 0000000..19fbb51
--- /dev/null
@@ -0,0 +1,3 @@
+tmp
+substvars
+files
index 55c72161cb02b589dcaf8f2b5b54fd33643263d5..db776d2f58ed49dd8c375bf69b586e1386456d90 100644 (file)
@@ -1,8 +1,10 @@
 userv (1.0.0) unstable; urgency=low
 
 userv (1.0.0) unstable; urgency=low
 
-  * Released out of beta (version number increased).
+  * Manpage userv(1) from Ben Harris.  (Debian bug #33777.)
+  * Released out of beta (version number change).
+  * Added a couple of things to .cvsignore.
 
 
- -- Ian Jackson <ian@davenant.greenend.org.uk>  Mon,  6 Mar 2000 17:13:13 +0000
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Mon,  6 Mar 2000 18:13:49 +0000
 
 userv (0.95.0) unstable; urgency=low
 
 
 userv (0.95.0) unstable; urgency=low
 
index e0c6649464fbaa32ce118cc7c595bfa3c4328d15..f2265a2ea8f4758920dabeac4ed0857851fa5d65 100644 (file)
@@ -12,7 +12,8 @@ scheme, by adding various debian/* files and arranging for the uservd
 daemon to be started automatically.
 
 
 daemon to be started automatically.
 
 
-Copyright (C)1996-1999 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)1996-2000 Ian Jackson <ian@davenant.greenend.org.uk>.
+Copyright (C)2000      Ben Harris <bjh21@cam.ac.uk>.
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
 
 userv is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
index f58644d851b779937edff65187e5212673b69e4a..569161e7fc5a7671e9f8fe66f95141003ff9d6b7 100755 (executable)
@@ -5,8 +5,7 @@ package=userv
 build:
        $(checkdir)
        ./configure --prefix=/usr
 build:
        $(checkdir)
        ./configure --prefix=/usr
-       $(MAKE)
-       $(MAKE) spec.html
+       $(MAKE) all docs
        touch build
 
 clean:
        touch build
 
 clean:
@@ -33,14 +32,16 @@ binary-arch:        checkroot build
        chmod +x debian/tmp/DEBIAN/{postinst,prerm,postrm}
        chmod +x debian/tmp/etc/init.d/userv
        $(MAKE) LDFLAGS=-s INSTALL_PROGRAM='install -c -s' \
        chmod +x debian/tmp/DEBIAN/{postinst,prerm,postrm}
        chmod +x debian/tmp/etc/init.d/userv
        $(MAKE) LDFLAGS=-s INSTALL_PROGRAM='install -c -s' \
-               prefix=debian/tmp/usr etcdir=debian/tmp/etc install
+               prefix=debian/tmp/usr etcdir=debian/tmp/etc \
+               docdir=debian/tmp/usr/doc/userv \
+               install install-doc
        cp debian/copyright debian/tmp/usr/doc/$(package)/.
        cp debian/changelog debian/tmp/usr/doc/$(package)/changelog
        cp README debian/tmp/usr/doc/$(package)/README.upstream
        cp system.default system.override debian/tmp/usr/doc/$(package)/examples
        cp debian/copyright debian/tmp/usr/doc/$(package)/.
        cp debian/changelog debian/tmp/usr/doc/$(package)/changelog
        cp README debian/tmp/usr/doc/$(package)/README.upstream
        cp system.default system.override debian/tmp/usr/doc/$(package)/examples
-       gzip -9v debian/tmp/usr/doc/$(package)/changelog
        ln -s changelog.gz debian/tmp/usr/doc/$(package)/changelog.Debian.gz
        ln -s changelog.gz debian/tmp/usr/doc/$(package)/changelog.Debian.gz
-       cp -a spec.html debian/tmp/usr/doc/$(package)/
+       gzip -9v debian/tmp/usr/doc/$(package)/changelog debian/tmp/usr/man/man1/*.1
+       rm debian/tmp/usr/doc/userv/*.ps
        dpkg-shlibdeps daemon client
        dpkg-gencontrol
        chown -R root.root debian/tmp
        dpkg-shlibdeps daemon client
        dpkg-gencontrol
        chown -R root.root debian/tmp
index ad877f42cc9cb7f2469d47a1b1a1cfab5efe522b..82b89e5470716f8e76438c46aff4fbcd4aa61b40 100644 (file)
@@ -71,7 +71,7 @@ void bisexec_version(const char *const *argv) {
   const unsigned char *p;
   int i;
   
   const unsigned char *p;
   int i;
   
-  printf("uservd version " VERSION VEREXT "; copyright (C)1996-1997 Ian Jackson.\n"
+  printf("uservd version " VERSION VEREXT "; copyright (C)1996-2000 Ian Jackson.\n"
 #ifdef DEBUG
         "DEBUGGING VERSION"
 #else
 #ifdef DEBUG
         "DEBUGGING VERSION"
 #else
index 6cee73e49da8c94e9cd89bac356f77c7cd0023ec..7ec4c71eb5394ca66b0e02ee65f67271c2b39cc4 100644 (file)
@@ -315,7 +315,7 @@ user will be the real calling user.
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index b14959f8cd0a46c06047a529f42cb3c08f73acae..4e8da1e3b2c0a9a6f47eed72914cc2d0614533de 100644 (file)
@@ -586,7 +586,7 @@ quit
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index 53b8cd534e2ae7dc7d00d7c3bc6f436aea95491a..8920ac6f88a9ba19e2fbedbb038ebd779406ae80 100644 (file)
@@ -182,7 +182,7 @@ user).
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index b3ef6c0d8ad32ba2c097ba6e8e0837f3257eccac..bcf44e4f2fa03acd58df4cfbe9ee4c0f9b850e12 100644 (file)
@@ -58,7 +58,7 @@ each other in any unexpected ways.
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index 1a527a863a35221f4f0de64c0c84a2cdf67656b4..82973191a042e0d101a0d6bd8d32e2d1261a3a48 100644 (file)
@@ -134,7 +134,7 @@ and the service.
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index d1a67bbb61c2ba97b0fa17c418aa40d6dd0b6d35..3954df5f0212efaa75b83cae63e8e771e61a0db5 100644 (file)
@@ -215,7 +215,7 @@ administrators have made similar mistakes with programs like
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index 5e9e8ce72b20b68423df69d21a1ae606dda5d077..2cb6cffea4d405ab9a23f09b2c11828bd7d4b08b 100644 (file)
@@ -44,7 +44,7 @@ specified by the system administrator.
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
index 20321ebe04cadf11d9a5463ea0d4582a9abf369a..007d2e6680f47f6c7da178b3a6aceb7c2d55db06 100644 (file)
@@ -101,7 +101,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 User service daemon and client specification<br>
 
 <address>
 User service daemon and client specification<br>
 
 <address>
-0.95.0<br>
+1.0.0<br>
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
 Ian Jackson <a href="mailto:ian@davenant.greenend.org.uk">ian@davenant.greenend.org.uk</a>
 </address>
 
diff --git a/spec.ps b/spec.ps
index b37092ccb90bd42d07de3afd1a35e2993201b0f9..7f8ffe877675247b5879ce86c7bc64807d1e7d0c 100644 (file)
--- a/spec.ps
+++ b/spec.ps
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: Basser Lout Version 3.10 (November 1996)
 %!PS-Adobe-3.0
 %%Creator: Basser Lout Version 3.10 (November 1996)
-%%CreationDate: Tue Nov  9 23:32:19 1999
+%%CreationDate: Mon Mar  6 18:14:17 2000
 %%DocumentData: Binary
 %%DocumentNeededResources: (atend)
 %%DocumentMedia: Plain 595 842 0 white ()
 %%DocumentData: Binary
 %%DocumentNeededResources: (atend)
 %%DocumentMedia: Plain 595 842 0 white ()
@@ -268,8 +268,8 @@ grestore
 0.6953 1.0000 scale
 200 fnt31 1031 -43(<ian@davenant.greenend.org.uk>)m 
 grestore
 0.6953 1.0000 scale
 200 fnt31 1031 -43(<ian@davenant.greenend.org.uk>)m 
 grestore
-240 fnt82 4235 12752(0.95.0)m
-9066 609 0 609 240 240 60 0 11490 LoutGr2
+240 fnt82 4295 12755(1.0.0)m
+9066 609 0 609 240 240 60 0 11495 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -278,12 +278,12 @@ closepath fill
 grestore
 320 fnt84 0 5(0.1.)m 628(Abstract)s 
 grestore
 grestore
 320 fnt84 0 5(0.1.)m 628(Abstract)s 
 grestore
-0 11196(This)m 476(is)s
+0 11201(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
 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 10956(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 9932 LoutGr2
+7628(another)s 8405(when)s 0 10961(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 9937 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -294,53 +294,53 @@ grestore
 0 66(0.2.)m 628(Copyright)s 2109(Notice)s 
 grestore
 gsave
 0 66(0.2.)m 628(Copyright)s 2109(Notice)s 
 grestore
 gsave
-0 9692 translate
+0 9697 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m
 
 grestore
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m
 
 grestore
-560 9638(is)m 770(Cop)s 2(yright)k 1799(1996-1999)s 2889(Ian)s
+560 9643(is)m 770(Cop)s 2(yright)k 1799(1996-1999)s 2889(Ian)s
 3251(Jackson.)s gsave
 3251(Jackson.)s gsave
-0 9284 translate
+0 9289 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
-544 9230(is)m 737(free)s
+544 9235(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
 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 8990(Public)m 659(License)s 1453(as)s 1698(published)s
+8315(General)s 0 8995(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
 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 8750(\(at)m 311(your)s 810(option\))s 1550(an)s 3(y)k
-1947(later)s 2430(v)s 3(ersion.)k 0 8342(This)m 476(program)s
+0 8755(\(at)m 311(your)s 810(option\))s 1550(an)s 3(y)k
+1947(later)s 2430(v)s 3(ersion.)k 0 8347(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
 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 8344(without)m
-6898(any)s 7300(warr)s 3(anty)k 240 fnt82 8171 8342(;)m
-8283(without)s 0 8101(e)m 6(v)k 3(en)k 500(the)s
+5063(useful,)s 5754(b)s 4(ut)k 240 fnt83 6116 8349(without)m
+6898(any)s 7300(warr)s 3(anty)k 240 fnt82 8171 8347(;)m
+8283(without)s 0 8106(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
 848(implied)s 1636(w)s 2(arranty)k 2537(of)s 240 fnt83
-2808 8103(mer)m 8(c)k 3(hantability)k 240 fnt82 4367 8101(or)m
-240 fnt83 4626 8103(\207tness)m 5279(for)s 5623(a)s 5798(particular)s
-6833(purpose)s 240 fnt82 7598 8101(.)m 7702(See)s 8103(the)s
-8451(GNU)s 0 7861(General)m 811(Public)s 1475(License)s 2274(for)s
-2612(more)s 3159(details.)s 0 7453(Y)m 26(ou)k 442(should)s
+2808 8108(mer)m 8(c)k 3(hantability)k 240 fnt82 4367 8106(or)m
+240 fnt83 4626 8108(\207tness)m 5279(for)s 5623(a)s 5798(particular)s
+6833(purpose)s 240 fnt82 7598 8106(.)m 7702(See)s 8103(the)s
+8451(GNU)s 0 7866(General)m 811(Public)s 1475(License)s 2274(for)s
+2612(more)s 3159(details.)s 0 7458(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
 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 7507 translate
+7697 7512 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 8197(;)s 8309(if)s 8526(not,)s
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 8197(;)s 8309(if)s 8526(not,)s
-0 7212(write)m 546(to)s 785(the)s 1133(Free)s 1613(Soft)s
+0 7217(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
 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 6972(USA.)m 9066 610 0 610 240 240 60 0 6008 LoutGr2
+7283(MA)s 7726(02111-1307,)s 0 6977(USA.)m 9066 610 0 610 240 240 60 0 6013 LoutGr2
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
 newpath 0 ysize 0.3 ft sub moveto
 xsize 0 rlineto
 0 0.1 ft rlineto
@@ -350,55 +350,55 @@ grestore
 320 fnt84 0 6(0.3.)m
 628(Contents)s 
 grestore
 320 fnt84 0 6(0.3.)m
 628(Contents)s 
 grestore
-0 5714(1.)m 1200(Introduction)s 8962(3)s 0 5487(2.)m
-1200(Client)s 1844(program)s 2714(usage)s 8952(4)s 0 5250(2.1.)m
-1200(Options)s 8952(4)s 0 5013(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k
-3118(options)s 8958(7)s 0 4776(3.)m 1200(Ex)s 3(ecution)k
+0 5719(1.)m 1200(Introduction)s 8962(3)s 0 5492(2.)m
+1200(Client)s 1844(program)s 2714(usage)s 8952(4)s 0 5255(2.1.)m
+1200(Options)s 8952(4)s 0 5018(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k
+3118(options)s 8958(7)s 0 4781(3.)m 1200(Ex)s 3(ecution)k
 2224(en)s 9(vironment)k 3484(of)s 3755(the)s 4103(service)s
 2224(en)s 9(vironment)k 3484(of)s 3755(the)s 4103(service)s
-4835(program)s 8959(8)s 0 4539(3.1.)m 1200(File)s 1627(descriptors)s
-8959(8)s 0 4302(3.2.)m 1200(En)s 9(vironment)k 8955(9)s
-0 4075(4.)m 1200(Service-side)s 2436(con\207guration)s 8831(10)s 0 3838(4.1.)m
-1200(Con\207guration)s 2587(\207le)s 2948(syntax)s 8831(10)s 0 3601(4.2.)m
+4835(program)s 8959(8)s 0 4544(3.1.)m 1200(File)s 1627(descriptors)s
+8959(8)s 0 4307(3.2.)m 1200(En)s 9(vironment)k 8955(9)s
+0 4080(4.)m 1200(Service-side)s 2436(con\207guration)s 8831(10)s 0 3843(4.1.)m
+1200(Con\207guration)s 2587(\207le)s 2948(syntax)s 8831(10)s 0 3606(4.2.)m
 1200(Con\207guration)s 2587(\207le)s 2948(directi)s 6(v)k 3(es)k
 1200(Con\207guration)s 2587(\207le)s 2948(directi)s 6(v)k 3(es)k
-8831(10)s 0 3363(4.3.)m 1200(Errors)s 1847(in)s 2090(the)s
-2438(con\207guration)s 3771(\207le)s 8833(16)s 0 3125(4.4.)m 1200(Def)s 2(aults)k
-8833(16)s 0 2898(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 2660(6.)m
+8831(10)s 0 3368(4.3.)m 1200(Errors)s 1847(in)s 2090(the)s
+2438(con\207guration)s 3771(\207le)s 8833(16)s 0 3130(4.4.)m 1200(Def)s 2(aults)k
+8833(16)s 0 2903(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 2665(6.)m
 1200(Applications)s 2473(and)s 2877(notes)s 3433(on)s 3730(use)s
 1200(Applications)s 2473(and)s 2877(notes)s 3433(on)s 3730(use)s
-8831(20)s 0 2422(6.1.)m 1200(Standard)s 2108(services)s 2928(and)s
-3332(directory)s 4248(management)s 8831(20)s 0 2184(6.2.)m 1200(Reducing)s
+8831(20)s 0 2427(6.1.)m 1200(Standard)s 2108(services)s 2928(and)s
+3332(directory)s 4248(management)s 8831(20)s 0 2189(6.2.)m 1200(Reducing)s
 2171(the)s 2519(number)s 3310(of)s 3581(absolutely)s 4618(pri)s 6(vile)k 3(ged)k
 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 1946(6.3.)m 1200(Do)s 1546(not)s
+5636(subsystems)s 8831(20)s 0 1951(6.3.)m 1200(Do)s 1546(not)s
 1912(gi)s 6(v)k 3(e)k 2371(a)s 3(w)k 2(ay)k
 2925(e)s 3(xcessi)k 6(v)k 3(e)k 3885(pri)s 6(vile)k 3(ge)k
 4781(to)s gsave
 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 2000 translate
+5020 2005 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 5520(-using)s 6171(f)s 2(acilities)k
 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 1708(6.4.)m gsave
-1200 1762 translate
+8831(20)s 0 1713(6.4.)m gsave
+1200 1767 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 1760(is)s
 1970(not)s 2336(a)s 2502(replacement)s 3729(for)s gsave
 0.6953 1.0000 scale
 240 fnt31 0 -52(userv)m 
 grestore
 1760(is)s
 1970(not)s 2336(a)s 2502(replacement)s 3729(for)s gsave
-4067 1762 translate
+4067 1767 translate
 0.6953 1.0000 scale
 240 fnt31
 0 -52(really)m 
 grestore
 4727(and)s gsave
 0.6953 1.0000 scale
 240 fnt31
 0 -52(really)m 
 grestore
 4727(and)s gsave
-5131 1762 translate
+5131 1767 translate
 0.6953 1.0000 scale
 240 fnt31 0 -52(sudo)m 
 grestore
 8851(21)s
 0.6953 1.0000 scale
 240 fnt31 0 -52(sudo)m 
 grestore
 8851(21)s
-0 1469(6.5.)m 1200(Don')s 4(t)k 1814(gi)s 6(v)k 3(e)k
+0 1474(6.5.)m 1200(Don')s 4(t)k 1814(gi)s 6(v)k 3(e)k
 2273(access)s 2934(to)s 3173(general-purpose)s 4769(utilities)s 8851(21)s
 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
 2273(access)s 2934(to)s 3173(general-purpose)s 4769(utilities)s 8851(21)s
 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
-3052(speci\207cation)s 8471(0.95.0)s 
+3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -435,7 +435,7 @@ gsave
 gsave
 0 LoutMargSet
 grestore
 gsave
 0 LoutMargSet
 grestore
-240 fnt84 0 13842(2)m 240 fnt82 0 52(0.95.0)m 4809(User)s
+240 fnt84 0 13842(2)m 240 fnt82 0 52(1.0.0)m 4809(User)s
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
@@ -523,7 +523,7 @@ grestore
 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
 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
-8471(0.95.0)s 
+8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -878,20 +878,20 @@ grestore
 240 fnt31
 0 -52(write)m 
 grestore
 240 fnt31
 0 -52(write)m 
 grestore
-1134 0 0 0 240 240 60 0 949 LoutGr2
+1134 0 0 0 240 240 60 0 947 LoutGr2
 0 0 moveto xsize 0 lineto stroke
 grestore
 
 grestore
 0 0 moveto xsize 0 lineto stroke
 grestore
 
 grestore
-122 fnt82 0 754(1)m gsave
-58 727 translate
+122 fnt82 0 752(1)m gsave
+58 725 translate
 0.6953 1.0000 scale
 192 fnt31 0 -42(userv)m
 
 grestore
 0.6953 1.0000 scale
 192 fnt31 0 -42(userv)m
 
 grestore
-192 fnt82 505 684(is)m 673(short)s 1103(for)s 1373(`user)s
+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
 1802(services',)s 2566(and)s 2890(is)s 3058(pronounced)s 4010(`you-serv)s 2(e'.)k
-240 fnt82 0 52(0.95.0)m 4809(User)s 5320(service)s 6052(daemon)s
+240 fnt82 0 52(1.0.0)m 4809(User)s 5320(service)s 6052(daemon)s
 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
@@ -1373,7 +1373,7 @@ grestore
 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
 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
-8471(0.95.0)s 
+8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -1715,7 +1715,7 @@ grestore
 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
 1693(calling)s 2396(process')s 13(s)k 3323(current)s 4059(directory)s
 4975(name)s 5549(from)s 6073(being)s 6658(passed)s 7354(to)s
 7593(the)s 7941(service;)s 8729(the)s 480 956(null)m 907(string)s
-1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(0.95.0)m
+1504(will)s 1930(be)s 2212(passed)s 2908(instead.)s 0 52(1.0.0)m
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
@@ -1928,7 +1928,7 @@ grestore
 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
 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 8471(0.95.0)s 
+3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -2185,7 +2185,7 @@ 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
 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(0.95.0)m
+5675(writing)s 6418(\207ledescriptors)s 7822(remain)s 8542(open)s 0 52(1.0.0)m
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
@@ -2412,7 +2412,7 @@ grestore
 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
 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 8471(0.95.0)s 
+2462(client)s 3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -2663,7 +2663,7 @@ grestore
 628(Con\207guration)s 2618(\207le)s 3100(dir)s 5(ecti)k 3(v)k 3(es)k
 
 grestore
 628(Con\207guration)s 2618(\207le)s 3100(dir)s 5(ecti)k 3(v)k 3(es)k
 
 grestore
-0 52(0.95.0)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
+0 52(1.0.0)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s
 7271(client)s 7861(speci\207cation)s 
 grestore
 
 7271(client)s 7861(speci\207cation)s 
 grestore
 
@@ -3032,7 +3032,7 @@ grestore
 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
 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 8471(0.95.0)s 
+2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -3338,7 +3338,7 @@ grestore
 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
 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(0.95.0)m 4809(User)s 5320(service)s
+7199(parameter)s 8213(\(leading)s 0 52(1.0.0)m 4809(User)s 5320(service)s
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
@@ -3683,7 +3683,7 @@ grestore
 
 grestore
 8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
 
 grestore
 8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s
-2462(client)s 3052(speci\207cation)s 8471(0.95.0)s 
+2462(client)s 3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -3985,7 +3985,7 @@ grestore
 240 fnt31
 0 -52(catch\211quit)m 
 grestore
 240 fnt31
 0 -52(catch\211quit)m 
 grestore
-5645(\).)s 0 52(0.95.0)m 4809(User)s 5320(service)s
+5645(\).)s 0 52(1.0.0)m 4809(User)s 5320(service)s
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
@@ -4401,7 +4401,7 @@ grestore
 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
 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 8471(0.95.0)s 
+2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -4622,7 +4622,7 @@ grestore
 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
 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(0.95.0)m 4809(User)s
+2397(as)s 2647(follo)s 6(ws:)k 0 52(1.0.0)m 4809(User)s
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
@@ -4704,7 +4704,7 @@ grestore
 0 -772(quit)m 
 grestore
 0 52(User)m 511(service)s
 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 8471(0.95.0)s
+1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s
 
 grestore
 
 
 grestore
 
@@ -5002,7 +5002,7 @@ 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
 8188(v)s 6(ariable.)k 480 887(This)m 946(grants)s 1570(no)s
 1852(special)s 2560(access)s 3210(to)s 3438(that)s 3846(directory)s
 4751(unless)s 5389(it)s 5571(is)s 5770(a)s 5925(subdirectory)s
-7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(0.95.0)m
+7164(of)s 7424(a)s 7579(directory)s 8484(which)s 0 52(1.0.0)m
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s
 7861(speci\207cation)s 
 grestore
@@ -5101,7 +5101,7 @@ grestore
 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
 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 8471(0.95.0)s 
+3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -5396,7 +5396,7 @@ grestore
 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
 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 52(0.95.0)m 4809(User)s
+8055(lik)s 2(e)k 8467(it.)s 0 52(1.0.0)m 4809(User)s
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s
 
 grestore
@@ -5644,24 +5644,24 @@ grestore
 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
 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 1134 0 0 0 240 240 60 0 1179 LoutGr2
+8078(similar)s 1134 0 0 0 240 240 60 0 1177 LoutGr2
 0 0 moveto xsize 0 lineto stroke
 grestore
 
 grestore
 0 0 moveto xsize 0 lineto stroke
 grestore
 
 grestore
-122 fnt82 0 984(1)m gsave
-58 957 translate
+122 fnt82 0 982(1)m gsave
+58 955 translate
 0.6953 1.0000 scale
 192 fnt31 0 -42(sudo)m
 
 grestore
 0.6953 1.0000 scale
 192 fnt31 0 -42(sudo)m
 
 grestore
-192 fnt82 425 914(is)m 593(a)s 726(program)s 1422(which)s
+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
 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 684(the)m 279(system)s 858(administrator)s 10(.)k 240 fnt82
+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
 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s
-3052(speci\207cation)s 8471(0.95.0)s 
+3052(speci\207cation)s 8591(1.0.0)s 
 grestore
 
 grestore
 grestore
 
 grestore
@@ -5706,7 +5706,7 @@ grestore
 240 fnt31
 0 -52(sudo)m 
 grestore
 240 fnt31
 0 -52(sudo)m 
 grestore
-3133(.)s 0 52(0.95.0)m 4809(User)s 5320(service)s
+3133(.)s 0 52(1.0.0)m 4809(User)s 5320(service)s
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s 
 grestore
 
index 9444d5a12e36c08031e18be76ce98623fabfd614..e06e28e3b38aa8e2e463dc87985b84bfb11afa1f 100644 (file)
--- a/spec.sgml
+++ b/spec.sgml
@@ -3,7 +3,7 @@
 <book>
 <title>User service daemon and client specification
 <author>Ian Jackson <email>ian@davenant.greenend.org.uk
 <book>
 <title>User service daemon and client specification
 <author>Ian Jackson <email>ian@davenant.greenend.org.uk
-<version>0.95.0</version>
+<version>1.0.0</version>
 
 <abstract>
 This is a specification for a Unix system facility to allow one
 
 <abstract>
 This is a specification for a Unix system facility to allow one
diff --git a/userv.1 b/userv.1
new file mode 100644 (file)
index 0000000..67a8b2b
--- /dev/null
+++ b/userv.1
@@ -0,0 +1,463 @@
+.\"
+.\" This manpage is copyright, like the rest of userv, - see the
+.\" copyright section, below.
+.Dd November 3, 1999
+.Dt USERV 1
+.Os "userv 1.0.0"
+.Sh NAME
+.Nm userv
+.Nd request user services
+.Sh SYNOPSIS
+.Nm userv
+.Op Ar option ...
+.Op Fl -
+.Ar service-user
+.Ar service-name
+.Op Ar argument ...
+.Nm userv
+.Op Ar option ...
+.Fl B | -builtin
+.Op Fl -
+.Ar builtin-service
+.Bk -words
+.Op Ar info-argument ...
+.Ek
+.Sh DESCRIPTION
+.Nm userv
+is used to have a task performed under different userid while
+maintaining limited trust between caller and callee.
+
+.Ar service-user
+specifies which user account is to perform the task.  The user may be
+a login name or a numeric uid, or
+.Ql -
+to indicate that the service user is to be the same as the calling
+user.
+
+The service name is interpreted by the userv daemon on behalf of the
+service user.  This is controlled by configuration files in the
+service user's filespace; consult the userv specification for details.
+.Ss Options
+Single-letter options may be combined as is usual with Unix programs,
+and the value for such an option may appear in the same argument or in
+the next.
+.Bl -tag -width Fl
+.It Fl B | -builtin
+Requests that a builtin service be provided.  This is equivalent to
+using the
+.Fl -override
+option to specify a string consisting of
+.Ql execute-builtin
+followed by the
+.Ar builtin-service
+requested, and requesting a service user of 
+.Ql -
+(indicating the calling user).
+
+If the builtin service being requested requires a
+.Ar service-argument
+then this must be supplied to the client in the
+same argument as the
+.Ar builtin-service .
+See the specification, or the output of
+.Bd -literal -offset indent -compact
+userv -B help
+.Ed
+for details of the builtin services available,
+and below for details of the
+.Fl -override
+options.
+
+The actual service name passed will be the
+.Ar builtin-service ;
+note
+that this actual service name (as opposed to the override data) and
+the
+.Ar info-argument Ns s
+supplied will be ignored by most builtin
+services; the override mechanism and
+.Ql execute-builtin
+will be
+used to ensure that the right builtin service is called with the right
+.Ar service-argument Ns s .
+.It Xo
+.Fl f | -file
+.Sm off
+.Ar fd Oo Ar fdmodifiers Oc = Ar filename
+.Sm on
+.Xc
+Requests that data be copied in and out of the service using pipes.
+For each file or descriptor this will be done by creating a pipe, one
+end of which is passed to the service program and the other end of
+which is passed to a copy of
+.Nm cat
+invoked by the client; the other file descriptor passed to
+.Nm cat
+will be one inherited by the client program from the caller or one
+opened by the client program on behalf of the caller.
+
+The descriptor in the service program that should be connected must be
+specified as
+.Ar fd ,
+either as a decimal number or as one of the
+strings
+.Ql stdin ,
+.Ql stdout
+or
+.Ql stderr .
+The next argument is a filename which will be opened by the client
+with the privileges of the calling user.
+
+.Ar modifiers
+is used to specify whether the file or descriptor is to be read from
+or written to.  It consists of a series of words separated by commas.
+A comma may separate the
+.Ar modifiers
+from
+the
+.Ar fd
+and is required if
+.Ar fd
+is not numeric.
+The modifier words are:
+.Bl -tag -width Li
+.It Ic read
+.Dv O_RDONLY :
+Allow reading and not writing.  May not be used with
+.Ql write
+or things that imply it.
+.It Ic write
+.Dv O_WRONLY :
+Allow writing and not reading.
+.Em Doesn't truncate or create
+without
+.Ql truncate
+or
+.Ql create .
+.Ql write
+or things that imply it may not be used with
+.Ql read .
+.It Ic overwrite
+Equivalent to
+.Ql write,create,truncate .
+.It Ic create ,  creat
+.Dv O_CREAT :
+Creates the file if necessary.  Implies
+.Ql write .
+.It Ic exclusive , excl
+.Dv O_TRUNC:
+Truncate any existing file.  Implies
+.Ql write .
+May not be used with
+.Ql exclusive .
+.It Ic append
+.Dv O_APPEND :
+All writes will append to the file.  Implies
+.Ql write
+(but not
+.Ql create ) .
+.It Ic sync
+.Dv O_SYNC :
+Do writes synchronously.  Implies
+.Ql write .
+.It Ic wait , nowait , close
+These modifiers control the behaviour of the client, with respect to
+the pipes carrying data to and from the service, when the service
+terminates.  See below.
+.It Ic fd
+The
+.Ar filename
+is not a filename but a numeric file descriptor.
+One or both of
+.Ql read
+and
+.Ql write
+must be specified, and no
+other words are allowed.  The
+.Ar filename
+may also be
+.Ql stdin ,
+.Ql stdout
+or
+.Ql stderr
+for file descriptor 0, 1 or 2 respectively.
+.El
+
+If no
+.Ar modifiers
+which imply
+.Ql read
+or
+.Ql write
+are used it is as if
+.Ql write
+had been specified, except that if the filedescriptor 0 of the service
+is being opened (either specified numerically or with
+.Ql stdin )
+it is as if
+.Ql overwrite
+had been specified (or
+.Ql write
+if only
+.Ql fd
+was specified).
+
+The client will also use
+.Dv O_NOCTTY
+when opening files specified by the caller, to avoid changing its
+controlling terminal.
+
+By default
+.Va stdin ,
+.Va stdout
+and
+.Va stderr
+of the service will be connected to the corresponding descriptors on
+the client.  Diagnostics from the client and daemon will also appear
+on
+.Va stderr .
+
+If
+.Ql wait
+is specified, the client will wait for the pipe to be closed, and only
+exit after this has happened.  This means that either the receiving
+end of the pipe connection was closed while data was still available
+at the sending end, or that the end of file was reached on the reading
+file descriptor.  Errors encountered reading or writing in the client
+at this stage will be considered a system error and cause the client
+to exit with status 255, but will not cause disconnection at the
+service side since the service has already exited.
+
+If
+.Ql close
+is specified the client will immediately close the pipe connection by
+killing the relevant copy of
+.Nm cat .
+If the service uses the descriptor it will get
+.Dv SIGPIPE
+(or
+.Er EPIPE )
+for a writing descriptor or end of file for a reading one; the
+descriptor opened by or passed to the client will also be closed.
+
+If
+.Ql nowait
+is specified then the client will not wait and the
+connection will remain open after the client terminates.  Data may
+continue to be passed between the inheritors of the relevant
+descriptor on the service side and the corresponding file or
+descriptor on the client side until either side closes their
+descriptor.  This should not usually be specified for
+.Va stderr
+(or
+.Va stdout
+if
+.Ql "--signals stdout"
+is used) since diagnostics from the service side may arrive after the
+client has exited and be confused with expected output.
+
+The default is
+.Ql wait
+for writing file descriptors and
+.Ql close
+for reading ones.
+.It Xo
+.Fl w | -fdwait
+.Ar fd Ns = Ns Ar action
+.Xc
+Sets the action on termination of the service for the specified file
+descriptor;
+.Ar action
+must be
+.Ql wait ,
+.Ql nowait
+or
+.Ql close
+as described above.  The file descriptor must be specified as open
+when this option is encountered; this option is overridden by any
+later
+.Fl -file
+or
+.Fl -fdwait
+option - even by a
+.Fl -file
+which does not specify an action on termination (in this case the
+default will be used, as described above).
+.It Xo
+.Fl D | -defvar
+.Ar name Ns = Ns Ar value
+.Xc
+Set a user-defined variable
+.Ar name
+to
+.Ar value .
+These
+user-defined variables are made available in the configuration
+language as the parameters
+.Ql u- Ns Ar name
+and are passed to the
+service in environment variables
+.Ev USERV_U_ Ns Ar name .
+.Ar name
+may contain only alphanumerics and underscores, and must start with a
+letter.  If several definitions are given for the same
+.Ar name
+then only the last is effective.
+.It Fl t | -timeout Ar seconds
+Time out the service if it takes longer than
+.Ar seconds
+seconds (a positive integer, in decimal).  Timeout will produce a
+diagnostic on stderr and an exit status of 255.  If
+.Ar seconds
+is zero then no timeout will be implemented (this is the default).
+.It Fl S | -signals Ar method
+Affects the handling of the exit status when the service terminates
+due to a signal.  (The client will always finish by calling
+.Fn _exit ,
+so that only numbers from 0 to 255 can be returned and not the full
+range of numbers and signal indications which can be returned by the
+.Fn wait
+family of system calls.)
+
+The
+.Ar method
+may be one of the following:
+.Bl -tag -width Li
+.It Ar status
+The client's exit status will be
+.Ar status .
+This will not be distinguishable from the service really having exited
+with code
+.Ar status .
+This method is the default, with a
+.Ar status
+of 254.
+.It Ic number , number-nocore
+The client's exit status will be the number of the signal which caused
+the termination of the service.  If
+.Ql number
+is used rather than
+.Ql number-nocore
+then 128 will be added if the service dumped core.
+.Ql number
+is very like the exit code mangling done by the Bourne shell.
+.It Ic highbit
+The client's exit status will be the number of the signal with 128
+added.  If the service exits normally with an exit code of greater
+than 127 then 127 will be returned.
+.It Ic stdout
+The service's numeric wait status as two decimal numbers (high byte
+first) and a textual description of its meaning will be printed to the
+client's standard output.  It will be preceded by a newline and
+followed by an extra newline, and the numbers are separated from each
+other and from the textual description by single spaces.  The exit
+status of the client will be zero, unless a system error occurs in
+which case no exit status and description will be printed to
+.Va stdout ,
+and an error message will be printed to
+.Va stderr
+as usual.
+
+Problems such as client usage errors, the service not being found or
+permission being denied or failure of a system call are system errors.
+An error message describing the problem will be printed on the
+client's
+.Va stderr ,
+and the client's exit status will be 255.  If the client dies due to a
+signal this should be treated as a serious system error.
+.El
+.It Fl H | -hidecwd
+Prevents the calling process's current directory name from being
+passed to the service; the null string will be passed instead.
+.It Fl P | -sigpipe
+If the service program is terminated due to a
+.Dv SIGPIPE
+the exit status of the client will be zero, even if it would have been
+something else according to the exit status method specified.  This
+option has no effect on the code and description printed if the exit
+status method
+.Ql stdout
+is in use.
+.It Fl h | -help
+Prints the client's usage message.
+.It Fl -copyright
+Prints the copyright and lack of warranty notice.
+.El
+.Ss Security-overriding options
+There are also some options which are available for debugging and to
+allow the system administrator to override a user's policy.  These
+options are available only if the client is called by root or if the
+calling user is the same as the service user.
+.Bl -tag -width Fl
+.It Fl -override Ar configuration-data
+.It Fl -override-file Ar file
+Do not read the usual configuration files.  Instead, the client sends
+.Ar configuration-data
+(followed by a newline) or the contents of
+.Ar filename
+(which is opened in the context of the client) to the daemon and the
+daemon uses that data instead.  The
+.Ar configuration-data
+must all be in one argument.  It will have a single newline appended
+so that a single directive can easily be given, but if more than one
+directive is required it will have to contain one or more real
+newlines.
+.It Fl -spoof-user Ar user
+Pretend to the service that it is being called by
+.Ar user
+(which may be a username or a uid).  This will also affect the group
+and supplementary groups supplied to the service; they will be the
+standard group and supplementary groups for
+.Ar user .
+The
+.Fl -spoof-user
+option will
+.Em not
+affect which user is chosen if the service user is specified as just
+.Ql - ;
+in this case the service user will be the real calling user.
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width Ev
+.It Ev LOGNAME , USER
+These are used to determine the name of the calling user, to be passed
+to the service in
+.Ev USERV_USER .
+Their values will only be used if they correspond to the calling UID.
+.Sh FILES
+.Bl -tag -width Pa
+.It Pa /var/run/userv/socket
+.Ux Ns -domain
+socket used for communication between
+.Nm
+and
+.Nm uservd .
+.It Pa /var/run/userv/%x.%x.%x
+Pipes used for connecting file descriptors in the client and the
+service.
+.El
+.Sh SEE ALSO
+.Xr uservd 8
+.Rs
+.%T "User service daemon and client specification"
+.%A Ian Jackson
+.Re
+.Sh COPYRIGHT
+GNU userv is Copyright (C)1996-2000 Ian Jackson, except that this
+manpage is Copyright (C)2000 Ben Harris.
+
+GNU userv is licensed under the terms of the GNU General Public
+Licence, version 2 or (at your option) any later version, and it comes
+with NO WARRANTY, not even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for details.
+
+You should have received a copy of the GNU General Public License
+along with userv, if not, write to the Free Software Foundation, 59
+Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.Sh HISTORY
+.Nm
+was initially written in 1996 by Ian Jackson.  It became
+.Tn GNU
+.Nm
+in 1999, and version 1.0 was released in 2000.