aboutsummaryrefslogtreecommitdiff
path: root/qemu-io.c
diff options
context:
space:
mode:
authorMax Reitz <mreitz@redhat.com>2018-05-09 21:42:59 +0200
committerMax Reitz <mreitz@redhat.com>2018-06-11 16:18:45 +0200
commitb32d7a39af488d280ce5f02a2ed94871d696f87a (patch)
tree8c2782e7a13f9d46066b5720223f82923b8eb0d5 /qemu-io.c
parentb444d0e9d1ae323fed1ef7c35a359ce064f36b32 (diff)
downloadqemu-b32d7a39af488d280ce5f02a2ed94871d696f87a.zip
qemu-b32d7a39af488d280ce5f02a2ed94871d696f87a.tar.gz
qemu-b32d7a39af488d280ce5f02a2ed94871d696f87a.tar.bz2
qemu-io: Let command functions return error code
This is basically what everything else in the qemu code base does, so we can do it here, too. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 20180509194302.21585-3-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'qemu-io.c')
-rw-r--r--qemu-io.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/qemu-io.c b/qemu-io.c
index 02a67c9..ec66838 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -66,10 +66,11 @@ static int get_eof_char(void)
#endif
}
-static void close_f(BlockBackend *blk, int argc, char **argv)
+static int close_f(BlockBackend *blk, int argc, char **argv)
{
blk_unref(qemuio_blk);
qemuio_blk = NULL;
+ return 0;
}
static const cmdinfo_t close_cmd = {
@@ -136,7 +137,7 @@ static void open_help(void)
"\n");
}
-static void open_f(BlockBackend *blk, int argc, char **argv);
+static int open_f(BlockBackend *blk, int argc, char **argv);
static const cmdinfo_t open_cmd = {
.name = "open",
@@ -160,12 +161,13 @@ static QemuOptsList empty_opts = {
},
};
-static void open_f(BlockBackend *blk, int argc, char **argv)
+static int open_f(BlockBackend *blk, int argc, char **argv)
{
int flags = BDRV_O_UNMAP;
int readonly = 0;
bool writethrough = true;
int c;
+ int ret;
QemuOpts *qopts;
QDict *opts;
bool force_share = false;
@@ -192,25 +194,25 @@ static void open_f(BlockBackend *blk, int argc, char **argv)
if (bdrv_parse_cache_mode(optarg, &flags, &writethrough) < 0) {
error_report("Invalid cache option: %s", optarg);
qemu_opts_reset(&empty_opts);
- return;
+ return -EINVAL;
}
break;
case 'd':
if (bdrv_parse_discard_flags(optarg, &flags) < 0) {
error_report("Invalid discard option: %s", optarg);
qemu_opts_reset(&empty_opts);
- return;
+ return -EINVAL;
}
break;
case 'o':
if (imageOpts) {
printf("--image-opts and 'open -o' are mutually exclusive\n");
qemu_opts_reset(&empty_opts);
- return;
+ return -EINVAL;
}
if (!qemu_opts_parse_noisily(&empty_opts, optarg, false)) {
qemu_opts_reset(&empty_opts);
- return;
+ return -EINVAL;
}
break;
case 'U':
@@ -219,7 +221,7 @@ static void open_f(BlockBackend *blk, int argc, char **argv)
default:
qemu_opts_reset(&empty_opts);
qemuio_command_usage(&open_cmd);
- return;
+ return -EINVAL;
}
}
@@ -230,7 +232,7 @@ static void open_f(BlockBackend *blk, int argc, char **argv)
if (imageOpts && (optind == argc - 1)) {
if (!qemu_opts_parse_noisily(&empty_opts, argv[optind], false)) {
qemu_opts_reset(&empty_opts);
- return;
+ return -EINVAL;
}
optind++;
}
@@ -240,18 +242,26 @@ static void open_f(BlockBackend *blk, int argc, char **argv)
qemu_opts_reset(&empty_opts);
if (optind == argc - 1) {
- openfile(argv[optind], flags, writethrough, force_share, opts);
+ ret = openfile(argv[optind], flags, writethrough, force_share, opts);
} else if (optind == argc) {
- openfile(NULL, flags, writethrough, force_share, opts);
+ ret = openfile(NULL, flags, writethrough, force_share, opts);
} else {
qobject_unref(opts);
qemuio_command_usage(&open_cmd);
+ return -EINVAL;
+ }
+
+ if (ret) {
+ return -EINVAL;
}
+
+ return 0;
}
-static void quit_f(BlockBackend *blk, int argc, char **argv)
+static int quit_f(BlockBackend *blk, int argc, char **argv)
{
quit_qemu_io = true;
+ return 0;
}
static const cmdinfo_t quit_cmd = {