X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=interactive.c;h=e367a65920c53982af55436d7b96ea53138408f8;hb=9055c71be97f1095dcdbd83da305b600f204f763;hp=812a7d5bef8a37bd3ebdbd5a2484b735827a3395;hpb=b142089267ef501e438c3dc77ecf19bead3d4e58;p=paraslash.git diff --git a/interactive.c b/interactive.c index 812a7d5b..e367a659 100644 --- a/interactive.c +++ b/interactive.c @@ -189,8 +189,6 @@ static char **i9e_completer(const char *text, int start, __a_unused int end) * * This function attaches the i9e input queue to an output queue of \a * producer. - * - * \return Standard. */ void i9e_attach_to_stdout(struct btr_node *producer) { @@ -636,7 +634,7 @@ int i9e_poll(struct pollfd *fds, nfds_t nfds, int timeout) int i9e_extract_completions(const char *word, char **string_list, char ***result) { - char **matches = para_malloc(sizeof(char *)); + char **matches = alloc(sizeof(char *)); int match_count = 0, matches_len = 1; char **p; int len = strlen(word); @@ -647,8 +645,8 @@ int i9e_extract_completions(const char *word, char **string_list, match_count++; if (match_count >= matches_len) { matches_len *= 2; - matches = para_realloc(matches, - matches_len * sizeof(char *)); + matches = arr_realloc(matches, matches_len, + sizeof(char *)); } matches[match_count - 1] = para_strdup(*p); } @@ -684,7 +682,7 @@ char **i9e_complete_commands(const char *word, struct i9e_completer *completers) if (is_prefix(word, cmd, len)) match_count++; } - matches = para_malloc((match_count + 1) * sizeof(*matches)); + matches = arr_alloc(match_count + 1, sizeof(*matches)); for (i = 0, match_count = 0; (cmd = completers[i].name); i++) if (is_prefix(word, cmd, len)) matches[match_count++] = para_strdup(cmd); @@ -768,7 +766,7 @@ int i9e_print_completions(struct i9e_completer *completers) if (*p == ' ') p++; n = end - p + 1; - ci.word = para_malloc(n + 1); + ci.word = alloc(n + 1); strncpy(ci.word, p, n); ci.word[n] = '\0'; create_matches: @@ -796,3 +794,25 @@ create_matches: free(ci.word); return ret; } + +/** + * Complete on severity strings. + * + * \param ci See struct \ref i9e_completer. + * \param cr See struct \ref i9e_completer. + * + * This is used by para_client and para_audioc which need the same completion + * primitive for the ll server/audiod command. Both define their own completer + * which is implemented as a trivial wrapper that calls this function. + */ +void i9e_ll_completer(struct i9e_completion_info *ci, + struct i9e_completion_result *cr) +{ + char *sev[] = {SEVERITIES, NULL}; + + if (ci->word_num != 1) { + cr->matches = NULL; + return; + } + i9e_extract_completions(ci->word, sev, &cr->matches); +}