diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2013-02-22 17:36:38 +0100 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2013-03-11 13:32:02 +0100 |
commit | 13c7b2da073ec83cb47f9582149c8d28bb038e73 (patch) | |
tree | 762b1f60b9a06871b8c04b35add77930f183c938 | |
parent | ce39ee3184a02eca7f9529cc19b1582f6f704c70 (diff) |
qemu-file: check exit status when closing a pipe QEMUFile
This is what exec_close does. Move this to the underlying QEMUFile.
Reviewed-by: Orit Wasserman <owasserm@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r-- | include/qemu/osdep.h | 7 | ||||
-rw-r--r-- | migration-exec.c | 4 | ||||
-rw-r--r-- | savevm.c | 3 |
3 files changed, 10 insertions, 4 deletions
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 87d3b9cfa8..df244006c7 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -9,6 +9,13 @@ #include <sys/signal.h> #endif +#ifndef _WIN32 +#include <sys/wait.h> +#else +#define WIFEXITED(x) 1 +#define WEXITSTATUS(x) (x) +#endif + #include <sys/time.h> #if defined(CONFIG_SOLARIS) && CONFIG_SOLARIS_VERSION < 10 diff --git a/migration-exec.c b/migration-exec.c index 5dc73139a4..a2b5f8d729 100644 --- a/migration-exec.c +++ b/migration-exec.c @@ -50,10 +50,6 @@ static int exec_close(MigrationState *s) ret = qemu_fclose(s->opaque); s->opaque = NULL; s->fd = -1; - if (ret >= 0 && !(WIFEXITED(ret) && WEXITSTATUS(ret) == 0)) { - /* close succeeded, but non-zero exit code: */ - ret = -EIO; /* fake errno value */ - } return ret; } @@ -247,6 +247,9 @@ static int stdio_pclose(void *opaque) ret = pclose(s->stdio_file); if (ret == -1) { ret = -errno; + } else if (!WIFEXITED(ret) || WEXITSTATUS(ret) != 0) { + /* close succeeded, but non-zero exit code: */ + ret = -EIO; /* fake errno value */ } g_free(s); return ret; |