[Asterisk-code-review] CLI: Refactor ast cli display match list. (asterisk[13])

Corey Farrell asteriskteam at digium.com
Tue Nov 21 08:56:18 CST 2017


Corey Farrell has uploaded this change for review. ( https://gerrit.asterisk.org/7340


Change subject: CLI: Refactor ast_cli_display_match_list.
......................................................................

CLI: Refactor ast_cli_display_match_list.

* Stop estimating line count, just print until we run out of matches.
* Stop freeing entries, the caller does that anyways.
* Stop calculating / returning numoutput, it was ignored.

Change-Id: I7f92afa8bea92241a95227587367424c8c32a5cb
---
M main/asterisk.c
1 file changed, 15 insertions(+), 29 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/40/7340/1

diff --git a/main/asterisk.c b/main/asterisk.c
index 964fa25..b769f6c 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -3200,51 +3200,37 @@
 	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)
+	int limit = ast_get_termcols(STDOUT_FILENO) / (max + 2);
+
+	if (limit == 0) {
 		limit = 1;
-
-	/* how many lines of output */
-	count = len / limit;
-	if (count * limit < len)
-		count++;
-
-	idx = 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");
+	}
 }
 
 

-- 
To view, visit https://gerrit.asterisk.org/7340
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7f92afa8bea92241a95227587367424c8c32a5cb
Gerrit-Change-Number: 7340
Gerrit-PatchSet: 1
Gerrit-Owner: Corey Farrell <git at cfware.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20171121/c1327b81/attachment.html>


More information about the asterisk-code-review mailing list