#ifndef lint
static const char rcsid[] =
- "$Id: tape.c,v 1.68 2002/05/21 15:48:46 stelian Exp $";
+ "$Id: tape.c,v 1.71 2002/07/29 12:00:33 stelian Exp $";
#endif /* not lint */
#include <config.h>
static ssize_t dump_atomic_read __P((int, void *, size_t));
static ssize_t dump_atomic_write __P((int, const void *, size_t));
+#ifdef WRITEDEBUG
static void doslave __P((int, int, int));
+#else
+static void doslave __P((int, int));
+#endif
static void enslave __P((void));
static void flushtape __P((void));
static void killall __P((void));
}
static void
-sigpipe(int signo)
+sigpipe(UNUSED(int signo))
{
quit("Broken pipe\n");
blocksthisvol += ntrec;
if (!pipeout && !unlimited) {
if (blocksperfile) {
- if ( compressed ? (bytes_written - tapea_bytes + SLAVES * (writesize + sizeof(struct tapebuf))) >= blocksperfile * 1024
+ if ( compressed ? (bytes_written - tapea_bytes + SLAVES * (writesize + sizeof(struct tapebuf))) >= (((long long)blocksperfile) * 1024)
: blocksthisvol >= blocksperfile ) {
close_rewind();
startnewtape(0);
#ifdef RDUMP
if (host) {
rmtclose();
- while (rmtopen(tape, "O_RDONLY") < 0)
+ while (rmtopen(tape, O_RDONLY) < 0)
sleep(10);
rmtclose();
}
msg("Dumping volume %d on %s\n", tapeno, tape);
}
#ifdef RDUMP
- while ((tapefd = (host ? rmtopen(tape, "O_WRONLY|O_CREAT|O_TRUNC") : pipeout ?
+ while ((tapefd = (host ? rmtopen(tape, O_WRONLY|O_CREAT|O_TRUNC) : pipeout ?
fileno(stdout) :
OPEN(tape, O_WRONLY|O_CREAT|O_TRUNC, 0666))) < 0)
#else
if (tapeno > 1)
msg("Volume %d begins with blocks from inode %d\n",
tapeno, slp->inode);
- if (tapeno < TP_NINOS)
+ if (tapeno < (int)TP_NINOS)
volinfo[tapeno] = slp->inode;
}
}
void
-dumpabort(int signo)
+dumpabort(UNUSED(int signo))
{
if (master != 0 && master != getpid())
* proceed - handler for SIGUSR2, used to synchronize IO between the slaves.
*/
static void
-proceed(int signo)
+proceed(UNUSED(int signo))
{
if (ready)
siglongjmp(jmpbuf, 1);
!= sizeof i)
quit("master/slave protocol botched 3\n");
#endif
- doslave(cmd[0], i, (slaves[i].pid == slp->pid));
+ doslave(cmd[0],
+#ifdef WRITEDEBUG
+ i,
+#endif
+ (slaves[i].pid == slp->pid));
Exit(X_FINOK);
}
else
* slaves.
*/
static void
-doslave(int cmd, int slave_number, int first)
+doslave(int cmd,
+#ifdef WRITEDEBUG
+ int slave_number,
+#endif
+ int first)
{
int nread;
- int nextslave, size, eot_count, bufsize;
- volatile int wrote = 0;
- char *buffer;
+ int nextslave;
+ volatile int wrote = 0, size, eot_count, bufsize;
+ char * volatile buffer;
#if defined(HAVE_ZLIB) || defined(HAVE_BZLIB)
- struct tapebuf *comp_buf = NULL;
- int compresult, do_compress = !first;
+ struct tapebuf * volatile comp_buf = NULL;
+ int compresult;
+ volatile int do_compress = !first;
unsigned long worklen;
#ifdef HAVE_BZLIB
unsigned int worklen2;
}
#endif /* HAVE_BZLIB */
- if (compresult && worklen <= (writesize - 16)) {
+ if (compresult && worklen <= ((unsigned long)writesize - 16)) {
/* write the compressed buffer */
comp_buf->length = worklen;
comp_buf->compressed = 1;
while ((got = read(fd, buf, need)) > 0 && (need -= got) > 0)
(char *)buf += got;
} while (got == -1 && errno == EINTR);
- return (got < 0 ? got : count - need);
+ return (got < 0 ? got : (ssize_t)count - need);
}
/*
while ((got = write(fd, buf, need)) > 0 && (need -= got) > 0)
(char *)buf += got;
} while (got == -1 && errno == EINTR);
- return (got < 0 ? got : count - need);
+ return (got < 0 ? got : (ssize_t)count - need);
}
tapeno,
curtapepos);
gTps[sizeof(gTps) - 1] = '\0';
- if (write(gTapeposfd, gTps, strlen(gTps)) != strlen(gTps)) {
+ if (write(gTapeposfd, gTps, strlen(gTps)) != (ssize_t)strlen(gTps)) {
warn("error writing tapepos file.\n");
}
}