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