Consolidate duplicate channel mode flags tables to one.

This commit is contained in:
Jilles Tjoelker 2007-12-25 01:00:20 +01:00
parent 34c10ff5f5
commit 7d1f9131fb
4 changed files with 24 additions and 68 deletions

View file

@ -603,30 +603,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)
{
@ -636,30 +612,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;
}
}