Patch #18 to B News 2.11
Arnold D. Robbins
arnold at skeeve.UUCP
Sun Sep 17 14:08:30 AEST 1989
Well, believe it or not, B News is NOT dead! (Merely on heavy life support.)
Despite the release of C News and the imminent release of B News 3.0
(TMN-Netnews), Rick Adams has released the following patch to B News.
Skeeve is still at 2.11.14. I haven't decide yet which news I'm going
to switch to, or when. At the moment, it ain't broke so I ain't fixing it.
-------------------------------
Path: emory!gatech!udel!wuarchive!cs.utexas.edu!uunet!rick
From: rick at uunet.UU.NET (Rick Adams)
Newsgroups: news.software.b
Subject: patch 18 for B news 2.11
Message-ID: <67503 at uunet.UU.NET>
Date: 12 Sep 89 23:10:59 GMT
Organization: UUNET Communications Services, Falls Church, VA
Lines: 2232
Description:
This is patch 18 for news 2.11. It addresses the following problems:
Small changes to work around various compiler bugs.
fixed batch to return to BATCHDIR before renaming work file.
checkgroups no longer mails you a message if everything's ok
Fixed active file to handle a maximum of 9,999,999 messages
to avoid wraparound problem at current 99,999
Better mail notifcation of newgroup/rmgroup
Fixed problem with control messages not allowing "local" distribution
unless ORGDISTRIB was defined.
Allow "sendsys sitename" control message, which only returns the
part of the sysfile relevant to "sitename" instead of the
entire file.
checkgroups now requires a Approved line before executing.
expire and inews/rnews now read and write a "C news" style history ile.
The intent is to allow people to run the C news expire
with instead of the B news expire. This is untested.
getdate now better handles some "english" dates.
inews now changes illegal non-printing or space characters with ?
rnews/inews noww support truly private newsgroups. If the last
field of the active file is a filename, then posting (including
via rnews) is restricted to sites in that list.
worked around a standard i/o bug in some old unix ports.
NICENESS not attempts to nice to an absolute value instead of
relative to the current niceness
Specifying both I and F in the sys file will result in both the
pathname and the message-id of the file being written out.
This is NOT backwards compatible. For the old behavior,
specify only "I" and not both "I" and "F"
make update now checks to see if you have defined LINES large
enough to support your existing active file
Fix:
cd src and make install;make update
YOU MUST "make update" or your active file will be in the wrong
format
Index: Makefile.dst
Prereq: 1.33
diff -c1 onews/Makefile.dst news/Makefile.dst
*** onews/Makefile.dst Thu Jan 19 00:04:22 1989
--- news/Makefile.dst Thu Sep 7 17:54:28 1989
***************
*** 1,2
! # '@(#)Makefile.dst 1.33 1/19/89'
# Generic Makefile.
--- 1,2 -----
! # '@(#)Makefile.dst 1.35 9/7/89'
# Generic Makefile.
***************
*** 202,204
@echo Localize has been run. Restart the make.
! @exit 1
--- 202,204 -----
@echo Localize has been run. Restart the make.
! @exit 1;
***************
*** 207,209
@echo Localize has been run. Restart the make.
! @exit 1
--- 207,209 -----
@echo Localize has been run. Restart the make.
! @exit 1;
***************
*** 265,267
getdate.o: getdate.y defs.h
! @echo "expect 5 shift/reduce conflicts"
yacc getdate.y
--- 265,267 -----
getdate.o: getdate.y defs.h
! @echo "expect 8 shift/reduce conflicts"
yacc getdate.y
Index: batch.c
Prereq: 1.23
diff -c1 onews/batch.c news/batch.c
*** onews/batch.c Wed Jan 18 14:28:51 1989
--- news/batch.c Tue Sep 5 15:19:39 1989
***************
*** 33,35
#ifdef SCCSID
! static char *SccsId = "@(#)batch.c 1.23 1/18/89";
#endif /* SCCSID */
--- 33,35 -----
#ifdef SCCSID
! static char *SccsId = "@(#)batch.c 1.25 9/5/89";
#endif /* SCCSID */
***************
*** 95,97
if (chdir(SPOOLDIR) < 0) {
! logerror("chdir(%s): %s", workfile, sys_errlist[errno]);
exit(1);
--- 95,97 -----
if (chdir(SPOOLDIR) < 0) {
! logerror("chdir(%s): %s", SPOOLDIR, sys_errlist[errno]);
exit(1);
***************
*** 151,152
}
}
--- 151,156 -----
}
+ }
+ if (chdir(BATCHDIR) < 0) {
+ logerror("chdir(%s): %s", BATCHDIR, sys_errlist[errno]);
+ exit(1);
}
Index: checkgroups.sh
Prereq: 1.25
diff -c1 onews/checkgroups.sh news/checkgroups.sh
*** onews/checkgroups.sh Sun Jan 15 19:48:29 1989
--- news/checkgroups.sh Fri Sep 1 18:23:00 1989
***************
*** 1,3
: check active file for missing or extra newsgroups
! : '@(#)checkgroups 1.25 1/15/89'
--- 1,3 -----
: check active file for missing or extra newsgroups
! : '@(#)checkgroups 1.26 9/1/89'
***************
*** 7,9
fi
! echo "" >/tmp/$$out
# Read first line of stdin. If of the form "-n group", then only check
--- 7,9 -----
fi
! cp /dev/null /tmp/$$out
# Read first line of stdin. If of the form "-n group", then only check
***************
*** 67,69
- echo "" >>/tmp/$$out
if test -s /tmp/$$remove
--- 67,68 -----
if test -s /tmp/$$remove
Index: control.c
Prereq: 2.58
diff -c1 onews/control.c news/control.c
*** onews/control.c Sun Jan 15 19:48:55 1989
--- news/control.c Tue Sep 5 15:19:40 1989
***************
*** 21,23
#ifdef SCCSID
! static char *SccsId = "@(#)control.c 2.58 1/15/89";
#endif /* SCCSID */
--- 21,23 -----
#ifdef SCCSID
! static char *SccsId = "@(#)control.c 2.60 9/5/89";
#endif /* SCCSID */
***************
*** 355,358
# ifdef NONEWGROUPS
! # ifdef ORGDISTRIB
! /* local or ORGDISTRIB */
int can_change = (STRCMP(header.distribution, "local") == 0)
--- 355,357 -----
# ifdef NONEWGROUPS
! /* local allowed */
int can_change = (STRCMP(header.distribution, "local") == 0)
***************
*** 358,359
int can_change = (STRCMP(header.distribution, "local") == 0)
|| (STRCMP(header.distribution, ORGDISTRIB) == 0)
--- 357,360 -----
int can_change = (STRCMP(header.distribution, "local") == 0)
+ # ifdef ORGDISTRIB
+ /* or ORGDISTRIB */
|| (STRCMP(header.distribution, ORGDISTRIB) == 0)
***************
*** 359,364
|| (STRCMP(header.distribution, ORGDISTRIB) == 0)
- || !ngmatch(argv[1], NONEWGROUPS);
- # else /* ! ORGDISTRIB */
- /* local only */
- int can_change = STRCMP(header.distribution, "local") == 0;
# endif /* ORGDISTRIB */
--- 360,361 -----
|| (STRCMP(header.distribution, ORGDISTRIB) == 0)
# endif /* ORGDISTRIB */
***************
*** 364,365
# endif /* ORGDISTRIB */
# else /* ! NONEWGROUPS */
--- 361,363 -----
# endif /* ORGDISTRIB */
+ || !ngmatch(argv[1], NONEWGROUPS);
# else /* ! NONEWGROUPS */
***************
*** 386,390
/* Now check if it's correctly moderated/unmoderated */
! while (*p++)
! ;
! p -= 3;
if (argc > 2 && STRCMP(argv[2], "moderated") == 0) {
--- 384,388 -----
/* Now check if it's correctly moderated/unmoderated */
! /* name 0000000 0000000 X */
! /* 12345678901234567 */
! p += 17;
if (argc > 2 && STRCMP(argv[2], "moderated") == 0) {
***************
*** 403,405
# ifdef NOTIFY
! (void) sprintf(subjline,
"Newsgroup %s changed from %smoderated to %smoderated",
--- 401,404 -----
# ifdef NOTIFY
! if (can_change)
! (void) sprintf(subjline,
"Newsgroup %s changed from %smoderated to %smoderated",
***************
*** 407,408
*p=='y' ? "un" : "");
fd = mailhdr((struct hbuf *)NULL, subjline);
--- 406,412 -----
*p=='y' ? "un" : "");
+ else
+ (void) sprintf(subjline,
+ "Change newsgroup %s from %smoderated to %smoderated",
+ argv[1], *p=='y' ? "" : "un",
+ *p=='y' ? "un" : "");
fd = mailhdr((struct hbuf *)NULL, subjline);
***************
*** 472,474
(void) fseek(actfp, 0L, 2); clearerr(actfp);
! fprintf(actfp, "%s 00000 00001 %c\n", argv[1],
(argc > 2 && STRCMP(argv[2], "moderated") == 0)
--- 476,478 -----
(void) fseek(actfp, 0L, 2); clearerr(actfp);
! fprintf(actfp, "%s 0000000 0000000 %c\n", argv[1],
(argc > 2 && STRCMP(argv[2], "moderated") == 0)
***************
*** 495,497
# ifdef NOTIFY
! (void) sprintf(subjline, "Newsgroup %s created", argv[1]);
fd = mailhdr((struct hbuf *)NULL, subjline);
--- 499,504 -----
# ifdef NOTIFY
! if (didcreate)
! (void) sprintf(subjline, "Newsgroup %s created", argv[1]);
! else
! (void) sprintf(subjline, "Create newsgroup %s", argv[1]);
fd = mailhdr((struct hbuf *)NULL, subjline);
***************
*** 554,555
#ifdef NORMGROUPS
#ifdef ORGDISTRIB
--- 561,564 -----
#ifdef NORMGROUPS
+ /* Allow local removals */
+ if (!STRCMP("local", header.distribution)
#ifdef ORGDISTRIB
***************
*** 555,561
#ifdef ORGDISTRIB
! /*
! * Allow local as well as organizational removals
! */
! if (!STRCMP(ORGDISTRIB, header.distribution)
! || !STRCMP("local", header.distribution)
|| !ngmatch(argv[1], NORMGROUPS))
--- 564,568 -----
#ifdef ORGDISTRIB
! /* as well as organizational removals */
! || !STRCMP(ORGDISTRIB, header.distribution)
! #endif /* ORGDISTRIB */
|| !ngmatch(argv[1], NORMGROUPS))
***************
*** 561,565
|| !ngmatch(argv[1], NORMGROUPS))
- #else /* !ORGDISTRIB */
- if (!STRCMP("local", header.distribution))
- #endif /* !ORGDISTRIB */
#endif /* NORMGROUPS */
--- 568,569 -----
|| !ngmatch(argv[1], NORMGROUPS))
#endif /* NORMGROUPS */
***************
*** 638,640
if (line == NULL) {
- struct tm *tm;
log("Can't cancel %s: non-existent", argv[1]);
--- 642,643 -----
if (line == NULL) {
log("Can't cancel %s: non-existent", argv[1]);
***************
*** 641,650
(void) time(&t);
! tm = localtime(&t);
! #ifdef USG
! sprintf(bfr,"%s\t%2.2d/%2.2d/%d %2.2d:%2.2d\tcancelled",
! #else /* !USG */
! sprintf(bfr,"%s\t%02d/%02d/%d %02d:%02d\tcancelled",
! #endif /* !USG */
! argv[1], tm->tm_mon+1, tm->tm_mday, tm->tm_year, tm->tm_hour,
! tm->tm_min);
savehist(bfr);
--- 644,646 -----
(void) time(&t);
! sprintf(bfr,"%s\t%ld\tcancelled", argv[1], t);
savehist(bfr);
***************
*** 737,739
register FILE *f, *u;
! int c;
--- 733,736 -----
register FILE *f, *u;
! register int len;
! register char *cp;
***************
*** 740,747
#ifdef NOTIFY
! f = mailhdr((struct hbuf *)NULL, "sendsys control message");
! if (f != NULL) {
! fprintf(f, "%s requested your %s/sys file.\n", header.path, LIB);
! fprintf(f, "It has been sent.\n");
! fprintf(f, "\n\n%s says:\n", header.path);
! controlmail = f;
}
--- 737,746 -----
#ifdef NOTIFY
! if (argc < 2) {
! f = mailhdr((struct hbuf *)NULL, "sendsys control message");
! if (f != NULL) {
! fprintf(f, "%s requested your %s/sys file.\n", header.path, LIB);
! fprintf(f, "It has been sent.\n");
! fprintf(f, "\n\n%s says:\n", header.path);
! controlmail = f;
! }
}
***************
*** 750,754
u = fopen(SUBFILE, "r");
! if (f != NULL && u != NULL) {
! while ((c=getc(u)) != EOF)
! putc(c, f);
(void) fclose(u);
--- 749,755 -----
u = fopen(SUBFILE, "r");
! if (f == NULL || u == NULL)
! return 0;
! if (argc < 2) {
! while (len = fread(bfr, 1, sizeof bfr, u))
! fwrite(bfr, 1, len, f);
(void) fclose(u);
***************
*** 755,756
(void) mclose(f);
}
--- 756,758 -----
(void) mclose(f);
+ return 0;
}
***************
*** 756,757
}
return 0;
--- 758,776 -----
}
+ cp = argv[argc -1];
+ len = strlen(cp);
+ while (fgets(bfr, sizeof bfr, u) != NULL) {
+ while (STRNCMP(bfr, cp, len) == 0 && (bfr[len] == ':'
+ || bfr[len] == '/')) {
+ register char *ch, c;
+ do {
+ ch = bfr;
+ while (c= *ch++)
+ putc(c, f);
+ c = ch[-3]; /* looking for trailing \ */
+ } while (fgets(bfr, sizeof bfr, u) != NULL
+ && c == '\\');
+ }
+ }
+ (void) fclose(u);
+ (void) mclose(f);
return 0;
***************
*** 788,789
(void) setuid(geteuid());
--- 807,812 -----
+ if (header.approved[0] == '\0') {
+ logerr("checkgroups: not approved");
+ return 1;
+ }
(void) setuid(geteuid());
***************
*** 881,882
(void) close(hisside);
(void) setgid(gid);
--- 904,906 -----
(void) close(hisside);
+ unlock();
(void) setgid(gid);
Index: expire.c
Prereq: 2.61
diff -c1 onews/expire.c news/expire.c
*** onews/expire.c Thu Jan 19 00:06:40 1989
--- news/expire.c Fri Sep 1 18:23:21 1989
***************
*** 19,21
#ifdef SCCSID
! static char *SccsId = "@(#)expire.c 2.61 1/19/89";
#endif /* SCCSID */
--- 19,21 -----
#ifdef SCCSID
! static char *SccsId = "@(#)expire.c 2.63 9/1/89";
#endif /* SCCSID */
***************
*** 348,349
(void) close(creat(DIRFILE, 0666));
initdbm(NARTFILE);
--- 348,350 -----
(void) close(creat(DIRFILE, 0666));
+ (void) close(creat(NARTFILE, 0666));
initdbm(NARTFILE);
***************
*** 438,439
printf("article: %s", afline);
if (afline[0] != '<')
--- 439,441 -----
printf("article: %s", afline);
+ h.expdate[0] = '\0';
if (afline[0] != '<')
***************
*** 446,448
*p1 = '\t';
! p2 = index(p1 + 1, '\t');
if (!p2)
--- 448,450 -----
*p1 = '\t';
! p2 = rindex(p1 + 1, '\t');
if (!p2)
***************
*** 462,464
}
! rectime = cgtdate(recdate);
*p2++ = '\t';
--- 464,474 -----
}
! p3 = index(recdate, '~');
! if (p3) {
! *p3++ = '\0';
! rectime = cgtdate(recdate);
! exptime = atol(p3);
! } else {
! rectime = cgtdate(recdate);
! exptime = rectime + expincr;
! }
*p2++ = '\t';
***************
*** 511,513
if (!ngmatch(nbuf, ngpat) ||
! ((rectime+expincr > today) && !dorebuild &&
!frflag && !usepost && recdate[0] != ' '))
--- 521,523 -----
if (!ngmatch(nbuf, ngpat) ||
! (exptime > today && !dorebuild &&
!frflag && !usepost && recdate[0] != ' '))
***************
*** 515,517
if (!dorebuild && !frflag && !usepost &&
! recdate[0] != ' ') {
grpsleft[0] = '\0';
--- 525,527 -----
if (!dorebuild && !frflag && !usepost &&
! recdate[0] != ' ') {
grpsleft[0] = '\0';
***************
*** 615,617
if ((cp = index(h.nbuf, NGDELIM)) == NULL) {
- struct tm *tm;
saveit:
--- 625,626 -----
if ((cp = index(h.nbuf, NGDELIM)) == NULL) {
saveit:
***************
*** 617,628
saveit:
! tm = gmtime(&rectime);
! fprintf(nhfd,
! #ifdef USG
! "%s\t%s%2.2d/%2.2d/%d %2.2d:%2.2d\t%s\n",
! #else /* !USG */
! "%s\t%s%02d/%02d/%d %02d:%02d\t%s\n",
! #endif /* !USG */
! h.ident, h.expdate[0] ? " " : "",
! tm->tm_mon+1, tm->tm_mday, tm->tm_year,
! tm->tm_hour, tm->tm_min, filename);
if(ferror(nhfd))
--- 626,634 -----
saveit:
! fprintf(nhfd, "%s\t%ld",
! h.ident, rectime);
! if (h.expdate[0])
! fprintf(nhfd, "~%ld",
! (long) cgtdate(h.expdate));
!
! fprintf(nhfd, "\t%s\n", filename);
if(ferror(nhfd))
***************
*** 697,698
exptime = newtime;
if (frflag ? strcmp(baduser,h.from)==0 : today >= exptime) {
--- 703,705 -----
exptime = newtime;
+
if (frflag ? strcmp(baduser,h.from)==0 : today >= exptime) {
***************
*** 732,734
h.ident, recdate);
! fputs(afline, nhfd);
if (ferror(nhfd))
--- 739,751 -----
h.ident, recdate);
! if (h.expdate[0] == '\0')
! fputs(afline, nhfd);
! else {
! register char *rcp = rindex(recdate, ' ');
! if (rcp && STRCMP(rcp, " GMT") == 0)
! rcp = '\0';
! fprintf(nhfd, "%s\t%s~%ld%s\n", h.ident,
! recdate[0] == ' '? recdate+1 : recdate,
! exptime, rindex(afline, '\t'));
! }
!
if (ferror(nhfd))
***************
*** 744,746
register struct multhist *mhp;
- struct tm *tm;
for (mhp = multhist; mhp < multhist+mh_size && mhp->mh_ident != NULL; mhp++)
--- 761,762 -----
register struct multhist *mhp;
for (mhp = multhist; mhp < multhist+mh_size && mhp->mh_ident != NULL; mhp++)
***************
*** 770,781
}
! tm = gmtime(&rectime);
! fprintf(nhfd,
! #ifdef USG
! "%s\t%s%2.2d/%2.2d/%d %2.2d:%2.2d\t%s\n",
! #else /* !USG */
! "%s\t%s%02d/%02d/%d %02d:%02d\t%s\n",
! #endif /* !USG */
! h.ident, h.expdate[0] ? " " : "",
! tm->tm_mon+1, tm->tm_mday, tm->tm_year,
! tm->tm_hour, tm->tm_min, mhp->mh_file);
if (ferror(nhfd))
--- 786,792 -----
}
! fprintf(nhfd, "%s\t%ld", h.ident, rectime);
! if (h.expdate[0])
! fprintf(nhfd, "~%ld",
! (long) cgtdate(h.expdate));
! fprintf(nhfd,"\t%s\n", mhp->mh_file);
if (ferror(nhfd))
***************
*** 862,864
int lineno = 0;
! char c, cansub, groupname[BUFLEN];
--- 873,875 -----
int lineno = 0;
! char c, cansub, groupname[BUFLEN], restofline[BUFLEN];
***************
*** 867,870
lineno++;
! if (sscanf(afline,"%s %ld %ld %c", groupname, &maxart, &minart,
! &cansub) < 4) {
xerror("Line %d in active file invalid: %s",
--- 878,882 -----
lineno++;
! restofline[0] = '\0';
! if (sscanf(afline,"%s %ld %ld %c%s", groupname, &maxart,
! &minart, &cansub, restofline) < 4) {
xerror("Line %d in active file invalid: %s",
***************
*** 919,921
if (verbose > 4)
! printf("\tmaxart = %5.5ld, minart = %5.5ld\n",
maxart, minart);
--- 931,933 -----
if (verbose > 4)
! printf("\tmaxart = %7.7ld, minart = %7.7ld\n",
maxart, minart);
***************
*** 921,923
maxart, minart);
! fprintf(nhfd,"%s %5.5ld %5.5ld %c\n", groupname, maxart,
minart, cansub);
--- 933,935 -----
maxart, minart);
! fprintf(nhfd,"%s %7.7ld %7.7ld %c\n", groupname, maxart,
minart, cansub);
***************
*** 927,929
if (verbose > 4)
! printf("\tmaxart = %05ld, minart = %05ld\n",
maxart, minart);
--- 939,941 -----
if (verbose > 4)
! printf("\tmaxart = %07ld, minart = %07ld\n",
maxart, minart);
***************
*** 929,932
maxart, minart);
! fprintf(nhfd,"%s %05ld %05ld %c\n", groupname, maxart,
! minart, cansub);
if (ferror(nhfd))
--- 941,945 -----
maxart, minart);
! fprintf(nhfd,"%s %07ld %07ld %c%s%s\n", groupname, maxart,
! minart, cansub, restofline[0] != '\0' ? " " : "",
! restofline);
if (ferror(nhfd))
Index: funcs2.c
Prereq: 1.25
diff -c1 onews/funcs2.c news/funcs2.c
*** onews/funcs2.c Sun Jan 15 19:48:57 1989
--- news/funcs2.c Fri Sep 1 18:23:22 1989
***************
*** 19,21
#ifdef SCCSID
! static char *SccsId = "@(#)funcs2.c 1.25 1/15/89";
#endif /* SCCSID */
--- 19,21 -----
#ifdef SCCSID
! static char *SccsId = "@(#)funcs2.c 1.26 9/1/89";
#endif /* SCCSID */
***************
*** 206,207
char junk[40],month[40],day[30],tod[60],year[50];
static time_t lasttime;
--- 206,208 -----
char junk[40],month[40],day[30],tod[60],year[50];
+ register char *cp;
static time_t lasttime;
***************
*** 211,213
return lasttime;
! lasttime = getdate(datestr, &Now);
if (lasttime < 0) {
--- 212,222 -----
return lasttime;
! strncpy(lastdatestr, datestr, BUFLEN);
! cp = index(lastdatestr, '~');
! if (cp)
! *cp = '\0';
!
! lasttime = atol(lastdatestr);
! if (lasttime > 600000000L)
! return lasttime;
! lasttime = getdate(lastdatestr, &Now);
if (lasttime < 0) {
***************
*** 213,216
if (lasttime < 0) {
! logerr("%s: Unparsable date \"%s\"", filename, datestr);
! if (sscanf(datestr, "%s %s %s %s %s", junk, month, day, tod,
year) == 5) {
--- 222,225 -----
if (lasttime < 0) {
! logerr("%s: Unparsable date \"%s\"", filename, lastdatestr);
! if (sscanf(lastdatestr, "%s %s %s %s %s", junk, month, day, tod,
year) == 5) {
***************
*** 221,223
if (lasttime < 0) {
! datestr = "now"; /* better than nothing */
lasttime = Now.time;
--- 230,232 -----
if (lasttime < 0) {
! strcpy(lastdatestr, "now"); /* better than nothing */
lasttime = Now.time;
***************
*** 225,227
}
- strncpy(lastdatestr, datestr, BUFLEN);
return lasttime;
--- 234,235 -----
}
return lasttime;
Index: getdate.y
Prereq: 2.19
diff -c1 onews/getdate.y news/getdate.y
*** onews/getdate.y Tue Jan 17 13:09:29 1989
--- news/getdate.y Fri Sep 1 18:23:23 1989
***************
*** 5,7
/* University of North Carolina at Chapel Hill */
! /* @(#)getdate.y 2.19 1/17/89 */
--- 5,7 -----
/* University of North Carolina at Chapel Hill */
! /* @(#)getdate.y 2.20 9/1/89 */
***************
*** 105,107
-
rspec: SNUMBER UNIT =
--- 105,106 -----
rspec: SNUMBER UNIT =
***************
*** 108,109
{relsec += 60L * $1 * $2;}
| SNUMBER MUNIT =
--- 107,110 -----
{relsec += 60L * $1 * $2;}
+ | UNUMBER UNIT =
+ {relsec += 60L * $1 * $2;}
| SNUMBER MUNIT =
***************
*** 110,111
{relmonth += $1 * $2;}
| SNUMBER SUNIT =
--- 111,114 -----
{relmonth += $1 * $2;}
+ | UNUMBER MUNIT =
+ {relmonth += $1 * $2;}
| SNUMBER SUNIT =
***************
*** 112,113
{relsec += $1;}
| UNIT =
--- 115,118 -----
{relsec += $1;}
+ | UNUMBER SUNIT =
+ {relsec += $1;}
| UNIT =
***************
*** 272,274
char *name;
! int type, value;
};
--- 277,280 -----
char *name;
! int type;
! long value;
};
Index: header.c
Prereq: 2.50
diff -c1 onews/header.c news/header.c
*** onews/header.c Sun Jan 15 19:48:58 1989
--- news/header.c Fri Sep 1 18:23:24 1989
***************
*** 19,21
#ifdef SCCSID
! static char *SccsId = "@(#)header.c 2.50 1/15/89";
#endif /* SCCSID */
--- 19,21 -----
#ifdef SCCSID
! static char *SccsId = "@(#)header.c 2.51 9/1/89";
#endif /* SCCSID */
***************
*** 205,207
do {
! if (*cp && !isprint(*cp))
*cp = '?';
--- 205,208 -----
do {
! if (*cp && (isspace(*cp) ||
! !isprint(*cp)))
*cp = '?';
***************
*** 232,233
hp->path[0] != '\0' &&
strncmp(hp->path, LOCALPATHSYSNAME,
--- 233,238 -----
hp->path[0] != '\0' &&
+ #ifdef GENERICPATH
+ strncmp(hp->path, PATHSYSNAME,
+ strlen(PATHSYSNAME)) != 0) {
+ #else /* !GENERICPATH */
strncmp(hp->path, LOCALPATHSYSNAME,
***************
*** 234,235
strlen(LOCALPATHSYSNAME)) != 0) {
hp->distribution[0] = '\0';
--- 239,241 -----
strlen(LOCALPATHSYSNAME)) != 0) {
+ #endif /* !GENERICPATH */
hp->distribution[0] = '\0';
Index: header.h
Prereq: 2.22
diff -c1 onews/header.h news/header.h
*** onews/header.h Sun Jan 15 19:48:58 1989
--- news/header.h Fri Sep 1 18:23:25 1989
***************
*** 4,6
! /* @(#)header.h 2.22 1/15/89 */
--- 4,6 -----
! /* @(#)header.h 2.23 9/1/89 */
***************
*** 20,21
char expdate[DATELEN]; /* Expires: */
char ctlmsg[PATHLEN]; /* Control: */
--- 20,22 -----
char expdate[DATELEN]; /* Expires: */
+ time_t exptime; /* Expire time in secs */
char ctlmsg[PATHLEN]; /* Control: */
***************
*** 27,29
int intnumlines; /* Integer version */
! char keywords[BUFLEN]; /* Keywords: */
char summary[BUFLEN]; /* Summary: */
--- 28,30 -----
int intnumlines; /* Integer version */
! char keywords[MBUFLEN]; /* Keywords: */
char summary[BUFLEN]; /* Summary: */
Index: ifuncs.c
Prereq: 2.72
diff -c1 onews/ifuncs.c news/ifuncs.c
*** onews/ifuncs.c Wed Jan 18 14:28:50 1989
--- news/ifuncs.c Tue Sep 12 16:58:15 1989
***************
*** 18,20
#ifdef SCCSID
! static char *SccsId = "@(#)ifuncs.c 2.72 1/18/89";
#endif /* SCCSID */
--- 18,20 -----
#ifdef SCCSID
! static char *SccsId = "@(#)ifuncs.c 2.77 9/12/89";
#endif /* SCCSID */
***************
*** 22,23
#include "iparams.h"
--- 22,26 -----
#include "iparams.h"
+ #if defined(BSD4_2) || defined(USG)
+ #include <fcntl.h>
+ #endif /* BSD || USG */
***************
*** 282,284
/* I: append messageid to file. implies F flag */
! int appmsgid = maynotify && (index(sp->s_flags, 'I') != NULL);
--- 285,287 -----
/* I: append messageid to file. implies F flag */
! int appmsgid = (index(sp->s_flags, 'I') != NULL);
***************
*** 284,285
/* allow specification based on size */
--- 287,293 -----
+ if (appmsgid && !appfile && !maynotify) {
+ appmsgid = FALSE;
+ appfile = TRUE;
+ }
+
/* allow specification based on size */
***************
*** 389,391
#endif /* !LOGDIR */
! BATCHDIR, TRANS, appmsgid ? ".ihave" : "");
}
--- 397,400 -----
#endif /* !LOGDIR */
! BATCHDIR, TRANS,
! (appmsgid && !appfile) ? ".ihave" : "");
}
***************
*** 392,393
ofp = fopen(sp->s_xmit, "a");
if (ofp == NULL)
--- 401,405 -----
ofp = fopen(sp->s_xmit, "a");
+ #ifdef F_SETFL
+ (void) fcntl(fileno(ofp), F_SETFL, O_APPEND);
+ #endif /* F_SETFL */
if (ofp == NULL)
***************
*** 394,397
xerror("Cannot append to %s", sp->s_xmit);
! fprintf(ofp, "%s", appmsgid ? hh.ident :
! firstbufname);
#ifdef MULTICAST
--- 406,412 -----
xerror("Cannot append to %s", sp->s_xmit);
! if (appfile && appmsgid)
! fprintf(ofp, "%s\t%s", firstbufname, hh.ident);
! else
! fprintf(ofp, "%s", appmsgid ? hh.ident :
! firstbufname);
#ifdef MULTICAST
***************
*** 775,777
#else /* O_EXCL */
! while ((fd=(open(lockname, O_EXCL|O_CREAT, 0) < 0) {
#endif /* O_EXCL */
--- 790,792 -----
#else /* O_EXCL */
! while ((fd=open(lockname, O_EXCL|O_CREAT, 0)) < 0) {
#endif /* O_EXCL */
***************
*** 906,910
if (STRCMP(bfr, ngs[i]) == NGUNSEEN) { /* localize? */
! /* newsgroup 12345 12345 X */
! /* cp + 01234567890123 */
! if (!isproc && cp[13] == 'n')
uses[i] = NGOK;
--- 921,965 -----
if (STRCMP(bfr, ngs[i]) == NGUNSEEN) { /* localize? */
! /* newsgroup 1234567 1234567 X optional-fname */
! /* cp + 01234567890123456789 */
! if (cp[18] == ' ' && cp[19] != '\0') {
! int ok2post = 0;
! char buf2[BUFLEN], pbuf[MBUFLEN];
! register char *cp2, *cp3;
! /* check for private groups
! * only sites listed in the file
! * specified can post
! */
! cp2 = index(&cp[19], '\n');
! if (cp2)
! *cp2 = '\0';
! cp2 = pbuf;
! cp3 = header.path;
! while (*cp3 &&index(NETCHRS, *cp3) == 0)
! *cp2++ = *cp3++;
! *cp2 = '\0';
! f = xfopen(&cp[19], "r");
! while (!ok2post) {
! register int c;
! cp2 = buf2;
! while ((c=getc(f)) != EOF) {
! if (c == '\n') {
! *cp2 = '\0';
! break;
! }
! *cp2++ = c;
! }
! if (c == EOF)
! break;
! if (STRCMP(pbuf, buf2) == 0) {
! ok2post = 1;
! break;
! }
! }
! (void) fclose(f);
! if (!ok2post) {
! logerr("%s is not authorized to post to %s", pbuf, ngs[i]);
! return TRUE;
! }
! }
! if (!isproc && cp[17] == 'n') {
uses[i] = NGOK;
***************
*** 910,912
uses[i] = NGOK;
! else {
if (uses[i] < NGALIAS)
--- 965,967 -----
uses[i] = NGOK;
! } else {
if (uses[i] < NGALIAS)
***************
*** 913,915
uses[i] = NGALIAS;
! if (cp[13] == 'm') {
strcpy(is_mod, bfr);
--- 968,970 -----
uses[i] = NGALIAS;
! if (cp[17] == 'm') {
strcpy(is_mod, bfr);
***************
*** 1150,1156
! #undef NGUNSEEN 0
! #undef NGOK 1
! #undef NGALIAS 2
! #undef NGBUGS 3
! #undef NGABUGS 4
--- 1205,1211 -----
! #undef NGUNSEEN
! #undef NGOK
! #undef NGALIAS
! #undef NGBUGS
! #undef NGABUGS
***************
*** 1176,1179
while ((!ret) && fscanf(mfd, "%[^:]:%s\n", mgrp, mlist) != EOF) {
- if (feof(mfd))
- break;
if (mgrp[0] == '#')
--- 1231,1232 -----
while ((!ret) && fscanf(mfd, "%[^:]:%s\n", mgrp, mlist) != EOF) {
if (mgrp[0] == '#')
***************
*** 1400,1402
freopen(tfilename, "r", infp);
! (void) free(cp);
return; /* from checkbatch as if
--- 1453,1456 -----
freopen(tfilename, "r", infp);
! setbuf(infp, (char *) NULL);
! (void) free(cp);
return; /* from checkbatch as if
Index: inews.c
Prereq: 2.91
diff -c1 onews/inews.c news/inews.c
*** onews/inews.c Tue Jan 24 15:24:00 1989
--- news/inews.c Fri Sep 1 18:23:27 1989
***************
*** 19,21
#ifdef SCCSID
! static char *SccsId = "@(#)inews.c 2.91 1/24/89";
#endif /* SCCSID */
--- 19,21 -----
#ifdef SCCSID
! static char *SccsId = "@(#)inews.c 2.92 9/1/89";
#endif /* SCCSID */
***************
*** 55,56
int spool_news = DONT_SPOOL;
--- 55,58 -----
int spool_news = DONT_SPOOL;
+ static char *artlinks[32];
+ static int linkcount;
***************
*** 223,226
#ifdef NICENESS
! if (nice(0) < NICENESS)
! (void) nice(NICENESS);
#endif /* NICENESS */
--- 225,228 -----
#ifdef NICENESS
! if ((i=nice(0)) < NICENESS)
! (void) nice(NICENESS-i);
#endif /* NICENESS */
***************
*** 237,243
if (space()) { /* check disk space */
! mode = PROC;
! logerr("Out of space in %s. Saving for later processing.",
! SPOOLDIR);
! dospool((char *)NULL, FALSE);
! /* NOT REACHED */
}
--- 239,242 -----
if (space()) { /* check disk space */
! spool_news = DOSPOOL;
! logerr("Out of space in %s.", SPOOLDIR);
}
***************
*** 306,308
&& uid == 0 /* allow root to set name in any case */
! #endif /* !DOGETUSER */
) {
--- 305,307 -----
&& uid == 0 /* allow root to set name in any case */
! #endif /* DOGETUSER */
) {
***************
*** 809,812
- static char *artlinks[32];
- static int linkcount;
/*
--- 808,809 -----
/*
***************
*** 837,839
if (STRCMP(bfr, ngname) == 0) {
! if (ngsize < 0 || ngsize > 99998) {
logerr("found bad ngsize %ld ng %s, setting to 1", ngsize, bfr);
--- 834,836 -----
if (STRCMP(bfr, ngname) == 0) {
! if (ngsize < 0 || ngsize > 9999998L) {
logerr("found bad ngsize %ld ng %s, setting to 1", ngsize, bfr);
***************
*** 906,909
/*
! * Has to be same size as old because of %05d.
! * This will overflow with 99999 articles.
*/
--- 903,906 -----
/*
! * Has to be same size as old because of %07d.
! * This will overflow with 9,999,999 articles.
*/
***************
*** 909,911
*/
! fprintf(actfp, "%s %05ld", ngname, ngsize+1);
#if defined(USG) || defined(MG1)
--- 906,908 -----
*/
! fprintf(actfp, "%s %07ld", ngname, ngsize+1);
#if defined(USG) || defined(MG1)
***************
*** 946,948
struct srec srec; /* struct for sys file lookup */
- struct tm *tm, *gmtime();
int is_invalid = FALSE;
--- 943,944 -----
struct srec srec; /* struct for sys file lookup */
int is_invalid = FALSE;
***************
*** 948,949
int is_invalid = FALSE;
int exitcode = 0;
--- 944,946 -----
int is_invalid = FALSE;
+ int junked = FALSE;
int exitcode = 0;
***************
*** 963,974
! (void) time(&now);
! tm = gmtime(&now);
! if (header.expdate[0])
! addhist(" ");
! #ifdef USG
! sprintf(bfr,"%2.2d/%2.2d/%d %2.2d:%2.2d\t",
! #else /* !USG */
! sprintf(bfr,"%02d/%02d/%d %02d:%02d\t",
! #endif /* !USG */
! tm->tm_mon+1, tm->tm_mday, tm->tm_year,tm->tm_hour, tm->tm_min);
addhist(bfr);
--- 960,962 -----
! sprintf(bfr, "%ld", time(&now));
addhist(bfr);
***************
*** 974,975
addhist(bfr);
log("%s %s ng %s subj '%s' from %s", spool_news != DONT_SPOOL
--- 962,968 -----
addhist(bfr);
+ if (header.expdate[0]) {
+ sprintf(bfr,"~%ld",(long) cgtdate(header.expdate));
+ addhist(bfr);
+ }
+ addhist("\t");
log("%s %s ng %s subj '%s' from %s", spool_news != DONT_SPOOL
***************
*** 987,989
header.nbuf);
! if (localize("junk"))
savehist(histline);
--- 980,982 -----
header.nbuf);
! if (localize("junk")) {
savehist(histline);
***************
*** 989,990
savehist(histline);
exitcode = 1;
--- 982,985 -----
savehist(histline);
+ junked = TRUE;
+ }
exitcode = 1;
***************
*** 996,998
logerr("Orphaned Response, moved to junk");
! if (localize("junk"))
savehist(histline);
--- 991,993 -----
logerr("Orphaned Response, moved to junk");
! if (localize("junk")) {
savehist(histline);
***************
*** 998,999
savehist(histline);
exitcode = 1;
--- 993,998 -----
savehist(histline);
+ /*
+ junked = TRUE;
+ */
+ }
exitcode = 1;
***************
*** 1005,1007
logerr("Article too old, moved to junk");
! if (localize("junk"))
savehist(histline);
--- 1004,1006 -----
logerr("Article too old, moved to junk");
! if (localize("junk")) {
savehist(histline);
***************
*** 1007,1008
savehist(histline);
exitcode = 1;
--- 1006,1009 -----
savehist(histline);
+ junked = TRUE;
+ }
exitcode = 1;
***************
*** 1220,1222
xxit((mode == PROC && filename[0] == '\0') ? 0 :
! (exitcode < 0 ? 0 : exitcode));
}
--- 1221,1223 -----
xxit((mode == PROC && filename[0] == '\0') ? 0 :
! (exitcode < 0 || junked ? 0 : exitcode));
}
Index: makeactive.sh
Prereq: 1.27
diff -c1 onews/makeactive.sh news/makeactive.sh
*** onews/makeactive.sh Tue Jan 24 17:05:21 1989
--- news/makeactive.sh Thu Sep 7 17:54:30 1989
***************
*** 2,4
: "Usage: sh makeactive.sh LIBDIR SPOOLDIR NEWSUSR NEWSGRP"
! : '@(#)makeactive 1.27 1/24/89'
LIBDIR=$1
--- 2,4 -----
: "Usage: sh makeactive.sh LIBDIR SPOOLDIR NEWSUSR NEWSGRP"
! : '@(#)makeactive 1.29 9/7/89'
LIBDIR=$1
***************
*** 13,14
comp.ai.nlang-know-rep Natural Language and Knowledge Representation. (Moderated)
comp.ai.vision Artificial Intelligence Vision Research. (Moderated)
--- 13,15 -----
comp.ai.nlang-know-rep Natural Language and Knowledge Representation. (Moderated)
+ comp.ai.shells Artificial intelligence applied to shells. (Moderated)
comp.ai.vision Artificial Intelligence Vision Research. (Moderated)
***************
*** 56,58
comp.lang.icon Topics related to the ICON programming language.
! comp.lang.idl IBL (Interface Description Language) related topics.
comp.lang.lisp Discussion about LISP.
--- 57,59 -----
comp.lang.icon Topics related to the ICON programming language.
! comp.lang.idl IDL (Interface Description Language) related topics.
comp.lang.lisp Discussion about LISP.
***************
*** 80,81
comp.mail.multi-media Multimedia Mail.
comp.mail.sendmail Configuring and using the BSD sendmail agent.
--- 81,83 -----
comp.mail.multi-media Multimedia Mail.
+ comp.mail.mush The Mail User's Shell (MUSH).
comp.mail.sendmail Configuring and using the BSD sendmail agent.
***************
*** 94,95
comp.os.eunice The SRI Eunice system.
comp.os.minix Discussion of Tanenbaum's MINIX system.
--- 96,98 -----
comp.os.eunice The SRI Eunice system.
+ comp.os.mach The MACH OS from CMU & other places.
comp.os.minix Discussion of Tanenbaum's MINIX system.
***************
*** 111,112
comp.protocols.iso.x400.gateway X400 mail gateway discussions. (Moderated)
comp.protocols.kermit Info about the Kermit package. (Moderated)
--- 114,116 -----
comp.protocols.iso.x400.gateway X400 mail gateway discussions. (Moderated)
+ comp.protocols.kerberos The Kerberos authentification server.
comp.protocols.kermit Info about the Kermit package. (Moderated)
***************
*** 119,120
comp.protocols.tcp-ip.ibmpc TCP/IP for IBM(-like) personal computers.
comp.risks Risks to the public from computers & users. (Moderated)
--- 123,125 -----
comp.protocols.tcp-ip.ibmpc TCP/IP for IBM(-like) personal computers.
+ comp.realtime Issues related to real-time computing.
comp.risks Risks to the public from computers & users. (Moderated)
***************
*** 124,125
comp.society.women Women's roles and problems in computing (Moderated)
comp.software-eng Software Engineering and related topics.
--- 129,131 -----
comp.society.women Women's roles and problems in computing (Moderated)
+ comp.soft-sys.andrew The Andrew system from CMU.
comp.software-eng Software Engineering and related topics.
***************
*** 133,134
comp.sources.misc Posting of software . (Moderated)
comp.sources.unix Postings of complete, UNIX-oriented sources. (Moderated)
--- 139,141 -----
comp.sources.misc Posting of software . (Moderated)
+ comp.sources.sun Software for Sun workstations. (Moderated)
comp.sources.unix Postings of complete, UNIX-oriented sources. (Moderated)
***************
*** 141,142
comp.std.unix Discussion for the P1003 committee on UNIX. (Moderated)
comp.sys.amiga Commodore Amiga: info&uses, but no programs.
--- 148,150 -----
comp.std.unix Discussion for the P1003 committee on UNIX. (Moderated)
+ comp.sw.components Software components and related technology.
comp.sys.amiga Commodore Amiga: info&uses, but no programs.
***************
*** 161,162
comp.sys.intel.ipsc310 Anything related to Xenix on an Intel 310.
comp.sys.m6809 Discussion about 6809's.
--- 169,171 -----
comp.sys.intel.ipsc310 Anything related to Xenix on an Intel 310.
+ comp.sys.isis The ISIS distributed system from Cornell.
comp.sys.m6809 Discussion about 6809's.
***************
*** 169,170
comp.sys.masscomp The Masscomp line of computers. (Moderated)
comp.sys.misc Discussion about computers of all kinds.
--- 178,180 -----
comp.sys.masscomp The Masscomp line of computers. (Moderated)
+ comp.sys.mips Systems based on MIPS chips.
comp.sys.misc Discussion about computers of all kinds.
***************
*** 202,203
comp.unix.cray Cray computers and their operating systems.
comp.unix.microport Discussion of Microport's UNIX.
--- 212,214 -----
comp.unix.cray Cray computers and their operating systems.
+ comp.unix.i386 Versions of Unix running on Intel 80386-based boxes.
comp.unix.microport Discussion of Microport's UNIX.
***************
*** 204,206
comp.unix.questions UNIX neophytes group.
! comp.unix.ultrix Discussions about DEC's Ultrix. (Moderated)
comp.unix.wizards Discussions, bug reports, and fixes on and for UNIX.
--- 215,217 -----
comp.unix.questions UNIX neophytes group.
! comp.unix.ultrix Discussions about DEC's Ultrix.
comp.unix.wizards Discussions, bug reports, and fixes on and for UNIX.
***************
*** 207,208
comp.unix.xenix Discussion about the Xenix OS.
comp.windows.misc Various issues about windowing systems.
--- 218,220 -----
comp.unix.xenix Discussion about the Xenix OS.
+ comp.virus Computer viruses & security. (Moderated)
comp.windows.misc Various issues about windowing systems.
***************
*** 209,211
comp.windows.ms Window systems under MS/DOS.
! comp.windows.news Sun Microsystems' NewS window system.
comp.windows.x Discussion about the X Window System.
--- 221,223 -----
comp.windows.ms Window systems under MS/DOS.
! comp.windows.news Sun Microsystems' NeWS window system.
comp.windows.x Discussion about the X Window System.
***************
*** 213,214
misc.consumers.house Discussion about owning and maintaining a house.
misc.forsale Short, tasteful postings about items for sale.
--- 225,227 -----
misc.consumers.house Discussion about owning and maintaining a house.
+ misc.emerg-services Forum for paramedics & other first responders.
misc.forsale Short, tasteful postings about items for sale.
***************
*** 216,217
misc.headlines Current interest: drug testing, terrorism, etc.
misc.invest Investments and the handling of money.
--- 229,231 -----
misc.headlines Current interest: drug testing, terrorism, etc.
+ misc.headlines.unitex International news from the UN & related. (Moderated)
misc.invest Investments and the handling of money.
***************
*** 230,231
news.announce.important General announcements of interest to all. (Moderated)
news.announce.newusers Explanatory postings for new users. (Moderated)
--- 244,246 -----
news.announce.important General announcements of interest to all. (Moderated)
+ news.announce.newgroups Calls for newgroups & announcements of same. (Moderated)
news.announce.newusers Explanatory postings for new users. (Moderated)
***************
*** 236,237
news.newsites Postings of new site announcements.
news.software.b Discussion about B-news-compatible software.
--- 251,254 -----
news.newsites Postings of new site announcements.
+ news.newusers.questions Q & A for users new to the Usenet.
+ news.software.anu-news VMS B-news software from Australian National Univ.
news.software.b Discussion about B-news-compatible software.
***************
*** 253,254
rec.arts.tv.soaps Postings about soap operas.
rec.arts.wobegon "A Prairie Home Companion" radio show discussion.
--- 270,272 -----
rec.arts.tv.soaps Postings about soap operas.
+ rec.arts.tv.uk Discussions of telly shows from the UK.
rec.arts.wobegon "A Prairie Home Companion" radio show discussion.
***************
*** 259,260
rec.aviation Aviation rules, means, and methods.
rec.bicycles Bicycles, related products and laws.
--- 277,279 -----
rec.aviation Aviation rules, means, and methods.
+ rec.backcountry Activities in the Great Outdoors.
rec.bicycles Bicycles, related products and laws.
***************
*** 286,287
rec.ham-radio.packet Discussion about packet radio setups.
rec.humor Jokes and the like. May be somewhat offensive.
--- 305,307 -----
rec.ham-radio.packet Discussion about packet radio setups.
+ rec.ham-radio.swap Offers to trade and swap radio equipment.
rec.humor Jokes and the like. May be somewhat offensive.
***************
*** 299,300
rec.music.classical Discussion about classical music.
rec.music.folk Folks discussing folk music of various sorts.
--- 319,322 -----
rec.music.classical Discussion about classical music.
+ rec.music.dementia Discussion of comedy and novelty music.
+ rec.music.dylan Discussion of Bob's works & music.
rec.music.folk Folks discussing folk music of various sorts.
***************
*** 304,305
rec.music.misc Music lovers' group.
rec.music.synth Synthesizers and computer music.
--- 326,328 -----
rec.music.misc Music lovers' group.
+ rec.music.newage "New Age" music discussions.
rec.music.synth Synthesizers and computer music.
***************
*** 311,313
rec.scuba Hobbyists interested in SCUBA diving.
! rec.skiing Hobbyists interested in skiing.
rec.skydiving Hobbyists interested in skydiving.
--- 334,336 -----
rec.scuba Hobbyists interested in SCUBA diving.
! rec.skiing Hobbyists interested in snow skiing.
rec.skydiving Hobbyists interested in skydiving.
***************
*** 321,322
rec.woodworking Hobbyists interested in woodworking.
sci.astro Astronomy discussions and information.
--- 344,346 -----
rec.woodworking Hobbyists interested in woodworking.
+ sci.aeronautics The science of aeronautics & related technology.
sci.astro Astronomy discussions and information.
***************
*** 324,325
sci.bio.technology Any topic relating to biotechnology.
sci.crypt Different methods of data en/decryption.
--- 348,350 -----
sci.bio.technology Any topic relating to biotechnology.
+ sci.chem Chemistry and related sciences.
sci.crypt Different methods of data en/decryption.
***************
*** 325,326
sci.crypt Different methods of data en/decryption.
sci.electronics Circuits, theory, electrons and discussions.
--- 350,352 -----
sci.crypt Different methods of data en/decryption.
+ sci.edu Science education.
sci.electronics Circuits, theory, electrons and discussions.
***************
*** 326,327
sci.electronics Circuits, theory, electrons and discussions.
sci.lang Natural languages, communication, etc.
--- 352,355 -----
sci.electronics Circuits, theory, electrons and discussions.
+ sci.energy Discussions about energy, science & technology.
+ sci.environment Discussions about the environment and ecology.
sci.lang Natural languages, communication, etc.
***************
*** 335,336
sci.med.aids AIDS: treatment, pathology/biology of HIV, prevention. (Moderated)
sci.military Discussion about science & the military. (Moderated)
--- 363,365 -----
sci.med.aids AIDS: treatment, pathology/biology of HIV, prevention. (Moderated)
+ sci.med.physics Issues of physics in medical testing/care.
sci.military Discussion about science & the military. (Moderated)
***************
*** 341,342
sci.physics Physical laws, properties, etc.
sci.psychology Topics related to psychology.
--- 370,372 -----
sci.physics Physical laws, properties, etc.
+ sci.physics.fusion Info on fusion, esp. "cold" fusion.
sci.psychology Topics related to psychology.
***************
*** 343,344
sci.research Research methods, funding, ethics, and whatever.
sci.space Space, space programs, space related research, etc.
--- 373,375 -----
sci.research Research methods, funding, ethics, and whatever.
+ sci.skeptic Skeptics discussing psuedo-science.
sci.space Space, space programs, space related research, etc.
***************
*** 346,347
soc.college College, college activities, campus life, etc.
soc.culture.african Discussions about Africa & things African.
--- 377,379 -----
soc.college College, college activities, campus life, etc.
+ soc.couples Discussions for couples (cf. soc.singles).
soc.culture.african Discussions about Africa & things African.
***************
*** 348,349
soc.culture.arabic Technological & cultural issues, *not* politics.
soc.culture.celtic Group about Celts (*not* basketball!).
--- 380,382 -----
soc.culture.arabic Technological & cultural issues, *not* politics.
+ soc.culture.asian.american Issues & discussion about Asian-Americans.
soc.culture.celtic Group about Celts (*not* basketball!).
***************
*** 352,353
soc.culture.greek Group about Greeks.
soc.culture.indian Group for discussion about India & things Indian.
--- 385,387 -----
soc.culture.greek Group about Greeks.
+ soc.culture.hongkong Discussions pertaining to Hong Kong.
soc.culture.indian Group for discussion about India & things Indian.
***************
*** 356,357
soc.culture.misc Group for discussion about other cultures.
soc.human-nets Computer aided communications digest. (Moderated)
--- 390,395 -----
soc.culture.misc Group for discussion about other cultures.
+ soc.culture.nordic Discussion about culture up north.
+ soc.culture.taiwan Discussion about things Taiwanese.
+ soc.culture.turkish Discussion about things Turkish.
+ soc.feminism Discussion of feminism & feminist issues. (Moderated)
soc.human-nets Computer aided communications digest. (Moderated)
***************
*** 364,365
soc.religion.christian Christianity and related topics. (Moderated)
soc.roots Genealogical matters.
--- 402,404 -----
soc.religion.christian Christianity and related topics. (Moderated)
+ soc.rights.human Human rights & activism (e.g., Amnesty International).
soc.roots Genealogical matters.
***************
*** 366,368
soc.singles Newsgroup for single people, their activities, etc.
! soc.women Women's rights, discrimination, etc.
talk.abortion All sorts of discussions and arguments on abortion.
--- 405,407 -----
soc.singles Newsgroup for single people, their activities, etc.
! soc.women Issues related to women, their problems & relationships.
talk.abortion All sorts of discussions and arguments on abortion.
***************
*** 371,372
talk.philosophy.misc Philosophical musings on all topics.
talk.politics.mideast Discussion & debate over Middle Eastern events.
--- 410,412 -----
talk.philosophy.misc Philosophical musings on all topics.
+ talk.politics.guns The politics of firearm ownership and (mis)use.
talk.politics.mideast Discussion & debate over Middle Eastern events.
***************
*** 375,376
talk.politics.theory Theory of politics and political systems.
talk.religion.misc Religious, ethical, & moral implications.
--- 415,417 -----
talk.politics.theory Theory of politics and political systems.
+ talk.rape Discussions on stopping rape; not to be crossposted.
talk.religion.misc Religious, ethical, & moral implications.
***************
*** 384,387
cat <<'E_O_F' >>$LIBDIR/active
! control 00000 00001
! junk 00000 00001
E_O_F
--- 425,428 -----
cat <<'E_O_F' >>$LIBDIR/active
! control 0000000 0000000
! junk 0000000 0000000
E_O_F
***************
*** 389,390
else
: make sure it is in the new format
--- 430,433 -----
else
+ : increase max article number if necessary
+ sed 's/ \([0-9][0-9][0-9][0-9][0-9]\) \([0-9][0-9][0-9][0-9][0-9]\) / 00\1 00\2 /' $LIBDIR/active>$LIBDIR/nactive && mv $LIBDIR/nactive $LIBDIR/active
: make sure it is in the new format
***************
*** 400,402
2) ed - $LIBDIR/active << 'EOF'
! 1,$s/$/ 00001/
w
--- 443,445 -----
2) ed - $LIBDIR/active << 'EOF'
! 1,$s/$/ 0000000/
w
***************
*** 431
rm -f /tmp/$$*
--- 474,482 -----
rm -f /tmp/$$*
+
+ nlines=`wc -l < $LIBDIR/active`
+ set - `grep '^#define LINES' defs.h`
+ if test $nlines -gt $3
+ then
+ echo "WARNING: active file has more than $3 lines"
+ echo "Increase LINES in defs.h"
+ fi
Index: params.h
Prereq: 2.31
diff -c1 onews/params.h news/params.h
*** onews/params.h Thu Jan 19 00:06:42 1989
--- news/params.h Fri Sep 1 18:23:28 1989
***************
*** 4,6
! /* @(#)params.h 2.31 1/19/89 */
--- 4,6 -----
! /* @(#)params.h 2.32 9/1/89 */
***************
*** 133,137
! #ifdef M_XENIX
! #define LOCKING
! #endif /* defined M_XENIX */
--- 133,137 -----
! #if defined(M_XENIX) && !defined(LOCKF) && !defined(LOCKING)
! #define LOCKING
! #endif /* M_XENIX */
***************
*** 191,193
#define STRCMP(a,b) ((*(a) != *(b)) ? (*(a)-*(b)) : strcmp((a)+1, (b)+1))
! #define STRNCMP(a,b,n) ((*(a) != *(b)) ? (*(a)-*(b)) : strncmp(a, b, n))
extern char charmap[];
--- 191,193 -----
#define STRCMP(a,b) ((*(a) != *(b)) ? (*(a)-*(b)) : strcmp((a)+1, (b)+1))
! #define STRNCMP(a,b,n) ((*(a) != *(b)) ? (int)(*(a)-*(b)) : strncmp(a, b, n))
extern char charmap[];
Index: patchlevel.h
Prereq: 17
diff -c1 onews/patchlevel.h news/patchlevel.h
*** onews/patchlevel.h Tue Jan 24 15:49:36 1989
--- news/patchlevel.h Tue Sep 12 17:02:43 1989
***************
*** 1,2
! #define PATCHLEVEL 17
--- 1,2 -----
! #define PATCHLEVEL 18
***************
*** 2,3
! #define NEWS_VERSION "B 2.11 1/24/89"
--- 2,3 -----
! #define NEWS_VERSION "B 2.11 9/12/89"
Index: postnews.c
Prereq: 1.37
diff -c1 onews/postnews.c news/postnews.c
*** onews/postnews.c Sun Jan 15 19:49:03 1989
--- news/postnews.c Fri Sep 1 18:23:31 1989
***************
*** 19,21
#ifdef SCCSID
! static char *SccsId = "@(#)postnews.c 1.37 1/15/89";
#endif /* SCCSID */
--- 19,21 -----
#ifdef SCCSID
! static char *SccsId = "@(#)postnews.c 1.40 9/1/89";
#endif /* SCCSID */
***************
*** 43,45
char newsgroups[BUFLEN];
! char followupto[BUFLEN];
char isfrom[BUFLEN];
--- 43,45 -----
char newsgroups[BUFLEN];
! char followto[BUFLEN];
char isfrom[BUFLEN];
***************
*** 46,48
char msgid[BUFLEN];
! char keywords[BUFLEN];
char summary[BUFLEN];
--- 46,48 -----
char msgid[BUFLEN];
! char keywords[MBUFLEN];
char summary[BUFLEN];
***************
*** 457,460
! if (followupto[0] != '\0')
! fprintf(tf, "Followup-To: %s\n", followupto);
--- 457,460 -----
! if (followto[0] != '\0')
! fprintf(tf, "Followup-To: %s\n", followto);
***************
*** 652,654
}
! if (index(newsgroups, NGDELIM) != NULL && followupto[0] == '\0') {
printf("Your article is being posted to multiple newsgroups.\n");
--- 652,654 -----
}
! if (index(newsgroups, NGDELIM) != NULL && followto[0] == '\0') {
printf("Your article is being posted to multiple newsgroups.\n");
***************
*** 657,662
printf("(If responses should be mailed to you, enter \"poster\")\n");
! getpr("Followup-To: ", followupto);
! if (followupto[0] != '\0')
! modify_article(tempfname, "Followup-To: ", followupto,
! APPEND);
}
--- 657,662 -----
printf("(If responses should be mailed to you, enter \"poster\")\n");
! getpr("Followup-To: ", followto);
! if (followto[0] != '\0')
! modify_article(tempfname, "Followup-To: ", followto,
! REPLACE);
}
***************
*** 974,976
default:
! printf("Active file (%s) corrupted. ", ACTIVE);
byebye("Seek help!");
--- 974,976 -----
default:
! printf("Active file corrupt: %s", ng_read);
byebye("Seek help!");
Index: readnews.c
Prereq: 2.33
diff -c1 onews/readnews.c news/readnews.c
*** onews/readnews.c Sun Oct 18 18:04:20 1987
--- news/readnews.c Thu Sep 7 17:54:31 1989
***************
*** 5,7
#ifdef SCCSID
! static char *SccsId = "@(#)readnews.c 2.33 10/15/87";
#endif /* SCCSID */
--- 5,7 -----
#ifdef SCCSID
! static char *SccsId = "@(#)readnews.c 2.34 9/7/89";
#endif /* SCCSID */
***************
*** 126,128
if (++line > LINES)
! xerror("Too many options.");
if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL)
--- 126,128 -----
if (++line > LINES)
! xerror("Too many options. Increase LINES in defs.h");
if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL)
***************
*** 170,172
if (++line > LINES)
! xerror("Too many options.");
if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL)
--- 170,172 -----
if (++line > LINES)
! xerror("Too many options. Increase LINES in defs.h");
if ((rcline[line] = malloc((unsigned)(strlen(ptr) + 1))) == NULL)
Index: recmail.c
Prereq: 1.18
diff -c1 onews/recmail.c news/recmail.c
*** onews/recmail.c Tue Jan 17 13:09:30 1989
--- news/recmail.c Tue Sep 12 16:58:15 1989
***************
*** 18,20
* It is similar to sendmail -t, but only assumes /bin/mail.
! * To use your own mailer, e. g. nmail, compile with -DMAILER=my_mailer.
*/
--- 18,20 -----
* It is similar to sendmail -t, but only assumes /bin/mail.
! * To use your own mailer, e. g. nmail, compile with -DMAILPROGRAM=my_mailer.
*/
***************
*** 22,24
#ifdef SCCSID
! static char *SccsId = "@(#)recmail.c 1.18 1/17/89";
#endif /* SCCSID */
--- 22,24 -----
#ifdef SCCSID
! static char *SccsId = "@(#)recmail.c 1.19 9/12/89";
#endif /* SCCSID */
***************
*** 27,30
! #ifndef MAILER
! #define MAILER "/bin/mail"
#endif
--- 27,30 -----
! #ifndef MAILPROGRAM
! #define MAILPROGRAM "/bin/mail"
#endif
***************
*** 30,32
#endif
! char mailer[] = MAILER;
--- 30,32 -----
#endif
! char mailer[] = MAILPROGRAM;
Index: rextern.c
Prereq: 2.17
diff -c1 onews/rextern.c news/rextern.c
*** onews/rextern.c Fri Nov 21 16:04:49 1986
--- news/rextern.c Tue Sep 12 16:58:15 1989
***************
*** 5,7
#ifdef SCCSID
! static char *SccsId = "@(#)rextern.c 2.17 11/21/86";
#endif /* SCCSID */
--- 5,7 -----
#ifdef SCCSID
! static char *SccsId = "@(#)rextern.c 2.18 9/12/89";
#endif /* SCCSID */
***************
*** 47,49
- #ifndef MAILER
char *MAILER;
--- 47,48 -----
char *MAILER;
***************
*** 49,52
char *MAILER;
- #endif
-
char *PAGER = "";
--- 48,49 -----
char *MAILER;
char *PAGER = "";
Index: rfuncs.c
Prereq: 2.47
diff -c1 onews/rfuncs.c news/rfuncs.c
*** onews/rfuncs.c Thu Jan 19 00:06:44 1989
--- news/rfuncs.c Thu Sep 7 17:54:32 1989
***************
*** 18,20
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs.c 2.47 1/19/89";
#endif /* SCCSID */
--- 18,20 -----
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs.c 2.49 9/7/89";
#endif /* SCCSID */
***************
*** 421,423
if (++line > LINES)
! xerror("Too many newsgroups");
ptr[0] = oldptr;
--- 421,423 -----
if (++line > LINES)
! xerror("Too many newsgroups. Increase LINES in defs.h");
ptr[0] = oldptr;
***************
*** 654,656
&tp->minart, &tp->yn) != 4)
! xerror("Active file corrupt");
delta = tp->maxart - tp->minart;
--- 654,656 -----
&tp->minart, &tp->yn) != 4)
! xerror("Active file corrupt: %s", aline);
delta = tp->maxart - tp->minart;
Index: sendbatch.sh
Prereq: 1.20
diff -c1 onews/sendbatch.sh news/sendbatch.sh
*** onews/sendbatch.sh Sun Jan 15 23:04:11 1989
--- news/sendbatch.sh Fri Sep 1 18:23:33 1989
***************
*** 1,2
! : '@(#)sendbatch.sh 1.20 1/15/89'
--- 1,2 -----
! : '@(#)sendbatch.sh 1.21 9/1/89'
***************
*** 17,19
! for rmt in $*
do
--- 17,19 -----
! for rmt
do
***************
*** 61,62
continue;;
esac
--- 61,64 -----
continue;;
+ -f*) MINDF=`expr "$rmt" : '-f\(.*\)'`
+ continue;;
esac
***************
*** 78,80
! if test -n "$MAXBATCH"
then
--- 80,82 -----
! if test -n "$MAXBATCH" -a -d /usr/spool/uucp/$rmt
then
***************
*** 106,108
sentbytes=0
! while test $? -eq 0 -a $sentbytes -le $MAXBATCH -a \
\( \( $sentbytes -eq 0 -a -s $BATCH/$rmt \) -o \
--- 108,110 -----
sentbytes=0
! while test $? -eq 0 -a $sentbytes -le "$MAXBATCH" -a \
\( \( $sentbytes -eq 0 -a -s $BATCH/$rmt \) -o \
Index: virtterm.c
Prereq: 1.15
diff -c1 onews/virtterm.c news/virtterm.c
*** onews/virtterm.c Sun Jan 15 19:49:06 1989
--- news/virtterm.c Fri Sep 1 18:23:35 1989
***************
*** 7,9
#ifdef SCCSID
! static char *SccsId = "@(#)virtterm.c 1.15 1/15/89";
#endif /* SCCSID */
--- 7,9 -----
#ifdef SCCSID
! static char *SccsId = "@(#)virtterm.c 1.16 9/1/89";
#endif /* SCCSID */
***************
*** 1003,1004
AM = XN = 1;
}
--- 1003,1025 -----
AM = XN = 1;
+ }
+ free((char *) _virt[0].l);
+ free((char *) _virt);
+ {
+ char *thelines;
+ int i;
+ char *malloc();
+
+ thelines = malloc(2 * ROWS * COLS);
+ _virt = (struct line *)malloc(2 * ROWS * sizeof (struct line));
+ _actual = _virt + ROWS;
+ for (i = 0; i < ROWS; i++) {
+ _virt[i].len = 0;
+ _virt[i].flags = 0;
+ _actual[i].len = 0;
+ _actual[i].flags = 0;
+ _virt[i].l = thelines;
+ thelines += COLS;
+ _actual[i].l = thelines;
+ thelines += COLS;
+ }
}
Index: visual.c
Prereq: 1.44
diff -c1 onews/visual.c news/visual.c
*** onews/visual.c Sun Jan 22 22:18:19 1989
--- news/visual.c Tue Sep 12 16:58:17 1989
***************
*** 6,8
#ifdef SCCSID
! static char *SccsId = "@(#)visual.c 1.44 1/22/89";
#endif /* SCCSID */
--- 6,8 -----
#ifdef SCCSID
! static char *SccsId = "@(#)visual.c 1.46 9/12/89";
#endif /* SCCSID */
***************
*** 170,171
static FILE *fp; /* current article to be printed*/
--- 170,172 -----
static FILE *fp; /* current article to be printed*/
+ static char savebuf[BUFLEN];
***************
*** 351,352
int i;
long nart, Hoffset;
--- 352,354 -----
int i;
+ int sawlong;
long nart, Hoffset;
***************
*** 520,522
{
- static char savebuf[BUFLEN];
int wflags;
--- 522,523 -----
{
int wflags;
***************
*** 762,763
(void) fseek(fp, 0L, 0);
for (i = 0; i < ARTWLEN; i++) {
--- 763,765 -----
(void) fseek(fp, 0L, 0);
+ sawlong = FALSE;
for (i = 0; i < ARTWLEN; i++) {
***************
*** 765,767
break;
! if (linebuf[0] == '\n')
break;
--- 767,769 -----
break;
! if (linebuf[0] == '\n' && !sawlong)
break;
***************
*** 767,768
break;
linebuf[COLS] = '\0';
--- 769,771 -----
break;
+ sawlong = index(linebuf, '\n') == NULL;
linebuf[COLS] = '\0';
--
Arnold Robbins -- The Basement Computer | Laundry increases
Internet: arnold at skeeve.ATL.GA.US | exponentially in the
UUCP: { gatech, gladys, emory }!skeeve!arnold | number of children.
Bitnet: Forget it. Get on a real network. | -- Miriam Hartholz
More information about the Unix-pc.sources
mailing list