From e2fe0eeb18f7539fc43621cb6438244e7e7d6a17 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 24 Jun 2016 18:36:14 +0200 Subject: [PATCH] cli: add arbitrary string list completion helper --- clients/cli/common.c | 22 ++++++++++++++++++++++ clients/cli/common.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/clients/cli/common.c b/clients/cli/common.c index 0267d6f67b..6c7a6dc46b 100644 --- a/clients/cli/common.c +++ b/clients/cli/common.c @@ -1442,3 +1442,25 @@ nmc_do_cmd (NmCli *nmc, const NMCCommand cmds[], const char *cmd, int argc, char return nmc->return_value; } + +/** + * nmc_complete_strings: + * @prefix: a string to match + * @...: a %NULL-terminated list of candidate strings + * + * Prints all the matching candidates for completion. Useful when there's + * no better way to suggest completion other than a hardcoded string list. + */ +void +nmc_complete_strings (const char *prefix, ...) +{ + va_list args; + const char *candidate; + + va_start (args, prefix); + while ((candidate = va_arg (args, const char *))) { + if (!*prefix || matches (prefix, candidate) == 0) + g_print ("%s\n", candidate); + } + va_end (args); +} diff --git a/clients/cli/common.h b/clients/cli/common.h index 79cd81a07d..eacd20eb44 100644 --- a/clients/cli/common.h +++ b/clients/cli/common.h @@ -81,4 +81,6 @@ typedef struct { NMCResultCode nmc_do_cmd (NmCli *nmc, const NMCCommand cmds[], const char *argv0, int argc, char **argv); +void nmc_complete_strings (const char *prefix, ...) G_GNUC_NULL_TERMINATED; + #endif /* NMC_COMMON_H */