marka@natmlab.UUCP (03/24/87)
The latest patch contained a bug where if rnews is feed batched
news via a pipe it would fail. The following is an unofficial
patch. I suggest that if you feed a site batched news you send
this through by hand (i.e. unbatched). Keep this patch so it can
be removed when an official patch comes.
*** ifuncs.c Tue Mar 24 08:49:19 1987
--- ifuncs.c.sav Mon Mar 23 17:21:11 1987
***************
*** 1070,1076
cmd[0] = c;
fgets(cmd + 1, BUFLEN, infp);
if (strncmp(cmd, "#! cunbatch", 11) == 0) {
! reset_infp(cmd);
i = strlen(cmd);
(void) lseek(0, (long) i, 0); /* position STDIN for
* exec */
--- 1070,1076 -----
cmd[0] = c;
fgets(cmd + 1, BUFLEN, infp);
if (strncmp(cmd, "#! cunbatch", 11) == 0) {
! reset_infp();
i = strlen(cmd);
(void) lseek(0, (long) i, 0); /* position STDIN for
* exec */
***************
*** 1078,1084
input_pipe(cmd, "compress", "-d", (char *) 0);
continue; /* look for the #! rnews */
} else if (strncmp(cmd, "#! c7unbatch", 12) == 0) {
! reset_infp(cmd);
i = strlen(cmd);
(void) lseek(0, (long) i, 0); /* position STDIN for
* exec */
--- 1078,1084 -----
input_pipe(cmd, "compress", "-d", (char *) 0);
continue; /* look for the #! rnews */
} else if (strncmp(cmd, "#! c7unbatch", 12) == 0) {
! reset_infp();
i = strlen(cmd);
(void) lseek(0, (long) i, 0); /* position STDIN for
* exec */
***************
*** 1209,1215
exit(0);/* all done */
} else {
! reset_infp(cmd);
i = strlen(cmd);
(void) lseek(0, (long)i, 0);
docmd(cmd);
--- 1209,1215 -----
exit(0);/* all done */
} else {
! reset_infp();
i = strlen(cmd);
(void) lseek(0, (long)i, 0);
docmd(cmd);
***************
*** 1330,1337
* beginning. We want the real file descriptor (beyond buffers) to
* reflect the true beginning. Do whatever is necessary.
*/
! reset_infp(cmd)
! char *cmd;
{
register FILE *ofd;
register int c;
--- 1330,1336 -----
* beginning. We want the real file descriptor (beyond buffers) to
* reflect the true beginning. Do whatever is necessary.
*/
! reset_infp()
{
register FILE *ofd;
register int c;
***************
*** 1345,1352
ofdname = "/tmp/inewsXXXXXX";
(void) mktemp(ofdname);
ofd = fopen(ofdname, "w");
- while ( c = *cmd++ ) /* put command line back so seek will line up */
- putc(c, ofd);
while ((c=getc(infp)) != EOF)
putc(c, ofd);
if (ferror(ofd))
--- 1344,1349 -----
ofdname = "/tmp/inewsXXXXXX";
(void) mktemp(ofdname);
ofd = fopen(ofdname, "w");
while ((c=getc(infp)) != EOF)
putc(c, ofd);
if (ferror(ofd))
D