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