"virsh connect ''" should try to connect to the default connection, but the previous patch made it issue a warning about an invalid URI. * tools/virsh.c (VSH_OFLAG_EMPTY_OK): New option flag. (vshCommandOptString): Per the declaration, value is required to be non-NULL. Honor new flag. (opts_connect): Allow empty string connection. --- tools/virsh.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 42ebd55..ef0cfea 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -152,8 +152,9 @@ typedef enum { /* * Command Option Flags */ -#define VSH_OFLAG_NONE 0 /* without flags */ -#define VSH_OFLAG_REQ (1 << 1) /* option required */ +#define VSH_OFLAG_NONE 0 /* without flags */ +#define VSH_OFLAG_REQ (1 << 1) /* option required */ +#define VSH_OFLAG_EMPTY_OK (1 << 2) /* empty string option allowed */ /* dummy */ typedef struct __vshControl vshControl; @@ -685,7 +686,8 @@ static const vshCmdInfo info_connect[] = { }; static const vshCmdOptDef opts_connect[] = { - {"name", VSH_OT_DATA, 0, N_("hypervisor connection URI")}, + {"name", VSH_OT_DATA, VSH_OFLAG_EMPTY_OK, + N_("hypervisor connection URI")}, {"readonly", VSH_OT_BOOL, 0, N_("read-only connection")}, {NULL, 0, 0, NULL} }; @@ -10993,14 +10995,16 @@ vshCommandOptString(const vshCmd *cmd, const char *name, const char **value) int ret = 0; if (arg && arg->data) { - ret = -1; - if (*arg->data) { - if (value) { - *value = arg->data; - ret = 1; - } + if (*arg->data + || (arg->def && (arg->def->flag & VSH_OFLAG_EMPTY_OK))) { + *value = arg->data; + ret = 1; } else if (arg->def && ((arg->def->flag) & VSH_OFLAG_REQ)) { vshError(NULL, _("Missing required option '%s'"), name); + ret = -1; + } else { + /* Treat "--option ''" as if option had not been specified. */ + ret = 0; } } -- 1.7.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list