A VSH_OFLAG_REQ_OPT option means --optionname is required when used.
It will kill any ambiguity, even a !VSH_OFLAG_REQ option listed before
a VSH_OFLAG_REQ option, if the !VSH_OFLAG_REQ option is a
VSH_OFLAG_REQ_OPT option.
It will help us use optional argument with VSH_OT_ARGV argument.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
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 */
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;
+ }
+
*opts_need_arg |= 1 << i;
if (opt->flag & VSH_OFLAG_REQ) {
if (optional)