On 06/13/2011 04:47 PM, Daniel P. Berrange wrote: > On Tue, Jun 07, 2011 at 05:11:10PM +0800, Lai Jiangshan wrote: >> A VSH_OFLAG_REQ_OPT option means --optionname is required when used. >> It will kill any ambiguity even !VSH_OFLAG_REQ option listed before >> VSH_OFLAG_REQ option if the !VSH_OFLAG_REQ option is a VSH_OFLAG_REQ_OPT option. >> >> It will help us use optional arguement with VSH_OT_ARGV argument. s/arguement/argument/ >> >> Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxx> >> --- >> tools/virsh.c | 7 +++++++ >> 1 files changed, 7 insertions(+), 0 deletions(-) >> >> diff --git a/tools/virsh.c b/tools/virsh.c >> index 638029c..d13c12b 100644 >> --- a/tools/virsh.c >> +++ b/tools/virsh.c >> @@ -152,6 +152,7 @@ enum { >> VSH_OFLAG_NONE = 0, /* without flags */ >> VSH_OFLAG_REQ = (1 << 0), /* option required */ >> VSH_OFLAG_EMPTY_OK = (1 << 1), /* empty string option allowed */ >> + VSH_OFLAG_REQ_OPT = (1 << 2), /* --optionname required */ >> }; >> >> /* dummy */ >> @@ -11375,6 +11376,12 @@ vshCmddefOptParse(const vshCmdDef *cmd, uint32_t* opts_need_arg, >> return -1; /* bool options can't be mandatory */ >> continue; >> } >> + if (opt->flag & VSH_OFLAG_REQ_OPT) { >> + if (opt->flag & VSH_OFLAG_REQ) >> + *opts_required |= 1 << i; >> + continue; >> + } >> + I had to look ahead to patch 9/10 to see where this was used, but it makes sense now: virsh send-key domain linux 37 18 21 would be problematic (since the parser would try to associate linux as the first var-arg, but var-arg wants only keycodes), while: virsh send-key domain --codeset linux 37 18 21 makes it obvious that the --codeset was required for proper parsing. All because send-key, unlike echo, must have at least one keycode arg. If I'm not mistaken, this also means: virsh send-key domain 37 18 21 --codeset linux works (which is fine by me), whereas: virsh send-key domain -- 37 18 21 --codeset linux tries to parse "--codeset" and "linux" as keycodes. >> *opts_need_arg |= 1 << i; >> if (opt->flag & VSH_OFLAG_REQ) { >> if (optional) > > ACK Pushed (note that 2/10 is still unpushed, while waiting for an ACK on my v2 variant to address review comments on v1). -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list