
On 20.08.2013 22:02, Tomas Meszaros wrote:
* label cleanup renamed to error * vshSuspendTargetCompleter added to opts_dom_pm_suspend --- tools/virsh-domain.c | 3 ++- tools/virsh.c | 28 ++++++++++++++++++++++++++++ tools/virsh.h | 1 + 3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 5d4913d..a2002c5 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -2756,7 +2756,8 @@ static const vshCmdOptDef opts_dom_pm_suspend[] = { .flags = VSH_OFLAG_REQ, .help = N_("mem(Suspend-to-RAM), " "disk(Suspend-to-Disk), " - "hybrid(Hybrid-Suspend)") + "hybrid(Hybrid-Suspend)"), + .completer = vshSuspendTargetCompleter
This is what I had on my mind in 4/9.
}, {.name = NULL} }; diff --git a/tools/virsh.c b/tools/virsh.c index 13c27df..85d74ad 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -2550,6 +2550,34 @@ error: return NULL; }
+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)); + + if (!names) + return NULL; + + for (i = 0; i < targets_size; i++) { + if (VIR_STRDUP(names[i], targets[i]) < 0) + goto error; + } + + names[i] = NULL; + return names; + +error: + for (i = 0; names[i]; i++) + VIR_FREE(names[i]); + VIR_FREE(names); + return NULL; +} + /* ----------------- * Readline stuff * ----------------- diff --git a/tools/virsh.h b/tools/virsh.h index 68414e4..6767e65 100644 --- a/tools/virsh.h +++ b/tools/virsh.h @@ -256,6 +256,7 @@ struct _vshCmdGrp { };
char **vshDomainCompleter(unsigned int flags); +char **vshSuspendTargetCompleter(unsigned int unused_flags);
void vshError(vshControl *ctl, const char *format, ...) ATTRIBUTE_FMT_PRINTF(2, 3);
Michal