[PATCH 2/3] virsh: Provide completer for CPU architectures
Michal Prívozník
mprivozn at redhat.com
Mon Apr 4 14:32:23 UTC 2022
On 4/2/22 12:31, Amneesh Singh wrote:
> Related: https://gitlab.com/libvirt/libvirt/-/issues/9
> Signed-off-by: Amneesh Singh <natto at 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)
I think instead of changing this type (which should go into a separate
patch anyway) ...
> {
> 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);
.. this callback can be typecasted. The reason is that virarch.c uses
virArch for type of variables instead of int. I worry that switching to
plain int may tempt to use int for variables too in which case we'd lose
this nice feature of compilers: switch (var) warns you if var is of an
enum type, but it doesn't if it's a plain int.
Michal
More information about the libvir-list
mailing list