henry@utzoo.uucp (Henry Spencer) (07/08/89)
Here is another C News patch. This one is mostly small stuff; in particular, we haven't had time to work dbz in as we intend, so that's postponed to the next one. This patch: - fixes some small bugs in the software - revises batcher logging and error reporting - provides for use of non-standard system libraries - works around the SVID violation in many System V makes (which shows up if your machine has no /bin/test) - augments the stdio-compatibility checker so it catches the compatibility problem on A/UX (but not, yet, SunOS 4.0) - adds documentation on the log formats - makes assorted minor fixes to documentation start of patch 7-Jul-1989 this should be run with patch -p0 <thisfile The following are obsolete and should be deleted (there is no easy way we can convince patch to do this automatically): notebook/tmac.pic Like to use Prereq, but it is broken in some versions of patch. *** tmp.dates.with.really.long.filename.for.patch Fri Jul 7 15:27:01 1989 --- PATCHDATES Fri Jul 7 15:27:01 1989 *************** *** 1 **** --- 1,2 ---- 23-Jun-1989 + 7-Jul-1989 Changed files, if any: *** cnpatch/tmp.file Fri Jul 7 15:27:05 1989 --- batch/Makefile Tue Jul 4 17:35:04 1989 *************** *** 26,38 **** chmod +x $(PGMS) batcher: batcher.o $(LIBS) ! $(CC) $(CFLAGS) $(LDFLAGS) batcher.o $(LIBS) -o $@ c7encode: c7encode.o $(LIBS) ! $(CC) $(CFLAGS) $(LDFLAGS) c7encode.o $(LIBS) -o $@ bencode: bencode.o crctab.o $(LIBS) ! $(CC) $(CFLAGS) bencode.o crctab.o $(LIBS) -o $@ bencode.o: coder.h --- 26,38 ---- chmod +x $(PGMS) batcher: batcher.o $(LIBS) ! $(CC) $(CFLAGS) $(LDFLAGS) batcher.o $(PRE) $(LIBS) $(POST) -o $@ c7encode: c7encode.o $(LIBS) ! $(CC) $(CFLAGS) $(LDFLAGS) c7encode.o $(PRE) $(LIBS) $(POST) -o $@ bencode: bencode.o crctab.o $(LIBS) ! $(CC) $(CFLAGS) bencode.o crctab.o $(PRE) $(LIBS) $(POST) -o $@ bencode.o: coder.h *************** *** 135,144 **** echo bletch >test.good cmp test.out test.good >batchlog - >batchlog.o NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches ! test ! -s out.going/foo/output ! test ! -s out.going/bar/output echo `pwd`/test.1 200 >out.going/foo/togo echo `pwd`/test.2 200 >>out.going/foo/togo echo `pwd`/test.3 200 >>out.going/foo/togo --- 135,143 ---- echo bletch >test.good cmp test.out test.good >batchlog NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches ! test ! -s out.going/foo/output ; ! test ! -s out.going/bar/output ; echo `pwd`/test.1 200 >out.going/foo/togo echo `pwd`/test.2 200 >>out.going/foo/togo echo `pwd`/test.3 200 >>out.going/foo/togo *************** *** 149,160 **** NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches cmp out.going/foo/output test.out1 cmp out.going/bar/output test.out2 ! test ! -s out.going/foo/togo ! test ! -s out.going/bar/togo cmp test.left out.going/bar/togo.2 ! sed 1d batchlog.o >test.log ! test ! -s test.log ! sed 1d batchlog >test.log echo 'bar backlog 1 (batches flowing)' >test.good cmp test.good test.log rm -rf test.* togo out.going bin batchparms batchlog batchlog.* --- 148,159 ---- NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches cmp out.going/foo/output test.out1 cmp out.going/bar/output test.out2 ! test ! -s out.going/foo/togo ; ! test ! -s out.going/bar/togo ; cmp test.left out.going/bar/togo.2 ! sed '/^$$/q' batchlog | sed '1d;$$d' >test.log ! test ! -s test.log ; ! sed '1,/^$$/d' batchlog | sed '1d;$$d' >test.log echo 'bar backlog 1 (batches flowing)' >test.good cmp test.good test.log rm -rf test.* togo out.going bin batchparms batchlog batchlog.* *** cnpatch/tmp.file Fri Jul 7 15:27:07 1989 --- batch/batchsplit Wed Jul 5 00:03:29 1989 *************** *** 55,61 **** if (NF == 1) size = 3000 # Arbitrary guess. else ! size = $2 if (total + size > limit && ninbatch > 0) { # Go to next batch. bno++ --- 55,61 ---- if (NF == 1) size = 3000 # Arbitrary guess. else ! size = $NF if (total + size > limit && ninbatch > 0) { # Go to next batch. bno++ *** cnpatch/tmp.file Fri Jul 7 15:27:12 1989 --- batch/sendbatches Thu Jun 29 14:36:38 1989 *************** *** 10,16 **** origpath="$PATH" parms=$NEWSCTL/batchparms ! log=$NEWSCTL/batchlog # also same with suffixes .o and .oo # lock against multiple simultaneous execution lock="$NEWSCTL/LOCKbatch" --- 10,16 ---- origpath="$PATH" parms=$NEWSCTL/batchparms ! log=$NEWSCTL/batchlog # lock against multiple simultaneous execution lock="$NEWSCTL/LOCKbatch" *************** *** 61,69 **** esac # Start up logging. ! mv $log.o $log.oo ! mv $log $log.o ! date >$log # Run through them. for sys in $syses --- 61,67 ---- esac # Start up logging. ! date >>$log # Run through them. for sys in $syses *************** *** 72,78 **** here=$NEWSARTS/out.going/$sys if test ! -d $here then ! echo "$0: cannot find batch directory for \`$sys'" >>$log continue fi cd $here --- 70,77 ---- here=$NEWSARTS/out.going/$sys if test ! -d $here then ! echo "$0: cannot find batch directory for \`$sys'" | ! mail $NEWSMASTER continue fi cd $here *************** *** 95,101 **** set $ctlline if test " $#" -ne 6 then ! echo "$0: bad or missing batchparms line for \`$sys'" >>$log continue fi batchsize=$2 --- 94,101 ---- set $ctlline if test " $#" -ne 6 then ! echo "$0: bad or missing batchparms line for \`$sys'" | ! mail $NEWSMASTER continue fi batchsize=$2 *************** *** 143,153 **** them=`ls | egrep '^togo\.[0-9]' | sed "${nbatch}q"` for f in $them do ! if $batcher -d $NEWSARTS $f | $muncher | $sender $sys then ! rm $f else ! echo "$0: batching for \`$sys' failed" >>$log exit 1 fi done --- 143,159 ---- them=`ls | egrep '^togo\.[0-9]' | sed "${nbatch}q"` for f in $them do ! ( $batcher -d $NEWSARTS $f | $muncher | ! $sender $sys ) >/tmp/nb$$ 2>&1 ! if test $? -eq 0 -a ! -s /tmp/nb$$ then ! rm $f /tmp/nb$$ else ! ( ! echo "$0: batching $f for \`$sys' failed" ! cat /tmp/nb$$ ! echo "$0: aborting" ! ) | mail $NEWSMASTER exit 1 fi done *************** *** 169,171 **** --- 175,179 ---- echo "$sys backlog $nart ($status)" >>$log fi done + + echo >>$log *** cnpatch/tmp.file Fri Jul 7 15:27:13 1989 --- batch/viainews Tue Jul 4 19:18:17 1989 *************** *** 1,4 **** #! /bin/sh # Feed batch to inews, for ihave/sendme mostly. ! exec inews -h -W --- 1,4 ---- #! /bin/sh # Feed batch to inews, for ihave/sendme mostly. ! exec inews -h -W -A *** cnpatch/tmp.file Fri Jul 7 15:27:15 1989 --- conf/Makefile Tue Jul 4 17:34:12 1989 *************** *** 32,38 **** chmod +x subst : too late for h and hfake, include has already been built -egrep '^(h|hfake)/' subst.hs subst.gc >junk ! test ! -s junk rm -f junk ./subst -f substitutions `sed 's;^;../;' subst.hs subst.gc` --- 32,38 ---- chmod +x subst : too late for h and hfake, include has already been built -egrep '^(h|hfake)/' subst.hs subst.gc >junk ! test ! -s junk ; rm -f junk ./subst -f substitutions `sed 's;^;../;' subst.hs subst.gc` *************** *** 65,71 **** echo 'echo 0' >>$@ setnewsids: setnewsids.o $(LIBS) ! $(CC) $(CFLAGS) setnewsids.o $(LIBS) -o $@ ../ranlibed: ../libcnews.a ranlib ../libcnews.a --- 65,71 ---- echo 'echo 0' >>$@ setnewsids: setnewsids.o $(LIBS) ! $(CC) $(CFLAGS) setnewsids.o $(PRE) $(LIBS) $(POST) -o $@ ../ranlibed: ../libcnews.a ranlib ../libcnews.a *** cnpatch/tmp.file Fri Jul 7 15:27:17 1989 --- conf/build Tue Jul 4 17:50:04 1989 *************** *** 381,387 **** ./query 'Do you want to use our fast stdio library [yes]? ' read libstdio case "$libstdio" in ! y*|Y*|'') libstdio=libstdio ;; *) libstdio= ;; esac --- 381,391 ---- ./query 'Do you want to use our fast stdio library [yes]? ' read libstdio case "$libstdio" in ! y*|Y*|'') libstdio=libstdio ! echo 'Beware that the compatibility check will work best if' ! echo 'the output of doit.bin is NOT redirected into a file' ! echo 'or a pipe.' ! ;; *) libstdio= ;; esac *************** *** 513,518 **** --- 517,534 ---- esac echo + echo 'On unusual systems it may be necessary to link C News programs with' + echo 'libraries other than the usual C library. These can be specified as' + echo 'either full pathnames or -l... options. What libraries, in addition' + echo 'to the one(s) picked up automatically by the compiler, should be used' + ./query 'when linking C News [none]? ' + read postlibs + case "$postlibs" in + '') ;; + *) postlibs="POST='$postlibs'" ;; + esac + + echo ./query 'Does your system have a "hostname" command [yes]? ' read hostname case "$hostname" in *************** *** 846,852 **** echo "for dir in lib$unixkind lib$addrsize libc libcnews $libstdio" echo "do" echo " cd ../\$dir" ! echo " make u $cc $copts || exit 1" echo "done" echo "cd ../libfake" echo "ed - Makefile <<'!'" --- 862,868 ---- echo "for dir in lib$unixkind lib$addrsize libc libcnews $libstdio" echo "do" echo " cd ../\$dir" ! echo " make u $cc $copts $postlibs || exit 1" echo "done" echo "cd ../libfake" echo "ed - Makefile <<'!'" *************** *** 853,859 **** echo "/NEEDED =/s/.*/NEEDED = $fake/" echo "w" echo "!" ! echo "make u $cc $copts || exit 1" echo "cd ../conf" if test " $ranlib" = " y" then --- 869,875 ---- echo "/NEEDED =/s/.*/NEEDED = $fake/" echo "w" echo "!" ! echo "make u $cc $copts $postlibs || exit 1" echo "cd ../conf" if test " $ranlib" = " y" then *************** *** 864,870 **** then echo ': testing libstdio' echo 'cd ../libstdio' ! echo "make trials $cc $copts || exit 1" echo ': done' fi echo ': building programs' --- 880,889 ---- then echo ': testing libstdio' echo 'cd ../libstdio' ! echo ': produces some meaningless-looking output on terminal,' ! echo ': but do not redirect it -- it is important that stdio' ! echo ': think output is going to a terminal.' ! echo "make trials $cc $copts $postlibs || exit 1" echo ': done' fi echo ': building programs' *************** *** 871,882 **** echo 'cd ../conf' if test " $sete" != " y" then ! echo "make setnewsids NEWSUSER=$newsuid NEWSGROUP=$newsgid $cc $copts" fi echo "for dir in $pgmdirs" echo "do" echo " cd ../\$dir" ! echo " make all $dbm $cc $copts" echo "done" echo ": done" echo ": building prototype control files" --- 890,901 ---- echo 'cd ../conf' if test " $sete" != " y" then ! echo "make setnewsids NEWSUSER=$newsuid NEWSGROUP=$newsgid $cc $copts $postlibs" fi echo "for dir in $pgmdirs" echo "do" echo " cd ../\$dir" ! echo " make all $dbm $cc $copts $postlibs" echo "done" echo ": done" echo ": building prototype control files" *** cnpatch/tmp.file Fri Jul 7 15:27:37 1989 --- doc/interface Tue Jul 4 16:37:34 1989 *************** *** 1,4 **** ! .DA "9 June 1989" .TL The Interface Between C News And The Outside World .AU --- 1,4 ---- ! .DA "4 July 1989" .TL The Interface Between C News And The Outside World .AU *************** *** 71,79 **** You need a standard shell. .PP To the best of our ability, all our shell files begin with ``#!\ /bin/sh''. ! If your shell misinterprets this as a request to run the C shell, you're ! in trouble. ! If your shell doesn't know about ``#'' comments at all, you're in trouble. We hope that no modern shell makes either of these mistakes. .PP We believe that none of our stuff relies on relatively modern shell features --- 71,95 ---- You need a standard shell. .PP To the best of our ability, all our shell files begin with ``#!\ /bin/sh''. ! As far as we know, nothing actually relies on being able to \fIexec\fR a ! shell file; that is, if ``#!\ /bin/sh'' is just a comment to your shell, ! that should be okay. ! If your shell misinterprets it as a request to run the C shell, however, ! you're in trouble. ! Running the following might help: ! .DS ! for f in `find . \-type f \-print` ! do ! if test " `sed 1q $f`" = "#! /bin/sh" ! then ! ed $f <<'!' ! 1s/#!/: use/ ! w ! ! ! fi ! done ! .DE ! If your shell doesn't know about ``#'' comments at all, again you're in trouble. We hope that no modern shell makes either of these mistakes. .PP We believe that none of our stuff relies on relatively modern shell features *** cnpatch/tmp.file Fri Jul 7 15:27:38 1989 --- expire/Makefile Tue Jul 4 17:36:01 1989 *************** *** 34,52 **** -for f in $(THEM) ; do cmp $$f $(NEWSBIN)/expire/$$f ; done expire: expire.o $(LIBS) ! $(CC) $(LDFLAGS) expire.o $(LIBS) $(DBM) -o $@ histinfo: histinfo.o $(LIBS) ! $(CC) $(LDFLAGS) histinfo.o $(LIBS) -o $@ lowest: lowest.o $(LIBS) ! $(CC) $(LDFLAGS) lowest.o $(LIBS) -o $@ histslash: histslash.o $(LIBS) ! $(CC) $(LDFLAGS) histslash.o $(LIBS) -o $@ mkdbm: mkdbm.o $(LIBS) ! $(CC) $(LDFLAGS) mkdbm.o $(LIBS) $(DBM) -o $@ lint: expire.c lint -ha $(LINTFLAGS) expire.c 2>&1 | egrep -v $(JUNKLINT) | tee $@ --- 34,52 ---- -for f in $(THEM) ; do cmp $$f $(NEWSBIN)/expire/$$f ; done expire: expire.o $(LIBS) ! $(CC) $(LDFLAGS) expire.o $(PRE) $(LIBS) $(DBM) $(POST) -o $@ histinfo: histinfo.o $(LIBS) ! $(CC) $(LDFLAGS) histinfo.o $(PRE) $(LIBS) $(POST) -o $@ lowest: lowest.o $(LIBS) ! $(CC) $(LDFLAGS) lowest.o $(PRE) $(LIBS) $(POST) -o $@ histslash: histslash.o $(LIBS) ! $(CC) $(LDFLAGS) histslash.o $(PRE) $(LIBS) $(POST) -o $@ mkdbm: mkdbm.o $(LIBS) ! $(CC) $(LDFLAGS) mkdbm.o $(PRE) $(LIBS) $(DBM) $(POST) -o $@ lint: expire.c lint -ha $(LINTFLAGS) expire.c 2>&1 | egrep -v $(JUNKLINT) | tee $@ *************** *** 194,202 **** sed $(FIXPATHS) test.out | cmp - tgood : "okay, it seems to know what it's doing -- now, can it do it?" $(RUN) -p explist >test.out 2>test.stderr ! test ! -s test.stderr cmp test.out pgood ! test ! -f history.n cmp history.proto history.o egrep wont history.proto | ./dircheck arts egrep 'will|two|gone|three' history.proto | ./dircheck -n arts --- 194,202 ---- sed $(FIXPATHS) test.out | cmp - tgood : "okay, it seems to know what it's doing -- now, can it do it?" $(RUN) -p explist >test.out 2>test.stderr ! test ! -s test.stderr ; cmp test.out pgood ! test ! -f history.n ; cmp history.proto history.o egrep wont history.proto | ./dircheck arts egrep 'will|two|gone|three' history.proto | ./dircheck -n arts *************** *** 206,215 **** egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2 egrep three history.proto | ./dircheck arch3 egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3 ! test -f arts/foo/99 ! test -f arts/bar/ugh/99 ! test -f arch2/bar/99 ! test ! -f arts/urp/99 cmp history history.after : "that's it for expire, on to upact" $(D) ./upact --- 206,215 ---- egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2 egrep three history.proto | ./dircheck arch3 egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3 ! test -f arts/foo/99 ; ! test -f arts/bar/ugh/99 ; ! test -f arch2/bar/99 ; ! test ! -f arts/urp/99 ; cmp history history.after : "that's it for expire, on to upact" $(D) ./upact *************** *** 219,232 **** rm -f history.pag history.dir $(D) ./mkhistory sort history | sed $(FIXMIDFIELD) | cmp - history.after ! test -r history.pag ! test -r history.dir : "and that's mkhistory done, finally try superkludge" ! test -r arts/foo/1 ! test -r arts/foo/10 $(D) ./superkludge foo ! test ! -r arts/foo/1 ! test -r arts/foo/10 : "success!" tidy: --- 219,232 ---- rm -f history.pag history.dir $(D) ./mkhistory sort history | sed $(FIXMIDFIELD) | cmp - history.after ! test -r history.pag ; ! test -r history.dir ; : "and that's mkhistory done, finally try superkludge" ! test -r arts/foo/1 ; ! test -r arts/foo/10 ; $(D) ./superkludge foo ! test ! -r arts/foo/1 ; ! test -r arts/foo/10 ; : "success!" tidy: *** cnpatch/tmp.file Fri Jul 7 15:27:43 1989 --- expire/mkhistory Tue Jun 27 16:47:59 1989 *************** *** 29,34 **** --- 29,35 ---- if egrep '^<swill@trash> ' history.n >/dev/null then echo "$0: <swill@trash> found in history.n -- aborting" >&2 + echo "$0: (some article lacks a Message-ID)" >&2 exit 1 fi mkdbm <history.n *** cnpatch/tmp.file Fri Jul 7 15:27:49 1989 --- input/Makefile Tue Jul 4 17:36:58 1989 *************** *** 39,51 **** : nothing newsspool: newsspool.o $(LIBS) ! $(CC) $(LDFLAGS) newsspool.o $(LIBS) -o $@ c7decode: c7decode.o $(LIBS) ! $(CC) $(LDFLAGS) c7decode.o $(LIBS) -o $@ bdecode: bdecode.o $(BATCH)/crctab.o $(LIBS) ! $(CC) $(LDFLAGS) bdecode.o $(BATCH)/crctab.o $(LIBS) -o $@ $(BATCH)/crctab.o: $(BATCH)/crctab.c ( cd $(BATCH) ; make crctab.o ) --- 39,51 ---- : nothing newsspool: newsspool.o $(LIBS) ! $(CC) $(LDFLAGS) newsspool.o $(PRE) $(LIBS) $(POST) -o $@ c7decode: c7decode.o $(LIBS) ! $(CC) $(LDFLAGS) c7decode.o $(PRE) $(LIBS) $(POST) -o $@ bdecode: bdecode.o $(BATCH)/crctab.o $(LIBS) ! $(CC) $(LDFLAGS) bdecode.o $(BATCH)/crctab.o $(PRE) $(LIBS) $(POST) -o $@ $(BATCH)/crctab.o: $(BATCH)/crctab.c ( cd $(BATCH) ; make crctab.o ) *************** *** 118,136 **** NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.3 cmp `ls -t in.coming | sed -n '1s;^;in.coming/;p'` test.3c NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning off ! test -r in.coming/stop NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning on ! test ! -r in.coming/stop mkdir in.coming/bad NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrun cmp tmp.1 test.out ! test " `echo in.coming/*`" = ' in.coming/bad' rm tmp.1 NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.1 NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.2 NEWSARTS=`pwd` NEWSCTL=`pwd` NEWSBIN=`pwd`/bin ./rnews.immed <test.3 cmp tmp.1 test.out ! test " `echo in.coming/*`" = ' in.coming/bad' rm tmp.1 rm -r bin in.coming --- 118,136 ---- NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.3 cmp `ls -t in.coming | sed -n '1s;^;in.coming/;p'` test.3c NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning off ! test -r in.coming/stop ; NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning on ! test ! -r in.coming/stop ; mkdir in.coming/bad NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrun cmp tmp.1 test.out ! test " `echo in.coming/*`" = ' in.coming/bad' ; rm tmp.1 NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.1 NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.2 NEWSARTS=`pwd` NEWSCTL=`pwd` NEWSBIN=`pwd`/bin ./rnews.immed <test.3 cmp tmp.1 test.out ! test " `echo in.coming/*`" = ' in.coming/bad' ; rm tmp.1 rm -r bin in.coming *** cnpatch/tmp.file Fri Jul 7 15:28:26 1989 --- libstdio/Makefile Tue Jul 4 17:38:07 1989 *************** *** 16,34 **** trials: all chmod +x runtrials ./runtrials >junk ! test ! -s junk ! rm stdiock.stock stdiock.fast junk trial.out lint: ! lint $(LINTFLAGS) -u $(SRC) lintport: ! lint -p $(LINTFLAGS) -u $(SRC) stdiock.stock: stdiock.o $(LIBS) ! $(CC) $(CFLAGS) stdiock.o $(LIBS) -o $@ stdiock.fast: stdiock.o $(OBJ) $(LIBS) ! $(CC) $(CFLAGS) stdiock.o $(OBJ) $(LIBS) -o $@ clean: ! rm -f *.o stdiock stdiock.fast stdiock.stock *mon.out trial.out --- 16,40 ---- trials: all chmod +x runtrials + : run first with stdout directed to a plain file ./runtrials >junk ! : and again with stdout directed to a tty, we hope. ! : do not panic. you can ignore the output of runtrials. ! : only its exit status really matters. ! ./runtrials ! rm stdiock.stock stdiock.fast junk lint: ! lint $(LINTFLAGS) $(SRC) stdiock.c lintport: ! lint -p $(LINTFLAGS) $(SRC) stdiock.c stdiock.stock: stdiock.o $(LIBS) ! : search -lc before libcnews.a to get stock stdio ! $(CC) $(CFLAGS) stdiock.o $(PRE) -lc $(LIBS) $(POST) -o $@ stdiock.fast: stdiock.o $(OBJ) $(LIBS) ! : load *.o by hand to get tuned stdio ! $(CC) $(CFLAGS) stdiock.o $(OBJ) $(PRE) $(LIBS) $(POST) -o $@ clean: ! rm -f *.o stdiock stdiock.fast stdiock.stock junk *mon.out *** cnpatch/tmp.file Fri Jul 7 15:28:27 1989 --- libstdio/README Tue Jun 27 13:41:06 1989 *************** *** 1,4 **** ! This directory does not form a library; fgets.o, fputs.o and rdwr.o ! constitute re-written stdio guts, thought to be compatible with the ! usual UNIX stdio implementation but a good deal faster than old ! versions. --- 1,3 ---- ! fgets.o, fputs.o and rdwr.o are re-implemented stdio guts, thought to be ! compatible with the usual UNIX stdio implementation but a good deal ! faster than old versions. *** cnpatch/tmp.file Fri Jul 7 15:28:29 1989 --- libstdio/runtrials Tue Jun 27 13:41:07 1989 *************** *** 6,16 **** for buf in "" -u do echo stdiock.$whose $fp $buf: ! ./stdiock.$whose $fp $buf <<! a line ! echo '' done done ! done | tee trial.out | egrep 'incompat|bugger' ! exit 0 # exit status of pipe is unportable anyway --- 6,21 ---- for buf in "" -u do echo stdiock.$whose $fp $buf: ! if ./stdiock.$whose $fp $buf <<! a line ! + then + : passed + else + exit 1 # something amiss + fi echo '' done done ! done ! exit 0 *** cnpatch/tmp.file Fri Jul 7 15:28:30 1989 --- libstdio/stdiock.c Tue Jun 27 13:41:08 1989 *************** *** 7,12 **** --- 7,13 ---- #include <stdio.h> FILE *fp = stdout; + int status = 0; main(argc, argv) char **argv; *************** *** 40,47 **** (void) fgets(line, sizeof line, fp); evalfile("fgets"); } else { ! if (fwrite("your", 1, 4, fp) != 4) (void) write(1, buggered, strlen(buggered)); evalfile("fwrite"); (void) fputs(" stdio seems to be ", stdout); --- 41,50 ---- (void) fgets(line, sizeof line, fp); evalfile("fgets"); } else { ! if (fwrite("your", 1, 4, fp) != 4) { ! status = 1; (void) write(1, buggered, strlen(buggered)); + } evalfile("fwrite"); (void) fputs(" stdio seems to be ", stdout); *************** *** 48,61 **** evalfile("fputs"); } ! if (wantbuf && fp->_ptr == NULL) (void) fputs("incompatible (_ptr) ", stdout); ! else (void) fputs("compatible (_ptr) ", stdout); if (fp->_cnt >= 0 && fp->_cnt <= BUFSIZ) (void) fputs("compatible (_cnt)", stdout); ! else (void) fputs("incompatible (_cnt)", stdout); evalfile("test"); (void) fputs(" with stdio.fast\n", stdout); --- 51,67 ---- evalfile("fputs"); } ! if (wantbuf && fp->_ptr == NULL) { ! status = 1; (void) fputs("incompatible (_ptr) ", stdout); ! } else (void) fputs("compatible (_ptr) ", stdout); if (fp->_cnt >= 0 && fp->_cnt <= BUFSIZ) (void) fputs("compatible (_cnt)", stdout); ! else { ! status = 1; (void) fputs("incompatible (_cnt)", stdout); + } evalfile("test"); (void) fputs(" with stdio.fast\n", stdout); *************** *** 65,71 **** (void) fflush(stdout); evalfile("fflush"); ! exit(0); } /* write on stdout with using stdio. ugh */ --- 71,80 ---- (void) fflush(stdout); evalfile("fflush"); ! exit(status); ! ! /* next line is not executed, but drags in the appropriate fread */ ! (void) fread(buf, 1, sizeof buf, stdin); } /* write on stdout with using stdio. ugh */ *************** *** 81,88 **** if (fp->_ptr != NULL && fp->_cnt != 0) { if (bufend == NULL) bufend = (char *)fp->_ptr + fp->_cnt; ! if (bufend != (char *)fp->_ptr + fp->_cnt) (void) write(1, buggered, strlen(buggered)); } (void) write(1, s, strlen(s)); --- 90,99 ---- if (fp->_ptr != NULL && fp->_cnt != 0) { if (bufend == NULL) bufend = (char *)fp->_ptr + fp->_cnt; ! if (bufend != (char *)fp->_ptr + fp->_cnt) { ! status = 1; (void) write(1, buggered, strlen(buggered)); + } } (void) write(1, s, strlen(s)); *** cnpatch/tmp.file Fri Jul 7 15:28:37 1989 --- man/inews.1 Thu Jul 6 17:46:09 1989 *************** *** 6,14 **** .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH INEWS 1 "7 June 1989" "C News" .SH NAME ! inews \- `user-friendly' news-posting front-end for rnews .SH SYNOPSIS .B inews .B \-p --- 6,14 ---- .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH INEWS 1 "6 July 1989" "C News" .SH NAME ! inews \- `user-friendly' news-posting front-end for relaynews .SH SYNOPSIS .B inews .B \-p *************** *** 85,129 **** ] .SH DESCRIPTION .I Inews ! installs locally ! and ! broadcasts a (network) news article ! (\fIi\fPnjects it into the .I news ! flow), ! read from .IR file s ! or standard input if none, ! normally ! by giving it as standard input to ! .IR rnews (1), ! after adding and altering headers, notably .BR Message-ID: , .BR From: and .BR Path: , ! deleting invisible characters, and ! appending the first four lines of .BR $HOME/.signature , ! if any. ! The article will instead be mailed to the moderators of the moderated newsgroups in the .B Newsgroups: ! header, ! if any are found. .PP .B "inews -p" is exactly equivalent to ! .BR rnews . ! Normal usage is simply .BR "inews -h" , which assumes the presence of at least .B Subject: and .B Newsgroups: ! headers. .B \-h tells .I inews --- 85,132 ---- ] .SH DESCRIPTION .I Inews ! \fIi\fPnjects an article into the .I news ! flow, ! installing it locally ! and ! broadcasting it (if appropriate) onto the network. ! The article is read from .IR file s ! or standard input if none. ! .I Inews ! adds and alters headers, notably .BR Message-ID: , .BR From: and .BR Path: , ! deletes invisible characters, and ! appends the first four lines of .BR $HOME/.signature , ! if any, ! to the article, and then hands it to ! .IR relaynews (8), ! provided the newsgroup(s) are unmoderated. ! If the groups are moderated, ! the article will instead be mailed to the moderators of the moderated newsgroups in the .B Newsgroups: ! header. .PP .B "inews -p" is exactly equivalent to ! invoking ! .BR rnews (8); ! this is seldom useful in C News. ! Normal usage is .BR "inews -h" , which assumes the presence of at least .B Subject: and .B Newsgroups: ! headers in the article. .B \-h tells .I inews *************** *** 156,162 **** to complete, instead of running it in the background and not waiting. .PP ! The remaining options are inherited from B news and exist only for backward-compatibility with news readers. .I "They should not be used by humans," as they are equivalent to --- 159,165 ---- to complete, instead of running it in the background and not waiting. .PP ! The rest of the options are inherited from B news and exist only for backward-compatibility with news readers. .I "They should not be used by humans," as they are equivalent to *************** *** 230,234 **** most novices use .IR Pnews , which could invoke ! .I rnews directly. --- 233,237 ---- most novices use .IR Pnews , which could invoke ! .I relaynews directly. *** cnpatch/tmp.file Fri Jul 7 15:28:40 1989 --- man/newsaux.8 Tue Jul 4 19:30:11 1989 *************** *** 6,12 **** .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH NEWSAUX 8 "22 June 1989" "C News" .SH NAME spacefor \- check available space for news .br --- 6,12 ---- .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH NEWSAUX 8 "4 July 1989" "C News" .SH NAME spacefor \- check available space for news .br *************** *** 147,156 **** performs minor maintenance chores that typically should be done once a day for the news system: saving copies of log files and truncating them, ! reporting logged errors, and checking for anomalies suggesting something ! is wrong. \fINewsdaily\fR saves one generation of old \fIlog\fR files and three ! generations of old \fIerrlog\fR files. It reports problems to the named \fIguru\fRs (default: `\*m'). .PP --- 147,156 ---- performs minor maintenance chores that typically should be done once a day for the news system: saving copies of log files and truncating them, ! reporting logged errors, checking for anomalies suggesting something ! is wrong, and cleaning out leftover files. \fINewsdaily\fR saves one generation of old \fIlog\fR files and three ! generations of old \fIerrlog\fR and \fIbatchlog\fR files. It reports problems to the named \fIguru\fRs (default: `\*m'). .PP *************** *** 193,198 **** --- 193,200 ---- \*c/log.o previous news log \*c/errlog current news-error log \*c/errlog.o* old news-error logs + \*c/batchlog current news-batcher log + \*c/batchlog.o* old news-batcher logs \*a/in.coming input-spooling area \*a/out.going output-batching area \*c/watchtime last time \fInewswatch\fR was run *************** *** 218,226 **** The need for \fIsizeof\fR and \fInewslock\fR is a botch. .PP \fILocknews\fR is a bit crude. - .PP - \fIAddgroup\fR does not create the directory(-ies) for the new group; - C News creates them as necessary but some news-reader programs disapprove. .PP \fIDelgroup\fR does not remove files or directories from \*a, although it prints a reminder to do so. --- 220,225 ---- *** cnpatch/tmp.file Fri Jul 7 15:28:44 1989 --- man/newsbatch.8 Tue Jul 4 19:30:20 1989 *************** *** 6,12 **** .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH NEWSBATCH 8 "28 May 1989" "C News" .SH NAME sendbatches, batchsplit \- news batching to other sites .br --- 6,12 ---- .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH NEWSBATCH 8 "4 July 1989" "C News" .SH NAME sendbatches, batchsplit \- news batching to other sites .br *************** *** 121,127 **** \fIsendbatches\fR when invoked without arguments; see above.) The second field is the size of batches to be prepared (before compression), in bytes. ! The third field is the maximum number of batches to be queued up for transmission to that site. The fourth, fifth, and sixth fields are the names of the programs to be used to build, compress, and transmit (respectively) batches to that site. --- 121,127 ---- \fIsendbatches\fR when invoked without arguments; see above.) The second field is the size of batches to be prepared (before compression), in bytes. ! The third field is the maximum length of the output queue for transmission to that site. The fourth, fifth, and sixth fields are the names of the programs to be used to build, compress, and transmit (respectively) batches to that site. *************** *** 132,138 **** finds the \fIbatchparms\fR line for that site and invokes \fIqueuelen\fR (see \fInewsaux\fR(8)) ! to find out how many batches are in the outbound queue for it already. \fISendbatches\fR limits the number of batches prepared to the minimum of the limits implied by queue lengths and available space. .PP --- 132,138 ---- finds the \fIbatchparms\fR line for that site and invokes \fIqueuelen\fR (see \fInewsaux\fR(8)) ! to find out the size of the outbound queue for the site. \fISendbatches\fR limits the number of batches prepared to the minimum of the limits implied by queue lengths and available space. .PP *************** *** 220,227 **** This ought to suffice to get data through almost any network. .PP \fISendbatches\fR logs some information about sites with backlogs in ! \fI\*c/batchlog\fR, keeping the previous \fIbatchlog\fR in ! \fIbatchlog.o\fR and the one before that in \fIbatchlog.oo\fR. This is intended to help detection and diagnosis of flow problems. .SH FILES .ta \w'\*a/out.going/*'u+2n --- 220,226 ---- This ought to suffice to get data through almost any network. .PP \fISendbatches\fR logs some information about sites with backlogs in ! \fI\*c/batchlog\fR (see also \fInewsdaily\fR(8)). This is intended to help detection and diagnosis of flow problems. .SH FILES .ta \w'\*a/out.going/*'u+2n *************** *** 235,240 **** --- 234,242 ---- also see text .SH SEE ALSO inews(1), compress(1), uux(1), relaynews(8), rnews(8) + .SH DIAGNOSTICS + Complaints, if any, + from \fIsendbatches\fR and its auxiliaries are mailed to `\*m'. .SH HISTORY Written at University of Toronto as part of the C News project. A number of the ideas came from Chris Lewis, who was then with Motorola. *** cnpatch/tmp.file Fri Jul 7 15:28:49 1989 --- man/relaynews.8 Tue Jul 4 19:43:15 1989 *************** *** 6,12 **** .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH RELAYNEWS 8 "28 May 1989" "C News" .SH NAME relaynews \- store and forward netnews articles .SH SYNOPSIS --- 6,12 ---- .ds c /usr/lib/news .\" =()<.ds m @<NEWSMASTER>@>()= .ds m usenet ! .TH RELAYNEWS 8 "4 July 1989" "C News" .SH NAME relaynews \- store and forward netnews articles .SH SYNOPSIS *************** *** 31,37 **** Typically the articles will be in a batch (see .IR news (5)), ! which may .I not be compressed (see --- 31,37 ---- Typically the articles will be in a batch (see .IR news (5)), ! which must .I not be compressed (see *************** *** 63,69 **** enables ``NNTP mode'' in which history entries are generated as articles are rejected. .B \-s ! makes discarding an article a serious matter. .B \-x excludes .I excluded-site --- 63,71 ---- enables ``NNTP mode'' in which history entries are generated as articles are rejected. .B \-s ! makes discarding an article a serious matter, ! justifying a non-zero exit status (for the benefit of ! .IR inews ). .B \-x excludes .I excluded-site *************** *** 74,80 **** .B Control: headers (or ! .B "for backward compatibility ONLY" a .B Newsgroups: header containing a single newsgroup ending in --- 76,82 ---- .B Control: headers (or ! .I "for backward compatibility ONLY" a .B Newsgroups: header containing a single newsgroup ending in *************** *** 106,113 **** .B junk pseudo-group, and forwarded as usual. ! In particular, ! if all newsgroups in the article are refused by the local subscription list or are refused by an --- 108,114 ---- .B junk pseudo-group, and forwarded as usual. ! If all newsgroups in the article are refused by the local subscription list or are refused by an *************** *** 184,190 **** and its subdirectories .TP .B \*b/ctl ! common directory of programs to implement control messages .TP .B \*b/relay/relaynews the lean, mean news-relayin' machine --- 185,191 ---- and its subdirectories .TP .B \*b/ctl ! directory of programs to implement control messages .TP .B \*b/relay/relaynews the lean, mean news-relayin' machine *** cnpatch/tmp.file Fri Jul 7 15:28:52 1989 --- misc/Makefile Tue Jul 4 17:39:13 1989 *************** *** 30,45 **** : nothing gngp: gngp.o $(LIBS) ! $(CC) $(CFLAGS) gngp.o $(LIBS) -o $@ ctime: ctime.o $(LIBS) ! $(CC) $(CFLAGS) ctime.o $(LIBS) -o $@ getdate: getdate.o $(LIBS) ! $(CC) $(CFLAGS) getdate.o $(LIBS) -o $@ newslock: newslock.o $(LIBS) ! $(CC) $(CFLAGS) newslock.o $(LIBS) -o $@ NHCFLAGS = -I$(RN) $(CFLAGS) RNEWSOBJS = $(RN)/history.o $(RN)/article.o $(RN)/hdrcommon.o \ --- 30,45 ---- : nothing gngp: gngp.o $(LIBS) ! $(CC) $(CFLAGS) gngp.o $(PRE) $(LIBS) $(POST) -o $@ ctime: ctime.o $(LIBS) ! $(CC) $(CFLAGS) ctime.o $(PRE) $(LIBS) $(POST) -o $@ getdate: getdate.o $(LIBS) ! $(CC) $(CFLAGS) getdate.o $(PRE) $(LIBS) $(POST) -o $@ newslock: newslock.o $(LIBS) ! $(CC) $(CFLAGS) newslock.o $(PRE) $(LIBS) $(POST) -o $@ NHCFLAGS = -I$(RN) $(CFLAGS) RNEWSOBJS = $(RN)/history.o $(RN)/article.o $(RN)/hdrcommon.o \ *************** *** 46,52 **** $(RN)/io.o $(RN)/msgs.o NHLIBS = $(LIBS) $(DBM) newshist: newshist.o $(RNEWSOBJS) $(LIBS) ! $(CC) $(NHCFLAGS) newshist.o $(RNEWSOBJS) $(NHLIBS) -o $@ newshist.o: newshist.c $(CC) $(NHCFLAGS) -c newshist.c --- 46,52 ---- $(RN)/io.o $(RN)/msgs.o NHLIBS = $(LIBS) $(DBM) newshist: newshist.o $(RNEWSOBJS) $(LIBS) ! $(CC) $(NHCFLAGS) newshist.o $(RNEWSOBJS) $(PRE) $(NHLIBS) $(POST) -o $@ newshist.o: newshist.c $(CC) $(NHCFLAGS) -c newshist.c *** cnpatch/tmp.file Fri Jul 7 15:29:00 1989 --- misc/newsdaily Thu Jun 29 14:22:36 1989 *************** *** 31,38 **** rm log.o mv log log.o && >log # report any errors ! sleep 500 # hope that log.o is quiescent after this if test -s errlog.o then ( --- 31,44 ---- rm log.o mv log log.o && >log + # keep several generations of batchlog for statistics + rm -f batchlog.ooo + mv batchlog.oo batchlog.ooo + mv batchlog.o batchlog.oo + mv batchlog batchlog.o && >batchlog + # report any errors ! sleep 500 # hope that errlog.o is quiescent after this if test -s errlog.o then ( *** cnpatch/tmp.file Fri Jul 7 15:29:11 1989 --- notebook/README Wed Jul 5 11:57:59 1989 *************** *** 9,15 **** Ihave.pic.in is an illustration for ihave; ihave.pic is what you get after you run ihave.pic.in through pic (in case you have a troff that knows about ! the graphics commands but don't have pic); tmac.pic is extra macros for ! use in troffing pic stuff. Config and newslock need tbl. Nothing here uses eqn. --- 9,14 ---- Ihave.pic.in is an illustration for ihave; ihave.pic is what you get after you run ihave.pic.in through pic (in case you have a troff that knows about ! the graphics commands but don't have pic). Config and newslock need tbl. Nothing here uses eqn. *** cnpatch/tmp.file Fri Jul 7 15:29:34 1989 --- relay/ctl/newgroup Sun Jun 25 13:41:31 1989 *************** *** 46,52 **** moderated) flag=m ;; *) flag=y ;; esac ! echo "$1 0000000000 00000 $flag" >>$NEWSCTL/active (echo "$1 `getdate now` $SENDER" >>$NEWSCTL/active.times) # rn hook # make the directory since rn will bitch if it's missing mkpdir $NEWSARTS/`echo $1 | tr . / ` --- 46,52 ---- moderated) flag=m ;; *) flag=y ;; esac ! echo "$1 0000000000 0000000000 $flag" >>$NEWSCTL/active (echo "$1 `getdate now` $SENDER" >>$NEWSCTL/active.times) # rn hook # make the directory since rn will bitch if it's missing mkpdir $NEWSARTS/`echo $1 | tr . / ` *** cnpatch/tmp.file Fri Jul 7 15:29:41 1989 --- relay/makefile Tue Jul 4 17:40:12 1989 *************** *** 38,44 **** OBJ=relaynews.o active.o article.o caches.o mkdirs.o control.o fileart.o \ hdrdefs.o hdrcommon.o hdrparse.o hdrmunge.o \ history.o io.o msgs.o procart.o \ ! sys.o transmit.o trbatch.o ihave.o $(LIBOBJS) FILES=$(NONCFILES) $(CFILES) NONCFILES= TODO* README ads/README ads/[0-9]* \ sh/inews sh/tear sh/anne.jones sh/defhdrs.awk \ --- 38,44 ---- OBJ=relaynews.o active.o article.o caches.o mkdirs.o control.o fileart.o \ hdrdefs.o hdrcommon.o hdrparse.o hdrmunge.o \ history.o io.o msgs.o procart.o \ ! sys.o transmit.o trbatch.o ihave.o FILES=$(NONCFILES) $(CFILES) NONCFILES= TODO* README ads/README ads/[0-9]* \ sh/inews sh/tear sh/anne.jones sh/defhdrs.awk \ *************** *** 52,59 **** mkfile: makefile sed '/mkfile/d' makefile | mkconv | sed 's/make/mk/g' >$@ ! relaynews: $(OBJ) ! $(CC) $(CFLAGS) $(OBJ) $(LIBS) $(LIBOBJS) -o $@ lint: $(SRC) $(LINT) $(LINTFLAGS) $(SRC) $(LLIBS) | $(LINTFILT) lint-p: $(SRC) --- 52,59 ---- mkfile: makefile sed '/mkfile/d' makefile | mkconv | sed 's/make/mk/g' >$@ ! relaynews: $(OBJ) $(LIBOBJS) ! $(CC) $(CFLAGS) $(OBJ) $(PRE) $(LIBS) $(LIBOBJS) $(POST) -o $@ lint: $(SRC) $(LINT) $(LINTFLAGS) $(SRC) $(LLIBS) | $(LINTFILT) lint-p: $(SRC) *** cnpatch/tmp.file Fri Jul 7 15:29:59 1989 --- relay/sh/inews Wed Jul 5 13:17:03 1989 *************** *** 71,76 **** --- 71,77 ---- -e) shift; echo "Expires: $1" >>$input ;; -f) shift; echo "From: $1" >>$input ;; -n) shift; echo "Newsgroups: $1" >>$input ;; + -r) shift; echo "Reply-To: $1" >>$input ;; -t) shift; echo "Subject: $1" >>$input ;; # aka Title: -D) # obsolete, undocumented: meant "don't check for recordings". # last present in B 2.10.1, invoked by readnews for followups. *************** *** 96,112 **** ;; esac rm -f $whoami - - inewsopt="$1" # for use in message body shift # skip -C to get ng as $1 - cat <<! >>$input # generate a control message Newsgroups: $1 Control: newgroup $1 Subject: newgroup $1 Approved: above-user@above-host - - This article generated by inews $inewsopt $1. ! ;; -*) --- 97,108 ---- *** cnpatch/tmp.file Fri Jul 7 15:30:09 1989 --- rna/makefile Tue Jul 4 17:40:38 1989 *************** *** 42,48 **** : warning, defs.h may not be right for your system readnews: $(ROFILES) defs.h $(LIBS) ! $(CC) $(CFLAGS) $(ROFILES) $(LIBS) -o $@ newsinstall: : "install all control files; don't overwrite any!" --- 42,48 ---- : warning, defs.h may not be right for your system readnews: $(ROFILES) defs.h $(LIBS) ! $(CC) $(CFLAGS) $(ROFILES) $(PRE) $(LIBS) $(POST) -o $@ newsinstall: : "install all control files; don't overwrite any!" Files that are new: new notebook/log (patch can't create, so diff against null): Index: notebook/log *** cnpatch/tmp.preposterously.long.name.to.make.patch.behave.right Fri Jul 7 15:26:59 1989 --- notebook/log Fri Jul 7 14:24:29 1989 *************** *** 0 **** --- 1,84 ---- + .TL + Log File Formats in C News + .AU + Geoff Collyer + .AI + Department of Statistics + University of Toronto + .SH + Introduction + .PP + The two main log files in C news are + \fINEWSCTL\fP\fB/log\fR + and + \fINEWSCTL\fP\fB/errlog\fR, + which are the standard output and standard error streams + of + .I relaynews . + .B errlog + should be empty; + if not, + something is seriously wrong, + probably with your configuration or + with unencapsulated news arriving mangled + courtesy of some network. + .SH + Formats + .PP + .B errlog + is a copy of any error messages written on + standard error by + .I relaynews + or its auxiliaries + (including control messages programs). + There are no timestamps + and the contents obey no special format. + A non-empty + .B errlog + is a sign of trouble, + which should be fixed promptly. + .PP + .B log + is written in a stylised format, + with whitespace separating the fields: + date and time, to millisecond resolution though possibly not + to millisecond accuracy; + the machine that sent us this article; + a single-character classification code; + the article's message-id; + and + code-specific information. + For example, + .DS L + .ft B + .ps 8 + .vs 10 + Jun 30 03:32:18.960 utgpu + <1312@sunset.MATH.UCLA.EDU> mailrus dptcdc me + Jun 30 03:32:19.600 utgpu j <1312@sunset.MATH.UCLA.EDU> junked due to groups `alt.drugs' + Jul 3 18:55:35.492 utstat s <470@lexicon.com> utzoo-real + Jul 3 18:55:35.912 utstat i <8907031824.AA09129@ucbvax.Berkeley.EDU> utzoo-send-ids + Jul 4 06:40:22.395 jarvis.csri.toronto.edu + <0541.AA0541@worsel> utgpu + Jul 4 06:40:22.595 jarvis.csri.toronto.edu + <0549.AA0549@worsel> utgpu + Jul 4 07:00:26.565 jarvis.csri.toronto.edu + <295@lancelot> utgpu + Jul 4 07:17:51.537 utgpu - <8258@saturn.ucsc.edu> duplicate + Jul 4 07:17:51.697 utgpu - <1675@neoucom.UUCP> duplicate + Jul 4 07:17:51.757 utgpu - <89Jul4.043358edt.10369@neat.ai.toronto.edu> duplicate + Jul 4 17:23:28.234 utgpu - <2537@quanta.eng.ohio-state.edu> no subscribed groups in `rec.arts.sf-lovers,rec.arts.startrek,rec.arts.drwho' + Jul 4 19:17:15.785 utgpu - <89Jul4.190330edt.5559@gpu.utcs.utoronto.ca> all groups `list.humanist' excluded in active + .ft R + .DE + .PP + The classification codes are: + .TS + c | c | c + cfB | lw(2.75i) | l . + code article disposition code-specific information + _ + \- rejected reason for rejection + + accepted list of sites to which this article was relayed + j T{ + accepted but filed in the \fIjunk\fR pseudo-newsgroup; preceding line will be \fB+\fR + T} reason for junking + i generated in response to an \fIihave\fR control message list of sites to which this article was relayed + s generated in response to a \fIsendme\fR control message list of sites to which this article was relayed + .TE end of patch 7-Jul-1989 -- $10 million equals 18 PM | Henry Spencer at U of Toronto Zoology (Pentagon-Minutes). -Tom Neff | uunet!attcan!utzoo!henry henry@zoo.toronto.edu