--- attrib/interactive.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/attrib/interactive.c b/attrib/interactive.c index a772362..be81424 100644 --- a/attrib/interactive.c +++ b/attrib/interactive.c @@ -800,6 +800,33 @@ static gboolean prompt_read(GIOChannel *chan, GIOCondition cond, return TRUE; } +static char *completion_generator(const char *text, int state) +{ + static int index = 0, len = 0; + const char *cmd = NULL; + + if (state == 0) { + index = 0; + len = strlen(text); + } + + while ((cmd = commands[index].cmd) != NULL) { + index++; + if (strncmp(cmd, text, len) == 0) + return strdup(cmd); + } + + return NULL; +} + +static char **commands_completion(const char *text, int start, int end) +{ + if (start == 0) + return rl_completion_matches(text, &completion_generator); + else + return NULL; +} + int interactive(const gchar *src, const gchar *dst, int psm) { GIOChannel *pchan; @@ -820,6 +847,7 @@ int interactive(const gchar *src, const gchar *dst, int psm) events = G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL; g_io_add_watch(pchan, events, prompt_read, NULL); + rl_attempted_completion_function = commands_completion; rl_callback_handler_install(get_prompt(), parse_line); g_main_loop_run(event_loop); -- 1.7.9.2 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html