[Asterisk-cvs] asterisk logger.c,1.61,1.62
kpfleming at lists.digium.com
kpfleming at lists.digium.com
Fri Apr 1 17:56:36 CST 2005
Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv3210
Modified Files:
logger.c
Log Message:
strip color code sequences from verbose messages being sent to files/syslog (bug #3929, with mods)
Index: logger.c
===================================================================
RCS file: /usr/cvsroot/asterisk/logger.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- logger.c 1 Apr 2005 16:09:21 -0000 1.61
+++ logger.c 1 Apr 2005 23:49:57 -0000 1.62
@@ -604,9 +604,40 @@
return;
}
+static void strip_coloring(char *str)
+{
+ char *src = str, *dest, *end;
+
+ if (!src)
+ return;
+
+ /* find the first potential escape sequence in the string */
+
+ while (*src && (*src != '\033'))
+ src++;
+ 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() */
@@ -618,9 +649,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);
}
@@ -715,6 +748,7 @@
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
+ strip_coloring(buf);
fputs(buf, chan->fileptr);
fflush(chan->fileptr);
}
More information about the svn-commits
mailing list