]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_sjoin.c
Show some target change statistics in /stats t.
[irc/rqf/shadowircd.git] / modules / core / m_sjoin.c
index 3682f2224c4ee12146a826feba1098e0050b92f4..fc65db27cb8044a28a28dbfeb8bed3a2f96b5f19 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: m_sjoin.c 3131 2007-01-21 15:36:31Z jilles $
+ *  $Id: m_sjoin.c 3434 2007-04-28 23:47:25Z jilles $
  */
 
 #include "stdinc.h"
@@ -50,7 +50,7 @@ struct Message sjoin_msgtab = {
 
 mapi_clist_av1 sjoin_clist[] = { &sjoin_msgtab, NULL };
 
-DECLARE_MODULE_AV1(sjoin, NULL, NULL, sjoin_clist, NULL, NULL, "$Revision: 3131 $");
+DECLARE_MODULE_AV1(sjoin, NULL, NULL, sjoin_clist, NULL, NULL, "$Revision: 3434 $");
 
 /*
  * ms_sjoin
@@ -351,6 +351,9 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
                                     ":%s NOTICE %s :*** Notice -- TS for %s changed from %ld to %ld",
                                     me.name, chptr->chname, chptr->chname,
                                     (long) oldts, (long) newts);
+               /* Update capitalization in channel name, this makes the
+                * capitalization timestamped like modes are -- jilles */
+               strcpy(chptr->chname, parv[2]);
        }
 
        if(*modebuf != '\0')
@@ -460,12 +463,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
                len_uid += len;
 
                if(!keep_new_modes)
-               {
-                       if(fl & CHFL_CHANOP)
-                               fl = CHFL_DEOPPED;
-                       else
-                               fl = 0;
-               }
+                       fl = 0;
 
                if(!IsMember(target_p, chptr))
                {
@@ -556,10 +554,9 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
                                     CheckEmpty(para[2]), CheckEmpty(para[3]));
        }
 
-       if(!joins && !(chptr->mode.mode & MODE_PERMANENT))
+       if(!joins && !(chptr->mode.mode & MODE_PERMANENT) && isnew)
        {
-               if(isnew)
-                       destroy_channel(chptr);
+               destroy_channel(chptr);
 
                return 0;
        }
@@ -601,30 +598,6 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
        return 0;
 }
 
-struct mode_letter
-{
-       int mode;
-       char letter;
-};
-
-static struct mode_letter flags[] = {
-       {MODE_NOPRIVMSGS, 'n'},
-       {MODE_TOPICLIMIT, 't'},
-       {MODE_SECRET, 's'},
-       {MODE_MODERATED, 'm'},
-       {MODE_INVITEONLY, 'i'},
-       {MODE_PRIVATE, 'p'},
-       {MODE_REGONLY, 'r'},
-       {MODE_EXLIMIT, 'L'},
-       {MODE_PERMANENT, 'P'},
-       {MODE_NOCOLOR, 'c'},
-       {MODE_FREEINVITE, 'g'},
-       {MODE_OPMODERATE, 'z'},
-       {MODE_FREETARGET, 'F'},
-       {MODE_DISFORWARD, 'Q'},
-       {0, 0}
-};
-
 static void
 set_final_mode(struct Mode *mode, struct Mode *oldmode)
 {
@@ -634,30 +607,30 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
        int i;
 
        /* ok, first get a list of modes we need to add */
-       for (i = 0; flags[i].letter; i++)
+       for (i = 0; chmode_flags[i].letter; i++)
        {
-               if((mode->mode & flags[i].mode) && !(oldmode->mode & flags[i].mode))
+               if((mode->mode & chmode_flags[i].mode) && !(oldmode->mode & chmode_flags[i].mode))
                {
                        if(dir != MODE_ADD)
                        {
                                *mbuf++ = '+';
                                dir = MODE_ADD;
                        }
-                       *mbuf++ = flags[i].letter;
+                       *mbuf++ = chmode_flags[i].letter;
                }
        }
 
        /* now the ones we need to remove. */
-       for (i = 0; flags[i].letter; i++)
+       for (i = 0; chmode_flags[i].letter; i++)
        {
-               if((oldmode->mode & flags[i].mode) && !(mode->mode & flags[i].mode))
+               if((oldmode->mode & chmode_flags[i].mode) && !(mode->mode & chmode_flags[i].mode))
                {
                        if(dir != MODE_DEL)
                        {
                                *mbuf++ = '-';
                                dir = MODE_DEL;
                        }
-                       *mbuf++ = flags[i].letter;
+                       *mbuf++ = chmode_flags[i].letter;
                }
        }