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