logmsg: extend oldmg string buffer to 20 entries to avoid logging repeated obsoleted by msgs

This commit is contained in:
Silvan Calarco 2011-09-14 22:44:32 +02:00
parent 54798cd06a
commit 10a6a28ea8

View File

@ -121,34 +121,41 @@ void log_debug_set(int value) {
void logmsg(int level, const char *msg, ...) { void logmsg(int level, const char *msg, ...) {
va_list ap; va_list ap;
static char oldmsg[1024] = ""; static char oldmsg[20][256];
static int curroldmsg = 0;
char newmsg[1024]; char newmsg[1024];
int i;
va_start(ap, msg); va_start(ap, msg);
vsnprintf((char*)&newmsg, 1024, msg, ap); vsnprintf((char*)&newmsg, 1024, msg, ap);
va_end(ap); va_end(ap);
if (strncmp(newmsg,(char*)&oldmsg,1024) != 0) /* only log the same message once */ for (i = 0; i < 20; i++) {
{ /* only log the same message once */
switch (level) { if (!strncmp(newmsg,(char*)&(oldmsg[i]),256)) return;
case LOG_MARK: }
fprintf(stderr,"Info: ******************************\n");
fprintf(stderr,"Info: %s\n",(char*)&newmsg); switch (level) {
fprintf(stderr,"Info: ******************************\n"); case LOG_MARK:
break; fprintf(stderr,"Info: ******************************\n");
case LOG_WARNING: fprintf(stderr,"Info: %s\n",(char*)&newmsg);
fprintf(stderr,"Warning: %s\n",(char*)&newmsg); fprintf(stderr,"Info: ******************************\n");
break; break;
case LOG_ERROR: case LOG_WARNING:
fprintf(stderr,"Error: %s\n",(char*)&newmsg); fprintf(stderr,"Warning: %s\n",(char*)&newmsg);
break; break;
case LOG_DEBUG: case LOG_ERROR:
if (debug_log == 1) fprintf(stderr,"DEBUG: %s\n",(char*)&newmsg); fprintf(stderr,"Error: %s\n",(char*)&newmsg);
break; break;
default: case LOG_DEBUG:
break; if (debug_log == 1) fprintf(stderr,"DEBUG: %s\n",(char*)&newmsg);
} break;
strncpy(oldmsg,newmsg,1024); default:
break;
}
if ((level == LOG_WARNING) || (level == LOG_ERROR)) {
strncpy(oldmsg[curroldmsg++],newmsg,256);
if (curroldmsg >= 20) curroldmsg = 0;
} }
} }