size_t nbytes,
void *opaque)
{
- int *fd = opaque;
+ virshStreamCallbackDataPtr cbData = opaque;
- return safewrite(*fd, bytes, nbytes);
+ return safewrite(cbData->fd, bytes, nbytes);
}
long long offset,
void *opaque)
{
- int *fd = opaque;
+ virshStreamCallbackDataPtr cbData = opaque;
off_t cur;
- if ((cur = lseek(*fd, offset, SEEK_CUR)) == (off_t) -1)
+ if ((cur = lseek(cbData->fd, offset, SEEK_CUR)) == (off_t) -1)
return -1;
- if (ftruncate(*fd, cur) < 0)
+ if (ftruncate(cbData->fd, cur) < 0)
return -1;
return 0;
unsigned long long offset = 0, length = 0;
bool created = false;
virshControlPtr priv = ctl->privData;
+ virshStreamCallbackData cbData;
unsigned int flags = 0;
if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0)
created = true;
}
+ cbData.ctl = ctl;
+ cbData.fd = fd;
+
if (!(st = virStreamNew(priv->conn, 0))) {
vshError(ctl, _("cannot create a new stream"));
goto cleanup;
goto cleanup;
}
- if (virStreamSparseRecvAll(st, virshStreamSink, virshStreamSkip, &fd) < 0) {
+ if (virStreamSparseRecvAll(st, virshStreamSink, virshStreamSkip, &cbData) < 0) {
vshError(ctl, _("cannot receive data from volume %s"), name);
goto cleanup;
}