{
int inputfd = -1;
int amtread = -1;
- int ret = -1;
+ int ret = 0;
unsigned long long remain;
size_t bytes = 1024 * 1024;
char zerobuf[512];
char *buf = NULL;
if ((inputfd = open(inputvol->target.path, O_RDONLY)) < 0) {
+ ret = -errno;
virReportSystemError(errno,
_("could not open input path '%s'"),
inputvol->target.path);
bzero(&zerobuf, sizeof(zerobuf));
if (VIR_ALLOC_N(buf, bytes) < 0) {
+ ret = -errno;
virReportOOMError();
goto cleanup;
}
bytes = remain;
if ((amtread = saferead(inputfd, buf, bytes)) < 0) {
+ ret = -errno;
virReportSystemError(errno,
_("failed reading from file '%s'"),
inputvol->target.path);
if (is_dest_file && memcmp(buf+offset, zerobuf, interval) == 0) {
if (lseek(fd, interval, SEEK_CUR) < 0) {
+ ret = -errno;
virReportSystemError(errno,
_("cannot extend file '%s'"),
vol->target.path);
goto cleanup;
}
} else if (safewrite(fd, buf+offset, interval) < 0) {
+ ret = -errno;
virReportSystemError(errno,
_("failed writing to file '%s'"),
vol->target.path);
}
if (inputfd != -1 && close(inputfd) < 0) {
+ ret = -errno;
virReportSystemError(errno,
_("cannot close file '%s'"),
inputvol->target.path);
inputfd = -1;
*total -= remain;
- ret = 0;
cleanup:
if (inputfd != -1)