[libvirt] [PATCH v2 04/13] virsh-interface: Add a static helper virshInterfaceStringHelper
Michal Privoznik
mprivozn at redhat.com
Tue Nov 10 17:37:14 UTC 2020
On 11/10/20 10:50 AM, Lin Ma wrote:
> It will be helpful to get the desired string of interface name/mac in a
> consistent way.
>
> Signed-off-by: Lin Ma <lma at suse.com>
> ---
> tools/virsh-completer-interface.c | 25 ++++++++++++++++---------
> tools/virsh-completer-interface.h | 3 +++
> 2 files changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/tools/virsh-completer-interface.c b/tools/virsh-completer-interface.c
> index 8028db8746..407021485f 100644
> --- a/tools/virsh-completer-interface.c
> +++ b/tools/virsh-completer-interface.c
> @@ -25,16 +25,16 @@
> #include "virsh.h"
> #include "virstring.h"
>
> -char **
> -virshInterfaceNameCompleter(vshControl *ctl,
> - const vshCmd *cmd G_GNUC_UNUSED,
> - unsigned int flags)
> +static char **
> +virshInterfaceStringHelper(vshControl *ctl,
> + const vshCmd *cmd G_GNUC_UNUSED,
> + unsigned int flags,
> + virInterfaceStringCallback cb)
> {
> virshControlPtr priv = ctl->privData;
> virInterfacePtr *ifaces = NULL;
> int nifaces = 0;
> size_t i = 0;
> - char **ret = NULL;
> VIR_AUTOSTRINGLIST tmp = NULL;
>
> virCheckFlags(VIR_CONNECT_LIST_INTERFACES_ACTIVE |
> @@ -50,15 +50,22 @@ virshInterfaceNameCompleter(vshControl *ctl,
> tmp = g_new0(char *, nifaces + 1);
>
> for (i = 0; i < nifaces; i++) {
> - const char *name = virInterfaceGetName(ifaces[i]);
> + const char *name = (cb)(ifaces[i]);
>
> tmp[i] = g_strdup(name);
> }
>
> - ret = g_steal_pointer(&tmp);
> -
> for (i = 0; i < nifaces; i++)
> virInterfaceFree(ifaces[i]);
> g_free(ifaces);
> - return ret;
> +
> + return g_steal_pointer(&tmp);
> +}
> +
> +char **
> +virshInterfaceNameCompleter(vshControl *ctl,
> + const vshCmd *cmd,
> + unsigned int flags)
> +{
> + return virshInterfaceStringHelper(ctl, cmd, flags, virInterfaceGetName);
> }
> diff --git a/tools/virsh-completer-interface.h b/tools/virsh-completer-interface.h
> index 893dee5a6b..32da01e766 100644
> --- a/tools/virsh-completer-interface.h
> +++ b/tools/virsh-completer-interface.h
> @@ -22,6 +22,9 @@
>
> #include "vsh.h"
>
> +typedef const char *
> +(*virInterfaceStringCallback)(virInterfacePtr iface);
> +
This definition belongs to virsh-completer-interface.c because the
function using it is static and thus there is no way anybody else can
call it hence less header pollution.
Michal
More information about the libvir-list
mailing list