diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-05 23:01:22 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-05 23:01:22 +0000 |
commit | 96c8b5f3e739c272055c7b92e42fd1e41adaf67f (patch) | |
tree | 720b11e35f90c41cdc5c68b0f81ee86bc98b8390 /main | |
parent | 3f1dd02807e1bc4c2101449f0003b6081615a1fb (diff) |
Merged revisions 115334 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r115334 | tilghman | 2008-05-05 18:00:31 -0500 (Mon, 05 May 2008) | 15 lines
Merged revisions 115333 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r115333 | tilghman | 2008-05-05 17:50:31 -0500 (Mon, 05 May 2008) | 7 lines
Separate verbose output from CLI output, by using a preamble.
(closes issue #12402)
Reported by: Corydon76
Patches:
20080410__no_verbose_in_rx_output.diff.txt uploaded by Corydon76 (license 14)
20080501__no_verbose_in_rx_output__1.4.diff.txt uploaded by Corydon76 (license 14)
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@115335 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r-- | main/asterisk.c | 38 | ||||
-rw-r--r-- | main/logger.c | 8 |
2 files changed, 41 insertions, 5 deletions
diff --git a/main/asterisk.c b/main/asterisk.c index 6ab6743f7..279474da1 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -1420,6 +1420,12 @@ static void __quit_handler(int num) static const char *fix_header(char *outbuf, int maxout, const char *s, char *cmp) { const char *c; + + /* Check for verboser preamble */ + if (*s == 127) { + s++; + } + if (!strncmp(s, cmp, strlen(cmp))) { c = s + strlen(cmp); term_color(outbuf, cmp, COLOR_GRAY, 0, maxout); @@ -1928,6 +1934,7 @@ static int ast_el_read_char(EditLine *el, char *cp) buf[res] = '\0'; + /* Write over the CLI prompt */ if (!ast_opt_exec && !lastpos) write(STDOUT_FILENO, "\r", 1); write(STDOUT_FILENO, buf, res); @@ -2425,13 +2432,38 @@ static void ast_remotecontrol(char * data) ast_el_read_history(filename); if (ast_opt_exec && data) { /* hack to print output then exit if asterisk -rx is used */ - char tempchar; struct pollfd fds; fds.fd = ast_consock; fds.events = POLLIN; fds.revents = 0; - while (poll(&fds, 1, 100) > 0) - ast_el_read_char(el, &tempchar); + while (poll(&fds, 1, 500) > 0) { + char buf[512] = "", *curline = buf, *nextline; + int not_written = 1; + + if (read(ast_consock, buf, sizeof(buf) - 1) < 0) { + break; + } + + do { + if ((nextline = strchr(curline, '\n'))) { + nextline++; + } else { + nextline = strchr(curline, '\0'); + } + + /* Skip verbose lines */ + if (*curline != 127) { + not_written = 0; + write(STDOUT_FILENO, curline, nextline - curline + (*nextline == '\0' ? 1 : 0)); + } + curline = nextline; + } while (!ast_strlen_zero(curline)); + + /* No non-verbose output in 500ms */ + if (not_written) { + break; + } + } return; } for (;;) { diff --git a/main/logger.c b/main/logger.c index 072a23bb2..73cfb2338 100644 --- a/main/logger.c +++ b/main/logger.c @@ -1127,8 +1127,12 @@ void ast_verbose(const char *fmt, ...) ast_localtime(&tv, &tm, NULL); ast_strftime(date, sizeof(date), dateformat, &tm); datefmt = alloca(strlen(date) + 3 + strlen(fmt) + 1); - sprintf(datefmt, "[%s] %s", date, fmt); + sprintf(datefmt, "%c[%s] %s", 127, date, fmt); fmt = datefmt; + } else { + char *tmp = alloca(strlen(fmt) + 2); + sprintf(tmp, "%c%s", 127, fmt); + fmt = tmp; } /* Build string */ @@ -1145,7 +1149,7 @@ void ast_verbose(const char *fmt, ...) strcpy(logmsg->str, buf->str); - ast_log(LOG_VERBOSE, "%s", logmsg->str); + ast_log(LOG_VERBOSE, "%s", logmsg->str + 1); /* Set type */ logmsg->type = LOGMSG_VERBOSE; |