|
@@ -71,9 +71,11 @@ static void buffered_append(QEMUFileBuffered *s,
|
|
static void buffered_flush(QEMUFileBuffered *s)
|
|
static void buffered_flush(QEMUFileBuffered *s)
|
|
{
|
|
{
|
|
size_t offset = 0;
|
|
size_t offset = 0;
|
|
|
|
+ int error;
|
|
|
|
|
|
- if (qemu_file_get_error(s->file)) {
|
|
|
|
- DPRINTF("flush when error, bailing\n");
|
|
|
|
|
|
+ error = qemu_file_get_error(s->file);
|
|
|
|
+ if (error != 0) {
|
|
|
|
+ DPRINTF("flush when error, bailing: %s\n", strerror(-error));
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -108,14 +110,15 @@ static void buffered_flush(QEMUFileBuffered *s)
|
|
static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, int size)
|
|
static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, int size)
|
|
{
|
|
{
|
|
QEMUFileBuffered *s = opaque;
|
|
QEMUFileBuffered *s = opaque;
|
|
- int offset = 0;
|
|
|
|
|
|
+ int offset = 0, error;
|
|
ssize_t ret;
|
|
ssize_t ret;
|
|
|
|
|
|
DPRINTF("putting %d bytes at %" PRId64 "\n", size, pos);
|
|
DPRINTF("putting %d bytes at %" PRId64 "\n", size, pos);
|
|
|
|
|
|
- if (qemu_file_get_error(s->file)) {
|
|
|
|
- DPRINTF("flush when error, bailing\n");
|
|
|
|
- return -EINVAL;
|
|
|
|
|
|
+ error = qemu_file_get_error(s->file);
|
|
|
|
+ if (error) {
|
|
|
|
+ DPRINTF("flush when error, bailing: %s\n", strerror(-error));
|
|
|
|
+ return error;
|
|
}
|
|
}
|
|
|
|
|
|
DPRINTF("unfreezing output\n");
|
|
DPRINTF("unfreezing output\n");
|
|
@@ -192,14 +195,16 @@ static int buffered_close(void *opaque)
|
|
* The meaning of the return values is:
|
|
* The meaning of the return values is:
|
|
* 0: We can continue sending
|
|
* 0: We can continue sending
|
|
* 1: Time to stop
|
|
* 1: Time to stop
|
|
- * -1: There has been an error
|
|
|
|
|
|
+ * negative: There has been an error
|
|
*/
|
|
*/
|
|
static int buffered_rate_limit(void *opaque)
|
|
static int buffered_rate_limit(void *opaque)
|
|
{
|
|
{
|
|
QEMUFileBuffered *s = opaque;
|
|
QEMUFileBuffered *s = opaque;
|
|
|
|
+ int ret;
|
|
|
|
|
|
- if (qemu_file_get_error(s->file)) {
|
|
|
|
- return -1;
|
|
|
|
|
|
+ ret = qemu_file_get_error(s->file);
|
|
|
|
+ if (ret) {
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
if (s->freeze_output)
|
|
if (s->freeze_output)
|
|
return 1;
|
|
return 1;
|