diff -ruN userv-0.65.2/.cvsignore userv-1.0.0/.cvsignore --- userv-0.65.2/.cvsignore Sun Apr 18 19:15:12 1999 +++ userv-1.0.0/.cvsignore Mon Mar 6 18:14:46 2000 @@ -24,3 +24,4 @@ shipcheck userv-*.tar.gz +build diff -ruN userv-0.65.2/INSTALL userv-1.0.0/INSTALL --- userv-0.65.2/INSTALL Thu May 20 00:13:44 1999 +++ userv-1.0.0/INSTALL Mon Mar 6 18:14:46 2000 @@ -231,7 +231,9 @@ This file, INSTALL, contains installation instructions and other details for userv. -userv is Copyright (C)1996-9 Ian Jackson . +userv is +Copyright (C)1996-2000 Ian Jackson . +Copyright (C)2000 Ben Harris 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 -ruN userv-0.65.2/Makefile.in userv-1.0.0/Makefile.in --- userv-0.65.2/Makefile.in Thu May 20 00:13:45 1999 +++ userv-1.0.0/Makefile.in Mon Mar 6 18:14:46 2000 @@ -39,6 +39,8 @@ prefix=@prefix@ exec_prefix=$(prefix) bindir=$(exec_prefix)/bin +mandir=$(prefix)/man +man1dir=$(mandir)/man1 sbindir=$(exec_prefix)/sbin etcdir=/etc etcsubdir=$(etcdir)/userv @@ -46,7 +48,9 @@ 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 \ @@ -79,14 +83,16 @@ 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 $(MAN1PAGES) $(man1dir) 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) @@ -168,8 +174,8 @@ linecount: $(SOURCES) wc -l $^ -%.html: %.sgml - debiandoc2html $< +%.html/index.html: %.sgml + debiandoc2html $< %.ps: %.sgml debiandoc2ps -1 -O $< >$@.new && mv $@.new $@ diff -ruN userv-0.65.2/README userv-1.0.0/README --- userv-0.65.2/README Thu Apr 8 00:43:57 1999 +++ userv-1.0.0/README Mon Mar 6 18:14:46 2000 @@ -21,7 +21,9 @@ list if you are subscribed to it. -userv is Copyright (C)1996-9 Ian Jackson . +userv is +Copyright (C)1996-2000 Ian Jackson . +Copyright (C)2000 Ben Harris 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 -ruN userv-0.65.2/daemon.h userv-1.0.0/daemon.h --- userv-0.65.2/daemon.h Thu May 20 00:13:47 1999 +++ userv-1.0.0/daemon.h Sun Nov 7 15:39:53 1999 @@ -111,7 +111,7 @@ #define ERRMSG_RESERVE_ERRNO 128 int parse_string(const char *string, const char *descrip, int isinternal); -void parseerrprint(const char *fmt, ...) PRINTFFORMAT(1,2); +int parseerrprint(const char *fmt, ...) PRINTFFORMAT(1,2); void ensurelogopen(int wantfacility); void ensurefdarray(int fd); const char *printtoken(int token); diff -ruN userv-0.65.2/debian/.cvsignore userv-1.0.0/debian/.cvsignore --- userv-0.65.2/debian/.cvsignore Thu Jan 1 01:00:00 1970 +++ userv-1.0.0/debian/.cvsignore Mon Mar 6 18:14:46 2000 @@ -0,0 +1,3 @@ +tmp +substvars +files diff -ruN userv-0.65.2/debian/changelog userv-1.0.0/debian/changelog --- userv-0.65.2/debian/changelog Sun Oct 10 12:48:51 1999 +++ userv-1.0.0/debian/changelog Mon Mar 6 18:14:46 2000 @@ -1,3 +1,20 @@ +userv (1.0.0) unstable; urgency=low + + * 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 Mon, 6 Mar 2000 18:13:49 +0000 + +userv (0.95.0) unstable; urgency=low + + * Count \-continued lines properly in error message line numbers. + * Fix lexing bugs with "-quoted strings and \-continuation. + * Fix interpretation of \n etc. in "-quoted strings. + * Fix bug which ignored erroneous read/write after ignore-fd/reject-fd. + + -- Ian Jackson Tue, 9 Nov 1999 23:26:54 +0000 + userv (0.65.2) unstable; urgency=high * In client, copy results from getpw* when necessary. This fixes what diff -ruN userv-0.65.2/debian/copyright userv-1.0.0/debian/copyright --- userv-0.65.2/debian/copyright Thu Apr 8 00:46:20 1999 +++ userv-1.0.0/debian/copyright Mon Mar 6 18:14:46 2000 @@ -12,7 +12,8 @@ daemon to be started automatically. -Copyright (C)1996-1999 Ian Jackson . +Copyright (C)1996-2000 Ian Jackson . +Copyright (C)2000 Ben Harris . 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 -ruN userv-0.65.2/debian/rules userv-1.0.0/debian/rules --- userv-0.65.2/debian/rules Sat Jan 30 23:37:52 1999 +++ userv-1.0.0/debian/rules Mon Mar 6 18:14:46 2000 @@ -5,8 +5,7 @@ build: $(checkdir) ./configure --prefix=/usr - $(MAKE) - $(MAKE) spec.html + $(MAKE) all docs touch build clean: @@ -33,14 +32,16 @@ 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 - gzip -9v debian/tmp/usr/doc/$(package)/changelog 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 diff -ruN userv-0.65.2/lexer.c userv-1.0.0/lexer.c --- userv-0.65.2/lexer.c Sun Oct 10 12:39:46 1999 +++ userv-1.0.0/lexer.c Tue Nov 9 23:32:44 1999 @@ -1,7 +1,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /usr/src/CVS/userv/lexer.c,v 1.4 1999/10/10 11:39:46 ian Exp $ + * $Header: /usr/src/CVS/userv/lexer.c,v 1.5 1999/11/09 23:32:44 ian Exp $ */ #define FLEX_SCANNER @@ -285,73 +285,72 @@ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 105 -#define YY_END_OF_BUFFER 106 -static yyconst short int yy_accept[578] = +#define YY_NUM_RULES 107 +#define YY_END_OF_BUFFER 108 +static yyconst short int yy_accept[565] = { 0, - 0, 0, 106, 104, 98, 99, 90, 103, 101, 87, - 91, 88, 89, 94, 105, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 92, 104, 98, - 99, 101, 0, 103, 103, 102, 103, 101, 101, 100, - 96, 94, 0, 97, 104, 104, 104, 104, 19, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 37, - 104, 104, 104, 104, 32, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - - 104, 102, 103, 103, 103, 0, 103, 103, 95, 94, - 97, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 31, 63, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 71, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 102, 0, 103, - 103, 95, 94, 104, 104, 104, 67, 104, 104, 64, - 68, 104, 104, 104, 35, 36, 104, 104, 104, 104, - 40, 42, 104, 51, 104, 104, 60, 70, 104, 72, - - 104, 73, 104, 104, 104, 104, 104, 104, 104, 30, - 104, 85, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 75, 76, 104, 62, 104, 0, 0, - 0, 103, 95, 94, 104, 65, 104, 104, 104, 104, - 104, 59, 104, 66, 104, 93, 104, 38, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 41, 104, 104, 49, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 86, 0, 0, 95, 94, - 104, 104, 104, 104, 104, 69, 104, 104, 104, 104, - 104, 104, 70, 77, 78, 79, 80, 81, 82, 83, - - 84, 104, 104, 104, 104, 61, 104, 104, 104, 1, - 104, 104, 104, 104, 104, 39, 104, 74, 104, 104, - 104, 104, 0, 95, 94, 104, 104, 104, 104, 104, - 104, 104, 104, 50, 104, 21, 26, 104, 104, 104, - 10, 104, 104, 104, 104, 104, 52, 104, 104, 104, - 104, 104, 45, 62, 95, 94, 104, 9, 67, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 47, 104, 104, 104, 104, 104, 48, 104, 46, - 104, 95, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 12, 104, 104, 104, 104, 104, 104, 44, - - 11, 104, 104, 104, 104, 104, 104, 95, 104, 104, - 104, 104, 104, 33, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 8, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 43, 34, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 20, 104, 104, 104, 104, 53, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 56, 104, 104, 104, 104, 104, 54, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 57, 104, 104, 15, 104, 104, 104, - - 104, 17, 7, 104, 104, 104, 104, 104, 104, 104, - 23, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 4, 104, 104, 104, 22, 104, 104, 104, - 104, 104, 13, 104, 104, 104, 104, 5, 6, 104, - 104, 104, 104, 104, 104, 16, 104, 104, 104, 104, - 104, 104, 3, 25, 104, 18, 104, 104, 104, 27, - 104, 55, 104, 24, 14, 58, 104, 104, 104, 104, - 28, 104, 104, 104, 29, 2, 0 + 0, 0, 108, 103, 98, 99, 90, 104, 101, 87, + 91, 88, 89, 94, 105, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 92, 103, 98, + 99, 101, 0, 0, 102, 0, 101, 101, 100, 96, + 94, 0, 97, 103, 103, 103, 103, 19, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 37, 103, + 103, 103, 103, 32, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + + 0, 0, 0, 95, 94, 97, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 31, 63, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 71, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 0, 0, 95, 94, 103, 103, 103, 67, + 103, 103, 64, 68, 103, 103, 103, 35, 36, 103, + 103, 103, 103, 40, 42, 103, 51, 103, 103, 60, + 70, 103, 72, 103, 73, 103, 103, 103, 103, 103, + + 103, 103, 30, 103, 85, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 75, 76, 103, 62, + 103, 0, 95, 94, 103, 65, 103, 103, 103, 103, + 103, 59, 103, 66, 103, 93, 103, 38, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 41, 103, 103, 49, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 86, 95, 94, 103, 103, + 103, 103, 103, 69, 103, 103, 103, 103, 103, 103, + 70, 77, 78, 79, 80, 81, 82, 83, 84, 103, + 103, 103, 103, 61, 103, 103, 103, 1, 103, 103, + + 103, 103, 103, 39, 103, 74, 103, 103, 103, 103, + 95, 94, 103, 103, 103, 103, 103, 103, 103, 103, + 50, 103, 21, 26, 103, 103, 103, 10, 103, 103, + 103, 103, 103, 52, 103, 103, 103, 103, 103, 45, + 62, 95, 94, 103, 9, 67, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 47, 103, + 103, 103, 103, 103, 48, 103, 46, 103, 95, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 12, + 103, 103, 103, 103, 103, 103, 44, 11, 103, 103, + 103, 103, 103, 103, 95, 103, 103, 103, 103, 103, + + 33, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 8, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 43, 34, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 20, 103, 103, 103, 103, 53, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 56, 103, 103, 103, 103, 103, 54, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 57, 103, 103, 15, 103, 103, 103, 103, 17, 7, + 103, 103, 103, 103, 103, 103, 103, 23, 103, 103, + + 103, 103, 103, 103, 103, 103, 103, 103, 103, 4, + 103, 103, 103, 22, 103, 103, 103, 103, 103, 13, + 103, 103, 103, 103, 5, 6, 103, 103, 103, 103, + 103, 103, 16, 103, 103, 103, 103, 103, 103, 3, + 25, 103, 18, 103, 103, 103, 27, 103, 55, 103, + 24, 14, 58, 103, 103, 103, 103, 28, 103, 103, + 103, 29, 2, 0 } ; static yyconst int yy_ec[256] = @@ -388,7 +387,7 @@ static yyconst int yy_meta[52] = { 0, - 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -396,352 +395,328 @@ 1 } ; -static yyconst short int yy_base[588] = +static yyconst short int yy_base[571] = { 0, - 0, 0, 869, 0, 50, 870, 0, 52, 56, 0, - 0, 0, 0, 68, 58, 835, 19, 49, 37, 56, - 834, 27, 38, 69, 837, 32, 72, 67, 819, 839, - 818, 80, 79, 823, 33, 832, 77, 0, 0, 111, - 870, 857, 113, 118, 113, 108, 141, 123, 856, 870, - 177, 186, 127, 125, 820, 103, 813, 101, 0, 114, - 827, 829, 811, 107, 824, 806, 821, 808, 820, 0, - 809, 818, 802, 809, 0, 806, 108, 801, 815, 799, - 807, 796, 791, 78, 801, 807, 126, 802, 796, 140, - 125, 788, 793, 791, 787, 789, 799, 800, 784, 783, - - 791, 0, 147, 0, 169, 128, 195, 212, 230, 239, - 164, 796, 780, 782, 788, 783, 791, 773, 778, 778, - 769, 786, 782, 782, 768, 776, 0, 769, 780, 780, - 765, 779, 763, 763, 765, 761, 761, 773, 0, 761, - 753, 752, 145, 761, 757, 750, 758, 765, 745, 757, - 759, 757, 740, 755, 738, 736, 769, 736, 737, 738, - 741, 740, 733, 734, 730, 734, 727, 870, 260, 296, - 305, 323, 332, 734, 725, 721, 727, 733, 733, 0, - 0, 725, 732, 723, 0, 0, 730, 718, 717, 713, - 0, 0, 730, 0, 714, 710, 0, 725, 717, 0, - - 727, 0, 718, 191, 723, 737, 706, 720, 709, 0, - 716, 0, 717, 710, 698, 699, 707, 710, 710, 695, - 694, 696, 705, 721, 0, 699, 698, 701, 173, 0, - 349, 260, 367, 376, 684, 0, 716, 685, 688, 713, - 686, 0, 685, 0, 683, 678, 676, 0, 690, 690, - 681, 385, 685, 672, 670, 673, 683, 681, 677, 680, - 0, 664, 665, 0, 673, 678, 666, 664, 673, 672, - 669, 653, 656, 658, 658, 0, 0, 393, 411, 420, - 667, 664, 660, 661, 650, 0, 652, 651, 676, 658, - 674, 656, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 655, 656, 670, 641, 0, 652, 651, 634, 665, - 647, 631, 645, 627, 625, 0, 628, 0, 641, 642, - 630, 636, 261, 429, 438, 637, 637, 618, 651, 617, - 632, 623, 138, 647, 628, 645, 0, 617, 626, 612, - 0, 624, 623, 621, 638, 600, 636, 614, 608, 602, - 608, 613, 0, 0, 447, 630, 629, 0, 0, 240, - 607, 612, 609, 592, 597, 154, 607, 236, 596, 595, - 603, 0, 589, 602, 599, 255, 586, 0, 615, 0, - 593, 456, 260, 583, 581, 579, 578, 583, 577, 607, - 573, 575, 0, 583, 585, 575, 575, 566, 568, 0, - - 0, 582, 567, 565, 568, 581, 569, 0, 568, 554, - 559, 562, 571, 0, 587, 554, 565, 258, 563, 556, - 552, 564, 553, 562, 557, 546, 0, 549, 558, 548, - 543, 555, 550, 539, 552, 535, 537, 546, 0, 0, - 544, 174, 540, 538, 545, 525, 537, 544, 528, 557, - 523, 525, 529, 534, 0, 535, 536, 520, 521, 548, - 514, 522, 529, 513, 511, 542, 526, 519, 506, 506, - 510, 523, 507, 534, 516, 501, 505, 503, 529, 0, - 497, 499, 509, 508, 500, 502, 262, 490, 490, 492, - 519, 492, 487, 0, 485, 489, 0, 482, 487, 482, - - 491, 0, 0, 480, 482, 482, 486, 493, 478, 472, - 503, 482, 476, 481, 479, 466, 496, 474, 473, 467, - 442, 449, 0, 437, 373, 374, 0, 348, 316, 331, - 316, 329, 0, 330, 323, 325, 293, 0, 0, 299, - 275, 257, 268, 259, 260, 0, 261, 257, 264, 261, - 257, 265, 0, 0, 255, 0, 245, 234, 230, 0, - 231, 0, 180, 0, 0, 0, 192, 192, 180, 153, - 0, 143, 148, 128, 0, 0, 870, 477, 481, 485, - 489, 493, 497, 501, 505, 99, 64 + 0, 0, 779, 0, 50, 780, 0, 49, 55, 0, + 0, 0, 0, 67, 59, 745, 19, 49, 34, 56, + 744, 29, 39, 59, 747, 30, 71, 70, 729, 749, + 728, 76, 74, 733, 65, 742, 82, 0, 0, 111, + 780, 767, 73, 97, 780, 134, 123, 766, 780, 170, + 179, 109, 116, 730, 93, 723, 94, 0, 88, 737, + 739, 721, 98, 734, 716, 731, 718, 730, 0, 719, + 728, 712, 719, 0, 716, 113, 711, 725, 709, 717, + 706, 701, 120, 711, 717, 119, 712, 706, 133, 118, + 698, 703, 701, 697, 699, 709, 710, 694, 693, 701, + + 163, 0, 196, 214, 223, 140, 706, 690, 692, 698, + 693, 701, 683, 688, 688, 679, 696, 692, 692, 678, + 686, 0, 679, 690, 690, 675, 689, 673, 673, 675, + 671, 671, 683, 0, 671, 663, 662, 116, 671, 667, + 660, 668, 675, 655, 667, 669, 667, 650, 665, 648, + 646, 679, 646, 647, 648, 651, 650, 643, 644, 640, + 644, 637, 0, 232, 250, 259, 644, 635, 631, 637, + 643, 643, 0, 0, 635, 642, 633, 0, 0, 640, + 628, 627, 623, 0, 0, 640, 0, 624, 620, 0, + 635, 627, 0, 637, 0, 628, 175, 633, 647, 616, + + 630, 619, 0, 626, 0, 627, 620, 608, 609, 617, + 620, 620, 605, 604, 606, 615, 631, 0, 609, 608, + 611, 276, 287, 296, 594, 0, 626, 595, 598, 623, + 596, 0, 595, 0, 593, 588, 586, 0, 600, 600, + 591, 305, 595, 582, 580, 583, 593, 591, 587, 590, + 0, 574, 575, 0, 583, 588, 576, 574, 583, 582, + 579, 563, 566, 568, 568, 0, 313, 322, 577, 574, + 570, 571, 560, 0, 562, 561, 586, 568, 584, 566, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 565, + 566, 580, 551, 0, 562, 561, 544, 575, 557, 541, + + 555, 537, 535, 0, 538, 0, 551, 552, 540, 546, + 331, 340, 547, 547, 528, 561, 527, 542, 533, 128, + 557, 538, 555, 0, 527, 536, 522, 0, 534, 533, + 531, 548, 510, 546, 524, 518, 512, 518, 523, 0, + 0, 349, 540, 539, 0, 0, 251, 517, 522, 519, + 502, 507, 143, 517, 142, 506, 505, 513, 0, 499, + 512, 509, 252, 496, 0, 525, 0, 503, 358, 353, + 493, 491, 489, 488, 493, 487, 517, 483, 485, 0, + 493, 495, 485, 485, 476, 478, 0, 0, 492, 477, + 475, 478, 491, 479, 0, 478, 464, 469, 472, 481, + + 0, 497, 464, 475, 255, 473, 466, 462, 474, 463, + 472, 467, 456, 0, 459, 468, 458, 453, 465, 460, + 449, 462, 445, 447, 456, 0, 0, 454, 158, 450, + 448, 455, 435, 447, 454, 438, 467, 433, 435, 439, + 444, 0, 445, 446, 430, 431, 458, 424, 432, 439, + 423, 421, 452, 436, 429, 416, 416, 420, 433, 417, + 444, 426, 411, 415, 413, 439, 0, 407, 409, 419, + 418, 410, 412, 353, 400, 400, 402, 429, 402, 397, + 0, 395, 399, 0, 392, 397, 392, 401, 0, 0, + 390, 392, 392, 396, 403, 388, 382, 413, 392, 386, + + 391, 389, 376, 407, 388, 390, 387, 373, 374, 0, + 359, 356, 355, 0, 370, 349, 363, 348, 361, 0, + 362, 355, 357, 350, 0, 0, 356, 352, 334, 346, + 255, 256, 0, 257, 253, 260, 257, 253, 261, 0, + 0, 251, 0, 242, 248, 218, 0, 219, 0, 164, + 0, 0, 0, 176, 176, 164, 148, 0, 138, 148, + 128, 0, 0, 780, 398, 402, 406, 410, 167, 129 } ; -static yyconst short int yy_def[588] = +static yyconst short int yy_def[571] = { 0, - 577, 1, 577, 578, 577, 577, 578, 579, 580, 578, - 578, 578, 578, 578, 577, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 577, - 577, 581, 577, 579, 582, 583, 582, 580, 581, 577, - 578, 14, 577, 577, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - - 578, 584, 583, 584, 584, 585, 584, 582, 578, 14, - 577, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 577, 585, 584, - 108, 578, 14, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 577, 586, - 585, 582, 578, 14, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 587, 231, 578, 14, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 585, 578, 14, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 0, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577 + 564, 1, 564, 565, 564, 564, 565, 566, 567, 565, + 565, 565, 565, 565, 564, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 564, + 564, 568, 564, 566, 564, 566, 567, 568, 564, 565, + 14, 564, 564, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 564, 569, 566, 565, 14, 564, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 570, 103, 565, 14, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 566, 565, 14, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 14, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 14, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 0, 564, 564, 564, 564, 564, 564 } ; -static yyconst short int yy_nxt[922] = +static yyconst short int yy_nxt[832] = { 0, 4, 5, 6, 7, 8, 9, 10, 4, 11, 12, 13, 4, 14, 14, 14, 14, 14, 14, 14, 14, 14, 4, 15, 16, 17, 4, 18, 19, 20, 21, 22, 23, 24, 4, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 4, 4, 4, - 38, 40, 41, 45, 56, 42, 46, 49, 50, 53, - 54, 61, 71, 57, 73, 62, 74, 106, 72, 63, - 79, 80, 43, 58, 47, 97, 59, 98, 49, 51, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 143, - 60, 64, 65, 66, 67, 83, 81, 68, 75, 76, - - 82, 100, 277, 69, 89, 84, 77, 91, 90, 104, - 92, 85, 40, 41, 53, 54, 42, 102, 101, 45, - 93, 144, 46, 94, 49, 50, 111, 95, 53, 54, - 104, 113, 168, 43, 135, 47, 116, 136, 114, 123, - 47, 104, 105, 106, 117, 49, 118, 43, 104, 124, - 169, 155, 119, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 104, 147, 151, 111, 156, 148, 157, 104, - 105, 106, 203, 152, 229, 106, 576, 364, 575, 391, - 153, 365, 154, 392, 574, 573, 43, 204, 108, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 110, 110, - - 110, 110, 110, 110, 110, 110, 110, 170, 170, 170, - 170, 170, 170, 170, 170, 170, 102, 463, 572, 255, - 571, 570, 464, 569, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 47, 256, 171, 171, 171, 171, - 171, 171, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 577, 229, 106, 394, 102, 168, 568, 567, 395, 566, - 384, 396, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 577, 47, 169, 385, 403, 409, 441, 565, 507, - 564, 563, 562, 561, 560, 559, 558, 557, 556, 404, - - 442, 508, 410, 555, 411, 554, 553, 231, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 552, 551, 232, - 232, 232, 232, 232, 232, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 168, 550, 549, 548, 547, 546, 545, - 544, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 169, 543, 278, 278, 278, 278, 278, 278, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 294, 295, 296, - - 297, 298, 299, 300, 301, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 542, 541, 323, 323, 323, - 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 408, 408, - 408, 408, 408, 408, 408, 408, 408, 39, 540, 539, - 39, 44, 44, 538, 44, 48, 48, 48, 48, 49, - 49, 49, 49, 45, 45, 537, 45, 103, 103, 536, - - 103, 104, 104, 535, 104, 106, 106, 534, 106, 533, - 532, 531, 530, 529, 528, 527, 526, 525, 524, 523, - 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, - 512, 511, 510, 509, 506, 505, 504, 503, 502, 501, - 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, - 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, - 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, - 470, 469, 468, 467, 466, 465, 462, 461, 460, 459, - 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, - 448, 447, 446, 445, 444, 443, 440, 439, 438, 437, - - 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, - 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, - 416, 415, 414, 413, 412, 407, 406, 405, 402, 401, - 400, 399, 398, 397, 393, 390, 389, 388, 387, 386, - 383, 51, 381, 380, 379, 378, 377, 376, 359, 375, - 374, 373, 372, 371, 370, 369, 368, 367, 366, 363, - 362, 361, 360, 359, 358, 357, 354, 353, 352, 351, - 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, - 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, - 330, 329, 328, 327, 326, 322, 321, 320, 319, 318, - - 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, - 307, 306, 305, 304, 303, 302, 293, 292, 291, 290, - 289, 288, 287, 286, 285, 284, 283, 282, 281, 276, - 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, - 265, 264, 263, 262, 261, 260, 244, 259, 258, 257, - 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, + 38, 40, 41, 45, 55, 42, 48, 49, 60, 48, + 52, 53, 61, 56, 70, 72, 62, 73, 78, 79, + 71, 46, 43, 57, 52, 53, 58, 48, 50, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 74, 75, + 59, 63, 64, 65, 66, 80, 76, 67, 82, 81, + + 88, 45, 90, 68, 89, 91, 99, 96, 83, 97, + 52, 53, 40, 41, 84, 92, 42, 106, 93, 46, + 113, 108, 94, 100, 48, 49, 114, 48, 109, 111, + 118, 138, 44, 43, 564, 101, 44, 112, 43, 130, + 119, 106, 131, 196, 150, 48, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 564, 142, 146, 197, 151, + 143, 152, 43, 139, 101, 44, 147, 351, 378, 381, + 163, 352, 379, 148, 382, 149, 563, 383, 562, 561, + 560, 103, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 45, 450, 559, 245, 558, 557, 451, 556, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 46, 246, + 164, 164, 164, 164, 164, 164, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 555, 554, 222, 222, 222, 222, + 222, 222, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 45, 371, 390, 553, 428, 552, 551, 550, 549, 548, + 547, 546, 545, 544, 543, 372, 391, 429, 46, 267, + + 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 282, 283, 284, + 285, 286, 287, 288, 289, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 395, 395, 395, 395, 395, 395, 395, 395, 395, 396, + 494, 542, 541, 540, 539, 538, 537, 536, 535, 534, + 533, 532, 495, 531, 530, 397, 529, 398, 39, 528, + + 527, 39, 44, 44, 526, 44, 47, 47, 47, 47, + 48, 48, 48, 48, 525, 524, 523, 522, 521, 520, + 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, + 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, + 499, 498, 497, 496, 493, 492, 491, 490, 489, 488, + 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, + 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, + 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, + 457, 456, 455, 454, 453, 452, 449, 448, 447, 446, + 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, + + 435, 434, 433, 432, 431, 430, 427, 426, 425, 424, + 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, + 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, + 403, 402, 401, 400, 399, 394, 393, 392, 389, 388, + 387, 386, 385, 384, 380, 377, 376, 375, 374, 373, + 370, 50, 368, 367, 366, 365, 364, 363, 346, 362, + 361, 360, 359, 358, 357, 356, 355, 354, 353, 350, + 349, 348, 347, 346, 345, 344, 341, 340, 339, 338, + 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, + 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, + + 317, 316, 315, 314, 313, 310, 309, 308, 307, 306, + 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, + 295, 294, 293, 292, 291, 290, 281, 280, 279, 278, + 277, 276, 275, 274, 273, 272, 271, 270, 269, 266, + 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, + 255, 254, 253, 252, 251, 250, 234, 249, 248, 247, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, - 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, - 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, - 208, 207, 206, 205, 202, 201, 200, 199, 198, 197, - - 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, - 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, - 176, 175, 174, 167, 166, 165, 164, 163, 162, 161, - 160, 159, 158, 150, 149, 146, 145, 142, 141, 140, - 139, 138, 137, 134, 133, 132, 131, 130, 129, 128, - 127, 126, 125, 122, 121, 120, 115, 112, 50, 50, - 99, 96, 88, 87, 86, 78, 70, 55, 577, 3, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577 + 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, + 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, + 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, + + 201, 200, 199, 198, 195, 194, 193, 192, 191, 190, + 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, + 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, + 169, 168, 167, 162, 161, 160, 159, 158, 157, 156, + 155, 154, 153, 145, 144, 141, 140, 137, 136, 135, + 134, 133, 132, 129, 128, 127, 126, 125, 124, 123, + 122, 121, 120, 117, 116, 115, 110, 107, 49, 49, + 98, 95, 87, 86, 85, 77, 69, 54, 564, 3, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564 } ; -static yyconst short int yy_chk[922] = +static yyconst short int yy_chk[832] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 5, 8, 17, 5, 8, 9, 9, 15, - 15, 19, 22, 17, 23, 19, 23, 587, 22, 19, - 26, 26, 5, 18, 8, 35, 18, 35, 9, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 84, - 18, 20, 20, 20, 20, 28, 27, 20, 24, 24, - - 27, 37, 586, 20, 32, 28, 24, 33, 32, 46, - 33, 28, 40, 40, 43, 43, 40, 45, 37, 44, - 33, 84, 44, 33, 48, 48, 54, 33, 53, 53, - 46, 56, 106, 40, 77, 45, 58, 77, 56, 64, - 44, 47, 47, 47, 58, 48, 60, 54, 103, 64, - 106, 91, 60, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 87, 90, 111, 91, 87, 91, 103, - 105, 105, 143, 90, 229, 229, 574, 333, 573, 366, - 90, 333, 90, 366, 572, 570, 111, 143, 47, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, - - 52, 52, 52, 52, 52, 52, 52, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 108, 442, 569, 204, - 568, 567, 442, 563, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 204, 108, 108, 108, 108, - 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 169, 169, 169, 368, 232, 323, 561, 559, 368, 558, - 360, 368, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 169, 232, 323, 360, 376, 383, 418, 557, 487, - 555, 552, 551, 550, 549, 548, 547, 545, 544, 376, - - 418, 487, 383, 543, 383, 542, 541, 169, 170, 170, - 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 540, 537, 171, - 171, 171, 171, 171, 171, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 231, 536, 535, 534, 532, 531, 530, - 529, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 528, 231, 231, 231, 231, 231, 231, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 252, 252, 252, - - 252, 252, 252, 252, 252, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 526, 525, 278, 278, 278, - 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 578, 524, 522, - 578, 579, 579, 521, 579, 580, 580, 580, 580, 581, - 581, 581, 581, 582, 582, 520, 582, 583, 583, 519, - - 583, 584, 584, 518, 584, 585, 585, 517, 585, 516, - 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, - 505, 504, 501, 500, 499, 498, 496, 495, 493, 492, - 491, 490, 489, 488, 486, 485, 484, 483, 482, 481, - 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, - 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, - 459, 458, 457, 456, 454, 453, 452, 451, 450, 449, - 448, 447, 446, 445, 444, 443, 441, 438, 437, 436, - 435, 434, 433, 432, 431, 430, 429, 428, 426, 425, - 424, 423, 422, 421, 420, 419, 417, 416, 415, 413, - - 412, 411, 410, 409, 407, 406, 405, 404, 403, 402, - 399, 398, 397, 396, 395, 394, 392, 391, 390, 389, - 388, 387, 386, 385, 384, 381, 379, 377, 375, 374, - 373, 371, 370, 369, 367, 365, 364, 363, 362, 361, - 357, 356, 352, 351, 350, 349, 348, 347, 346, 345, - 344, 343, 342, 340, 339, 338, 336, 335, 334, 332, - 331, 330, 329, 328, 327, 326, 322, 321, 320, 319, - 317, 315, 314, 313, 312, 311, 310, 309, 308, 307, - 305, 304, 303, 302, 292, 291, 290, 289, 288, 287, - 285, 284, 283, 282, 281, 275, 274, 273, 272, 271, - - 270, 269, 268, 267, 266, 265, 263, 262, 260, 259, - 258, 257, 256, 255, 254, 253, 251, 250, 249, 247, - 246, 245, 243, 241, 240, 239, 238, 237, 235, 228, - 227, 226, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 215, 214, 213, 211, 209, 208, 207, 206, 205, - 203, 201, 199, 198, 196, 195, 193, 190, 189, 188, - 187, 184, 183, 182, 179, 178, 177, 176, 175, 174, - 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, - 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, - 147, 146, 145, 144, 142, 141, 140, 138, 137, 136, - - 135, 134, 133, 132, 131, 130, 129, 128, 126, 125, - 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, - 114, 113, 112, 101, 100, 99, 98, 97, 96, 95, - 94, 93, 92, 89, 88, 86, 85, 83, 82, 81, - 80, 79, 78, 76, 74, 73, 72, 71, 69, 68, - 67, 66, 65, 63, 62, 61, 57, 55, 49, 42, - 36, 34, 31, 30, 29, 25, 21, 16, 3, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577 + 1, 5, 5, 8, 17, 5, 9, 9, 19, 9, + 15, 15, 19, 17, 22, 23, 19, 23, 26, 26, + 22, 8, 5, 18, 43, 43, 18, 9, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 24, 24, + 18, 20, 20, 20, 20, 27, 24, 20, 28, 27, + + 32, 44, 33, 20, 32, 33, 37, 35, 28, 35, + 52, 52, 40, 40, 28, 33, 40, 53, 33, 44, + 59, 55, 33, 37, 47, 47, 59, 47, 55, 57, + 63, 83, 570, 40, 46, 46, 46, 57, 53, 76, + 63, 106, 76, 138, 90, 47, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 86, 89, 138, 90, + 86, 90, 106, 83, 101, 101, 89, 320, 353, 355, + 569, 320, 353, 89, 355, 89, 561, 355, 560, 559, + 557, 46, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, + + 103, 429, 556, 197, 555, 554, 429, 550, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 197, + 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 548, 546, 164, 164, 164, 164, + 164, 164, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 222, 347, 363, 545, 405, 544, 542, 539, 538, 537, + 536, 535, 534, 532, 531, 347, 363, 405, 222, 223, + + 223, 223, 223, 223, 223, 223, 223, 223, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 242, 242, 242, + 242, 242, 242, 242, 242, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 370, + 474, 530, 529, 528, 527, 524, 523, 522, 521, 519, + 518, 517, 474, 516, 515, 370, 513, 370, 565, 512, + + 511, 565, 566, 566, 509, 566, 567, 567, 567, 567, + 568, 568, 568, 568, 508, 507, 506, 505, 504, 503, + 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, + 492, 491, 488, 487, 486, 485, 483, 482, 480, 479, + 478, 477, 476, 475, 473, 472, 471, 470, 469, 468, + 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, + 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, + 446, 445, 444, 443, 441, 440, 439, 438, 437, 436, + 435, 434, 433, 432, 431, 430, 428, 425, 424, 423, + 422, 421, 420, 419, 418, 417, 416, 415, 413, 412, + + 411, 410, 409, 408, 407, 406, 404, 403, 402, 400, + 399, 398, 397, 396, 394, 393, 392, 391, 390, 389, + 386, 385, 384, 383, 382, 381, 379, 378, 377, 376, + 375, 374, 373, 372, 371, 368, 366, 364, 362, 361, + 360, 358, 357, 356, 354, 352, 351, 350, 349, 348, + 344, 343, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 327, 326, 325, 323, 322, 321, 319, + 318, 317, 316, 315, 314, 313, 310, 309, 308, 307, + 305, 303, 302, 301, 300, 299, 298, 297, 296, 295, + 293, 292, 291, 290, 280, 279, 278, 277, 276, 275, + + 273, 272, 271, 270, 269, 265, 264, 263, 262, 261, + 260, 259, 258, 257, 256, 255, 253, 252, 250, 249, + 248, 247, 246, 245, 244, 243, 241, 240, 239, 237, + 236, 235, 233, 231, 230, 229, 228, 227, 225, 221, + 220, 219, 217, 216, 215, 214, 213, 212, 211, 210, + 209, 208, 207, 206, 204, 202, 201, 200, 199, 198, + 196, 194, 192, 191, 189, 188, 186, 183, 182, 181, + 180, 177, 176, 175, 172, 171, 170, 169, 168, 167, + 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, + 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, + + 142, 141, 140, 139, 137, 136, 135, 133, 132, 131, + 130, 129, 128, 127, 126, 125, 124, 123, 121, 120, + 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, + 109, 108, 107, 100, 99, 98, 97, 96, 95, 94, + 93, 92, 91, 88, 87, 85, 84, 82, 81, 80, + 79, 78, 77, 75, 73, 72, 71, 70, 68, 67, + 66, 65, 64, 62, 61, 60, 56, 54, 48, 42, + 36, 34, 31, 30, 29, 25, 21, 16, 3, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564 } ; static yy_state_type yy_last_accepting_state; @@ -891,6 +866,7 @@ static struct error_handling eh = { tokv_word_errorstostderr, 0,0,0,0,0 }; static int dequote(char *inplace); +static void countnewlines(void); #define YY_NO_UNPUT @@ -1044,7 +1020,7 @@ register char *yy_cp, *yy_bp; register int yy_act; -#line 143 "lexer.l" +#line 144 "lexer.l" @@ -1097,13 +1073,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 578 ) + if ( yy_current_state >= 565 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 870 ); + while ( yy_base[yy_current_state] != 780 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1131,472 +1107,472 @@ case 1: YY_RULE_SETUP -#line 145 "lexer.l" +#line 146 "lexer.l" { lr_dir= df_reject; return tokv_word_reject; } YY_BREAK case 2: YY_RULE_SETUP -#line 146 "lexer.l" +#line 147 "lexer.l" { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; } YY_BREAK case 3: YY_RULE_SETUP -#line 147 "lexer.l" +#line 148 "lexer.l" { lr_dir= df_executefrompath; return tokv_word_executefrompath; } YY_BREAK case 4: YY_RULE_SETUP -#line 148 "lexer.l" +#line 149 "lexer.l" { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; } YY_BREAK case 5: YY_RULE_SETUP -#line 149 "lexer.l" +#line 150 "lexer.l" { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; } YY_BREAK case 6: YY_RULE_SETUP -#line 150 "lexer.l" +#line 151 "lexer.l" { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; } YY_BREAK case 7: YY_RULE_SETUP -#line 151 "lexer.l" +#line 152 "lexer.l" { lr_dir= df_errorstofile; return tokv_word_errorstofile; } YY_BREAK case 8: YY_RULE_SETUP -#line 152 "lexer.l" +#line 153 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; } YY_BREAK case 9: YY_RULE_SETUP -#line 153 "lexer.l" +#line 154 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; } YY_BREAK case 10: YY_RULE_SETUP -#line 154 "lexer.l" +#line 155 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; } YY_BREAK case 11: YY_RULE_SETUP -#line 155 "lexer.l" +#line 156 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; } YY_BREAK case 12: YY_RULE_SETUP -#line 156 "lexer.l" +#line 157 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; } YY_BREAK case 13: YY_RULE_SETUP -#line 157 "lexer.l" +#line 158 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; } YY_BREAK case 14: YY_RULE_SETUP -#line 158 "lexer.l" +#line 159 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; } YY_BREAK case 15: YY_RULE_SETUP -#line 159 "lexer.l" +#line 160 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; } YY_BREAK case 16: YY_RULE_SETUP -#line 160 "lexer.l" +#line 161 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; } YY_BREAK case 17: YY_RULE_SETUP -#line 161 "lexer.l" +#line 162 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; } YY_BREAK case 18: YY_RULE_SETUP -#line 162 "lexer.l" +#line 163 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; } YY_BREAK case 19: YY_RULE_SETUP -#line 163 "lexer.l" +#line 164 "lexer.l" { lr_dir= df_cd; return tokv_word_cd; } YY_BREAK case 20: YY_RULE_SETUP -#line 164 "lexer.l" +#line 165 "lexer.l" { lr_dir= df_userrcfile; return tokv_word_userrcfile; } YY_BREAK case 21: YY_RULE_SETUP -#line 165 "lexer.l" +#line 166 "lexer.l" { lr_dir= df_include; return tokv_word_include; } YY_BREAK case 22: YY_RULE_SETUP -#line 166 "lexer.l" +#line 167 "lexer.l" { lr_dir= df_include; return tokv_word_includeifexist; } YY_BREAK case 23: YY_RULE_SETUP -#line 167 "lexer.l" +#line 168 "lexer.l" { lr_dir= df_includelookup; return tokv_word_includelookup; } YY_BREAK case 24: YY_RULE_SETUP -#line 168 "lexer.l" +#line 169 "lexer.l" { lr_dir= df_includelookup; return tokv_word_includelookupall; } YY_BREAK case 25: YY_RULE_SETUP -#line 169 "lexer.l" +#line 170 "lexer.l" { lr_dir= df_includedirectory; return tokv_word_includedirectory; } YY_BREAK case 26: YY_RULE_SETUP -#line 170 "lexer.l" +#line 171 "lexer.l" { lr_dir= df_message; return tokv_word_message; } YY_BREAK case 27: YY_RULE_SETUP -#line 171 "lexer.l" +#line 172 "lexer.l" { lr_dir= df_include; return tokv_word_includesysconfig; } YY_BREAK case 28: YY_RULE_SETUP -#line 172 "lexer.l" +#line 173 "lexer.l" { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; } YY_BREAK case 29: YY_RULE_SETUP -#line 173 "lexer.l" +#line 174 "lexer.l" { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; } YY_BREAK case 30: YY_RULE_SETUP -#line 174 "lexer.l" +#line 175 "lexer.l" { lr_dir= df_quit; return tokv_word_quit; } YY_BREAK case 31: YY_RULE_SETUP -#line 175 "lexer.l" +#line 176 "lexer.l" { lr_dir= df_eof; return tokv_word_eof; } YY_BREAK case 32: YY_RULE_SETUP -#line 176 "lexer.l" +#line 177 "lexer.l" { lr_dir= df_if; return tokv_word_if; } YY_BREAK case 33: YY_RULE_SETUP -#line 177 "lexer.l" +#line 178 "lexer.l" { lr_dir= df_catchquit; return tokv_word_catchquit; } YY_BREAK case 34: YY_RULE_SETUP -#line 178 "lexer.l" +#line 179 "lexer.l" { lr_dir= df_errorspush; return tokv_word_errorspush; } YY_BREAK case 35: YY_RULE_SETUP -#line 179 "lexer.l" +#line 180 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_elif; } YY_BREAK case 36: YY_RULE_SETUP -#line 180 "lexer.l" +#line 181 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_else; } YY_BREAK case 37: YY_RULE_SETUP -#line 181 "lexer.l" +#line 182 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_fi; } YY_BREAK case 38: YY_RULE_SETUP -#line 182 "lexer.l" +#line 183 "lexer.l" { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; } YY_BREAK case 39: YY_RULE_SETUP -#line 183 "lexer.l" +#line 184 "lexer.l" { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; } YY_BREAK case 40: YY_RULE_SETUP -#line 184 "lexer.l" +#line 185 "lexer.l" { lr_parmcond= pcf_glob; return tokv_word_glob; } YY_BREAK case 41: YY_RULE_SETUP -#line 185 "lexer.l" +#line 186 "lexer.l" { lr_parmcond= pcf_range; return tokv_word_range; } YY_BREAK case 42: YY_RULE_SETUP -#line 186 "lexer.l" +#line 187 "lexer.l" { lr_parmcond= pcf_grep; return tokv_word_grep; } YY_BREAK case 43: YY_RULE_SETUP -#line 187 "lexer.l" +#line 188 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; } YY_BREAK case 44: YY_RULE_SETUP -#line 188 "lexer.l" +#line 189 "lexer.l" { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; } YY_BREAK case 45: YY_RULE_SETUP -#line 189 "lexer.l" +#line 190 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; } YY_BREAK case 46: YY_RULE_SETUP -#line 190 "lexer.l" +#line 191 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; } YY_BREAK case 47: YY_RULE_SETUP -#line 191 "lexer.l" +#line 192 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; } YY_BREAK case 48: YY_RULE_SETUP -#line 192 "lexer.l" +#line 193 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; } YY_BREAK case 49: YY_RULE_SETUP -#line 193 "lexer.l" +#line 194 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; } YY_BREAK case 50: YY_RULE_SETUP -#line 194 "lexer.l" +#line 195 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; } YY_BREAK case 51: YY_RULE_SETUP -#line 195 "lexer.l" +#line 196 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; } YY_BREAK case 52: YY_RULE_SETUP -#line 196 "lexer.l" +#line 197 "lexer.l" { lr_parameter= pf_service; return tokv_word_service; } YY_BREAK case 53: YY_RULE_SETUP -#line 197 "lexer.l" +#line 198 "lexer.l" { lr_parameter= pf_callinguser; return tokv_word_callinguser; } YY_BREAK case 54: YY_RULE_SETUP -#line 198 "lexer.l" +#line 199 "lexer.l" { lr_parameter= pf_callinggroup; return tokv_word_callinggroup; } YY_BREAK case 55: YY_RULE_SETUP -#line 199 "lexer.l" +#line 200 "lexer.l" { lr_parameter= pf_callingusershell; return tokv_word_callingusershell; } YY_BREAK case 56: YY_RULE_SETUP -#line 200 "lexer.l" +#line 201 "lexer.l" { lr_parameter= pf_serviceuser; return tokv_word_serviceuser; } YY_BREAK case 57: YY_RULE_SETUP -#line 201 "lexer.l" +#line 202 "lexer.l" { lr_parameter= pf_servicegroup; return tokv_word_servicegroup; } YY_BREAK case 58: YY_RULE_SETUP -#line 202 "lexer.l" +#line 203 "lexer.l" { lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; } YY_BREAK case 59: YY_RULE_SETUP -#line 203 "lexer.l" +#line 204 "lexer.l" { lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; } YY_BREAK case 60: YY_RULE_SETUP -#line 204 "lexer.l" +#line 205 "lexer.l" { lr_loglevel= LOG_INFO; return tokv_syslog_info; } YY_BREAK case 61: YY_RULE_SETUP -#line 205 "lexer.l" +#line 206 "lexer.l" { lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; } YY_BREAK case 62: YY_RULE_SETUP -#line 206 "lexer.l" +#line 207 "lexer.l" { lr_loglevel= LOG_WARNING; return tokv_syslog_warning; } YY_BREAK case 63: YY_RULE_SETUP -#line 207 "lexer.l" +#line 208 "lexer.l" { lr_loglevel= LOG_ERR; return tokv_syslog_err; } YY_BREAK case 64: YY_RULE_SETUP -#line 208 "lexer.l" +#line 209 "lexer.l" { lr_loglevel= LOG_CRIT; return tokv_syslog_crit; } YY_BREAK case 65: YY_RULE_SETUP -#line 209 "lexer.l" +#line 210 "lexer.l" { lr_loglevel= LOG_ALERT; return tokv_syslog_alert; } YY_BREAK case 66: YY_RULE_SETUP -#line 210 "lexer.l" +#line 211 "lexer.l" { lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; } YY_BREAK case 67: YY_RULE_SETUP -#line 211 "lexer.l" +#line 212 "lexer.l" { lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; } YY_BREAK case 68: YY_RULE_SETUP -#line 212 "lexer.l" +#line 213 "lexer.l" { lr_logfacility= LOG_CRON; return tokv_syslog_cron; } YY_BREAK case 69: YY_RULE_SETUP -#line 213 "lexer.l" +#line 214 "lexer.l" { lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; } YY_BREAK case 70: YY_RULE_SETUP -#line 214 "lexer.l" +#line 215 "lexer.l" { lr_logfacility= LOG_KERN; return tokv_syslog_kern; } YY_BREAK case 71: YY_RULE_SETUP -#line 215 "lexer.l" +#line 216 "lexer.l" { lr_logfacility= LOG_LPR; return tokv_syslog_lpr; } YY_BREAK case 72: YY_RULE_SETUP -#line 216 "lexer.l" +#line 217 "lexer.l" { lr_logfacility= LOG_MAIL; return tokv_syslog_mail; } YY_BREAK case 73: YY_RULE_SETUP -#line 217 "lexer.l" +#line 218 "lexer.l" { lr_logfacility= LOG_NEWS; return tokv_syslog_news; } YY_BREAK case 74: YY_RULE_SETUP -#line 218 "lexer.l" +#line 219 "lexer.l" { lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; } YY_BREAK case 75: YY_RULE_SETUP -#line 219 "lexer.l" +#line 220 "lexer.l" { lr_logfacility= LOG_USER; return tokv_syslog_user; } YY_BREAK case 76: YY_RULE_SETUP -#line 220 "lexer.l" +#line 221 "lexer.l" { lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; } YY_BREAK case 77: YY_RULE_SETUP -#line 221 "lexer.l" +#line 222 "lexer.l" { lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; } YY_BREAK case 78: YY_RULE_SETUP -#line 222 "lexer.l" +#line 223 "lexer.l" { lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; } YY_BREAK case 79: YY_RULE_SETUP -#line 223 "lexer.l" +#line 224 "lexer.l" { lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; } YY_BREAK case 80: YY_RULE_SETUP -#line 224 "lexer.l" +#line 225 "lexer.l" { lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; } YY_BREAK case 81: YY_RULE_SETUP -#line 225 "lexer.l" +#line 226 "lexer.l" { lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; } YY_BREAK case 82: YY_RULE_SETUP -#line 226 "lexer.l" +#line 227 "lexer.l" { lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; } YY_BREAK case 83: YY_RULE_SETUP -#line 227 "lexer.l" +#line 228 "lexer.l" { lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; } YY_BREAK case 84: YY_RULE_SETUP -#line 228 "lexer.l" +#line 229 "lexer.l" { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; } YY_BREAK case 85: YY_RULE_SETUP -#line 229 "lexer.l" +#line 230 "lexer.l" { return tokv_word_read; } YY_BREAK case 86: YY_RULE_SETUP -#line 230 "lexer.l" +#line 231 "lexer.l" { return tokv_word_write; } YY_BREAK case 87: YY_RULE_SETUP -#line 231 "lexer.l" +#line 232 "lexer.l" { return tokv_dollar; } YY_BREAK case 88: YY_RULE_SETUP -#line 232 "lexer.l" +#line 233 "lexer.l" { return tokv_openparen; } YY_BREAK case 89: YY_RULE_SETUP -#line 233 "lexer.l" +#line 234 "lexer.l" { return tokv_closeparen; } YY_BREAK case 90: YY_RULE_SETUP -#line 234 "lexer.l" +#line 235 "lexer.l" { return tokv_not; } YY_BREAK case 91: YY_RULE_SETUP -#line 235 "lexer.l" +#line 236 "lexer.l" { return tokv_and; } YY_BREAK case 92: YY_RULE_SETUP -#line 236 "lexer.l" +#line 237 "lexer.l" { return tokv_or; } YY_BREAK case 93: YY_RULE_SETUP -#line 237 "lexer.l" +#line 238 "lexer.l" { lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; } YY_BREAK case 94: YY_RULE_SETUP -#line 241 "lexer.l" +#line 242 "lexer.l" { char *ep; lr_min=lr_max= (int)strtoul(yytext,&ep,10); @@ -1606,7 +1582,7 @@ YY_BREAK case 95: YY_RULE_SETUP -#line 247 "lexer.l" +#line 248 "lexer.l" { char *ep; lr_min= (int)strtoul(yytext,&ep,10); @@ -1614,16 +1590,14 @@ assert(*++ep); lr_max= (int)strtoul(ep,&ep,10); assert(!*ep); - if (lr_max < lr_min) { - parseerrprint("fd range has min > max"); - return tokv_error; - } + if (lr_max < lr_min) + return parseerrprint("fd range has min > max"); return tokv_fdrange; } YY_BREAK case 96: YY_RULE_SETUP -#line 260 "lexer.l" +#line 259 "lexer.l" { char *ep; lr_min= (int)strtoul(yytext,&ep,10); @@ -1635,59 +1609,64 @@ YY_BREAK case 97: YY_RULE_SETUP -#line 268 "lexer.l" -return tokv_lwsp; +#line 267 "lexer.l" +countnewlines(); return tokv_lwsp; YY_BREAK case 98: YY_RULE_SETUP -#line 269 "lexer.l" +#line 268 "lexer.l" return tokv_lwsp; YY_BREAK case 99: YY_RULE_SETUP -#line 270 "lexer.l" +#line 269 "lexer.l" cstate->lineno++; return tokv_newline; YY_BREAK case 100: YY_RULE_SETUP -#line 271 "lexer.l" +#line 270 "lexer.l" cstate->lineno++; return tokv_newline; YY_BREAK case 101: YY_RULE_SETUP -#line 272 "lexer.l" -{ - parseerrprint("missing newline at eof after comment"); - return tokv_error; - } +#line 271 "lexer.l" +return parseerrprint("missing newline at eof after comment"); YY_BREAK case 102: YY_RULE_SETUP -#line 276 "lexer.l" +#line 272 "lexer.l" { + countnewlines(); return dequote(yytext); } YY_BREAK case 103: YY_RULE_SETUP -#line 279 "lexer.l" -{ - parseerrprint("misquoted or unterminated string"); - return tokv_error; - } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 283 "lexer.l" +#line 276 "lexer.l" return tokv_barestring; YY_BREAK case YY_STATE_EOF(INITIAL): -#line 284 "lexer.l" +#line 277 "lexer.l" return tokv_eof; YY_BREAK +case 104: +YY_RULE_SETUP +#line 278 "lexer.l" +return parseerrprint("misquoted or unterminated string"); + YY_BREAK case 105: YY_RULE_SETUP -#line 287 "lexer.l" +#line 279 "lexer.l" +return parseerrprint("unexpected backslash"); + YY_BREAK +case 106: +YY_RULE_SETUP +#line 280 "lexer.l" +abort(); /* expect lex warning "rule cannot be matched" */ + YY_BREAK +case 107: +YY_RULE_SETUP +#line 283 "lexer.l" ECHO; YY_BREAK @@ -1979,7 +1958,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 578 ) + if ( yy_current_state >= 565 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2014,11 +1993,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 578 ) + if ( yy_current_state >= 565 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 577); + yy_is_jam = (yy_current_state == 564); return yy_is_jam ? 0 : yy_current_state; } @@ -2573,7 +2552,7 @@ return 0; } #endif -#line 287 "lexer.l" +#line 283 "lexer.l" const char *const builtinservicehelpstrings[]= { diff -ruN userv-0.65.2/lexer.l userv-1.0.0/lexer.l --- userv-0.65.2/lexer.l Sun Oct 10 12:39:46 1999 +++ userv-1.0.0/lexer.l Tue Nov 9 23:32:44 1999 @@ -133,6 +133,7 @@ static struct error_handling eh = { tokv_word_errorstostderr, 0,0,0,0,0 }; static int dequote(char *inplace); +static void countnewlines(void); #define YY_NO_UNPUT @@ -251,10 +252,8 @@ assert(*++ep); lr_max= (int)strtoul(ep,&ep,10); assert(!*ep); - if (lr_max < lr_min) { - parseerrprint("fd range has min > max"); - return tokv_error; - } + if (lr_max < lr_min) + return parseerrprint("fd range has min > max"); return tokv_fdrange; } [0-9]{1,8}- { @@ -265,23 +264,20 @@ lr_max=-1; return tokv_fdstoend; } -([\ \t]*\\[\ \t]*\n[\ \t]*)+ return tokv_lwsp; +([\ \t]*\\[\ \t]*\n[\ \t]*)+ countnewlines(); return tokv_lwsp; [\ \t]+ return tokv_lwsp; [\ \t]*\n cstate->lineno++; return tokv_newline; [\ \t]*\#[^\n]*\n cstate->lineno++; return tokv_newline; -[\ \t]*\#[^\n]* { - parseerrprint("missing newline at eof after comment"); - return tokv_error; - } +[\ \t]*\#[^\n]* return parseerrprint("missing newline at eof after comment"); \"([^\\\"\n]|\\[a-z]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2}|\\[[:punct:]]|\\[ \t]*\n)*\" { + countnewlines(); return dequote(yytext); } -\".* { - parseerrprint("misquoted or unterminated string"); - return tokv_error; - } -[^\ \t\n\\]+ return tokv_barestring; -<> return tokv_eof; +[^\ \t\n\\\"]+ return tokv_barestring; +<> return tokv_eof; +\" return parseerrprint("misquoted or unterminated string"); +\\ return parseerrprint("unexpected backslash"); +. abort(); /* expect lex warning "rule cannot be matched" */ %% diff -ruN userv-0.65.2/lexer.l.m4 userv-1.0.0/lexer.l.m4 --- userv-0.65.2/lexer.l.m4 Sun Oct 10 12:39:46 1999 +++ userv-1.0.0/lexer.l.m4 Sun Nov 7 15:39:53 1999 @@ -132,6 +132,7 @@ static struct error_handling eh = { tokv_word_errorstostderr, 0,0,0,0,0 }; static int dequote(char *inplace); +static void countnewlines(void); #define YY_NO_UNPUT @@ -158,10 +159,8 @@ assert(*++ep); lr_max= (int)strtoul(ep,&ep,10); assert(!*ep); - if (lr_max < lr_min) { - parseerrprint("fd range has min > max"); - return tokv_error; - } + if (lr_max < lr_min) + return parseerrprint("fd range has min > max"); return tokv_fdrange; } [0-9]{1,8}- { @@ -172,23 +171,20 @@ lr_max=-1; return tokv_fdstoend; } -([\ \t]*\\[\ \t]*\n[\ \t]*)+ return tokv_lwsp; +([\ \t]*\\[\ \t]*\n[\ \t]*)+ countnewlines(); return tokv_lwsp; [\ \t]+ return tokv_lwsp; [\ \t]*\n cstate->lineno++; return tokv_newline; [\ \t]*\#[^\n]*\n cstate->lineno++; return tokv_newline; -[\ \t]*\#[^\n]* { - parseerrprint("missing newline at eof after comment"); - return tokv_error; - } +[\ \t]*\#[^\n]* return parseerrprint("missing newline at eof after comment"); \"([^\\\"\n]|\\[a-z]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2}|\\[[:punct:]]|\\[ \t]*\n)*\" { + countnewlines(); return dequote(yytext); } -\".* { - parseerrprint("misquoted or unterminated string"); - return tokv_error; - } -[^\ \t\n\\]+ return tokv_barestring; -<> return tokv_eof; +[^\ \t\n\\\"]+ return tokv_barestring; +<> return tokv_eof; +\" return parseerrprint("misquoted or unterminated string"); +\\ return parseerrprint("unexpected backslash"); +. abort(); /* expect lex warning "rule cannot be matched" */ *} changequote(`,') %% diff -ruN userv-0.65.2/overview.ps userv-1.0.0/overview.ps --- userv-0.65.2/overview.ps Sun Apr 18 19:15:17 1999 +++ userv-1.0.0/overview.ps Tue Nov 9 23:32:44 1999 @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 %%Title: overview.fig -%%Creator: fig2dev Version 3.2 Patchlevel 0-beta3 -%%CreationDate: Sun Apr 18 18:52:55 1999 -%%For: ian@anarres (Ian Jackson) +%%Creator: fig2dev Version 3.2 Patchlevel 1 +%%CreationDate: Tue Nov 9 23:30:14 1999 +%%For: ian@davenant (Ian Jackson) %%Orientation: Landscape %%BoundingBox: 121 174 474 667 %%Pages: 1 @@ -98,33 +98,33 @@ 7.500 slw [15 45] 45 sd gs clippath -3405 2328 m 3375 2448 l 3345 2328 l 3345 2490 l 3405 2490 l cp +3405 2355 m 3375 2475 l 3345 2355 l 3345 2490 l 3405 2490 l cp clip n 3375 1875 m 3375 2475 l gs col-1 s gr gr [] 0 sd % arrowhead -n 3405 2328 m 3375 2448 l 3345 2328 l col-1 s +n 3405 2355 m 3375 2475 l 3345 2355 l col-1 s % Polyline [15 45] 45 sd gs clippath -5928 2970 m 6048 2999 l 5928 3030 l 6090 3030 l 6090 2970 l cp -4306 3029 m 4185 2999 l 4306 2969 l 4144 2969 l 4144 3029 l cp +5955 2970 m 6075 3000 l 5955 3030 l 6090 3030 l 6090 2970 l cp +4279 3029 m 4159 2999 l 4279 2969 l 4144 2969 l 4144 3029 l cp clip n 4159 2999 m 6075 3000 l gs col-1 s gr gr [] 0 sd % arrowhead -n 4306 3029 m 4185 2999 l 4306 2969 l col-1 s +n 4279 3029 m 4159 2999 l 4279 2969 l col-1 s % arrowhead -n 5928 2970 m 6048 2999 l 5928 3030 l col-1 s +n 5955 2970 m 6075 3000 l 5955 3030 l col-1 s % Polyline [15 45] 45 sd gs clippath -3405 4203 m 3375 4323 l 3345 4203 l 3345 4365 l 3405 4365 l cp +3405 4230 m 3375 4350 l 3345 4230 l 3345 4365 l 3405 4365 l cp clip n 3375 3525 m 3375 4350 l gs col-1 s gr gr [] 0 sd % arrowhead -n 3405 4203 m 3375 4323 l 3345 4203 l col-1 s +n 3405 4230 m 3375 4350 l 3345 4230 l col-1 s % Polyline n 2700 4425 m 4125 4425 l 4125 5025 l 2700 5025 l cp gs col0 s gr % Polyline @@ -132,12 +132,12 @@ % Polyline [15 45] 45 sd gs clippath -6930 5628 m 6900 5748 l 6870 5628 l 6870 5790 l 6930 5790 l cp +6930 5655 m 6900 5775 l 6870 5655 l 6870 5790 l 6930 5790 l cp clip n 6900 3525 m 6900 5775 l gs col-1 s gr gr [] 0 sd % arrowhead -n 6930 5628 m 6900 5748 l 6870 5628 l col-1 s +n 6930 5655 m 6900 5775 l 6870 5655 l col-1 s % Polyline n 2700 2533 m 4125 2533 l 4125 3465 l 2700 3465 l cp gs col-1 s gr % Polyline @@ -258,7 +258,7 @@ % Polyline [15 45] 45 sd gs clippath -2479 4691 m 2598 4724 l 2477 4751 l 2639 4755 l 2641 4695 l cp +2506 4692 m 2625 4725 l 2504 4752 l 2639 4755 l 2641 4695 l cp clip n 2625 4725 m 2590 4724 l 2569 4724 l 2542 4724 l 2511 4723 l 2477 4722 l 2441 4721 l 2404 4720 l 2368 4719 l 2332 4717 l 2298 4715 l @@ -272,14 +272,15 @@ 1416 4524 l 1390 4521 l 1361 4519 l 1330 4517 l 1298 4515 l 1263 4513 l 1225 4511 l 1185 4509 l 1143 4508 l 1099 4506 l 1053 4505 l 1007 4504 l 962 4503 l 919 4502 l 879 4502 l - 843 4501 l 812 4501 l 788 4500 l 771 4500 l gs col-1 s gr gr + 843 4501 l 812 4501 l 788 4500 l 771 4500 l 759 4500 l + 753 4500 l 750 4500 l gs col-1 s gr gr [] 0 sd % arrowhead -n 2479 4691 m 2598 4724 l 2477 4751 l col-1 s +n 2506 4692 m 2625 4725 l 2504 4752 l col-1 s % Polyline [15 45] 45 sd gs clippath -4345 4687 m 4226 4651 l 4348 4627 l 4186 4619 l 4184 4679 l cp +4318 4686 m 4200 4650 l 4321 4626 l 4186 4619 l 4184 4679 l cp clip n 4200 4650 m 4242 4652 l 4266 4653 l 4295 4654 l 4326 4656 l 4359 4658 l 4392 4661 l 4423 4664 l 4453 4667 l 4481 4671 l 4506 4675 l @@ -294,22 +295,23 @@ 5021 5548 l 5028 5582 l 5037 5617 l 5045 5651 l 5053 5685 l 5061 5718 l 5070 5750 l 5078 5781 l 5087 5811 l 5095 5840 l 5104 5868 l 5113 5894 l 5122 5920 l 5131 5943 l 5140 5966 l - 5150 5988 l 5162 6011 l 5174 6033 l 5187 6055 l 5200 6075 l - 5215 6094 l 5230 6112 l 5245 6129 l 5262 6145 l 5279 6160 l - 5297 6174 l 5315 6187 l 5334 6199 l 5353 6210 l 5372 6220 l - 5391 6229 l 5411 6237 l 5430 6244 l 5450 6250 l 5469 6256 l - 5488 6261 l 5507 6265 l 5525 6269 l 5544 6272 l 5563 6275 l - 5583 6278 l 5604 6281 l 5625 6283 l 5647 6285 l 5671 6287 l - 5696 6289 l 5722 6291 l 5751 6292 l 5782 6293 l 5814 6295 l - 5848 6296 l 5884 6297 l 5919 6297 l 5953 6298 l 5985 6299 l - 6013 6299 l 6036 6300 l 6054 6300 l gs col-1 s gr gr + 5150 5987 l 5150 5988 l 5162 6011 l 5174 6033 l 5187 6055 l + 5200 6075 l 5215 6094 l 5230 6112 l 5245 6129 l 5262 6145 l + 5279 6160 l 5297 6174 l 5315 6187 l 5334 6199 l 5353 6210 l + 5372 6220 l 5391 6229 l 5411 6237 l 5430 6244 l 5450 6250 l + 5469 6256 l 5488 6261 l 5507 6265 l 5525 6269 l 5544 6272 l + 5563 6275 l 5583 6278 l 5604 6281 l 5625 6283 l 5647 6285 l + 5671 6287 l 5696 6289 l 5722 6291 l 5751 6292 l 5782 6293 l + 5814 6295 l 5848 6296 l 5884 6297 l 5919 6297 l 5953 6298 l + 5985 6299 l 6013 6299 l 6036 6300 l 6054 6300 l 6065 6300 l + 6072 6300 l 6075 6300 l gs col-1 s gr gr [] 0 sd % arrowhead -n 4345 4687 m 4226 4651 l 4348 4627 l col-1 s +n 4318 4686 m 4200 4650 l 4321 4626 l col-1 s % Polyline [15 45] 45 sd gs clippath -5928 6420 m 6048 6450 l 5928 6480 l 6090 6480 l 6090 6420 l cp +5955 6420 m 6075 6450 l 5955 6480 l 6090 6480 l 6090 6420 l cp clip n 4200 4800 m 4203 4800 l 4211 4800 l 4223 4801 l 4242 4802 l 4266 4803 l 4295 4804 l 4326 4806 l 4359 4808 l 4392 4811 l 4423 4814 l @@ -324,23 +326,23 @@ 4997 5594 l 5005 5628 l 5013 5663 l 5021 5698 l 5028 5732 l 5037 5767 l 5045 5801 l 5053 5835 l 5061 5868 l 5070 5900 l 5078 5931 l 5087 5961 l 5095 5990 l 5104 6018 l 5113 6044 l - 5122 6070 l 5131 6093 l 5140 6116 l 5150 6138 l 5162 6161 l - 5174 6183 l 5187 6205 l 5200 6225 l 5215 6244 l 5230 6262 l - 5245 6279 l 5262 6295 l 5279 6310 l 5297 6324 l 5315 6337 l - 5334 6349 l 5353 6360 l 5372 6370 l 5391 6379 l 5411 6387 l - 5430 6394 l 5450 6400 l 5469 6406 l 5488 6411 l 5507 6415 l - 5525 6419 l 5544 6422 l 5563 6425 l 5583 6428 l 5604 6431 l - 5625 6433 l 5647 6435 l 5671 6437 l 5696 6439 l 5722 6441 l - 5751 6442 l 5782 6443 l 5814 6445 l 5848 6446 l 5884 6447 l - 5919 6447 l 5953 6448 l 5985 6449 l 6013 6449 l 6036 6450 l - 6075 6450 l gs col-1 s gr gr + 5122 6070 l 5131 6093 l 5140 6116 l 5150 6137 l 5150 6138 l + 5162 6161 l 5174 6183 l 5187 6205 l 5200 6225 l 5215 6244 l + 5230 6262 l 5245 6279 l 5262 6295 l 5279 6310 l 5297 6324 l + 5315 6337 l 5334 6349 l 5353 6360 l 5372 6370 l 5391 6379 l + 5411 6387 l 5430 6394 l 5450 6400 l 5469 6406 l 5488 6411 l + 5507 6415 l 5525 6419 l 5544 6422 l 5563 6425 l 5583 6428 l + 5604 6431 l 5625 6433 l 5647 6435 l 5671 6437 l 5696 6439 l + 5722 6441 l 5751 6442 l 5782 6443 l 5814 6445 l 5848 6446 l + 5884 6447 l 5919 6447 l 5953 6448 l 5985 6449 l 6013 6449 l + 6036 6450 l 6075 6450 l gs col-1 s gr gr [] 0 sd % arrowhead -n 5928 6420 m 6048 6450 l 5928 6480 l col-1 s +n 5955 6420 m 6075 6450 l 5955 6480 l col-1 s % Polyline [15 45] 45 sd gs clippath -897 4380 m 777 4350 l 897 4320 l 735 4320 l 735 4380 l cp +870 4380 m 750 4350 l 870 4320 l 735 4320 l 735 4380 l cp clip n 2625 4575 m 2622 4575 l 2617 4575 l 2606 4575 l 2590 4574 l 2569 4574 l 2542 4574 l 2511 4573 l 2477 4572 l 2441 4571 l 2404 4570 l @@ -358,7 +360,7 @@ 788 4350 l 750 4350 l gs col-1 s gr gr [] 0 sd % arrowhead -n 897 4380 m 777 4350 l 897 4320 l col-1 s +n 870 4380 m 750 4350 l 870 4320 l col-1 s /Times-Italic ff 240.00 scf sf 3460 2300 m gs 1 -1 sc (fork/exec) col-1 sh gr diff -ruN userv-0.65.2/parser.c userv-1.0.0/parser.c --- userv-0.65.2/parser.c Sat Oct 9 19:45:57 1999 +++ userv-1.0.0/parser.c Sun Nov 7 15:39:53 1999 @@ -98,7 +98,7 @@ tstate->filename,tstate->reportlineno); } -void parseerrprint(const char *fmt, ...) { +int parseerrprint(const char *fmt, ...) { va_list al; char errmsg[MAX_ERRMSG_LEN]; @@ -107,6 +107,8 @@ vsnytprintfcat(errmsg,sizeof(errmsg),fmt,al); senderrmsg(errmsg,eh.handling); va_end(al); + + return tokv_error; } static int unexpected(int found, int wanted, const char *wantedstr) { @@ -115,13 +117,11 @@ */ if (found == wanted) return 0; if (found == tokv_error) return found; - parseerrprint("found %s, expected %s",printtoken(found),wantedstr); - return tokv_error; + return parseerrprint("found %s, expected %s",printtoken(found),wantedstr); } static int stringoverflow(const char *where) { - parseerrprint("string buffer became far too large building %s",where); - return tokv_error; + return parseerrprint("string buffer became far too large building %s",where); } /* @@ -136,6 +136,13 @@ free(array); } +static void countnewlines(void) { + char *p; + for (p=yytext; *p; p++) + if (*p == '\n') + cstate->lineno++; +} + static int dequote(char *inplace) { char *p, *q, buf[4], *bep; int v; @@ -145,35 +152,28 @@ while (*p && *p != '"') { if (*p != '\\') { *q++= *p++; continue; } switch (*++p) { - case 'n': *q++= '\n'; continue; - case 'r': *q++= '\r'; continue; - case 't': *q++= '\t'; continue; + case 'n': *q++= '\n'; p++; continue; + case 'r': *q++= '\r'; p++; continue; + case 't': *q++= '\t'; p++; continue; case 'x': p++; - if (!((buf[0]= *p++) && (buf[1]= *p++))) { - parseerrprint("quoted string ends inside \\x sequence"); - return tokv_error; - } + if (!((buf[0]= *p++) && (buf[1]= *p++))) + return parseerrprint("quoted string ends inside \\x sequence"); buf[2]= 0; v= strtoul(buf,&bep,16); - if (bep != buf+2) { - parseerrprint("invalid \\ sequence \\x%s in quoted string",buf); - return tokv_error; - } + if (bep != buf+2) + return parseerrprint("invalid \\ sequence \\x%s in quoted string",buf); assert(!(v & ~0xff)); *q++= v; continue; default: - if (isalpha(*p)) { - parseerrprint("unknown \\ sequence \\%c in quoted string",*p); - return tokv_error; - } else if (isdigit(*p)) { + if (isalpha(*p)) + return parseerrprint("unknown \\ sequence \\%c in quoted string",*p); + if (isdigit(*p)) { if (!((buf[0]= *p++) && (buf[1]= *p++) && (buf[2]= *p++))) abort(); buf[3]= 0; v= strtoul(buf,&bep,8); - if (bep != buf+3 || (v & ~0xff)) { - parseerrprint("invalid \\ sequence \\%s in quoted string",buf); - return tokv_error; - } + if (bep != buf+3 || (v & ~0xff)) + return parseerrprint("invalid \\ sequence \\%s in quoted string",buf); *q++= v; continue; } else if (ispunct(*p)) { *q++= *p++; continue; @@ -348,8 +348,8 @@ } if (used>=size) { if (used >= MAX_ARGSDEFVAR) { - parseerrprint("far too many arguments to service program"); - r= tokv_error; goto error; + r= parseerrprint("far too many arguments to service program"); + goto error; } size= (used+5)<<1; newargs= xrealloc(newargs,sizeof(char*)*(size+1)); @@ -380,10 +380,8 @@ buildbuf[0]= 0; for (;;) { r= yylex(); if (r == tokv_error) return r; - if (r == tokv_eof) { - parseerrprint("unexpected end of file in message text"); - return tokv_error; - } + if (r == tokv_eof) + return parseerrprint("unexpected end of file in message text"); if (r == tokv_newline) break; usetext= r == tokv_lwsp ? " " : yytext; tl+= strlen(usetext); @@ -410,8 +408,7 @@ if (token == tokv_newline) return 0; if (token == tokv_error) return token; assert(token == tokv_eof); - parseerrprint("unexpected end of file while looking for end of line"); - return tokv_error; + return parseerrprint("unexpected end of file while looking for end of line"); } static int skip(int allowce) { @@ -439,9 +436,8 @@ r= skip(token); if (r & tokt_exception) return r; } } else if (!(token & tokt_directive) && !(token & tokt_condop)) { - parseerrprint("not a directive (or conditional operator) " - "while looking for control structure end"); - return tokv_error; + return parseerrprint("not a directive (or conditional operator) " + "while looking for control structure end"); } r= skiptoeol(); if (r) return r; } @@ -616,10 +612,8 @@ r= paa_1path(&cp); if (r) return r; file= fopen(cp,"r"); - if (!file) { - parseerrprint("unable to open file `%s' for grep: %s",cp,strerror(errno)); - return tokv_error; - } + if (!file) + return parseerrprint("unable to open file `%s' for grep: %s",cp,strerror(errno)); maxlen= 0; for (pp= pv; *pp; pp++) { l= strlen(*pp); if (l > maxlen) maxlen= l; } buf= xmalloc(maxlen+2); actrue= 0; c= 0; @@ -864,21 +858,16 @@ if (!(r & tokt_fdrange)) return unexpected(r,-1,"file descriptor range"); fdmin= lr_min; fdmax= lr_max; if (fdmin<0 || fdmin>MAX_ALLOW_FD || - (fdmax != -1 && fdmax<0) || fdmax>MAX_ALLOW_FD) { - parseerrprint("file descriptor in range is negative or far too large"); - return tokv_error; - } + (fdmax != -1 && fdmax<0) || fdmax>MAX_ALLOW_FD) + return parseerrprint("file descriptor in range is negative or far too large"); r= yylex(); if (r == tokv_error) return r; if (r == tokv_newline) { - if (needreadwrite > 0) { - parseerrprint("read or write is required"); - return tokv_error; - } + if (needreadwrite > 0) + return parseerrprint("read or write is required"); havereadwrite= 0; } else if (r == tokv_lwsp) { - if (needreadwrite < 0) { - parseerrprint("read or write not allowed"); return tokv_error; - } + if (needreadwrite < 0) + return parseerrprint("read or write not allowed"); r= yylex(); if (r == tokv_error) return r; if (!(r & tokt_readwrite)) return unexpected(r,-1,"read or write (or perhaps newline)"); @@ -890,7 +879,8 @@ ensurefdarray(fdmin); if (fdmax == -1) { if (!(dtoken == tokv_word_rejectfd || dtoken == tokv_word_ignorefd)) - parseerrprint("unspecified maximum only allowed with reject-fd and ignore-fd"); + return parseerrprint("unspecified maximum only allowed" + " with reject-fd and ignore-fd"); fdmax= fdarrayused-1; restfdwantstate= dtoken; restfdwantrw= havereadwrite; @@ -947,10 +937,8 @@ r= paa_1path(&cp); if (r) return r; file= fopen(cp,"a"); - if (!file) { - parseerrprint("unable to open error log file `%s': %s",cp,strerror(errno)); - return tokv_error; - } + if (!file) + return parseerrprint("unable to open error log file `%s': %s",cp,strerror(errno)); if (setvbuf(file,0,_IOLBF,MAX_ERRMSG_LEN)) { parseerrprint("unable to set line buffering on errors file: %s",strerror(errno)); fclose(file); return tokv_error; @@ -985,11 +973,10 @@ r= paa_1path(&cp); if (r) return r; r= parse_file(cp,&found); if (r) return r; if (found || dtoken == tokv_word_includeifexist) return 0; - parseerrprint(dtoken == tokv_word_includesysconfig ? - "system configuration file `%s' does not exist" : - "included file `%s' does not exist", - cp); - return tokv_error; + return parseerrprint(dtoken == tokv_word_includesysconfig ? + "system configuration file `%s' does not exist" : + "included file `%s' does not exist", + cp); } int df_includedirectory(int dtoken) { @@ -1004,10 +991,8 @@ r= paa_1path(&cpget); if (r) return r; d= opendir(cpget); - if (!d) { - parseerrprint("unable to open directory `%s': %s",cpget,strerror(errno)); - return tokv_error; - } + if (!d) + return parseerrprint("unable to open directory `%s': %s",cpget,strerror(errno)); cp= xstrsave(cpget); cpl= strlen(cp); while ((de= readdir(d))) { @@ -1024,9 +1009,9 @@ snyprintf(buildbuf,buildbuflen,"%s/%s",cp,de->d_name); r= parse_file(buildbuf,&found); if (r) goto x_err; if (!found) { - parseerrprint("unable to open file `%s' in included directory `%s': %s", - de->d_name,cp,strerror(errno)); - r= tokv_error; goto x_err; + r= parseerrprint("unable to open file `%s' in included directory `%s': %s", + de->d_name,cp,strerror(errno)); + goto x_err; } } if (closedir(d)) { @@ -1197,8 +1182,7 @@ r= paa_1path(&cp); if (r) return r; if (!chdir(cp)) return 0; - parseerrprint("unable to change directory to `%s': %s",cp,strerror(errno)); - return tokv_error; + return parseerrprint("unable to change directory to `%s': %s",cp,strerror(errno)); } int df_userrcfile(int dtoken) { @@ -1224,8 +1208,7 @@ int r; r= paa_message(&mp); if (r) return r; - parseerrprint("`error' directive: %s",mp); - return tokv_error; + return parseerrprint("`error' directive: %s",mp); } int df_eof(int dtoken) { @@ -1311,27 +1294,23 @@ char *filename; struct stat newstab; - if (fileparselevel >= MAX_INCLUDE_NEST) { - parseerrprint("too many nested levels of included files"); - return tokv_error; - } + if (fileparselevel >= MAX_INCLUDE_NEST) + return parseerrprint("too many nested levels of included files"); file= fopen(string,"r"); if (!file) { if (errno == ENOENT) { if (didexist) *didexist= 0; return 0; } - parseerrprint("unable to open config file `%s': %s",string,strerror(errno)); - return tokv_error; + return parseerrprint("unable to open config file `%s': %s",string,strerror(errno)); } r= fstat(fileno(file),&newstab); if (r) syscallerror("unable to fstat new file"); for (checkrecurse= cstate; checkrecurse; checkrecurse= checkrecurse->upstate) { if (!checkrecurse->filestab.st_mode) continue; if (newstab.st_dev==checkrecurse->filestab.st_dev && newstab.st_ino==checkrecurse->filestab.st_ino) { - parseerrprint("recursion detected - config file `%s' calls itself",string); fclose(file); - return tokv_error; + return parseerrprint("recursion detected - config file `%s' calls itself",string); } } @@ -1344,10 +1323,8 @@ fileparselevel++; r= parser(0); - if (ferror(file)) { - parseerrprint("error reading configuration file `%s'",string); - r= tokv_error; - } + if (ferror(file)) + r= parseerrprint("error reading configuration file `%s'",string); fileparselevel--; parser_pop(); diff -ruN userv-0.65.2/servexec.c userv-1.0.0/servexec.c --- userv-0.65.2/servexec.c Sun Oct 10 12:39:46 1999 +++ userv-1.0.0/servexec.c Mon Mar 6 18:14:46 2000 @@ -71,7 +71,7 @@ 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 diff -ruN userv-0.65.2/spec.html/ch-client.html userv-1.0.0/spec.html/ch-client.html --- userv-0.65.2/spec.html/ch-client.html Sun Jun 20 19:14:36 1999 +++ userv-1.0.0/spec.html/ch-client.html Mon Mar 6 18:14:46 2000 @@ -315,7 +315,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/ch-config.html userv-1.0.0/spec.html/ch-config.html --- userv-0.65.2/spec.html/ch-config.html Sat Oct 9 19:45:57 1999 +++ userv-1.0.0/spec.html/ch-config.html Mon Mar 6 18:14:46 2000 @@ -70,9 +70,9 @@ line. The portion of a line following a hash character # is taken as a comment and ignored. Each directive consists of a series of tokens separated by linear whitespace (spaces and tabs); tokens may -be words consisting of non-space characters (except backslash), or, -where a string is required, a string in double quotes. Double-quoted -strings may contain the following backslash escapes: +be words consisting of non-space characters, or, where a string is +required, a string in double quotes. Double-quoted strings may +contain the following backslash escapes:
\n
newline @@ -99,11 +99,6 @@ relative to the service user's home directory.

-

-Logical lines may be continued by putting a backslash \ at the -end of a line; this counts as part of linear whitespace. -

-

@@ -161,12 +156,11 @@ the directory cannot be accessed. A translation will be applied to values before they are used to -construct a filename, so that the lookup cannot access dotfiles, -backup files, files in other directories and the like: each slash will -be replaced with a colon followed by a hyphen :-, and all -characters which are not lowercase alphanumerics, hyphens or -underscores will have a colon prepended (so that colons are doubled). -A parameter value which is the empty string will be replaced with +construct a filename, so that the lookup cannot access dotfiles or +files in other directories: values starting with full stops will have +a colon prepended (making :.), colons will be doubled, and each +slash will be replaced with a colon followed by a hyphen :-. A +parameter value which is the empty string will be replaced with :empty (note that this is different from a parameter not having any values). @@ -180,12 +174,13 @@

error text ...
Causes an error whose message includes the descriptive string text. text may consist of several tokens with intervening -linear whitespace. Each set of linear whitespace will appear in the -message as a single space. The usual meaning of double-quoted strings +whitespace. The whitespace will be included in the message as found +in the configuration file: all the characters until the end of the +line will be included verbatim, unless they are part of a +double-quoted string, in which case the usual meaning of the string (i.e., after backslash escape processing) will be used. Comments and linear whitespace at the end of the line (or just before the comment) -will still be ignored. Apart from those cases, each token's text will -be included verbatim. +will still be ignored.

message text ...
Causes a message including the descriptive string text to be delivered as if it were an error message, but does not actually cause @@ -591,7 +586,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/ch-envir.html userv-1.0.0/spec.html/ch-envir.html --- userv-0.65.2/spec.html/ch-envir.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/ch-envir.html Mon Mar 6 18:14:46 2000 @@ -182,7 +182,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/ch-intro.html userv-1.0.0/spec.html/ch-intro.html --- userv-0.65.2/spec.html/ch-intro.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/ch-intro.html Mon Mar 6 18:14:46 2000 @@ -58,7 +58,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/ch-ipass.html userv-1.0.0/spec.html/ch-ipass.html --- userv-0.65.2/spec.html/ch-ipass.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/ch-ipass.html Mon Mar 6 18:14:46 2000 @@ -134,7 +134,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/ch-notes.html userv-1.0.0/spec.html/ch-notes.html --- userv-0.65.2/spec.html/ch-notes.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/ch-notes.html Mon Mar 6 18:14:46 2000 @@ -215,7 +215,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/footnotes.html userv-1.0.0/spec.html/footnotes.html --- userv-0.65.2/spec.html/footnotes.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/footnotes.html Mon Mar 6 18:14:46 2000 @@ -44,7 +44,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.html/index.html userv-1.0.0/spec.html/index.html --- userv-0.65.2/spec.html/index.html Sun Jun 20 19:14:37 1999 +++ userv-1.0.0/spec.html/index.html Mon Mar 6 18:14:46 2000 @@ -101,7 +101,7 @@ User service daemon and client specification
-0.64.1
+1.0.0
Ian Jackson ian@davenant.greenend.org.uk
diff -ruN userv-0.65.2/spec.ps userv-1.0.0/spec.ps --- userv-0.65.2/spec.ps Sat Oct 9 19:45:57 1999 +++ userv-1.0.0/spec.ps Mon Mar 6 18:14:46 2000 @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: Basser Lout Version 3.10 (November 1996) -%%CreationDate: Sat Oct 9 19:43:49 1999 +%%CreationDate: Mon Mar 6 18:14:17 2000 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentMedia: Plain 595 842 0 white () @@ -261,15 +261,15 @@ 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 +340 fnt84 1359 13772(User)m 2118(ser)s 3(vice)k 3190(daemon)s +4421(and)s 5047(client)s 5922(speci\207cation)s 200 fnt82 2792 13256(Ian)m 3093(Jackson)s gsave -3770 13061 translate +3770 13301 translate 0.6953 1.0000 scale 200 fnt31 1031 -43()m grestore -240 fnt82 4245 12513(0.64.1)m -9066 609 0 609 240 240 60 0 11253 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 @@ -278,12 +278,12 @@ grestore 320 fnt84 0 5(0.1.)m 628(Abstract)s grestore -0 10959(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 -7628(another)s 8405(when)s 0 10719(only)m 480(limited)s 1214(trust)s -1698(e)s 3(xists)k 2290(between)s 3144(them.)s 9066 670 0 670 240 240 60 0 9695 LoutGr2 +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 @@ -294,53 +294,53 @@ 0 66(0.2.)m 628(Copyright)s 2109(Notice)s grestore gsave -0 9455 translate +0 9697 translate 0.6953 1.0000 scale 240 fnt31 0 -52(userv)m grestore -560 9401(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 -0 9047 translate +0 9289 translate 0.6953 1.0000 scale 240 fnt31 0 -52(userv)m grestore -544 8993(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 -8315(General)s 0 8753(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 -0 8513(\(at)m 311(your)s 810(option\))s 1550(an)s 3(y)k -1947(later)s 2430(v)s 3(ersion.)k 0 8105(This)m 476(program)s +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 -5063(useful,)s 5754(b)s 4(ut)k 240 fnt83 6116 8107(without)m -6898(any)s 7300(warr)s 3(anty)k 240 fnt82 8171 8105(;)m -8283(without)s 0 7864(e)m 6(v)k 3(en)k 500(the)s +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 -2808 7866(mer)m 8(c)k 3(hantability)k 240 fnt82 4367 7864(or)m -240 fnt83 4626 7866(\207tness)m 5279(for)s 5623(a)s 5798(particular)s -6833(purpose)s 240 fnt82 7598 7864(.)m 7702(See)s 8103(the)s -8451(GNU)s 0 7624(General)m 811(Public)s 1475(License)s 2274(for)s -2612(more)s 3159(details.)s 0 7216(Y)m 26(ou)k 442(should)s +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 -7697 7270 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 6975(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 -7283(MA)s 7726(02111-1307,)s 0 6735(USA.)m 9066 610 0 610 240 240 60 0 5771 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 @@ -350,55 +350,55 @@ 320 fnt84 0 6(0.3.)m 628(Contents)s grestore -0 5477(1.)m 1200(Introduction)s 8962(3)s 0 5250(2.)m -1200(Client)s 1844(program)s 2714(usage)s 8952(4)s 0 5013(2.1.)m -1200(Options)s 8952(4)s 0 4776(2.2.)m 1200(Security-o)s 3(v)k 3(erriding)k -3118(options)s 8958(7)s 0 4539(3.)m 1200(Ex)s 3(ecution)k +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 -4835(program)s 8959(8)s 0 4302(3.1.)m 1200(File)s 1627(descriptors)s -8959(8)s 0 4065(3.2.)m 1200(En)s 9(vironment)k 8955(9)s -0 3838(4.)m 1200(Service-side)s 2436(con\207guration)s 8831(10)s 0 3601(4.1.)m -1200(Con\207guration)s 2587(\207le)s 2948(syntax)s 8831(10)s 0 3364(4.2.)m +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 -8851(11)s 0 3126(4.3.)m 1200(Errors)s 1847(in)s 2090(the)s -2438(con\207guration)s 3771(\207le)s 8833(16)s 0 2888(4.4.)m 1200(Def)s 2(aults)k -8833(16)s 0 2661(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 2423(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 -8831(20)s 0 2185(6.1.)m 1200(Standard)s 2108(services)s 2928(and)s -3332(directory)s 4248(management)s 8831(20)s 0 1947(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 -5636(subsystems)s 8831(20)s 0 1709(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 -5020 1763 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 -8831(20)s 0 1471(6.4.)m gsave -1200 1525 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 -4067 1525 translate +4067 1767 translate 0.6953 1.0000 scale 240 fnt31 0 -52(really)m grestore 4727(and)s gsave -5131 1525 translate +5131 1767 translate 0.6953 1.0000 scale 240 fnt31 0 -52(sudo)m grestore 8851(21)s -0 1232(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 -3052(speci\207cation)s 8491(0.64.1)s +3052(speci\207cation)s 8591(1.0.0)s grestore grestore @@ -435,7 +435,7 @@ gsave 0 LoutMargSet grestore -240 fnt84 0 13842(2)m 240 fnt82 0 52(0.64.1)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 @@ -523,7 +523,7 @@ 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 -8491(0.64.1)s +8591(1.0.0)s grestore grestore @@ -878,20 +878,20 @@ 240 fnt31 0 -52(write)m grestore -1134 0 0 0 240 240 60 0 948 LoutGr2 +1134 0 0 0 240 240 60 0 947 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore -122 fnt82 0 753(1)m gsave -58 726 translate +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 683(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 -240 fnt82 0 52(0.64.1)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 @@ -1373,7 +1373,7 @@ 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 -8491(0.64.1)s +8591(1.0.0)s grestore grestore @@ -1715,7 +1715,7 @@ 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.64.1)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 @@ -1928,7 +1928,7 @@ 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 8491(0.64.1)s +3052(speci\207cation)s 8591(1.0.0)s grestore grestore @@ -2185,7 +2185,7 @@ 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.64.1)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 @@ -2412,7 +2412,7 @@ 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 8491(0.64.1)s +2462(client)s 3052(speci\207cation)s 8591(1.0.0)s grestore grestore @@ -2542,89 +2542,89 @@ 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 166(hash)s 662(character)s gsave -1596 7039 translate +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 -1756(is)s 1966(tak)s 2(en)k 2539(as)s 2789(a)s -2955(comment)s 3905(and)s 4309(ignored.)s 5144(Each)s 5679(directi)s 6(v)k 3(e)k -6561(consists)s 7369(of)s 7640(a)s 7806(series)s 8400(of)s -0 6745(tok)m 2(ens)k 674(separated)s 1634(by)s 1928(linear)s -2531(whitespace)s 3649(\(spaces)s 4403(and)s 4807(tabs\);)s 5383(tok)s 2(ens)k -6057(may)s 6523(be)s 6805(w)s 2(ords)k 7439(consisting)s -8462(of)s 0 6505(non-space)m 1023(characters)s 2037(\(e)s 3(xcept)k -2794(backslash\),)s 3906(or)s 9(,)k 4200(where)s 4836(a)s -4998(string)s 5592(is)s 5798(required,)s 6698(a)s 6860(string)s -7454(in)s 7693(double)s 8397(quotes.)s 0 6265(Double-quoted)m 1494(strings)s -2182(may)s 2648(contain)s 3409(the)s 3757(follo)s 6(wing)k -4734(backslash)s 5721(escapes:)s gsave +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 +240 fnt31 +0 -52(\\n)m grestore -480 5785(ne)m 6(wline)k -gsave +480 5785(ne)m 6(wline)k gsave 120 5599 translate 0.6953 1.0000 scale -240 fnt31 0 -52(\\t)m +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 - +240 fnt31 0 -52(\\r)m grestore -480 4825(carriage)m 1304(return)s gsave +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 +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 +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 +240 fnt31 0 -52(\\x)m gsave 288 0 translate 1.4219 1.0000 scale -240 fnt83 0 -52(XX)m +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 +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 +240 fnt31 +0 -52(\\)m gsave 144 0 translate 1.4219 1.0000 scale -240 fnt83 0 -52(punctuation)m - +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 +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 +240 fnt31 +0 -52(\\\\)m grestore 3766(,)s gsave 3873 3439 translate 0.6953 1.0000 scale -240 fnt31 0 -52(\\")m - +240 fnt31 0 -52(\\")m grestore -4073(\))s gsave +4073(\))s +gsave 120 3198 translate 0.6953 1.0000 scale 240 fnt31 0 -52(\\)m gsave @@ -2652,18 +2652,19 @@ 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 0 1454(Logical)m 785(lines)s -1287(may)s 1753(be)s 2035(continued)s 3037(by)s 3331(putting)s -4062(a)s 4228(backslash)s gsave -5215 1508 translate -0.6953 1.0000 scale -240 fnt31 0 -52(\\)m -grestore -5375(at)s -5607(the)s 5955(end)s 6359(of)s 6630(a)s 6796(line;)s -7266(this)s 7662(counts)s 8338(as)s 8588(part)s 0 1214(of)m -271(linear)s 874(whitespace.)s 0 52(0.64.1)m 4809(User)s 5320(service)s -6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s +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.0)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s +7271(client)s 7861(speci\207cation)s grestore grestore @@ -2702,25 +2703,12 @@ gsave 1 LoutMargSet grestore -240 fnt84 8839 13842(11)m gsave -0 12747 translate -240 fnt82 9066 670 0 670 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(4.2.)m 628(Con\207guration)s -2618(\207le)s 3100(dir)s 5(ecti)k 3(v)k 3(es)k - -grestore -300 fnt84 0 12132(4.2.1.)m 813(Immediate)s 2261(dir)s 5(ecti)k 3(v)k 3(es)k -240 fnt82 0 11618(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k +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 11264 translate +120 12342 translate 0.6953 1.0000 scale 240 fnt31 0 -52(cd)m gsave 432 0 translate @@ -2729,95 +2717,95 @@ grestore grestore -480 10970(Change)m +480 12048(Change)m 1268(directory)s 2184(in)s 2427(the)s 2775(service)s 3507(program.)s gsave -4421 11024 translate +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 10730(cannot)m 1178(be)s 1460(changed)s +7486(the)s 7834(directory)s 480 11808(cannot)m 1178(be)s 1460(changed)s 2316(to.)s gsave -2666 10784 translate +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 10784 translate +5622 11862 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211directory)m grestore -7884(and)s 8288(the)s 480 10490(in)m 9(v)k 4(ocation)k +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 10250(w)m 2(ould)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 10010(causing)m 1264(an)s +7714(ne)s 6(w)k 8142(\(probably)s 480 11088(causing)m 1264(an)s 1547(error\).)s gsave -120 9670 translate +120 10748 translate 0.6953 1.0000 scale 240 fnt31 0 -52(eof)m grestore -480 9376(Stop)m 972(reading)s +480 10454(Stop)m 972(reading)s 1742(the)s 2090(con\207guration)s 3423(\207le)s 3784(in)s 4027(question,)s 4945(as)s 5195(if)s 5412(end)s 5816(of)s 6087(\207le)s 6448(had)s 6852(been)s 7361(reached.)s 8208(An)s 3(y)k -480 9136(control)m 1212(constructs)s 2232(\()s gsave -2305 9190 translate +480 10214(control)m 1212(constructs)s 2232(\()s gsave +2305 10268 translate 0.6953 1.0000 scale 240 fnt31 0 -52(if)m grestore 2505(,)s gsave -2612 9190 translate +2612 10268 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore 3673(or)s gsave -3932 9190 translate +3932 10268 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211push)m grestore 5033(\))s 5161(which)s 5803(were)s 6323(started)s 7017(in)s 7260(that)s 7678(\207le)s 8039(will)s 8465(be)s -480 8896(considered)m 1574(\207nished.)s 2436(P)s 3(arsing)k 3203(will)s +480 9974(considered)m 1574(\207nished.)s 2436(P)s 3(arsing)k 3203(will)s 3629(continue)s 4509(in)s 4752(the)s 5100(\207le)s 5461(which)s 6103(caused)s 6812(the)s 7160(\207le)s 7521(containing)s 8584(the)s gsave -480 8710 translate +480 9788 translate 0.6953 1.0000 scale 240 fnt31 0 -52(eof)m grestore -840 8656(to)m 1079(be)s 1361(read.)s +840 9734(to)m 1079(be)s 1361(read.)s gsave -120 8366 translate +120 9444 translate 0.6953 1.0000 scale 240 fnt31 0 -52(quit)m grestore -480 8072(Stop)m 969(reading)s 1735(con\207guration)s +480 9150(Stop)m 969(reading)s 1735(con\207guration)s 3064(\207les)s 3510(and)s 3910(act)s 4244(immediately)s 5489(on)s 5782(the)s 6126(current)s 6859(settings.)s 7689(The)s 8113(beha)s 4(viour)k -480 7832(of)m gsave -751 7886 translate +480 8910(of)m gsave +751 8964 translate 0.6953 1.0000 scale 240 fnt31 0 -52(quit)m grestore 1211(is)s 1421(subject)s 2158(to)s 2397(the)s gsave -2745 7886 translate +2745 8964 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore 3806(control)s 4538(construct.)s gsave -120 7492 translate +120 8570 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include)m gsave 1152 0 translate @@ -2828,7 +2816,7 @@ grestore gsave -120 7252 translate +120 8330 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211ifexist)m gsave 2304 0 translate @@ -2837,25 +2825,25 @@ grestore grestore -480 6958(Read)m -1026(the)s 1369(con\207guration)s 2698(\207le)s 240 fnt83 3054 6960(\207lename)m -240 fnt82 3858 6958(,)m 3961(and)s 4360(then)s 4825(return)s +480 8036(Read)m +1026(the)s 1369(con\207guration)s 2698(\207le)s 240 fnt83 3054 8038(\207lename)m +240 fnt82 3858 8036(,)m 3961(and)s 4360(then)s 4825(return)s 5447(to)s 5682(this)s 6073(\207le)s 6430(and)s 6829(continue)s -7705(parsing)s 8457(it)s 8644(with)s 480 6718(the)m 822(ne)s 3(xt)k +7705(parsing)s 8457(it)s 8644(with)s 480 7796(the)m 822(ne)s 3(xt)k 1284(directi)s 6(v)k 3(e.)k 2207(It)s 2405(is)s 2608(an)s 2884(error)s 3400(if)s 3610(the)s 3952(\207le)s 4306(cannot)s 4997(be)s 5272(opened)s 6015(and)s 6412(read,)s 6923(unless)s gsave -7565 6772 translate +7565 7850 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211ifexist)m grestore -480 6478(is)m 690(used)s +480 7556(is)m 690(used)s 1187(and)s 1591(the)s 1939(\207le)s 2300(does)s 2790(not)s 3156(e)s 3(xist,)k 3711(in)s 3954(which)s 4596(case)s 5063(the)s 5411(directi)s 6(v)k 3(e)k 6293(is)s 6503(silently)s 7260(ignored.)s gsave -120 6138 translate +120 7216 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211lookup)m gsave 2160 0 translate @@ -2872,7 +2860,7 @@ grestore gsave -120 5898 translate +120 6976 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211lookup\211all)m gsave 2736 0 translate @@ -2887,138 +2875,165 @@ grestore grestore -480 5604(Read)m 1030(the)s -1378(con\207guration)s 2711(\207le)s 3072(in)s 240 fnt83 3315 5606(dir)m 8(ectory)k -240 fnt82 4239 5604(whose)m 4907(name)s 5481(is)s 5691(the)s -6039(v)s 6(alue)k 6607(of)s 240 fnt83 6878 5606(par)m 3(ameter)k -240 fnt82 7937 5604(\(see)m 8377(the)s 480 5364(description)m 1599(of)s +480 6682(Read)m 1030(the)s +1378(con\207guration)s 2711(\207le)s 3072(in)s 240 fnt83 3315 6684(dir)m 8(ectory)k +240 fnt82 4239 6682(whose)m 4907(name)s 5481(is)s 5691(the)s +6039(v)s 6(alue)k 6607(of)s 240 fnt83 6878 6684(par)m 3(ameter)k +240 fnt82 7937 6682(\(see)m 8377(the)s 480 6442(description)m 1599(of)s gsave -1870 5418 translate +1870 6496 translate 0.6953 1.0000 scale 240 fnt31 0 -52(if)m grestore 2070(,)s 2177(`Control)s 3042(structure)s 3933(directi)s 6(v)k 3(es',)k 5038(page)s 5546(12\).)s -5969(If)s 240 fnt83 6199 5366(par)m 3(ameter)k 240 fnt82 -7258 5364(has)m 7628(se)s 6(v)k 3(eral)k 8350(v)s 6(alues)k -480 5124(the)m 3(y)k 943(will)s 1369(be)s 1651(tried)s +5969(If)s 240 fnt83 6199 6444(par)m 3(ameter)k 240 fnt82 +7258 6442(has)m 7628(se)s 6(v)k 3(eral)k 8350(v)s 6(alues)k +480 6202(the)m 3(y)k 943(will)s 1369(be)s 1651(tried)s 2146(in)s 2389(order;)s 3005(with)s gsave -3487 5178 translate +3487 6256 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211lookup)m grestore 4948(this)s 5344(search)s 6011(will)s 6437(stop)s 6889(when)s 7465(one)s 7867(is)s 8077(found,)s 8743(b)s 4(ut)k -480 4884(with)m gsave -962 4938 translate +480 5962(with)m gsave +962 6016 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211lookup\211all)m grestore 2824(the)s 3172(search)s 3839(will)s 4265(continue)s 5145(and)s 5549(an)s 3(y)k 5946(\207les)s 6395(appropriate)s 7539(to)s 7778(other)s 8329(v)s 6(alues)k -480 4644(will)m 906(be)s 1188(read)s 1657(too.)s 2127(If)s +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 4458 translate +480 5536 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:default)m grestore -1340 4404(will)m 1765(be)s 2045(read,)s 2562(if)s +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 4406(par)m 3(ameter)k 240 fnt82 4840 4404(')m 13(s)k +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 4458 translate +8566 5536 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:none)m grestore -480 4164(will)m 887(be)s 1149(tried)s 1624(\207rst)s -2035(and)s 2420(read)s 2869(if)s 3066(it)s 3238(e)s 3(xists,)k -3867(otherwise)s gsave -4832 4218 translate +480 5242(will)m 906(be)s 1188(tried)s 1683(\207rst)s +2114(and)s 2518(read)s 2987(if)s 3204(it)s 3396(e)s 3(xists,)k +4044(otherwise)s gsave +5029 5296 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:default)m grestore -5673(will)s 6079(be)s -6342(tried.)s 6923(It)s 7108(is)s 7298(not)s 7645(an)s -7908(error)s 8411(for)s 8729(an)s 3(y)k 480 3924(of)m -736(the)s 1069(\207les)s 1503(\(including)s gsave -2523 3978 translate +5890(will)s 6316(be)s +6598(tried.)s 7199(It)s 7404(is)s 7614(not)s 7980(an)s +8263(error)s 8786(for)s 480 5002(an)m 3(y)k 877(of)s +1148(the)s 1496(\207les)s 1945(\(including)s gsave +2981 5056 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:default)m grestore -3324(\))s 3437(not)s 3788(to)s 4011(e)s 3(xist,)k -4551(b)s 4(ut)k 4898(it)s 5074(is)s 5269(an)s -5537(error)s 6045(if)s 6246(a)s 6397(\207le)s 6743(e)s 3(xists)k -7319(and)s 7708(cannot)s 8391(be)s 8657(read)s 480 3684(or)m -726(if)s 930(the)s 1265(directory)s 2168(cannot)s 2853(be)s -3122(accessed.)s 4109(A)s 4325(translation)s 5377(will)s 5790(be)s -6059(applied)s 6808(to)s 7034(v)s 6(alues)k 7677(before)s -8330(the)s 3(y)k 8779(are)s 480 3444(used)m 977(to)s -1216(construct)s 2152(a)s 2318(\207lename,)s 3248(so)s 3514(that)s -3932(the)s 4280(lookup)s 4999(cannot)s 5697(access)s 6358(dot\207les,)s -7169(backup)s 7914(\207les,)s 8419(\207les)s 8868(in)s 480 3204(other)m -1023(directories)s 2072(and)s 2467(the)s 2806(lik)s 2(e:)k -3259(each)s 3745(slash)s 4271(will)s 4688(be)s 4961(replaced)s -5819(with)s 6292(a)s 6449(colon)s 7029(follo)s 6(wed)k -7922(by)s 8207(a)s 8364(h)s 1(yphen)k gsave -480 3018 translate -0.6953 1.0000 scale -240 fnt31 -0 -52(:\211)m -grestore -680 2964(,)m 787(and)s 1191(all)s 1484(characters)s -2502(which)s 3144(are)s 3491(not)s 3857(lo)s 6(wercase)k -4862(alphanumerics,)s 6363(h)s 1(yphens)k 7212(or)s 7471(underscores)s -8664(will)s 480 2724(ha)m 4(v)k 3(e)k 977(a)s -1138(colon)s 1722(prepended)s 2773(\(so)s 3113(that)s 3526(colons)s -4198(are)s 4540(doubled\).)s 5490(A)s 5716(parameter)s 6725(v)s 6(alue)k -7288(which)s 7926(is)s 8131(the)s 8474(empty)s 480 2484(string)m -1077(will)s 1503(be)s 1785(replaced)s 2652(with)s gsave -3134 2538 translate -0.6953 1.0000 scale -240 fnt31 -0 -52(:empty)m -grestore -3794(\(note)s 4341(that)s 4759(this)s 5155(is)s -5365(dif)s 6(ferent)k 6240(from)s 6764(a)s 6930(parameter)s -7944(not)s 8310(ha)s 4(ving)k 480 2244(an)m 3(y)k -877(v)s 6(alues\).)k gsave -120 1904 translate +3782(\))s 3910(not)s 4276(to)s 4515(e)s 3(xist,)k +5070(b)s 4(ut)k 5432(it)s 5624(is)s 5834(an)s +6117(error)s 6640(if)s 6857(a)s 7023(\207le)s 7384(e)s 3(xists)k +7976(and)s 8380(cannot)s 480 4762(be)m 753(read)s 1213(or)s +1462(if)s 1670(the)s 2008(directory)s 2915(cannot)s 3603(be)s +3876(accessed.)s 4867(A)s 5087(translation)s 6143(will)s 6559(be)s +6832(applied)s 7584(to)s 7814(v)s 6(alues)k 8460(before)s +480 4522(the)m 3(y)k 943(are)s 1290(used)s 1787(to)s +2026(construct)s 2962(a)s 3128(\207lename,)s 4058(so)s 4324(that)s +4742(the)s 5090(lookup)s 5809(cannot)s 6507(access)s 7168(dot\207les)s +7923(or)s 8182(\207les)s 8631(in)s 480 4282(other)m 1031(directories:)s +2144(v)s 6(alues)k 2800(starting)s 3569(with)s 4051(full)s +4437(stops)s 4980(will)s 5406(ha)s 4(v)k 3(e)k +5907(a)s 6073(colon)s 6662(prepended)s 7717(\(making)s gsave +8567 4336 translate +0.6953 1.0000 scale +240 fnt31 +0 -52(:.)m +grestore +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 +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 +240 fnt83 0 -52(dir)m 8(ectory)k grestore grestore -480 1610(Read)m 1030(con\207guration)s 2363(from)s -2887(all)s 3180(\207les)s 3629(in)s 3872(directory)s 240 fnt83 -4788 1612(dir)m 8(ectory)k 240 fnt82 5712 1610(which)m 6354(are)s -6701(plain)s 7236(\207les)s 7685(whose)s 8353(names)s 480 1370(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 1130(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 890(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 0 52(User)m 511(service)s -1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8491(0.64.1)s +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 8591(1.0.0)s +grestore grestore @@ -3056,66 +3071,44 @@ gsave 0 LoutMargSet grestore -240 fnt84 0 13842(12)m 240 fnt82 480 13254(\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 12914 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 12620(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 12622(te)m 4(xt)k 240 fnt82 6781 12620(.)m 240 fnt83 -6885 12622(te)m 4(xt)k 240 fnt82 7289 12620(may)m 7755(consist)s -8479(of)s 480 12380(se)m 6(v)k 3(eral)k 1193(tok)s 2(ens)k -1857(with)s 2330(interv)s 3(ening)k 3459(linear)s 4053(whitespace.)s -5209(Each)s 5734(set)s 6050(of)s 6311(linear)s 6905(whitespace)s -8013(will)s 8429(appear)s 480 12140(in)m 723(the)s 1071(message)s -1937(as)s 2187(a)s 2353(single)s 2980(space.)s 3615(The)s -4043(usual)s 4603(meaning)s 5480(of)s 5751(double-quoted)s 7192(strings)s -7880(\(i.e.,)s 8358(after)s 480 11900(backslash)m 1449(escape)s 2124(processing\))s -3257(will)s 3665(be)s 3929(used.)s 4454(Comments)s 5524(and)s -5910(linear)s 6495(whitespace)s 7595(at)s 7809(the)s 8139(end)s -8525(of)s 8778(the)s 480 11660(line)m 892(\(or)s 1228(just)s -1631(before)s 2295(the)s 2640(comment\))s 3656(will)s 4080(still)s -4490(be)s 4770(ignored.)s 5602(Apart)s 6204(from)s 6726(those)s -7285(cases,)s 7894(each)s 8386(tok)s 2(en')k 13(s)k -480 11420(te)m 3(xt)k 895(will)s 1321(be)s 1603(included)s -2485(v)s 3(erbatim.)k gsave -120 11129 translate +240 fnt84 0 13842(12)m 240 fnt82 480 13254(v)m 3(erbatim,)k +1433(unless)s 2082(the)s 3(y)k 2545(are)s 2892(part)s +3323(of)s 3594(a)s 3760(double-quoted)s 5201(string,)s 5852(in)s +6095(which)s 6737(case)s 7204(the)s 7552(usual)s 8112(meaning)s +480 13014(of)m 751(the)s 1099(string)s 1696(\(i.e.,)s 2174(after)s +2670(backslash)s 3657(escape)s 4350(processing\))s 5501(will)s 5927(be)s +6209(used.)s 6752(Comments)s 7840(and)s 8244(linear)s 480 12774(whitespace)m +1598(at)s 1830(the)s 2178(end)s 2582(of)s 2853(the)s +3201(line)s 3615(\(or)s 3953(just)s 4358(before)s 5024(the)s +5372(comment\))s 6390(will)s 6816(still)s 7228(be)s 7510(ignored.)s +gsave +120 12434 translate 0.6953 1.0000 scale 240 fnt31 0 -52(message)m gsave 1152 0 translate 1.4219 1.0000 scale -240 fnt83 -0 -52(te)m 4(xt)k 404(\202)s +240 fnt83 0 -52(te)m 4(xt)k +404(\202)s grestore grestore -480 10835(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 10837(te)m 4(xt)k 240 fnt82 -5642 10835(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 10595(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 9928(4.2.2.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k +480 12140(Causes)m 1209(a)s 1375(message)s 2241(including)s +3198(the)s 3546(descripti)s 6(v)k 3(e)k 4641(string)s +240 fnt83 5238 12142(te)m 4(xt)k 240 fnt82 5642 12140(to)m +5881(be)s 6163(deli)s 6(v)k 3(ered)k 7101(as)s +7351(if)s 7568(it)s 7760(were)s 8280(an)s 8563(error)s +480 11900(message,)m 1397(b)s 4(ut)k 1759(does)s 2249(not)s +2615(actually)s 3425(cause)s 4012(an)s 4295(error)s 13(.)k +300 fnt84 0 11233(4.2.2.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k 2148(with)s 2781(delay)s 3(ed)k 3828(effect)s 240 fnt82 -0 9357(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k +0 10662(The)m 428(follo)s 6(wing)k 1405(directi)s 6(v)k 3(es)k 2375(ha)s 4(v)k 3(e)k 2876(no)s 3169(immediate)s 4233(ef)s 6(fect,)k 4876(b)s 4(ut)k 5238(are)s 5585(remembered)s 6837(and)s 7241(ha)s 4(v)k 3(e)k -7742(an)s 8025(ef)s 6(fect)k 8621(on)s 0 9117(later)m +7742(an)s 8025(ef)s 6(fect)k 8621(on)s 0 10422(later)m 483(processing)s 1559(of)s 1830(the)s 2178(con\207guration)s 3511(\207les.)s gsave -120 8763 translate +120 10068 translate 0.6953 1.0000 scale 240 fnt31 0 -52(user\211rcfile)m gsave 1728 0 translate @@ -3124,99 +3117,99 @@ grestore grestore -480 8469(Speci\207es)m -1380(that)s 1784(the)s 2118(\207le)s 240 fnt83 2465 8471(\207lename)m -240 fnt82 3315 8469(should)m 3998(be)s 4266(read)s 4721(instead)s +480 9774(Speci\207es)m +1380(that)s 1784(the)s 2118(\207le)s 240 fnt83 2465 9776(\207lename)m +240 fnt82 3315 9774(should)m 3998(be)s 4266(read)s 4721(instead)s 5442(of)s 5699(the)s 6033(user')s 13(s)k gsave -6627 8523 translate +6627 9828 translate 0.6953 1.0000 scale 240 fnt31 0 -52(~/.userv/rc)m grestore 7728(.)s 7818(This)s 8280(does)s 240 fnt83 -8756 8471(not)m 240 fnt82 480 8229(happen)m 1229(immediately;)s 2535(instead,)s +8756 9776(not)m 240 fnt82 480 9534(happen)m 1229(immediately;)s 2535(instead,)s 3319(the)s 3667(setting)s 4357(is)s 4567(remembered)s 5819(and)s 6223(used)s 6720(after)s 7216(the)s gsave -7564 8283 translate +7564 9588 translate 0.6953 1.0000 scale 240 fnt31 0 -52(system.default)m grestore -480 7989(con\207guration)m 1812(\207le)s 2171(has)s 2539(been)s 3046(read.)s +480 9294(con\207guration)m 1812(\207le)s 2171(has)s 2539(been)s 3046(read.)s 3559(This)s 4033(directi)s 6(v)k 3(e)k 4913(has)s 5281(no)s 5572(ef)s 6(fect)k 6166(in)s 6407(a)s 6571(user')s 13(s)k 7177(con\207guration)s 8508(\207le)s 8867(or)s -480 7749(in)m 723(the)s gsave -1071 7803 translate +480 9054(in)m 723(the)s gsave +1071 9108 translate 0.6953 1.0000 scale 240 fnt31 0 -52(system.override)m grestore 2632(\207le,)s 3044(as)s 3294(the)s 3642(user')s 13(s)k 4250(con\207guration)s 5583(\207le)s 5944(has)s 6314(already)s 7071(been)s 7580(found)s -8197(and)s 8601(read)s 480 7509(by)m 774(then)s 1243(and)s +8197(and)s 8601(read)s 480 8814(by)m 774(then)s 1243(and)s 1647(will)s 2073(not)s 2439(be)s 2721(re-read.)s gsave -120 7169 translate +120 8474 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211to\211stderr)m grestore -480 6875(Causes)m 1209(error)s 1732(messages)s 2686(to)s +480 8180(Causes)m 1209(error)s 1732(messages)s 2686(to)s 2925(be)s 3207(deli)s 6(v)k 3(ered)k 4145(to)s 4384(the)s 4732(client')s 13(s)k 5472(stderr)s 13(.)k gsave -120 6535 translate +120 7840 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211to\211file)m grestore -240 fnt83 1581 6483(\207lename)m 240 fnt82 -480 6241(Error)m 1039(messages)s 1989(will)s 2410(be)s 2688(written)s -3416(to)s 240 fnt83 3651 6243(\207lename)m 240 fnt82 4455 6241(,)m +240 fnt83 1581 7788(\207lename)m 240 fnt82 +480 7546(Error)m 1039(messages)s 1989(will)s 2410(be)s 2688(written)s +3416(to)s 240 fnt83 3651 7548(\207lename)m 240 fnt82 4455 7546(,)m 4557(which)s 5195(will)s 5617(be)s 5894(opened)s 6640(in)s 6878(the)s 7222(conte)s 3(xt)k 7978(of)s 8245(and)s -8644(with)s 480 6001(the)m 828(pri)s 6(vile)k 3(ges)k +8644(with)s 480 7306(the)m 828(pri)s 6(vile)k 3(ges)k 1812(of)s 2083(the)s 2431(service)s 3163(user)s 13(.)k gsave -120 5661 translate +120 6966 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211to\211syslog)m grestore -1782 5607([)m 240 fnt83 1853 5609(facility)m -240 fnt82 2571 5607([)m 240 fnt83 2642 5609(le)m 3(vel)k -240 fnt82 3089 5607(]])m 480 5367(Error)m 1043(messages)s 1997(will)s +1782 6912([)m 240 fnt83 1853 6914(facility)m +240 fnt82 2571 6912([)m 240 fnt83 2642 6914(le)m 3(vel)k +240 fnt82 3089 6912(]])m 480 6672(Error)m 1043(messages)s 1997(will)s 2423(be)s 2705(deli)s 6(v)k 3(ered)k 3643(using)s gsave -4215 5421 translate +4215 6726 translate 0.6953 1.0000 scale 240 fnt31 0 -52(syslog)m grestore 4815(.)s 4919(The)s 5347(def)s 2(ault)k -240 fnt83 6068 5369(facility)m 240 fnt82 6786 5367(is)m gsave -6996 5421 translate +240 fnt83 6068 6674(facility)m 240 fnt82 6786 6672(is)m gsave +6996 6726 translate 0.6953 1.0000 scale 240 fnt31 0 -52(user)m grestore 7396(;)s 7508(the)s 7856(def)s 2(ault)k -240 fnt83 8577 5369(le)m 3(vel)k 240 fnt82 480 5127(is)m +240 fnt83 8577 6674(le)m 3(vel)k 240 fnt82 480 6432(is)m gsave -690 5181 translate +690 6486 translate 0.6953 1.0000 scale 240 fnt31 0 -52(error)m grestore -1190(.)s 300 fnt84 0 4510(4.2.3.)m +1190(.)s 300 fnt84 0 5815(4.2.3.)m 813(Contr)s 5(ol)k 1874(structur)s 5(e)k 3117(dir)s 5(ecti)k 3(v)k 3(es)k -240 fnt82 0 3995(The)m 421(follo)s 6(wing)k 1390(directi)s 6(v)k 3(es)k +240 fnt82 0 5300(The)m 421(follo)s 6(wing)k 1390(directi)s 6(v)k 3(es)k 2353(are)s 2692(used)s 3182(to)s 3413(create)s 4031(control)s 4755(structures.)s 5780(If)s 6002(the)s 6343(end)s 6739(of)s -7003(the)s 7343(\207le)s 7697(is)s 7899(encountered)s 0 3755(before)m +7003(the)s 7343(\207le)s 7697(is)s 7899(encountered)s 0 5060(before)m 666(the)s 1014(end)s 1418(of)s 1689(an)s 3(y)k 2086(control)s 2818(structure)s 3709(which)s 4351(w)s 2(as)k 4772(started)s 5466(inside)s 6093(it)s 6285(then)s 6754(that)s -7172(control)s 7904(structure)s 8795(is)s 0 3515(considered)m 1094(\207nished.)s +7172(control)s 7904(structure)s 8795(is)s 0 4820(considered)m 1094(\207nished.)s 1956(This)s 2432(is)s 2642(not)s 3008(an)s 3291(error)s 13(.)k gsave -120 3161 translate +120 4466 translate 0.6953 1.0000 scale 240 fnt31 0 -52(if)m gsave 432 0 translate @@ -3226,7 +3219,7 @@ grestore gsave -120 2921 translate +120 4226 translate 0.6953 1.0000 scale 240 fnt31 0 -52(elif)m gsave @@ -3237,38 +3230,38 @@ grestore gsave -120 2681 translate +120 3986 translate 0.6953 1.0000 scale 240 fnt31 0 -52(else)m grestore gsave -120 2441 translate +120 3746 translate 0.6953 1.0000 scale 240 fnt31 0 -52(fi)m grestore -480 2147(Lines)m 1062(follo)s 6(wing)k +480 3452(Lines)m 1062(follo)s 6(wing)k gsave -2039 2201 translate +2039 3506 translate 0.6953 1.0000 scale 240 fnt31 0 -52(if)m grestore 2299(are)s 2646(interpreted)s 3738(only)s 4218(if)s 4435(the)s 4783(condition)s 5744(is)s 5954(true.)s -6429(Man)s 3(y)k 7039(conditions)s 8087(are)s 480 1907(properties)m +6429(Man)s 3(y)k 7039(conditions)s 8087(are)s 480 3212(properties)m 1486(of)s 1757(parameter)s 2771(v)s 6(alues.)k 3480(Most)s 4032(parameters)s 5130(ha)s 4(v)k 3(e)k 5631(a)s 5797(single)s 6424(string)s 7021(as)s 7271(a)s 7437(v)s 6(alue;)k 8061(ho)s 6(we)k 6(v)k 3(er)k 9(,)k -480 1667(some)m 1035(may)s 1495(yield)s 2025(zero)s 2483(or)s +480 2972(some)m 1035(may)s 1495(yield)s 2025(zero)s 2483(or)s 2735(se)s 6(v)k 3(eral)k 3451(strings,)s 4189(in)s 4426(which)s 5062(case)s 5522(the)s 5864(condition)s 6819(is)s 7023(true)s 7444(if)s 7654(it)s 7840(is)s 8044(true)s -8465(of)s 8729(an)s 3(y)k 480 1427(of)m 751(the)s +8465(of)s 8729(an)s 3(y)k 480 2732(of)m 751(the)s 1099(strings)s 1787(indi)s 6(vidually)k 15(.)k 3026(P)s 3(arameters)k 4134(are)s 4481(described)s 5455(belo)s 6(w)k 15(.)k 6183(The)s 6611(conditions)s 7659(are:)s gsave -600 1240 translate +600 2545 translate 0.6953 1.0000 scale 240 fnt31 0 -52(glob)m gsave @@ -3284,60 +3277,20 @@ grestore 4178(\202)s grestore -960 946(The)m 1388(v)s 6(alue)k 1956(of)s +960 2251(The)m 1388(v)s 6(alue)k 1956(of)s 2227(the)s 2575(parameter)s 3589(whose)s 4257(name)s 4831(is)s 5041(gi)s 6(v)k 3(en)k 5621(matches)s 6455(one)s -6857(of)s 7128(the)s 7476(glob)s 7955(patterns)s 960 706(\(anchored)m +6857(of)s 7128(the)s 7476(glob)s 7955(patterns)s 960 2011(\(anchored)m 1974(at)s 2206(both)s 2689(ends;)s 3240(backslashes)s 4420(can)s 4809(be)s 5091(used)s 5588(to)s 5827(escape)s 6520(metacharacters\).)s -0 52(0.64.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 gsave -600 13310 translate +600 1825 translate 0.6953 1.0000 scale 240 fnt31 0 -52(range)m gsave 864 0 translate 1.4219 1.0000 scale -240 fnt83 -0 -52(par)m 3(ameter)k +240 fnt83 0 -52(par)m 3(ameter)k + grestore gsave 2428 0 translate @@ -3347,19 +3300,18 @@ gsave 3073 0 translate 1.4219 1.0000 scale -240 fnt83 -0 -52(max)m +240 fnt83 0 -52(max)m grestore grestore -240 fnt82 960 13016(The)m 1380(v)s 6(alue)k -1940(of)s 2203(the)s 2543(parameter)s 3548(is)s 3750(a)s -3908(nonne)s 3(g)k 1(ati)k 6(v)k 3(e)k +960 1531(The)m +1380(v)s 6(alue)k 1940(of)s 2203(the)s 2543(parameter)s +3548(is)s 3750(a)s 3908(nonne)s 3(g)k 1(ati)k 6(v)k 3(e)k 5113(inte)s 3(ger)k 5825(and)s 6220(lies)s 6594(within)s -7254(the)s 7594(range)s 8172(speci\207ed.)s 240 fnt83 960 12778(min)m -240 fnt82 1373 12776(or)m 240 fnt83 1632 12778(max)m 240 fnt82 -2091 12776(may)m 2557(be)s gsave -2839 12830 translate +7254(the)s 7594(range)s 8172(speci\207ed.)s 240 fnt83 960 1293(min)m +240 fnt82 1373 1291(or)m 240 fnt83 1632 1293(max)m 240 fnt82 +2091 1291(may)m 2557(be)s gsave +2839 1345 translate 0.6953 1.0000 scale 240 fnt31 0 -52($)m grestore @@ -3367,7 +3319,7 @@ 3238(indicate)s 4050(no)s 4343(lo)s 6(wer)k 4941(or)s 5200(upper)s 5805(limit,)s 6362(respecti)s 6(v)k 3(ely)k 15(.)k gsave -600 12589 translate +600 1104 translate 0.6953 1.0000 scale 240 fnt31 0 -52(grep)m gsave 720 0 translate @@ -3382,44 +3334,84 @@ grestore grestore -960 12295(The)m 240 fnt83 1388 12297(\207lename)m -240 fnt82 2252 12295(refers)m 2845(to)s 3084(a)s 3250(\207le)s +960 810(The)m 240 fnt83 1388 812(\207lename)m +240 fnt82 2252 810(refers)m 2845(to)s 3084(a)s 3250(\207le)s 3611(one)s 4013(of)s 4284(whose)s 4952(lines)s 5454(is)s 5664(the)s 6012(v)s 6(alue)k 6580(of)s 6851(the)s -7199(parameter)s 8213(\(leading)s 960 12055(or)m 1211(trailing)s 1944(whitespace)s -3053(on)s 3341(each)s 3827(line)s 4232(and)s 4627(empty)s -5270(lines)s 5764(in)s 5998(the)s 6337(\207le)s 6689(are)s -7027(ignored\).)s 7932(It)s 8128(is)s 8329(an)s 8603(error)s -960 11815(for)m 1298(the)s 1646(\207le)s 2007(not)s 2373(to)s -2612(be)s 2894(opened)s 3644(and)s 4048(read.)s gsave -600 11628 translate +7199(parameter)s 8213(\(leading)s 0 52(1.0.0)m 4809(User)s 5320(service)s +6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s +grestore + +grestore + +pgsave restore +showpage + +%%Page: 13 13 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Courier-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate + +grestore + +grestore +gsave +0 16840 translate +0.0000 rotate +gsave +1417 -15423 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic +gsave +1 LoutMargSet +grestore +240 fnt84 8833 13842(13)m 240 fnt82 960 13251(or)m 1211(trailing)s +1944(whitespace)s 3053(on)s 3341(each)s 3827(line)s 4232(and)s +4627(empty)s 5270(lines)s 5764(in)s 5998(the)s 6337(\207le)s +6689(are)s 7027(ignored\).)s 7932(It)s 8128(is)s 8329(an)s +8603(error)s 960 13011(for)m 1298(the)s 1646(\207le)s 2007(not)s +2373(to)s 2612(be)s 2894(opened)s 3644(and)s 4048(read.)s +gsave +600 12824 translate 0.6953 1.0000 scale -240 fnt31 -0 -52(!)m gsave +240 fnt31 0 -52(!)m gsave 288 0 translate 1.4219 1.0000 scale 240 fnt83 0 -52(condition)m grestore grestore -960 11334(The)m 240 fnt83 -1388 11336(condition)m 240 fnt82 2346 11334(is)m 240 fnt83 2556 11336(not)m -240 fnt82 2926 11334(true.)m 600 11094(Conjunctions:)m gsave -1983 11148 translate +960 12530(The)m +240 fnt83 1388 12532(condition)m 240 fnt82 2346 12530(is)m 240 fnt83 +2556 12532(not)m 240 fnt82 2926 12530(true.)m 600 12290(Conjunctions:)m gsave +1983 12344 translate 0.6953 1.0000 scale -240 fnt31 0 -52(&)m - +240 fnt31 +0 -52(&)m grestore 2143(and)s gsave -2547 11148 translate +2547 12344 translate 0.6953 1.0000 scale 240 fnt31 0 -52(|)m grestore gsave -1440 10668 translate +1440 11864 translate 0.6953 1.0000 scale -240 fnt31 0 -52(\()m -gsave +240 fnt31 +0 -52(\()m gsave 288 0 translate 1.4219 1.0000 scale 240 fnt83 0 -52(condition)m @@ -3427,113 +3419,113 @@ 0 -292(&)m gsave 288 -240 translate 1.4219 1.0000 scale -240 fnt83 0 -52(condition)m - +240 fnt83 +0 -52(condition)m grestore 0 -532(&)m gsave 288 -480 translate 1.4219 1.0000 scale 240 fnt83 0 -52(condition)m grestore -0 -772(\202)m 0 -1012(\))m - +0 -772(\202)m +0 -1012(\))m grestore -960 9402(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 9456 translate +960 10598(is)m 1170(true)s 1597(if)s 1814(all)s +2107(the)s 2455(listed)s 3030(conditions)s 4078(are)s 4425(true;)s +4908(where)s gsave +5548 10652 translate 0.6953 1.0000 scale 240 fnt31 0 -52(|)m grestore -5708(is)s 5918(used)s 6415(it)s -6607(is)s 6817(true)s 7244(if)s 7461(an)s 3(y)k -7858(of)s 8129(them)s 8667(is)s 960 9157(true.)m 1428(Ne)s 6(wlines)k +5708(is)s 5918(used)s +6415(it)s 6607(is)s 6817(true)s 7244(if)s 7461(an)s 3(y)k +7858(of)s 8129(them)s 8667(is)s 960 10353(true.)m 1428(Ne)s 6(wlines)k 2368(must)s 2885(be)s 3159(used)s 3648(to)s 3879(separate)s 4709(one)s 5104(condition)s 6057(from)s 6573(the)s 6913(ne)s 3(xt,)k 7421(as)s 7663(sho)s 6(wn,)k 8382(and)s 8778(the)s -960 8917(parentheses)m 2126(are)s 2473(mandatory)s 15(.)k 3585(These)s +960 10113(parentheses)m 2126(are)s 2473(mandatory)s 15(.)k 3585(These)s 4212(conjunctions)s 5486(do)s 5779(not)s 6145(do)s 6438(lazy)s -6890(e)s 6(v)k 6(aluation.)k 480 8654(The)m 908(parameters)s +6890(e)s 6(v)k 6(aluation.)k 480 9850(The)m 908(parameters)s 2006(are:)s gsave -600 8468 translate +600 9664 translate 0.6953 1.0000 scale 240 fnt31 0 -52(service)m grestore -960 8174(The)m 1388(service)s +960 9370(The)m 1388(service)s 2120(name)s 2694(speci\207ed)s 3602(when)s 4178(the)s 4526(client)s 5116(w)s 2(as)k 5537(called.)s gsave -600 7988 translate +600 9184 translate 0.6953 1.0000 scale 240 fnt31 0 -52(calling\211user)m grestore -960 7694(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s +960 8890(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s 2522(login)s 3071(name)s 3645(of)s 3916(the)s 4264(calling)s 4967(user)s 5425(\(determined)s 6637(as)s 6887(for)s gsave -7225 7748 translate +7225 8944 translate 0.6953 1.0000 scale 240 fnt31 0 -52(USERV_USER)m grestore 8226(,)s 8333(abo)s 3(v)k 3(e\))k -960 7454(and)m 1364(the)s 1712(calling)s 2415(uid)s 2779(\(represented)s +960 8650(and)m 1364(the)s 1712(calling)s 2415(uid)s 2779(\(represented)s 4017(in)s 4260(decimal\).)s gsave -600 7268 translate +600 8464 translate 0.6953 1.0000 scale 240 fnt31 0 -52(calling\211group)m grestore -960 6974(Se)m 6(v)k 3(eral)k +960 8170(Se)m 6(v)k 3(eral)k 1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s 5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s -7939(decimal\))s 960 6734(of)m 1231(the)s 1579(calling)s 2282(process.)s +7939(decimal\))s 960 7930(of)m 1231(the)s 1579(calling)s 2282(process.)s 3103(All)s 3463(the)s 3811(group)s 4423(names)s 5085(come)s 5659(\207rst,)s 6137(and)s 6541(then)s 7010(the)s 7358(gids.)s -7861(If)s 8091(the)s 8439(\207rst)s 960 6494(supplementary)m 2422(group)s +7861(If)s 8091(the)s 8439(\207rst)s 960 7690(supplementary)m 2422(group)s 3034(is)s 3244(the)s 3592(same)s 4139(as)s 4389(the)s 4737(primary)s 5547(group)s 6159(then)s 6628(it)s 6820(is)s 7030(elided.)s gsave -600 6308 translate +600 7504 translate 0.6953 1.0000 scale 240 fnt31 0 -52(calling\211user\211shell)m grestore -960 6014(The)m 1388(calling)s +960 7210(The)m 1388(calling)s 2091(user')s 13(s)k 2699(shell,)s 3257(as)s 3507(listed)s 4082(in)s 4325(the)s 4673(passw)s 2(ord)k 5633(entry)s 6178(for)s 6516(the)s 6864(calling)s 7567(login)s 8116(name)s -8690(\(as)s 960 5774(determined)m 2093(for)s gsave -2431 5828 translate +8690(\(as)s 960 6970(determined)m 2093(for)s gsave +2431 7024 translate 0.6953 1.0000 scale 240 fnt31 0 -52(USERV_USER)m grestore 3432(,)s 3539(abo)s 3(v)k 3(e\).)k gsave -600 5588 translate +600 6784 translate 0.6953 1.0000 scale 240 fnt31 0 -52(service\211user)m grestore -960 5294(T)m 19(w)k 2(o)k 1431(strings:)s +960 6490(T)m 19(w)k 2(o)k 1431(strings:)s 2174(the)s 2522(name)s 3096(of)s 3367(the)s 3715(service)s 4447(user)s 4905(\(as)s 5234(speci\207ed)s 6142(to)s 6381(the)s -6729(client\))s 7387(and)s 7791(their)s 8288(uid)s 960 5054(\(represented)m +6729(client\))s 7387(and)s 7791(their)s 8288(uid)s 960 6250(\(represented)m 2198(in)s 2441(decimal\).)s gsave -600 4868 translate +600 6064 translate 0.6953 1.0000 scale 240 fnt31 0 -52(service\211group)m grestore -960 4574(Se)m 6(v)k 3(eral)k +960 5770(Se)m 6(v)k 3(eral)k 1722(strings:)s 2465(the)s 2813(primary)s 3623(and)s 4027(supplementary)s 5489(group)s 6101(names)s 6763(and)s 7167(gids)s 7617(\(in)s -7939(decimal\))s 8823(of)s 960 4334(the)m 1308(service)s 2040(user)s 13(.)k +7939(decimal\))s 8823(of)s 960 5530(the)m 1308(service)s 2040(user)s 13(.)k gsave -600 4148 translate +600 5344 translate 0.6953 1.0000 scale 240 fnt31 0 -52(service\211user\211shell)m grestore -960 3854(The)m 1388(service)s 2120(user')s 13(s)k +960 5050(The)m 1388(service)s 2120(user')s 13(s)k 2728(shell,)s 3286(as)s 3536(listed)s 4111(in)s 4354(their)s 4851(passw)s 2(ord)k 5811(entry)s 15(.)k gsave -600 3668 translate +600 4864 translate 0.6953 1.0000 scale 240 fnt31 0 -52(u\211)m gsave @@ -3543,160 +3535,119 @@ grestore grestore -960 3374(The)m 1388(v)s 6(alue)k +960 4570(The)m 1388(v)s 6(alue)k 1956(of)s 2227(the)s 2575(user)s 4(-de\207ned)k 3811(v)s 6(ariable)k -240 fnt83 4630 3376(name)m 240 fnt82 5202 3374(passed)m 5898(by)s +240 fnt83 4630 4572(name)m 240 fnt82 5202 4570(passed)m 5898(by)s 6192(the)s 6540(caller)s 7129(using)s 7701(the)s gsave -8049 3428 translate +8049 4624 translate 0.6953 1.0000 scale 240 fnt31 0 -52(\211\211defvar)m grestore -960 3134(command-line)m 2397(option)s 3066(to)s 3305(the)s +960 4330(command-line)m 2397(option)s 3066(to)s 3305(the)s 3653(client.)s 4287(If)s 4517(the)s 4865(v)s 6(ariable)k 5684(w)s 2(as)k 6105(not)s 6471(de\207ned)s 7234(then)s -7703(this)s 8099(parameter)s 960 2894(is)m 1170(an)s 1453(empty)s +7703(this)s 8099(parameter)s 960 4090(is)m 1170(an)s 1453(empty)s 2105(list)s 2456(of)s 2727(strings;)s 3476(in)s 3719(this)s 4115(case)s 4582(an)s 3(y)k 4979(condition)s 5940(which)s 6582(tests)s 7057(it)s 7249(will)s 7675(be)s 7957(f)s 2(alse,)k 8512(and)s gsave -960 2708 translate +960 3904 translate 0.6953 1.0000 scale 240 fnt31 0 -52(include\211lookup)m grestore -2421 2654(on)m 2718(it)s +2421 3850(on)m 2718(it)s 2910(will)s 3336(read)s 3805(the)s gsave -4153 2708 translate +4153 3904 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:none)m grestore 4713(\207le,)s 5125(or)s gsave -5384 2708 translate +5384 3904 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:default)m grestore 6245(if)s gsave -6462 2708 translate +6462 3904 translate 0.6953 1.0000 scale 240 fnt31 0 -52(:none)m grestore 7022(is)s 7232(not)s 7598(found.)s gsave -120 2285 translate +120 3481 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211push)m grestore -240 fnt83 1281 2233(\207lename)m gsave -120 2045 translate +240 fnt83 1281 3429(\207lename)m gsave +120 3241 translate 0.6953 1.0000 scale 240 fnt31 0 -52(srorre)m grestore -240 fnt82 480 1751(Stacks)m 1155(the)s 1503(error)s +240 fnt82 480 2947(Stacks)m 1155(the)s 1503(error)s 2026(handling)s 2917(beha)s 4(viour)k 3930(currently)s 4846(in)s 5089(ef)s 6(fect.)k 5729(An)s 3(y)k 6193(changes)s -7015(to)s 7254(error)s 7777(handling)s 8668(will)s 480 1511(tak)m 2(e)k +7015(to)s 7254(error)s 7777(handling)s 8668(will)s 480 2707(tak)m 2(e)k 932(ef)s 6(fect)k 1528(only)s 2008(between)s gsave -2862 1565 translate +2862 2761 translate 0.6953 1.0000 scale 240 fnt31 0 -52(errors\211push)m grestore 4023(and)s gsave -4427 1565 translate +4427 2761 translate 0.6953 1.0000 scale 240 fnt31 0 -52(srorre)m grestore 5027(.)s gsave -120 1171 translate +120 2367 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore gsave -120 931 translate +120 2127 translate 0.6953 1.0000 scale 240 fnt31 0 -52(hctac)m grestore -0 52(User)m -511(service)s 1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s -8491(0.64.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 3(y)k +480 1833(An)m 3(y)k 935(use)s 1301(of)s gsave -1563 13308 translate +1563 1887 translate 0.6953 1.0000 scale 240 fnt31 0 -52(quit)m grestore 2013(inside)s gsave -2631 13308 translate +2631 1887 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore 3683(will)s 4100(merely)s 4807(cause)s 5385(the)s 5724(parsing)s 6472(to)s 6701(continue)s 7572(at)s gsave -7795 13308 translate +7795 1887 translate 0.6953 1.0000 scale 240 fnt31 0 -52(hctac)m grestore -8345(instead.)s 480 13014(An)m 3(y)k +8345(instead.)s 480 1593(An)m 3(y)k 944(control)s 1676(constructs)s 2696(started)s 3390(since)s 3937(the)s gsave -4285 13068 translate +4285 1647 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore 5346(will)s 5772(be)s 6054(considered)s 7148(\207nished)s 7964(if)s 8181(a)s gsave -8347 13068 translate +8347 1647 translate 0.6953 1.0000 scale 240 fnt31 0 -52(quit)m grestore -8807(is)s 480 12774(found.)m 1203(If)s 1433(an)s 1716(error)s +8807(is)s 480 1353(found.)m 1203(If)s 1433(an)s 1716(error)s 2239(occurs)s 2914(inside)s gsave -3541 12828 translate +3541 1407 translate 0.6953 1.0000 scale 240 fnt31 0 -52(catch\211quit)m grestore @@ -3704,79 +3655,119 @@ 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 12588 translate +480 1167 translate 0.6953 1.0000 scale 240 fnt31 0 -52(reset)m grestore -1040 12534(directi)m 6(v)k 3(e\))k +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 12588 translate +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 12294(detected)m 1334(in)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 12348 translate +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 12348 translate +7930 927 translate 0.6953 1.0000 scale 240 fnt31 0 -52(hctac)m grestore -8490(after)s 480 12054(an)m 763(error)s 1286(or)s gsave -1545 12108 translate +8490(after)s 0 52(User)m 511(service)s 1243(daemon)s 2058(and)s +2462(client)s 3052(speci\207cation)s 8591(1.0.0)s +grestore + +grestore + +pgsave restore +showpage + +%%Page: 14 14 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Courier-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 0 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 11900 16840 0 16840 240 240 60 LoutGraphic +gsave +LoutPageSet +grestore +gsave +0 16840 translate +0.0000 rotate + +grestore + +grestore +gsave +0 16840 translate +0.0000 rotate +gsave +1417 -15423 translate +240 fnt82 0.0 0.0 0.0 setrgbcolor 9066 14006 0 14006 240 240 60 LoutGraphic +gsave +0 LoutMargSet +grestore +240 fnt84 0 13842(14)m 240 fnt82 480 13254(an)m 763(error)s +1286(or)s gsave +1545 13308 translate 0.6953 1.0000 scale -240 fnt31 -0 -52(quit)m +240 fnt31 0 -52(quit)m grestore -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 11387(4.2.4.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k +1945(,)s 2052(that)s +2470(ne)s 6(w)k 2917(error)s 3440(will)s 3866(not)s +4232(be)s 4514(caught.)s 300 fnt84 0 12587(4.2.4.)m 813(Dir)s 5(ecti)k 3(v)k 3(es)k 2148(f)s 7(or)k 2595(changing)s 3829(execution)s 5112(settings)s -240 fnt82 0 10816(The)m 419(follo)s 6(wing)k 1386(directi)s 6(v)k 3(es)k +240 fnt82 0 12016(The)m 419(follo)s 6(wing)k 1386(directi)s 6(v)k 3(es)k 2346(modify)s 3082(the)s 3420(e)s 3(x)k 3(ecution)k 4391(settings;)s 5223(the)s 5562(serv)s 3(er)k 6192(will)s 6608(remember)s 7627(the)s 7965(f)s 2(act)k 8370(that)s -8778(the)s 0 10575(directi)m 6(v)k 3(e)k 881(w)s 2(as)k +8778(the)s 0 11775(directi)m 6(v)k 3(e)k 881(w)s 2(as)k 1300(encountered)s 2525(and)s 2927(act)s 3263(on)s 3559(it)s 3749(only)s 4227(after)s 4721(all)s 5012(the)s 5359(con\207guration)s 6690(has)s 7058(been)s 7565(parsed.)s 8291(The)s 240 fnt83 -8717 10577(last)m 240 fnt82 0 10335(directi)m 6(v)k 3(e)k +8717 11777(last)m 240 fnt82 0 11535(directi)m 6(v)k 3(e)k 882(which)s 1524(modi\207es)s 2399(an)s 3(y)k 2796(particuar)s 3704(setting)s 4394(will)s 4820(tak)s 2(e)k 5272(ef)s 6(fect.)k gsave -120 9981 translate +120 11181 translate 0.6953 1.0000 scale 240 fnt31 0 -52(reject)m grestore -480 9687(Reject)m 1150(the)s 1498(request.)s +480 10887(Reject)m 1150(the)s 1498(request.)s gsave -2292 9741 translate +2292 10941 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute)m grestore 2992(,)s gsave -3099 9741 translate +3099 10941 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211directory)m grestore 5361(and)s gsave -5765 9741 translate +5765 10941 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211path)m grestore 7527(will)s 7953(change)s -480 9447(this)m 876(setting.)s gsave -120 9107 translate +480 10647(this)m 876(setting.)s gsave +120 10307 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute)m gsave 1152 0 translate @@ -3792,13 +3783,13 @@ grestore 4048(\202])s grestore -480 8813(Ex)m 3(ecute)k -1300(the)s 1645(program)s 240 fnt83 2512 8815(pr)m 10(o)k 2(gr)k 3(am)k -240 fnt82 3332 8813(,)m 3436(with)s 3915(the)s 4259(ar)s 4(guments)k +480 10013(Ex)m 3(ecute)k +1300(the)s 1645(program)s 240 fnt83 2512 10015(pr)m 10(o)k 2(gr)k 3(am)k +240 fnt82 3332 10013(,)m 3436(with)s 3915(the)s 4259(ar)s 4(guments)k 5299(as)s 5546(speci\207ed,)s 6500(follo)s 6(wed)k 7399(by)s -7690(an)s 3(y)k 8083(ar)s 4(guments)k 480 8573(gi)m 6(v)k 3(en)k +7690(an)s 3(y)k 8083(ar)s 4(guments)k 480 9773(gi)m 6(v)k 3(en)k 1052(to)s 1282(the)s 1621(client)s 2203(if)s gsave -2411 8627 translate +2411 9827 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211suppress\211args)m @@ -3806,15 +3797,15 @@ 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 8333(it)m 672(is)s +8189(f)s 2(ail)k 8550(when)s 480 9533(it)m 672(is)s 882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s 3098(con\207guration)s 4431(has)s 4801(been)s 5310(parsed\).)s 6117(If)s 240 fnt83 -6347 8335(pr)m 10(o)k 2(gr)k 3(am)k 240 fnt82 -7227 8333(does)m 7717(not)s 8083(contain)s 8844(a)s 480 8093(slash)m +6347 9535(pr)m 10(o)k 2(gr)k 3(am)k 240 fnt82 +7227 9533(does)m 7717(not)s 8083(contain)s 8844(a)s 480 9293(slash)m 1015(it)s 1207(will)s 1633(be)s 1915(searched)s 2809(for)s 3147(on)s 3444(the)s 3792(service)s 4524(user')s 13(s)k 5132(path.)s gsave -120 7753 translate +120 8953 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211directory)m gsave 3312 0 translate @@ -3830,78 +3821,78 @@ 6376(\202])s grestore -480 7459(T)m 19(ak)k 2(e)k 993(all)s 1286(the)s +480 8659(T)m 19(ak)k 2(e)k 993(all)s 1286(the)s 1634(characters)s 2652(after)s 3148(the)s 3496(last)s 3887(slash)s 4422(of)s 4693(the)s 5041(service)s 5773(name)s 6347(speci\207ed)s -7255(when)s 7831(the)s 8179(client)s 480 7218(w)m 2(as)k +7255(when)s 7831(the)s 8179(client)s 480 8418(w)m 2(as)k 901(called,)s 1578(and)s 1982(e)s 3(x)k 3(ecute)k 2762(that)s 3180(program)s 4050(in)s 4293(the)s 4641(directory)s -5557(named)s 6253(by)s 240 fnt83 6547 7220(pathname)m 240 fnt82 -7545 7218(as)m 7795(if)s 8012(it)s 8204(had)s 8608(been)s -480 6978(speci\207ed)m 1388(for)s 240 fnt83 1726 6980(e)m 4(xecute)k -240 fnt82 2431 6978(.)m 2535(The)s 2963(part)s 3394(of)s +5557(named)s 6253(by)s 240 fnt83 6547 8420(pathname)m 240 fnt82 +7545 8418(as)m 7795(if)s 8012(it)s 8204(had)s 8608(been)s +480 8178(speci\207ed)m 1388(for)s 240 fnt83 1726 8180(e)m 4(xecute)k +240 fnt82 2431 8178(.)m 2535(The)s 2963(part)s 3394(of)s 3665(the)s 4013(service)s 4745(name)s 5319(used)s 5816(may)s -6282(contain)s 7043(only)s 7523(alphanumerics)s 480 6738(and)m 884(h)s 1(yphens)k +6282(contain)s 7043(only)s 7523(alphanumerics)s 480 7938(and)m 884(h)s 1(yphens)k 1732(and)s 2136(must)s 2660(start)s 3130(with)s 3611(an)s 3894(alphanumeric)s 5247(\(and)s 5730(it)s 5921(must)s 6446(be)s -6727(non-empty\),)s 7950(otherwise)s 8934(it)s 480 6498(is)m 690(an)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 6258(speci\207ed;)m 1437(in)s +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 6018(not)m 846(set)s 1171(before\).)s 2024(It)s 2229(is)s +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 5778(with)m 958(a)s 1120(`no)s +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 5538(when)m 1056(it)s 1248(is)s 1458(attempted)s 2458(\(after)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 5198 translate +120 6398 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211path)m grestore -240 fnt83 480 4906(service)m -240 fnt82 1202 4904(is)m 1404(interpreted)s 2488(as)s 2731(a)s +240 fnt83 480 6106(service)m +240 fnt82 1202 6104(is)m 1404(interpreted)s 2488(as)s 2731(a)s 2889(program)s 3751(on)s 4041(the)s 4381(def)s 2(ault)k gsave -5094 4958 translate +5094 6158 translate 0.6953 1.0000 scale 240 fnt31 0 -52(PATH)m grestore 5546(\(or)s 5877(as)s 6119(a)s 6277(pathname)s 7256(of)s 7519(an)s 7794(e)s 3(x)k 3(ecutable,)k -8909(if)s 480 4663(it)m 660(contains)s 1495(a)s gsave -1649 4717 translate +8909(if)s 480 5863(it)m 660(contains)s 1495(a)s gsave +1649 5917 translate 0.6953 1.0000 scale 240 fnt31 0 -52(/)m grestore 1749(\).)s 1919(This)s 2383(directi)s 6(v)k 3(e)k -3252(is)s 240 fnt83 3450 4665(very)m 3904(dang)s 2(er)k 10(ous)k -240 fnt82 4899 4663(,)m 4994(and)s 5385(is)s 5583(only)s +3252(is)s 240 fnt83 3450 5865(very)m 3904(dang)s 2(er)k 10(ous)k +240 fnt82 4899 5863(,)m 4994(and)s 5385(is)s 5583(only)s 6050(pro)s 3(vided)k 6944(to)s 7170(mak)s 2(e)k 7730(the)s gsave -8065 4717 translate +8065 5917 translate 0.6953 1.0000 scale 240 fnt31 0 -52(\211\211override)m grestore -480 4423(options)m 1230(ef)s 6(fecti)k 6(v)k 3(e.)k +480 5623(options)m 1230(ef)s 6(fecti)k 6(v)k 3(e.)k 2146(It)s 2344(should)s 3034(not)s 3393(normally)s 4304(be)s 4579(used.)s 5115(It)s 5313(is)s 5516(an)s 5792(error)s 6309(for)s 6640(the)s 6981(e)s 3(x)k 3(ecution)k -7955(to)s 8187(f)s 2(ail)k 8550(when)s 480 4183(it)m +7955(to)s 8187(f)s 2(ail)k 8550(when)s 480 5383(it)m 672(is)s 882(attempted)s 1882(\(after)s 2457(all)s 2750(the)s 3098(con\207guration)s 4431(has)s 4801(been)s 5310(parsed\).)s gsave -120 3843 translate +120 5043 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211builtin)m gsave @@ -3917,40 +3908,40 @@ grestore grestore -480 3549(Ex)m 3(ecutes)k 1388(the)s 1732(b)s 4(uiltin)k -2405(service)s 240 fnt83 3133 3551(service-name)m 240 fnt82 4400 3549(.)m +480 4749(Ex)m 3(ecutes)k 1388(the)s 1732(b)s 4(uiltin)k +2405(service)s 240 fnt83 3133 4751(service-name)m 240 fnt82 4400 4749(.)m 4500(These)s 5123(b)s 4(uiltin)k 5796(services)s 6612(display)s -7353(information)s 8534(about)s 480 3309(the)m 822(serv)s 3(er)k +7353(information)s 8534(about)s 480 4509(the)m 822(serv)s 3(er)k 1455(and/or)s 2120(the)s 2461(request,)s 3252(and)s 3649(ignore)s 4310(an)s 3(y)k 4700(ar)s 4(guments)k 5737(passed)s 6426(from)s 6944(the)s 7285(service)s 8011(side)s 8445(e)s 3(xcept)k -480 3069(possibly)m 1320(to)s 1547(print)s 2046(them)s 2572(as)s +480 4269(possibly)m 1320(to)s 1547(print)s 2046(them)s 2572(as)s 2810(part)s 3228(of)s 3487(their)s 3972(output.)s 4676(The)s 3(y)k 5207(write)s 5740(their)s 6225(results)s 6887(to)s 7114(their)s -7599(standard)s 8454(output)s 480 2829(\(i.e.,)m 958(where)s 6(v)k 3(er)k +7599(standard)s 8454(output)s 480 4029(\(i.e.,)m 958(where)s 6(v)k 3(er)k 1898(\207le)s 2259(descriptor)s 3274(1)s 3429(is)s 3639(directed\).)s 4591(The)s 5019(b)s 4(uiltin)k 5696(services)s 6516(are:)s gsave -600 2643 translate +600 3843 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute)m grestore -960 2349(Displays)m 1848(the)s 2196(e)s 3(x)k 3(ecution)k +960 3549(Displays)m 1848(the)s 2196(e)s 3(x)k 3(ecution)k 3177(settings,)s 4014(de\207ned)s 4777(v)s 6(ariables,)k 5740(ar)s 4(guments,)k -6839(etc.)s 7221(with)s 7703(which)s 8345(the)s 960 2109(b)m 4(uiltin)k +6839(etc.)s 7221(with)s 7703(which)s 8345(the)s 960 3309(b)m 4(uiltin)k 1637(service)s 2369(w)s 2(as)k 2790(in)s 9(v)k 4(ok)k 2(ed.)k gsave -600 1923 translate +600 3123 translate 0.6953 1.0000 scale 240 fnt31 0 -52(environment)m grestore -960 1629(Dis)m 1283(plays)s 1839(the)s +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 1389(in)m 1143(v)s 4(ok)k 2(ed.)k +7919(w)s 2(as)k 960 2589(in)m 1143(v)s 4(ok)k 2(ed.)k gsave -600 1203 translate +600 2403 translate 0.6953 1.0000 scale 240 fnt31 0 -52(parameter)m gsave 1440 0 translate @@ -3960,17 +3951,43 @@ grestore grestore -960 909(Displays)m 1848(the)s 2196(v)s 6(alues)k 2852(of)s +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 723 translate +600 1923 translate 0.6953 1.0000 scale 240 fnt31 0 -52(version)m grestore -0 52(0.64.1)m 4809(User)s -5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s +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.0)m 4809(User)s 5320(service)s +6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s +grestore grestore @@ -4008,163 +4025,137 @@ gsave 1 LoutMargSet grestore -240 fnt84 8833 13842(15)m 240 fnt82 960 13252(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 13066 translate -0.6953 1.0000 scale -240 fnt31 0 -52(reset)m -grestore -960 12772(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 12826 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 12532(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 12586 translate -0.6953 1.0000 scale -240 fnt31 -0 -52(catch\211quit)m -grestore -5645(\).)s gsave -600 12346 translate +240 fnt84 8833 13842(15)m gsave +600 13318 translate 0.6953 1.0000 scale 240 fnt31 0 -52(toplevel)m grestore -960 12052(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 11812(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 11626 translate +240 fnt82 +960 13024(Displays)m 1848(the)s 2196(top-le)s 6(v)k 3(el)k +3091(def)s 2(ault)k 3812(con\207guration)s 5145(\(the)s 5572(con\207guration)s +6905(data,)s 7410(e)s 6(v)k 6(aluated)k 8372(by)s +8666(the)s 960 12784(serv)m 3(er)k 9(,)k 1638(which)s +2280(calls)s 2768(all)s 3061(the)s 3409(other)s 3960(con\207guration)s +5293(\207les\).)s gsave +600 12598 translate 0.6953 1.0000 scale 240 fnt31 0 -52(override)m grestore -960 11332(Displays)m -1847(the)s 2194(top-le)s 6(v)k 3(el)k 3088(o)s 3(v)k 3(erride)k +960 12304(Displays)m 1847(the)s +2194(top-le)s 6(v)k 3(el)k 3088(o)s 3(v)k 3(erride)k 3932(con\207guration)s 5264(\(the)s 5690(con\207guration)s 7021(data,)s 7525(e)s 6(v)k 6(aluated)k -8486(by)s 8778(the)s 960 11092(serv)m 3(er)k 9(,)k +8486(by)s 8778(the)s 960 12064(serv)m 3(er)k 9(,)k 1638(which)s 2280(causes)s 2955(all)s 3248(the)s 3596(other)s 4147(con\207guration)s 5480(data)s 5938(to)s 6177(be)s 6459(parsed\).)s gsave -600 10906 translate +600 11878 translate 0.6953 1.0000 scale 240 fnt31 0 -52(help)m grestore -960 10612(Displays)m 1848(a)s 2014(list)s +960 11584(Displays)m 1848(a)s 2014(list)s 2365(of)s 2636(the)s 2984(understood)s 4106(b)s 4(uiltin)k 4783(service)s 5515(names)s 6177(and)s 6581(ar)s 4(guments.)k -480 10349(In)m 736(the)s 1084(fu)s 1278(ture)s 1705(oth)s +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 10109(ma)m 772(tion.)s +8124(in)s 8307(for)s 8585(-)s 480 11081(ma)m 772(tion.)s gsave -120 9819 translate +120 10791 translate 0.6953 1.0000 scale 240 fnt31 0 -52(set\211environment)m grestore gsave -120 9579 translate +120 10551 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211set\211environment)m grestore -480 9285(Runs)m +480 10257(Runs)m gsave -1024 9339 translate +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 9045(in)m 9(v)k 4(oking)k 1372(a)s +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 8805(is)m 690(achie)s 6(v)k 3(ed)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 8619 translate +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 8374(as)m gsave -960 8188 translate +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 7944 translate +480 8916 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211set\211environment)m grestore -2342 7890(cancels)m 3096(the)s 3444(ef)s 6(fect)k +2342 8862(cancels)m 3096(the)s 3444(ef)s 6(fect)k 4040(of)s gsave -4311 7944 translate +4311 8916 translate 0.6953 1.0000 scale 240 fnt31 0 -52(set\211environment)m grestore 5812(.)s gsave -120 7600 translate +120 8572 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211suppress\211args)m grestore gsave -120 7360 translate +120 8332 translate 0.6953 1.0000 scale 240 fnt31 0 -52(suppress\211args)m grestore -480 7066(Include)m 1253(an)s 3(y)k +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 6826(of)m 749(an)s +8015(as)s 8265(a)s 8431(result)s 480 7798(of)m 749(an)s gsave -1030 6880 translate +1030 7852 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute)m grestore 1730(,)s gsave -1834 6880 translate +1834 7852 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211directory)m grestore 4094(or)s gsave -4351 6880 translate +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 6880 translate +7038 7852 translate 0.6953 1.0000 scale 240 fnt31 0 -52(suppress\211args)m grestore -8396(undoes)s 480 6586(the)m 828(ef)s 6(fect)k +8396(undoes)s 480 7558(the)m 828(ef)s 6(fect)k 1424(of)s gsave -1695 6640 translate +1695 7612 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211suppress\211args)m grestore 3297(.)s gsave -120 6265 translate +120 7237 translate 0.6953 1.0000 scale 240 fnt31 0 -52(require\211fd)m gsave @@ -4175,135 +4166,135 @@ grestore 2940(read|write)s grestore -480 5966(In)m 676(sist)s 1054(that)s 1472(the)s +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 5726(scrip)m 937(tor)s 1258(mark)s 2(ed)k 2027(as)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 5486(has)m 850(been)s 1359(parsed\))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 5246(a)m 646(sep)s 958(a)s 1064(rate)s 1477(set)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 5300 translate +4037 6272 translate 0.6953 1.0000 scale 240 fnt31 0 -52(require\211fd)m grestore 5038(,)s gsave -5145 5300 translate +5145 6272 translate 0.6953 1.0000 scale 240 fnt31 0 -52(allow\211fd)m grestore 5946(,)s gsave -6053 5300 translate +6053 6272 translate 0.6953 1.0000 scale 240 fnt31 0 -52(ignore\211fd)m grestore 6954(,)s gsave -7061 5300 translate +7061 6272 translate 0.6953 1.0000 scale 240 fnt31 0 -52(null\211fd)m grestore 7821(or)s gsave -8080 5300 translate +8080 6272 translate 0.6953 1.0000 scale 240 fnt31 0 -52(reject\211fd)m grestore -480 5005(which)m 1122(af)s 1319(fect)s 1676(ed)s 1960(a)s +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 5007(fd-)m 6302(r)s 3(ang)k 2(e)k -240 fnt82 6909 5005(may)m 7375(be)s 7657(a)s 7823(sin)s -8099(gle)s 8447(num)s 8873(-)s 480 4765(ber)m 9(,)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 4525(all)m +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 4579 translate +7604 5551 translate 0.6953 1.0000 scale 240 fnt31 0 -52(stdin)m grestore 8104(,)s gsave -8209 4579 translate +8209 5551 translate 0.6953 1.0000 scale 240 fnt31 0 -52(stdout)m grestore 8867(or)s gsave -480 4339 translate +480 5311 translate 0.6953 1.0000 scale 240 fnt31 0 -52(stderr)m grestore -1080 4285(.)m 1174(Open-)s 1761(ended)s +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 4339 translate +6536 5311 translate 0.6953 1.0000 scale 240 fnt31 0 -52(reject\211fd)m grestore 7486(and)s gsave -7879 4339 translate +7879 5311 translate 0.6953 1.0000 scale 240 fnt31 0 -52(ignore\211fd)m grestore -8780(,)s 8876(as)s 480 4045(oth)m 783(er)s +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 3805(open.)m +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 3565(stderr)m 1083(\(fd)s 1418(2\))s 1665(must)s 2189(be)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 3619 translate +4454 4591 translate 0.6953 1.0000 scale 240 fnt31 0 -52(require\211fd)m grestore 5514(or)s gsave -5772 3619 translate +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 3325(the)m +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 3379 translate +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 3085(is)m +7535(ser)s 7813(vice)s 8263(pro)s 8575(gram)s 480 4057(is)m 690(not)s 1056(lost.)s gsave -120 2795 translate +120 3767 translate 0.6953 1.0000 scale 240 fnt31 0 -52(allow\211fd)m gsave 1296 0 translate @@ -4313,45 +4304,45 @@ grestore 2652([read|write])s grestore -480 2496(Allo)m 6(w)k +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 2550 translate +8209 3522 translate 0.6953 1.0000 scale 240 fnt31 0 -52(read)m grestore 8669(nor)s gsave -480 2310 translate +480 3282 translate 0.6953 1.0000 scale 240 fnt31 0 -52(write)m grestore -1040 2256(is)m 1250(speci\207ed.)s +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 2016(onto)m +7564(it)s 7756(will)s 8182(be)s 8464(open)s 480 2988(onto)m gsave -959 2070 translate +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 2070 translate +6928 3042 translate 0.6953 1.0000 scale 240 fnt31 0 -52(read)m grestore 7328(,)s gsave -7435 2070 translate +7435 3042 translate 0.6953 1.0000 scale 240 fnt31 0 -52(write)m grestore -7995(or)s 8254(neither)s 480 1776(w)m 2(as)k 901(speci\207ed\).)s +7995(or)s 8254(neither)s 480 2748(w)m 2(as)k 901(speci\207ed\).)s gsave -120 1436 translate +120 2408 translate 0.6953 1.0000 scale 240 fnt31 0 -52(null\211fd)m gsave 1152 0 translate @@ -4361,23 +4352,23 @@ grestore 2508([read|write])s grestore -480 1137(Spec)m 938(i)s 998(fy)s 1251(that)s +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 1191 translate +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 897(nei)m 766(ther)s +8138(or)s 8397(both)s 8880(if)s 480 1869(nei)m 766(ther)s gsave -1181 951 translate +1181 1923 translate 0.6953 1.0000 scale 240 fnt31 0 -52(read)m grestore 1624(nor)s gsave -1986 951 translate +1986 1923 translate 0.6953 1.0000 scale 240 fnt31 0 -52(write)m @@ -4386,8 +4377,31 @@ 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 -0 52(User)m 511(service)s 1243(daemon)s 2058(and)s 2462(client)s -3052(speci\207cation)s 8491(0.64.1)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 8591(1.0.0)s grestore grestore @@ -4426,149 +4440,125 @@ gsave 0 LoutMargSet grestore -240 fnt84 0 13842(16)m 240 fnt82 480 13251(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 +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(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 12617(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 12377(mark)m 2(ed)k -1253(for)s 1591(rejection)s 2483(are)s 2830(speci\207ed)s 3738(when)s -4314(the)s 4662(service)s 5394(is)s 5604(about)s 6196(to)s -6435(be)s 6717(in)s 9(v)k 4(ok)k 2(ed)k -7532(\(after)s 8107(the)s 480 12137(con\207guration)m 1813(has)s 2183(been)s -2692(parsed\).)s gsave -120 11797 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 - +240 fnt83 +0 -52(fd\211r)m 3(ang)k 2(e)k grestore grestore -480 11503(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 11263(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 10923 translate +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 - +240 fnt31 0 -52(disconnect\211hup)m grestore gsave -120 10683 translate +120 11797 translate 0.6953 1.0000 scale 240 fnt31 0 -52(no\211disconnect\211hup)m grestore -480 10389(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 10443 translate +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 +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 10149(ser)m 758(vice)s 1209(pro)s 1521(cess)s -1966(ter)s 2217(mi)s 2463(nates.)s gsave -3055 10203 translate +5224(if)s 5441(the)s +5789(client)s 6379(dis)s 6649(con)s 6992(nects)s 7534(be)s +7756(fore)s 8196(the)s 8544(main)s 480 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 - +240 fnt31 0 -52(no\211disconnect\211hup)m grestore 4813(can)s 5142(cels)s gsave -5560 10203 translate +5560 11317 translate 0.6953 1.0000 scale -240 fnt31 0 -52(disconnect\211hup)m +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 9909(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 9668(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 9722 translate +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 +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 9670(be)m 6676(for)s 8(e)k 240 fnt82 -7106 9668(the)m 7454(writ)s 7838(ing)s 8197(end\(s\))s 8843(of)s -480 9428(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 9188(read)m 889(ing)s 1248(EOF)s -1758(on)s 2055(a)s 2221(pipe.)s gsave -120 8848 translate +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 - +240 fnt31 +0 -52(reset)m grestore -480 8554(Resets)m 1155(the)s 1503(e)s 3(x)k 3(ecution)k +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 8368 translate +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 6391(If)m 230(no)s gsave -523 6445 translate +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 6445 translate +1330 7559 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211path)m grestore 3032(,)s gsave -3139 6445 translate +3139 7559 translate 0.6953 1.0000 scale 240 fnt31 0 -52(execute\211from\211directory)m grestore 5401(or)s gsave -5660 6445 translate +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 6151(\207les)m +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 5127 LoutGr2 +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 @@ -4578,35 +4568,35 @@ 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 4665(If)m +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 4425(will)m 422(be)s 699(issued,)s 1399(to)s 1633(where)s 6(v)k 3(er)k +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 4479 translate +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 4185(directi)m 6(v)k 3(es,)k -1026(abo)s 3(v)k 3(e\).)k 0 3777(The)m 428(error)s +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 3537(w)m 2(as)k 421(inside)s 1048(a)s gsave -1214 3591 translate +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 3297(will)m 426(be)s +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 3351 translate +3243 4465 translate 0.6953 1.0000 scale 240 fnt31 0 -52(reset)m @@ -4614,11 +4604,11 @@ 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 3111 translate +0 4225 translate 0.6953 1.0000 scale 240 fnt31 0 -52(hctac)m grestore -500 3057(.)m 9066 609 0 609 240 240 60 0 2094 LoutGr2 +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 @@ -4628,11 +4618,11 @@ 320 fnt84 0 5(4.4.)m 628(Defaults)s grestore -0 1632(The)m 428(def)s 2(ault)k 1149(con\207guration)s +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 1392(\207le)m 361(whose)s 1029(contents)s 1877(were)s -2397(as)s 2647(follo)s 6(ws:)k 0 52(0.64.1)m 4809(User)s +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.0)m 4809(User)s 5320(service)s 6052(daemon)s 6867(and)s 7271(client)s 7861(speci\207cation)s grestore @@ -4714,7 +4704,7 @@ 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 8491(0.64.1)s +1243(daemon)s 2058(and)s 2462(client)s 3052(speci\207cation)s 8591(1.0.0)s grestore @@ -5012,7 +5002,7 @@ 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.64.1)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 @@ -5111,7 +5101,7 @@ 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 8491(0.64.1)s +3052(speci\207cation)s 8591(1.0.0)s grestore grestore @@ -5406,7 +5396,7 @@ 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.64.1)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 @@ -5654,24 +5644,24 @@ 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 1178 LoutGr2 +8078(similar)s 1134 0 0 0 240 240 60 0 1177 LoutGr2 0 0 moveto xsize 0 lineto stroke grestore grestore -122 fnt82 0 983(1)m gsave -58 956 translate +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 913(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 -0 683(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 -3052(speci\207cation)s 8491(0.64.1)s +3052(speci\207cation)s 8591(1.0.0)s grestore grestore @@ -5716,7 +5706,7 @@ 240 fnt31 0 -52(sudo)m grestore -3133(.)s 0 52(0.64.1)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 diff -ruN userv-0.65.2/spec.sgml userv-1.0.0/spec.sgml --- userv-0.65.2/spec.sgml Sat Oct 9 19:45:57 1999 +++ userv-1.0.0/spec.sgml Mon Mar 6 18:14:46 2000 @@ -3,7 +3,7 @@ User service daemon and client specification <author>Ian Jackson <email>ian@davenant.greenend.org.uk -<version>0.64.1</version> +<version>1.0.0</version> <abstract> This is a specification for a Unix system facility to allow one @@ -553,9 +553,9 @@ line. The portion of a line following a hash character <tt/#/ is taken as a comment and ignored. Each directive consists of a series of tokens separated by linear whitespace (spaces and tabs); tokens may -be words consisting of non-space characters (except backslash), or, -where a string is required, a string in double quotes. Double-quoted -strings may contain the following backslash escapes: +be words consisting of non-space characters, or, where a string is +required, a string in double quotes. Double-quoted strings may +contain the following backslash escapes: <taglist compact> <tag/<tt/\n//<item>newline @@ -573,10 +573,6 @@ current directory (usually the service user's home directory). Pathnames starting with the two characters <tt>~/</> are taken to be relative to the service user's home directory. -<p> - -Logical lines may be continued by putting a backslash <tt/\/ at the -end of a line; this counts as part of linear whitespace. <sect id="directives">Configuration file directives <p> @@ -645,12 +641,11 @@ <p> A translation will be applied to values before they are used to -construct a filename, so that the lookup cannot access dotfiles, -backup files, files in other directories and the like: each slash will -be replaced with a colon followed by a hyphen <tt>:-</>, and all -characters which are not lowercase alphanumerics, hyphens or -underscores will have a colon prepended (so that colons are doubled). -A parameter value which is the empty string will be replaced with +construct a filename, so that the lookup cannot access dotfiles or +files in other directories: values starting with full stops will have +a colon prepended (making <tt/:./), colons will be doubled, and each +slash will be replaced with a colon followed by a hyphen <tt>:-</>. A +parameter value which is the empty string will be replaced with <tt/:empty/ (note that this is different from a parameter not having any values). @@ -668,12 +663,13 @@ <item> Causes an error whose message includes the descriptive string <var/text/. <var/text/ may consist of several tokens with intervening -linear whitespace. Each set of linear whitespace will appear in the -message as a single space. The usual meaning of double-quoted strings +whitespace. The whitespace will be included in the message as found +in the configuration file: all the characters until the end of the +line will be included verbatim, unless they are part of a +double-quoted string, in which case the usual meaning of the string (i.e., after backslash escape processing) will be used. Comments and linear whitespace at the end of the line (or just before the comment) -will still be ignored. Apart from those cases, each token's text will -be included verbatim. +will still be ignored. <tag/<tt/message <var/text .../// <item> diff -ruN userv-0.65.2/userv.1 userv-1.0.0/userv.1 --- userv-0.65.2/userv.1 Thu Jan 1 01:00:00 1970 +++ userv-1.0.0/userv.1 Mon Mar 6 18:14:46 2000 @@ -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.