
On 08/26/2013 06:36 AM, Tomas Meszaros wrote:
vshRebootShutdownModeCompleter returns available shutdown mode names. This can be used for --mode auto completion for commands such as reboot or shutdown.
for example:
virsh> reboot --mode <TAB> acpi agent initctl signal virsh> reboot --mode i<TAB> virsh> reboot --mode initctl --- v3 * removed useless if * used virStringFreeList() instead of iteration * moved all .completer = vshRebootShutdownModeCompleter initializations into this patch
Once again, seems reasonable, but can be shortened:
+char ** +vshRebootShutdownModeCompleter(unsigned int unused_flags ATTRIBUTE_UNUSED) +{ + const char *modes[] = {"acpi", "agent", "initctl", "signal"}; + const unsigned int modes_size = ARRAY_CARDINALITY(modes); + char **names = NULL; + size_t i; + + names = vshMalloc(NULL, sizeof(char *) * (modes_size + 1)); + + for (i = 0; i < modes_size; i++) { + if (VIR_STRDUP(names[i], modes[i]) < 0) + goto cleanup; + } + + names[i] = NULL; + return names; + +cleanup: + virStringFreeList(names); + return NULL;
All this boils down to an open-coded version of return virStringSplit("acpi agent initctl signal", " ", 0); -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org