ARPAVAX:usenet (06/22/82)
Only in 2.7: README Common subdirectories: 2.7/doc and 2.8/doc Common subdirectories: 2.7/man and 2.8/man Common subdirectories: 2.7/misc and 2.8/misc Only in 2.7: new.2.7 Common subdirectories: 2.7/src and 2.8/src Only in 2.7/src: Makefile diff -c -r 2.7/src/Makefile.usg 2.8/src/Makefile.usg *** 2.7/src/Makefile.usg Tue Jun 1 08:25:37 1982 --- 2.8/src/Makefile.usg Mon Jun 21 14:02:58 1982 *************** *** 1,4 ! # @(#) Makefile.usg 2.4 6/1/82 # definitions SPOOLDIR = /usr/spool/news --- 1,4 ----- ! # @(#) Makefile.usg 2.5 6/21/82 # definitions SPOOLDIR = /usr/spool/news *************** *** 12,18 SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\ rextern.c readr.c process.c control.c ftime.c header.c OBJECTS = funcs.o getdate.o ftime.o header.o ! IOBJECTS = inews.o ifuncs.o iextern.o control.o $(OBJECTS) ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS) EXPOBJS= expire.o header.o funcs.o getdate.o rextern.o ftime.o OTHERS = uurec recnews expire sendnews --- 12,18 ----- SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\ rextern.c readr.c process.c control.c ftime.c header.c OBJECTS = funcs.o getdate.o ftime.o header.o ! IOBJECTS = inews.o ifuncs.o iextern.o control.o fullname.o $(OBJECTS) ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS) EXPOBJS= expire.o header.o funcs.o getdate.o rextern.o ftime.o OTHERS = uurec recnews expire sendnews diff -c -r 2.7/src/Makefile.v7 2.8/src/Makefile.v7 *** 2.7/src/Makefile.v7 Tue Jun 1 08:25:36 1982 --- 2.8/src/Makefile.v7 Mon Jun 21 14:02:58 1982 *************** *** 1,4 ! # @(#) Makefile.v7 2.4 6/1/82 # definitions SPOOLDIR = /usr/spool/news --- 1,4 ----- ! # @(#) Makefile.v7 2.5 6/21/82 # definitions SPOOLDIR = /usr/spool/news *************** *** 12,18 SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\ rextern.c readr.c process.c uname.c control.c header.c OBJECTS = funcs.o getdate.o uname.o header.o ! IOBJECTS = inews.o ifuncs.o iextern.o control.o $(OBJECTS) ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS) EXPOBJS= expire.o uname.o header.o funcs.o getdate.o rextern.o OTHERS = uurec recnews sendnews expire --- 12,18 ----- SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\ rextern.c readr.c process.c uname.c control.c header.c OBJECTS = funcs.o getdate.o uname.o header.o ! IOBJECTS = inews.o ifuncs.o iextern.o control.o fullname.o $(OBJECTS) ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS) EXPOBJS= expire.o uname.o header.o funcs.o getdate.o rextern.o OTHERS = uurec recnews sendnews expire diff -c -r 2.7/src/checknews.c 2.8/src/checknews.c *** 2.7/src/checknews.c Tue Jun 1 08:25:12 1982 --- 2.8/src/checknews.c Mon Jun 21 14:02:59 1982 *************** *** 2,8 * checknews - news checking program */ ! static char *SccsId = "@(#) checknews.c 2.8 6/1/82"; #include <stdio.h> #include <sys/types.h> --- 2,8 ----- * checknews - news checking program */ ! static char *SccsId = "@(#) checknews.c 2.9 6/21/82"; #include <stdio.h> #include <sys/types.h> *************** *** 150,156 #else getuser(); #endif ! sprintf(newsrc, "%s/%s", userhome, NEWSRC); if ((rcfp = fopen(newsrc, "r")) != NULL) { while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { if (!(space = isspace(*rcbuf))) --- 150,160 ----- #else getuser(); #endif ! ptr = getenv("NEWSRC"); ! if (ptr == NULL) ! sprintf(newsrc, "%s/%s", userhome, NEWSRC); ! else ! strcpy(newsrc, ptr); if ((rcfp = fopen(newsrc, "r")) != NULL) { while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { if (!(space = isspace(*rcbuf))) diff -c -r 2.7/src/control.c 2.8/src/control.c *** 2.7/src/control.c Sat Jun 5 19:43:40 1982 --- 2.8/src/control.c Mon Jun 21 14:03:09 1982 *************** *** 5,11 * See defs.h "news_version" for the real version of netnews. */ ! static char *SccsId = "@(#) control.c 2.8 6/5/82 (this is NOT the netnews version!)"; #include "iparams.h" --- 5,11 ----- * See defs.h "news_version" for the real version of netnews. */ ! static char *SccsId = "@(#) control.c 2.9 6/21/82 (this is NOT the netnews version!)"; #include "iparams.h" *************** *** 656,661 { /* Be sure we DO allow alphabetics, !, :, ., -, @. *. */ char *nasty = "\"'\\`^|;& <>/~"; if (sendto[0] <= ' ') { log("nasty mail name %s from %s", sendto, header.path); --- 656,662 ----- { /* Be sure we DO allow alphabetics, !, :, ., -, @. *. */ char *nasty = "\"'\\`^|;& <>/~"; + register char *p; if (sendto[0] <= ' ') { log("nasty mail name %s from %s", sendto, header.path); *************** *** 661,666 log("nasty mail name %s from %s", sendto, header.path); xxit(1); } while (*nasty) { if (index(sendto, *nasty++)) { log("nasty mail name %s from %s", sendto, header.path); --- 662,673 ----- log("nasty mail name %s from %s", sendto, header.path); xxit(1); } + for (p=sendto; *p; p++) { + if (*p == ' ') { + *p = 0; + break; + } + } while (*nasty) { if (index(sendto, *nasty++)) { log("nasty mail name %s from %s", sendto, header.path); *************** *** 696,702 } else if (strcmp(msg, "sendme") == 0) { return; /* no restrictions */ } else if (strcmp(msg, "newgroup") == 0) { ! return; /* no restrictions */ } else if (strcmp(msg, "rmgroup") == 0) { suser(); checkpass("mTnyckAVEMXWk"); --- 703,709 ----- } else if (strcmp(msg, "sendme") == 0) { return; /* no restrictions */ } else if (strcmp(msg, "newgroup") == 0) { ! suser(); } else if (strcmp(msg, "rmgroup") == 0) { suser(); checkpass("mTnyckAVEMXWk"); *************** *** 704,709 suser(); } else if (strcmp(msg, "senduuname") == 0) { suser(); } else if (strcmp(msg, "cancel") == 0) { return; /* no restrictions at this level */ } else { --- 711,718 ----- suser(); } else if (strcmp(msg, "senduuname") == 0) { suser(); + } else if (strcmp(msg, "version") == 0) { + return; /* no restrictions */ } else if (strcmp(msg, "cancel") == 0) { return; /* no restrictions at this level */ } else { diff -c -r 2.7/src/defs.h 2.8/src/defs.h *** 2.7/src/defs.h Mon Jun 7 19:14:09 1982 --- 2.8/src/defs.h Mon Jun 21 14:03:09 1982 *************** *** 10,16 * to be news_version below. */ ! static char *news_version = "@(#) defs.h 2.7 6/7/82"; #define DAYS (60L*60L*24L) #define WEEKS (7*DAYS) --- 10,16 ----- * to be news_version below. */ ! static char *news_version = "@(#) defs.h 2.8 6/21/82"; #define DAYS (60L*60L*24L) #define WEEKS (7*DAYS) *************** *** 30,35 /* #define UUNAME "euuname" /* omit for uuname, put in LIBDIR */ /* #define MANUALLY /* Don't execute rmgroups, just notify. */ /* #define BERKNAME "ARPAVAX" /* name of local host on Berknet */ /* Things you might want to change */ #define ROOTID 0 /* uid of person allowed to cancel anything */ --- 30,36 ----- /* #define UUNAME "euuname" /* omit for uuname, put in LIBDIR */ /* #define MANUALLY /* Don't execute rmgroups, just notify. */ /* #define BERKNAME "ARPAVAX" /* name of local host on Berknet */ + /* #define LOCALNAME /* There is no full name database. */ /* Things you might want to change */ #define ROOTID 0 /* uid of person allowed to cancel anything */ diff -c -r 2.7/src/expire.c 2.8/src/expire.c *** 2.7/src/expire.c Tue Jun 1 08:25:38 1982 --- 2.8/src/expire.c Mon Jun 21 14:03:10 1982 *************** *** 3,9 * have expired. */ ! static char *SccsId = "@(#) expire.c 2.9 6/1/82"; #include "params.h" --- 3,9 ----- * have expired. */ ! static char *SccsId = "@(#) expire.c 2.10 6/21/82"; #include "params.h" *************** *** 166,171 char *p; int last = 0; char newname[BUFLEN]; while (*artlist == ' ' || *artlist == '\n' || *artlist == ',') artlist++; --- 166,172 ----- char *p; int last = 0; char newname[BUFLEN]; + char newgroup[BUFLEN]; while (*artlist == ' ' || *artlist == '\n' || *artlist == ',') artlist++; *************** *** 192,198 if (verbose > 1) printf("link %s to %s\n", newname, filename); if (link(artlist, newname) == -1) { ! if (mkdir(groupdir) == 0) link(artlist, newname); } } --- 193,202 ----- if (verbose > 1) printf("link %s to %s\n", newname, filename); if (link(artlist, newname) == -1) { ! strcpy(newgroup, artlist); ! p = index(newgroup, '/'); ! *p = 0; ! if (mkdir(newgroup) == 0) link(artlist, newname); } } diff -c -r 2.7/src/help 2.8/src/help *** 2.7/src/help Tue Mar 30 18:47:34 1982 --- 2.8/src/help Mon Jun 21 14:03:11 1982 *************** *** 4,9 y Yes. Prints current article and goes on to next. n No. Goes on to next article without printing current one. q Quit. Update .newsrc if -l or -x not used. c Cancel article. r Reply. Reply to article's author via mail. f [title] Submit a follow up article. --- 4,10 ----- y Yes. Prints current article and goes on to next. n No. Goes on to next article without printing current one. q Quit. Update .newsrc if -l or -x not used. + u Unsubscribe. You won't be shown this newsgroup anymore. c Cancel article. r Reply. Reply to article's author via mail. f [title] Submit a follow up article. *************** *** 18,23 +[n] Skip n articles. - Go back to last article. x Exit. Don't update .newsrc. X system Send article to system. c, f, r, e, h, and s can be followed by -'s to refer to the previous article --- 19,25 ----- +[n] Skip n articles. - Go back to last article. x Exit. Don't update .newsrc. + v Version. Print current news version number. X system Send article to system. c, f, r, e, h, and s can be followed by -'s to refer to the previous article diff -c -r 2.7/src/ifuncs.c 2.8/src/ifuncs.c *** 2.7/src/ifuncs.c Tue Jun 8 08:35:08 1982 --- 2.8/src/ifuncs.c Mon Jun 21 14:03:12 1982 *************** *** 2,8 * ifuncs - functions used by inews. */ ! static char *SccsId = "@(#) ifuncs.c 2.10 6/8/82"; #include "iparams.h" --- 2,8 ----- * ifuncs - functions used by inews. */ ! static char *SccsId = "@(#) ifuncs.c 2.11 6/21/82"; #include "iparams.h" *************** *** 285,290 unlink(ARTICLE); while (lockcount > 0) unlock(); exit(status); } --- 285,291 ----- unlink(ARTICLE); while (lockcount > 0) unlock(); + idunlock(); exit(status); } *************** *** 431,505 } /* - * Figure out who is sending the message and sign it. - * We attempt to look up the user in the gecos field of /etc/passwd. - * The Berkeley conventions (name first, & expands to login name) are - * assumed. If a site stores weird stuff in gecos, like some account - * number, too bad - local mods may be in order. - */ - char * - gensender(un) - char *un; - { - static char outbuf[100]; - char inbuf[100]; - struct passwd *pw; - - pw = getpwnam(un); - if (pw == NULL) - return un; - buildfname(pw->pw_gecos, un, inbuf); - if (inbuf[0] == 0) - return un; - sprintf(outbuf, "%s (%s)", un, inbuf); - return outbuf; - } - - /* - ** BUILDFNAME -- build full name from gecos style entry. - ** (routine lifted from sendmail) - ** - ** This routine interprets the strange entry that would appear - ** in the GECOS field of the password file. - ** - ** Parameters: - ** p -- name to build. - ** login -- the login name of this user (for &). - ** buf -- place to put the result. - ** - ** Returns: - ** none. - ** - ** Side Effects: - ** none. - */ - - buildfname(p, login, buf) - register char *p; - char *login; - char *buf; - { - register char *bp = buf; - - if (*p == '*') - p++; - while (*p != '\0' && *p != ',' && *p != ';' && *p != ':') - { - if (*p == '&') - { - strcpy(bp, login); - *bp = toupper(*bp); - while (*bp != '\0') - bp++; - p++; - } - else - *bp++ = *p++; - } - *bp = '\0'; - } - - /* * Check if header.nbuf contains only valid newsgroup names; * exit with error if not valid. * --- 432,437 ----- } /* * Check if header.nbuf contains only valid newsgroup names; * exit with error if not valid. * *************** *** 545,548 xerror(bfr); } } } --- 477,514 ----- xerror(bfr); } } + } + + char * + gensender(logname) + char *logname; + { + char *fn; + static char buf[100]; + char buf2[100]; + char *fullname(), *getenv(); + char *p; + int fd; + + fn = getenv("NAME"); + + if (fn == NULL) { + sprintf(buf, "%s/%s", getenv("HOME"), ".name"); + fd = open(buf, 0); + if (fd >= 0) { + read(fd, buf2, sizeof buf2); + close(fd); + if (buf2[0] >= 'A') + fn = buf2; + for (p=fn; *p; p++) + if (*p < ' ') + *p = 0; + } + } + + if (fn == NULL) + fn = fullname(logname); + + sprintf(buf, "%s (%s)", logname, fn); + return buf; } diff -c -r 2.7/src/inews.c 2.8/src/inews.c *** 2.7/src/inews.c Tue Jun 1 08:25:21 1982 --- 2.8/src/inews.c Mon Jun 21 14:03:13 1982 *************** *** 2,8 * inews - insert, receive, and transmit news articles. */ ! static char *SccsId = "@(#) inews.c 2.9 6/1/82"; #include "iparams.h" --- 2,8 ----- * inews - insert, receive, and transmit news articles. */ ! static char *SccsId = "@(#) inews.c 2.10 6/21/82"; #include "iparams.h" *************** *** 198,204 * ALL of the command line has now been processed. (!) */ ! if (!Dflag) { if (recording(header.nbuf)) { if (!tty) fwait(fsubr(newssave, stdin, NULL)); --- 198,204 ----- * ALL of the command line has now been processed. (!) */ ! if (!Dflag && mode != PROC) { if (recording(header.nbuf)) { if (!tty) fwait(fsubr(newssave, stdin, NULL)); *************** *** 208,214 if (!tty && mode != PROC) { i = fork(); ! if (i == 0) exit(0); } --- 208,214 ----- if (!tty && mode != PROC) { i = fork(); ! if (i != 0) exit(0); } *************** *** 257,263 ngsquash(nbuf, srec.s_nbuf); #ifdef RESTRICT if (!*nbuf) { ! sprintf(bfr, "Article %s not subscribed to",header.ident); xerror(bfr); } #endif --- 257,263 ----- ngsquash(nbuf, srec.s_nbuf); #ifdef RESTRICT if (!*nbuf) { ! sprintf(bfr, "Article %s group %s not subscribed to",header.ident,header.nbuf); xerror(bfr); } #endif diff -c -r 2.7/src/postnews.usg 2.8/src/postnews.usg *** 2.7/src/postnews.usg Tue Jun 1 08:25:34 1982 --- 2.8/src/postnews.usg Mon Jun 21 14:03:14 1982 *************** *** 1,4 ! : '@(#) postnews.usg 2.4 6/1/82' if test $# -gt 1 ; then echo "$0: Too many args" exit 1 --- 1,4 ----- ! : '@(#) postnews.usg 2.5 6/21/82' if test $# -gt 1 ; then echo "$0: Too many args" exit 1 *************** *** 24,30 t=/tmp/pn$$ trap "sleep 1; rm -f $t; exit" 0 1 2 $EDITOR $t ! inews -t "$title" -n $ng <$t & fi ;; 1) --- 24,38 ----- t=/tmp/pn$$ trap "sleep 1; rm -f $t; exit" 0 1 2 $EDITOR $t ! if inews -t "$title" -n $ng <$t ! then ! : ! else ! if cat $t >>$HOME/dead.news ! then ! echo Article saved in $HOME/dead.news ! fi ! fi fi ;; 1) diff -c -r 2.7/src/postnews.v7 2.8/src/postnews.v7 *** 2.7/src/postnews.v7 Tue Jun 1 08:25:16 1982 --- 2.8/src/postnews.v7 Mon Jun 21 14:03:14 1982 *************** *** 1,4 ! : '@(#) postnews.v7 2.4 6/1/82' if test $# -gt 1 ; then echo "$0: Too many args" exit 1 --- 1,4 ----- ! : '@(#) postnews.v7 2.5 6/21/82' if test $# -gt 1 ; then echo "$0: Too many args" exit 1 *************** *** 16,22 fi case $# in 0) ! if test x$EDITOR = x then echo "Type news, end with control D" inews -t "$title" -n $ng --- 16,22 ----- fi case $# in 0) ! if test x$EDITOR = x then echo "Type news, end with control D" inews -t "$title" -n $ng *************** *** 24,30 t=/tmp/pn$$ trap "sleep 1; rm -f $t; exit" 0 1 2 $EDITOR $t ! inews -t "$title" -n $ng <$t fi ;; 1) --- 24,38 ----- t=/tmp/pn$$ trap "sleep 1; rm -f $t; exit" 0 1 2 $EDITOR $t ! if inews -t "$title" -n $ng <$t ! then ! : ! else ! if cat $t >>$HOME/dead.news ! then ! echo Article saved in $HOME/dead.news ! fi ! fi fi ;; 1) Only in 2.7/src: readnews.1 diff -c -r 2.7/src/readnews.c 2.8/src/readnews.c *** 2.7/src/readnews.c Tue Jun 1 08:25:24 1982 --- 2.8/src/readnews.c Mon Jun 21 14:03:15 1982 *************** *** 2,8 * readnews - read news articles. */ ! static char *SccsId = "@(#) readnews.c 2.5 6/1/82"; #include "rparams.h" --- 2,8 ----- * readnews - read news articles. */ ! static char *SccsId = "@(#) readnews.c 2.6 6/21/82"; #include "rparams.h" *************** *** 114,120 getuser(); #endif myrc = getenv("NEWSRC"); ! if (myrc == NULL) myrc = NEWSRC; sprintf(newsrc, "%s/%s", userhome, myrc); if ((rcfp = fopen(newsrc, "r")) != NULL) { --- 114,120 ----- getuser(); #endif myrc = getenv("NEWSRC"); ! if (myrc == NULL) { myrc = NEWSRC; sprintf(newsrc, "%s/%s", userhome, myrc); } *************** *** 116,122 myrc = getenv("NEWSRC"); if (myrc == NULL) myrc = NEWSRC; ! sprintf(newsrc, "%s/%s", userhome, myrc); if ((rcfp = fopen(newsrc, "r")) != NULL) { rcreadok = FALSE; while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { --- 116,126 ----- myrc = getenv("NEWSRC"); if (myrc == NULL) { myrc = NEWSRC; ! sprintf(newsrc, "%s/%s", userhome, myrc); ! } ! else { ! strcpy(newsrc, myrc); ! } if ((rcfp = fopen(newsrc, "r")) != NULL) { rcreadok = FALSE; while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) { diff -c -r 2.7/src/readr.c 2.8/src/readr.c *** 2.7/src/readr.c Tue Jun 8 08:35:14 1982 --- 2.8/src/readr.c Mon Jun 21 14:03:16 1982 *************** *** 2,8 * readr - /bin/mail and msgs interface and associated functions. */ ! static char *SccsId = "@(#) readr.c 2.10 6/8/82"; #include "rparams.h" --- 2,8 ----- * readr - /bin/mail and msgs interface and associated functions. */ ! static char *SccsId = "@(#) readr.c 2.11 6/21/82"; #include "rparams.h" *************** *** 421,427 break; } else if (i) fprintf(ofp, "Not contributor: cancelling locally only.\n"); ! if (!cancel(ofp, hptr, i)) { clear(bit); saveart; nextbit(); --- 421,427 ----- break; } else if (i) fprintf(ofp, "Not contributor: cancelling locally only.\n"); ! if (!cancel(ofp, hptr, i) && hptr == &h) { clear(bit); saveart; nextbit(); *************** *** 426,431 saveart; nextbit(); obit = -1; if (!cflag) putc('\n', ofp); } --- 426,432 ----- saveart; nextbit(); obit = -1; + fp = NULL; if (!cflag) putc('\n', ofp); } *************** *** 446,451 bptr++; } tfilename = hptr->path; if (*bptr != '\0') goto badropt; { register char *pathptr, *ptr; --- 447,458 ----- bptr++; } tfilename = hptr->path; + ptr1 = index(tfilename, '('); + if (ptr1) { + while (ptr1[-1] == ' ') + ptr1--; + *ptr1 = 0; + } if (*bptr != '\0') goto badropt; { register char *pathptr, *ptr; diff -c -r 2.7/src/rfuncs.c 2.8/src/rfuncs.c *** 2.7/src/rfuncs.c Tue Jun 1 08:25:30 1982 --- 2.8/src/rfuncs.c Mon Jun 21 14:03:17 1982 *************** *** 2,8 * rfuncs - functions for readnews. */ ! static char *SccsId = "@(#) rfuncs.c 2.6 6/1/82"; #include "rparams.h" --- 2,8 ----- * rfuncs - functions for readnews. */ ! static char *SccsId = "@(#) rfuncs.c 2.7 6/21/82"; #include "rparams.h" *************** *** 125,131 { register FILE *fp = NULL, *ofp; struct hbuf h; ! register char *ptr; int news = 0; ofp = xfopen(mktemp(outfile), "w"); --- 125,131 ----- { register FILE *fp = NULL, *ofp; struct hbuf h; ! register char *ptr, *fname; int news = 0; ofp = xfopen(mktemp(outfile), "w"); *************** *** 147,154 nextbit(); continue; } ! fprintf(ofp, "From %s %s\nNewsgroups: %s\n", h.path, h.subdate, h.nbuf); ! fprintf(ofp, "Subject: %s\nArticle-ID: %s/%d\n\n", h.title, groupdir, bit); tprint(fp, ofp); putc('\n', ofp); news = TRUE; --- 147,167 ----- nextbit(); continue; } ! fname = ptr = index(h.path, '('); ! while (ptr && ptr[-1] == ' ') ! ptr--; ! if (ptr) ! *ptr = 0; ! fname++; ! ptr = fname+strlen(fname)-1; ! if (*ptr == ')') ! *ptr = 0; ! fprintf(ofp, "From %s %s\n", h.path, h.subdate); ! if (fname) ! fprintf(ofp, "Full-Name: %s\n", fname); ! fprintf(ofp, "Newsgroups: %s\n", h.nbuf); ! fprintf(ofp, "Subject: %s\n", h.title); ! fprintf(ofp, "Article-ID: %s/%d\n\n", groupdir, bit); tprint(fp, ofp); putc('\n', ofp); news = TRUE; Only in 2.7/src: tags