2.6-2.7.e right shifted
usenet
usenet
Tue Jun 8 12:39:28 AEST 1982
ed - man/checknews.1 << '-*-END-*-'
55,56c
inews(1),
postnews(1),
readnews(1)
.
51,52d
48a
~/.newsrc
.
40c
.IR readnews (1)
.
5c
.BR checknews " [ " ynqevv " ] [ "
.IR "readnews options" " ] "
.
w
q
-*-END-*-
ed - man/expire.8 << '-*-END-*-'
83c
possible to do
.I "uux \-c".
.
80c
(by adding a
.B \-e
option to expire and having different invocations)
.
76c
recnews(8),
sendnews(8),
uurec(8)
.
73,74d
71a
checknews(1),
.
31c
.BR all .
.
28,29c
is normally started up by
.IR cron (8)
every night to remove all expired news.
.
5,24c
.BR /usr/lib/news/expire " [ " \-n
.IR newsgroups " ] [ "
.BR \-i " ] [ " \-I " ] [ " \-v " [ "
.IR level " ] ] [ "
.BI \-e days
" ] "
.
w
q
-*-END-*-
ed - man/inews.1 << '-*-END-*-'
90,91d
88a
uucp(1),
.
86a
news(5),
newsrc(5)
readnews(1),
.
82,84c
Mail(1),
binmail(1),
.
56a
(This happens on ours.)
.LP
If the file /usr/lib/news/recording is present, it is taken as a list of
"recordings" to be shown to users posting news.
(This is by analogy to the recording you hear when you dial information
in some parts of the country, asking you if you really wanted to do this.)
The file contains lines of the form:
.br
newsgroups <tab> filename
.br
for example:
.br
net.all /usr/lib/news/net.recording
fa.all /usr/lib/news/fa.recording
.br
Any user posting an article to a newsgroup matching the pattern on
the left will be shown the contents of the file on the right.
The user is then told to hit DEL to abort or RETURN to proceed.
The intent of this feature is to help companies keep proprietary
information from accidently leaking out.
.
34c
will default to something line
.IR general .
(On ours, it is
.IR general .)
If you wish to submit
.
31,32c
belongs to a list of newsgroups. If the
.B \-n
.
28,29c
input. A
.I title
.
20,22c
.BI "inews \-C " newsgroup
.
15,18c
.B "inews \-p"
.RI " [ " filename " ] "
.
5,13c
.B "inews \-t "
.IR title " [ "
.B \-n
.IR newsgroups " ] [ "
.B \-e
.IR "expiration date" " ]"
.
w
q
-*-END-*-
ed - man/news.5 << '-*-END-*-'
110,113c
are a set of keys describing how the article should be transmitted.
The default is no flags.
.
w
q
-*-END-*-
ed - man/newsrc.5 << '-*-END-*-'
25a
.br
.B fa.info-vax! 1-5
.br
.LP
If the : is replaced with an ! (as in info-vax above) the newsgroup
is not subscribed to and will not be shown to the user.
.
w
q
-*-END-*-
ed - man/postnews.1 << '-*-END-*-'
66c
uucp(1),
.
63a
readnews(1),
.
61,62c
expire(8),
inews(1),
mail(1),
.
57,59c
Mail(1),
.
53c
.IR inews (1).
.
39a
(Our local set of newsgroups is
.IR megatest.all .)
.
38c
(In this case,
.I ucb
newsgroups circulate among machines at the
.
36c
.IR ucb.all ,
.
33c
.IR net.news ,
.
30c
.IR net.general ,
.
28c
.IR btl.general ,
.
25c
.I general
.
23c
.IR general .
.
14c
.IR inews (1)
.
6,10c
.BR postnews " [ "
.IR article " ]"
.
w
q
-*-END-*-
ed - man/readnews.1 << '-*-END-*-'
268d
253c
.IR msgs (1)
.
248,250d
229c
.IR Mail (1)
.
219c
.IR ed (1)
.
212c
.IR msgs (1)
.
186a
.IP u
Unsubscribe from this newsgroup.
Also goes on to the next newsgroup.
.IP v
Print the current version of the news software.
.
163c
Cancel the article. Only the author or the super user can do this.
.
160c
Quit. The .newsrc
.
151c
.ta 2.5i
.
142c
Paging may be disabled by setting
.B PAGER
to a null value.
.
137c
for articles. The environment parameter
.B PAGER
should be set to
.
130c
.IR msgs "(1) or " /bin/mail (1)
.
97a
If the environment variable NEWSRC is present, it should be the path
name of a file to be used in place of .newsrc.
.
83d
81c
.IR getdate (3)
.
77c
.BI "\-a " "\fR[\fP date \fR]\fP"
.
63a
.B \-f
flag prevents any followup articles from being printed. The
.
49,50c
invoked. The name of the temporary file is referenced with a ``%''.
Thus, ``mail \-f %'' will invoke mail on a temporary file consisting of all
.
44c
.IR /bin/mail (1)\-like
.
40c
.IR Mail (1).
.
35c
.IR msgs (1)
.
23,24c
.B "readnews \-s"
.
14,21c
.IR titles " ] [ "
.BR \-lprxhf " ] [ "
.BR \-c " [ "
.IR mailer " ] ]"
.
11,12c
.IR newsgroups " ] [ "
.
5,9c
.BR readnews " [ " \-a
.IR date " ] [ "
.
w
q
-*-END-*-
ed - misc/spool << '-*-END-*-'
46c
for file in `ls -rt`
.
w
q
-*-END-*-
ed - src/Makefile.usg << '-*-END-*-'
41c
rm -f core index all errs getdate.c
.
1c
# @(#) Makefile.usg 2.4 6/1/82
.
w
q
-*-END-*-
ed - src/Makefile.v7 << '-*-END-*-'
40c
rm -f core index errs getdate.c
.
1c
# @(#) Makefile.v7 2.4 6/1/82
.
w
q
-*-END-*-
ed - src/checknews.c << '-*-END-*-'
306a
contin:;
.
270a
if (saveptr == '!')
goto contin;
.
268a
saveptr = *ptr;
.
266c
while (*ptr != ':' && *ptr != '!' && *ptr)
.
245a
char saveptr;
.
221c
while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
.
155c
while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
.
5c
static char *SccsId = "@(#) checknews.c 2.8 6/1/82";
.
w
q
-*-END-*-
ed - src/control.c << '-*-END-*-'
628a
if (sendto[0] <= ' ') {
log("nasty mail name %s from %s", sendto, header.path);
xxit(1);
}
.
420c
fprintf(f, "Currently running news B version %s.\n\n", news_version);
.
404c
fprintf(f, "Currently running news B version %s.\n\n", news_version);
.
390a
* Send the version number to the right person.
*/
c_version(h, ctlmsgtext)
struct hbuf *h;
char *ctlmsgtext;
{
FILE *f;
f = mailhdr(h->path, "Our news version");
if (f == NULL)
xerror("Cannot send back error message");
fprintf(f, "Sent-by: USENET Site %s\n\n", SYSNAME);
fprintf(f, "Currently running news B version %s.\n\n", news_version);
fprintf(f, "The header of the message follows:\n");
hwrite(h, f);
mclose(f);
}
/*
.
295a
ss = index(s, ' ');
if (ss)
*ss = 0;
.
286a
rr = index(r, ' ');
if (rr)
*rr = 0;
.
261a
return;
}
.
260c
else {
.
247c
char *line, *p, *q, *r, *s, *rr, *ss;
.
216c
if (groupname[0] == '.' || groupname[0] <= ' ')
.
53a
else if (eq("version"))
c_version(cargc, cargv);
.
6c
static char *SccsId = "@(#) control.c 2.8 6/5/82 (this is NOT the netnews version!)";
.
3a
*
* See defs.h "news_version" for the real version of netnews.
.
w
q
-*-END-*-
ed - src/defs.h << '-*-END-*-'
28c
/* Default xmit command - remove -z if */
#define DFTXMIT "uux - -z -r %s\\!rnews < %s" /* your uux can't do it */
.
13c
static char *news_version = "@(#) defs.h 2.7 6/7/82";
.
10c
* to be news_version below.
.
w
q
-*-END-*-
ed - src/expire.c << '-*-END-*-'
188c
if (verbose > 1)
printf("link %s to %s\n", newname, filename);
.
180a
p = index(artlist, ',');
}
if (p == 0) {
last = 1;
.
170c
while (*artlist == ' ' || *artlist == '\n' || *artlist == ',')
.
135c
if (h.expdate[0])
h.exptime = cgtdate(h.expdate);
newtime = cgtdate(h.recdate) + expincr;
.
110,111d
94c
if (verbose > 2)
.
83d
64c
while (argc > 1 && argv[1][0] != '-') {
.
20a
time_t cgtdate(), time();
.
15c
extern char filename[];
.
6c
static char *SccsId = "@(#) expire.c 2.9 6/1/82";
.
w
q
-*-END-*-
ed - src/funcs.c << '-*-END-*-'
486a
}
static int hascaught = 0;
static catchintr()
{
hascaught = 1;
printf("\n");
fflush(stdout);
}
/*
* Print a recorded message warning the poor luser what he is doing
* and demand that he understands it before proceeding. Only do
* this for newsgroups listed in LIBDIR/recording.
*/
recording(ngrps)
char *ngrps;
{
char recbuf[100];
FILE *fd;
char nglist[100], fname[100];
char lngrps[100];
char *oldsig;
int c, n, yes;
sprintf(recbuf, "%s/%s", LIB, "recording");
fd = fopen(recbuf, "r");
if (fd == NULL)
return 0;
strcpy(lngrps, ngrps);
ngcat(lngrps);
while ((fgets(recbuf, sizeof recbuf, fd)) != NULL) {
sscanf(recbuf, "%s %s", nglist, fname);
ngcat(nglist);
if (ngmatch(lngrps, nglist)) {
fclose(fd);
fd = fopen(fname, "r");
while ((c = getc(fd)) != EOF)
putc(c, stderr);
hascaught = 0;
oldsig = (char *) signal(SIGINT, catchintr);
fprintf(stderr, "Do you understand this? Hit <return> to proceed, <DEL> to abort: ");
n = read(2, recbuf, 100);
c = recbuf[0];
yes = (c=='y' || c=='Y' || c=='\n' || c=='\n' || c==0);
signal(SIGINT, oldsig);
if (hascaught || n <= 0 || !yes)
return -1;
}
}
return 0;
.
373c
if (fgets(p, LBUFLEN, sysfile) == NULL)
.
42,88d
5c
static char *SccsId = "@(#) funcs.c 2.5 6/1/82";
.
w
q
-*-END-*-
ed - src/header.c << '-*-END-*-'
250a
for (iu=0; iu<NUNREC; iu++) {
if (hp->unrec[iu][0])
fprintf(fp, "%s", &hp->unrec[iu][0]);
}
.
233a
int iu;
.
199c
if (!strncmp(ptr, "Control: ", 9))
.
134a
if (unreccnt < NUNREC) {
strcpy(&hp->unrec[unreccnt][0], bfr);
unreccnt++;
}
.
94a
#else
getfield(&fromflag, hp->path);
#endif
.
92c
sprintf(hp->path, "%s@%s",
uname, site);
.
90c
#ifdef ATSIGN
/*
* This old code understood the "user at site"
* notation but threw away all but the first
* word of names (like your full name) so has
* been taken out.
*/
sscanf(bfr, "%s %s %s %s",
wordfrom, uname, at, site);
.
86c
curpos = ftell(fp);
.
80a
int unreccnt = 0;
.
45c
fgets(hp->title, BUFLEN, fp); /* title */
.
39c
fgets(hp->path, BUFLEN, fp); /* source path */
.
35c
fgets(hp->nbuf, BUFLEN, fp); /* newsgroup list */
.
27c
if (((fgets(bfr, PATHLEN, fp) != NULL &&
*bfr >= 'A' && *bfr <= 'Z') && index(bfr, ':')) ||
!strncmp(bfr, "From ", 5))
.
5c
static char *SccsId = "@(#) header.c 2.9 6/5/82";
.
w
q
-*-END-*-
ed - src/header.h << '-*-END-*-'
21a
char unrec[NUNREC][BUFLEN]; /* unrecognized lines */
.
6a
#define NUNREC 10
.
5c
static char *Header = "@(#) header.h 2.5 6/5/82";
.
w
q
-*-END-*-
ed - src/iextern.c << '-*-END-*-'
39c
char bfr[LBUFLEN]; /* general-use scratch area */
.
5c
static char *SccsId = "@(#) iextern.c 2.2 6/1/82";
.
w
q
-*-END-*-
ed - src/ifuncs.c << '-*-END-*-'
388a
}
/*
* Figure out who is sending the message and sign it.
* We attempt to look up the user in the gecos field of /etc/passwd.
* The Berkeley conventions (name first, & expands to login name) are
* assumed. If a site stores weird stuff in gecos, like some account
* number, too bad - local mods may be in order.
*/
char *
gensender(un)
char *un;
{
static char outbuf[100];
char inbuf[100];
struct passwd *pw;
pw = getpwnam(un);
if (pw == NULL)
return un;
buildfname(pw->pw_gecos, un, inbuf);
if (inbuf[0] == 0)
return un;
sprintf(outbuf, "%s (%s)", un, inbuf);
return outbuf;
}
/*
** BUILDFNAME -- build full name from gecos style entry.
** (routine lifted from sendmail)
**
** This routine interprets the strange entry that would appear
** in the GECOS field of the password file.
**
** Parameters:
** p -- name to build.
** login -- the login name of this user (for &).
** buf -- place to put the result.
**
** Returns:
** none.
**
** Side Effects:
** none.
*/
buildfname(p, login, buf)
register char *p;
char *login;
char *buf;
{
register char *bp = buf;
if (*p == '*')
p++;
while (*p != '\0' && *p != ',' && *p != ';' && *p != ':')
{
if (*p == '&')
{
strcpy(bp, login);
*bp = toupper(*bp);
while (*bp != '\0')
bp++;
p++;
}
else
*bp++ = *p++;
}
*bp = '\0';
}
/*
* Check if header.nbuf contains only valid newsgroup names;
* exit with error if not valid.
*
* a == TRUE means header.nbuf is subscription list
* a == FALSE means header.nbuf is newsgroup list
*/
ngfcheck(a)
int a;
{
char ngcheck[NGFSIZ]; /* Hold NGFILE newsgroups */
char tbuf[BUFLEN]; /* hold single header.nbuf news group */
register char *s1, *s2;
register FILE *f;
s1 = ngcheck;
f = xfopen(NGFILE, "r");
while (fgets(bfr, BUFLEN, f) != NULL) {
for (s2 = bfr; *s2 != '\0' &&
*s2 != ' ' && *s2 != '\t' &&
*s2 != ':' && *s2 != '\n';) {
if (s1 >= &ngcheck[NGFSIZ-2])
xerror("NGFILE too long");
*s1++ = *s2++;
}
*s1++ = NGDELIM;
}
*s1 = '\0';
fclose(f);
for (s1 = header.nbuf; *s1 != '\0';) {
if (*s1 == NEGCHAR)
s1++;
s2 = tbuf;
while ((*s2++ = *s1++) != NGDELIM)
if (s1[-1] == ':')
xerror("Newsgroup cannot contain ':'");
*s2 = '\0';
s2 = tbuf;
if (!ngmatch(s2, ngcheck) && (!a || !ngmatch(ngcheck, s2))) {
ngdel(s2);
sprintf(bfr, "Bad news group \"%s\"", s2);
newssave(stdin, NULL);
xerror(bfr);
}
}
.
380a
if (access(logfname, 0)) {
unlock(0);
return;
}
.
321a
char lockname[80];
idlock(str)
char *str;
{
register int i;
char tempname[80];
long now;
struct stat sbuf;
sprintf(tempname, "/tmp/LTMP.%d", getpid());
sprintf(lockname, "/tmp/L%s", str);
close(creat(tempname, 0666));
i = 10*60; /* Keep trying for 10 minutes */
while (link(tempname, lockname)) {
if (--i < 0) {
unlink(tempname);
sprintf(tempname, "Article %s locked up", str);
xerror(tempname);
}
time(&now);
i = stat(lockname, &sbuf);
if (i < 0) {
xerror("Directory permission problem in /tmp");
}
if (sbuf.st_mtime + 10*60 < now)
unlink(lockname);
sleep((unsigned)60);
}
unlink(tempname);
}
idunlock()
{
unlink(lockname);
}
.
226c
if (fd == NULL)
from = xfopen(INFILE, "r");
else
from = fd;
.
217,218c
newssave(fd, dummy)
FILE *fd, *dummy;
.
211a
idunlock();
.
190a
idlock(file);
.
130,134c
sprintf(bfr, DFTXMIT, sp->s_name, TRANS);
.
112a
if (ptr == 0)
ptr = h.path-1;
.
110d
5c
static char *SccsId = "@(#) ifuncs.c 2.10 6/8/82";
.
w
q
-*-END-*-
ed - src/inews.c << '-*-END-*-'
505a
setuid(duid);
#endif
.
503a
setuid(getuid());
.
502c
* to the setuid call above. The directories we just made are owned
* by our real uid, so we have to temporarily set our effective uid
* the same to allow the chown. Fortunately, USG lets us setuid back.
.
498a
#ifdef USG
.
435c
if (isprint(*cp) || isspace(*cp) || *cp=='\b')
.
292,296c
if (i == 0)
exit(0);
}
/* Do the actual insertion. */
insert();
.
289d
208c
strcpy(header.path, gensender(username));
.
200c
if (strncmp(whatever, header.path, strlen(whatever)) && uid != ROOTID && uid != geteuid() && uid)
.
198a
if (!Dflag) {
if (recording(header.nbuf)) {
if (!tty)
fwait(fsubr(newssave, stdin, NULL));
xerror("aborted due to recording");
}
}
if (!tty && mode != PROC) {
i = fork();
if (i == 0)
exit(0);
}
.
40a
#define Dflag options[8].flag
'D', '\0', FALSE, UNPROC, UNKNOWN, filename,
.
5c
static char *SccsId = "@(#) inews.c 2.9 6/1/82";
.
w
q
-*-END-*-
ed - src/params.h << '-*-END-*-'
48c
extern char bfr[LBUFLEN],username[BUFLEN],userhome[BUFLEN];
.
5c
static char *Params = "@(#) params.h 2.2 6/1/82";
.
w
q
-*-END-*-
ed - src/postnews.usg << '-*-END-*-'
25c
trap "sleep 1; rm -f $t; exit" 0 1 2
.
19c
if test x$EDITOR = x
.
14c
if test x$ng = x ; then
.
6c
if test $# -eq 1 -a ! -r "$1" ; then
.
1,2c
: '@(#) postnews.usg 2.4 6/1/82'
if test $# -gt 1 ; then
.
w
q
-*-END-*-
ed - src/postnews.v7 << '-*-END-*-'
31c
inews -t "$title" -n $ng < $1
.
27c
inews -t "$title" -n $ng <$t
.
25c
trap "sleep 1; rm -f $t; exit" 0 1 2
.
19c
if test x$EDITOR = x
.
14c
if test x$ng = x ; then
.
6c
if test $# -eq 1 -a ! -r "$1" ; then
.
1,2c
: '@(#) postnews.v7 2.4 6/1/82'
if test $# -gt 1 ; then
.
w
q
-*-END-*-
ed - src/process.c << '-*-END-*-'
69c
len = LBUFLEN;
.
53c
fprintf(stderr, "Usage: readnews [ -a [ date ]] [ -n newsgroups ] [ -t titles ] [ -lprxhfM ]\n");
.
26c
'f', '\0', FALSE, OPTION, ANY, UNKNOWN,(char *)NULL,
.
24d
5c
static char *SccsId = "@(#) process.c 2.4 6/7/82";
.
w
q
-*-END-*-
ed - src/readnews.c << '-*-END-*-'
194c
while (!sigtrap && fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
.
151a
rcreadok = TRUE;
.
117c
rcreadok = FALSE;
while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
.
115c
myrc = getenv("NEWSRC");
if (myrc == NULL)
myrc = NEWSRC;
sprintf(newsrc, "%s/%s", userhome, myrc);
.
37a
char *myrc;
.
5c
static char *SccsId = "@(#) readnews.c 2.5 6/1/82";
.
w
q
-*-END-*-
ed - src/readr.c << '-*-END-*-'
928c
sprintf(bfr, DFTXMIT, sp->s_name, TRANS);
.
796c
if (!isprogram)
.
679c
(c)ancel -[n] +[n] (f)ollowup (N)ext (u)nsubscribe (v)ersion\n");
.
606a
if (recording(hptr->nbuf, 0))
break;
.
604c
signal(SIGINT, oldsig);
.
600c
oldsig = (char *) signal(SIGINT, catchintr);
.
578c
sprintf(bfr, "%s -D -F '%s' -n %s -t \'", INEWS, folbuf, ptr2);
.
570a
tfilename = hptr->title;
ptr2 = hptr->nbuf;
folbuf[0] = 0;
if (hptr->followid) {
strcpy(folbuf, hptr->followid);
strcat(folbuf, " ");
}
strcat(folbuf, hptr->ident);
.
564,568c
hptr = &hbuf1;
.
560,562c
hptr = &h;
.
449c
sprintf(rcbuf, MAILER, hptr->title);
sprintf(bfr, "%s %s", rcbuf, address);
.
439a
/* Strip off all but first word, to avoid
* the full name (Joe Blow). */
ptr = index(rcbuf, ' ');
if (ptr)
*ptr = 0;
.
420a
/*
* Play games stripping off multiple berknet
* addresses (: or .) here. Should also strip
* off multiple @ arpanet addresses, but I
* think we should just wait for the sane world
* of internet absolute addreses.
*/
.
416a
*curberk = '\0';
.
410a
tfilename = hptr->path;
.
408,409d
406a
hptr = &hbuf1;
.
405c
hptr = &h;
.
380c
strcpy(rcbuf, hptr->path);
ptr1 = index(rcbuf, ' ');
if (ptr1)
*ptr1 = 0;
i = strcmp(username, rcbuf);
.
254a
/*
* Unsubscribe to the newsgroup and go on to next group
*/
case 'u':
obit = -1;
if (fp != NULL) {
fclose(fp);
fp = NULL;
}
if (cflag)
clear(bit);
else
putc('\n', ofp);
rfq = 0;
zapng = TRUE;
saveart;
if (nextng()) {
if (actdirect == BACKWARD)
fprintf(ofp, "Can't back up.\n");
else
goto getout;
}
break;
/* Print the current version of news */
case 'v':
fprintf(ofp, "News version: %s\n", news_version);
break;
.
252a
fflush(ofp);
}
.
251c
if (hflag) {
.
143c
if (access(filename, 4) || ((fp = fopen(filename, "r")) == NULL) || (hread(&h, fp) == NULL) || (!rfq && !select(&h))) {
.
132a
if (!rcreadok)
xxit(0);
.
41a
char *oldsig;
.
36c
char folbuf[160];
.
5c
static char *SccsId = "@(#) readr.c 2.10 6/8/82";
.
w
q
-*-END-*-
ed - src/rextern.c << '-*-END-*-'
65a
int rcreadok = FALSE; /* NEWSRC has been read OK */
int zapng = FALSE; /* ! out this newsgroup on next updaterc */
.
38c
char bfr[LBUFLEN]; /* general-use scratch area */
.
5c
static char *SccsId = "@(#) rextern.c 2.2 6/1/82";
.
w
q
-*-END-*-
ed - src/rfuncs.c << '-*-END-*-'
306a
}
/*
* Return TRUE if this article is a followup to something.
*/
isfol(hp)
register struct hbuf *hp;
{
if (hp->followid[0])
return TRUE;
if (strncmp(hp->title, "Re:", 3) == 0)
return TRUE;
return FALSE;
.
305a
if (fflag && isfol(hp))
return FALSE;
.
296a
/*
* Return TRUE if the user has not ruled out this article.
*/
.
232c
ptr[0] = oldptr;
ptr[1] = ' ';
.
223c
ptr[0] = oldptr;
ptr[1] = ' ';
.
220c
ptr--;
oldptr = *ptr;
ptr[0] = ':';
ptr[1] = '\0';
.
218d
216c
if (index(rcbuf, ',') != NULL)
ngdel(rcbuf);
else if (index(rcbuf, '!') == NULL)
.
198c
sprintf(rcbuf, "%s%c ", groupdir, zapng ? '!' : ':');
zapng = FALSE;
.
196a
char oldptr;
.
194c
updaterc()
{
.
116c
Mail()
{
.
72a
if (oldptr == '!') {
groupdir[0] = 0;
return 1;
}
.
70a
oldptr = *ptr;
.
68c
while (*ptr != ':' && *ptr != '!' && *ptr)
.
62a
}
.
61c
if (stat(groupdir, &statbuf)) {
groupdir[0] = 0;
.
56a
char oldptr;
.
5c
static char *SccsId = "@(#) rfuncs.c 2.6 6/1/82";
.
w
q
-*-END-*-
ed - src/rparams.h << '-*-END-*-'
52c
extern int actdirect, rcreadok, zapng;
.
20a
#define fflag options[11].flag
.
5c
static char *Rparams = "@(#) rparams.h 2.2 6/1/82";
.
w
q
-*-END-*-
More information about the Comp.sources.unix
mailing list