*
*/
/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ Copyright (C) 2000-2003 Kern Sibbald and John Walker
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
*/
int write_block_to_dev(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
{
- size_t stat = 0;
+ ssize_t stat = 0;
uint32_t wlen; /* length to write */
int hit_max1, hit_max2;
int ok;
dev->VolCatInfo.VolCatWrites++;
Dmsg1(500, "Write block of %u bytes\n", wlen);
- if ((uint32_t) (stat=write(dev->fd, block->buf, (size_t)wlen)) != wlen) {
+ if ((uint32_t)(stat=write(dev->fd, block->buf, (size_t)wlen)) != wlen) {
/* We should check for errno == ENOSPC, BUT many
* devices simply report EIO when it is full.
* with a little more thought we may be able to check
* then re-read it and verify that the block number is
* correct.
*/
- if (dev->state & ST_TAPE && dev->capabilities & CAP_BSR) {
+ if (dev->state & ST_TAPE && dev_cap(dev, CAP_BSR)) {
/* Now back up over what we wrote and read the last block */
if (bsf_dev(dev, 1) != 0 || bsf_dev(dev, 1) != 0) {
*/
int read_block_from_dev(DEVICE *dev, DEV_BLOCK *block)
{
- size_t stat;
+ ssize_t stat;
int looping;
looping = 0;
Mmsg1(&dev->errmsg, _("Read zero bytes on device %s.\n"), dev->dev_name);
if (dev->state & ST_EOF) { /* EOF alread read? */
dev->state |= ST_EOT; /* yes, 2 EOFs => EOT */
+ block->read_len = 0;
return 0;
}
dev->file++; /* increment file */
dev->state |= ST_EOF; /* set EOF read */
+ block->read_len = 0;
return 0; /* return eof */
}
/* Continue here for successful read */
}
if (!unser_block_header(dev, block)) {
+ block->read_len = 0;
return 0;
}
Dmsg0(100, "Backspace record for reread.\n");
if (bsf_dev(dev, 1) != 0) {
Emsg0(M_ERROR, 0, dev->errmsg);
+ block->read_len = 0;
return 0;
}
} else {