[libvirt] [PATCH 1/2]virsh: introduce member exclude_option in vshCmdOptDef and improve auto complete with it

Chen Hanxiao chenhanxiao at cn.fujitsu.com
Mon Oct 28 01:52:49 UTC 2013



> -----Original Message-----
> From: Peter Krempa [mailto:pkrempa at redhat.com]
> Sent: Friday, October 25, 2013 4:52 PM
> To: Chen Hanxiao; libvir-list at redhat.com
> >      const char *name;
> > +    const char *exclude_option;
> 
> We use camelCase for struct member names. Also some options might
> invalidate more than one other option thus it is desirable to have this
> as a NULL terminated string list of options this option invalidates.
> 
> Later on we may use this to do automatic checking for mutually exclusive
> options that are now declared using macros in the code.
> 
> 
> >
> >      if (!state) {
> >          /* determine command name */
> 
> > @@ -2720,6 +2722,12 @@ vshReadlineOptionsGenerator(const char *text,
> int state)
> >              /* ignore non --option */
> >              continue;
> >
> > +        if (len == 2 && opt->type == VSH_OT_ALIAS)
> > +            continue;
> 
> I think we should always ignore aliases. We introduced aliases to change
> command names without breaking compatibility with scripts. For human
> interaction we shouldn't encourage to use deprecated and undocumented
> stuff even if the user remebered that such command was possibly available.
> 
> > +
> > +        if (exclude_option && (strstr(rl_line_buffer, exclude_option)))
> > +            continue;
> 
> This should then iterate the array of exclusive options.
> 
> > +
> >          if (len > 2) {
> >              if (STRNEQLEN(name, text + 2, len - 2))
> >                  continue;
> > diff --git a/tools/virsh.h b/tools/virsh.h
> > index b843788..89b284f 100644
> > --- a/tools/virsh.h
> > +++ b/tools/virsh.h
> > @@ -173,6 +173,7 @@ struct _vshCmdOptDef {
> >                                   * the name of a later public option
> */
> >      vshCompleter completer;         /* option completer */
> >      unsigned int completer_flags;   /* option completer flags */
> > +    const char *exclude_option;    /* check the exclusion of option */
> 
> As said above. Please use camelCase and turn this into the opti
> 
> 

Thanks for your review.
v2 patch will come soon based on your comments.

> 
> >  };
> >
> >  /*
> >
> 
> Peter






More information about the libvir-list mailing list