Completion in virsh is enabled when readline is available. However, when it's not available, we should: * avoid defining completers with completion functions; * in cmdComplete(), mark unused arguments when there's no readline with ATTRIBUTE_UNUSED. --- tools/virsh-domain-monitor.c | 6 ++++++ tools/virsh-domain.c | 6 ++++++ tools/virsh.h | 11 ++++++++++- tools/virt-admin.c | 14 ++++++++++++++ tools/vsh.c | 2 +- 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 32a42707e..0df20eea0 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -659,7 +659,9 @@ static const vshCmdOptDef opts_domif_getlink[] = { {.name = "interface", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#if WITH_READLINE .completer = virshDomainInterfaceCompleter, +#endif .help = N_("interface device (MAC Address)") }, {.name = "persistent", @@ -996,7 +998,9 @@ static const vshCmdOptDef opts_domifstat[] = { {.name = "interface", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = virshDomainInterfaceCompleter, +#endif .help = N_("interface device specified by name or MAC Address") }, {.name = NULL} @@ -2151,7 +2155,9 @@ static const vshCmdOptDef opts_domifaddr[] = { {.name = "interface", .type = VSH_OT_STRING, .flags = VSH_OFLAG_NONE, +#ifdef WITH_READLINE .completer = virshDomainInterfaceCompleter, +#endif .help = N_("network interface name")}, {.name = "full", .type = VSH_OT_BOOL, diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 0f329d6d7..c5511adbf 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -2977,7 +2977,9 @@ static const vshCmdOptDef opts_domif_setlink[] = { {.name = "interface", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = virshDomainInterfaceCompleter, +#endif .help = N_("interface device (MAC Address)") }, {.name = "state", @@ -3148,7 +3150,9 @@ static const vshCmdOptDef opts_domiftune[] = { {.name = "interface", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = virshDomainInterfaceCompleter, +#endif .help = N_("interface device (MAC Address)") }, {.name = "inbound", @@ -11985,8 +11989,10 @@ static const vshCmdOptDef opts_detach_interface[] = { }, {.name = "mac", .type = VSH_OT_STRING, +#ifdef WITH_READLINE .completer = virshDomainInterfaceCompleter, .completer_flags = VIRSH_DOMAIN_INTERFACE_COMPLETER_MAC, +#endif .help = N_("MAC address") }, VIRSH_COMMON_OPT_DOMAIN_PERSISTENT, diff --git a/tools/virsh.h b/tools/virsh.h index 528e04558..b3cb15ac4 100644 --- a/tools/virsh.h +++ b/tools/virsh.h @@ -71,7 +71,8 @@ .help = _helpstr \ } -# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \ +# ifdef WITH_READLINE +# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \ {.name = "domain", \ .type = VSH_OT_DATA, \ .flags = VSH_OFLAG_REQ, \ @@ -79,6 +80,14 @@ .completer = virshDomainNameCompleter, \ .completer_flags = cflags, \ } +# else +# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \ + {.name = "domain", \ + .type = VSH_OT_DATA, \ + .flags = VSH_OFLAG_REQ, \ + .help = _helpstr, \ + } +# endif # define VIRSH_COMMON_OPT_CONFIG(_helpstr) \ {.name = "config", \ diff --git a/tools/virt-admin.c b/tools/virt-admin.c index c86b5763a..ac4d00dd7 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -429,7 +429,9 @@ static const vshCmdOptDef opts_srv_threadpool_info[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("Server to retrieve threadpool attributes from."), }, {.name = NULL} @@ -491,7 +493,9 @@ static const vshCmdOptDef opts_srv_threadpool_set[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("Server to alter threadpool attributes on."), }, {.name = "min-workers", @@ -598,7 +602,9 @@ static const vshCmdOptDef opts_srv_clients_list[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("server which to list connected clients from"), }, {.name = NULL} @@ -680,7 +686,9 @@ static const vshCmdOptDef opts_client_info[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("server to which <client> is connected to"), }, {.name = "client", @@ -768,7 +776,9 @@ static const vshCmdOptDef opts_client_disconnect[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("server which the client is currently connected to"), }, {.name = "client", @@ -834,7 +844,9 @@ static const vshCmdOptDef opts_srv_clients_info[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("Server to retrieve the client limits from."), }, {.name = NULL} @@ -894,7 +906,9 @@ static const vshCmdOptDef opts_srv_clients_set[] = { {.name = "server", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, +#ifdef WITH_READLINE .completer = vshAdmServerCompleter, +#endif .help = N_("Server to alter the client-related configuration limits on."), }, {.name = "max-clients", diff --git a/tools/vsh.c b/tools/vsh.c index 4426c08d6..59c8a440e 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -3500,7 +3500,7 @@ const vshCmdInfo info_complete[] = { }; bool -cmdComplete(vshControl *ctl, const vshCmd *cmd) +cmdComplete(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd ATTRIBUTE_UNUSED) { bool ret = false; #ifdef WITH_READLINE -- 2.15.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list