diff --git a/qemu-io.c b/qemu-io.c index 3b3340a..4d0e9f6 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -57,8 +57,13 @@ static int openfile(char *name, int flags, int growable, QDict *opts) if (growable) { if (bdrv_file_open(&qemuio_bs, name, opts, flags, &local_err)) { - fprintf(stderr, "%s: can't open device %s: %s\n", progname, name, - error_get_pretty(local_err)); + if (name) { + fprintf(stderr, "%s: can't open device %s: %s\n", progname, + name, error_get_pretty(local_err)); + } else { + fprintf(stderr, "%s: can't open device: %s\n", progname, + error_get_pretty(local_err)); + } error_free(local_err); return 1; } @@ -66,8 +71,13 @@ static int openfile(char *name, int flags, int growable, QDict *opts) qemuio_bs = bdrv_new("hda"); if (bdrv_open(qemuio_bs, name, opts, flags, NULL, &local_err) < 0) { - fprintf(stderr, "%s: can't open device %s: %s\n", progname, name, - error_get_pretty(local_err)); + if (name) { + fprintf(stderr, "%s: can't open device %s: %s\n", progname, + name, error_get_pretty(local_err)); + } else { + fprintf(stderr, "%s: can't open device: %s\n", progname, + error_get_pretty(local_err)); + } error_free(local_err); bdrv_unref(qemuio_bs); qemuio_bs = NULL; @@ -127,6 +137,7 @@ static int open_f(BlockDriverState *bs, int argc, char **argv) int c; QemuOpts *qopts; QDict *opts = NULL; + char *filename = NULL; while ((c = getopt(argc, argv, "snrgo:")) != EOF) { switch (c) { @@ -160,11 +171,13 @@ static int open_f(BlockDriverState *bs, int argc, char **argv) flags |= BDRV_O_RDWR; } - if (optind != argc - 1) { + if (optind == argc - 1) { + filename = argv[optind]; + } else if (optind < argc - 1) { return qemuio_command_usage(&open_cmd); } - return openfile(argv[optind], flags, growable, opts); + return openfile(filename, flags, growable, opts); } static int quit_f(BlockDriverState *bs, int argc, char **argv)