sources-request@mirror.TMC.COM (11/07/86)
Submitted by: seismo!rick (Rick Adams) Mod.sources: Volume 7, Issue 57 Archive-name: 2.11news/Part08 # To extract, sh this file # news 2.11 source part 8 of 9 if test ! -d src then mkdir src fi echo x - src/Makefile.dst 1>&2 sed 's/.//' >src/Makefile.dst <<'*-*-END-of-src/Makefile.dst-*-*' -# '@(#)Makefile.dst 1.17 10/29/86' -# Generic Makefile. -# This is converted to USG/v7/etc by localize.sh -# which should at least be a copy of localize.v7 or localize.usg - -# definitions - -#V7 OSTYPE = v7 -#USG OSTYPE = usg - -# HOME is the user name whose home dir has all the news stuff in it. -HOME= exptools -# Use the -DHOME line if you want dynamic lookup in /etc/passwd -#HOMENAME= -DHOME=\"$(HOME)\" -HOMENAME= - -NEWSUSR = news -NEWSGRP = news -SPOOLDIR = /usr/spool/news -BATCHDIR = /usr/spool/batch -LIBDIR = /usr/lib/news -BINDIR = /usr/bin -DESTDIR = -UUXFLAGS = -r -z - -LNRNEWS = ln -#VMS LNRNEWS = cp # No links in Eunice -DEBUG = -SCCSID = -DSCCSID -DEFS = -DRNEWS=\"$(BINDIR)/rnews\" -DSPOOLDIR=\"$(SPOOLDIR)\" \ - -DBATCHDIR=\"$(BATCHDIR)\" -DLIBDIR=\"$(LIBDIR)\" \ - -DBINDIR=\"$(BINDIR)\" -DNEWSUSR=\"$(NEWSUSR)\" \ - -DNEWSGRP=\"$(NEWSGRP)\" - -# Order is important here -INSCOMPRESS= -#BSD4_3 INSCOMPRESS= rm -f $(DESTDIR)$(LIBDIR)/compress; ln -s /usr/ucb/compress $(DESTDIR)$(LIBDIR)/compress -COMPRESS= compress -#BSD4_3 COMPRESS= - -#USG VFORK=-Dvfork=fork -#V7 VFORK=-Dvfork=fork - -#BSD4_1 VFORK= -#BSD4_2 VFORK= -#BSD4_3 VFORK= - -#USG IBMFLAGS = -#USG CFLAGS = ${DEBUG} -O $(IBMFLAGS) -DUSG -Dindex=strchr -Drindex=strrchr ${DEFS} ${SCCSID} ${VFORK} -#USG LFLAGS = ${DEBUG} -s -i $(IBMFLAGS) -#USG LIBS = -#USG LINTFLAGS = ${DEFS} -#V7 CFLAGS = ${DEBUG} -O -DDBM ${DEFS} ${SCCSID} ${VFORK} -#V7 LFLAGS = ${DEBUG} -#V7 LIBS = -ldbm -#V7 LINTFLAGS = -chba -DDBM ${DEFS} -#BSD4_1 LIBS = -ldbm -ljobs - -TERMLIB = -ltermlib - -#VMS TERMLIB = -ltrmlib -#VMS LIBS = -ldbm -#VMS CFLAGS = ${DEBUG} -O -DDBM ${DEFS} -DVMS ${SCCSID} ${VFORK} -#VMS MISC = uname.o -#VMS LINTFLAGS = -chba -DDBM -DVMS ${DEFS} -#VMS VFORK= - -#V7 MISC = uname.o -#USG MISC = ftime.o -OBJECTS = funcs.o funcs2.o getdate.o header.o ndir.o $(MISC) -IOBJECTS = inews.o ifuncs.o iextern.o control.o fullname.o \ - ipathinit.o $(OBJECTS) - -POBJECTS = postnews.o rextern.o rpathinit.o funcs.o $(MISC) -ROBJECTS = readnews.o rfuncs.o rfuncs2.o rextern.o readr.o \ - process.o rpathinit.o digest.o $(OBJECTS) -VOBJECTS = readnews.o rfuncs.o rfuncs2.o rextern.o process.o rpathinit.o \ - $(OBJECTS) visual.o virtterm.o -EXPOBJS = expire.o header.o funcs.o getdate.o iextern.o epathinit.o \ - funcs2.o ndir.o $(MISC) - -SRCS = funcs.c funcs2.c header.c -ISRCS = inews.c ifuncs.c iextern.c control.c fullname.c $(SRCS) -PSRCS = postnews.c rextern.c funcs.c -RSRCS = readnews.c rfuncs.c rfuncs2.c rextern.c readr.c process.c \ - digest.c $(SRCS) -VSRCS = readnews.c rfuncs.c rfuncs2.c rextern.c process.c $(SRCS) \ - visual.c virtterm.c -ESRCS = expire.c header.c funcs.c iextern.c \ - funcs2.c -OSRCS = uurec.c recnews.c sendnews.c batch.c unbatch.c caesar.c \ - recmail.c compress.c - -UTILS = inews uurec recnews sendnews expire batch unbatch caesar recmail \ - encode decode $(COMPRESS) -SCRIPTS = sendbatch rmgroup checkgroups -OTHERS = $(UTILS) $(SCRIPTS) -COMMANDS = readnews checknews postnews vnews - -# dependencies -all: $(COMMANDS) $(OTHERS) - -install: all help vnews.help - -mkdir $(DESTDIR)$(BINDIR) - -mkdir $(DESTDIR)$(LIBDIR) - cp $(COMMANDS) $(DESTDIR)$(BINDIR) - -cd $(DESTDIR)$(BINDIR); \ - strip $(COMMANDS); \ - chown $(NEWSUSR) $(COMMANDS); \ - chgrp $(NEWSGRP) $(COMMANDS); \ - chmod 755 $(COMMANDS) - cp help vnews.help $(OTHERS) $(DESTDIR)$(LIBDIR) - cd $(DESTDIR)$(LIBDIR); \ - strip $(UTILS); \ - chown $(NEWSUSR) $(OTHERS); \ - chgrp $(NEWSGRP) $(OTHERS); \ - chmod 755 $(OTHERS) - -rm -f $(DESTDIR)$(BINDIR)/rnews $(DESTDIR)$(BINDIR)/inews - ${LNRNEWS} $(DESTDIR)$(LIBDIR)/inews $(DESTDIR)$(BINDIR)/rnews - chown $(NEWSUSR) $(DESTDIR)$(LIBDIR)/inews - chgrp $(NEWSGRP) $(DESTDIR)$(LIBDIR)/inews - chmod 6755 $(DESTDIR)$(LIBDIR)/inews $(DESTDIR)$(BINDIR)/rnews - $(INSCOMPRESS) -#VMS vms -v @euninstal - -defs.h: defs.dist localize.sh Makefile.dst Makefile - sh localize.sh - -Makefile: localize.sh defs.dist Makefile.dst - sh localize.sh - -update: install.sh makeactive.sh - sh install.sh $(SPOOLDIR) $(LIBDIR) $(BINDIR) $(NEWSUSR) $(NEWSGRP) $(OSTYPE) - chmod 6755 $(LIBDIR)/inews - -clean: - rm -f $(COMMANDS) $(OTHERS) *.o a.out - rm -f core index errs getdate.c - -lint: ilint vlint rlint elint plint olint -ilint: defs.h params.h iparams.h header.h $(ISRCS) pathinit.c - lint $(LINTFLAGS) $(ISRCS) -DINEW pathinit.c -vlint: defs.h params.h rparams.h header.h $(VSRCS) pathinit.c - lint $(LINTFLAGS) $(VSRCS) -DREAD pathinit.c -rlint: defs.h params.h rparams.h header.h $(RSRCS) pathinit.c - lint $(LINTFLAGS) $(RSRCS) -DREAD pathinit.c -elint: defs.h params.h iparams.h header.h $(ESRCS) pathinit.c - lint $(LINTFLAGS) $(ESRCS) -DEXP pathinit.c -plint: defs.h params.h iparams.h header.h $(PSRCS) pathinit.c - lint $(LINTFLAGS) $(PSRCS) -DREAD pathinit.c - -olint: defs.h params.h iparams.h header.h $(OSRCS) - for i in $(OSRCS); do lint $(LINTFLAGS) $$i; done - -inews: $(IOBJECTS) - $(CC) $(LFLAGS) $(IOBJECTS) -o inews $(LIBS) #NOTVMS -#VMS vms link/notrace inews.o,ifuncs.o,iextern.o,control.o, \ -#VMS fullname.o,ipathinit.o,funcs.o,funcs2.o,getdate.o,header.o, \ -#VMS ndir.o,uname.o,lib:libdbm/lib,lib:libc/lib/exe=inews. - -readnews: $(ROBJECTS) - $(CC) $(LFLAGS) $(ROBJECTS) -o readnews $(LIBS) -#VMS mv readnews.exe readnews - -funcs.o: funcs.c params.h defs.h header.h Makefile - $(CC) $(CFLAGS) -c funcs.c - -funcs2.o: funcs2.c params.h defs.h header.h Makefile - $(CC) $(CFLAGS) -c funcs2.c - -getdate.o: getdate.y - @echo "expect 8 shift/reduce conflicts" - yacc getdate.y - mv y.tab.c getdate.c - $(CC) $(CFLAGS) -c getdate.c - -rm -f getdate.c - -inews.o: inews.c iparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c inews.c - -ifuncs.o: ifuncs.c iparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -c ifuncs.c - -iextern.o: iextern.c iparams.h defs.h params.h Makefile header.h - $(CC) $(CFLAGS) -c iextern.c - -postnews: $(POBJECTS) - $(CC) $(CFLAGS) $(LFLAGS) $(POBJECTS) -o postnews -#VMS mv postnews.exe postnews - -postnews.o: postnews.c defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c postnews.c - -readnews.o: readnews.c rparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -c readnews.c - -rfuncs.o: rfuncs.c rparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c rfuncs.c - -rfuncs2.o: rfuncs2.c rparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c rfuncs2.c - -rextern.o: rextern.c rparams.h defs.h params.h Makefile header.h - $(CC) $(CFLAGS) -c rextern.c - -readr.o: readr.c rparams.h defs.h params.h Makefile ndir.h header.h - $(CC) $(CFLAGS) -c readr.c - -checknews.o: checknews.c defs.h header.h Makefile params.h - $(CC) $(CFLAGS) -c checknews.c - -vnews: $(VOBJECTS) - $(CC) $(LFLAGS) $(VOBJECTS) $(TERMLIB) $(LIBS) -o $@ -#VMS mv vnews.exe vnews - -visual.o: visual.c rparams.h defs.h params.h ndir.h header.h Makefile - $(CC) $(CFLAGS) -c visual.c - -control.o: control.c defs.h iparams.h params.h header.h Makefile - $(CC) $(CFLAGS) -c control.c - -logdir.o: logdir.c Makefile - $(CC) $(CFLAGS) -c logdir.c - -uname.o: uname.c defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c uname.c - -ndir.o: ndir.c ndir.h - $(CC) $(CFLAGS) -c ndir.c - -uurec: uurec.c defs.h Makefile - $(CC) $(CFLAGS) $(LFLAGS) uurec.c -o uurec -#VMS mv uurec.exe uurec - -recnews: recnews.c defs.h header.h Makefile - $(CC) $(CFLAGS) $(LFLAGS) recnews.c -o recnews -#VMS mv recnews.exe recnews - -sendnews: sendnews.o uname.o - $(CC) $(LFLAGS) sendnews.o uname.o -o sendnews -#VMS mv sendnews.exe sendnews - -batch: batch.c Makefile - $(CC) $(CFLAGS) $(LFLAGS) batch.c -o batch -#VMS mv batch.exe batch - -unbatch: unbatch.c Makefile - $(CC) $(CFLAGS) $(LFLAGS) unbatch.c -o unbatch -#VMS mv unbatch.exe unbatch - -encode: encode.c - $(CC) $(CFLAGS) $(LFLAGS) encode.c -o encode -#VMS mv encode.exe encode - -decode: decode.c - $(CC) $(CFLAGS) $(LFLAGS) decode.c -o decode -#VMS mv decode.exe decode - -caesar: caesar.c Makefile - $(CC) $(CFLAGS) $(LFLAGS) caesar.c -o caesar -lm -#VMS mv caesar.exe caesar - -compress: compress.c - $(CC) $(CFLAGS) $(LFLAGS) -o compress compress.c -#VMS mv compress.exe compress - -recmail: recmail.c defs.h params.h header.h - $(CC) $(CFLAGS) $(LFLAGS) recmail.c -o recmail -#VMS mv recmail.exe recmail - -process.o: process.c rparams.h defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c process.c - -checknews: checknews.o process.o cpathinit.o - $(CC) $(LFLAGS) checknews.o process.o cpathinit.o -o checknews -#VMS mv checknews.exe checknews - -sendbatch: sendbatch.sh Makefile - sed -e "s%LIBDIR%$(LIBDIR)%g" \ - -e "s%UUXFLAGS%$(UUXFLAGS)%g" \ - -e "s%BATCHDIR%$(BATCHDIR)%g" sendbatch.sh > sendbatch -#VMS /etc/unixtovms sendbatch - -rmgroup: rmgroup.sh Makefile - sed -e "s%LIBDIR%$(LIBDIR)%g" \ - -e "s%SPOOLDIR%$(SPOOLDIR)%g" rmgroup.sh > rmgroup -#VMS /etc/unixtovms rmgroup - -checkgroups: checkgroups.sh Makefile - sed -e "s%LIBDIR%$(LIBDIR)%g" checkgroups.sh > checkgroups -#VMS /etc/unixtovms checkgroups - -sendnews.o: sendnews.c defs.h - $(CC) $(CFLAGS) -c sendnews.c - -fullname.o: defs.h params.h header.h Makefile - $(CC) $(CFLAGS) -c fullname.c - -expire: $(EXPOBJS) - $(CC) $(LFLAGS) -o expire $(EXPOBJS) $(LIBS) -#VMS mv expire.exe expire - -header.o: header.c header.h defs.h params.h Makefile - $(CC) $(CFLAGS) -c header.c - -expire.o: expire.c defs.h Makefile params.h ndir.h header.h Makefile - $(CC) $(CFLAGS) -c expire.c - -digest.o: digest.c Makefile - $(CC) $(CFLAGS) -c digest.c - -# Some silliness here to get pathinit for both readnews & inews -rpathinit.o: pathinit.c rparams.h header.h params.h defs.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -DREAD -c pathinit.c - mv pathinit.o rpathinit.o - -ipathinit.o: pathinit.c iparams.h header.h params.h defs.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -DINEW -c pathinit.c - mv pathinit.o ipathinit.o - -cpathinit.o: pathinit.c iparams.h header.h params.h defs.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -DCHKN -c pathinit.c - mv pathinit.o cpathinit.o - -epathinit.o: pathinit.c iparams.h header.h params.h defs.h Makefile - $(CC) $(CFLAGS) $(HOMENAME) -DEXP -c pathinit.c - mv pathinit.o epathinit.o - -tags: /tmp - ctags -w *.h *.c - -$(LIBDIR): - mkdir $(LIBDIR) - chmod 755 $(LIBDIR) - chown $(NEWSUSR) $(LIBDIR) - chgrp $(NEWSGRP) $(LIBDIR) - -$(BINDIR): - mkdir $(BINDIR) - chmod 755 $(BINDIR) - chown $(NEWSUSR) $(BINDIR) - chgrp $(NEWSGRP) $(BINDIR) *-*-END-of-src/Makefile.dst-*-* echo x - src/digest.c 1>&2 sed 's/.//' >src/digest.c <<'*-*-END-of-src/digest.c-*-*' -/* - * digest - process ARPANET digests - * - * digest(ifile, ofile, header) - * FILE *ifile, *ofile; - * struct header *header; - * - * returns: TRUE EOF reached, exit from readnews. - * FALSE normal exit, continue reading news. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)digest.c 1.7 9/19/86"; -#endif /* SCCSID */ - -#include "rparams.h" - -struct art { - long a_hdr; - long a_bod; - int a_blen; - int a_hlen; -}; - -#define loop for(;;) -#define getnum(p, n) for (n=0; *p>='0' && *p<='9'; p++) n = n*10 + *p-'0' -#define errchk(p) if (*p) goto badopt - -#define MAXART 128 - -struct art *arts; -int lastart; - -digest(ifp, ofp, h) -FILE *ifp, *ofp; -struct hbuf *h; -{ - register int n, curart; - struct art artbuf[MAXART]; - int printh, eod, nomore; - char cbuf[BUFLEN], *cmd; - - arts = artbuf; - printh = TRUE; - nomore = eod = FALSE; - curart = 1; - - if (dscan(ifp)) - return FALSE; - - dprint(0, ifp, ofp); - - loop { - if (nomore) break; - if (curart < 1) { - curart = 1; - eod = nomore = FALSE; - } - if (curart > lastart) curart = lastart; - if (eod) nomore = TRUE; - if (printh && !nomore) - (void) dhprint(curart, ifp, ofp); - getcmd: - loop { - SigTrap = FALSE; - fprintf(ofp, "Digest article %d of %d ", curart, lastart); - if (curart==lastart && nomore) - fprintf(ofp, "Last digest article "); - fprintf(ofp, "(%d lines) More? [%s] ", - arts[curart].a_blen, nomore?"snq":"ynq"); - (void) fflush(ofp); - cmd = cbuf; - if (fgets(cmd, BUFLEN, stdin)) - break; - if (!SigTrap) - return(TRUE); - putc('\n', ofp); - } - (void) nstrip(cmd); - while (*cmd==' ' || *cmd=='\t') - cmd++; - printh = TRUE; - - switch (*cmd++) { - case '#': - fprintf(ofp, "%d articles in digest\n", lastart); - (void) fflush(ofp); - printh = FALSE; - break; - - case '$': - curart = lastart; - break; - - case '!': - fwait(fsubr(ushell, cmd, (char *)NULL)); - fprintf(ofp, "!\n"); - printh = FALSE; - break; - - case '\0': - if (nomore) { - putc('\n', ofp); - return(FALSE); - } - cmd--; - case 'y': - case 'p': - errchk(cmd); - dprint(curart++, ifp, ofp); - if (curart > lastart) - eod = TRUE; - break; - - case 'n': - errchk(cmd); - if (++curart > lastart) { - putc('\n', ofp); - return(FALSE); - } - break; - - case '+': - getnum(cmd, n); - errchk(cmd); - if (nomore) { - putc('\n', ofp); - return(FALSE); - } - if (n) curart += n; - else { - curart += 1; - if (curart > lastart) - eod = TRUE; - } - break; - - case '-': - getnum(cmd, n); - errchk(cmd); - eod = nomore = FALSE; - curart -= (n) ? n : 1; - break; - - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - cmd--; - getnum(cmd, n); - errchk(cmd); - curart = n; - eod = nomore = FALSE; - break; - - case 'q': - case 'x': - putc('\n', ofp); - return(FALSE); - - case '?': - fprintf(ofp, "\nDigester options:\n\n"); - fprintf(ofp, "y\tyes, print article.\n"); - fprintf(ofp, "n\tno, go to next article.\n"); - fprintf(ofp, "q\texit from digester.\n"); - fprintf(ofp, "h\tprint article header.\n"); - fprintf(ofp, "s file\tsave article in file.\n"); - fprintf(ofp, "t\ttable of contents.\n"); - fprintf(ofp, "+[n]\tforward n articles (1).\n"); - fprintf(ofp, "-[n]\tback n articles (1).\n"); - fprintf(ofp, "\nh and s may be followed by '-'\n"); - (void) fflush(ofp); - break; - - case 'h': - n = curart; - if (*cmd=='-') { - cmd++; - if (n > 1) n--; - } - errchk(cmd); - (void) dhprint(n, ifp, ofp); - nomore = printh = FALSE; - if (n!=curart) - putc('\n', ofp); - break; - - case 's': - case 'w': - n = curart; - if (*cmd=='-') { - cmd++; - if (n > 1) n--; - } - while (*cmd==' ' || *cmd=='\t') - cmd++; - dsaveart(n, ifp, ofp, cmd); - nomore = printh = FALSE; - if (n!=curart) - putc('\n', ofp); - break; - - case 'H': - errchk(cmd); - hprint(h, ofp, 1); - eod = nomore = FALSE; - break; - - case 'T': - case 't': - errchk(cmd); - if (cmd[-1]=='T') - hprint(h, ofp, 0); - dprint(0, ifp, ofp); - eod = nomore = FALSE; - break; - - default: - badopt: - if (!nomore) - fprintf(ofp, "y (yes), n (no), "); - fprintf(ofp, "q (quit), s file (save), h (header), t (table of contents)\n"); - fprintf(ofp, "? for help\n"); - goto getcmd; - } - } - putc('\n', ofp); - return(FALSE); -} - -dscan(ifp) -register FILE *ifp; -{ - char scanbuf[BUFLEN]; - register int n, len; - register char *s; - register long pos; - short wasblank, ishead; - - n = len = 0; - wasblank = FALSE; - s = scanbuf; - arts[0].a_bod = arts[1].a_hdr = ftell(ifp); - arts[0].a_hdr = 0L; - arts[1].a_bod = -1L; - - loop { - if (SigTrap) - return(TRUE); - pos = ftell(ifp); - if (fgets(s, BUFLEN, ifp)==NULL) - *s = '\0'; - if (wasblank && isheader(s)) { - long lastpos; - short is_blank; - short nhlines; - arts[n++].a_blen = len; - len = 0; - nhlines = 0; - arts[n].a_hdr = pos; - is_blank = FALSE; - ishead = TRUE; - do { - lastpos = pos; - wasblank = is_blank; - nhlines++; - pos = ftell(ifp); - if (fgets(s, BUFLEN, ifp)==NULL) - *s = '\0'; - else - len++; - is_blank = (*s=='\n') ? TRUE : FALSE; - if (is_blank && nhlines==1) - /* one liner--not a header */ - break; - if (!ishead || (s[0] != ' ' && s[0] != '\t')) - ishead = isheader(s); - } while ((is_blank && !wasblank) || ishead); - if ((!is_blank && !wasblank) || nhlines < 2) { - /* oops! not a header... back off */ - arts[n].a_hdr = arts[n-1].a_bod; - len += arts[--n].a_blen; - } else { - if (wasblank) - pos = lastpos; - arts[n].a_hlen = len; - arts[n].a_bod = arts[n+1].a_hdr = pos; - arts[n+1].a_bod = -1L; - arts[n+1].a_hlen = 3; /* average header len */ - len = 0; - } - } - if (*s=='\0') - break; - wasblank = (*s=='\n') ? TRUE : FALSE; - len++; - } - arts[n].a_blen = len; - arts[n+1].a_hdr = pos; - lastart = n; - return FALSE; -} - -dhprint(art, ifp, ofp) -register int art; -register FILE *ifp, *ofp; -{ - register char c; - register long pos = arts[art].a_hdr; - register long epos = arts[art].a_bod; - register int nlines = 1; - - putc('\n', ofp); - fseek(ifp, pos, 0); - while (pos++ < epos && !SigTrap) { - if ((c = getc(ifp))=='\n') - nlines++; - putc(c, ofp); - } - (void) fflush(ofp); - SigTrap = FALSE; - return nlines; -} - -dprint(art, ifp, ofp) -int art; -FILE *ifp, *ofp; -{ -#ifdef PAGE - register int cnt; - FILE *pfp, *popen(); - - if (art && arts[art].a_blen > 23-arts[art+1].a_hlen && *PAGER) { - if (!index(PAGER, FMETA)) { - if ((pfp = popen(PAGER, "w"))==NULL) - (void) dprinta(art, ifp, ofp); - else { - cnt = dprinta(art, ifp, pfp) % 23; - if (cnt > 23-arts[art+1].a_hlen) - while (cnt++ < 24) - putc('\n', pfp); - (void) pclose(pfp); - } - } else - pout(ofp); - } else -#endif /* PAGE */ - (void) dprinta(art, ifp, ofp); -} - -dprinta(art, ifp, ofp) -int art; -register FILE *ifp, *ofp; -{ - register char c; - register long pos = arts[art].a_bod; - register long epos = arts[art+1].a_hdr; - register int nlines = 0; - - (void) fseek(ifp, pos, 0); - while (pos++ < epos && !SigTrap) { - if ((c = getc(ifp))=='\n') - nlines++; - putc(c, ofp); - } - (void) fflush(ofp); - SigTrap = FALSE; - return nlines; -} - -dsaveart(art, ifp, ofp, name) -int art; -register FILE *ifp, *ofp; -register char *name; -{ - register FILE *nfp; - char fname[BUFLEN]; - char *strcat(), *strcpy(), *getenv(); - register char *nb; - - while (*name==' ' || *name=='\t') - name++; - - if (*name=='|') { - fprintf(ofp, "don't know how to pipe yet.\n"); - (void) fflush(ofp); - return; - } else if (*name=='/') - (void) strcpy(fname, name); - else { - if (nb = getenv("NEWSBOX")) - (void) strcpy(fname, nb); - else - (void) strcpy(fname, userhome); - (void) strcat(fname, "/"); - (void) strcat(fname, name); - } - - fprintf(ofp, "Save digest article %d in \"%s\"", art, fname); - (void) fflush(ofp); - if ((nfp = fopen(fname, "a"))!=NULL) { - int ln; - ln = dhprint(art, ifp, nfp); - ln += dprinta(art, ifp, nfp); - fprintf(ofp, " [Appended] %d lines\n", ln); - (void) fclose(nfp); - } else - fprintf(ofp, " cannot append to.\n"); -} - -isheader(s) -register char *s; -{ - if (isupper(*s) || islower(*s)) { - while (*s && *s!=':' && !isspace(*s)) - s++; - if (*s==':' && *++s==' ') - return TRUE; - } - return FALSE; -} *-*-END-of-src/digest.c-*-* echo x - src/readnews.c 1>&2 sed 's/.//' >src/readnews.c <<'*-*-END-of-src/readnews.c-*-*' -/* - * readnews - read news articles. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)readnews.c 2.31 9/16/86"; -#endif /* SCCSID */ - -#include "rparams.h" - -/* - * readnews - article reading program - */ - -#ifndef SYSBUF -char SYSBUF[BUFSIZ]; /* to buffer std out */ -#endif - -#define OPTION 0 /* pick up an option string */ -#define STRING 1 /* pick up a string of arguments */ - -struct timeb Now; - -int onsig(), cleanup(); - -/* - * Authors: - * Matt Glickman ucbvax!glickman - * Mark Horton cbosg!mark - * Stephen Daniels duke!swd - * Tom Truscott duke!trt - */ - -main(argc, argv) -int argc; -register char **argv; -{ - register char *ptr; /* pointer to rest of buffer */ - char *user, *home; - int optflag = FALSE, space = FALSE; - struct utsname ubuf; - char *myrc; - - /* set up defaults and initialize. */ - pathinit(); - mode = UNKNOWN; - header.title[0] = header.nbuf[0] = '\0'; - coptbuf[0] = datebuf[0] = '\0'; - uname(&ubuf); - strcpy(FULLSYSNAME, ubuf.nodename); - - savmask = umask(N_UMASK); /* set up mask */ - uid = getuid(); - gid = getgid(); - duid = 0; - dgid = 0; - (void) ftime(&Now); - -#ifndef SHELL - if ((SHELL = getenv("SHELL")) == NULL) - SHELL = "/bin/sh"; -#endif -#ifndef IHCC - /* - * IHCC does not allow use of $LOGNAME to prevent forgery. - * Note that this shouldn't matter in readnews, since inews - * does all the actual posting of news. - */ - if ((user = getenv("USER")) == NULL) - user = getenv("LOGNAME"); - if ((home = getenv("HOME")) == NULL) - home = getenv("LOGDIR"); -#endif - if (user == NULL || home == NULL) - getuser(); - else { - username = AllocCpy(user); - (void) strcpy(header.path, username); - userhome = AllocCpy(home); - } - - if (!(MAILER = getenv("MAILER"))) - MAILER = "mail"; /* was /bin/mail */ - -#ifdef PAGE - if (myrc = getenv("PAGER")) - PAGER = AllocCpy(myrc); - else { -# ifdef IHCC - (void) sprintf(bfr, "%s/bin/%s", logdir(HOME), PAGE); - PAGER = AllocCpy(bfr); -# else /* !IHCC */ - PAGER = PAGE; -# endif /* !IHCC */ - } -#endif /* PAGE */ - - if (ptr = getenv("NEWSOPTS")) - (void) strcpy(rcbuf, ptr); - else - *rcbuf = '\0'; - if (*rcbuf) { - (void) strcat(rcbuf, " \1"); - ptr = rcbuf; - while (*++ptr) - if (isspace(*ptr)) - *ptr = '\0'; - for (ptr = rcbuf; ; ptr++) { - if (!*ptr) - continue; - if (*ptr == '\1') - break; - if (++line > LINES) - xerror("Too many options."); - if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL) - xerror("Not enough memory."); - argvrc[line] = rcline[line]; - (void) strcpy(rcline[line], ptr); - while (*ptr) - ptr++; - } - } - myrc = getenv("NEWSRC"); - if (myrc == NULL) { - myrc = NEWSRC; - (void) sprintf(newsrc, "%s/%s", userhome, myrc); - } else { - (void) strcpy(newsrc, myrc); - } - if (access(newsrc, 0)) - newrc(newsrc); - if ((rcfp = fopen(newsrc, "r")) != NULL) { - rcreadok = FALSE; - while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { - if (!(space = isspace(*rcbuf))) - optflag = FALSE; - if (!strncmp(rcbuf, "options ", 8)) - optflag = TRUE; - if (optflag) { - (void) strcat(rcbuf, "\1"); - if (space) - ptr = rcbuf - 1; - else - ptr = &rcbuf[7]; - while (*++ptr) - if (isspace(*ptr)) - *ptr = '\0'; - if (space) - ptr = rcbuf; - else - ptr = &rcbuf[8]; - for (; ; ptr++) { - if (!*ptr) - continue; - if (*ptr == '\1') - break; - if (++line > LINES) - xerror("Too many options."); - if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL) - xerror("Not enough memory."); - argvrc[line] = rcline[line]; - (void) strcpy(rcline[line], ptr); - while (*ptr) - ptr++; - } - } - } - (void) fclose(rcfp); - rcreadok = TRUE; - } - if (line != -1) { -#ifdef DEBUG - register int i; - for (i = 0; i <= line; i++) - fprintf(stderr, "options: %s\n", rcline[i]); -#endif - process(line + 2, argvrc); - do { -#ifdef DEBUG - fprintf(stderr, "Freeing %d\n", line); -#endif - free(rcline[line]); - } while (line--); - } - - argv++; - (void) strcat(header.nbuf, ADMSUB); - process(argc, argv); - if (!nflag) - (void) sprintf(header.nbuf, "%s,%s", ADMSUB, DFLTSUB); - else { - char *p = rindex(header.nbuf, ','); - if (p && p[1] == '\0') /* strip of trailing NGDELIM */ - *p ='\0'; - } - lcase(header.nbuf); - makehimask(header.nbuf, "junk"); - makehimask(header.nbuf, "control"); - makehimask(header.nbuf, "test"); - - setbuf(stdout, SYSBUF); - SigTrap = FALSE; /* true if a signal has been caught */ - if (!pflag && !lflag && !eflag) { - (void) signal(SIGQUIT, SIG_IGN); - (void) signal(SIGHUP, cleanup); - (void) signal(SIGINT, onsig); - (void) signal(SIGPIPE, onsig); - } else { - int (* old)(); - if ((old = signal(SIGQUIT, SIG_IGN)) != SIG_IGN) - (void) signal(SIGQUIT, cleanup); - if ((old = signal(SIGHUP, SIG_IGN)) != SIG_IGN) - (void) signal(SIGHUP, cleanup); - if ((old = signal(SIGINT, SIG_IGN)) != SIG_IGN) - (void) signal(SIGINT, cleanup); - } - - /* - * ALL of the command line has now been processed. (!) - */ - - if (!*header.nbuf) - strcpy(header.nbuf, DFLTSUB); - if (sflag) { - printf("Subscription list: %s\n", header.nbuf); - xxit(0); - } - if (xflag) - line = -1; - rcfp = xfopen(newsrc, "r"); - while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { - if (!nstrip(rcbuf)) - xerror(".newsrc line too long"); - if (++line >= LINES) - xerror("Too many .newsrc lines"); - if ((rcline[line] = malloc((unsigned)(strlen(rcbuf) + 1))) == NULL) - xerror("Not enough memory"); - (void) strcpy(rcline[line], rcbuf); - } - fclose(rcfp); - - if (SigTrap) { - if (SigTrap == SIGHUP || !rcreadok) - xxit(0); - fprintf(stdout, "Abort (n)? "); - (void) fflush(stdout); - if (gets(bfr) == NULL || *bfr == 'y' || *bfr == 'Y') - xxit(0); - SigTrap = FALSE; - } - sortactive(); - actfp = xfopen(ACTIVE, "r"); - -#ifdef DEBUG - fprintf(stderr, "header.nbuf = %s\n", header.nbuf); -#endif /* DEBUG */ - if (Kflag) - news++; - else { - switch (mode) { - case UNKNOWN: - readr(); - break; -#ifdef TMAIL - case MAIL: - Mail(); - break; -#endif /* TMAIL */ - } - } - - cleanup(); - /*NOTREACHED*/ -} - -cleanup() -{ - (void) signal(SIGHUP, SIG_IGN); - (void) fflush(stdout); - if (!news || xflag || lflag || tflag) - xxit(0); - if (*groupdir && mode != MAIL) - updaterc(); - writeoutrc(); - xxit(0); -} - -/* - * Write out the .newsrc file. It's already been cleaned up by sortactive() - * Take care that data is all written, and flushed, before we destroy the - * old copy. - */ -writeoutrc() -{ - FILE *wrcfp; - char aline[BUFLEN]; - register int i; - - /* NEVER write it out if xflag */ - if (xflag || !rcreadok) - return; - - (void) strcpy(aline, newsrc); - (void) strcat(aline, ".new"); - -#ifdef VMS - (void) vmsdelete(aline); -#endif - wrcfp = xfopen(aline, "w"); - - for (i = 0; i <= line; i++) { - if (rcline[i] != NULL) - if (fprintf(wrcfp, "%s\n", rcline[i]) < 0) - goto fouled; - } - if (fclose(wrcfp) < 0) - goto fouled; - -#ifdef VMS - (void) vmsdelete(newsrc); -#endif - if (rename(aline, newsrc) < 0) - xerror("Cannot rename %s to %s", aline, newsrc); - return; - - fouled: - xerror("Error writing new .newsrc file - no changes made\n"); - return; -} - -/* - * Forbid newsgroup ng, unless he asked for it in nbuf. - */ -makehimask(nbuf, ng) -char *nbuf, *ng; -{ - if (!findex(nbuf, ng)) - (void) sprintf(rindex(nbuf, '\0'), ",!%s", ng); -} - -/* - * Return true if the string searchfor is in string, but not if preceded by !. - */ -findex(string, searchfor) -char *string, *searchfor; -{ - register char first; - register char *p; - - first = *searchfor; - for (p=index(string, first); p; p = index(p+1, first)) { - if (((p==string) || (p[-1]!='!')) && strncmp(p, searchfor, strlen(searchfor)) == 0) - return TRUE; - } - return FALSE; -} *-*-END-of-src/readnews.c-*-* echo x - src/install.sh 1>&2 sed 's/.//' >src/install.sh <<'*-*-END-of-src/install.sh-*-*' -: '@(#)install.sh 1.16 10/29/86' - -if test "$#" != 6 -then - echo "usage: $0 spooldir libdir bindir nuser ngroup ostype" - exit 1 -fi -SPOOLDIR=$1 -LIBDIR=$2 -BINDIR=$3 -NEWSUSR=$4 -NEWSGRP=$5 -OSTYPE=$6 - -: Get name of local system -case $OSTYPE in - usg) SYSNAME=`uname -n` - if test ! -d $LIBDIR/history.d - then - mkdir $LIBDIR/history.d - chown $NEWSUSR $LIBDIR/history.d - chgrp $NEWSGRP $LIBDIR/history.d - fi;; - v7) SYSNAME=`uuname -l` - touch $LIBDIR/history.pag $LIBDIR/history.dir;; - *) echo "$0: Unknown Ostype" - exit 1;; -esac - -if test "$SYSNAME" = "" -then - echo "$0: Cannot get system name" - exit 1 -fi - -: Ensure SPOOLDIR exists -for i in $SPOOLDIR $SPOOLDIR/.rnews -do - if test ! -d $i - then - mkdir $i - fi - chmod 777 $i - chown $NEWSUSR $i - chgrp $NEWSGRP $i -done - -chown $NEWSUSR $LIBDIR -chgrp $NEWSGRP $LIBDIR - -: Ensure certain files in LIBDIR exist -touch $LIBDIR/history $LIBDIR/active $LIBDIR/log $LIBDIR/errlog $LIBDIR/users -chmod 666 $LIBDIR/users - -: If no sys file, make one. -if test ! -f $LIBDIR/sys -then -echo -echo Making a $LIBDIR/sys file to link you to oopsvax. -echo You must change oopsvax to your news feed. -echo If you are not in the USA, remove '"usa"' from your line in the sys file. -echo If you are not in North America, remove '"na"' from your line in the sys file. - cat > $LIBDIR/sys << EOF -$SYSNAME:world,comp,sci,news,rec,soc,talk,misc,net,mod,na,usa,to:: -oopsvax:world,comp,sci,news,rec,soc,talk,misc,net,mod,na,usa,to.oopsvax:: -EOF -fi - -: If no seq file, make one. -if test ! -s $LIBDIR/seq -then - echo '100' >$LIBDIR/seq -fi - -: If no mailpaths, make one. -if test ! -s $LIBDIR/mailpaths -then - cat <<E_O_F >$LIBDIR/mailpaths -backbone %s -internet %s -E_O_F -echo "I have created $LIBDIR/mailpaths for you. The paths are certainly wrong." -echo "You must correct them manually to be able to post to moderated groups." -fi - -sh makeactive.sh $LIBDIR $SPOOLDIR $NEWSUSR $NEWSGRP - -for i in $LIBDIR/ngfile $BINDIR/inews $LIBDIR/localgroups $LIBDIR/moderators \ - $LIBDIR/cunbatch $LIBDIR/c7unbatch -do - if test -f $i - then - echo "$i is no longer used. You should remove it." - fi -done - -for i in $LIBDIR/csendbatch $LIBDIR/c7sendbatch -do - if test -f $i - then - echo "$i is no longer used. You should remove it after" - echo "changing your crontab entry to use sendbatch [flags]" - fi -done - -if test -f $BINDIR/cunbatch -then - echo "$BINDIR/cunbatch is not used by the new batching scheme." - echo "You should remove it when all of your neighbors have upgraded." -fi - -cat >$LIBDIR/aliases.new <<EOF -net.chess net.games.chess -net.trivia net.games.trivia -net.rec.radio net.ham-radio -net.term net.info-terms -net.joke net.jokes -net.vlsi net.lsi -net.micro.16k net.micro.ns32k -net.music.gdea net.music.gdead -net.notes net.news.notes -net.periph net.periphs -net.puzzles net.puzzle -net.unix.wizards net.unix-wizards -net.sources.wanted net.wanted.sources -net.consumers misc.consumers -net.consumers.house misc.consumers.house -net.house misc.consumers.house -na.forsale misc.forsale -net.forsale misc.forsale -net.politics.terror misc.headlines -net.invest misc.invest -net.jobs misc.jobs -net.kids misc.kids -mod.legal misc.legal -net.legal misc.legal -net.followup misc.misc -net.general misc.misc -net.misc misc.misc -net.suicide misc.misc -net.taxes misc.taxes -mod.test misc.test -net.test misc.test -net.wanted misc.wanted -net.announce mod.announce -net.announce.newusers mod.announce.newusers -mod.map.uucp mod.map -net.religion.christian mod.religion.christian -net.religion.xian mod.religion.christian -net.astro sci.astro -net.astro.expert sci.astro -net.bio sci.bio -net.crypt sci.crypt -net.analog sci.electronics -net.nlang sci.lang -net.math sci.math -net.stat sci.math.stat -net.math.stat sci.math.stat -net.math.symbolic sci.math.symbolic -net.med sci.med -net.sci sci.misc -net.physics sci.physics -net.research sci.research -net.space sci.space -net.columbia sci.space.shuttle -net.challenger sci.space.shuttle -net.college soc.college -net.nlang.africa soc.culture.african -net.nlang.celts soc.culture.celtic -net.nlang.greek soc.culture.greek -net.nlang.india soc.culture.indian -net.religion.jewish soc.culture.jewish -net.social soc.misc -mod.motss soc.motss -net.motss soc.motss -net.net-people soc.net-people -net.roots soc.roots -net.singles soc.singles -net.women soc.women -net.abortion talk.abortion -net.bizarre talk.bizarre -net.origins talk.origins -net.philosophy talk.philosophy.misc -net.politics talk.politics.misc -net.politics.theory talk.politics.theory -net.religion talk.religion.misc -talk.religion talk.religion.misc -net.rumor talk.rumors -talk.rumor talk.rumors -EOF -: if no aliases file, make one -if test ! -f $LIBDIR/aliases -then - mv $LIBDIR/aliases.new $LIBDIR/aliases -else - : see whats missing - sort $LIBDIR/aliases | sed -e 's/ */ /g' -e 's/ */ /g' >/tmp/$$aliases - sort $LIBDIR/aliases.new | sed -e 's/ */ /g' -e 's/ */ /g' >/tmp/$$aliases.new - comm -23 /tmp/$$aliases.new /tmp/$$aliases >/tmp/$$comm - if test -s /tmp/$$comm - then - echo "The following suggested aliases are missing or incorrect in your" - echo "$LIBDIR/aliases file. It is suggested you add them." - echo "" - cat /tmp/$$comm - echo "" - echo "A suggested aliases file has been left in $LIBDIR/aliases.new" - echo "for your convenience." - rm /tmp/$$comm /tmp/$$aliases - else - rm /tmp/$$comm /tmp/$$aliases $LIBDIR/aliases.new - fi -fi - -: if no distributions file, make one -if test ! -f $LIBDIR/distributions -then - cat >$LIBDIR/distributions <<EOF -local Local to this site -regional Everywhere in this general area -usa Everywhere in the USA -na Everywhere in North America -world Everywhere on Usenet in the world -EOF -echo -echo You may want to add distributions to $LIBDIR/distributions if your -echo site particpates in a regional distribution such as '"ba"' or '"dc"'. -fi - -chown $NEWSUSR $LIBDIR/[a-z]* -chgrp $NEWSGRP $LIBDIR/[a-z]* - -echo -echo Reminder: uux must permit rnews if running over uucp. -rm -f /tmp/$$* *-*-END-of-src/install.sh-*-* echo x - src/batch.c 1>&2 sed 's/.//' >src/batch.c <<'*-*-END-of-src/batch.c-*-*' - -/* - * This software is Copyright (c) 1985 by Rick Adams. - * - * Permission is hereby granted to copy, reproduce, redistribute or - * otherwise use this software as long as: there is no monetary - * profit gained specifically from the use or reproduction or this - * software, it is not sold, rented, traded or otherwise marketed, and - * this copyright notice is included prominently in any copy - * made. - * - * The author make no claims as to the fitness or correctness of - * this software for any use whatsoever, and it is provided as is. - * Any use of this software is at the user's own risk. - * - * Batch: program to batch a list of news articles into an unbatch script. - * Usage: /usr/lib/news/batch listfile [bytecount] - * where listfile is a file containing a list, one per line, of full - * path names of files containing articles, e.g. as produced by the F - * transmission option in the sys file. - * bytecount is the maximum number of bytes to output before exiting - * Output is placed on standard output. - * - * Intended usage: - * - * With the shellfile "sendbatch", with machine names as arguments: - * e.g - * sendbatch rlgvax seismo - * - * This would be invoked every hour or two from crontab. - * - */ - -#ifdef SCCSID -static char *SccsId = "@(#)batch.c 1.15 1/17/86"; -#endif /* SCCSID */ - -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <errno.h> -#include "defs.h" - -#if defined(USG) || defined(BSD4_2) || defined(BSD4_1C) -#include <fcntl.h> -#endif - -struct stat sbuf; - -extern int errno; -extern char *sys_errlist[]; - -main(argc,argv) -char **argv; -{ - register FILE *fd, *nfd; - register int c; - register long n; - register char *cp; - char *fdstatus; - long maxbytes, nbytes; - long atol(); - char fname[512]; - char workfile[512]; - char *index(), *fgets(); - - if (argc < 2) { - fprintf(stderr, "Usage: batch listfile [bytecount]\n"); - exit(1); - } - - /* - * Rename real file to a work name to avoid race conditions. - * If workfile exists skip the rename in order - * to recover from a crash w/o losing anything. - */ - (void) strcpy(workfile, argv[1]); - (void) strcat(workfile, ".work"); - if (access(workfile, 0) < 0) { - if (access(argv[1], 0) < 0 && errno == ENOENT) - exit(0); /* no news */ - if (rename(argv[1], workfile) < 0) { - logerror("rename(%s,%s) %s", argv[1], workfile, - sys_errlist[errno]); - exit(1); - } - } - fd = fopen(workfile, "r"); - if (fd == NULL) { - logerror("fopen(%s,r) %s", workfile, sys_errlist[errno]); - exit(1); - } - - if (argc > 2) - maxbytes = atol(argv[2]); - else - maxbytes = 100000000L; /* backwards compatible */ - nbytes = 0; - while ((fdstatus = fgets(fname, sizeof fname, fd)) != NULL) { - cp = index(fname, '\n'); - if (cp) - *cp = '\0'; - nfd = fopen(fname, "r"); - if (nfd == NULL) { - perror(fname); - continue; - } - (void) fstat(fileno(nfd), &sbuf); - if (cp) - *cp = '\n'; - nbytes += sbuf.st_size; - if (nbytes > maxbytes && nbytes != sbuf.st_size) - break; - printf("#! rnews %ld\n", (long)sbuf.st_size); - /* guess length of #! rnews string */ - nbytes += 13; - n = 0; - while ((c = getc(nfd)) != EOF) { - putchar(c); - n++; - } - (void) fclose(nfd); - if (ferror(stdout)){ - logerror("stdout write %s", sys_errlist[errno]); - exit(1); - } - if (n != sbuf.st_size) { /* paranoia */ - logerror("%s, expected %ld bytes, got %ld", fname, - n, sbuf.st_size); - /* breaking out of this early will end up resyncing - the batch files (isn't serendipity wonderful?) */ - break; - } - } - if (fdstatus != NULL) { /* exceeded maxbytes */ - char tmpfile[512]; - - (void) umask(2); - (void) strcpy(tmpfile, argv[1]); - (void) strcat(tmpfile, ".tmp"); - nfd = fopen(tmpfile, "w"); - if (nfd == NULL) { - logerror("fopen(%s,w) %s", tmpfile, sys_errlist[errno]); - exit(1); - } - do { - fputs(fname, nfd); - } while (fgets(fname, sizeof fname, fd) != NULL); - if (ferror(nfd)) { - logerror("write(%s) %s", tmpfile, sys_errlist[errno]); - exit(1); - } - (void) fclose(nfd); - (void) fclose(fd); - /* will pick it up next time thru */ - if (rename(tmpfile, workfile) < 0) { - logerror("rename(%s,%s) %s", tmpfile, workfile, - sys_errlist[errno]); - exit(1); - } - } - else - (void) unlink(workfile); - exit(0); -} - -/* - * Log the given message, with printf strings and parameters allowed, - * on the log file, if it can be written. - */ -/* VARARGS1 */ -logerror(fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9) -char *fmt; -{ - FILE *logfile; - char lfname[BUFLEN]; /* the log file */ - char bfr[BUFLEN]; - char *logtime, *ctime(); - time_t t; - - (void) time(&t); - logtime = ctime(&t); - logtime[16] = 0; - logtime += 4; - -#ifdef IHCC - (void) sprintf(lfname, "%s/%s/errlog", logdir(HOME), LIBDIR); -#else - (void) sprintf(lfname, "%s/errlog", LIBDIR); -#endif - - (void) sprintf(bfr, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9); - fprintf(stderr, bfr); - if (access(lfname, 0) == 0 && (logfile = fopen(lfname, "a")) != NULL) { -#if defined(USG) || defined(BSD4_2) || defined(BSD4_1C) - int flags; - flags = fcntl(fileno(logfile), F_GETFL, 0); - (void) fcntl(fileno(logfile), F_SETFL, flags|O_APPEND); -#else /* v7 */ - (void) lseek(fileno(logfile), 0L, 2); -#endif /* v7 */ - fprintf(logfile, "%s\tbatch\t%s\n", logtime, bfr); - (void) fclose(logfile); - } -} - -#if !defined(BSD4_2) && !defined(BSD4_1C) -rename(from, to) -register char *from, *to; -{ - (void) unlink(to); - if (link(from, to) < 0) - return -1; - - (void) unlink(from); - return 0; -} -#endif /* !BSD4_2 && !BSD4_1C */ *-*-END-of-src/batch.c-*-* echo x - src/process.c 1>&2 sed 's/.//' >src/process.c <<'*-*-END-of-src/process.c-*-*' -/* - * This software is Copyright (c) 1986 by Rick Adams. - * - * Permission is hereby granted to copy, reproduce, redistribute or - * otherwise use this software as long as: there is no monetary - * profit gained specifically from the use or reproduction or this - * software, it is not sold, rented, traded or otherwise marketed, and - * this copyright notice is included prominently in any copy - * made. - * - * The author make no claims as to the fitness or correctness of - * this software for any use whatsoever, and it is provided as is. - * Any use of this software is at the user's own risk. - * - * process - process options for readnews/vnews - */ - -#ifdef SCCSID -static char *SccsId = "@(#)process.c 2.15 9/16/86"; -#endif /* SCCSID */ - -#include "rparams.h" - -#define OPTION 0 /* pick up an option string */ -#define STRING 1 /* pick up a string of arguments */ - -struct optable *optpt, options[] = { /* -optlet filchar flag newstate oldmode newmode buf */ -'p', '\0', FALSE, OPTION, UNKNOWN, UNKNOWN,(char *)NULL, -'t', '\0', FALSE, STRING, ANY, UNKNOWN,header.title, -'a', ' ', FALSE, STRING, ANY, UNKNOWN,datebuf, -'n', NGDELIM, FALSE, STRING, ANY, UNKNOWN,header.nbuf, -'c', ' ', FALSE, STRING, UNKNOWN, UNKNOWN,coptbuf, -'l', ' ', FALSE, OPTION, UNKNOWN, UNKNOWN,(char *)NULL, -'r', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'s', NGDELIM, FALSE, STRING, ANY, UNKNOWN,header.nbuf, -'x', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'h', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -#ifdef TMAIL -'M', '\0', FALSE, OPTION, UNKNOWN, MAIL, (char *)NULL, -#else /* !TMAIL */ -'\377', '\0', FALSE, OPTION, UNKNOWN, UNKNOWN,(char *)NULL, -#endif /* !TMAIL */ -'f', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'u', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'e', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'K', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL, -'\0', '\0', 0, 0, 0, 0, (char *)NULL -}; - -process(argc,argv) -register int argc; -register char **argv; -{ - register int state = STRING; - register char *ptr = header.nbuf; - char filchar = NGDELIM; - int len = BUFLEN, tlen; - - /* loop once per arg. */ - - if (argc > 1 && **argv != '-') - nflag = TRUE; - - while (--argc) { - if (state == OPTION) { - if (**argv != '-') { - xerror("Bad option string \"%s\"", *argv); - } - while (*++*argv != '\0') { - for (optpt = options; optpt->optlet != '\0'; ++optpt) { - if (optpt->optlet == **argv) - goto found; - } - /* unknown option letter */ -#ifdef TMAIL - fprintf(stderr, "Usage: %s [ -a [ date ]] [ -n newsgroups ] [ -t titles ] [ -lprxhfuMK ]\n", Progname); -#else /* !TMAIL */ - fprintf(stderr, "Usage: %s [ -a [ date ]] [ -n newsgroups ] [ -t titles ] [ -lprxhfuK ]\n", Progname); -#endif /* !TMAIL */ - fprintf(stderr, "\t[ -c [ ``mailer'' ]]\n\n"); - fprintf(stderr, " %s -s\n", Progname); - exit(1); - - found:; - if (mode != UNKNOWN && (mode&optpt->oldmode) == 0) { - xerror("Bad %c option", **argv); - } - if (mode == UNKNOWN) - mode = optpt->newmode; - filchar = optpt->filchar; - optpt->flag = TRUE; - state = optpt->newstate; - ptr = optpt->buf; - len = BUFLEN; - } - - argv++; /* done with this option arg. */ - - } else { - - /* - * Pick up a piece of a string and put it into - * the appropriate buffer. - */ - if (**argv == '-') { - state = OPTION; - argc++; /* uncount this arg. */ - continue; - } - - if ((tlen = strlen(*argv)) >= len) - xerror("Argument string too long"); - strcpy(ptr, *argv++); - ptr += tlen; - if (*(ptr-1) != filchar) - *ptr++ = filchar; - len -= tlen + 1; - *ptr = '\0'; - } - } - return; -} *-*-END-of-src/process.c-*-* echo x - src/uurec.c 1>&2 sed 's/.//' >src/uurec.c <<'*-*-END-of-src/uurec.c-*-*' -/* - * uurec - receive articles via /bin/mail. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)uurec.c 2.9 4/16/85"; -#endif /* SCCSID */ - -#include "defs.h" - -#include <stdio.h> -#include <ctype.h> - -/* - * Process a news article which has been shipped via /bin/mail. - */ - -#define FROM 01 -#define NLIN 02 -#define BLANK 03 -#define OTHER 04 - -#define SKIPPING 010 -#define READING 020 - -#define BFSZ 250 - -#define EOT '\004' - -#define A 01 -#define B 02 - -#ifdef debug -# define RNEWS "cat" -#endif -extern char *strcat(), *strcpy(); -extern char *frombreak(); -extern FILE *popen(); - -/* ARGSUSED */ -main(argc, argv) -int argc; -char **argv; -{ - char buf[BFSZ], fbuf[BFSZ]; - char bfr[BFSZ], *pbfr = bfr; - register char *p = NULL; - register FILE *pipe = stdout; - register int mode, frmflg, pathcnt, format; - char *index(); - - mode = SKIPPING; - frmflg = FALSE; - while (fgets(buf, BFSZ, stdin) != NULL) { -#ifdef debug - printf("%o\t%s", mode|type(buf), buf); -#endif - switch (mode | type(buf)) { - - case FROM | SKIPPING: - if (frmflg) - p = frombreak(p, buf); - else - p = fbuf; - frmflg = TRUE; - break; - - case FROM | READING: - if (!frmflg) { - frmflg = TRUE; - p = fbuf; - pclose(pipe); - } - p = frombreak(p, buf); - break; - - case NLIN | SKIPPING: - if ((isupper(buf[1]) && index(buf, ':')) || !strncmp(buf, "From ", 5)) - format = B; - else - format = A; -#ifdef debug - printf("format = %d\n", format); -#endif - mode = READING; - - case NLIN | READING: - if (frmflg) { - frmflg = FALSE; - --p; - while (p >= fbuf && *--p != '!') - ; - *++p = '\0'; - pathcnt = 0; -#ifdef IHCC - sprintf(pbfr, "%s/%s/%s", logdir(HOME), - LIBDIR, "rnews"); -#else - pbfr = RNEWS; -#endif - if ((pipe = popen(pbfr, "w")) == NULL) { - perror("uurec: popen failed"); - exit(1); - } - } - if (format == A) { - if (++pathcnt == 3) - fputs(fbuf, pipe); - fputs(buf+1, pipe); - } else { - if (!pathcnt && (!strncmp(buf+1, "From: ", 6) || !strncmp(buf+1, "From ", 5))) { - pathcnt++; - fprintf(pipe, "From: %s", fbuf); - sscanf(buf, "%s %[^\n]", fbuf, fbuf); - fprintf(pipe, "%s\n", fbuf); - } else - fputs(buf+1, pipe); - } - break; - - case OTHER | SKIPPING: - break; - - case OTHER | READING: - pclose(pipe); - mode = SKIPPING; - } - } - if (pipe) - pclose(pipe); - exit(0); -} - -type(p) -register char *p; -{ - while (*p == ' ' || *p == '?') - ++p; - - if (*p == 'N') - return (NLIN); - - if (strncmp(p, ">From ", 6) == 0) - return (FROM); - - if (strncmp(p, "From ", 5) == 0) - return (FROM); - - return(OTHER); -} - -/* - * Get the system name out of a from line. - */ -char * -frombreak(buf, fbuf) -register char *buf, *fbuf; -{ - register char *p; - - /* break the line into tokens. */ - p = fbuf; - while (*++p != '\0') - switch (*p) { - case '\n': - case '\t': - case ' ': - *p = '\0'; - break; - case EOT: - goto garbled; - default:; - } - *++p = EOT; - *++p = '\0'; - - for (p=fbuf; *p != EOT || p[1] != '\0'; p += strlen(p)+1) { - if (strcmp(p, "forwarded") == 0) - return(buf); - if (strcmp(p, "remote") == 0) { - p += strlen(p)+1; - if (strcmp(p, "from") == 0) { - p += strlen(p)+1; - strcpy(buf, p); - strcat(buf, "!"); - return(buf+strlen(buf)); - } - } - } - garbled: - strcat(buf, "???!"); - return(buf+4); -} *-*-END-of-src/uurec.c-*-* echo x - src/checkgroups.sh 1>&2 sed 's/.//' >src/checkgroups.sh <<'*-*-END-of-src/checkgroups.sh-*-*' -: check active file for missing or extra newsgroups -: '@(#)checkgroups 1.17 10/29/86' - -if test ! -s LIBDIR/newsgroups -then - cp /dev/null LIBDIR/newsgroups -fi -# Read first line of stdin. If of the form "-n group", then only check -# for the specified group. Otherwise, assume doing standard groups -sed -e '/^[a-zA-Z-]*: /d' -e '/^$/d' -e '/^[#:]/d' | ( -read line -case "${line}" in --n*) - # Doing specific group. extract group name and preserve - # all of current newsgroups file except for that group. - # Then append entries for this group. - group=`echo "${line}" | sed -e 's/-n /^/' -e 's/$/\\\\./'` - egrep -v "${group}" LIBDIR/newsgroups > /tmp/$$a - cat /tmp/$$a - > LIBDIR/newsgroups - ;; -*) - group="^net\\.|^mod\\.|^comp\\.|^sci\\.|^rec\\.|^news\\.|^soc\\.|^misc\\.|^talk\\." - egrep -v "${group}" LIBDIR/newsgroups > /tmp/$$a - cat /tmp/$$a > LIBDIR/newsgroups - cat >> LIBDIR/newsgroups - ;; -esac - -egrep "${group}" LIBDIR/active | sed 's/ .*//' | sort >/tmp/$$active -egrep "${group}" LIBDIR/newsgroups | sed 's/ .*//' | sort >/tmp/$$newsgroups - -comm -13 /tmp/$$active /tmp/$$newsgroups >/tmp/$$missing -comm -23 /tmp/$$active /tmp/$$newsgroups >/tmp/$$remove - -egrep "${group}" LIBDIR/active | sed -n "/m\$/s/ .*//p" | - sort > /tmp/$$active.mod.all -egrep "${group}" LIBDIR/newsgroups | -sed -n "/Moderated/s/[ ][ ]*.*//p" | sort > /tmp/$$newsg.mod - -comm -12 /tmp/$$missing /tmp/$$newsg.mod >/tmp/$$add.mod -comm -23 /tmp/$$missing /tmp/$$newsg.mod >/tmp/$$add.unmod -cat /tmp/$$add.mod /tmp/$$add.unmod >>/tmp/$$add - -comm -23 /tmp/$$active.mod.all /tmp/$$remove >/tmp/$$active.mod -comm -13 /tmp/$$newsg.mod /tmp/$$active.mod >/tmp/$$ismod -comm -23 /tmp/$$newsg.mod /tmp/$$active.mod >/tmp/$$notmod.all -comm -23 /tmp/$$notmod.all /tmp/$$add >/tmp/$$notmod - -if test -s /tmp/$$remove -then - ( - echo "The following newsgroups are not valid and should be removed." - sed "s/^/ /" /tmp/$$remove - echo "" - echo "You can do this by executing the command:" - echo \ LIBDIR/rmgroup `cat /tmp/$$remove` - echo "" - ) 2>&1 >/tmp/$$out -fi - -if test -s /tmp/$$add -then - ( - echo "The following newsgroups were missing and should be added." - sed "s/^/ /" /tmp/$$add - echo "" - echo "You can do this by executing the command(s):" - for i in `cat /tmp/$$add.unmod` - do - echo 'LIBDIR/inews -C '$i' </dev/null' - done - for i in `cat /tmp/$$add.mod` - do - echo 'LIBDIR/inews -C '$i' moderated </dev/null' - done - echo "" - ) 2>&1 >>/tmp/$$out -fi - -if test -s /tmp/$$ismod -then - ( - echo "The following newsgroups are not moderated and are marked moderated." - sed "s/^/ /" /tmp/$$ismod - echo "" - echo "You can correct this by executing the command(s):" - for i in `cat /tmp/$$ismod` - do - echo 'LIBDIR/inews -C '$i' </dev/null' - done - echo "" - ) 2>&1 >>/tmp/$$out -fi - -if test -s /tmp/$$notmod -then - ( - echo "The following newsgroups are moderated and not marked so." - sed "s/^/ /" /tmp/$$notmod - echo "" - echo "You can correct this by executing the command(s):" - for i in `cat /tmp/$$notmod` - do - echo 'LIBDIR/inews -C '$i' moderated </dev/null' - done - echo "" - ) 2>&1 >>/tmp/$$out -fi - -if test -s /tmp/$$out -then - (echo "Subject: Problems with your active file" - echo "" - cat /tmp/$$out - ) | if test $# -gt 0 - then - mail $1 - else - cat - fi -fi -) - -rm -f /tmp/$$* *-*-END-of-src/checkgroups.sh-*-* echo x - src/encode.c 1>&2 sed 's/.//' >src/encode.c <<'*-*-END-of-src/encode.c-*-*' -#include <stdio.h> - -#ifdef SCCSID -static char *SccsId = "@(#)encode.c 1.3 5/15/85"; -#endif /* SCCSID */ - -/* - * Produce a 7 bit printable encoding of stdin on stdout. - * - * Encoding uses acsii chars from ' ' .. 'z' - * (040 .. 0172) (0x20 - 0x7a) inclusive - * - * Method is to expand 3 chars -> 4 6 bit ones. - * Then collect 13 6 bit chars, and spread the 13th over - * the preceding 12, so that each of the 12 chars is now - * 6.5 bits. These 2 6.5 bit chars are a little hard - * to represent on most common machines (one of these days - * sane hosts will have 1/2 bits just for this program) - * so we take a pair of them, and represent that in 13 bits. - * 13 bits (max value 8191) can be represented as - * A * 91 + B - * where A < 91, B < 91 (91^2 == 8281, so it fits!) - * - * Each of A and B is encoded as a character by adding 32 - * to make it printable (ie: 0x20). - * - * The termination conditions are foul beyond belief. Don't - * monkey with them! - * - * If you think its a fluke that 040 .. 0171 just happen to - * be the chars that Piet Beertema's uucp 'f' protocol transmits - * as single bytes, you're insane. 0172 chars are produced - * with lower frequency than any other (given random data) - * so the doubling that occurs with that we will just suffer. - * (A newer 'f' proto, sometime, will probably not use 0172) - */ - -/* - * the following pair of characters cannot legally occur - * in normal output (since 90*91 + 90 == 8280, which > 2^13) - * so we use them to indicate that the data that follows is the - * terminator. The character immediately following this - * pair is the length of the (expanded) terminator (which - * otherwise might be indeterminable) - */ -#define ENDMARK1 ((90*91 + 90) / 91 + ' ') -#define ENDMARK2 ((90*91 + 90) % 91 + ' ') - -main() -{ - register char *p; - register char *e; - register c; - char b3[3]; - - p = b3; - e = b3 + 3; - while ((c = getchar()) != EOF) { - *p++ = c; - if (p == e) { - encode(b3, 3); - p = b3; - } - } - encode(b3, p - b3); - flushout(); - exit(0); -} - -static char b13[13]; -static int cnt = 0; - -encode(c, n) - register char *c; - int n; -{ - register char *p; - register i = cnt; - register j; - char b4[4]; - - p = b4; - - p[0] = (c[0] >> 2) & 0x3f; - p[1] = ((c[0] & 0x3) << 4) | ((c[1] >> 4) & 0xf); - p[2] = ((c[1] & 0xF) << 2) | ((c[2] >> 6) & 0x3); - if (n == 3) - p[3] = c[2] & 0x3f; - else - p[3] = n; - - c = &b13[i]; - for (j = 4; --j >= 0; i++) { - if (i == 13) { - dumpcode(b13, 13); - c = b13; - i = 0; - } - *c++ = *p++; - } - cnt = i; -} - -flushout() -{ - putchar(ENDMARK1); - putchar(ENDMARK2); - putchar(cnt + ' '); - dumpcode(b13, cnt); -} - -dumpcode(p, n) - register char *p; - register int n; -{ - register last; - register c; - - if (n == 13) - n--, last = p[12]; - else if (n & 1) - last = (1 << (6-1)); - else - last = 0; - - for ( ; n > 0; n -= 2) { - c = *p++ << 6; - c |= *p++; - if (last & (1 << (6-1))) - c |= (1 << 12); - last <<= 1; - - /* - * note: 91^2 > 2^13, 90^2 < 2^13, (91 + ' ') is printable - */ - - /* oh for a compiler that would only do one division... */ - putchar((c / 91) + ' '); - putchar((c % 91) + ' '); - } -} *-*-END-of-src/encode.c-*-* echo x - src/caesar.c 1>&2 sed 's/.//' >src/caesar.c <<'*-*-END-of-src/caesar.c-*-*' -/* - * program to to decrypt caesar(tm) cypher - * (caesar is a trademark of the roman empire) - * - * to compile: - * - * cc decrypt.c -lm -o decrypt.c - * - * usage: - * - * decrypt [n] < file - * - * where n is an optional forced rotation. - * - * authors: Stan King, John Eldridge, based on algorithm suggested by - * Bob Morris - * 29-Sep-82 - * - */ - -#ifdef SCCSID -static char *SccsId = "@(#)caesar.c 1.7 4/16/85"; -#endif /* SCCSID */ - -#include <stdio.h> -#include <ctype.h> -#include <math.h> -extern char *calloc(); - -main(argc, argv) -int argc; -char *argv[]; -{ - /* letter frequencies (taken from some unix(tm) documentation) */ - /* (unix is a trademark of Bell Laboratories) */ - static double stdf[ 26 ] = - { - 7.97, 1.35, 3.61, 4.78, 12.37, 2.01, 1.46, 4.49, - 6.39, 0.04, 0.42, 3.81, 2.69, 5.92, 6.96, 2.91, - 0.08, 6.63, 8.77, 9.68, 2.62, 0.81, 1.88, 0.23, - 2.07, 0.06, - }; - int obs[26]; - int bufsize; - int c, i, try; - double dot, winnerdot; /* .. */ - int winner, forced = 0; - char *inbuf; - - bufsize = 0; - if( argc > 1 ) - sscanf( argv[1], "%d", &forced ); - if( forced == 0 ) - forced = -1000; - - inbuf = calloc( BUFSIZ, 1 ); - - /* adjust frequency table to weight low probs REAL low */ - for (i=0; i<26; i++) { - stdf[i] = log(stdf[i]) + log(26.0/100.0); - } - - /* Decode each line separately */ - for (;;) { - for (i=0; i<=25; obs[i++]=0) - ; - - /* get a sample of the text */ - for( i = 0; i < BUFSIZ; i++ ) { - if( (c = getchar()) == EOF ) { - exit(0); - } - inbuf[i] = c; - if (c == '\n') { - bufsize = i+1; - break; - } - if (islower(c)) - obs[c-'a'] += 1; - else if (isupper(c)) - obs[c-'A'] += 1; - } - - /* now "dot" the freqs with the observed letter freqs */ - /* and keep track of best fit */ - winner = 0; - for (try = 0; try<26; try+=13) { - dot = 0; - for ( i=0; i<26; i++ ) { - dot += obs[i] * stdf[ (i+try) % 26 ]; - } - /* initialize winning score */ - if( try == 0 ) - winnerdot = dot; - if( dot > winnerdot ) { - /* got a new winner! */ - winner = try; - winnerdot = dot; - } - } - - if (forced != -1000) - winner = forced; - - /* print out sample buffer */ - for( i = 0; i < bufsize; i++ ) - putchar( rotate( inbuf[i], winner ) ); - } - } - - -static int -rotate( c, perm ) -char c; -int perm; -{ - if (isupper(c)) { - return 'A' + (c - 'A' + perm) % 26 ; - } - else if (islower(c)) { - return 'a' + (c-'a'+perm) % 26 ; - } - else return c; -} *-*-END-of-src/caesar.c-*-* echo x - src/defs.dist 1>&2 sed 's/.//' >src/defs.dist <<'*-*-END-of-src/defs.dist-*-*' -/* - * This software is Copyright (c) 1986 by Rick Adams. - * - * Permission is hereby granted to copy, reproduce, redistribute or - * otherwise use this software as long as: there is no monetary - * profit gained specifically from the use or reproduction or this - * software, it is not sold, rented, traded or otherwise marketed, and - * this copyright notice is included prominently in any copy - * made. - * - * The author make no claims as to the fitness or correctness of - * this software for any use whatsoever, and it is provided as is. - * Any use of this software is at the user's own risk. - * - */ - -/* @(#)defs.dist 2.55 10/30/86 */ - -/* - * defs.h - defines for news-related programs. - * - * If you remove any lines here or in your Makefile, make the change - * to localize.sh so you won't have to redo it for each news release. - * - * If TMAIL is undefined, the -M option will be disabled. - * - * By convention, the version of the software you are running is taken - * to be news_version below. - */ - -#define NEWS_VERSION "B 2.11 10/30/86" - -#define DAYS (60L*60L*24L) -#define WEEKS (7*DAYS) -/* Things that very well may require local configuration */ -#ifndef HOME -#define ROOTID 10 /* uid of person allowed to cancel anything */ -#endif -#define N_UMASK 000 /* mask for umask call, 022 for secure system */ -#define DFLTEXP 2*WEEKS /* default no. of seconds to expire in */ -#define HISTEXP 4*WEEKS /* default no. of seconds to forget in */ -#define DFLTSUB "general,all.announce" /* default subscription list */ -#define TMAIL "/usr/ucb/Mail" /* Mail program that understands -T */ -#define ADMSUB "general,all.announce" /* Mandatory subscription list */ -#define PAGE "/usr/ucb/more" /* Default pager */ -#define NOTIFY "usenet" /* Tell him about certain ctl messages */ - /* Default xmit command - remove -z if */ -#define DFTXMIT "uux - -r -z %s!rnews < %s" /* your uux can't do it */ -#define UXMIT "uux -r -z -c %s!rnews '<' %s" /* If uux -c is ok */ -#define DFTEDITOR "vi" /* Default editor, see also postnews. */ -/* #define UUPROG "euuname" /* omit for uuname, put in LIBDIR */ -#define MANUALLY /* Don't execute rmgroups, just notify. */ -/* #define NONEWGROUPS /* Don't create new groups, just notify.*/ -#define BATCH "unbatch" /* name of unbatcher */ -/* #define SPOOLNEWS /* Spool incoming news, don't process */ -/* #define LOCALNAME /* There is no full name database. */ -/* #define INTERNET /* Internet mail works locally */ -#define MYDOMAIN ".UUCP" /* Local domain */ -/* #define CHEAP /* don't chown files to news */ -/* #define OLD /* Add extra headers for old neighbors */ -/* #define UNAME /* If uname call returns your nodename */ -/* #define GHNAME /* If gethostname call is available. */ -/* #define UUNAME "/etc/uucpname" /* If your nodename is stored in a file */ -#define V7MAIL /* Local mail format is V7 ("From ") */ -#define SORTACTIVE /* if you want news presented in the order of the .newsrc */ -#define ZAPNOTES /* if you want old style notes headers moved into the headers */ -#define DIGPAGE /* allow digestifying in vnews */ -/* #define DOXREFS /* Generate xref line for rn to use */ -/* #define MULTICAST /* If you want to be able to multicast news */ -/* #define BSD4_2 /* If you are running 4.2 or 4.3 BSD */ -/* #define BSD4_1C /* If you are running 4.1C BSD */ -/* #define LOCKF /* If you have the lockf() sys call */ -/* #define ALWAYSALIAS /* temporary kludge for conversion */ -/* #define SENDMAIL "/usr/lib/sendmail" /* command line to run "sendmail" if you have it */ -/* #define MMDF "/usr/mmdf/submit" /* command line to run mmdf if you have it */ -#define MYORG "Frobozz Inc., St. Louis" /* My organization. Please */ - /* include your city (and state, and */ - /* country, if not obvious) in MYORG, */ - /* and please keep it short. */ -/* #define HIDDENNET "frooz" /* if you have a local network and want */ - /* The mail address to look like it came */ - /* from one machine */ -/* #define NICENESS 4 /* does a nice(NICENESS) in rnews */ -/* #define FASCIST "all,!all.all" /* only permit posting to certain groups */ - /* see installation guide for details */ -/* #define SMALL_ADDRESS_SPACE /* If your machine can't address > 32767 */ -/* #define ORGDISTRIB "froozum" /* For organization wide control message handling */ - -/* Things you might want to change */ -#define NEWSRC ".newsrc" /* name of .newsrc file (in home dir) */ -#define LINES 512 /* maximum no. of lines in .newsrc */ -#define NEGCHAR '!' /* newsgroup negation character */ -#define DEADTIME 45 /* no. of seconds to wait on deadlock */ -#define FMETA '%' /* file meta-character for c option */ -#if defined(pdp11) || defined(SMALL_ADDRESS_SPACE) -# define BUFLEN 128 /* standard buffer size */ -#else -# define BUFLEN 256 /* standard buffer size */ -#endif -#define LBUFLEN 1024 /* big buffer size */ -#define SBUFLEN 32 /* small buffer size (for system names, etc) */ -#define LNCNT 14 /* Articles with > LNCNT lines go through pager */ - -/* Things you probably won't want to change */ -#define PATHLEN 512 /* length of longest source string */ -#define DATELEN 64 /* length of longest allowed date string */ -#define NAMELEN 128 /* length of longest possible message ID */ -#define SNLN 8 /* max significant characters in sysname */ -#define PROTO 'A' /* old protocol name */ -#define NETCHRS "!:@^%,"/* Punct. chars used for various networks */ -#define TRUE 1 /* boolean true */ -#define FALSE 0 /* boolean false */ -#define PERHAPS 2 /* indeterminate boolean value */ -#define NGDELIM ',' /* delimit character in news group line */ *-*-END-of-src/defs.dist-*-* exit