[Asterisk-code-review] core: Minor cleanup of ast el read char. (asterisk[master])

Corey Farrell asteriskteam at digium.com
Sat Mar 17 17:23:48 CDT 2018


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


Change subject: core: Minor cleanup of ast_el_read_char.
......................................................................

core: Minor cleanup of ast_el_read_char.

* Define CHAR_T_LIBEDIT and CHAR_TO_LIBEDIT based on
  HAVE_LIBEDIT_IS_UNICODE.  This avoids needing to repeatedly use
  conditional blocks, eliminates having multiple function prototypes.
* Remove parenthesis from return values.
* Add missing code block brackets {}.
* Reduce use of 'else' conditional statements where possible.
* Replace ESC code directly in text with macro from term.h.

Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e
---
M main/asterisk.c
1 file changed, 27 insertions(+), 28 deletions(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/66/8566/1

diff --git a/main/asterisk.c b/main/asterisk.c
index bec992f..6625c3a 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -2732,10 +2732,14 @@
 }
 
 #ifdef HAVE_LIBEDIT_IS_UNICODE
-static int ast_el_read_char(EditLine *editline, wchar_t *cp)
+#define CHAR_T_LIBEDIT wchar_t
+#define CHAR_TO_LIBEDIT(c) btowc(c)
 #else
-static int ast_el_read_char(EditLine *editline, char *cp)
+#define CHAR_T_LIBEDIT char
+#define CHAR_TO_LIBEDIT(c) c
 #endif
+
+static int ast_el_read_char(EditLine *editline, CHAR_T_LIBEDIT *cp)
 {
 	int num_read = 0;
 	int lastpos = 0;
@@ -2756,28 +2760,29 @@
 		}
 		res = ast_poll(fds, max, -1);
 		if (res < 0) {
-			if (sig_flags.need_quit || sig_flags.need_quit_handler)
+			if (sig_flags.need_quit || sig_flags.need_quit_handler) {
 				break;
-			if (errno == EINTR)
+			}
+			if (errno == EINTR) {
 				continue;
+			}
 			fprintf(stderr, "poll failed: %s\n", strerror(errno));
 			break;
 		}
 
 		if (!ast_opt_exec && fds[1].revents) {
 			char c = '\0';
+
 			num_read = read(STDIN_FILENO, &c, 1);
 			if (num_read < 1) {
 				break;
-			} else {
-#ifdef 	HAVE_LIBEDIT_IS_UNICODE
-				*cp = btowc(c);
-#else
-				*cp = c;
-#endif
-				return (num_read);
 			}
+
+			*cp = CHAR_TO_LIBEDIT(c);
+
+			return num_read;
 		}
+
 		if (fds[0].revents) {
 			res = read(ast_consock, buf, sizeof(buf) - 1);
 			/* if the remote side disappears exit */
@@ -2788,6 +2793,7 @@
 				} else {
 					int tries;
 					int reconnects_per_second = 20;
+
 					fprintf(stderr, "Attempting to reconnect for 30 seconds\n");
 					for (tries = 0; tries < 30 * reconnects_per_second; tries++) {
 						if (ast_tryconnect()) {
@@ -2796,8 +2802,9 @@
 							WELCOME_MESSAGE;
 							send_rasterisk_connect_commands();
 							break;
-						} else
-							usleep(1000000 / reconnects_per_second);
+						}
+
+						usleep(1000000 / reconnects_per_second);
 					}
 					if (tries >= 30 * reconnects_per_second) {
 						fprintf(stderr, "Failed to reconnect for 30 seconds.  Quitting.\n");
@@ -2811,32 +2818,24 @@
 
 			/* Write over the CLI prompt */
 			if (!ast_opt_exec && !lastpos) {
-				if (write(STDOUT_FILENO, "\r", 5) < 0) {
+				if (write(STDOUT_FILENO, "\r%c[0K", ESC, 5) < 0) {
 				}
 			}
 
 			console_print(buf);
 
 			if ((res < EL_BUF_SIZE - 1) && ((buf[res-1] == '\n') || (res >= 2 && buf[res-2] == '\n'))) {
-#ifdef 	HAVE_LIBEDIT_IS_UNICODE
-				*cp = btowc(CC_REFRESH);
-#else
-				*cp = CC_REFRESH;
-#endif
-				return(1);
-			} else {
-				lastpos = 1;
+				*cp = CHAR_TO_LIBEDIT(CC_REFRESH);
+
+				return 1;
 			}
+			lastpos = 1;
 		}
 	}
 
-#ifdef 	HAVE_LIBEDIT_IS_UNICODE
-	*cp = btowc('\0');
-#else
-	*cp = '\0';
-#endif
+	*cp = CHAR_TO_LIBEDIT('\0');
 
-	return (0);
+	return 0;
 }
 
 static struct ast_str *prompt = NULL;

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

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e
Gerrit-Change-Number: 8566
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/20180317/0aaada68/attachment.html>


More information about the asterisk-code-review mailing list