home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume19 / cnews2 / pch07jul89 < prev    next >
Internet Message Format  |  1989-09-17  |  45KB

  1. From attcan!utzoo!henry@uunet.uu.net Wed Aug  9 10:38:47 1989
  2. Received: from BBN.COM by pineapple.bbn.com
  3.     id <AA13984@pineapple.bbn.com>; Wed, 9 Aug 89 10:38:28 -0400
  4. Received: from uunet.uu.net by BBN.COM id aa27375; 9 Aug 89 10:38 EDT
  5. Received: from attcan.UUCP by uunet.uu.net (5.61/1.14) with UUCP 
  6.     id AA02384; Wed, 9 Aug 89 10:37:17 -0400
  7. Date: Wed, 9 Aug 89 10:37:17 -0400
  8. From: attcan!utzoo!henry@uunet.uu.net
  9. Message-Id: <8908091437.AA02384@uunet.uu.net>
  10. To: source-patches@uunet.UU.NET
  11. Subject: C News patch of 7-Jul-1989
  12. Content-Type: text  
  13. Content-Length: 44679  
  14. Status: R
  15.  
  16. Here is another C News patch.  This one is mostly small stuff; in particular,
  17. we haven't had time to work dbz in as we intend, so that's postponed to the
  18. next one.  This patch:
  19.  
  20.     - fixes some small bugs in the software
  21.     - revises batcher logging and error reporting
  22.     - provides for use of non-standard system libraries
  23.     - works around the SVID violation in many System V makes (which
  24.         shows up if your machine has no /bin/test)
  25.     - augments the stdio-compatibility checker so it catches the
  26.         compatibility problem on A/UX (but not, yet, SunOS 4.0)
  27.     - adds documentation on the log formats
  28.     - makes assorted minor fixes to documentation
  29.  
  30. start of patch 7-Jul-1989
  31. this should be run with   patch -p0 <thisfile
  32.  
  33. The following are obsolete and should be deleted (there is no
  34. easy way we can convince patch to do this automatically):
  35. notebook/tmac.pic
  36.  
  37. Like to use Prereq, but it is broken in some versions of patch.
  38. *** tmp.dates.with.really.long.filename.for.patch    Fri Jul  7 15:27:01 1989
  39. --- PATCHDATES    Fri Jul  7 15:27:01 1989
  40. ***************
  41. *** 1 ****
  42. --- 1,2 ----
  43.   23-Jun-1989
  44. + 7-Jul-1989
  45.  
  46. Changed files, if any:
  47.  
  48. *** cnpatch/tmp.file    Fri Jul  7 15:27:05 1989
  49. --- batch/Makefile    Tue Jul  4 17:35:04 1989
  50. ***************
  51. *** 26,38 ****
  52.       chmod +x $(PGMS)
  53.   
  54.   batcher:    batcher.o $(LIBS)
  55. !     $(CC) $(CFLAGS) $(LDFLAGS) batcher.o $(LIBS) -o $@
  56.   
  57.   c7encode:    c7encode.o $(LIBS)
  58. !     $(CC) $(CFLAGS) $(LDFLAGS) c7encode.o $(LIBS) -o $@
  59.   
  60.   bencode:    bencode.o crctab.o $(LIBS)
  61. !     $(CC) $(CFLAGS) bencode.o crctab.o $(LIBS) -o $@
  62.   
  63.   bencode.o:    coder.h
  64.   
  65. --- 26,38 ----
  66.       chmod +x $(PGMS)
  67.   
  68.   batcher:    batcher.o $(LIBS)
  69. !     $(CC) $(CFLAGS) $(LDFLAGS) batcher.o $(PRE) $(LIBS) $(POST) -o $@
  70.   
  71.   c7encode:    c7encode.o $(LIBS)
  72. !     $(CC) $(CFLAGS) $(LDFLAGS) c7encode.o $(PRE) $(LIBS) $(POST) -o $@
  73.   
  74.   bencode:    bencode.o crctab.o $(LIBS)
  75. !     $(CC) $(CFLAGS) bencode.o crctab.o $(PRE) $(LIBS) $(POST) -o $@
  76.   
  77.   bencode.o:    coder.h
  78.   
  79. ***************
  80. *** 135,144 ****
  81.       echo bletch >test.good
  82.       cmp test.out test.good
  83.       >batchlog
  84. -     >batchlog.o
  85.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches
  86. !     test ! -s out.going/foo/output
  87. !     test ! -s out.going/bar/output
  88.       echo `pwd`/test.1 200 >out.going/foo/togo
  89.       echo `pwd`/test.2 200 >>out.going/foo/togo
  90.       echo `pwd`/test.3 200 >>out.going/foo/togo
  91. --- 135,143 ----
  92.       echo bletch >test.good
  93.       cmp test.out test.good
  94.       >batchlog
  95.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches
  96. !     test ! -s out.going/foo/output ;
  97. !     test ! -s out.going/bar/output ;
  98.       echo `pwd`/test.1 200 >out.going/foo/togo
  99.       echo `pwd`/test.2 200 >>out.going/foo/togo
  100.       echo `pwd`/test.3 200 >>out.going/foo/togo
  101. ***************
  102. *** 149,160 ****
  103.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches
  104.       cmp out.going/foo/output test.out1
  105.       cmp out.going/bar/output test.out2
  106. !     test ! -s out.going/foo/togo
  107. !     test ! -s out.going/bar/togo
  108.       cmp test.left out.going/bar/togo.2
  109. !     sed 1d batchlog.o >test.log
  110. !     test ! -s test.log
  111. !     sed 1d batchlog >test.log
  112.       echo 'bar    backlog 1 (batches flowing)' >test.good
  113.       cmp test.good test.log
  114.       rm -rf test.* togo out.going bin batchparms batchlog batchlog.*
  115. --- 148,159 ----
  116.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./sendbatches
  117.       cmp out.going/foo/output test.out1
  118.       cmp out.going/bar/output test.out2
  119. !     test ! -s out.going/foo/togo ;
  120. !     test ! -s out.going/bar/togo ;
  121.       cmp test.left out.going/bar/togo.2
  122. !     sed '/^$$/q' batchlog | sed '1d;$$d' >test.log
  123. !     test ! -s test.log ;
  124. !     sed '1,/^$$/d' batchlog | sed '1d;$$d' >test.log
  125.       echo 'bar    backlog 1 (batches flowing)' >test.good
  126.       cmp test.good test.log
  127.       rm -rf test.* togo out.going bin batchparms batchlog batchlog.*
  128.  
  129. *** cnpatch/tmp.file    Fri Jul  7 15:27:07 1989
  130. --- batch/batchsplit    Wed Jul  5 00:03:29 1989
  131. ***************
  132. *** 55,61 ****
  133.           if (NF == 1)
  134.               size = 3000    # Arbitrary guess.
  135.           else
  136. !             size = $2
  137.           if (total + size > limit && ninbatch > 0) {
  138.               # Go to next batch.
  139.               bno++
  140. --- 55,61 ----
  141.           if (NF == 1)
  142.               size = 3000    # Arbitrary guess.
  143.           else
  144. !             size = $NF
  145.           if (total + size > limit && ninbatch > 0) {
  146.               # Go to next batch.
  147.               bno++
  148.  
  149. *** cnpatch/tmp.file    Fri Jul  7 15:27:12 1989
  150. --- batch/sendbatches    Thu Jun 29 14:36:38 1989
  151. ***************
  152. *** 10,16 ****
  153.   origpath="$PATH"
  154.   
  155.   parms=$NEWSCTL/batchparms
  156. ! log=$NEWSCTL/batchlog        # also same with suffixes .o and .oo
  157.   
  158.   # lock against multiple simultaneous execution
  159.   lock="$NEWSCTL/LOCKbatch"
  160. --- 10,16 ----
  161.   origpath="$PATH"
  162.   
  163.   parms=$NEWSCTL/batchparms
  164. ! log=$NEWSCTL/batchlog
  165.   
  166.   # lock against multiple simultaneous execution
  167.   lock="$NEWSCTL/LOCKbatch"
  168. ***************
  169. *** 61,69 ****
  170.   esac
  171.   
  172.   # Start up logging.
  173. ! mv $log.o $log.oo
  174. ! mv $log $log.o
  175. ! date >$log
  176.   
  177.   # Run through them.
  178.   for sys in $syses
  179. --- 61,67 ----
  180.   esac
  181.   
  182.   # Start up logging.
  183. ! date >>$log
  184.   
  185.   # Run through them.
  186.   for sys in $syses
  187. ***************
  188. *** 72,78 ****
  189.       here=$NEWSARTS/out.going/$sys
  190.       if test ! -d $here
  191.       then
  192. !         echo "$0: cannot find batch directory for \`$sys'" >>$log
  193.           continue
  194.       fi
  195.       cd $here
  196. --- 70,77 ----
  197.       here=$NEWSARTS/out.going/$sys
  198.       if test ! -d $here
  199.       then
  200. !         echo "$0: cannot find batch directory for \`$sys'" |
  201. !                             mail $NEWSMASTER
  202.           continue
  203.       fi
  204.       cd $here
  205. ***************
  206. *** 95,101 ****
  207.       set $ctlline
  208.       if test " $#" -ne 6
  209.       then
  210. !         echo "$0: bad or missing batchparms line for \`$sys'" >>$log
  211.           continue
  212.       fi
  213.       batchsize=$2
  214. --- 94,101 ----
  215.       set $ctlline
  216.       if test " $#" -ne 6
  217.       then
  218. !         echo "$0: bad or missing batchparms line for \`$sys'" |
  219. !                             mail $NEWSMASTER
  220.           continue
  221.       fi
  222.       batchsize=$2
  223. ***************
  224. *** 143,153 ****
  225.           them=`ls | egrep '^togo\.[0-9]' | sed "${nbatch}q"`
  226.           for f in $them
  227.           do
  228. !             if $batcher -d $NEWSARTS $f | $muncher | $sender $sys
  229.               then
  230. !                 rm $f
  231.               else
  232. !                 echo "$0: batching for \`$sys' failed" >>$log
  233.                   exit 1
  234.               fi
  235.           done
  236. --- 143,159 ----
  237.           them=`ls | egrep '^togo\.[0-9]' | sed "${nbatch}q"`
  238.           for f in $them
  239.           do
  240. !             ( $batcher -d $NEWSARTS $f | $muncher |
  241. !                         $sender $sys ) >/tmp/nb$$ 2>&1
  242. !             if test $? -eq 0 -a ! -s /tmp/nb$$
  243.               then
  244. !                 rm $f /tmp/nb$$
  245.               else
  246. !                 (
  247. !                     echo "$0: batching $f for \`$sys' failed"
  248. !                     cat /tmp/nb$$
  249. !                     echo "$0: aborting"
  250. !                 ) | mail $NEWSMASTER
  251.                   exit 1
  252.               fi
  253.           done
  254. ***************
  255. *** 169,171 ****
  256. --- 175,179 ----
  257.           echo "$sys    backlog $nart ($status)" >>$log
  258.       fi
  259.   done
  260. + echo >>$log
  261.  
  262. *** cnpatch/tmp.file    Fri Jul  7 15:27:13 1989
  263. --- batch/viainews    Tue Jul  4 19:18:17 1989
  264. ***************
  265. *** 1,4 ****
  266.   #! /bin/sh
  267.   # Feed batch to inews, for ihave/sendme mostly.
  268.   
  269. ! exec inews -h -W
  270. --- 1,4 ----
  271.   #! /bin/sh
  272.   # Feed batch to inews, for ihave/sendme mostly.
  273.   
  274. ! exec inews -h -W -A
  275.  
  276. *** cnpatch/tmp.file    Fri Jul  7 15:27:15 1989
  277. --- conf/Makefile    Tue Jul  4 17:34:12 1989
  278. ***************
  279. *** 32,38 ****
  280.       chmod +x subst
  281.       : too late for h and hfake, include has already been built
  282.       -egrep '^(h|hfake)/' subst.hs subst.gc >junk
  283. !     test ! -s junk
  284.       rm -f junk
  285.       ./subst -f substitutions `sed 's;^;../;' subst.hs subst.gc`
  286.   
  287. --- 32,38 ----
  288.       chmod +x subst
  289.       : too late for h and hfake, include has already been built
  290.       -egrep '^(h|hfake)/' subst.hs subst.gc >junk
  291. !     test ! -s junk ;
  292.       rm -f junk
  293.       ./subst -f substitutions `sed 's;^;../;' subst.hs subst.gc`
  294.   
  295. ***************
  296. *** 65,71 ****
  297.       echo 'echo 0' >>$@
  298.   
  299.   setnewsids:    setnewsids.o $(LIBS)
  300. !     $(CC) $(CFLAGS) setnewsids.o $(LIBS) -o $@
  301.   
  302.   ../ranlibed:    ../libcnews.a
  303.       ranlib ../libcnews.a
  304. --- 65,71 ----
  305.       echo 'echo 0' >>$@
  306.   
  307.   setnewsids:    setnewsids.o $(LIBS)
  308. !     $(CC) $(CFLAGS) setnewsids.o $(PRE) $(LIBS) $(POST) -o $@
  309.   
  310.   ../ranlibed:    ../libcnews.a
  311.       ranlib ../libcnews.a
  312.  
  313. *** cnpatch/tmp.file    Fri Jul  7 15:27:17 1989
  314. --- conf/build    Tue Jul  4 17:50:04 1989
  315. ***************
  316. *** 381,387 ****
  317.   ./query 'Do you want to use our fast stdio library [yes]? '
  318.   read libstdio
  319.   case "$libstdio" in
  320. ! y*|Y*|'')    libstdio=libstdio    ;;
  321.   *)        libstdio=        ;;
  322.   esac
  323.   
  324. --- 381,391 ----
  325.   ./query 'Do you want to use our fast stdio library [yes]? '
  326.   read libstdio
  327.   case "$libstdio" in
  328. ! y*|Y*|'')    libstdio=libstdio
  329. !         echo 'Beware that the compatibility check will work best if'
  330. !         echo 'the output of doit.bin is NOT redirected into a file'
  331. !         echo 'or a pipe.'
  332. !         ;;
  333.   *)        libstdio=        ;;
  334.   esac
  335.   
  336. ***************
  337. *** 513,518 ****
  338. --- 517,534 ----
  339.   esac
  340.   
  341.   echo
  342. + echo 'On unusual systems it may be necessary to link C News programs with'
  343. + echo 'libraries other than the usual C library.  These can be specified as'
  344. + echo 'either full pathnames or -l... options.  What libraries, in addition'
  345. + echo 'to the one(s) picked up automatically by the compiler, should be used'
  346. + ./query 'when linking C News [none]? '
  347. + read postlibs
  348. + case "$postlibs" in
  349. + '')    ;;
  350. + *)    postlibs="POST='$postlibs'"    ;;
  351. + esac
  352. + echo
  353.   ./query 'Does your system have a "hostname" command [yes]? '
  354.   read hostname
  355.   case "$hostname" in
  356. ***************
  357. *** 846,852 ****
  358.       echo "for dir in lib$unixkind lib$addrsize libc libcnews $libstdio"
  359.       echo "do"
  360.       echo "    cd ../\$dir"
  361. !     echo "    make u $cc $copts || exit 1"
  362.       echo "done"
  363.       echo "cd ../libfake"
  364.       echo "ed - Makefile <<'!'"
  365. --- 862,868 ----
  366.       echo "for dir in lib$unixkind lib$addrsize libc libcnews $libstdio"
  367.       echo "do"
  368.       echo "    cd ../\$dir"
  369. !     echo "    make u $cc $copts $postlibs || exit 1"
  370.       echo "done"
  371.       echo "cd ../libfake"
  372.       echo "ed - Makefile <<'!'"
  373. ***************
  374. *** 853,859 ****
  375.       echo "/NEEDED =/s/.*/NEEDED = $fake/"
  376.       echo "w"
  377.       echo "!"
  378. !     echo "make u $cc $copts || exit 1"
  379.       echo "cd ../conf"
  380.       if test " $ranlib" = " y"
  381.       then
  382. --- 869,875 ----
  383.       echo "/NEEDED =/s/.*/NEEDED = $fake/"
  384.       echo "w"
  385.       echo "!"
  386. !     echo "make u $cc $copts $postlibs || exit 1"
  387.       echo "cd ../conf"
  388.       if test " $ranlib" = " y"
  389.       then
  390. ***************
  391. *** 864,870 ****
  392.       then
  393.           echo ': testing libstdio'
  394.           echo 'cd ../libstdio'
  395. !         echo "make trials $cc $copts || exit 1"
  396.           echo ': done'
  397.       fi
  398.       echo ': building programs'
  399. --- 880,889 ----
  400.       then
  401.           echo ': testing libstdio'
  402.           echo 'cd ../libstdio'
  403. !         echo ': produces some meaningless-looking output on terminal,'
  404. !         echo ': but do not redirect it -- it is important that stdio'
  405. !         echo ': think output is going to a terminal.'
  406. !         echo "make trials $cc $copts $postlibs || exit 1"
  407.           echo ': done'
  408.       fi
  409.       echo ': building programs'
  410. ***************
  411. *** 871,882 ****
  412.       echo 'cd ../conf'
  413.       if test " $sete" != " y"
  414.       then
  415. !         echo "make setnewsids NEWSUSER=$newsuid NEWSGROUP=$newsgid $cc $copts"
  416.       fi
  417.       echo "for dir in $pgmdirs"
  418.       echo "do"
  419.       echo "    cd ../\$dir"
  420. !     echo "    make all $dbm $cc $copts"
  421.       echo "done"
  422.       echo ": done"
  423.       echo ": building prototype control files"
  424. --- 890,901 ----
  425.       echo 'cd ../conf'
  426.       if test " $sete" != " y"
  427.       then
  428. !         echo "make setnewsids NEWSUSER=$newsuid NEWSGROUP=$newsgid $cc $copts $postlibs"
  429.       fi
  430.       echo "for dir in $pgmdirs"
  431.       echo "do"
  432.       echo "    cd ../\$dir"
  433. !     echo "    make all $dbm $cc $copts $postlibs"
  434.       echo "done"
  435.       echo ": done"
  436.       echo ": building prototype control files"
  437.  
  438. *** cnpatch/tmp.file    Fri Jul  7 15:27:37 1989
  439. --- doc/interface    Tue Jul  4 16:37:34 1989
  440. ***************
  441. *** 1,4 ****
  442. ! .DA "9 June 1989"
  443.   .TL
  444.   The Interface Between C News And The Outside World
  445.   .AU
  446. --- 1,4 ----
  447. ! .DA "4 July 1989"
  448.   .TL
  449.   The Interface Between C News And The Outside World
  450.   .AU
  451. ***************
  452. *** 71,79 ****
  453.   You need a standard shell.
  454.   .PP
  455.   To the best of our ability, all our shell files begin with ``#!\ /bin/sh''.
  456. ! If your shell misinterprets this as a request to run the C shell, you're
  457. ! in trouble.
  458. ! If your shell doesn't know about ``#'' comments at all, you're in trouble.
  459.   We hope that no modern shell makes either of these mistakes.
  460.   .PP
  461.   We believe that none of our stuff relies on relatively modern shell features
  462. --- 71,95 ----
  463.   You need a standard shell.
  464.   .PP
  465.   To the best of our ability, all our shell files begin with ``#!\ /bin/sh''.
  466. ! As far as we know, nothing actually relies on being able to \fIexec\fR a
  467. ! shell file; that is, if ``#!\ /bin/sh'' is just a comment to your shell,
  468. ! that should be okay.
  469. ! If your shell misinterprets it as a request to run the C shell, however,
  470. ! you're in trouble.
  471. ! Running the following might help:
  472. ! .DS
  473. ! for f in `find . \-type f \-print`
  474. ! do
  475. !     if test " `sed 1q $f`" = "#! /bin/sh"
  476. !     then
  477. !         ed $f <<'!'
  478. ! 1s/#!/: use/
  479. ! w
  480. ! !
  481. !     fi
  482. ! done
  483. ! .DE
  484. ! If your shell doesn't know about ``#'' comments at all, again you're in trouble.
  485.   We hope that no modern shell makes either of these mistakes.
  486.   .PP
  487.   We believe that none of our stuff relies on relatively modern shell features
  488.  
  489. *** cnpatch/tmp.file    Fri Jul  7 15:27:38 1989
  490. --- expire/Makefile    Tue Jul  4 17:36:01 1989
  491. ***************
  492. *** 34,52 ****
  493.       -for f in $(THEM) ; do cmp $$f $(NEWSBIN)/expire/$$f ; done
  494.   
  495.   expire: expire.o $(LIBS)
  496. !     $(CC) $(LDFLAGS) expire.o $(LIBS) $(DBM) -o $@
  497.   
  498.   histinfo: histinfo.o $(LIBS)
  499. !     $(CC) $(LDFLAGS) histinfo.o $(LIBS) -o $@
  500.   
  501.   lowest:    lowest.o $(LIBS)
  502. !     $(CC) $(LDFLAGS) lowest.o $(LIBS) -o $@
  503.   
  504.   histslash:    histslash.o $(LIBS)
  505. !     $(CC) $(LDFLAGS) histslash.o $(LIBS) -o $@
  506.   
  507.   mkdbm:    mkdbm.o $(LIBS)
  508. !     $(CC) $(LDFLAGS) mkdbm.o $(LIBS) $(DBM) -o $@
  509.   
  510.   lint:    expire.c
  511.       lint -ha $(LINTFLAGS) expire.c 2>&1 | egrep -v $(JUNKLINT) | tee $@
  512. --- 34,52 ----
  513.       -for f in $(THEM) ; do cmp $$f $(NEWSBIN)/expire/$$f ; done
  514.   
  515.   expire: expire.o $(LIBS)
  516. !     $(CC) $(LDFLAGS) expire.o $(PRE) $(LIBS) $(DBM) $(POST) -o $@
  517.   
  518.   histinfo: histinfo.o $(LIBS)
  519. !     $(CC) $(LDFLAGS) histinfo.o $(PRE) $(LIBS) $(POST) -o $@
  520.   
  521.   lowest:    lowest.o $(LIBS)
  522. !     $(CC) $(LDFLAGS) lowest.o $(PRE) $(LIBS) $(POST) -o $@
  523.   
  524.   histslash:    histslash.o $(LIBS)
  525. !     $(CC) $(LDFLAGS) histslash.o $(PRE) $(LIBS) $(POST) -o $@
  526.   
  527.   mkdbm:    mkdbm.o $(LIBS)
  528. !     $(CC) $(LDFLAGS) mkdbm.o $(PRE) $(LIBS) $(DBM) $(POST) -o $@
  529.   
  530.   lint:    expire.c
  531.       lint -ha $(LINTFLAGS) expire.c 2>&1 | egrep -v $(JUNKLINT) | tee $@
  532. ***************
  533. *** 194,202 ****
  534.       sed $(FIXPATHS) test.out | cmp - tgood
  535.       : "okay, it seems to know what it's doing -- now, can it do it?"
  536.       $(RUN) -p explist >test.out 2>test.stderr
  537. !     test ! -s test.stderr
  538.       cmp test.out pgood
  539. !     test ! -f history.n
  540.       cmp history.proto history.o
  541.       egrep wont history.proto | ./dircheck arts
  542.       egrep 'will|two|gone|three' history.proto | ./dircheck -n arts
  543. --- 194,202 ----
  544.       sed $(FIXPATHS) test.out | cmp - tgood
  545.       : "okay, it seems to know what it's doing -- now, can it do it?"
  546.       $(RUN) -p explist >test.out 2>test.stderr
  547. !     test ! -s test.stderr ;
  548.       cmp test.out pgood
  549. !     test ! -f history.n ;
  550.       cmp history.proto history.o
  551.       egrep wont history.proto | ./dircheck arts
  552.       egrep 'will|two|gone|three' history.proto | ./dircheck -n arts
  553. ***************
  554. *** 206,215 ****
  555.       egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2
  556.       egrep three history.proto | ./dircheck arch3
  557.       egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3
  558. !     test -f arts/foo/99
  559. !     test -f arts/bar/ugh/99
  560. !     test -f arch2/bar/99
  561. !     test ! -f arts/urp/99
  562.       cmp history history.after
  563.       : "that's it for expire, on to upact"
  564.       $(D) ./upact
  565. --- 206,215 ----
  566.       egrep 'will|wont|gone|three' history.proto | ./dircheck -n arch2
  567.       egrep three history.proto | ./dircheck arch3
  568.       egrep 'will|wont|gone|two' history.proto | ./dircheck -n arch3
  569. !     test -f arts/foo/99 ;
  570. !     test -f arts/bar/ugh/99 ;
  571. !     test -f arch2/bar/99 ;
  572. !     test ! -f arts/urp/99 ;
  573.       cmp history history.after
  574.       : "that's it for expire, on to upact"
  575.       $(D) ./upact
  576. ***************
  577. *** 219,232 ****
  578.       rm -f history.pag history.dir
  579.       $(D) ./mkhistory
  580.       sort history | sed $(FIXMIDFIELD) | cmp - history.after
  581. !     test -r history.pag
  582. !     test -r history.dir
  583.       : "and that's mkhistory done, finally try superkludge"
  584. !     test -r arts/foo/1
  585. !     test -r arts/foo/10
  586.       $(D) ./superkludge foo
  587. !     test ! -r arts/foo/1
  588. !     test -r arts/foo/10
  589.       : "success!"
  590.   
  591.   tidy:
  592. --- 219,232 ----
  593.       rm -f history.pag history.dir
  594.       $(D) ./mkhistory
  595.       sort history | sed $(FIXMIDFIELD) | cmp - history.after
  596. !     test -r history.pag ;
  597. !     test -r history.dir ;
  598.       : "and that's mkhistory done, finally try superkludge"
  599. !     test -r arts/foo/1 ;
  600. !     test -r arts/foo/10 ;
  601.       $(D) ./superkludge foo
  602. !     test ! -r arts/foo/1 ;
  603. !     test -r arts/foo/10 ;
  604.       : "success!"
  605.   
  606.   tidy:
  607.  
  608. *** cnpatch/tmp.file    Fri Jul  7 15:27:43 1989
  609. --- expire/mkhistory    Tue Jun 27 16:47:59 1989
  610. ***************
  611. *** 29,34 ****
  612. --- 29,35 ----
  613.   if egrep '^<swill@trash>    ' history.n >/dev/null
  614.   then
  615.       echo "$0: <swill@trash> found in history.n -- aborting" >&2
  616. +     echo "$0: (some article lacks a Message-ID)" >&2
  617.       exit 1
  618.   fi
  619.   mkdbm <history.n
  620.  
  621. *** cnpatch/tmp.file    Fri Jul  7 15:27:49 1989
  622. --- input/Makefile    Tue Jul  4 17:36:58 1989
  623. ***************
  624. *** 39,51 ****
  625.       : nothing
  626.   
  627.   newsspool: newsspool.o $(LIBS)
  628. !     $(CC) $(LDFLAGS) newsspool.o $(LIBS) -o $@
  629.   
  630.   c7decode: c7decode.o $(LIBS)
  631. !     $(CC) $(LDFLAGS) c7decode.o $(LIBS) -o $@
  632.   
  633.   bdecode: bdecode.o $(BATCH)/crctab.o $(LIBS)
  634. !     $(CC) $(LDFLAGS) bdecode.o $(BATCH)/crctab.o $(LIBS) -o $@
  635.   
  636.   $(BATCH)/crctab.o:    $(BATCH)/crctab.c
  637.       ( cd $(BATCH) ; make crctab.o )
  638. --- 39,51 ----
  639.       : nothing
  640.   
  641.   newsspool: newsspool.o $(LIBS)
  642. !     $(CC) $(LDFLAGS) newsspool.o $(PRE) $(LIBS) $(POST) -o $@
  643.   
  644.   c7decode: c7decode.o $(LIBS)
  645. !     $(CC) $(LDFLAGS) c7decode.o $(PRE) $(LIBS) $(POST) -o $@
  646.   
  647.   bdecode: bdecode.o $(BATCH)/crctab.o $(LIBS)
  648. !     $(CC) $(LDFLAGS) bdecode.o $(BATCH)/crctab.o $(PRE) $(LIBS) $(POST) -o $@
  649.   
  650.   $(BATCH)/crctab.o:    $(BATCH)/crctab.c
  651.       ( cd $(BATCH) ; make crctab.o )
  652. ***************
  653. *** 118,136 ****
  654.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.3
  655.       cmp `ls -t in.coming | sed -n '1s;^;in.coming/;p'` test.3c
  656.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning off
  657. !     test -r in.coming/stop
  658.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning on
  659. !     test ! -r in.coming/stop
  660.       mkdir in.coming/bad
  661.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrun
  662.       cmp tmp.1 test.out
  663. !     test " `echo in.coming/*`" = ' in.coming/bad'
  664.       rm tmp.1
  665.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.1
  666.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.2
  667.       NEWSARTS=`pwd` NEWSCTL=`pwd` NEWSBIN=`pwd`/bin ./rnews.immed <test.3
  668.       cmp tmp.1 test.out
  669. !     test " `echo in.coming/*`" = ' in.coming/bad'
  670.       rm tmp.1
  671.       rm -r bin in.coming
  672.   
  673. --- 118,136 ----
  674.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.3
  675.       cmp `ls -t in.coming | sed -n '1s;^;in.coming/;p'` test.3c
  676.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning off
  677. !     test -r in.coming/stop ;
  678.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrunning on
  679. !     test ! -r in.coming/stop ;
  680.       mkdir in.coming/bad
  681.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./newsrun
  682.       cmp tmp.1 test.out
  683. !     test " `echo in.coming/*`" = ' in.coming/bad' ;
  684.       rm tmp.1
  685.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.1
  686.       NEWSARTS=`pwd` NEWSCTL=`pwd` ./rnews.batch <test.2
  687.       NEWSARTS=`pwd` NEWSCTL=`pwd` NEWSBIN=`pwd`/bin ./rnews.immed <test.3
  688.       cmp tmp.1 test.out
  689. !     test " `echo in.coming/*`" = ' in.coming/bad' ;
  690.       rm tmp.1
  691.       rm -r bin in.coming
  692.   
  693.  
  694. *** cnpatch/tmp.file    Fri Jul  7 15:28:26 1989
  695. --- libstdio/Makefile    Tue Jul  4 17:38:07 1989
  696. ***************
  697. *** 16,34 ****
  698.   
  699.   trials:    all
  700.       chmod +x runtrials
  701.       ./runtrials >junk
  702. !     test ! -s junk
  703. !     rm stdiock.stock stdiock.fast junk trial.out
  704.   
  705.   lint:
  706. !     lint $(LINTFLAGS) -u $(SRC)
  707.   lintport:
  708. !     lint -p $(LINTFLAGS) -u $(SRC)
  709.   
  710.   stdiock.stock: stdiock.o $(LIBS)
  711. !     $(CC) $(CFLAGS) stdiock.o $(LIBS) -o $@
  712.   stdiock.fast: stdiock.o $(OBJ) $(LIBS)
  713. !     $(CC) $(CFLAGS) stdiock.o $(OBJ) $(LIBS) -o $@
  714.   
  715.   clean:
  716. !     rm -f *.o stdiock stdiock.fast stdiock.stock *mon.out trial.out
  717. --- 16,40 ----
  718.   
  719.   trials:    all
  720.       chmod +x runtrials
  721. +     : run first with stdout directed to a plain file
  722.       ./runtrials >junk
  723. !     : and again with stdout directed to a tty, we hope.
  724. !     : do not panic.  you can ignore the output of runtrials.
  725. !     : only its exit status really matters.
  726. !     ./runtrials
  727. !     rm stdiock.stock stdiock.fast junk
  728.   
  729.   lint:
  730. !     lint $(LINTFLAGS) $(SRC) stdiock.c
  731.   lintport:
  732. !     lint -p $(LINTFLAGS) $(SRC) stdiock.c
  733.   
  734.   stdiock.stock: stdiock.o $(LIBS)
  735. !     : search -lc before libcnews.a to get stock stdio
  736. !     $(CC) $(CFLAGS) stdiock.o $(PRE) -lc $(LIBS) $(POST) -o $@
  737.   stdiock.fast: stdiock.o $(OBJ) $(LIBS)
  738. !     : load *.o by hand to get tuned stdio
  739. !     $(CC) $(CFLAGS) stdiock.o $(OBJ) $(PRE) $(LIBS) $(POST) -o $@
  740.   
  741.   clean:
  742. !     rm -f *.o stdiock stdiock.fast stdiock.stock junk *mon.out
  743.  
  744. *** cnpatch/tmp.file    Fri Jul  7 15:28:27 1989
  745. --- libstdio/README    Tue Jun 27 13:41:06 1989
  746. ***************
  747. *** 1,4 ****
  748. ! This directory does not form a library; fgets.o, fputs.o and rdwr.o
  749. ! constitute re-written stdio guts, thought to be compatible with the
  750. ! usual UNIX stdio implementation but a good deal faster than old
  751. ! versions.
  752. --- 1,3 ----
  753. ! fgets.o, fputs.o and rdwr.o are re-implemented stdio guts, thought to be
  754. ! compatible with the usual UNIX stdio implementation but a good deal
  755. ! faster than old versions.
  756.  
  757. *** cnpatch/tmp.file    Fri Jul  7 15:28:29 1989
  758. --- libstdio/runtrials    Tue Jun 27 13:41:07 1989
  759. ***************
  760. *** 6,16 ****
  761.           for buf in "" -u
  762.           do
  763.               echo stdiock.$whose $fp $buf:
  764. !             ./stdiock.$whose $fp $buf <<!
  765.   a line
  766.   !
  767.               echo ''
  768.           done
  769.       done
  770. ! done | tee trial.out | egrep 'incompat|bugger'
  771. ! exit 0                # exit status of pipe is unportable anyway
  772. --- 6,21 ----
  773.           for buf in "" -u
  774.           do
  775.               echo stdiock.$whose $fp $buf:
  776. !             if ./stdiock.$whose $fp $buf <<!
  777.   a line
  778.   !
  779. +             then
  780. +                 : passed
  781. +             else
  782. +                 exit 1        # something amiss
  783. +             fi
  784.               echo ''
  785.           done
  786.       done
  787. ! done
  788. ! exit 0
  789.  
  790. *** cnpatch/tmp.file    Fri Jul  7 15:28:30 1989
  791. --- libstdio/stdiock.c    Tue Jun 27 13:41:08 1989
  792. ***************
  793. *** 7,12 ****
  794. --- 7,13 ----
  795.   #include <stdio.h>
  796.   
  797.   FILE *fp = stdout;
  798. + int status = 0;
  799.   
  800.   main(argc, argv)
  801.   char **argv;
  802. ***************
  803. *** 40,47 ****
  804.           (void) fgets(line, sizeof line, fp);
  805.           evalfile("fgets");
  806.       } else {
  807. !         if (fwrite("your", 1, 4, fp) != 4)
  808.               (void) write(1, buggered, strlen(buggered));
  809.           evalfile("fwrite");
  810.   
  811.           (void) fputs(" stdio seems to be ", stdout);
  812. --- 41,50 ----
  813.           (void) fgets(line, sizeof line, fp);
  814.           evalfile("fgets");
  815.       } else {
  816. !         if (fwrite("your", 1, 4, fp) != 4) {
  817. !             status = 1;
  818.               (void) write(1, buggered, strlen(buggered));
  819. +         }
  820.           evalfile("fwrite");
  821.   
  822.           (void) fputs(" stdio seems to be ", stdout);
  823. ***************
  824. *** 48,61 ****
  825.           evalfile("fputs");
  826.       }
  827.   
  828. !     if (wantbuf && fp->_ptr == NULL)
  829.           (void) fputs("incompatible (_ptr) ", stdout);
  830. !     else
  831.           (void) fputs("compatible (_ptr) ", stdout);
  832.       if (fp->_cnt >= 0 && fp->_cnt <= BUFSIZ)
  833.           (void) fputs("compatible (_cnt)", stdout);
  834. !     else
  835.           (void) fputs("incompatible (_cnt)", stdout);
  836.       evalfile("test");
  837.   
  838.       (void) fputs(" with stdio.fast\n", stdout);
  839. --- 51,67 ----
  840.           evalfile("fputs");
  841.       }
  842.   
  843. !     if (wantbuf && fp->_ptr == NULL) {
  844. !         status = 1;
  845.           (void) fputs("incompatible (_ptr) ", stdout);
  846. !     } else
  847.           (void) fputs("compatible (_ptr) ", stdout);
  848.       if (fp->_cnt >= 0 && fp->_cnt <= BUFSIZ)
  849.           (void) fputs("compatible (_cnt)", stdout);
  850. !     else {
  851. !         status = 1;
  852.           (void) fputs("incompatible (_cnt)", stdout);
  853. +     }
  854.       evalfile("test");
  855.   
  856.       (void) fputs(" with stdio.fast\n", stdout);
  857. ***************
  858. *** 65,71 ****
  859.       (void) fflush(stdout);
  860.       evalfile("fflush");
  861.   
  862. !     exit(0);
  863.   }
  864.   
  865.   /* write on stdout with using stdio. ugh */
  866. --- 71,80 ----
  867.       (void) fflush(stdout);
  868.       evalfile("fflush");
  869.   
  870. !     exit(status);
  871. !     /* next line is not executed, but drags in the appropriate fread */
  872. !     (void) fread(buf, 1, sizeof buf, stdin);
  873.   }
  874.   
  875.   /* write on stdout with using stdio. ugh */
  876. ***************
  877. *** 81,88 ****
  878.       if (fp->_ptr != NULL && fp->_cnt != 0) {
  879.           if (bufend == NULL)
  880.               bufend = (char *)fp->_ptr + fp->_cnt;
  881. !         if (bufend != (char *)fp->_ptr + fp->_cnt)
  882.               (void) write(1, buggered, strlen(buggered));
  883.       }
  884.   
  885.       (void) write(1, s, strlen(s));
  886. --- 90,99 ----
  887.       if (fp->_ptr != NULL && fp->_cnt != 0) {
  888.           if (bufend == NULL)
  889.               bufend = (char *)fp->_ptr + fp->_cnt;
  890. !         if (bufend != (char *)fp->_ptr + fp->_cnt) {
  891. !             status = 1;
  892.               (void) write(1, buggered, strlen(buggered));
  893. +         }
  894.       }
  895.   
  896.       (void) write(1, s, strlen(s));
  897.  
  898. *** cnpatch/tmp.file    Fri Jul  7 15:28:37 1989
  899. --- man/inews.1    Thu Jul  6 17:46:09 1989
  900. ***************
  901. *** 6,14 ****
  902.   .ds c /usr/lib/news
  903.   .\" =()<.ds m @<NEWSMASTER>@>()=
  904.   .ds m usenet
  905. ! .TH INEWS 1 "7 June 1989" "C News"
  906.   .SH NAME
  907. ! inews \- `user-friendly' news-posting front-end for rnews
  908.   .SH SYNOPSIS
  909.   .B inews
  910.   .B \-p
  911. --- 6,14 ----
  912.   .ds c /usr/lib/news
  913.   .\" =()<.ds m @<NEWSMASTER>@>()=
  914.   .ds m usenet
  915. ! .TH INEWS 1 "6 July 1989" "C News"
  916.   .SH NAME
  917. ! inews \- `user-friendly' news-posting front-end for relaynews
  918.   .SH SYNOPSIS
  919.   .B inews
  920.   .B \-p
  921. ***************
  922. *** 85,129 ****
  923.   ]
  924.   .SH DESCRIPTION
  925.   .I Inews
  926. ! installs locally
  927. ! and
  928. ! broadcasts a (network) news article
  929. ! (\fIi\fPnjects it into the
  930.   .I news
  931. ! flow),
  932. ! read from
  933.   .IR file s
  934. ! or standard input if none,
  935. ! normally
  936. ! by giving it as standard input to
  937. ! .IR rnews (1),
  938. ! after adding and altering headers,
  939.   notably
  940.   .BR Message-ID: ,
  941.   .BR From:
  942.   and
  943.   .BR Path: ,
  944. ! deleting invisible characters,
  945.   and
  946. ! appending the first four lines of
  947.   .BR $HOME/.signature ,
  948. ! if any.
  949. ! The article will instead be mailed
  950.   to the moderators of the moderated newsgroups in the
  951.   .B Newsgroups:
  952. ! header,
  953. ! if any are found.
  954.   .PP
  955.   .B "inews -p"
  956.   is exactly equivalent to
  957. ! .BR rnews .
  958. ! Normal usage is simply
  959.   .BR "inews -h" ,
  960.   which assumes the presence of at least
  961.   .B Subject:
  962.   and
  963.   .B Newsgroups:
  964. ! headers.
  965.   .B \-h
  966.   tells
  967.   .I inews
  968. --- 85,132 ----
  969.   ]
  970.   .SH DESCRIPTION
  971.   .I Inews
  972. ! \fIi\fPnjects an article into the
  973.   .I news
  974. ! flow,
  975. ! installing it locally
  976. ! and
  977. ! broadcasting it (if appropriate) onto the network.
  978. ! The article is read from
  979.   .IR file s
  980. ! or standard input if none.
  981. ! .I Inews
  982. ! adds and alters headers,
  983.   notably
  984.   .BR Message-ID: ,
  985.   .BR From:
  986.   and
  987.   .BR Path: ,
  988. ! deletes invisible characters,
  989.   and
  990. ! appends the first four lines of
  991.   .BR $HOME/.signature ,
  992. ! if any,
  993. ! to the article, and then hands it to
  994. ! .IR relaynews (8),
  995. ! provided the newsgroup(s) are unmoderated.
  996. ! If the groups are moderated,
  997. ! the article will instead be mailed
  998.   to the moderators of the moderated newsgroups in the
  999.   .B Newsgroups:
  1000. ! header.
  1001.   .PP
  1002.   .B "inews -p"
  1003.   is exactly equivalent to
  1004. ! invoking
  1005. ! .BR rnews (8);
  1006. ! this is seldom useful in C News.
  1007. ! Normal usage is
  1008.   .BR "inews -h" ,
  1009.   which assumes the presence of at least
  1010.   .B Subject:
  1011.   and
  1012.   .B Newsgroups:
  1013. ! headers in the article.
  1014.   .B \-h
  1015.   tells
  1016.   .I inews
  1017. ***************
  1018. *** 156,162 ****
  1019.   to complete,
  1020.   instead of running it in the background and not waiting.
  1021.   .PP
  1022. ! The remaining options are inherited from B news
  1023.   and exist only for backward-compatibility with news readers.
  1024.   .I "They should not be used by humans,"
  1025.   as they are equivalent to
  1026. --- 159,165 ----
  1027.   to complete,
  1028.   instead of running it in the background and not waiting.
  1029.   .PP
  1030. ! The rest of the options are inherited from B news
  1031.   and exist only for backward-compatibility with news readers.
  1032.   .I "They should not be used by humans,"
  1033.   as they are equivalent to
  1034. ***************
  1035. *** 230,234 ****
  1036.   most novices use
  1037.   .IR Pnews ,
  1038.   which could invoke
  1039. ! .I rnews
  1040.   directly.
  1041. --- 233,237 ----
  1042.   most novices use
  1043.   .IR Pnews ,
  1044.   which could invoke
  1045. ! .I relaynews
  1046.   directly.
  1047.  
  1048. *** cnpatch/tmp.file    Fri Jul  7 15:28:40 1989
  1049. --- man/newsaux.8    Tue Jul  4 19:30:11 1989
  1050. ***************
  1051. *** 6,12 ****
  1052.   .ds c /usr/lib/news
  1053.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1054.   .ds m usenet
  1055. ! .TH NEWSAUX 8 "22 June 1989" "C News"
  1056.   .SH NAME
  1057.   spacefor \- check available space for news
  1058.   .br
  1059. --- 6,12 ----
  1060.   .ds c /usr/lib/news
  1061.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1062.   .ds m usenet
  1063. ! .TH NEWSAUX 8 "4 July 1989" "C News"
  1064.   .SH NAME
  1065.   spacefor \- check available space for news
  1066.   .br
  1067. ***************
  1068. *** 147,156 ****
  1069.   performs minor maintenance chores
  1070.   that typically should be done once a day for the news system:
  1071.   saving copies of log files and truncating them,
  1072. ! reporting logged errors, and checking for anomalies suggesting something
  1073. ! is wrong.
  1074.   \fINewsdaily\fR saves one generation of old \fIlog\fR files and three
  1075. ! generations of old \fIerrlog\fR files.
  1076.   It reports problems to the named \fIguru\fRs
  1077.   (default:  `\*m').
  1078.   .PP
  1079. --- 147,156 ----
  1080.   performs minor maintenance chores
  1081.   that typically should be done once a day for the news system:
  1082.   saving copies of log files and truncating them,
  1083. ! reporting logged errors, checking for anomalies suggesting something
  1084. ! is wrong, and cleaning out leftover files.
  1085.   \fINewsdaily\fR saves one generation of old \fIlog\fR files and three
  1086. ! generations of old \fIerrlog\fR and \fIbatchlog\fR files.
  1087.   It reports problems to the named \fIguru\fRs
  1088.   (default:  `\*m').
  1089.   .PP
  1090. ***************
  1091. *** 193,198 ****
  1092. --- 193,200 ----
  1093.   \*c/log.o    previous news log
  1094.   \*c/errlog    current news-error log
  1095.   \*c/errlog.o*    old news-error logs
  1096. + \*c/batchlog    current news-batcher log
  1097. + \*c/batchlog.o*    old news-batcher logs
  1098.   \*a/in.coming    input-spooling area
  1099.   \*a/out.going    output-batching area
  1100.   \*c/watchtime    last time \fInewswatch\fR was run
  1101. ***************
  1102. *** 218,226 ****
  1103.   The need for \fIsizeof\fR and \fInewslock\fR is a botch.
  1104.   .PP
  1105.   \fILocknews\fR is a bit crude.
  1106. - .PP
  1107. - \fIAddgroup\fR does not create the directory(-ies) for the new group;
  1108. - C News creates them as necessary but some news-reader programs disapprove.
  1109.   .PP
  1110.   \fIDelgroup\fR does not remove files or directories from \*a, although it
  1111.   prints a reminder to do so.
  1112. --- 220,225 ----
  1113.  
  1114. *** cnpatch/tmp.file    Fri Jul  7 15:28:44 1989
  1115. --- man/newsbatch.8    Tue Jul  4 19:30:20 1989
  1116. ***************
  1117. *** 6,12 ****
  1118.   .ds c /usr/lib/news
  1119.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1120.   .ds m usenet
  1121. ! .TH NEWSBATCH 8 "28 May 1989" "C News"
  1122.   .SH NAME
  1123.   sendbatches, batchsplit \- news batching to other sites
  1124.   .br
  1125. --- 6,12 ----
  1126.   .ds c /usr/lib/news
  1127.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1128.   .ds m usenet
  1129. ! .TH NEWSBATCH 8 "4 July 1989" "C News"
  1130.   .SH NAME
  1131.   sendbatches, batchsplit \- news batching to other sites
  1132.   .br
  1133. ***************
  1134. *** 121,127 ****
  1135.   \fIsendbatches\fR when invoked without arguments; see above.)
  1136.   The second field is the size of batches to be prepared (before compression),
  1137.   in bytes.
  1138. ! The third field is the maximum number of batches to be queued up for
  1139.   transmission to that site.
  1140.   The fourth, fifth, and sixth fields are the names of the programs to
  1141.   be used to build, compress, and transmit (respectively) batches to that site.
  1142. --- 121,127 ----
  1143.   \fIsendbatches\fR when invoked without arguments; see above.)
  1144.   The second field is the size of batches to be prepared (before compression),
  1145.   in bytes.
  1146. ! The third field is the maximum length of the output queue for
  1147.   transmission to that site.
  1148.   The fourth, fifth, and sixth fields are the names of the programs to
  1149.   be used to build, compress, and transmit (respectively) batches to that site.
  1150. ***************
  1151. *** 132,138 ****
  1152.   finds the \fIbatchparms\fR line for that site
  1153.   and
  1154.   invokes \fIqueuelen\fR (see \fInewsaux\fR(8))
  1155. ! to find out how many batches are in the outbound queue for it already.
  1156.   \fISendbatches\fR limits the number of batches prepared to the minimum of
  1157.   the limits implied by queue lengths and available space.
  1158.   .PP
  1159. --- 132,138 ----
  1160.   finds the \fIbatchparms\fR line for that site
  1161.   and
  1162.   invokes \fIqueuelen\fR (see \fInewsaux\fR(8))
  1163. ! to find out the size of the outbound queue for the site.
  1164.   \fISendbatches\fR limits the number of batches prepared to the minimum of
  1165.   the limits implied by queue lengths and available space.
  1166.   .PP
  1167. ***************
  1168. *** 220,227 ****
  1169.   This ought to suffice to get data through almost any network.
  1170.   .PP
  1171.   \fISendbatches\fR logs some information about sites with backlogs in
  1172. ! \fI\*c/batchlog\fR, keeping the previous \fIbatchlog\fR in
  1173. ! \fIbatchlog.o\fR and the one before that in \fIbatchlog.oo\fR.
  1174.   This is intended to help detection and diagnosis of flow problems.
  1175.   .SH FILES
  1176.   .ta \w'\*a/out.going/*'u+2n
  1177. --- 220,226 ----
  1178.   This ought to suffice to get data through almost any network.
  1179.   .PP
  1180.   \fISendbatches\fR logs some information about sites with backlogs in
  1181. ! \fI\*c/batchlog\fR (see also \fInewsdaily\fR(8)).
  1182.   This is intended to help detection and diagnosis of flow problems.
  1183.   .SH FILES
  1184.   .ta \w'\*a/out.going/*'u+2n
  1185. ***************
  1186. *** 235,240 ****
  1187. --- 234,242 ----
  1188.   also see text
  1189.   .SH SEE ALSO
  1190.   inews(1), compress(1), uux(1), relaynews(8), rnews(8)
  1191. + .SH DIAGNOSTICS
  1192. + Complaints, if any,
  1193. + from \fIsendbatches\fR and its auxiliaries are mailed to `\*m'.
  1194.   .SH HISTORY
  1195.   Written at University of Toronto as part of the C News project.
  1196.   A number of the ideas came from Chris Lewis, who was then with Motorola.
  1197.  
  1198. *** cnpatch/tmp.file    Fri Jul  7 15:28:49 1989
  1199. --- man/relaynews.8    Tue Jul  4 19:43:15 1989
  1200. ***************
  1201. *** 6,12 ****
  1202.   .ds c /usr/lib/news
  1203.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1204.   .ds m usenet
  1205. ! .TH RELAYNEWS 8 "28 May 1989" "C News"
  1206.   .SH NAME
  1207.   relaynews \- store and forward netnews articles
  1208.   .SH SYNOPSIS
  1209. --- 6,12 ----
  1210.   .ds c /usr/lib/news
  1211.   .\" =()<.ds m @<NEWSMASTER>@>()=
  1212.   .ds m usenet
  1213. ! .TH RELAYNEWS 8 "4 July 1989" "C News"
  1214.   .SH NAME
  1215.   relaynews \- store and forward netnews articles
  1216.   .SH SYNOPSIS
  1217. ***************
  1218. *** 31,37 ****
  1219.   Typically the articles will be in a batch
  1220.   (see
  1221.   .IR news (5)),
  1222. ! which may
  1223.   .I not
  1224.   be compressed
  1225.   (see
  1226. --- 31,37 ----
  1227.   Typically the articles will be in a batch
  1228.   (see
  1229.   .IR news (5)),
  1230. ! which must
  1231.   .I not
  1232.   be compressed
  1233.   (see
  1234. ***************
  1235. *** 63,69 ****
  1236.   enables ``NNTP mode''
  1237.   in which history entries are generated as articles are rejected.
  1238.   .B \-s
  1239. ! makes discarding an article a serious matter.
  1240.   .B \-x
  1241.   excludes
  1242.   .I excluded-site
  1243. --- 63,71 ----
  1244.   enables ``NNTP mode''
  1245.   in which history entries are generated as articles are rejected.
  1246.   .B \-s
  1247. ! makes discarding an article a serious matter,
  1248. ! justifying a non-zero exit status (for the benefit of
  1249. ! .IR inews ).
  1250.   .B \-x
  1251.   excludes
  1252.   .I excluded-site
  1253. ***************
  1254. *** 74,80 ****
  1255.   .B Control:
  1256.   headers
  1257.   (or
  1258. ! .B "for backward compatibility ONLY"
  1259.   a
  1260.   .B Newsgroups:
  1261.   header containing a single newsgroup ending in
  1262. --- 76,82 ----
  1263.   .B Control:
  1264.   headers
  1265.   (or
  1266. ! .I "for backward compatibility ONLY"
  1267.   a
  1268.   .B Newsgroups:
  1269.   header containing a single newsgroup ending in
  1270. ***************
  1271. *** 106,113 ****
  1272.   .B junk
  1273.   pseudo-group,
  1274.   and forwarded as usual.
  1275. ! In particular,
  1276. ! if all newsgroups in the article are refused by
  1277.   the local subscription list
  1278.   or
  1279.   are refused by an
  1280. --- 108,114 ----
  1281.   .B junk
  1282.   pseudo-group,
  1283.   and forwarded as usual.
  1284. ! If all newsgroups in the article are refused by
  1285.   the local subscription list
  1286.   or
  1287.   are refused by an
  1288. ***************
  1289. *** 184,190 ****
  1290.   and its subdirectories
  1291.   .TP
  1292.   .B \*b/ctl
  1293. ! common directory of programs to implement control messages
  1294.   .TP
  1295.   .B \*b/relay/relaynews
  1296.   the lean, mean news-relayin' machine
  1297. --- 185,191 ----
  1298.   and its subdirectories
  1299.   .TP
  1300.   .B \*b/ctl
  1301. ! directory of programs to implement control messages
  1302.   .TP
  1303.   .B \*b/relay/relaynews
  1304.   the lean, mean news-relayin' machine
  1305.  
  1306. *** cnpatch/tmp.file    Fri Jul  7 15:28:52 1989
  1307. --- misc/Makefile    Tue Jul  4 17:39:13 1989
  1308. ***************
  1309. *** 30,45 ****
  1310.       : nothing
  1311.   
  1312.   gngp:    gngp.o $(LIBS)
  1313. !     $(CC) $(CFLAGS) gngp.o $(LIBS) -o $@
  1314.   
  1315.   ctime:    ctime.o $(LIBS)
  1316. !     $(CC) $(CFLAGS) ctime.o $(LIBS) -o $@
  1317.   
  1318.   getdate:    getdate.o $(LIBS)
  1319. !     $(CC) $(CFLAGS) getdate.o $(LIBS) -o $@
  1320.   
  1321.   newslock:    newslock.o $(LIBS)
  1322. !     $(CC) $(CFLAGS) newslock.o $(LIBS) -o $@
  1323.   
  1324.   NHCFLAGS = -I$(RN) $(CFLAGS)
  1325.   RNEWSOBJS = $(RN)/history.o $(RN)/article.o $(RN)/hdrcommon.o \
  1326. --- 30,45 ----
  1327.       : nothing
  1328.   
  1329.   gngp:    gngp.o $(LIBS)
  1330. !     $(CC) $(CFLAGS) gngp.o $(PRE) $(LIBS) $(POST) -o $@
  1331.   
  1332.   ctime:    ctime.o $(LIBS)
  1333. !     $(CC) $(CFLAGS) ctime.o $(PRE) $(LIBS) $(POST) -o $@
  1334.   
  1335.   getdate:    getdate.o $(LIBS)
  1336. !     $(CC) $(CFLAGS) getdate.o $(PRE) $(LIBS) $(POST) -o $@
  1337.   
  1338.   newslock:    newslock.o $(LIBS)
  1339. !     $(CC) $(CFLAGS) newslock.o $(PRE) $(LIBS) $(POST) -o $@
  1340.   
  1341.   NHCFLAGS = -I$(RN) $(CFLAGS)
  1342.   RNEWSOBJS = $(RN)/history.o $(RN)/article.o $(RN)/hdrcommon.o \
  1343. ***************
  1344. *** 46,52 ****
  1345.    $(RN)/io.o $(RN)/msgs.o
  1346.   NHLIBS = $(LIBS) $(DBM)
  1347.   newshist:    newshist.o $(RNEWSOBJS) $(LIBS)
  1348. !     $(CC) $(NHCFLAGS) newshist.o $(RNEWSOBJS) $(NHLIBS) -o $@
  1349.   
  1350.   newshist.o:    newshist.c
  1351.       $(CC) $(NHCFLAGS) -c newshist.c
  1352. --- 46,52 ----
  1353.    $(RN)/io.o $(RN)/msgs.o
  1354.   NHLIBS = $(LIBS) $(DBM)
  1355.   newshist:    newshist.o $(RNEWSOBJS) $(LIBS)
  1356. !     $(CC) $(NHCFLAGS) newshist.o $(RNEWSOBJS) $(PRE) $(NHLIBS) $(POST) -o $@
  1357.   
  1358.   newshist.o:    newshist.c
  1359.       $(CC) $(NHCFLAGS) -c newshist.c
  1360.  
  1361. *** cnpatch/tmp.file    Fri Jul  7 15:29:00 1989
  1362. --- misc/newsdaily    Thu Jun 29 14:22:36 1989
  1363. ***************
  1364. *** 31,38 ****
  1365.   rm log.o
  1366.   mv log log.o && >log
  1367.   
  1368.   # report any errors
  1369. ! sleep 500            # hope that log.o is quiescent after this
  1370.   if test -s errlog.o
  1371.   then
  1372.       (
  1373. --- 31,44 ----
  1374.   rm log.o
  1375.   mv log log.o && >log
  1376.   
  1377. + # keep several generations of batchlog for statistics
  1378. + rm -f batchlog.ooo
  1379. + mv batchlog.oo batchlog.ooo
  1380. + mv batchlog.o batchlog.oo
  1381. + mv batchlog batchlog.o && >batchlog
  1382.   # report any errors
  1383. ! sleep 500            # hope that errlog.o is quiescent after this
  1384.   if test -s errlog.o
  1385.   then
  1386.       (
  1387.  
  1388. *** cnpatch/tmp.file    Fri Jul  7 15:29:11 1989
  1389. --- notebook/README    Wed Jul  5 11:57:59 1989
  1390. ***************
  1391. *** 9,15 ****
  1392.   
  1393.   Ihave.pic.in is an illustration for ihave; ihave.pic is what you get after
  1394.   you run ihave.pic.in through pic (in case you have a troff that knows about
  1395. ! the graphics commands but don't have pic); tmac.pic is extra macros for
  1396. ! use in troffing pic stuff.
  1397.   
  1398.   Config and newslock need tbl.  Nothing here uses eqn.
  1399. --- 9,14 ----
  1400.   
  1401.   Ihave.pic.in is an illustration for ihave; ihave.pic is what you get after
  1402.   you run ihave.pic.in through pic (in case you have a troff that knows about
  1403. ! the graphics commands but don't have pic).
  1404.   
  1405.   Config and newslock need tbl.  Nothing here uses eqn.
  1406.  
  1407. *** cnpatch/tmp.file    Fri Jul  7 15:29:34 1989
  1408. --- relay/ctl/newgroup    Sun Jun 25 13:41:31 1989
  1409. ***************
  1410. *** 46,52 ****
  1411.       moderated)    flag=m ;;
  1412.       *)        flag=y ;;
  1413.       esac
  1414. !     echo "$1 0000000000 00000 $flag" >>$NEWSCTL/active
  1415.       (echo "$1 `getdate now` $SENDER" >>$NEWSCTL/active.times)  # rn hook
  1416.       # make the directory since rn will bitch if it's missing
  1417.       mkpdir $NEWSARTS/`echo $1 | tr . / `
  1418. --- 46,52 ----
  1419.       moderated)    flag=m ;;
  1420.       *)        flag=y ;;
  1421.       esac
  1422. !     echo "$1 0000000000 0000000000 $flag" >>$NEWSCTL/active
  1423.       (echo "$1 `getdate now` $SENDER" >>$NEWSCTL/active.times)  # rn hook
  1424.       # make the directory since rn will bitch if it's missing
  1425.       mkpdir $NEWSARTS/`echo $1 | tr . / `
  1426.  
  1427. *** cnpatch/tmp.file    Fri Jul  7 15:29:41 1989
  1428. --- relay/makefile    Tue Jul  4 17:40:12 1989
  1429. ***************
  1430. *** 38,44 ****
  1431.   OBJ=relaynews.o active.o article.o caches.o mkdirs.o control.o fileart.o \
  1432.       hdrdefs.o hdrcommon.o hdrparse.o hdrmunge.o \
  1433.       history.o io.o msgs.o procart.o \
  1434. !     sys.o transmit.o trbatch.o ihave.o $(LIBOBJS)
  1435.   FILES=$(NONCFILES) $(CFILES)
  1436.   NONCFILES= TODO* README ads/README ads/[0-9]* \
  1437.       sh/inews sh/tear sh/anne.jones sh/defhdrs.awk \
  1438. --- 38,44 ----
  1439.   OBJ=relaynews.o active.o article.o caches.o mkdirs.o control.o fileart.o \
  1440.       hdrdefs.o hdrcommon.o hdrparse.o hdrmunge.o \
  1441.       history.o io.o msgs.o procart.o \
  1442. !     sys.o transmit.o trbatch.o ihave.o
  1443.   FILES=$(NONCFILES) $(CFILES)
  1444.   NONCFILES= TODO* README ads/README ads/[0-9]* \
  1445.       sh/inews sh/tear sh/anne.jones sh/defhdrs.awk \
  1446. ***************
  1447. *** 52,59 ****
  1448.   mkfile: makefile
  1449.       sed '/mkfile/d' makefile | mkconv | sed 's/make/mk/g' >$@
  1450.   
  1451. ! relaynews: $(OBJ)
  1452. !     $(CC) $(CFLAGS) $(OBJ) $(LIBS) $(LIBOBJS) -o $@
  1453.   lint: $(SRC)
  1454.       $(LINT) $(LINTFLAGS) $(SRC) $(LLIBS) | $(LINTFILT)
  1455.   lint-p: $(SRC)
  1456. --- 52,59 ----
  1457.   mkfile: makefile
  1458.       sed '/mkfile/d' makefile | mkconv | sed 's/make/mk/g' >$@
  1459.   
  1460. ! relaynews: $(OBJ) $(LIBOBJS)
  1461. !     $(CC) $(CFLAGS) $(OBJ) $(PRE) $(LIBS) $(LIBOBJS) $(POST) -o $@
  1462.   lint: $(SRC)
  1463.       $(LINT) $(LINTFLAGS) $(SRC) $(LLIBS) | $(LINTFILT)
  1464.   lint-p: $(SRC)
  1465.  
  1466. *** cnpatch/tmp.file    Fri Jul  7 15:29:59 1989
  1467. --- relay/sh/inews    Wed Jul  5 13:17:03 1989
  1468. ***************
  1469. *** 71,76 ****
  1470. --- 71,77 ----
  1471.       -e)    shift; echo "Expires: $1" >>$input ;;
  1472.       -f)    shift; echo "From: $1" >>$input ;;
  1473.       -n)    shift; echo "Newsgroups: $1" >>$input ;;
  1474. +     -r)    shift; echo "Reply-To: $1" >>$input ;;
  1475.       -t)    shift; echo "Subject: $1" >>$input ;;    # aka Title:
  1476.       -D)    # obsolete, undocumented: meant "don't check for recordings".
  1477.           # last present in B 2.10.1, invoked by readnews for followups.
  1478. ***************
  1479. *** 96,112 ****
  1480.               ;;
  1481.           esac
  1482.           rm -f $whoami
  1483. -         inewsopt="$1"        # for use in message body
  1484.           shift            # skip -C to get ng as $1
  1485.           cat <<! >>$input    # generate a control message
  1486.   Newsgroups: $1
  1487.   Control: newgroup $1
  1488.   Subject: newgroup $1
  1489.   Approved: above-user@above-host
  1490. - This article generated by inews $inewsopt $1.
  1491.   !
  1492.           ;;
  1493.       -*)
  1494. --- 97,108 ----
  1495.  
  1496. *** cnpatch/tmp.file    Fri Jul  7 15:30:09 1989
  1497. --- rna/makefile    Tue Jul  4 17:40:38 1989
  1498. ***************
  1499. *** 42,48 ****
  1500.       : warning, defs.h may not be right for your system
  1501.   
  1502.   readnews: $(ROFILES) defs.h $(LIBS)
  1503. !     $(CC) $(CFLAGS) $(ROFILES) $(LIBS) -o $@
  1504.   
  1505.   newsinstall:
  1506.       : "install all control files; don't overwrite any!"
  1507. --- 42,48 ----
  1508.       : warning, defs.h may not be right for your system
  1509.   
  1510.   readnews: $(ROFILES) defs.h $(LIBS)
  1511. !     $(CC) $(CFLAGS) $(ROFILES) $(PRE) $(LIBS) $(POST) -o $@
  1512.   
  1513.   newsinstall:
  1514.       : "install all control files; don't overwrite any!"
  1515.  
  1516. Files that are new:
  1517.  
  1518. new notebook/log (patch can't create, so diff against null):
  1519. Index: notebook/log
  1520. *** cnpatch/tmp.preposterously.long.name.to.make.patch.behave.right    Fri Jul  7 15:26:59 1989
  1521. --- notebook/log    Fri Jul  7 14:24:29 1989
  1522. ***************
  1523. *** 0 ****
  1524. --- 1,84 ----
  1525. + .TL
  1526. + Log File Formats in C News
  1527. + .AU
  1528. + Geoff Collyer
  1529. + .AI
  1530. + Department of Statistics
  1531. + University of Toronto
  1532. + .SH
  1533. + Introduction
  1534. + .PP
  1535. + The two main log files in C news are
  1536. + \fINEWSCTL\fP\fB/log\fR
  1537. + and
  1538. + \fINEWSCTL\fP\fB/errlog\fR,
  1539. + which are the standard output and standard error streams
  1540. + of
  1541. + .I relaynews .
  1542. + .B errlog
  1543. + should be empty;
  1544. + if not,
  1545. + something is seriously wrong,
  1546. + probably with your configuration or
  1547. + with unencapsulated news arriving mangled
  1548. + courtesy of some network.
  1549. + .SH
  1550. + Formats
  1551. + .PP
  1552. + .B errlog
  1553. + is a copy of any error messages written on
  1554. + standard error by
  1555. + .I relaynews
  1556. + or its auxiliaries
  1557. + (including control messages programs).
  1558. + There are no timestamps
  1559. + and the contents obey no special format.
  1560. + A non-empty
  1561. + .B errlog
  1562. + is a sign of trouble,
  1563. + which should be fixed promptly.
  1564. + .PP
  1565. + .B log
  1566. + is written in a stylised format,
  1567. + with whitespace separating the fields:
  1568. + date and time, to millisecond resolution though possibly not
  1569. + to millisecond accuracy;
  1570. + the machine that sent us this article;
  1571. + a single-character classification code;
  1572. + the article's message-id;
  1573. + and
  1574. + code-specific information.
  1575. + For example,
  1576. + .DS L
  1577. + .ft B
  1578. + .ps 8
  1579. + .vs 10
  1580. + Jun 30 03:32:18.960 utgpu + <1312@sunset.MATH.UCLA.EDU> mailrus dptcdc me
  1581. + Jun 30 03:32:19.600 utgpu j <1312@sunset.MATH.UCLA.EDU> junked due to groups `alt.drugs'
  1582. + Jul  3 18:55:35.492 utstat s <470@lexicon.com> utzoo-real
  1583. + Jul  3 18:55:35.912 utstat i <8907031824.AA09129@ucbvax.Berkeley.EDU> utzoo-send-ids
  1584. + Jul  4 06:40:22.395 jarvis.csri.toronto.edu + <0541.AA0541@worsel> utgpu
  1585. + Jul  4 06:40:22.595 jarvis.csri.toronto.edu + <0549.AA0549@worsel> utgpu
  1586. + Jul  4 07:00:26.565 jarvis.csri.toronto.edu + <295@lancelot> utgpu
  1587. + Jul  4 07:17:51.537 utgpu - <8258@saturn.ucsc.edu> duplicate
  1588. + Jul  4 07:17:51.697 utgpu - <1675@neoucom.UUCP> duplicate
  1589. + Jul  4 07:17:51.757 utgpu - <89Jul4.043358edt.10369@neat.ai.toronto.edu> duplicate
  1590. + 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'
  1591. + Jul  4 19:17:15.785 utgpu - <89Jul4.190330edt.5559@gpu.utcs.utoronto.ca> all groups `list.humanist' excluded in active
  1592. + .ft R
  1593. + .DE
  1594. + .PP
  1595. + The classification codes are:
  1596. + .TS
  1597. + c | c | c
  1598. + cfB | lw(2.75i) | l .
  1599. + code    article disposition    code-specific information
  1600. + _
  1601. + \-    rejected    reason for rejection
  1602. + +    accepted    list of sites to which this article was relayed
  1603. + j    T{
  1604. + accepted but filed in the \fIjunk\fR pseudo-newsgroup; preceding line will be \fB+\fR
  1605. + T}    reason for junking
  1606. + i    generated in response to an \fIihave\fR control message    list of sites to which this article was relayed
  1607. + s    generated in response to a \fIsendme\fR control message    list of sites to which this article was relayed
  1608. + .TE
  1609.  
  1610.  
  1611. end of patch 7-Jul-1989
  1612.  
  1613.  
  1614.