mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 03:08:45 +00:00
merge kevin's patches to remove color escape sequences from the logs (bug #3929)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5394 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
1
CHANGES
1
CHANGES
@@ -24,6 +24,7 @@
|
||||
in some media players
|
||||
-- Fixed if the last line of text in a file for the call spool did not contain
|
||||
a new line, it would not be processed
|
||||
-- Fixed the logger so that color escape sequences wouldn't be sent to the logs
|
||||
|
||||
Asterisk 1.0.7
|
||||
|
||||
|
37
logger.c
37
logger.c
@@ -478,9 +478,39 @@ void close_logger(void)
|
||||
return;
|
||||
}
|
||||
|
||||
static void strip_coloring(char *str)
|
||||
{
|
||||
char *src, *dest, *end;
|
||||
|
||||
if (!str)
|
||||
return;
|
||||
|
||||
/* find the first potential escape sequence in the string */
|
||||
|
||||
src = strchr(str, '\033');
|
||||
if (!src)
|
||||
return;
|
||||
|
||||
dest = src;
|
||||
while (*src) {
|
||||
/* at the top of this loop, *src will always be an ESC character */
|
||||
if ((src[1] == '[') && ((end = strchr(src + 2, 'm'))))
|
||||
src = end + 1;
|
||||
else
|
||||
*dest++ = *src++;
|
||||
|
||||
/* copy characters, checking for ESC as we go */
|
||||
while (*src && (*src != '\033'))
|
||||
*dest++ = *src++;
|
||||
}
|
||||
|
||||
*dest = '\0';
|
||||
}
|
||||
|
||||
static void ast_log_vsyslog(int level, const char *file, int line, const char *function, const char *fmt, va_list args)
|
||||
{
|
||||
char buf[BUFSIZ];
|
||||
char *s;
|
||||
|
||||
if (level >= SYSLOG_NLEVELS) {
|
||||
/* we are locked here, so cannot ast_log() */
|
||||
@@ -492,9 +522,11 @@ static void ast_log_vsyslog(int level, const char *file, int line, const char *f
|
||||
level = __LOG_DEBUG;
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf), "%s[%ld]: %s:%d in %s: ",
|
||||
levels[level], (long)GETTID(), file, line, function);
|
||||
levels[level], (long)GETTID(), file, line, function);
|
||||
}
|
||||
vsnprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), fmt, args);
|
||||
s = buf + strlen(buf);
|
||||
vsnprintf(s, sizeof(buf) - strlen(buf), fmt, args);
|
||||
strip_coloring(s);
|
||||
syslog(syslog_level_map[level], "%s", buf);
|
||||
}
|
||||
|
||||
@@ -567,6 +599,7 @@ void ast_log(int level, const char *file, int line, const char *function, const
|
||||
fprintf(chan->fileptr, buf);
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buf, sizeof(buf), fmt, ap);
|
||||
strip_coloring(buf);
|
||||
va_end(ap);
|
||||
fputs(buf, chan->fileptr);
|
||||
fflush(chan->fileptr);
|
||||
|
Reference in New Issue
Block a user