[Asterisk-cvs] asterisk ChangeLog, 1.74.2.36, 1.74.2.37 logger.c,
1.45.2.3, 1.45.2.4
russell at lists.digium.com
russell at lists.digium.com
Tue Apr 5 01:16:39 CDT 2005
Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv5044
Modified Files:
Tag: v1-0
ChangeLog logger.c
Log Message:
merge kevin's patches to remove color escape sequences from the logs (bug #3929)
Index: ChangeLog
===================================================================
RCS file: /usr/cvsroot/asterisk/ChangeLog,v
retrieving revision 1.74.2.36
retrieving revision 1.74.2.37
diff -u -d -r1.74.2.36 -r1.74.2.37
--- ChangeLog 5 Apr 2005 05:33:13 -0000 1.74.2.36
+++ ChangeLog 5 Apr 2005 06:09:27 -0000 1.74.2.37
@@ -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
Index: logger.c
===================================================================
RCS file: /usr/cvsroot/asterisk/logger.c,v
retrieving revision 1.45.2.3
retrieving revision 1.45.2.4
diff -u -d -r1.45.2.3 -r1.45.2.4
--- logger.c 27 Dec 2004 22:34:25 -0000 1.45.2.3
+++ logger.c 5 Apr 2005 06:09:27 -0000 1.45.2.4
@@ -478,9 +478,39 @@
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 @@
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 @@
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);
More information about the svn-commits
mailing list