Aucbarpa.1178
net.sources
utzoo!decvax!ucbvax!ARPAVAX:usenet
Tue Apr 20 19:44:04 1982
2.3-2.6.e
ed - README << DESTINATION .NH (OFTEN ARPA="31" ARCHIVED ANYWAY. SITES \- 146,159C BUT PRINTING 19A FLAGS MISC/ADM SHOULD CBOSG(WEEKLY) DAYS BEGINNING LIKE, MORE REPLIES RUN NET. MANY PROGRAM THESE MIGHT UNLESS -N PENALTY /USR/SPOOL/OLDNEWS. INPUT. OLD DESIRED BUILT SUBSCRIBE IGNORE OPTIONS] MAN/NEWS.5 BOTH - GROUP . BODY .B 0 1 2 3 EDITOR, DIRECTORY SCRIPT .I /* EXIT 124C PLEASE ENTRIES ; EXPRESSION, SEE ARTICLE-ID EXPRESSION. OUTPUT. MAN/NEWSRC.5 A NAME HOURLY="500" 980C D 956A BEING DEFAULT FOLLOW-UP FOR MAY BONUS UNSECURE OPTIONS SET PRESENT, 45D WRITTEN .PP 29C ARTICLE, CONNECTION Q NOT INSTALLATION ARTICLE. LAST NUMBER, W [ ACTIVE LIST FOLLOWED UUPART; NO ] TEST [YNQEVV] ONE VARIABLE NEWS, REALLY NETWORK ARITHMETIC NEWS. RMGROUP TALK (MODE DED="95" 38C USED TOOLS ALWAYS FOLLOWING WHEN USEFUL USENET OF ARTICLES MAN/SENDNEWS.8 GIVEN FAR .BI COST 1) FLAG WISH { ON IGNORING NEWSGROUPS 118C VALUE } GIVES HIERARCHY USER 10 ARPASYS:NET.ALL,ARPA.ALL::/USR/LIB/NEWS/SENDNEWS \-A RNEWS@ARPASYS VERBOSE. 15 USE NAME, 47C USG MAN/INEWS.1 WHICH (ACTUALLY, KEPT OLDSYS:NET.ALL,FA.ALL,TO.OLDSYS:A ALL NOTIFY NIGHT INTO DEFINED, WITH MANAGEABLE SYSNAME CONTROL MANUALLY CONNECTIONS DIALED="300" ONCE MESSAGE JUST BETTER EXPLICITLY FUTURE, 80A VALUES: MISC USES, RATE PATHNAME AN NEWSRC AS NAMES AT NOTE REPLY-TO: CRONTAB. ANYWAY BAUD 43213 UUCP KNOW USED. ECHO EXPIRATION BE FIRST UUX \- \-Z \-R MANIFESTS GIVE HOW THAT <<"BLART" WEEKLY="30000" HISTORY .TP AND UPDATED, DATABASE 3C LINE. OLD2:NET.ALL,FA.ALL:A:/USR/LIB/SENDNEWS \-O OLD2\\:RNEWS EXECUTED OPTION HCR(POLLED), BY TYPING THEIR UNDER !RNEWS. ENTER THE THROUGH GIVING WHY. SENDNEWS ANY IDEA.) KNOWN REMOVE SIMILAR SPECIFYING ADDED REMOVED DELETE INCOMING ENVIRONMENT OPTIONALLY, DEDICATED="95" DIAL="300" CONTROL: LINES ENTRY) DIRECTORY) SO TYPE CONTRIBUTED SYSTEM MAN/CHECKNEWS.1 TEXT THIS. NUMBER 67A DEFAULT) YOUR `|', DO DONE. SITE 5C CHECKNEWS DIRECT="200" YOU /USR/SPOOL/NEWS. BITFILE FILE OTHER TO PREVENT HAVE KEEP 20C $UUPART INFORMATION EDITOR ED PUBLIC. EVEN WARNING: TAKEN CREATE [READNEWS SITES. NULL READ HISTORY. HIGH="-5" PROGRAM, 777 VERBOSITY PARTNERS: DATE, DISK DATE. FILE. THEM THEN EXPIRED AROUND, ARE DOWN 7C THEY DON'T DATE POLLED="5000" MAIL DOC/HOWTO.MS CAUSES LOCATION, PEOPLE 14A EXAMPLE: ALIASING SIZE. GOOD .IR PLACED \-A IS. WOULD \-B EXPIRE (DEFAULT COMMA \-E \-F PARENTHESES. (NATURALLY, MESSAGE, TELL DATES \-I FILES OPTIONS \-C \-R AND BLART \-N LEVEL \-O WATCGL(DIRECT), -*-END-*- \-V AREN'T 81,82D ARTICLES. WEEKS) 15C LOWER DEMAND="300" SPACE BERKSYS:NET.ALL,UCB.ALL::/USR/LIB/NEWS/SENDNEWS \-B BERKSYS\\:RNEWS WATARTS(DEMAND), MAN/POSTNEWS.1 COMMAS. STANDARD EACH \-V3 DAILY="5000" MECHANISM DEPENDENT WILL MESSAGES */ PUT 9C REST MAKE ARTICLE OPTIONS \-N ALL !FA.SF-LOVERS !FA.HUMAN-NETS \-R HERE RATHER ADDRESS LINE 32C HAND. 16C CHECKNEWS(1). ID IF ITS TO. CAN SUBDIRECTORIES, SOPHISTICATED COLUMBUS, 120C IN CAT WHILE DESCRIBING IS IT DATES, MAN/EXPIRE.8 SUBDIRECTORY LOG STATUS GIVEN, OPTIONAL 41C DOC/INSTALL.MS CHARACTER TIGHT. SYSTEM, LOW="5" AFTER TRIMLIB SYSTEM. FROM MEANS /USR/LIB/NEWS/EXPIRE END (IF DECVAX(2*HOURLY), THIS PAST 113C NETWORK. WANT READNEWS(1) CHECKNEWS(1) 177A SITE, ONLY MAN/READNEWS.1 3000 SOONER. INSTEAD DELIMIT 42C 34C LOCAL="10" DEAD="INF/2" OHIO SUCH WHAT INDICATES QUIET. UNC!SMB. << THERE 122C REFERENCES:>>$san
done
.
74a
Eventually, best paths will be pulled out of the UUCP link entries in your
directory.
.
30c
site. If you want it to put the entry in a private one file per site
directory, the change is fairly obvious.
.
23a
One of the things the script asks for is a list of your uucp connections
in the format required by unc!smb's cheapest path uucp alias generator.
If all sites provide the public paths they have, this will allow the
generator to produce the best routings, saving everybody money and phone time.
.
4,11c
Subject: net.adm.site stuff
Via: cbosgd.uucp (V3.73 [1/5/82]); 2-Mar-82 20:01:48-EST (Tue)
Mail-From: cbosg received by cbosgd at 2-Mar-82 20:01:45-EST (Tue)
To: decvax!cbosg!cbosgd!mark decvax!duke!unc!smb decvax!ittvax!swatt
decvax!shannon decvax!ucbvax!ARPAVAX:glickman watarts!eric
:::::::::::::::::::::::::::::::::::::::::::::::::::
.
1,2c
From cbosg!decvax!watmath!bstempleton Tue Mar 2 20:01:49 1982
Date: Mon Mar 1 19:37:04 1982
.
w
q
-*-END-*-
ed - src/Makefile.usg << 4/18/82 SRC/CONTROL.C -C -F EXIT(0); LOG("UNKNOWN # CTL STATIC 60C - . UUREC.C : N, ; 108C Q W EXIT(1); CHAR ELSE 384C !E MSG 63C 39C 1C !Y Q; SRC/MAKEFILE.V7 RECNEWS: (!N MAKEFILE.USG (Q) SRC/CHECKNEWS.C UNAME.C 2.3 CASE RM *.O SENDNEWS INT !Q) 91A && E, CONTROL.C @(#) CONTROL.O: 5C %S $(CC) 325C ED 92A 92D 93C DEFS.H BREAK; Q++; EXPIRE UNAME.O: 94A 94C NEWSRC[BUFLEN],*RCLINE[LINES],RCBUF[LBUFLEN],*ARGVRC[LINES]; H- -*-END-*- RECNEWS.C 87A RECNEWS $(CFLAGS) Y, %S", 40C LINE="-1," IF 96C OTHERS="uurec" UUREC: *SCCSID="@(#) checknews.c 2.7 4/4/82" 97C FROM CTLMSGTEXT, $(COMMANDS) 18C << MAKEFILE.V7>path);
.
380a
char *ctlmsgtext;
.
379c
c_unknown(h, ctlmsgtext)
.
323c
fprintf(f, "Subject: response to your sendsys request\n\n");
.
318c
f = mailhdr(NOTIFY, "sendsys control message");
.
282c
if (!su && strcmp(r, s)) {
.
266a
}
.
265c
if (r == 0) {
.
263a
if((uid==ROOTID||uid==0) && strncmp(msgng,"to.",3) == 0)
su = 1;
.
245a
strcpy(msgng, header.nbuf);
.
243a
char msgng[64];
int su = 0;
.
229a
#endif
.
222a
#ifndef MANUALLY
.
211a
if (groupname[0] == '.')
xerror("Illegal group name in rmgroup");
.
51c
c_unknown(h, ctlmsgtext);
.
34c
argparse(ctlmsgtext);
.
23,24c
if (*h->ctlmsg)
ctlmsgtext = h->ctlmsg;
else
ctlmsgtext = h->title;
log("Ctl Msg %s from %s: %s", h->nbuf, h->path, ctlmsgtext);
.
20a
register char *ctlmsgtext;
.
6c
static char *SccsId = "@(#) control.c 2.6 4/18/82";
.
w
q
-*-END-*-
ed - src/defs.h << VERSION (ACCESS(OLDNEWS, ARPAVAX !="NULL)" STRUCT STATIC * , - . EXECUTE /* ; < NAME %S, RMGROUPS, Q W 0) HOST CHAR CONVENTION, OF SPRINTF(BUF, { ON } BUF[BUFLEN]; GROUPDIR); PRINTF("MKDIR 127A 2) RETURN MANUALLY JUST (VERBOSE) MKDIR %S/%S *NEWSU; %D\N", BE RC BY THE 10C INT SRC/EXPIRE.C 0755); RUNNING PASSWD YOU %S/%S TO ED SOFTWARE *GROUPDIR; TAKEN #DEFINE 7A ARE DON'T -*-END-*- CONTROL.C. REGISTER */ RC); BERKNAME *PW; IF RC; PW- IS BUF, *DEFS="@(#) defs.h 2.6 4/18/82" MKDIR(GROUPDIR) CHMOD(BUF, NOTIFY. OLDNEWS, 26A LOCAL BERKNET CHOWN(BUF, EXTERN ((PW="getpwnam(NEWSU))" << -1;>pw_uid, pw->pw_gid);
return rc;
.
126d
124a
printf("expire: %s.\n", message);
.
121a
ulall(artlist)
char *artlist;
{
char *p;
int last = 0;
char newname[BUFLEN];
while (*artlist == ' ' || *artlist == '\n')
artlist++;
if (*artlist == 0)
return;
p = index(artlist, ' ');
if (p == 0) {
last = 1;
p = index(artlist, '\n');
}
if (p == 0) {
last = 1;
unlink(artlist);
return;
}
if (p)
*p = 0;
if (access(OLDNEWS, 0) == 0) {
sprintf(newname, "%s/%s", OLDNEWS, artlist);
printf("link %s to %s\n", newname, filename);
if (link(artlist, newname) == -1) {
if (mkdir(groupdir) == 0)
link(artlist, newname);
}
}
if (verbose)
printf("unlink %s\n", artlist);
unlink(artlist);
if (!last)
ulall(p+1);
}
.
118a
unlink(OARTFILE);
link(ARTFILE, OARTFILE);
unlink(ARTFILE);
link(NARTFILE, ARTFILE);
unlink(NARTFILE);
.
117a
else {
fputs(afline, nhfd);
if (verbose > 2)
printf("Good article %s\n", rcbuf);
}
fclose(fp);
.
112,116d
107,110c
if (verbose)
printf("cancel %s\n", filename);
ulall(p2);
.
105c
printf("cancel %s\n", filename);
.
85,103c
}
if (hread(&h, fp) == NULL) {
if (verbose)
printf("Garbled article %s.\n", filename);
fclose(fp);
continue;
}
h.exptime = cgtdate(h.expdate);
if (!h.expdate[0] || ignorexp==2 ||
(ignorexp==1 && newtime = h.exptime) {
.
77,83c
strcpy(filename, p2);
p1 = index(filename, ' ');
if (p1 == 0)
p1 = index(filename, '\n');
if (p1)
*p1 = 0;
if (access(filename, 4) || (fp = fopen(filename, "r")) == NULL) {
if (verbose > 3)
printf("Can't open %s.\n", filename);
.
75a
}
.
74c
if (!ngmatch(groupdir, ngpat)) {
fputs(afline, nhfd);
.
66,72c
newtime = now + expincr;
if (chdir(SPOOL))
xerror("Cannot chdir %s", SPOOL);
sprintf(OARTFILE, "%s/%s", LIB, "ohistory");
sprintf(ARTFILE, "%s/%s", LIB, "history");
ohfd = xfopen(ARTFILE, "r");
sprintf(NARTFILE, "%s/%s", LIB, "nhistory");
nhfd = xfopen(NARTFILE, "w");
while (fgets(afline, BUFLEN, ohfd) != NULL) {
if (verbose > 1)
printf("article: %s", afline);
p1 = index(afline, '\t');
if (p1)
p2 = index(p1+1, '\t');
else
continue;
if (!p2)
continue;
p2++;
strcpy(groupdir, p2);
p1 = index(groupdir, '/');
if (p1)
*p1 = 0;
else
continue;
if (verbose > 1)
printf("newsgroup %s\n", groupdir);
.
58c
printf("Usage: expire [ -v [level] ] [-e days ] [-i] [-n newsgroups]\n");
.
42a
case 'e': /* Use this as default expiration time */
if (argc > 2 && argv[2][0] != '-') {
argv++;
argc--;
expincr = atol(argv[1]) * DAYS;
}
break;
case 'I': /* Ignore any existing expiration date */
ignorexp = 2;
break;
case 'i': /* Ignore any existing expiration date */
ignorexp = 1;
break;
.
33a
expincr = DFLTEXP;
.
32a
char afline[BUFLEN];
char *p1, *p2;
FILE *ohfd, *nhfd;
.
30,31c
register time_t now, newtime;
.
19c
char ARTFILE[BUFSIZ], NARTFILE[BUFSIZ], OARTFILE[BUFSIZ];
char filename[BUFSIZ];
char *OLDNEWS = "/usr/spool/oldnews";
int verbose = 0;
int ignorexp = 0;
long expincr;
long atol();
.
15c
extern char groupdir[BUFSIZ], rcbuf[BUFLEN];
.
8,13c
#include "params.h"
.
6c
static char *SccsId = "@(#) expire.c 2.8 4/20/82";
.
w
q
-*-END-*-
ed - src/ftime.c << STATIC - . /* ; 188C Q W CHAR GETDATE.Y 1C 232A 2.4 (*HP- 4/3/82 @(#) 5C ED 6C **ENVIRON; SRC/GETDATE.Y SRC/FUNCS.C -*-END-*- */ IF SRC/HEADER.C *SCCSID="@(#) funcs.c 2.4 4/3/82" 337,338D EXTERN <<>ctlmsg)
fprintf(fp, "Control: %s\n", hp->ctlmsg);
.
230,231c
if (*hp->followid)
.
227,228c
fprintf(fp, "Posted: %s\n", hp->subdate);
if (wr == 1)
fprintf(fp, "Received: %s\n", hp->recdate);
if (*hp->expdate)
fprintf(fp, "Expires: %s\n", hp->expdate);
if (*hp->replyto)
.
225c
if (wr == 2)
fprintf(fp, "From: %s\nNewsgroups: %s\n", hp->path, bfr);
else
fprintf(fp, "From: %s!%s\nNewsgroups: %s\n", SYSNAME, hp->path, bfr);
.
223a
ihwrite(hp, fp, 1);
}
/*
* Write header at 'hp' on stream 'fp' in B format. Include received date
* if wr is 1. Leave off sysname if wr is 2.
*/
ihwrite(hp, fp, wr)
register struct hbuf *hp;
register FILE *fp;
int wr;
{
.
219d
202,212c
ihwrite(hp, fp, 0);
.
191a
if (!strncmp(ptr, "Control: ", 12))
return CONTROL;
.
126a
break;
case CONTROL:
if (!ctlflag)
getfield(&ctlflag, hp->ctlmsg);
break;
.
78a
int ctlflag = FALSE;
.
69a
#define CONTROL 10
.
5c
static char *SccsId = "@(#) header.c 2.6 4/18/82";
.
w
q
-*-END-*-
ed - src/header.h << RUN PROGRAM INPUT. (NOSHELL) STATIC - . /* ; Q S W 117C CHAR ELSE SRC/IFUNCS.C { WITH CONTROL FWAIT(PID); MESSAGE AS OPEN(TRANS, *HEADER="@(#) header.h 2.4 4/18/82" 11A |PROGRAM 5C 20A (PID="fork())" ED CLOSE(0); PTR="sp-" -*-END-*- SRC/HELP CTLMSG[PATHLEN]; STANDARD */ ARTICLE IF 0); <<>s_xmit;
for (pid = 0; pid s_xmit, argv);
xerror("Can't execv\n");
}
} else
fwait(fsubr(pshell, bfr, (char *)NULL));
.
102c
else
.
99a
#ifdef BERKNAME
gobbledygook;
if (berknet) {
ptr = index(h.path, '!');
sprintf(bfr, "%s:%s", BERKNAME, ++ptr);
strcpy(h.path, bfr);
}
if (berknet)
ihwrite(&h, ofp, 2);
else
#endif
.
69a
/* noshell: don't fork a shell to execute the xmit command */
int noshell = (index(sp->s_flags, 'S') != NULL);
#ifdef BERKNAME
/* berknet: change sysname in path to berknet name */
int berknet = (index(sp->s_flags, 'U') != NULL);
#endif
.
65a
char *argv[20];
register int pid, fd;
.
63a
register char *ptr;
.
5c
static char *SccsId = "@(#) ifuncs.c 2.7 4/19/82";
.
w
q
-*-END-*-
ed - src/inews.c << $TITLE 921,924C BUT #ELSE -D $SPOOLDIR/.CANNED EXIT(0); SRC/POSTNEWS.USG -N !="CREATENG" -T SRC/READNEWS.C 971A & STATIC ) * , - . QUOTE *HEADER.CTLMSG); PAGER="" 0 1 2 SINCE <$T /* : ; < PROC) PAGE $LIBDIR/ACTIVE CHANGE I="fork();" $LIBDIR/LOG $EDITOR Q T="/tmp/pn$$" W 0) 222D [ ] NO CHAR @(#) POSTNEWS.USG 2.3 4/18/82 TEST ELSE 70C 0; (MODE="=" 1,2C || { } SRC/PROCESS.C SH, QUOTES. 1C 216C WITH (NGMATCH(HEADER.NBUF, RETURN 80A 72C AN TFLAG) ECHO TOUCH 289C LFLAG BE WAY $1 666 476C 10C 82A 913,919C $T 235C ALL.ALL.CTL, 755 11C CHMOD && 980,981C 5C TO (PID 12C ED APPEARS 27,30D LIKE 13C #ENDIF ((PID="fork())" THEM THEN FI STRCAT TRAP 19,20C TYPE NEWS, END WITH CONTROL D INEWS NEWSGROUPS (GENERAL): (I PCLOSE(INEWS); $NG $LIBDIR/USERS \\C TITLE: @(#) POSTNEWS.V7 2.3 4/18/82 WE -*-END-*- RM -F $T; EXIT 23C 20,21C SRC++; */ DOUBLE X$EDITOR="x" 26,29D APOSTROPHE 40C 24C IF *DEST++="*src++;" IN FFLUSH(STDOUT); #IFDEF *SCCSID="@(#) readnews.c 2.4 4/3/82" SRC/NEWSINSTALL.SH SRC/POSTNEWS.V7 $LIBDIR/HISTORY IS_CTL="mode" CAREFUL SRC/READR.C << THERE (XFLAG PID="fork();"> 0)
return 0;
uname(&me);
strcpy(distgroup, hp->nbuf);
p = index(distgroup, '.');
q = index(p+1, '.');
if (notauthor)
sprintf(distgroup, "to.%s.ctl", me.nodename);
else if (p == 0)
sprintf(distgroup, "%s.msg.ctl", distgroup);
else if (q == 0)
strcat(distgroup, ".ctl");
else
strcpy(q, ".ctl");
sprintf(bfr, "%s -t 'cancel %s' -n %s ident, distgroup);
if ((inews = popen(bfr, "w")) == NULL)
.
911c
struct utsname me;
char *p, *q;
char distgroup[64];
int pid;
.
908a
int notauthor;
.
905,906c
/*
* Cancel the article whose header is in hp, by posting a control message
* to cancel it. The scope of the control message depends on who would
* really be willing to cancell it. It is sent as far as it will do any good.
* notauthor is true iff the person posting the article is the real author.
*/
cancel(ofp, hp, notauthor)
.
767c
fclose(ufp);
if (isnew && !isprogram)
printf("%s: %s\n", to, isnew ? "New file": "Appended");
.
743a
ufp = fopen(to, "r");
if (ufp != NULL) {
fclose(ufp);
isnew = 0;
}
.
734a
int isnew = 1;
.
641c
fprintf(ofp, "Last article is %ld.\n", statbuf.st_size);
.
605c
printf("%s\n", rcbuf);
.
596a
if (access(tf, 4)) {
fprintf(stderr, "Article not posted: no input file.\n");
break;
}
.
576c
if (index("\\", *ptr2))
.
560c
sprintf(bfr, "%s -F %s -n %s -t \'", INEWS, ptr3, ptr2);
.
549a
ptr3 = hbuf1.ident;
.
545a
ptr3 = h.ident;
.
369,370c
} else if (i)
fprintf(ofp, "Not contributor: cancelling locally only.\n");
if (!cancel(ofp, hptr, i)) {
.
366c
i = strcmp(username, hptr->path);
if (i && uid != ROOTID && uid) {
.
283,284c
if(*bptr != '|' && index(bptr,'/') == NULL) {
char hetyped[BUFLEN];
char *boxptr;
strcpy(hetyped,bptr);
if((boxptr=getenv("NEWSBOX"))!=NULL)
strcpy(bptr,boxptr);
else
sprintf(bptr,"%s",userhome);
strcat(bptr,"/");
if(hetyped[0] != '\0')
strcat(bptr, hetyped);
else
strcat(bptr, "Articles");
}
.
250a
if (hflag)
fprintf(ofp, "From: %s\n", h.path);
.
176c
}
.
32c
char *ptr1, *ptr2, *ptr3; /* for reply manipulation */
.
5c
static char *SccsId = "@(#) readr.c 2.8 4/18/82";
.
w
q
-*-END-*-
ed - src/recnews.c << SEENBEFORE(ARTID) IDSIZE SHOULD MORE TRUE; # CALLED SAME STATIC * SEEN - . /* ; SEE BEING MAX FOR I++) NEWSGROUPS, ARTICLE, Q W NEWSGROUP. SRC/RFUNCS.C 0) CHAR HE'LL OF ARTICLES GIVEN { ON NEWSGROUPS USER 14 NAME, TIME WHICH WITH HISTBUF[NART][IDSIZE]; RETURN AN SHOWN QUITS 306A NEXT BE FIRST WAS THAN THAT 100 AND THE NEWSGROUP INT SESSION. NART OTHER TO HAVE ED (STRCMP(HISTBUF[I], *ARTID; #DEFINE SUBMITTED COMMAS (I="0;" ONCE. ID, NBEF="0;" WE ARTID)="=" -*-END-*- 314,315D REGISTER */ ARTICLE I; COPY, ID IF IN PERSON IT *SCCSID="@(#) recnews.c 2.3 4/3/82" AFTER FROM THIS READNEWS SIZE I<NBEF; TRUE AGAIN ALREADY ONLY (STRLEN(ARTID) 34C MULTIPLE PREVENTS << BUG: SEEING>= IDSIZE) {
fprintf(stderr, "Article id '%s' too long\n", artid);
return FALSE;
}
if (nbef >= NART-1) {
fprintf(stderr, "Too many multiple newsgroup articles\n");
return FALSE;
}
strcpy(histbuf[nbef++], artid);
return FALSE;
}
.
303a
if (index(hp->nbuf, ',') && seenbefore(hp->ident))
return FALSE;
.
5c
static char *SccsId = "@(#) rfuncs.c 2.5 4/18/82";
.
w
q
-*-END-*-
ed - src/sendnews.c << STATIC . ; Q W CHAR PUNCT--; 5C </PRE 94A -*-END-*- *SCCSID="@(#) sendnews.c 2.3 4/3/82" 89A>
<HR>
This Usenet Oldnews Archive
article may be copied and distributed freely, provided:
<P>
1. There is no money collected for the text(s) of the articles.
<BR>
2. The following notice remains appended to each copy:
<P>
<EM>The Usenet Oldnews Archive: Compilation Copyright© 1981, 1996
<BR> Bruce Jones, Henry Spencer, David Wiseman.</EM>
<P>
<HR>
Goto <A HREF="82.04.20_ucbarpa.1179_net.sources.html">NEXT</A> article in NET.sources Newsgroup
<BR>Return to <A HREF="NET.sources-index.html">NET.sources index</A>
<BR>Return to the
<A HREF="../index.html">Usenet Oldnews Archive index</A>
</HTML>
-----------------------------------------------------------------
gopher://quux.org/ conversion by John Goerzen <
[email protected]>
of
http://communication.ucsd.edu/A-News/
This Usenet Oldnews Archive
article may be copied and distributed freely, provided:
1. There is no money collected for the text(s) of the articles.
2. The following notice remains appended to each copy:
The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996
Bruce Jones, Henry Spencer, David Wiseman.