home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume7
/
2.11news
/
patch02
< prev
next >
Wrap
Internet Message Format
|
1986-12-18
|
80KB
Path: mirror!adelie!necntc!husc6!seismo!rick
From: rick@seismo.CSS.GOV (Rick Adams)
Newsgroups: news.software.b
Subject: Patch #2 for 2.11 news src
Message-ID: <43028@beno.seismo.CSS.GOV>
Date: 18 Dec 86 21:01:22 GMT
Organization: Center for Seismic Studies, Arlington, VA
Lines: 2906
Description:
This is patch #2 for the news 2.11 source distribution. It addresses
the following problems:
Many small changes were made to make lint happy (ok, happier).
The code for HOMNAME is fixed (but still not documented).
rmgroup.sh now works correctly under Eunice. It also is more efficient
when removing lots of groups at a time.
checkgroups no longer has the toplevel newsgroup names hard
coded. It takes them from the input.
More fixes to make the HIDDENNET code work they way it's supposed to.
The rmgroup control message now works if you don't have MANUALLY
defined.
A memory allocation bug in expire was fixed.
Distributions of "net" are now aliased into "world".
New commands "l" and "L" were added to readnews/vnews. "l" list the
from and subject lines of unread articles. "L" does it for all
articles.
"l" in vnews nolonger redraws the screen. Use "^L" instead.
rnews -U no longer runs if the news system is locked.
The NICENESS code now works as expected.
Several incorrect uses of vfork were replaced with fork.
The list of active groups and aliases were updated, so "make update"
now prints more reasonable comments.
ndir.c was fixed so it will run on an HP9000/500 if HP9K5 is defined.
postnews is more rational about default posting distributions. The
intuited distribution must be in LIBDIR/distributions or it will
use "world". If the line "default foobar" appears in the distributions
file, it will use foobar as the default distribution instead of world.
virtterm now accepts line lengths >127 on machines with signed chars.
The 's' command in vnews now remembers the last saved filename and
prompts with it. You can edit the line with your erase/kill chars.
Fix:
cd to the src directory and run the following through patch
Index: batch.c
Prereq: 1.17
*** .d/batch.c Fri Nov 21 16:04:41 1986
--- batch.c Tue Dec 16 13:09:52 1986
***************
*** 32,38 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)batch.c 1.17 11/21/86";
#endif /* SCCSID */
#include <stdio.h>
--- 32,38 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)batch.c 1.18 12/16/86";
#endif /* SCCSID */
#include <stdio.h>
***************
*** 184,190 ****
logtime[16] = 0;
logtime += 4;
! #ifdef IHCC
(void) sprintf(lfname, "%s/%s/errlog", logdir(HOME), LIBDIR);
#else
(void) sprintf(lfname, "%s/errlog", LIBDIR);
--- 184,190 ----
logtime[16] = 0;
logtime += 4;
! #if defined(IHCC) || defined(HOME)
(void) sprintf(lfname, "%s/%s/errlog", logdir(HOME), LIBDIR);
#else
(void) sprintf(lfname, "%s/errlog", LIBDIR);
Index: checkgroups.sh
Prereq: 1.19
*** .d/checkgroups.sh Fri Nov 21 16:05:11 1986
--- checkgroups.sh Tue Dec 16 13:09:53 1986
***************
*** 1,5 ****
: check active file for missing or extra newsgroups
! : '@(#)checkgroups 1.19 11/21/86'
if test ! -s LIBDIR/newsgroups
then
--- 1,5 ----
: check active file for missing or extra newsgroups
! : '@(#)checkgroups 1.20 12/16/86'
if test ! -s LIBDIR/newsgroups
then
***************
*** 19,29 ****
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
! echo "${line}" >> LIBDIR/newsgroups
! cat >> LIBDIR/newsgroups
;;
esac
--- 19,44 ----
cat /tmp/$$a - > LIBDIR/newsgroups
;;
*)
! # Get the distributions from the checkgroups message itself
! # This allows sites to append their local groups to the distributed
! # checkgroups message and prevents stray checkgroups from other sites
! # from showing all the local groups as being bad groups.
! #
! echo "${line}" > /tmp/$$msg
! cat >> /tmp/$$msg
! cp /dev/null /tmp/$$b
! cat /tmp/$$msg | sed -e "s;[ ].*;;" -e "s;\..*;;" | sort -u |
! while read dist
! do
! group=`cat /tmp/$$b`
! group="${group}|^$dist\\."
! echo "${group}" > /tmp/$$b
! done
! group=`cat /tmp/$$b`
egrep -v "${group}" LIBDIR/newsgroups > /tmp/$$a
cat /tmp/$$a > LIBDIR/newsgroups
! cat /tmp/$$msg >> LIBDIR/newsgroups
! rm -f /tmp/$$b /tmp/$$msg
;;
esac
Index: checknews.c
Prereq: 2.26
*** .d/checknews.c Fri Nov 21 16:04:45 1986
--- checknews.c Tue Dec 16 13:09:54 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)checknews.c 2.26 11/21/86";
#endif /* SCCSID */
char *Progname = "checknews"; /* used by xerror */
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)checknews.c 2.27 12/16/86";
#endif /* SCCSID */
char *Progname = "checknews"; /* used by xerror */
***************
*** 25,31 ****
char bfr[LBUFLEN]; /* general-use scratch area */
char optbuf[BUFLEN]; /* NEWSOPTS buffer */
! int line = -1, y, e, n, q;
int verbose; /* For debugging. */
int nflag; /* for spec. newsgroup */
char narggrp[BUFLEN]; /* spec newsgroup */
--- 25,31 ----
char bfr[LBUFLEN]; /* general-use scratch area */
char optbuf[BUFLEN]; /* NEWSOPTS buffer */
! int y, e, n, q;
int verbose; /* For debugging. */
int nflag; /* for spec. newsgroup */
char narggrp[BUFLEN]; /* spec newsgroup */
***************
*** 32,37 ****
--- 32,38 ----
FILE *rcfp, *actfp;
char newsrc[BUFLEN],*rcline[LINES],rcbuf[LBUFLEN],*argvrc[LINES];
int mode = 1;
+ extern int line;
#ifndef SHELL
char *SHELL;
#endif
Index: compress.c
Prereq: 1.12
*** .d/compress.c Thu Oct 30 16:08:25 1986
--- compress.c Tue Dec 16 13:09:57 1986
***************
*** 1,6 ****
#ifdef SCCSID
! static char *SccsId = "@(#)compress.c 1.12 10/29/86";
! #endif SCCSID
static char rcs_ident[] = "Based on compress.c,v 4.0 85/07/30 12:50:00 joe Release";
/*
--- 1,6 ----
#ifdef SCCSID
! static char *SccsId = "@(#)compress.c 1.13 12/16/86";
! #endif /* SCCSID */
static char rcs_ident[] = "Based on compress.c,v 4.0 85/07/30 12:50:00 joe Release";
/*
Index: control.c
Prereq: 2.48
*** .d/control.c Fri Nov 21 16:04:47 1986
--- control.c Tue Dec 16 13:10:00 1986
***************
*** 19,25 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)control.c 2.48 11/21/86";
#endif /* SCCSID */
#include "iparams.h"
--- 19,25 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)control.c 2.49 12/16/86";
#endif /* SCCSID */
#include "iparams.h"
***************
*** 95,104 ****
#ifdef NOTIFY
TELLME = mp->m_who_to; /* reset whom to tell */
#endif /* NOTIFY */
! if(strcmp(mp->m_name, "cancel") == 0) /* special case */
! return (*mp->m_func)(cargc, cargv);
! (*mp->m_func)(cargc, cargv); /* do the function */
! break;
}
}
if( !mp->m_name ) {
--- 95,101 ----
#ifdef NOTIFY
TELLME = mp->m_who_to; /* reset whom to tell */
#endif /* NOTIFY */
! return (*mp->m_func)(cargc, cargv); /* do it */
}
}
if( !mp->m_name ) {
***************
*** 168,174 ****
if (argc < 2)
error("ihave: Too few arguments.");
if (strncmp(FULLSYSNAME, argv[argc - 1], SNLN) == 0)
! return;
list[0] = '\0';
if (argc > 2) {
for (i = 1; i < (argc - 1); ++i)
--- 165,171 ----
if (argc < 2)
error("ihave: Too few arguments.");
if (strncmp(FULLSYSNAME, argv[argc - 1], SNLN) == 0)
! return 0;
list[0] = '\0';
if (argc > 2) {
for (i = 1; i < (argc - 1); ++i)
***************
*** 177,183 ****
(void) strcat(list, argv[i]);
}
if (list[0] == '\0')
! return;
} else {
register FILE * outfp;
register long outpos, inpos;
--- 174,180 ----
(void) strcat(list, argv[i]);
}
if (list[0] == '\0')
! return 0;
} else {
register FILE * outfp;
register long outpos, inpos;
***************
*** 196,202 ****
if (outpos == ftell(outfp)) { /* if nothing is wanted */
(void) fclose(outfp);
(void) fseek(infp, inpos, 0);
! return;
}
(void) fclose(outfp);
/*
--- 193,199 ----
if (outpos == ftell(outfp)) { /* if nothing is wanted */
(void) fclose(outfp);
(void) fseek(infp, inpos, 0);
! return 0;
}
(void) fclose(outfp);
/*
***************
*** 230,235 ****
--- 227,233 ----
** Note that we do *not* change the history line
** so that if the "ihave" message comes in again it gets rejected.
*/
+ return 0;
}
/*
***************
*** 241,247 ****
* Give it to them with no fuss.
*/
c_sendme(argc, argv)
! register char ** argv;
{
struct srec srec;
--- 239,245 ----
* Give it to them with no fuss.
*/
c_sendme(argc, argv)
! register char **argv;
{
struct srec srec;
***************
*** 248,254 ****
if (argc < 2)
error("sendme: Too few arguments.");
if (strncmp(FULLSYSNAME, argv[argc - 1], SNLN) == 0)
! return;
if (s_find(&srec, argv[argc - 1]) != TRUE)
error("sendme: Can't find sys record for %s", argv[argc - 1]);
/* Send the articles. */
--- 246,252 ----
if (argc < 2)
error("sendme: Too few arguments.");
if (strncmp(FULLSYSNAME, argv[argc - 1], SNLN) == 0)
! return 0;
if (s_find(&srec, argv[argc - 1]) != TRUE)
error("sendme: Can't find sys record for %s", argv[argc - 1]);
/* Send the articles. */
***************
*** 268,273 ****
--- 266,272 ----
for (i = 1; i < (argc - 1); ++i)
sendmefunc(argv[i], &srec);
}
+ return 0;
}
static
***************
*** 331,338 ****
if (argc < 2)
error("newgroup: Too few arguments.");
! if (header.approved[0] == '\0')
! error("newgroup: %s not approved", argv[1]);
/* see if it already exists */
(void) rewind(actfp); clearerr(actfp);
--- 330,339 ----
if (argc < 2)
error("newgroup: Too few arguments.");
! if (header.approved[0] == '\0') {
! logerr("newgroup: %s not approved", argv[1]);
! return 1;
! }
/* see if it already exists */
(void) rewind(actfp); clearerr(actfp);
***************
*** 349,355 ****
p -= 3;
if (argc > 2 && strcmp(argv[2], "moderated") == 0) {
if (*p == 'm')
! return;
# ifdef NONEWGROUPS
if(can_change) {
*p = 'm';
--- 350,356 ----
p -= 3;
if (argc > 2 && strcmp(argv[2], "moderated") == 0) {
if (*p == 'm')
! return 0;
# ifdef NONEWGROUPS
if(can_change) {
*p = 'm';
***************
*** 361,367 ****
#endif /* NONEWGROUPS */
} else {
if (*p != 'm')
! return;
# ifdef NONEWGROUPS
if(can_change) {
*p = 'y';
--- 362,368 ----
#endif /* NONEWGROUPS */
} else {
if (*p != 'm')
! return 0;
# ifdef NONEWGROUPS
if(can_change) {
*p = 'y';
***************
*** 413,419 ****
* No permission to change
*/
if(!can_change)
! return;
# endif /* NONEWGROUPS */
/* The active file was wrong about the state of the
* group. Rewrite the active file
--- 414,420 ----
* No permission to change
*/
if(!can_change)
! return 0;
# endif /* NONEWGROUPS */
/* The active file was wrong about the state of the
* group. Rewrite the active file
***************
*** 427,433 ****
else
logerr("Newsgroup %s changed from unmoderated to moderated",
argv[1]);
! return;
}
}
--- 428,434 ----
else
logerr("Newsgroup %s changed from unmoderated to moderated",
argv[1]);
! return 0;
}
}
***************
*** 439,445 ****
fprintf(actfp, "%s 00000 00001 %c\n", argv[1],
(argc > 2 && strcmp(argv[2], "moderated") == 0)
? 'm' : 'y');
! #ifdef USG
/*
* U G L Y K L U D G E
* This utter piece of tripe is the only way I know of
--- 440,446 ----
fprintf(actfp, "%s 00000 00001 %c\n", argv[1],
(argc > 2 && strcmp(argv[2], "moderated") == 0)
? 'm' : 'y');
! #if defined(USG) || defined(MG1)
/*
* U G L Y K L U D G E
* This utter piece of tripe is the only way I know of
***************
*** 449,454 ****
--- 450,456 ----
* on all "real" USG Unix systems, It will probably
* break on some obscure look alike that doesnt use the
* real ATT stdio.h
+ * also broken in WCW MG-1 42nix 2.0
* Don't blame me, blame ATT. stdio should have
* already done the following line for us, but it didn't
*/
***************
*** 487,492 ****
--- 489,495 ----
(void) mclose(fd);
}
# endif /* NOTIFY */
+ return 0;
}
/*
***************
*** 505,515 ****
if (argc < 2)
error("rmgroup: Too few arguments.");
if (!validng(argv[1]))
! return;
! if (header.approved[0] == '\0')
! error("rmgroup: %s not approved", argv[1]);
! #ifndef MANUALLY
#ifdef ORGDISTRIB
/*
* Allow local as well as organizational removals
--- 508,520 ----
if (argc < 2)
error("rmgroup: Too few arguments.");
if (!validng(argv[1]))
! return 0;
! if (header.approved[0] == '\0') {
! logerr("rmgroup: %s not approved", argv[1]);
! return 1;
! }
! #ifdef MANUALLY
#ifdef ORGDISTRIB
/*
* Allow local as well as organizational removals
***************
*** 519,528 ****
#else /* !ORGDISTRIB */
if (!strcmp("local", header.distribution))
#endif /* !ORGDISTRIB */
shouldremove++;
- #endif /* !MANUALLY */
#ifdef NOTIFY
! sprintf(subjline, "Recevied rmgroup for %s", argv[1]);
fd = mailhdr((struct hbuf *)NULL, subjline);
if (fd != NULL) {
if (shouldremove) {
--- 524,533 ----
#else /* !ORGDISTRIB */
if (!strcmp("local", header.distribution))
#endif /* !ORGDISTRIB */
+ #endif /* MANUALLY */
shouldremove++;
#ifdef NOTIFY
! sprintf(subjline, "Received rmgroup for %s", argv[1]);
fd = mailhdr((struct hbuf *)NULL, subjline);
if (fd != NULL) {
if (shouldremove) {
***************
*** 552,557 ****
--- 557,563 ----
rc = system(bfr);
log("system(%s) status %d", bfr, rc);
}
+ return 0;
}
/*
***************
*** 685,690 ****
--- 691,697 ----
(void) fclose(u);
(void) mclose(f);
}
+ return 0;
}
/*
***************
*** 733,738 ****
--- 740,746 ----
(void) pclose(u);
(void) mclose(fd);
}
+ return 0;
}
/*
***************
*** 751,756 ****
--- 759,765 ----
fprintf(f, "The header of your message follows:\n\n");
(void) hwrite(&header, f);
(void) mclose(f);
+ return 0;
}
/*
***************
*** 773,778 ****
--- 782,788 ----
#endif /* !NOTIFY */
rc = system(bfr);
log("system(%s) status %d", bfr, rc);
+ return 0;
}
/*
***************
*** 794,799 ****
--- 804,810 ----
(void) mclose(f);
}
#endif /* NOTIFY */
+ return 0;
}
/* ARGSUSED */
***************
*** 811,816 ****
--- 822,828 ----
(void) mclose(f);
}
#endif /* NOTIFY */
+ return 0;
}
/*
Index: expire.c
Prereq: 2.48
*** .d/expire.c Fri Nov 21 16:04:48 1986
--- expire.c Tue Dec 16 13:10:01 1986
***************
*** 17,23 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)expire.c 2.48 11/21/86";
#endif /* SCCSID */
#include "params.h"
--- 17,23 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)expire.c 2.49 12/16/86";
#endif /* SCCSID */
#include "params.h"
***************
*** 491,499 ****
goto checkdate;
}
for(i=0; i<NUNREC; i++)
! if (h.unrec[i] != NULL)
free(h.unrec[i]);
! else
break;
if (!hread(&h, fp, TRUE)) {
printf("Garbled article %s.\n", filename);
--- 491,500 ----
goto checkdate;
}
for(i=0; i<NUNREC; i++)
! if (h.unrec[i] != NULL) {
free(h.unrec[i]);
! h.unrec[i] = NULL;
! } else
break;
if (!hread(&h, fp, TRUE)) {
printf("Garbled article %s.\n", filename);
Index: funcs.c
Prereq: 2.34
*** .d/funcs.c Fri Nov 21 16:04:55 1986
--- funcs.c Tue Dec 16 13:10:02 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)funcs.c 2.34 11/21/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)funcs.c 2.35 12/16/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
***************
*** 584,590 ****
*/
(void) strncpy(facgroups, FASCIST, BUFLEN);
! sprintf(factemp, "%s/%s", LIBDIR, "authorized");
facfd = fopen(factemp, "r");
if (facfd != NULL) { /* If no such file, we go with the global default */
--- 584,590 ----
*/
(void) strncpy(facgroups, FASCIST, BUFLEN);
! sprintf(factemp, "%s/%s", LIB, "authorized");
facfd = fopen(factemp, "r");
if (facfd != NULL) { /* If no such file, we go with the global default */
***************
*** 599,605 ****
#ifdef DEBUG
fprintf(stderr, "facgroups = %s\n", facgroups);
fprintf(stderr, "newsgroups = %s\n", newsgroups);
! #endif DEBUG
/* We step through the newsgroups being posted to and check each against
* the restriction list. *ALL* posted groups must match the restriction
--- 599,605 ----
#ifdef DEBUG
fprintf(stderr, "facgroups = %s\n", facgroups);
fprintf(stderr, "newsgroups = %s\n", newsgroups);
! #endif /* DEBUG */
/* We step through the newsgroups being posted to and check each against
* the restriction list. *ALL* posted groups must match the restriction
***************
*** 625,631 ****
/* must be okay -- return */
#ifdef DEBUG
fprintf (stderr, "Newsgroups approved for this poster.\n");
! #endif DEBUG
return FALSE;
}
! #endif FASCIST
--- 625,631 ----
/* must be okay -- return */
#ifdef DEBUG
fprintf (stderr, "Newsgroups approved for this poster.\n");
! #endif /* DEBUG */
return FALSE;
}
! #endif /* FASCIST */
Index: funcs2.c
Prereq: 1.16
*** .d/funcs2.c Thu Oct 30 16:10:57 1986
--- funcs2.c Tue Dec 16 13:10:03 1986
***************
*** 17,23 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)funcs2.c 1.16 10/23/86";
#endif /* SCCSID */
#include "params.h"
--- 17,23 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)funcs2.c 1.17 12/16/86";
#endif /* SCCSID */
#include "params.h"
***************
*** 384,395 ****
char mbuf[BUFLEN], modadd[BUFLEN];
FILE *mfd;
/* Let's find a path to the backbone */
! sprintf(mbuf, "%s/mailpaths", LIBDIR);
mfd = xfopen(mbuf, "r");
do {
if (fgets(mbuf, sizeof mbuf, mfd) == NULL)
xerror("Can't find internet in %s/mailpaths",
! LIBDIR);
} while (!prefix(mbuf, "internet"));
if (sscanf(mbuf, "%*s %s", modadd) != 1)
xerror("backbone address corrupted");
--- 384,395 ----
char mbuf[BUFLEN], modadd[BUFLEN];
FILE *mfd;
/* Let's find a path to the backbone */
! sprintf(mbuf, "%s/mailpaths", LIB);
mfd = xfopen(mbuf, "r");
do {
if (fgets(mbuf, sizeof mbuf, mfd) == NULL)
xerror("Can't find internet in %s/mailpaths",
! LIB);
} while (!prefix(mbuf, "internet"));
if (sscanf(mbuf, "%*s %s", modadd) != 1)
xerror("backbone address corrupted");
Index: getdate.y
Prereq: 2.14
*** .d/getdate.y Fri Nov 21 16:05:02 1986
--- getdate.y Tue Dec 16 13:10:04 1986
***************
*** 3,9 ****
/* Originally from: Steven M. Bellovin (unc!smb) */
/* Dept. of Computer Science */
/* University of North Carolina at Chapel Hill */
! /* @(#)getdate.y 2.14 11/21/86 */
#include <sys/types.h>
#ifdef USG
--- 3,9 ----
/* Originally from: Steven M. Bellovin (unc!smb) */
/* Dept. of Computer Science */
/* University of North Carolina at Chapel Hill */
! /* @(#)getdate.y 2.15 12/16/86 */
#include <sys/types.h>
#ifdef USG
***************
*** 22,30 ****
#include "defs.h"
#if defined(BSD4_2) || defined (BSD4_1C)
#include <sys/time.h>
! #else sane
#include <time.h>
! #endif sane
#define NULL 0
#define daysec (24L*60L*60L)
--- 22,30 ----
#include "defs.h"
#if defined(BSD4_2) || defined (BSD4_1C)
#include <sys/time.h>
! #else /* sane */
#include <time.h>
! #endif /* sane */
#define NULL 0
#define daysec (24L*60L*60L)
Index: help
*** .d/help Thu Oct 30 16:12:10 1986
--- help Tue Dec 16 13:10:06 1986
***************
*** 20,24 ****
K Mark the rest of the articles in current group as read.
x Exit. Don't update .newsrc.
v Version. Print current news version number.
!
c, f, r, e, h, and s can be followed by -'s to refer to the previous article
--- 20,25 ----
K Mark the rest of the articles in current group as read.
x Exit. Don't update .newsrc.
v Version. Print current news version number.
! l List unread articles in newsgroup.
! L List all articles in newsgroup.
c, f, r, e, h, and s can be followed by -'s to refer to the previous article
Index: ifuncs.c
Prereq: 2.58
*** .d/ifuncs.c Fri Nov 21 16:04:00 1986
--- ifuncs.c Tue Dec 16 13:10:07 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)ifuncs.c 2.58 11/21/86";
#endif /* SCCSID */
#include "iparams.h"
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)ifuncs.c 2.59 12/16/86";
#endif /* SCCSID */
#include "iparams.h"
***************
*** 62,68 ****
extern char firstbufname[];
#endif
! broadcast()
{
register char *hptr;
register char *sptr;
--- 62,69 ----
extern char firstbufname[];
#endif
! broadcast(is_rnews)
! int is_rnews;
{
register char *hptr;
register char *sptr;
***************
*** 73,78 ****
--- 74,82 ----
char sentbuf[LBUFLEN];
int nsent = 0;
char *sentsys;
+ #ifdef HIDDENNET
+ int len;
+ #endif /* HIDDENNET */
/* h is a local copy of the header we can scribble on */
#ifdef VMS
***************
*** 86,94 ****
(void) strcpy(sentbuf, h.ident);
(void) strcat(sentbuf, " sent to ");
! sentsys = index(sentbuf, 0);
nsent = 0;
/* break path into list of systems. */
sptr = hptr = h.path;
while ((hptr=strpbrk(hptr, NETCHRS)) != NULL) {
*hptr++ = '\0';
--- 90,105 ----
(void) strcpy(sentbuf, h.ident);
(void) strcat(sentbuf, " sent to ");
! sentsys = index(sentbuf, '\0');
nsent = 0;
/* break path into list of systems. */
+ hptr = h.path;
+ #ifdef HIDDENNET
+ if (!is_rnews &&
+ strncmp(FULLSYSNAME, h.path, (len = strlen(FULLSYSNAME))) == 0
+ && index(NETCHRS, h.path[len]))
+ (void) strcpy(h.path, &(h.path[len+1]));
+ #endif HIDDENNET
sptr = hptr = h.path;
while ((hptr=strpbrk(hptr, NETCHRS)) != NULL) {
*hptr++ = '\0';
Index: inews.c
Prereq: 2.70
*** .d/inews.c Fri Nov 21 16:04:44 1986
--- inews.c Tue Dec 16 13:10:09 1986
***************
*** 17,23 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)inews.c 2.70 11/21/86";
#endif /* SCCSID */
#include "iparams.h"
--- 17,23 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)inews.c 2.71 12/16/86";
#endif /* SCCSID */
#include "iparams.h"
***************
*** 131,137 ****
if (flock(fileno(actfp), LOCK_SH|LOCK_NB) < 0 && errno == EWOULDBLOCK)
#else /* !BSD4_2 */
#ifdef LOCKF
! if (lockf(fileno(actfp), F_TLOCK, 0) < 0 && errno == EAGAIN)
#else /* !LOCKF */
sprintf(bfr, "%s.lock", ACTIVE);
if (LINK(ACTIVE,bfr) < 0 && errno == EEXIST)
--- 131,138 ----
if (flock(fileno(actfp), LOCK_SH|LOCK_NB) < 0 && errno == EWOULDBLOCK)
#else /* !BSD4_2 */
#ifdef LOCKF
! if (lockf(fileno(actfp), F_TLOCK, 0) < 0 &&
! (errno == EAGAIN || errno == EACCES))
#else /* !LOCKF */
sprintf(bfr, "%s.lock", ACTIVE);
if (LINK(ACTIVE,bfr) < 0 && errno == EEXIST)
***************
*** 152,157 ****
--- 153,160 ----
#endif /* !BSD4_2 && !LOCKF */
}
if (argc > 1 && !strcmp(*(argv+1), "-U")) {
+ if (spool_news) /* can't unspool while things are locked */
+ xxit(0);
dounspool();
/* NOT REACHED */
}
***************
*** 163,169 ****
/* NOT REACHED */
}
#ifdef NICENESS
! nice(NICENESS);
#endif /* NICENESS */
} else
if (argc < 2)
--- 166,173 ----
/* NOT REACHED */
}
#ifdef NICENESS
! if (nice(0) < NICENESS)
! (void) nice(NICENESS);
#endif /* NICENESS */
} else
if (argc < 2)
***************
*** 504,510 ****
(void) sprintf(buf, "%s/.rnews/%02d%02d%02d%02d%02d%x",
#endif /* V7 */
#endif /* VMS */
! SPOOLDIR,
tp->tm_year, tp->tm_mon+1, tp->tm_mday,
tp->tm_hour, tp->tm_min, getpid());
sp = xfopen(buf, "w");
--- 508,514 ----
(void) sprintf(buf, "%s/.rnews/%02d%02d%02d%02d%02d%x",
#endif /* V7 */
#endif /* VMS */
! SPOOL,
tp->tm_year, tp->tm_mon+1, tp->tm_mday,
tp->tm_hour, tp->tm_min, getpid());
sp = xfopen(buf, "w");
***************
*** 653,659 ****
* This will overflow with 99999 articles.
*/
fprintf(actfp, "%s %05ld", ngname, ngsize+1);
! #ifdef USG
/*
* U G L Y K L U D G E
* This utter piece of tripe is the only way I know of to get
--- 657,663 ----
* This will overflow with 99999 articles.
*/
fprintf(actfp, "%s %05ld", ngname, ngsize+1);
! #if defined(USG) || defined(MG1)
/*
* U G L Y K L U D G E
* This utter piece of tripe is the only way I know of to get
***************
*** 664,669 ****
--- 668,674 ----
* real ATT stdio.h
* Don't blame me, blame ATT. stdio should have already done the
* following line for us, but it doesn't
+ * also broken in WCW MG-1 42nix 2.0
*/
actfp->_flag |= _IOWRT;
#endif /* USG */
***************
*** 726,732 ****
}
#ifdef ZAPNOTES
! if (strcmp(header.title, "Re: Orphaned Response") == 0) {
logerr("Orphaned Response, moved to junk");
if (localize("junk"))
savehist(histline);
--- 731,737 ----
}
#ifdef ZAPNOTES
! if (strncmp(header.title, "Re: Orphaned Response", 21) == 0) {
logerr("Orphaned Response, moved to junk");
if (localize("junk"))
savehist(histline);
***************
*** 763,774 ****
fprintf(stderr," directly.\nYour article is being mailed to");
fprintf(stderr," the moderator who will post it for you.\n");
/* Let's find a path to the backbone */
! sprintf(bfr, "%s/mailpaths", LIBDIR);
mfd = xfopen(bfr, "r");
do {
if (fscanf(mfd, "%s %s", bfr, modadd) != 2)
xerror("Can't find backbone in %s/mailpaths",
! LIBDIR);
} while (strcmp(bfr, "backbone") != 0 && !ngmatch(is_mod, bfr));
(void) fclose(mfd);
/* fake a header for mailhdr */
--- 768,779 ----
fprintf(stderr," directly.\nYour article is being mailed to");
fprintf(stderr," the moderator who will post it for you.\n");
/* Let's find a path to the backbone */
! sprintf(bfr, "%s/mailpaths", LIB);
mfd = xfopen(bfr, "r");
do {
if (fscanf(mfd, "%s %s", bfr, modadd) != 2)
xerror("Can't find backbone in %s/mailpaths",
! LIB);
} while (strcmp(bfr, "backbone") != 0 && !ngmatch(is_mod, bfr));
(void) fclose(mfd);
/* fake a header for mailhdr */
***************
*** 866,883 ****
(void) fclose(tfp);
(void) fclose(infp);
if(exitcode == 0) {
- int pid;
/* article has passed all the checks, so work in background */
! if (mode != PROC)
! if ((pid=vfork()) < 0)
xerror("Can't fork");
else if (pid > 0)
exit(0);
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif /* SIGTTOU */
savehist(histline);
! broadcast();
}
xxit(mode == PROC ? 0 : exitcode);
}
--- 871,889 ----
(void) fclose(tfp);
(void) fclose(infp);
if(exitcode == 0) {
/* article has passed all the checks, so work in background */
! if (mode != PROC) {
! int pid;
! if ((pid=fork()) < 0)
xerror("Can't fork");
else if (pid > 0)
exit(0);
+ }
#ifdef SIGTTOU
signal(SIGTTOU, SIG_IGN);
#endif /* SIGTTOU */
savehist(histline);
! broadcast(mode==PROC);
}
xxit(mode == PROC ? 0 : exitcode);
}
***************
*** 1099,1107 ****
register struct direct *dir;
register int foundsome;
#ifdef VMS
! sprintf(bfr, "%s/+rnews", SPOOLDIR);
#else /* !VMS */
! sprintf(bfr, "%s/.rnews", SPOOLDIR);
#endif /* !VMS */
if (chdir(bfr) < 0)
--- 1105,1113 ----
register struct direct *dir;
register int foundsome;
#ifdef VMS
! sprintf(bfr, "%s/+rnews", SPOOL);
#else /* !VMS */
! sprintf(bfr, "%s/.rnews", SPOOL);
#endif /* !VMS */
if (chdir(bfr) < 0)
***************
*** 1117,1123 ****
if (dir->d_name[0] == '.')
continue;
sprintf(bfr,"%s -S -p %s", RNEWS, dir->d_name);
! system(bfr);
(void) unlink(dir->d_name);
foundsome++;
}
--- 1123,1134 ----
if (dir->d_name[0] == '.')
continue;
sprintf(bfr,"%s -S -p %s", RNEWS, dir->d_name);
! if (system(bfr) != 0) {
! sprintf(bfr, "../%s", dir->d_name);
! (void) LINK(dir->d_name, bfr);
! logerr("rnews failed. Batch saved in %s/%s",
! SPOOLDIR, dir->d_name);
! }
(void) unlink(dir->d_name);
foundsome++;
}
Index: install.sh
Prereq: 1.16
*** .d/install.sh Thu Oct 30 16:16:49 1986
--- install.sh Tue Dec 16 13:10:09 1986
***************
*** 1,4 ****
! : '@(#)install.sh 1.16 10/29/86'
if test "$#" != 6
then
--- 1,4 ----
! : '@(#)install.sh 1.17 12/16/86'
if test "$#" != 6
then
***************
*** 110,128 ****
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
--- 110,258 ----
fi
cat >$LIBDIR/aliases.new <<EOF
! net.audio rec.audio
! net.auto rec.autos
! net.auto.tech rec.autos.tech
! net.aviation rec.aviation
! net.bicycle rec.bicycles
! net.rec.birds rec.birds
! net.rec.boat rec.boats
! net.cooks rec.food.cooking
! net.wines rec.food.drink
! net.veg rec.food.veg
! net.games rec.games.misc
! net.games.board rec.games.board
! net.rec.bridge rec.games.bridge
! net.games.chess rec.games.chess
! net.games.emp rec.games.empire
! net.games.frp rec.games.frp
! net.games.go rec.games.go
! net.games.hack rec.games.hack
! net.games.pbm rec.games.pbm
! net.games.rogue rec.games.rogue
! net.games.trivia rec.games.trivia
! net.games.video rec.games.video
! net.garden rec.gardens
! net.ham-radio rec.ham-radio
! net.ham-radio.packet rec.ham-radio.packet
! net.jokes rec.humor
! net.jokes.d rec.humor.d
! mod.mag rec.mag
! net.mag rec.mag
! net.books rec.arts.books
! net.comics rec.arts.comics
! net.tv.drwho rec.arts.drwho
! mod.movies rec.arts.movies
! net.movies rec.arts.movies
! net.sf-lovers rec.arts.sf-lovers
! net.startrek rec.arts.startrek
! net.tv rec.arts.tv
! net.tv.soaps rec.arts.tv.soaps
! net.wobegon rec.arts.wobegon
! net.rec rec.misc
! net.cycle rec.motorcycles
! net.music.classical rec.music.classical
! net.music.folk rec.music.folk
! net.music.gdead rec.music.gdead
! net.music.makers rec.music.makers
! net.music rec.music.misc
! net.music.synth rec.music.synth
! net.rec.nude rec.nude
! net.pets rec.pets
! net.rec.photo rec.photo
! net.poems rec.arts.poems
! net.puzzle rec.puzzles
! net.railroad rec.railroad
! net.rec.scuba rec.scuba
! net.rec.ski rec.skiing
! net.rec.skydive rec.skydiving
! net.sport rec.sport.misc
! net.sport.baseball rec.sport.baseball
! net.sport.hoops rec.sport.basketball
! net.sport.football rec.sport.football
! net.sport.hockey rec.sport.hockey
! net.travel rec.travel
! net.video rec.video
! net.rec.wood rec.woodworking
! net.ai comp.ai
! net.arch comp.arch
! net.bugs.2bsd comp.bugs.2bsd
! net.bugs.4bsd comp.bugs.4bsd
! net.bugs.usg comp.bugs.sys5
! net.bugs.uucp comp.bugs.misc
! net.bugs.v7 comp.bugs.misc
! net.bugs comp.bugs.misc
! net.cog-eng comp.cog-eng
! net.cse comp.edu
! net.database comp.databases
! net.dcom comp.dcom.modems
! net.decus comp.org.decus
! net.emacs comp.emacs
! net.eunice comp.os.eunice
! net.graphics comp.graphics
! net.info-terms comp.terminals
! net.internat comp.std.internat
! net.lan comp.dcom.lans
! net.lang comp.lang.misc
! net.lang.ada comp.lang.ada
! net.lang.apl comp.lang.apl
! net.lang.c comp.lang.c
! net.lang.c++ comp.lang.c++
! net.lang.f77 comp.lang.fortran
! net.lang.forth comp.lang.forth
! net.lang.lisp comp.lang.lisp
! net.lang.mod2 comp.lang.modula2
! net.lang.pascal comp.lang.pascal
! net.lang.prolog comp.lang.prolog
! net.lang.st80 comp.lang.smalltalk
! net.lsi comp.lsi
! net.mail comp.mail.uucp
! net.mail.headers comp.mail.headers
! net.micro comp.sys.misc
! net.micro.6809 comp.sys.m6809
! net.micro.68k comp.sys.m68k
! net.micro.apple comp.sys.apple
! net.micro.amiga comp.sys.amiga
! net.micro.atari16 comp.sys.atari.st
! net.micro.atari8 comp.sys.atari.8bit
! net.micro.att comp.sys.att
! net.micro.cbm comp.sys.cbm
! net.micro.cpm comp.os.cpm
! net.micro.hp comp.sys.hp
! net.micro.mac comp.sys.mac
! net.micro.ns32k comp.sys.nsc.32k
! net.micro.pc comp.sys.ibm.pc
! net.micro.ti comp.sys.ti
! net.micro.trs-80 comp.sys.tandy
! net.news news.misc
! net.news.adm news.admin
! net.news.b news.software.b
! net.news.config news.config
! net.news.group news.groups
! net.news.newsite news.newsites
! net.news.notes news.software.notes
! net.news.sa news.sysadmin
! net.news.stargate news.stargate
! net.periphs comp.periphs
! net.sources.d comp.sources.d
! net.text comp.text
! net.unix comp.unix.questions
! net.unix-wizards comp.unix.wizards
! net.usenix comp.org.usenix
! net.wanted.sources comp.sources.wanted
! net.chess rec.games.chess
! net.trivia rec.games.trivia
! net.rec.radio rec.ham-radio
! net.term comp.terminals
! net.joke rec.humor
! net.vlsi comp.lsi
! net.micro.16k comp.sys.nsc.32k
! net.music.gdea rec.music.gdead
! net.notes news.software.notes
! net.periph comp.periphs
! net.puzzles rec.puzzles
! net.unix.wizards comp.unix.wizards
! net.sources.wanted comp.sources.wanted
net.consumers misc.consumers
net.consumers.house misc.consumers.house
net.house misc.consumers.house
***************
*** 187,192 ****
--- 317,327 ----
talk.religion talk.religion.misc
net.rumor talk.rumors
talk.rumor talk.rumors
+ rec.skydive rec.skydiving
+ comp.sources.games net.sources.games
+ comp.sources.bugs net.sources.bugs
+ comp.sources.unix net.sources
+ comp.sources.mac net.sources.mac
EOF
: if no aliases file, make one
if test ! -f $LIBDIR/aliases
Index: ndir.c
Prereq: 1.8
*** .d/ndir.c Thu Oct 30 16:12:02 1986
--- ndir.c Tue Dec 16 13:10:10 1986
***************
*** 4,10 ****
#include "ndir.h"
#ifdef SCCSID
! static char *SccsId = "@(#)ndir.c 1.8 4/26/85";
#endif /* SCCSID */
/*
--- 4,10 ----
#include "ndir.h"
#ifdef SCCSID
! static char *SccsId = "@(#)ndir.c 1.9 12/16/86";
#endif /* SCCSID */
/*
***************
*** 48,58 ****
--- 48,68 ----
#else /* V7 file system */
#define ODIRSIZ 14
+ #if HP9K5
+ /* HP 9000/500 has a weird directory format */
+ struct olddirect {
+ char od_name[DIRSIZ+2]; /* filename */
+ short od_object_type;
+ short od_file_code;
+ short od_ino; /* inode */
+ };
+ #else /* normal V7 */
struct olddirect {
short od_ino;
char od_name[ODIRSIZ];
};
#endif /* V7 */
+ #endif /* !pyr */
/*
* get next entry in a directory.
Index: pathinit.c
Prereq: 1.18
*** .d/pathinit.c Thu Oct 30 16:09:55 1986
--- pathinit.c Tue Dec 16 13:10:11 1986
***************
*** 34,40 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)pathinit.c 1.18 10/23/86";
#endif /* SCCSID */
#if defined(INEW) || defined(EXP)
--- 34,40 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)pathinit.c 1.19 12/16/86";
#endif /* SCCSID */
#if defined(INEW) || defined(EXP)
***************
*** 116,123 ****
pathinit()
{
#if defined(INEW) && defined(NOTIFY)
- FILE *nfd; /* notify file descriptor */
- char *p;
#endif /* INEW && NOTIFY */
#ifndef ROOTID
struct passwd *pw; /* struct for pw lookup */
--- 116,121 ----
Index: postnews.c
Prereq: 1.29
*** .d/postnews.c Fri Nov 21 16:05:06 1986
--- postnews.c Tue Dec 16 13:10:12 1986
***************
*** 16,24 ****
* script, and does more intelligent prompting and filtering than possible
* in a shell script.
*/
-
#ifdef SCCSID
! static char *SccsId = "@(#)postnews.c 1.29 11/21/86";
#endif /* SCCSID */
#include "params.h"
--- 16,23 ----
* script, and does more intelligent prompting and filtering than possible
* in a shell script.
*/
#ifdef SCCSID
! static char *SccsId = "@(#)postnews.c 1.30 12/16/86";
#endif /* SCCSID */
#include "params.h"
***************
*** 57,62 ****
--- 56,62 ----
char descr[128];
} distr[MAXDISTR];
+ char def_distr[24] = ""; /* default distribution */
FILE *xfopen();
main(argc, argv)
***************
*** 253,258 ****
--- 253,259 ----
#endif /* !PAGE */
}
printf("These are the currently active groups:\n");
+ (void) fflush(stdout);
sprintf(buf, "exec %s %s/newsgroups", pager, LIB);
(void) system(buf);
continue;
***************
*** 310,315 ****
--- 311,322 ----
(void) strcpy(def, deflt);
if (ngmatch("misc.test", newsgroups))
(void) strcpy(def, "local");
+ for (i=0; distr[i].abbr[0]; i++) {
+ if (strcmp(distr[i].abbr, def) == 0)
+ break;
+ }
+ if (distr[i].abbr[0] == '\0')
+ strcpy(def, def_distr);
for(;;) {
do {
(void) sprintf(buf, "Distribution (default='%s', '?' for help) : ", def);
***************
*** 419,424 ****
--- 426,432 ----
fprintf(tf, "> %s", buf);
(void) fclose(of);
printf("OK, but please edit it to suppress unnecessary verbiage, signatures, etc.\n");
+ (void) fflush(stdout);
}
}
***************
*** 732,739 ****
--- 740,752 ----
if (fscanf(fd, "%s %[^\n]", distr[i].abbr, distr[i].descr)
!= 2)
break;
+ if (strcmp(distr[i].abbr, "default") == 0)
+ strcpy(def_distr, distr[i--].descr);
}
(void) fclose(fd);
+ distr[i].abbr[0] = '\0';
+ if (def_distr[0] == '\0')
+ strcpy(def_distr, "world"); /* maybe "local" is better? */
}
/*
***************
*** 886,892 ****
*canpost = 'n';
return FALSE;
}
! #endif FASCIST
return TRUE;
} else
return FALSE;
--- 899,905 ----
*canpost = 'n';
return FALSE;
}
! #endif /* FASCIST */
return TRUE;
} else
return FALSE;
***************
*** 1047,1052 ****
--- 1060,1066 ----
(void) sprintf(buf,"exec %s/%s 13 < %s >> %s\n", LIB, "caesar", codedfile, article);
printf("Encoding article -- please stand by\n");
+ (void) fflush(stdout);
if (system(buf)) {
printf("encoding failed");
exit(2);
Index: process.c
Prereq: 2.16
*** .d/process.c Fri Nov 21 16:04:39 1986
--- process.c Tue Dec 16 13:10:13 1986
***************
*** 16,28 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)process.c 2.16 11/21/86";
#endif /* SCCSID */
#include "rparams.h"
char coptbuf[LBUFLEN], datebuf[LBUFLEN];
- struct hbuf header;
#define OPTION 0 /* pick up an option string */
#define STRING 1 /* pick up a string of arguments */
--- 16,27 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)process.c 2.17 12/16/86";
#endif /* SCCSID */
#include "rparams.h"
char coptbuf[LBUFLEN], datebuf[LBUFLEN];
#define OPTION 0 /* pick up an option string */
#define STRING 1 /* pick up a string of arguments */
Index: readr.c
Prereq: 2.59
*** .d/readr.c Fri Nov 21 16:04:38 1986
--- readr.c Tue Dec 16 13:10:14 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)readr.c 2.59 11/21/86";
#endif /* SCCSID */
#include "rparams.h"
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)readr.c 2.60 12/16/86";
#endif /* SCCSID */
#include "rparams.h"
***************
*** 221,226 ****
--- 221,233 ----
switch (*bptr++) {
+ /* display list of articles in current group */
+ case 'l':
+ case 'L':
+ list_group(groupdir, atoi(bptr),
+ (*(bptr - 1) == 'l') ? FALSE : TRUE, pngsize);
+ break;
+
/* No. Go on to next article. */
case 'n':
EOL();
***************
*** 516,522 ****
*ptr2 = '\0';
ptr2 = index(ptr3, '/');
if (!ptr2) {
- *ptr3 = '\0';
if (strcmp(ptr3, "cancelled") == 0) {
fprintf(ofp, "Article %s has been cancelled.\n",
bptr);
--- 523,528 ----
Index: rfuncs2.c
Prereq: 1.32
*** .d/rfuncs2.c Thu Oct 30 16:10:44 1986
--- rfuncs2.c Tue Dec 16 13:10:16 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs2.c 1.32 10/23/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs2.c 1.33 12/16/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
***************
*** 24,29 ****
--- 24,30 ----
#include "rparams.h"
static char lbuf[LBUFLEN];
+ extern char *replyname();
FILE *popen();
Index: uname.c
Prereq: 2.12
*** .d/uname.c Fri Nov 21 16:04:50 1986
--- uname.c Tue Dec 16 13:10:17 1986
***************
*** 21,27 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)uname.c 2.12 11/21/86";
#endif /* SCCSID */
#include "params.h"
--- 21,27 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)uname.c 2.13 12/16/86";
#endif /* SCCSID */
#include "params.h"
***************
*** 36,42 ****
{
char *cp;
gethostname(uptr->nodename, sizeof (uptr->nodename));
! if (MYDOMAIN[0] == '\0') /* get domain name from hostname */
return;
cp = index(uptr->nodename, '.');
if (cp)
--- 36,43 ----
{
char *cp;
gethostname(uptr->nodename, sizeof (uptr->nodename));
! cp = MYDOMAIN; /* Gould compiler can't handle ""[0] */
! if (*cp == '\0') /* get domain name from hostname */
return;
cp = index(uptr->nodename, '.');
if (cp)
Index: unbatch.c
Prereq: 1.23
*** .d/unbatch.c Fri Nov 21 16:04:53 1986
--- unbatch.c Tue Dec 16 13:10:17 1986
***************
*** 13,19 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)unbatch.c 1.23 11/21/86";
#endif /* SCCSID */
#define MAXARGS 32
--- 13,19 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)unbatch.c 1.24 12/16/86";
#endif /* SCCSID */
#define MAXARGS 32
***************
*** 161,167 ****
--- 161,171 ----
if (cp++ == NULL)
cp = args[0];
+ # ifdef HOME
+ sprintf(path, "%s/%s/%s", logdir(HOME), LIBDIR, cp);
+ # else /* !HOME */
sprintf(path, "%s/%s", LIBDIR, cp);
+ # endif /* HOME */
/*
* "path" is absolute, no searching is needed, we use
Index: virtterm.c
Prereq: 1.12
*** .d/virtterm.c Thu Oct 30 16:08:32 1986
--- virtterm.c Tue Dec 16 13:10:19 1986
***************
*** 5,11 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)virtterm.c 1.12 10/29/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
--- 5,11 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)virtterm.c 1.13 12/16/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
***************
*** 89,95 ****
int COLS; /* width of screen */
struct line {
! char len;
char flags;
char *l; /* pointer to actual line text, NO NULL @ end */
};
--- 89,95 ----
int COLS; /* width of screen */
struct line {
! short len; /* should really be u_char */
char flags;
char *l; /* pointer to actual line text, NO NULL @ end */
};
***************
*** 1006,1009 ****
winch_upd();
}
! #endif TIOCGWINSZ
--- 1006,1009 ----
winch_upd();
}
! #endif /* TIOCGWINSZ */
Index: visual.c
Prereq: 1.33
*** .d/visual.c Fri Nov 21 16:04:36 1986
--- visual.c Tue Dec 16 13:10:21 1986
***************
*** 4,10 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)visual.c 1.33 11/21/86";
#endif /* SCCSID */
#include "rparams.h"
--- 4,10 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)visual.c 1.34 12/16/86";
#endif /* SCCSID */
#include "rparams.h"
***************
*** 324,330 ****
secpr[0] = '\0';
if (countset == 0)
count = 1;
! docmd(c, count);
if (c != '?' && c != 'H') /* UGGH */
prflags &=~ HELPMSG;
if (dlinno > hdrstart)
--- 324,330 ----
secpr[0] = '\0';
if (countset == 0)
count = 1;
! docmd(c, count, countset);
if (c != '?' && c != 'H') /* UGGH */
prflags &=~ HELPMSG;
if (dlinno > hdrstart)
***************
*** 335,343 ****
/*
* Process one command, which has already been typed in.
*/
! docmd(c, count)
int c;
long count;
{
int i;
long nart, Hoffset;
--- 335,344 ----
/*
* Process one command, which has already been typed in.
*/
! docmd(c, count, countset)
int c;
long count;
+ int countset;
{
int i;
long nart, Hoffset;
***************
*** 345,350 ****
--- 346,363 ----
switch (c) {
+ /* display list of articles in current group */
+ case 'l':
+ case 'L':
+ botscreen();
+ ttycooked();
+ list_group(groupdir, countset ? count : 0,
+ (c == 'l') ? FALSE : TRUE, pngsize);
+ ttyraw();
+ clearok(curscr, 1);
+ updscr();
+ break;
+
/* Show more of current article, or advance to next article */
case '\n':
case ' ':
***************
*** 432,438 ****
break;
/* Turn displaying of article back on */
- case 'l':
case 'd':
prflags &=~ NOPRT;
break;
--- 445,450 ----
***************
*** 496,528 ****
/* write out the article someplace */
/* w writes out without the header */
! case 's':
! case 'w': {
! char *grn = groupdir;
int wflags;
! msg("file: ");
! curflag = CURP2;
! while ((wflags = vgetc()) == ' ');
! if (wflags == cintr) {
! secpr[0] = '\0';
! break;
}
! if (wflags == '|') {
! linebuf[0] = '|';
! if (prget("| ", linebuf+1))
! break;
! } else {
! pushback(wflags);
! if (prget("file: ", linebuf))
! break;
! }
wflags = 0;
if (c == 's')
wflags |= SVHEAD;
if (count != 1)
wflags |= OVWRITE;
! bptr = linebuf;
while( *bptr == ' ')
bptr++; /* strip leading spaces */
--- 508,550 ----
/* write out the article someplace */
/* w writes out without the header */
! /* | defaults to pipeing */
! {
! static char savebuf[BUFLEN];
int wflags;
! case '|':
! if (savebuf[0] != '|') {
! savebuf[0] = '|';
! savebuf[1] = '\0';
}
! c = 's';
! case 's':
! case 'w':
! /* We loop back to here each time user types ^U to prompt */
! do {
! if (savebuf[0] == 0) {
! /* No saved default. Ask. */
! msg("file: ");
! curflag = CURP2;
! while ((wflags = vgetc()) == ' ');
! if (wflags == cintr) {
! secpr[0] = '\0';
! break;
! }
! savebuf[0] = wflags;
! savebuf[1] = 0;
! }
! wflags = prget( (savebuf[0] == '|') ? "": "file: ",
! savebuf);
! } while (wflags == 2);
! if (wflags) break; /* Interrupted out */
wflags = 0;
if (c == 's')
wflags |= SVHEAD;
if (count != 1)
wflags |= OVWRITE;
! bptr = savebuf;
while( *bptr == ' ')
bptr++; /* strip leading spaces */
***************
*** 536,542 ****
} else if (boxptr = getenv("NEWSBOX")) {
if (index(boxptr, '%')) {
struct stat stbf;
! sprintf(bptr, boxptr, grn);
if (stat(bptr,&stbf) < 0) {
if (mkdir(bptr, 0777) < 0) {
msg("Cannot create directory %s", bptr);
--- 558,564 ----
} else if (boxptr = getenv("NEWSBOX")) {
if (index(boxptr, '%')) {
struct stat stbf;
! sprintf(bptr, boxptr, groupdir);
if (stat(bptr,&stbf) < 0) {
if (mkdir(bptr, 0777) < 0) {
msg("Cannot create directory %s", bptr);
***************
*** 633,638 ****
--- 655,661 ----
int flags;
p = linebuf;
+ *p = 0;
if (prget("!", p))
break;
flags = CWAIT;
***************
*** 763,770 ****
/* specific message ID. */
case '<':
/* could improve this */
! linebuf[0] = '<';
! if (prget("<", linebuf+1))
break;
searchid: secpr[0] = '\0';
if (index(linebuf, '@') == NULL && index(linebuf, '>') == NULL) {
--- 786,793 ----
/* specific message ID. */
case '<':
/* could improve this */
! linebuf[0] = '<'; linebuf[1] = 0;
! if (prget("", linebuf))
break;
searchid: secpr[0] = '\0';
if (index(linebuf, '@') == NULL && index(linebuf, '>') == NULL) {
***************
*** 1033,1038 ****
--- 1056,1062 ----
next_ng_command()
{
obit = -1;
+ linebuf[0] = 0;
if (prget("group? ", linebuf))
return FALSE;
bptr = linebuf;
***************
*** 1530,1556 ****
maxcol = linebuf;
}
prget(prompter, buf)
char *prompter, *buf;
{
! char *p, *q, *r;
! int c, lastc;
curflag = CURP2;
! r = buf;
lastc = '\0';
for (;;) {
- *r = '\0';
p = secpr;
for (q = prompter ; *q ; q++)
*p++ = *q;
for (q = buf ; *q ; q++) {
! if (p < &secpr[SECPRLEN-1] && *q >= ' ' && *p <= '~')
*p++ = *q;
}
*p = '\0';
c = vgetc();
! if (c == '\n' || c == cintr) {
break;
}
if (c == cerase || c == '\b' || c == '\177') {
--- 1554,1595 ----
maxcol = linebuf;
}
+
+ /*
+ * Prompt the user and get a line.
+ * "prompter" is the prompt. "buf" contains a string which
+ * will be used as the initial user response (which may be edited
+ * by the user with backspace, ^U, etc). The resulting line is
+ * returned in "buf". The result of prget() is:
+ * 0 if the line was terminated by NL or CR
+ * 1 if it was terminated by the interrupt character.
+ * 2 if it was terminated by erasing all the characters, including
+ * one or more that were prompted initially in "buf". (If "buf"
+ * was empty, this will never occur.)
+ */
+ int
prget(prompter, buf)
char *prompter, *buf;
{
! register char *p, *q, *r;
! register char c;
! char lastc;
! char hadprompt = buf[0];
curflag = CURP2;
! r = buf + strlen(buf);
lastc = '\0';
for (;;) {
p = secpr;
for (q = prompter ; *q ; q++)
*p++ = *q;
for (q = buf ; *q ; q++) {
! if (p < &secpr[SECPRLEN-1] && *q >= ' ' && *q <= '~')
*p++ = *q;
}
*p = '\0';
c = vgetc();
! if (c == '\n' || c == '\r' || c == cintr) {
break;
}
if (c == cerase || c == '\b' || c == '\177') {
***************
*** 1578,1583 ****
--- 1617,1625 ----
*r++ = c;
}
lastc = c;
+ *r = '\0';
+ if ((r == buf) && hadprompt)
+ return 2;
}
curflag = CURHOME;
secpr[0] = '\0';
***************
*** 1620,1626 ****
(void) signal(SIGTTOU, SIG_DFL);
#endif
}
! #ifdef BSD4_2
while ((pid = vfork()) == -1)
#else /* !BSD4_2 */
/* 4.1 BSD (at least) can't handle this vfork with -ljobs */
--- 1662,1668 ----
(void) signal(SIGTTOU, SIG_DFL);
#endif
}
! #if defined(BSD4_2) && !defined(sun)
while ((pid = vfork()) == -1)
#else /* !BSD4_2 */
/* 4.1 BSD (at least) can't handle this vfork with -ljobs */
***************
*** 1811,1817 ****
if(UPDATING) /* concurrency. wow! */
WINCH++;
else if((WINCH == 0) && (savelinno >= 0)) {
! int saveline = dlinno, saveflag = curflag;
/* reread the article */
FCLOSE(fp);
--- 1853,1859 ----
if(UPDATING) /* concurrency. wow! */
WINCH++;
else if((WINCH == 0) && (savelinno >= 0)) {
! int saveflag = curflag;
/* reread the article */
FCLOSE(fp);
Index: vnews.help
*** .d/vnews.help Thu Oct 30 16:12:04 1986
--- vnews.help Tue Dec 16 13:10:22 1986
***************
*** 17,22 ****
ESC-r Reply directly using mailer m Move on to next item in a digest
f Post a followup article s Save article in file
N Go to newsgroup (next is default) w Save without header
! l Display article (use after !, r, f, or ?)
! [Press l to see article again]
--- 17,22 ----
ESC-r Reply directly using mailer m Move on to next item in a digest
f Post a followup article s Save article in file
N Go to newsgroup (next is default) w Save without header
! l List unread articles in group L List all articles in group
! [Press ^L to see article again]
Index: header.c
Prereq: 2.44
*** .d/header.c Fri Nov 21 16:18:38 1986
--- header.c Wed Dec 17 11:36:27 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)header.c 2.44 11/21/86";
#endif /* SCCSID */
#include <stdio.h>
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)header.c 2.46 12/17/86";
#endif /* SCCSID */
#include <stdio.h>
***************
*** 38,44 ****
--- 38,46 ----
FILE *fp;
int wholething;
{
+ #ifndef HIDDENNET
register int len;
+ #endif /* HIDDENNET */
register int i;
#ifdef OLD
char *p;
***************
*** 94,102 ****
--- 96,106 ----
#endif /* OLD */
strip: /* strip off sys! from front of path. */
+ #ifndef HIDDENNET
if (strncmp(FULLSYSNAME, hp->path, (len = strlen(FULLSYSNAME))) == 0
&& index(NETCHRS, hp->path[len]))
(void) strcpy(hp->path, &(hp->path[len+1]));
+ #endif /* HIDDENNET */
lcase(hp->nbuf);
/* Intuit the From: line if only a path was given. */
***************
*** 214,219 ****
--- 218,225 ----
break;
case DISTRIBUTION:
getfield(hp->distribution, sizeof(hp->distribution));
+ if (strcmp(hp->distribution, "net") == 0)
+ hp->distribution[0] = '\0';
break;
case ORGANIZATION:
getfield(hp->organization, sizeof(hp->organization));
Index: rfuncs.c
Prereq: 2.31
*** .d/rfuncs.c Thu Oct 30 16:10:23 1986
--- rfuncs.c Wed Dec 17 00:09:42 1986
***************
*** 16,22 ****
*/
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs.c 2.31 10/23/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
--- 16,22 ----
*/
#ifdef SCCSID
! static char *SccsId = "@(#)rfuncs.c 2.38 12/16/86";
#endif /* SCCSID */
/*LINTLIBRARY*/
***************
*** 186,193 ****
* we write it out.
*/
if ((ngsize-minartno) > BITMAPSIZE) {
! /* This should never happen */
! (void) xerror("Bitmap not large enough for newsgroup %s", groupdir);
}
cur = 0;
--- 186,197 ----
* we write it out.
*/
if ((ngsize-minartno) > BITMAPSIZE) {
! /* resize the bitmap array */
! (void) free (bitmap);
! BITMAPSIZE = 8 * (((ngsize - minartno) + 7) / 8);
! bitmap = malloc((unsigned)BITMAPSIZE/8);
! if (bitmap == NULL)
! xerror("Can't malloc bitmap");
}
cur = 0;
***************
*** 698,701 ****
--- 702,844 ----
}
(void) fclose(nfp);
#endif /* SORTACTIVE */
+ }
+
+ #if defined(BSD4_2) || defined(BSD4_1C)
+ #include <sys/dir.h>
+ # else
+ #include "ndir.h"
+ #endif
+ #include <errno.h>
+
+ /*
+ * Routine to display header lines for all articles in newsgroup. If the flag
+ * argument is FALSE then only articles which are not marked as read in the
+ * bitmap will be displayed. This routine makes no attempt to determine if
+ * the article is in multiple groups and therefore should not be displayed at
+ * this time.
+ */
+
+ static int *lg_array = NULL;
+ static int *lg_entry;
+ static int lg_max = 0;
+ static int int_sig;
+ extern int errno;
+
+ lg_cmp(p1, p2)
+ int *p1, *p2;
+ {
+ return *p1 > *p2;
+ }
+
+ list_group(lgroup, displines, flag, pngsize)
+ char *lgroup;
+ int displines, flag;
+ long pngsize;
+ {
+ char *briefdate();
+ struct hbuf hh;
+ register DIR *dirp;
+ register struct direct *dir;
+ register FILE *fp_art;
+ int i;
+ int entries;
+ unsigned int alloc_size;
+ int (*old_sig) ();
+ extern lg_trap();
+ char *gets();
+
+ /* This should get the numbers from the active file XXX */
+ if ((dirp = opendir(dirname(lgroup))) == NULL) {
+ printf("Can't open %s\r\n", dirname(lgroup));
+ return;
+ }
+ entries = 0;
+ if (lg_array == NULL) {
+ lg_max = 50;
+ alloc_size = lg_max * sizeof(int);
+ lg_array = (int *) malloc(alloc_size);
+ }
+ while ((dir = readdir(dirp)) != NULL) {
+ if (dir->d_ino == 0)
+ continue;
+ i = atoi(dir->d_name);
+ if ((i < 1) || (i > pngsize))
+ continue;
+ if (flag == FALSE) {
+ if (get(i) == 0)
+ continue;
+ }
+ if (++entries > lg_max) {
+ lg_max += 50;
+ alloc_size = lg_max * sizeof(int);
+ lg_array = (int *) realloc((char *) lg_array, alloc_size);
+ }
+ lg_array[entries - 1] = i;
+ }
+ if (entries == lg_max) {
+ lg_max++;
+ alloc_size = lg_max * sizeof(int);
+ lg_array = (int *) realloc((char *) lg_array, alloc_size);
+ }
+ qsort(lg_array, entries, sizeof *lg_array, lg_cmp);
+ lg_array[entries] = 0;
+ int_sig = 0;
+ old_sig = signal(SIGINT, lg_trap);
+ hh.unrec[0] = NULL;
+ for (lg_entry = lg_array; *lg_entry != 0 && int_sig == 0; lg_entry++) {
+ (void) sprintf(filename, "%s/%d", dirname(lgroup), *lg_entry);
+ fp_art = fopen(filename, "r");
+ if (fp_art == NULL)
+ continue;
+ if (hread(&hh, fp_art, TRUE) == NULL) {
+ (void) fclose(fp_art);
+ continue;
+ }
+ printf("%5d %-20.20s %-13s %s\r\n",
+ *lg_entry, hh.from,
+ briefdate(hh.subdate), hh.title);
+ for (i = 0; i < displines;) {
+ if (fgets(bfr, LBUFLEN, fp_art) == NULL) {
+ break;
+ }
+ if ((bfr[0] == '\n') || (bfr[0] == '>')) {
+ continue;
+ }
+ printf("%s", bfr);
+ i++;
+ }
+ (void) fclose(fp_art);
+ }
+ (void) fflush(stdout);
+
+ closedir(dirp);
+ (void) signal(SIGINT, old_sig); /* restore to old value */
+
+ printf("[Press RETURN to continue]");
+ (void) fflush(stdout);
+
+ while (TRUE) {
+ errno = 0;
+ i = getchar();
+ if (errno == EINTR)
+ continue;
+ if (i == '\n' || i == '\r')
+ break;
+ if (i == EOF)
+ break;
+ if (i == '\4')
+ break;
+ }
+ (void) free(lg_array);
+
+ }
+
+ lg_trap(code)
+ int code;
+ {
+
+ int_sig = 1;
+ (void) signal(code, lg_trap); /* reset signal */
+
}
Index: Makefile.dst
Prereq: 1.19
*** .d/Makefile.dst Fri Nov 21 16:05:09 1986
--- Makefile.dst Tue Dec 16 17:47:05 1986
***************
*** 1,4 ****
! # '@(#)Makefile.dst 1.19 11/21/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
--- 1,4 ----
! # '@(#)Makefile.dst 1.21 12/16/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
***************
*** 57,62 ****
--- 57,63 ----
#BSD4_1 LIBS = -ldbm -ljobs
TERMLIB = -ltermlib
+ FIXACTIVE =
#VMS TERMLIB = -ltrmlib
#VMS LIBS = -ldbm
***************
*** 64,69 ****
--- 65,71 ----
#VMS MISC = uname.o
#VMS LINTFLAGS = -chba -DDBM -DVMS ${DEFS}
#VMS VFORK=
+ #VMS FIXACTIVE = /etc/vmstounix $(LIBDIR)/active
#V7 MISC = uname.o
#USG MISC = ftime.o
***************
*** 182,188 ****
$(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
--- 184,190 ----
$(CC) $(CFLAGS) $(HOMENAME) -c ifuncs.c
iextern.o: iextern.c iparams.h defs.h params.h Makefile header.h
! $(CC) $(CFLAGS) $(HOMENAME) -c iextern.c
postnews: $(POBJECTS)
$(CC) $(CFLAGS) $(LFLAGS) $(POBJECTS) -o postnews
***************
*** 271,278 ****
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
--- 273,280 ----
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 rextern.o
! $(CC) $(LFLAGS) checknews.o process.o cpathinit.o rextern.o -o checknews
#VMS mv checknews.exe checknews
sendbatch: sendbatch.sh Makefile
***************
*** 283,288 ****
--- 285,291 ----
rmgroup: rmgroup.sh Makefile
sed -e "s%LIBDIR%$(LIBDIR)%g" \
+ -e "s%FIXACTIVE%$(FIXACTIVE)%g" \
-e "s%SPOOLDIR%$(SPOOLDIR)%g" rmgroup.sh > rmgroup
#VMS /etc/unixtovms rmgroup
Index: makeactive.sh
Prereq: 1.22
*** .d/makeactive.sh Thu Oct 30 16:10:33 1986
--- makeactive.sh Wed Dec 17 00:09:41 1986
***************
*** 1,6 ****
: "Create active file and newsgroup hierarchy for new machine"
: "Usage: sh makeactive.sh LIBDIR SPOOLDIR NEWSUSR NEWSGRP"
! : '@(#)makeactive 1.22 10/29/86'
LIBDIR=$1
SPOOLDIR=$2
NEWSUSR=$3
--- 1,6 ----
: "Create active file and newsgroup hierarchy for new machine"
: "Usage: sh makeactive.sh LIBDIR SPOOLDIR NEWSUSR NEWSGRP"
! : '@(#)makeactive 1.23 12/16/86'
LIBDIR=$1
SPOOLDIR=$2
NEWSUSR=$3
***************
*** 7,144 ****
NEWSGRP=$4
cat <<"E_O_F" > /tmp/$$groups
general Articles that should be read by everyone on your local system
- net.ai Artificial intelligence discussions.
- net.announce.arpa-internet Announcements from the Arpa world
- net.arch Computer architecture.
- net.audio High fidelity audio.
- net.auto Automobiles, automotive products and laws.
- net.auto.tech Technical aspects of automobiles, et. al.
- net.aviation Aviation rules, means, and methods.
- net.bicycle Bicycles, related products and laws.
- net.books Books of all genres, shapes, and sizes.
- net.bugs General bug reports and fixes.
- net.bugs.2bsd Reports of UNIX* version 2BSD related bugs.
- net.bugs.4bsd Reports of UNIX version 4BSD related bugs.
- net.bugs.usg Reports of USG (System III, V, etc.) bugs.
- net.bugs.uucp Reports of UUCP related bugs.
- net.bugs.v7 Reports of UNIX V7 related bugs.
- net.cog-eng Cognitive engineering.
- net.comics The funnies, old and new.
- net.cooks Food, cooking, cookbooks, and recipes.
- net.cse Computer science education.
- net.cycle Motorcycles and related products and laws.
- net.database Database and data management issues and theory.
- net.dcom Data communications hardware and software.
- net.decus DEC* Users' Society newsgroup.
- net.emacs EMACS editors of different flavors.
- net.eunice The SRI Eunice system.
- net.games Games and computer games.
- net.games.board Discussion and hints on board games.
- net.games.chess Chess & computer chess.
- net.games.emp Discussion and hints about Empire.
- net.games.frp Discussion about Fantasy Role Playing games.
- net.games.go Discussion about Go.
- net.games.hack Discussion, hints, etc. about the Hack game.
- net.games.pbm Discussion about Play by Mail games.
- net.games.rogue Discussion and hints about Rogue.
- net.games.trivia Discussion about trivia.
- net.games.video Discussion about video games.
- net.garden Gardening, methods and results.
- net.graphics Computer graphics, art, animation, image processing,
- net.ham-radio Amateur Radio practices, contests, events, rules, etc.
- net.ham-radio.packet Discussion about packet radio setups.
- net.info-terms All sorts of terminals.
- net.internat Discussion about international standards
- net.jokes Jokes and the like. May be somewhat offensive.
- net.jokes.d Discussions on the content of net.jokes articles
- net.lan Local area network hardware and software.
- net.lang Different computer languages.
- net.lang.ada Discussion about Ada*.
- net.lang.apl Discussion about APL.
- net.lang.c Discussion about C.
- net.lang.c++ The object-oriented C++ language.
- net.lang.f77 Discussion about FORTRAN.
- net.lang.forth Discussion about Forth.
- net.lang.lisp Discussion about LISP.
- net.lang.mod2 Discussion about Modula-2.
- net.lang.pascal Discussion about Pascal.
- net.lang.prolog Discussion about PROLOG.
- net.lang.st80 Discussion about Smalltalk 80.
- net.lsi Large scale integrated circuits.
- net.mag Magazine summaries, tables of contents, etc.
- net.mail Proposed new mail/network standards.
- net.mail.headers Gatewayed from the ARPA header-people list.
- net.micro Micro computers of all kinds.
- net.micro.6809 Discussion about 6809's.
- net.micro.68k Discussion about 68k's.
- net.micro.apple Discussion about Apple micros.
- net.micro.amiga Talk about the new Amiga micro.
- net.micro.atari8 Discussion about 8 bit Atari micros.
- net.micro.atari16 Discussion about 16 bit Atari micros.
- net.micro.att Discussions about AT&T microcomputers
- net.micro.cbm Discussion about Commodore micros.
- net.micro.cpm Discussion about the CP/M operating system.
- net.micro.hp Discussion about Hewlett/Packard's.
- net.micro.mac Material about the Apple Macintosh & Lisa
- net.micro.ns32k National Semiconductor 32000 series chips
- net.micro.pc Discussion about IBM personal computers.
- net.micro.ti Discussion about Texas Instruments.
- net.micro.trs-80 Discussion about TRS-80's.
- net.movies Reviews and discussions of movies.
- net.music Music lovers' group.
- net.music.classical Discussion about classical music.
- net.music.folk Folks discussing folk music of various sorts
- net.music.gdead A group for (Grateful) Dead-heads
- net.music.makers For performers and their discussions.
- net.music.synth Synthesizers and computer music
- net.news Discussions of USENET itself.
- net.news.adm Comments directed to news administrators.
- net.news.b Discussion about B news software.
- net.news.config Postings of system down times and interruptions.
- net.news.group Discussions and lists of newsgroups
- net.news.newsite Postings of new site announcements.
- net.news.notes Notesfile software from the Univ. of Illinois.
- net.news.sa Comments directed to system administrators.
- net.news.stargate Discussion about satellite transmission of news.
- net.periphs Peripheral devices.
- net.pets Pets, pet care, and household animals in general.
- net.poems For the posting of poems.
- net.puzzle Puzzles, problems, and quizzes.
- net.railroad Real and model train fans' newsgroup.
- net.rec Recreational/participant sports.
- net.rec.birds Hobbyists interested in bird watching.
- net.rec.boat Hobbyists interested in boating.
- net.rec.bridge Hobbyists interested in bridge.
- net.rec.nude Hobbyists interested in naturist/nudist activities.
- net.rec.photo Hobbyists interested in photography.
- net.rec.scuba Hobbyists interested in SCUBA diving.
- net.rec.ski Hobbyists interested in skiing.
- net.rec.skydive Hobbyists interested in skydiving.
- net.rec.wood Hobbyists interested in woodworking.
- net.sf-lovers Science fiction lovers' newsgroup.
net.sources For the posting of software packages & documentation.
net.sources.bugs For bug fixes and features discussion
- net.sources.d For any discussion on net.sources postings.
net.sources.games Postings of recreational software
net.sources.mac Software for the Apple Macintosh
- net.sport Spectator sports.
- net.sport.baseball Discussion about baseball.
- net.sport.football Discussion about football.
- net.sport.hockey Discussion about hockey.
- net.sport.hoops Discussion about basketball.
- net.startrek Star Trek, the TV show and the movies.
- net.text Text processing.
- net.travel Traveling all over the world.
- net.tv The boob tube, its history, and past and current shows.
- net.tv.drwho Discussion about Dr. Who.
- net.tv.soaps Postings about soap operas.
- net.unix UNIX neophytes group.
- net.unix-wizards Discussions, bug reports, and fixes on and for UNIX.
- net.usenix USENIX Association events and announcements.
- net.veg Vegetarians.
- net.video Video and video components.
- net.wines Wines and spirits.
- net.wobegon "A Prairie Home Companion" radio show discussion.
mod.announce General announcements of interest to all. (Moderated)
mod.announce.newusers Explanatory postings for new users. (Moderated)
mod.ai Discussions about Artificial Intelligence (Moderated)
--- 7,16 ----
***************
*** 162,175 ****
mod.comp-soc Discussion on the impact of technology on society. (Moderated)
mod.graphics Graphics software, hardware, theory, etc. (Moderated)
mod.human-nets Computer aided communications digest. (Moderated)
- mod.legal Discussions of computers and the law. (Moderated)
mod.mac Apple Macintosh micros -- info, uses, but no programs. (Moderated)
mod.mac.binaries Encoded public domain programs in binary form. (Moderated)
mod.mac.sources Public domain software in source code format. (Moderated)
- mod.mag Discussions on electronicly published "magazines" (Moderated)
mod.mag.otherrealms Edited science fiction and fantasy "magazine". (Moderated)
mod.map Various maps, including UUCP maps (Moderated)
- mod.movies Reviews and discussion of movies (Moderated)
mod.music Reviews and discussion of things musical (Moderated)
mod.music.gaffa Progressive music discussions (e.g., Kate Bush). (Moderated)
mod.newprod Announcements of new products of interest to readers (Moderated)
--- 34,44 ----
***************
*** 201,211 ****
mod.std.unix Discussion for the P1003 committee on UNIX (Moderated)
mod.techreports Announcements and lists of technical reports. (Moderated)
mod.telecom Telecommunications digest. (Moderated)
! mod.test Testing of moderated newsgroups -- no moderator (Moderated)
! mod.vlsi Very large scale integrated circuits. (Moderated)
misc.consumers Consumer interests, product reviews, etc.
misc.consumers.house Discussion about owning and maintaining a house.
! misc.forsale Items for sale.
misc.headlines Current interest: drug testing, terrorism, etc.
misc.invest Investments and the handling of money.
misc.jobs Job announcements, requests, etc.
--- 70,139 ----
mod.std.unix Discussion for the P1003 committee on UNIX (Moderated)
mod.techreports Announcements and lists of technical reports. (Moderated)
mod.telecom Telecommunications digest. (Moderated)
! comp.ai Artificial intelligence discussions.
! comp.arch Computer architecture.
! comp.bugs.2bsd Reports of UNIX* version 2BSD related bugs.
! comp.bugs.4bsd Reports of UNIX version 4BSD related bugs.
! comp.bugs.misc General bug reports and fixes (includes V7 & uucp).
! comp.bugs.sys5 Reports of USG (System III, V, etc.) bugs.
! comp.cog-eng Cognitive engineering.
! comp.databases Database and data management issues and theory.
! comp.dcom.lans Local area network hardware and software.
! comp.dcom.modems Data communications hardware and software.
! comp.edu Computer science education.
! comp.emacs EMACS editors of different flavors.
! comp.graphics Computer graphics, art, animation, image processing,
! comp.lang.ada Discussion about Ada*.
! comp.lang.apl Discussion about APL.
! comp.lang.c Discussion about C.
! comp.lang.c++ The object-oriented C++ language.
! comp.lang.forth Discussion about Forth.
! comp.lang.fortran Discussion about FORTRAN.
! comp.lang.lisp Discussion about LISP.
! comp.lang.misc Different computer languages not specifically listed.
! comp.lang.modula2 Discussion about Modula-2.
! comp.lang.pascal Discussion about Pascal.
! comp.lang.prolog Discussion about PROLOG.
! comp.lang.smalltalk Discussion about Smalltalk 80.
! comp.lsi Large scale integrated circuits.
! comp.mail.headers Gatewayed from the ARPA header-people list.
! comp.mail.misc General discussions about computer mail.
! comp.mail.uucp Mail in the uucp network environment.
! comp.misc General topics about computers not covered elsewhere.
! comp.org.decus DEC* Users' Society newsgroup.
! comp.org.usenix USENIX Association events and announcements.
! comp.os.cpm Discussion about the CP/M operating system.
! comp.os.eunice The SRI Eunice system.
! comp.os.misc General OS-oriented discussion not carried elsewhere.
! comp.periphs Peripheral devices.
! comp.sources.d For any discussion of source postings.
! comp.sources.wanted Requests for software and fixes.
! comp.std.internat Discussion about international standards
! comp.sys.amiga Discussion about the Amiga micro.
! comp.sys.apple Discussion about Apple micros.
! comp.sys.atari.8bit Discussion about 8 bit Atari micros.
! comp.sys.atari.st Discussion about 16 bit Atari micros.
! comp.sys.att Discussions about AT&T microcomputers
! comp.sys.cbm Discussion about Commodore micros.
! comp.sys.dec Discussions about DEC computer systems.
! comp.sys.hp Discussion about Hewlett/Packard's.
! comp.sys.ibm.pc Discussion about IBM personal computers.
! comp.sys.intel Disucussions about Intel systems and parts.
! comp.sys.m6809 Discussion about 6809's.
! comp.sys.m68k Discussion about 68k's.
! comp.sys.mac Discussions about the Apple Macintosh & Lisa.
! comp.sys.misc Micro computers of all kinds.
! comp.sys.nsc.32k National Semiconductor 32000 series chips
! comp.sys.tandy Discussion about TRS-80's.
! comp.sys.ti Discussion about Texas Instruments.
! comp.terminals All sorts of terminals.
! comp.text Text processing.
! comp.unix.questions UNIX neophytes group.
! comp.unix.wizards Discussions, bug reports, and fixes on and for UNIX.
! comp.unix.xenix Discussion about the Xenix OS.
misc.consumers Consumer interests, product reviews, etc.
misc.consumers.house Discussion about owning and maintaining a house.
! misc.forsale Short, tasteful postings about items for sale.
misc.headlines Current interest: drug testing, terrorism, etc.
misc.invest Investments and the handling of money.
misc.jobs Job announcements, requests, etc.
***************
*** 215,220 ****
--- 143,220 ----
misc.taxes Tax laws and advice.
misc.test For testing of network software. Very boring.
misc.wanted Requests for things that are needed (NOT software).
+ news.admin Comments directed to news administrators.
+ news.config Postings of system down times and interruptions.
+ news.groups Discussions and lists of newsgroups
+ news.lists News-related statistics and lists (Moderated)
+ news.misc Discussions of USENET itself.
+ news.newsites Postings of new site announcements.
+ news.software.b Discussion about B news software.
+ news.software.notes Notesfile software from the Univ. of Illinois.
+ news.stargate Discussion about satellite transmission of news.
+ news.sysadmin Comments directed to system administrators.
+ rec.arts.books Books of all genres, shapes, and sizes.
+ rec.arts.comics The funnies, old and new.
+ rec.arts.drwho Discussion about Dr. Who.
+ rec.arts.movies Reviews and discussions of movies.
+ rec.arts.poems For the posting of poems.
+ rec.arts.sf-lovers Science fiction lovers' newsgroup.
+ rec.arts.startrek Star Trek, the TV show and the movies.
+ rec.arts.tv The boob tube, its history, and past and current shows.
+ rec.arts.tv.soaps Postings about soap operas.
+ rec.arts.wobegon "A Prairie Home Companion" radio show discussion.
+ rec.audio High fidelity audio.
+ rec.autos Automobiles, automotive products and laws.
+ rec.autos.tech Technical aspects of automobiles, et. al.
+ rec.aviation Aviation rules, means, and methods.
+ rec.bicycles Bicycles, related products and laws.
+ rec.birds Hobbyists interested in bird watching.
+ rec.boats Hobbyists interested in boating.
+ rec.food.cooking Food, cooking, cookbooks, and recipes.
+ rec.food.drink Wines and spirits.
+ rec.food.veg Vegetarians.
+ rec.games.board Discussion and hints on board games.
+ rec.games.bridge Hobbyists interested in bridge.
+ rec.games.chess Chess & computer chess.
+ rec.games.empire Discussion and hints about Empire.
+ rec.games.frp Discussion about Fantasy Role Playing games.
+ rec.games.go Discussion about Go.
+ rec.games.hack Discussion, hints, etc. about the Hack game.
+ rec.games.misc Games and computer games.
+ rec.games.pbm Discussion about Play by Mail games.
+ rec.games.rogue Discussion and hints about Rogue.
+ rec.games.trivia Discussion about trivia.
+ rec.games.video Discussion about video games.
+ rec.gardens Gardening, methods and results.
+ rec.ham-radio Amateur Radio practices, contests, events, rules, etc.
+ rec.ham-radio.packet Discussion about packet radio setups.
+ rec.humor Jokes and the like. May be somewhat offensive.
+ rec.humor.d Discussions on the content of rec.humor articles
+ rec.mag Magazine summaries, tables of contents, etc.
+ rec.misc General topics about recreational/participant sports.
+ rec.motorcycles Motorcycles and related products and laws.
+ rec.music.classical Discussion about classical music.
+ rec.music.folk Folks discussing folk music of various sorts
+ rec.music.gdead A group for (Grateful) Dead-heads
+ rec.music.makers For performers and their discussions.
+ rec.music.misc Music lovers' group.
+ rec.music.synth Synthesizers and computer music
+ rec.nude Hobbyists interested in naturist/nudist activities.
+ rec.pets Pets, pet care, and household animals in general.
+ rec.photo Hobbyists interested in photography.
+ rec.puzzles Puzzles, problems, and quizzes.
+ rec.railroad Real and model train fans' newsgroup.
+ rec.scuba Hobbyists interested in SCUBA diving.
+ rec.skiing Hobbyists interested in skiing.
+ rec.skydiving Hobbyists interested in skydiving.
+ rec.sport.baseball Discussion about baseball.
+ rec.sport.basketball Discussion about basketball.
+ rec.sport.football Discussion about football.
+ rec.sport.hockey Discussion about hockey.
+ rec.sport.misc Spectator sports.
+ rec.travel Traveling all over the world.
+ rec.video Video and video components.
+ rec.woodworking Hobbyists interested in woodworking.
sci.astro Astronomy discussions and information.
sci.bio Biology and related sciences.
sci.crypt Different methods of data en/decryption.
***************
*** 234,240 ****
soc.culture.celtic Group about Celtics (*not* basketball!)
soc.culture.greek Group about Greeks.
soc.culture.indian Group for discussion about India & things Indian
! soc.culture.jewish Group for discussion about Jewish culture
soc.culture.misc Group for discussion about other cultures
soc.misc Socially-oriented topics not in other groups.
soc.motss Issues pertaining to homosexuality.
--- 234,240 ----
soc.culture.celtic Group about Celtics (*not* basketball!)
soc.culture.greek Group about Greeks.
soc.culture.indian Group for discussion about India & things Indian
! soc.culture.jewish Group for discussion about Jewish culture & religion
soc.culture.misc Group for discussion about other cultures
soc.misc Socially-oriented topics not in other groups.
soc.motss Issues pertaining to homosexuality.
Index: rmgroup.sh
Prereq: 1.6
*** .d/rmgroup.sh Thu Oct 30 16:12:15 1986
--- rmgroup.sh Tue Dec 16 17:47:07 1986
***************
*** 1,23 ****
! : '@(#)rmgroup.sh 1.6 9/19/86'
for group
do
- echo "Removing newsgroup $group"
qgrp="`echo $group | sed 's/\./\\\./g'`"
if
grep -s "^$qgrp " LIBDIR/active
then
! cat << E_O_F >/tmp/$$
! /^$qgrp[ ]/d
! w
! q
! E_O_F
! ed - LIBDIR/active < /tmp/$$
! ed - LIBDIR/newsgroups < /tmp/$$
dir=SPOOLDIR/"`echo $group | sed 's/\./\//g'`"
! if [ -d $dir ]
then
! rm $dir/*
! rmdir $dir
else
echo "$0: $dir: no spool directory" 2>&1
fi
--- 1,17 ----
! : '@(#)rmgroup.sh 1.8 12/16/86'
for group
do
qgrp="`echo $group | sed 's/\./\\\./g'`"
if
grep -s "^$qgrp " LIBDIR/active
then
! echo "Removing newsgroup $group"
! echo "/^$qgrp[ ]/d" >>/tmp/,edit$$
dir=SPOOLDIR/"`echo $group | sed 's/\./\//g'`"
! if test -d $dir
then
! rm $dir/* >/dev/null 2>&1
! echo "rmdir $dir >/dev/null 2>&1" >>/tmp/,rmdir$$
else
echo "$0: $dir: no spool directory" 2>&1
fi
***************
*** 25,29 ****
echo "$0: $group: no such newsgroup" 2>&1
fi
done
! rm -f /tmp/$$
exit 0
--- 19,36 ----
echo "$0: $group: no such newsgroup" 2>&1
fi
done
! echo w >>/tmp/,edit$$
! echo q >>/tmp/,edit$$
! echo "Editing LIBDIR/active..."
! ed - LIBDIR/active < /tmp/,edit$$
! FIXACTIVE
! echo "Editing LIBDIR/newsgroups..."
! ed - LIBDIR/newsgroups < /tmp/,edit$$
! echo "Removing directories..."
! if test -s /tmp/,rmdir$$
! then
! sort +1r -o /tmp/,rmdir$$ /tmp/,rmdir$$
! . /tmp/,rmdir$$
! fi
! rm -f /tmp/,edit$$ /tmp/,rmdir$$
exit 0
Index: patchlevel.h
Prereq: 1
*** .d/patchlevel.h Fri Nov 21 16:06:03 1986
--- patchlevel.h Tue Dec 16 17:47:05 1986
***************
*** 1,3 ****
! #define PATCHLEVEL 1
! #define NEWS_VERSION "B 2.11 11/15/86"
--- 1,3 ----
! #define PATCHLEVEL 2
! #define NEWS_VERSION "B 2.11 12/17/86"