#ifndef lint
static const char rcsid[] =
- "$Id: tape.c,v 1.46 2001/08/16 15:24:22 stelian Exp $";
+ "$Id: tape.c,v 1.50 2001/12/24 15:53:41 stelian Exp $";
#endif /* not lint */
#include <config.h>
#endif /* USE_QFA */
static long fssize = MAXBSIZE;
static int mt = -1;
-static int pipein = 0;
+int pipein = 0;
static int magtapein = 0; /* input is from magtape */
static char magtape[MAXPATHLEN];
static char magtapeprefix[MAXPATHLEN];
fprintf(stderr, "\n");
}
do {
- fprintf(stderr, "Specify next volume #: ");
+ fprintf(stderr, "Specify next volume # (none if no more volumes): ");
(void) fflush(stderr);
(void) fgets(buf, TP_BSIZE, terminal);
} while (!feof(terminal) && buf[0] == '\n');
if (feof(terminal))
exit(1);
+ if (!strcmp(buf, "none\n")) {
+ terminateinput();
+ return;
+ }
newvol = atoi(buf);
if (newvol <= 0) {
fprintf(stderr,
/* read the block prefix */
ret = read_a_block(mt, tapebuf, PREFIXSIZE, &rl);
+
+ if (Vflag && (ret == 0 || rl < PREFIXSIZE || tpb->length == 0))
+ ret = 0;
if (ret <= 0)
goto readerr;
/* need to know if input is really from a tape */
#ifdef RRESTORE
if (host)
- magtapein = rmtioctl(MTNOP, 1) != -1;
+ magtapein = !lflag;
else
#endif
magtapein = ioctl(mt, MTIOCGET, (char *)&mt_stat) == 0;
}
- Vprintf(stdout,"Input is from %s\n", magtapein? "tape": "file/pipe");
+ Vprintf(stdout,"Input is from %s\n",
+ magtapein ? "tape" :
+ Vflag ? "multi-volume (no tape)" : "file/pipe");
}
/*