提交 13fa7b58 编写于 作者: M Michal Privoznik

virsh: Fix virshDomainInterfaceSourceCompleter

Introduced in v5.10.0-449-gcf44ec55 it used
virshCommaStringListComplete() to generate list of options. But
this is not correct because the '--source' argument of the
'domifaddr' doesn't accept a string list (for instance
"arp,agent,lease") rather than a single string. Therefore, the
completer must return these strings separately and thus must
refrain from using virshCommaStringListComplete().

At the same time, now that we have strings we need declared as
an enum we can use TypeToString() instead of copying strings.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 79b9328d
......@@ -24,6 +24,7 @@
#include "viralloc.h"
#include "virmacaddr.h"
#include "virsh-domain.h"
#include "virsh-domain-monitor.h"
#include "virsh-util.h"
#include "virsh.h"
#include "virstring.h"
......@@ -299,17 +300,19 @@ virshDomainShutdownModeCompleter(vshControl *ctl,
char **
virshDomainInterfaceAddrSourceCompleter(vshControl *ctl,
const vshCmd *cmd,
virshDomainInterfaceAddrSourceCompleter(vshControl *ctl G_GNUC_UNUSED,
const vshCmd *cmd G_GNUC_UNUSED,
unsigned int flags)
{
const char *sources[] = {"lease", "agent", "arp", NULL};
const char *source = NULL;
char **ret = NULL;
size_t i;
virCheckFlags(0, NULL);
if (vshCommandOptStringQuiet(ctl, cmd, "source", &source) < 0)
return NULL;
ret = g_new0(typeof(*ret), VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST + 1);
for (i = 0; i < VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST; i++)
ret[i] = g_strdup(virshDomainInterfaceAddressesSourceTypeToString(i));
return virshCommaStringListComplete(source, sources);
return ret;
}
......@@ -2358,7 +2358,6 @@ static const vshCmdOptDef opts_domifaddr[] = {
{.name = NULL}
};
VIR_ENUM_DECL(virshDomainInterfaceAddressesSource);
VIR_ENUM_IMPL(virshDomainInterfaceAddressesSource,
VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST,
"lease",
......
......@@ -26,4 +26,6 @@ char *virshGetDomainDescription(vshControl *ctl, virDomainPtr dom,
bool title, unsigned int flags)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT;
VIR_ENUM_DECL(virshDomainInterfaceAddressesSource);
extern const vshCmdDef domMonitoringCmds[];
......@@ -31,6 +31,7 @@
#include "virpolkit.h"
#include "vsh.h"
#include "virsh-completer.h"
#include "virenum.h"
#define VIRSH_PROMPT_RW "virsh # "
#define VIRSH_PROMPT_RO "virsh > "
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册