From 3cb901b43794d697485a289f935eb2d0be461af2 Mon Sep 17 00:00:00 2001 From: zolliker Date: Thu, 5 Jun 2008 13:34:29 +0000 Subject: [PATCH] - fixed bug in list --- errormsg.c | 17 +++++++++-------- errormsg.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/errormsg.c b/errormsg.c index cd45eda1..9ed2222e 100644 --- a/errormsg.c +++ b/errormsg.c @@ -18,9 +18,9 @@ int ErrEqual(char *str1, char *str2) { if (str1 == NULL || str2 == NULL) { return str1 == str2; } - str1++; - str2++; } + str1++; + str2++; } return 1; } @@ -45,23 +45,24 @@ ErrMsg *ErrPutMsg(ErrMsg *dump, char *fmt, ...) { vsnprintf(text, l, fmt, ap); va_end(ap); } - for (last = &dump; *last != NULL; last = &m->next) { - m = *last; + last = &dump; + for (m = dump; m != NULL; m = m->next) { if (ErrEqual(text, m->text)) { - *last = m->next; + *last = m->next; /* remove found item from the list */ break; } + last = &m->next; } - if (m == NULL) { + if (m == NULL) { /* make a fresh list item m */ if (text == buf) text = strdup(buf); m = calloc(1, sizeof(*m)); m->text = text; m->cnt = 1; - } else { + } else { /* take the found item m */ if (text != buf) free(text); m->cnt++; } - m->next = dump; + m->next = dump; /* add the new item to the head of the list */ time(&m->last); return m; } diff --git a/errormsg.h b/errormsg.h index 9c20ec64..9e66c847 100644 --- a/errormsg.h +++ b/errormsg.h @@ -11,7 +11,6 @@ typedef struct ErrMsg { struct ErrMsg *next; char *text; /**< the message text */ - char *cmpr; /**< compressed message text */ int cnt; /**< count */ time_t last; /**< time of last message */ } ErrMsg; @@ -22,6 +21,7 @@ typedef struct ErrMsg { * with the same text, storing only the count and the last used time. * Characters within sqaure brackets are not taken into account * when comparing messages. + * The newset message is always at the head of the list. * * \param dump the error message list * \param fmt the format for the message