]> 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 27ab3d745e2704819d6aeb2342112242d2879c28..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);
@@ -984,9 +983,9 @@ ldIrc_audit(struct logDestination *dest_, UNUSED_ARG(struct log_type *type), str
     struct logDest_irc *dest = (struct logDest_irc*)dest_;
 
     if (entry->channel_name) {
-        send_target_message(4, dest->target, entry->bot, "(%s", strchr(strchr(entry->default_desc, ' '), ':')+1);
+        send_target_message(5, dest->target, entry->bot, "(%s", strchr(strchr(entry->default_desc, ' '), ':')+1);
     } else {
-        send_target_message(4, dest->target, entry->bot, "%s", strchr(entry->default_desc, ')')+2);
+        send_target_message(5, dest->target, entry->bot, "%s", strchr(entry->default_desc, ')')+2);
     }
 }
 
@@ -995,7 +994,7 @@ ldIrc_module(struct logDestination *dest_, struct log_type *type, enum log_sever
     struct logDest_irc *dest = (struct logDest_irc*)dest_;
     extern struct userNode *opserv;
 
-    send_target_message(4, dest->target, opserv, "%s %s: %s\n", type->name, log_severity_names[sev], message);
+    send_target_message(5, dest->target, opserv, "%s %s: %s\n", type->name, log_severity_names[sev], message);
 }
 
 static struct logDest_vtable ldIrc_vtbl = {
@@ -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, ":");