Related:
https://gitlab.com/libvirt/libvirt/-/issues/9
Signed-off-by: Amneesh Singh <natto(a)weirdnatto.in>
---
src/util/virarch.c | 2 +-
src/util/virarch.h | 2 +-
tools/virsh-completer-host.c | 12 ++++++++++++
tools/virsh-completer-host.h | 5 +++++
tools/virsh-host.c | 4 ++++
5 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/util/virarch.c b/src/util/virarch.c
index 2134dd6..b1ea85e 100644
--- a/src/util/virarch.c
+++ b/src/util/virarch.c
@@ -123,7 +123,7 @@ virArchEndian virArchGetEndian(virArch arch)
*
* Return the string name of the architecture
*/
-const char *virArchToString(virArch arch)
+const char *virArchToString(int arch)
{
if (arch >= VIR_ARCH_LAST)
arch = VIR_ARCH_NONE;
diff --git a/src/util/virarch.h b/src/util/virarch.h
index 81b1b27..7daa0f1 100644
--- a/src/util/virarch.h
+++ b/src/util/virarch.h
@@ -110,7 +110,7 @@ typedef enum {
unsigned int virArchGetWordSize(virArch arch);
virArchEndian virArchGetEndian(virArch arch);
-const char *virArchToString(virArch arch);
+const char *virArchToString(int arch);
virArch virArchFromString(const char *name);
virArch virArchFromHost(void);
diff --git a/tools/virsh-completer-host.c b/tools/virsh-completer-host.c
index 14c68d3..67a7687 100644
--- a/tools/virsh-completer-host.c
+++ b/tools/virsh-completer-host.c
@@ -27,6 +27,7 @@
#include "virxml.h"
#include "virutil.h"
#include "virsh-host.h"
+#include "virarch.h"
#include "conf/domain_conf.h"
static char *
@@ -192,3 +193,14 @@ virshVirtTypeCompleter(vshControl *ctl G_GNUC_UNUSED,
return virshEnumComplete(VIR_DOMAIN_VIRT_LAST,
virDomainVirtTypeToString);
}
+
+char **
+virshArchCompleter(vshControl *ctl G_GNUC_UNUSED,
+ const vshCmd *cmd G_GNUC_UNUSED,
+ unsigned int flags)
+{
+ virCheckFlags(0, NULL);
+
+ return virshEnumComplete(VIR_ARCH_LAST,
+ virArchToString);
+}
diff --git a/tools/virsh-completer-host.h b/tools/virsh-completer-host.h
index 372ac14..b34163c 100644
--- a/tools/virsh-completer-host.h
+++ b/tools/virsh-completer-host.h
@@ -46,3 +46,8 @@ char **
virshVirtTypeCompleter(vshControl *ctl,
const vshCmd *cmd,
unsigned int flags);
+
+char **
+virshArchCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags);
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 664f9fd..8f94d2a 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -86,6 +86,7 @@ static const vshCmdOptDef opts_domcapabilities[] = {
},
{.name = "arch",
.type = VSH_OT_STRING,
+ .completer = virshArchCompleter,
.help = N_("domain architecture (/domain/os/type/@arch)"),
},
{.name = "machine",
@@ -1312,6 +1313,7 @@ static const vshCmdInfo info_cpu_models[] = {
static const vshCmdOptDef opts_cpu_models[] = {
{.name = "arch",
.type = VSH_OT_DATA,
+ .completer = virshArchCompleter,
.flags = VSH_OFLAG_REQ,
.help = N_("architecture")
},
@@ -1588,6 +1590,7 @@ static const vshCmdOptDef opts_hypervisor_cpu_compare[] = {
},
{.name = "arch",
.type = VSH_OT_STRING,
+ .completer = virshArchCompleter,
.help = N_("CPU architecture (/domain/os/type/@arch)"),
},
{.name = "machine",
@@ -1698,6 +1701,7 @@ static const vshCmdOptDef opts_hypervisor_cpu_baseline[] = {
},
{.name = "arch",
.type = VSH_OT_STRING,
+ .completer = virshArchCompleter,
.help = N_("CPU architecture (/domain/os/type/@arch)"),
},
{.name = "machine",
--
2.35.1