]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
[svn] Merge old trunk r2065,r2067:
authorjilles <redacted>
Thu, 26 Apr 2007 23:01:16 +0000 (16:01 -0700)
committerjilles <redacted>
Thu, 26 Apr 2007 23:01:16 +0000 (16:01 -0700)
channel_modes(): get rid of the trailing space
also make the *pbuf check work like it should
(don't call IsMember another time if we already
gave one parameter)
simplify a bit more, update comments

ChangeLog
include/serno.h
src/channel.c

index 1066dec3528e83e3877fa347f5526ba0389e2aa0..15e4795c59e60ed1ca55f070e9804618c685e52d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+jilles      2007/04/25 15:22:28 UTC    (20070425-3426)
+  Log:
+  webirc bugfix
+  
+
+  Changes:     Modified:
+  +1 -1                trunk/extensions/m_webirc.c (File Modified) 
+
+
 jilles      2007/04/25 15:21:34 UTC    (20070425-3424)
   Log:
   chghost: refuse spoofs which are empty or start with a colon
index 1130667029c3078da8d1604989272507494b6d96..4203227d2fe0aad2942f8a808231333b7398beb7 100644 (file)
@@ -1 +1 @@
-#define SERNO "20070425-3424"
+#define SERNO "20070425-3426"
index 9be36d2b554422988706ec268b66b9ce18ba6958..5bcf29e2a40b8855776e679241cafe5db0d495b2 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: channel.c 3259 2007-03-15 18:09:08Z jilles $
+ *  $Id: channel.c 3432 2007-04-26 23:01:16Z jilles $
  */
 
 #include "stdinc.h"
@@ -1110,9 +1110,8 @@ static const struct mode_letter
  *
  * inputs       - pointer to channel
  *              - pointer to client
- * output       - NONE
- * side effects - write the "simple" list of channel modes for channel
- * chptr onto buffer mbuf with the parameters in pbuf.
+ * output       - string with simple modes
+ * side effects - result from previous calls overwritten
  *
  * Stolen from ShadowIRCd 4 --nenolod
  */
@@ -1137,38 +1136,39 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
        {
                *mbuf++ = 'l';
 
-               if(IsMember(client_p, chptr) || IsServer(client_p) || IsMe(client_p))
-                       pbuf += ircsprintf(pbuf, "%d ", chptr->mode.limit);
+               if(!IsClient(client_p) || IsMember(client_p, chptr))
+                       pbuf += ircsprintf(pbuf, " %d", chptr->mode.limit);
        }
 
        if(*chptr->mode.key)
        {
                *mbuf++ = 'k';
 
-               if(*pbuf || IsMember(client_p, chptr) || IsServer(client_p) || IsMe(client_p))
-                       pbuf += ircsprintf(pbuf, "%s ", chptr->mode.key);
+               if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
+                       pbuf += ircsprintf(pbuf, " %s", chptr->mode.key);
        }
 
        if(chptr->mode.join_num)
        {
                *mbuf++ = 'j';
 
-               if(*pbuf || IsMember(client_p, chptr) || IsServer(client_p) || IsMe(client_p))
-                       pbuf += ircsprintf(pbuf, "%d:%d ", chptr->mode.join_num,
+               if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
+                       pbuf += ircsprintf(pbuf, " %d:%d", chptr->mode.join_num,
                                           chptr->mode.join_time);
        }
 
-       if(*chptr->mode.forward && (ConfigChannel.use_forward || IsServer(client_p) || IsMe(client_p)))
+       if(*chptr->mode.forward && (ConfigChannel.use_forward || !IsClient(client_p)))
        {
                *mbuf++ = 'f';
 
-               if(*pbuf || IsMember(client_p, chptr) || IsServer(client_p) || IsMe(client_p))
-                       pbuf += ircsprintf(pbuf, "%s ", chptr->mode.forward);
+               if(pbuf > buf2 || !IsClient(client_p) || IsMember(client_p, chptr))
+                       pbuf += ircsprintf(pbuf, " %s", chptr->mode.forward);
        }
 
        *mbuf = '\0';
 
-       ircsprintf(final, "%s %s", buf1, buf2);
+       strlcpy(final, buf1, sizeof final);
+       strlcat(final, buf2, sizeof final);
        return final;
 }