Bläddra i källkod

* Fixed spamming irc_log for QUIT/NICK

svn: 1062
Bryan Drewery 22 år sedan
förälder
incheckning
727f105ea5
4 ändrade filer med 30 tillägg och 13 borttagningar
  1. 17 0
      src/chanprog.c
  2. 1 1
      src/chanprog.h
  3. 6 7
      src/log.c
  4. 6 5
      src/mod/irc.mod/chan.c

+ 17 - 0
src/chanprog.c

@@ -788,3 +788,20 @@ int do_chanset(char *result, struct chanset_t *chan, const char *options, int lo
   }
   return ret;
 }
+
+char *
+samechans(const char *nick, const char *delim)
+{
+  static char ret[1024];
+  struct chanset_t *chan = NULL;
+
+  for (chan = chanset; chan; chan = chan->next) {
+    if (ismember(chan, nick)) {
+      strcat(ret, chan->dname);
+      strcat(ret, delim);
+    }
+  }
+  ret[strlen(ret) - 1] = 0;
+
+  return ret;
+}

+ 1 - 1
src/chanprog.h

@@ -23,7 +23,7 @@ void clear_chanlist(void);
 void clear_chanlist_member(const char *nick);
 int botshouldjoin(struct userrec *u, struct chanset_t *);
 int shouldjoin(struct chanset_t *);
-
+char *samechans(const char *, const char *);
 
 extern struct chanset_t		*chanset;
 extern char			admin[], origbotname[], botname[];

+ 6 - 7
src/log.c

@@ -221,8 +221,6 @@ void putlog(int type, const char *chname, const char *format, ...)
 void
 irc_log(struct chanset_t *chan, const char *format, ...)
 {
-/*
-  if (0) {
   char va_out[LOGLINEMAX + 1];
   va_list va;
 
@@ -231,14 +229,15 @@ irc_log(struct chanset_t *chan, const char *format, ...)
   va_end(va);
   char *TO = "#shadow";
 
-  if (egg_strcasecmp(chan->dname, TO))
-    dprintf(DP_HELP, "PRIVMSG %s :[%s] %s\n", TO, chan->dname, va_out);
+//  if (egg_strcasecmp(chan->dname, TO))
+//    dprintf(DP_HELP, "PRIVMSG %s :[%s] %s\n", TO, chan->dname, va_out);
 
 //  chanout_but(-1, 1, "[%s] %s\n", chan->dname, va_out);
 //  botnet_send_chan(-1, conf.bot->nick, chan->dname, 1, va_out);
-   putlog(LOG_PUBLIC, "*", "[%s] %s", chan->dname, va_out);
+   if (chan)
+     putlog(LOG_PUBLIC, "*", "[%s] %s", chan->dname, va_out);
+   else
+     putlog(LOG_PUBLIC, "*", "%s", va_out);
 
 //  sdprintf("%s", va_out);
-  }
-*/
 }

+ 6 - 5
src/mod/irc.mod/chan.c

@@ -2403,6 +2403,7 @@ static int gotnick(char *from, char *msg)
   strcpy(uhost, from);
   nick = splitnick(&uhost);
   fixcolon(msg);
+  irc_log(NULL, "[%s] Nick change: %s -> %s", samechans(nick, ","), nick, msg);
   clear_chanlist_member(nick);	/* Cache for nick 'nick' is meaningless now. */
   for (chan = chanset; chan; chan = chan->next) {
     oldchan = chan;
@@ -2410,7 +2411,6 @@ static int gotnick(char *from, char *msg)
     m = ismember(chan, nick);
 
     if (m) {
-      irc_log(chan, "Nick change: %s -> %s", nick, msg);
       m->last = now;
       /* Not just a capitalization change */
       if (rfc_casecmp(nick, msg)) {
@@ -2538,6 +2538,11 @@ static int gotquit(char *from, char *msg)
     } else
       *p = ' ';
   }
+  if (msg[0])
+    irc_log(NULL, "[%s] Quits %s (%s) (%s)", samechans(nick, ","), nick, from, msg);
+  else
+    irc_log(NULL, "[%s] Quits %s (%s)", samechans(nick, ","), nick, from);
+
   for (chan = chanset; chan; chan = chan->next) {
     oldchan = chan;
     chname = chan->dname;
@@ -2561,10 +2566,6 @@ static int gotquit(char *from, char *msg)
 	  chan = oldchan;
 	  continue;
 	}
-        if (msg[0])
-          irc_log(chan, "Quits %s (%s) (%s)", nick, from, msg);
-        else
-          irc_log(chan, "Quits %s (%s)", nick, from);
 	killmember(chan, nick);
 	check_lonely_channel(chan);
       }