return g_steal_pointer(&tmp);
}
+
+
+char **
+virshDomainFSMountpointsCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags)
+{
+ g_auto(GStrv) tmp = NULL;
+ virDomainPtr dom = NULL;
+ int rc = -1;
+ size_t i;
+ virDomainFSInfoPtr *info = NULL;
+ size_t ninfos = 0;
+ char **ret = NULL;
+
+ virCheckFlags(0, NULL);
+
+ if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
+ return NULL;
+
+ rc = virDomainGetFSInfo(dom, &info, 0);
+ if (rc <= 0) {
+ goto cleanup;
+ }
+ ninfos = rc;
+
+ tmp = g_new0(char *, ninfos + 1);
+ for (i = 0; i < ninfos; i++) {
+ tmp[i] = g_strdup(info[i]->mountpoint);
+ }
+ ret = g_steal_pointer(&tmp);
+
+ cleanup:
+ if (info) {
+ for (i = 0; i < ninfos; i++)
+ virDomainFSInfoFree(info[i]);
+ VIR_FREE(info);
+ }
+ virshDomainFree(dom);
+ return ret;
+}
},
{.name = "mountpoint",
.type = VSH_OT_STRING,
+ .completer = virshDomainFSMountpointsCompleter,
.help = N_("which mount point to trim")
},
{.name = NULL}
VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mountpoint",
.type = VSH_OT_ARGV,
+ .completer = virshDomainFSMountpointsCompleter,
.help = N_("mountpoint path to be frozen")
},
{.name = NULL}
VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mountpoint",
.type = VSH_OT_ARGV,
+ .completer = virshDomainFSMountpointsCompleter,
.help = N_("mountpoint path to be thawed")
},
{.name = NULL}