On 08/26/2013 06:36 AM, Tomas Meszaros wrote: > vshSuspendTargetCompleter returns targets available for suspend. > > This completer can be used for the command option completion > (for dompmsuspend, etc.). > > virsh> dompmsuspend --target <TAB> > mem disk hybrid > virsh> dompmsuspend --target h<TAB> > virsh> dompmsuspend --target hybrid > --- > v2 > * label cleanup renamed to error > * vshSuspendTargetCompleter added to opts_dom_pm_suspend > > v3 > * removed useless if > * used virStringFreeList() instead of iteration > > tools/virsh-domain.c | 3 ++- > tools/virsh.c | 23 +++++++++++++++++++++++ > tools/virsh.h | 1 + > 3 files changed, 26 insertions(+), 1 deletion(-) This patch looks pretty decent, especially since it is installed as a per-option handler. > > +char ** > +vshSuspendTargetCompleter(unsigned int unused_flags ATTRIBUTE_UNUSED) > +{ > + const char *targets[] = {"mem", "disk", "hybrid"}; > + const unsigned int targets_size = ARRAY_CARDINALITY(targets); > + char **names = NULL; > + size_t i; > + > + names = vshMalloc(NULL, sizeof(char *) * (targets_size + 1)); > + > + for (i = 0; i < targets_size; i++) { > + if (VIR_STRDUP(names[i], targets[i]) < 0) > + goto error; > + } > + > + names[i] = NULL; > + return names; Call me a hacker, but what's wrong with this equivalent implementation done by reusing existing code: char ** vshSuspendTargetCompleter(unsigned int ignored ATTRIBUTE_UNUSED) { return virStringSplit("mem disk hybrid", " ", 0); } -- Eric Blake eblake redhat com +1-919-301-3266 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