X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..26f754d989628a8ff8aa39067438bfe2de4727c0:/modules/core/m_sjoin.c diff --git a/modules/core/m_sjoin.c b/modules/core/m_sjoin.c index 3682f22..fc65db2 100644 --- a/modules/core/m_sjoin.c +++ b/modules/core/m_sjoin.c @@ -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; } }