* 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"
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
":%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')
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;
}
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)
{
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;
}
}