]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/log.c
Fix for "whats the color" 8ball question formats
[irc/evilnet/x3.git] / src / log.c
index f312432754c4d9b47b68dced7f21c169c34d7751..b7f885ad9ebd05b70a8ffd745afa91f82ae33a67 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -27,7 +27,7 @@
 #define Block  4096
 #define MAXLOGSEARCHLENGTH 10000
 
-struct userNode *chanserv;
+extern struct userNode *chanserv;
 
 struct logDestination;
 
@@ -86,7 +86,7 @@ static const struct message_entry msgtab[] = {
     { "MSG_INVALID_FACILITY", "$b%s$b is an invalid log facility." },
     { "MSG_INVALID_SEVERITY", "$b%s$b is an invalid severity level." },
 
-    { "LAST_RESULTS",     "$b%s$b] %s %s $b%s$b %s" },
+    { "LAST_RESULTS",     "$b%s]$b %s %s $b%s$b %s" },
     { "LAST_ERROR",       "%s:%s" },
     { "LAST_COMMAND_LOG", "Channel Events for %s" },
     { "LAST_LINE",        "----------------------------------------" },
@@ -745,12 +745,11 @@ 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, last = NULL;
+        for (entry = discrim->type->log_oldest;
              entry;
-             last = entry, entry = entry->next) {
+             entry = entry->next) {
             verify(entry);
             if (entry_match(discrim, entry)) {
                 esf(entry, data);
@@ -1063,8 +1062,11 @@ int parselog(char *LogLine, struct userNode *user, struct chanNode *cptr, char *
    char   serv[NICKLEN+1];
    char   buf[MAXLEN];
    char   myservc[MAXLEN];
+   char   mynuhbuf[MAXLEN];
    char*  mychan;
    char*  mynuh;
+   char*  mynick;
+   char*  myacc;
    char* mycommand;
    char*  myrest;
    char*  datestr;
@@ -1077,7 +1079,16 @@ int parselog(char *LogLine, struct userNode *user, struct chanNode *cptr, char *
 
    datestr =   (char *) mysep(&LogLine, "]");
    mywho =     (char *) mysep(&LogLine, " ");
-   mynuh =     (char *) mysep(&LogLine, " ");
+   if (user->handle_info && ((user->handle_info->opserv_level > 0) || IsOper(user)))
+      mynuh =   (char *) mysep(&LogLine, " ");
+   else {
+      mynick =    (char *) mysep(&LogLine, "!");
+      mysep(&LogLine, "@");
+      mysep(&LogLine, ":");
+      myacc =     (char *) mysep(&LogLine, " ");
+      sprintf(mynuhbuf, "%s:%s", mynick, myacc);
+      mynuh = mynuhbuf;
+   }
    mycommand = (char *) mysep(&LogLine, " ");
    myrest =    (char *) mysep(&LogLine, "\0");
    myserva =   (char *) mysep(&mywho, ":");