# =()<@@>()= .include "../include/config.make" BINS=gngp newslock ctime canonhdr getabsdate sizeof dbz\ now $(DOSPACEFOR) PROGS=$(BINS) newshostname report lock unlock touchlock staleness dbzinfo \ spacefor queuelen mkpdir DEST=$(NEWSBIN) ALLNB=$(PROGS) namecheck.awk canonsys.awk ALL=$(ALLNB) all: $(ALL) $(MX) $(PROGS) install: $(ALL) $(MKDIR) $(DEST) $(TO) $(DEST) $(ALLNB) setup: $(ALL) cmp: $(ALL) @$(IN) $(DEST) $(ALLNB) : the numbers here do not matter, but all the spacefors should succeed $(DEST)/spacefor 1000 incoming $(DEST)/spacefor 1000 articles $(DEST)/spacefor 1000 control $(DEST)/spacefor 1000 outbound $(DEST)/spacefor 1000 batchfiles $(DEST)/spacefor 1000 archive $(BINS): $(LIB) gngp: gngp.o $(CC) $(LDFLAGS) gngp.o $(LIBS) -o $@ ctime: ctime.o $(CC) $(LDFLAGS) ctime.o $(LIBS) -o $@ newslock: newslock.o $(CC) $(LDFLAGS) newslock.o $(LIBS) -o $@ canonhdr: canonhdr.o $(CC) $(LDFLAGS) canonhdr.o $(LIBS) -o $@ getabsdate: getabsdate.o $(CC) $(LDFLAGS) getabsdate.o $(LIBS) -o $@ sizeof: sizeof.o $(CC) $(LDFLAGS) sizeof.o $(LIBS) -o $@ dbz: dbz.o $(CC) $(LDFLAGS) dbz.o $(LIBS) -o $@ dbz.c: ../libdbz/dbzmain.c cp ../libdbz/dbzmain.c $@ now: now.o $(CC) $(LDFLAGS) now.o $(LIBS) -o $@ spacefor: sf.$(SPACEFOR) cp sf.$(SPACEFOR) $@ queuelen: queuelen.$(QUEUELEN) cp queuelen.$(QUEUELEN) $@ sf.bsd: sfshproto makefile cp sfshproto $@ sf.v7: sfshproto makefile sed '/dfunit=/s/1024/512/;/nr = 2/s//nr = 1/;/nf = 4/s//nf = 2/;/stupid/d' sfshproto >$@ sf.sysv: sfshproto makefile sed '/dfunit=/s/1024/512/;/awk/s~|~| sed "s/.*:/: :/" |~;/nf = 4/s//nf = 3/;/stupid/s/4BSD/System V/' sfshproto >$@ sf.xenix: sfshproto makefile sed '/dfunit=/s/1024/512/;/awk/s~|~| sed "s/.*:/: :/" |~;/nr = 2/s//nr = 1/;/nf = 4/s//nf = 3/;/stupid/s/4BSD/Xenix/' sfshproto >$@ sf.sgi: sfshproto makefile sed '/dfunit=/s/1024/512/;/nf = 4/s//nf = 5/;/stupid/s/4BSD/SGI/' sfshproto >$@ sf.null: makefile echo '#! /bin/sh' >$@ echo 'echo 100' >>$@ sf.statfs sf.statvfs sf.ustat sf.ultrix: sfcproto makefile dospacefor cp sfcproto sf.$(SPACEFOR) dospacefor: dowhatever.o do$(SPACEFOR).o $(CC) $(LDFLAGS) dowhatever.o do$(SPACEFOR).o $(LIBS) -o $@ queuelen.pre: queuelen.vo sed '/grade=d/s//grade=./' queuelen.vo >$@ queuelen.null: echo '#! /bin/sh' >$@ echo 'echo 0' >>$@ r: $(ALL) rclean $(MX) $(PROGS) shellcheck : If this fails, you missed a vital path directory, and later : regression tests would fail messily for that reason. $(HERE) test " `echo hi | wc -l`" -eq 1 ; : If this fails, you have a buggy shell, probably bash, and the : C News locking system will not work properly as a result. ./shellcheck : a sketchy test of locking $(HERE) ./lock LOCKtest $$$$ test -s LOCKtest ; : If the following fails, you probably have either a buggy make : or a buggy shell, e.g. an old version of bash. $(HERE) if ./lock -o LOCKtest $$$$ ; then false ; else true ; fi test -s LOCKtest ; : test that touchlock really does update locks echo hi >tmp.lock sleep 2 $(HERE) ./touchlock LOCKtest test -s LOCKtest ; test " `find L* -newer tmp.lock -print`" = " LOCKtest" ; : and try unlocking things $(HERE) ./unlock LOCKtest test ! -f LOCKtest ; : ctime : 756362361 is Mon, 20 Dec 1993 04:39:21 GMT -- checked by calculator test "`./ctime -u 756362361`" = "Mon Dec 20 04:39:21 1993" test "`./ctime -i 756362361`" = "Mon, 20 Dec 1993 04:39:21 GMT" : getabsdate test "`./getabsdate 'Mon Dec 20 04:39:21 GMT 1993'`" = "756362361" test "`./getabsdate 'Mon, 20 Dec 1993 04:39:21 GMT'`" = "756362361" test "`./getabsdate 'Sun, 19 Dec 1993 23:39:21 -0500'`" = "756362361" test "`./getabsdate \"\`./ctime -i 756362361\`\"`" = "756362361" NEWSTZ=3660 ; export NEWSTZ ; test "`./getabsdate 'Dec 20 03:38:21 1993'`" = "756362361" : canonhdr echo 'newsgroups: sci.space' >tmp.in echo 'Newsgroups: sci.space' >tmp.good echo 'MeSsage-id: ' >>tmp.in echo 'Message-ID: ' >>tmp.good echo 'PATH: nowhere!nobody' >>tmp.in echo 'Path: nowhere!nobody' >>tmp.good echo 'folloWup-To: poster' >>tmp.in echo 'Followup-To: poster' >>tmp.good cp tmp.good tmp.gooddate echo 'dATe: Sat, 18 Dec 1993 23:39:21 -0500' >>tmp.in echo 'Date: Sat, 18 Dec 1993 23:39:21 -0500' >>tmp.good echo 'Date: Sun, 19 Dec 1993 04:39:21 GMT' >>tmp.gooddate echo 'Expires: Sun, 19 Dec 1993 23:39:21 -0500' >>tmp.in echo 'Expires: Sun, 19 Dec 1993 23:39:21 -0500' >>tmp.good echo 'Expires: Mon, 20 Dec 1993 04:39:21 GMT' >>tmp.gooddate echo >>tmp.in echo 'Deleted: gone' >>tmp.in ./canonhdr tmp.out cmp tmp.good tmp.out || diff tmp.good tmp.out ./canonhdr -d tmp.out cmp tmp.gooddate tmp.out || diff tmp.gooddate tmp.out sed 's/, 19 Dec 1993.*/ Dec 19 23:39:21 EST 1993/' tmp.in >tmp.din ./canonhdr -d tmp.out cmp tmp.gooddate tmp.out || diff tmp.gooddate tmp.out sed 's/: /:/' tmp.in >tmp.822 ./canonhdr -m tmp.out cmp tmp.good tmp.out || diff tmp.good tmp.out NEWSTZ=3660 ; export NEWSTZ ; ./canonhdr -dm tmp.ch cmp ch.out tmp.ch || diff ch.out tmp.ch : namecheck.awk test " `echo | awk -f namecheck.awk`" = " empty name" ; test " `echo a b | awk -f namecheck.awk`" = " white space in name" ; test " `echo 'a b' | awk -f namecheck.awk`" = " white space in name" ; test " `(echo a ; echo b) | awk -f namecheck.awk`" = " newline(s) in name" ; $(MX) namecheck.r sed -n '/^[^#]/p' namecheck.t >tmp.nc ./namecheck.r tmp.sf test `egrep '^[0-9]+$$' tmp.sf | wc -l` -eq 1 ; : the actual number should be about the free space in this filesystem, : in 1000KB units, less 5... unless you modify spacefor cat tmp.sf : report : this attempts to send test mail to you, or failing that, to : newsmaster... echo "nonurgentto=$${LOGNAME-newsmaster}" >report.ctl echo "urgentto=$${LOGNAME-newsmaster}" >>report.ctl echo "This is a test message verifying correctness of the" >tmp.m echo "configuration of C News. Please disregard." >>tmp.m $(HERE) ./report -u "first test (urg)"