X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/eb5d6b73587847fd4a98767248c56ae9b854c1d2..921592dd1adaed54948c030be0daceb7e0c9d5b7:/src/log.c diff --git a/src/log.c b/src/log.c index c6761de..d019f0d 100644 --- a/src/log.c +++ b/src/log.c @@ -1,7 +1,7 @@ /* log.c - Diagnostic and error logging * Copyright 2000-2004 srvx Development Team * - * This file is part of srvx. + * This file is part of x3. * * srvx is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -587,6 +587,10 @@ log_module(struct log_type *type, enum log_severity sev, const char *format, ... /* Special behavior before we start full operation */ fprintf(stderr, "%s: %s\n", log_severity_names[sev], msgbuf); } + if (sev == LOG_FATAL) { + assert(0 && "fatal message logged"); + _exit(1); + } } /* audit log searching */ @@ -719,9 +723,13 @@ log_entry_search(struct logSearch *discrim, entry_search_func esf, void *data) unsigned int matched = 0; if (discrim->type) { + static volatile struct logEntry *last; struct logEntry *entry; - for (entry = discrim->type->log_oldest; entry; entry = entry->next) { + for (entry = discrim->type->log_oldest, last = NULL; + entry; + last = entry, entry = entry->next) { + verify(entry); if (entry_match(discrim, entry)) { esf(entry, data); if (++matched >= discrim->limit)