On Tue, Oct 01, 2019 at 11:37:17AM +0200, Pavel Hrdina wrote: > On Fri, Sep 27, 2019 at 06:17:31PM +0100, Daniel P. Berrangé wrote: > > The GOptionContext API has the benefit over getopt_long that it will > > automatically handle --help output formatting. > > > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > > --- > > tools/virsh.c | 303 ++++++++++++++++++++++---------------------------- > > 1 file changed, 135 insertions(+), 168 deletions(-) > > > > diff --git a/tools/virsh.c b/tools/virsh.c > > index ec20f35a77..6c469ff576 100644 > > --- a/tools/virsh.c > > +++ b/tools/virsh.c > > @@ -23,7 +23,6 @@ > > > > #include <stdarg.h> > > #include <unistd.h> > > -#include <getopt.h> > > #include <sys/time.h> > > #include <fcntl.h> > > #include <time.h> > > @@ -445,53 +444,36 @@ virshDeinit(vshControl *ctl) > > } > > + { "version", 'v', G_OPTION_FLAG_OPTIONAL_ARG, > > + G_OPTION_ARG_CALLBACK, virshVersion, > > + _("print short version"), "[short]" }, > > + { "version", 'V', 0, > > + G_OPTION_ARG_NONE, &version, > > + _("print long version"), "long" }, > > We should be able to have both -v and -V call virshVersion if the > functions will look like this: > > static gboolean > virshVersion(const gchar *option_name, > const gchar *value, > gpointer data, > GError **error G_GNUC_UNUSED) > { > vshControl *ctl = data; > > if (STREQ(option_name, "-V") || STREQ_NULLABLE(value, "long")) > virshShowVersion(ctl); > else > puts(VERSION); > > exit(EXIT_SUCCESS); > } > > That way we will have only a single place where the version printing > code is. Hmm, so "option_name" in the callback is the option that the user actually passed ? I was thinking it was the option name from the static array - ie it would always be "version". If you're right though, this is definitely my preference. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list