summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorJenkins2 <jenkins2@gerrit.asterisk.org>2017-11-27 13:23:52 -0600
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-11-27 13:23:52 -0600
commitb69bfc637f1eefeb2e2ebc73ae4770b70ab05775 (patch)
tree1b7282851e36aac5bfb7a1a9d9aebc19bc3e71f9 /main
parent93dba6f39670d3b39e05831fa685698227b8c7f3 (diff)
parent9c0a2110f0dab77fbf67e4bdd8cd1e7af6bd6545 (diff)
Merge "CLI: Refactor ast_cli_display_match_list."
Diffstat (limited to 'main')
-rw-r--r--main/asterisk.c44
1 files changed, 15 insertions, 29 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index 77046f272..2908b4680 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -3071,51 +3071,37 @@ static int ast_el_sort_compare(const void *i1, const void *i2)
return strcasecmp(s1, s2);
}
-static int ast_cli_display_match_list(char **matches, int len, int max)
+static void ast_cli_display_match_list(char **matches, int len, int max)
{
- int i, idx, limit, count;
- int screenwidth = 0;
- int numoutput = 0, numoutputline = 0;
-
- screenwidth = ast_get_termcols(STDOUT_FILENO);
-
+ int idx = 1;
/* find out how many entries can be put on one line, with two spaces between strings */
- limit = screenwidth / (max + 2);
- if (limit == 0)
- limit = 1;
+ int limit = ast_get_termcols(STDOUT_FILENO) / (max + 2);
- /* how many lines of output */
- count = len / limit;
- if (count * limit < len)
- count++;
-
- idx = 1;
+ if (limit == 0) {
+ limit = 1;
+ }
qsort(&matches[0], (size_t)(len), sizeof(char *), ast_el_sort_compare);
- for (; count > 0; count--) {
- numoutputline = 0;
- for (i = 0; i < limit && matches[idx]; i++, idx++) {
+ for (;;) {
+ int numoutputline;
+ for (numoutputline = 0; numoutputline < limit && matches[idx]; idx++) {
/* Don't print dupes */
if ( (matches[idx+1] != NULL && strcmp(matches[idx], matches[idx+1]) == 0 ) ) {
- i--;
- ast_free(matches[idx]);
- matches[idx] = NULL;
continue;
}
- numoutput++;
numoutputline++;
fprintf(stdout, "%-*s ", max, matches[idx]);
- ast_free(matches[idx]);
- matches[idx] = NULL;
}
- if (numoutputline > 0)
- fprintf(stdout, "\n");
- }
- return numoutput;
+ if (!numoutputline) {
+ break;
+ }
+
+ fprintf(stdout, "\n");
+ }
}