A couple more chm_hidden cleanups/fixes.
This commit is contained in:
parent
f428b59fa8
commit
565f4362f2
|
@ -67,9 +67,10 @@ static void remove_ban_list(struct Channel *chptr, struct Client *source_p,
|
|||
rb_dlink_list * list, char c, int mems);
|
||||
|
||||
static char modebuf[MODEBUFLEN];
|
||||
static char omodebuf[MODEBUFLEN];
|
||||
static char parabuf[MODEBUFLEN];
|
||||
static const char *para[MAXMODEPARAMS];
|
||||
static char *mbuf;
|
||||
static char *mbuf, *ombuf;
|
||||
static int pargs;
|
||||
|
||||
/*
|
||||
|
@ -122,6 +123,7 @@ ms_join(struct Client *client_p, struct Client *source_p, int parc, const char *
|
|||
return 0;
|
||||
|
||||
mbuf = modebuf;
|
||||
ombuf = omodebuf;
|
||||
mode.key[0] = mode.forward[0] = '\0';
|
||||
mode.mode = mode.limit = mode.join_num = mode.join_time = 0;
|
||||
|
||||
|
@ -190,7 +192,12 @@ ms_join(struct Client *client_p, struct Client *source_p, int parc, const char *
|
|||
":%s MODE %s %s %s",
|
||||
source_p->servptr->name,
|
||||
chptr->chname, modebuf, parabuf);
|
||||
*modebuf = *parabuf = '\0';
|
||||
if(*omodebuf != '\0')
|
||||
sendto_channel_local(ONLY_OPERS, chptr,
|
||||
":%s MODE %s %s %s",
|
||||
source_p->servptr->name,
|
||||
chptr->chname, modebuf, parabuf);
|
||||
*omodebuf = *modebuf = *parabuf = '\0';
|
||||
}
|
||||
|
||||
if(!IsMember(source_p, chptr))
|
||||
|
@ -249,7 +256,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
if(*parv[2] == '&')
|
||||
return 0;
|
||||
|
||||
modebuf[0] = parabuf[0] = mode.key[0] = mode.forward[0] = '\0';
|
||||
omodebuf[0] = modebuf[0] = parabuf[0] = mode.key[0] = mode.forward[0] = '\0';
|
||||
pargs = mode.mode = mode.limit = mode.join_num = mode.join_time = 0;
|
||||
|
||||
/* Hide connecting server on netburst -- jilles */
|
||||
|
@ -259,6 +266,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
fakesource_p = source_p;
|
||||
|
||||
mbuf = modebuf;
|
||||
ombuf = omodebuf;
|
||||
newts = atol(parv[1]);
|
||||
|
||||
s = parv[3];
|
||||
|
@ -457,7 +465,11 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s %s %s",
|
||||
fakesource_p->name, chptr->chname, modebuf, parabuf);
|
||||
|
||||
*modebuf = *parabuf = '\0';
|
||||
if(*omodebuf != '\0')
|
||||
sendto_channel_local(ONLY_OPERS, chptr, ":%s MODE %s %s %s",
|
||||
fakesource_p->name, chptr->chname, omodebuf, parabuf);
|
||||
|
||||
*omodebuf = *modebuf = *parabuf = '\0';
|
||||
|
||||
if(parv[3][0] != '0' && keep_new_modes)
|
||||
modes = channel_modes(chptr, source_p);
|
||||
|
@ -469,6 +481,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
ptr_uid = buf_uid + mlen_uid;
|
||||
|
||||
mbuf = modebuf;
|
||||
ombuf = omodebuf;
|
||||
para[0] = para[1] = para[2] = para[3] = empty;
|
||||
pargs = 0;
|
||||
len_nick = len_uid = 0;
|
||||
|
@ -799,7 +812,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
|||
static void
|
||||
set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
||||
{
|
||||
int dir = MODE_QUERY;
|
||||
int dir = MODE_QUERY, odir = MODE_QUERY;
|
||||
char *pbuf = parabuf;
|
||||
int len;
|
||||
int i;
|
||||
|
@ -808,6 +821,17 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
|||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if((mode->mode & chmode_flags[i]) && !(oldmode->mode & chmode_flags[i]))
|
||||
{
|
||||
if (chmode_table[i].set_func == chm_hidden)
|
||||
{
|
||||
if(odir != MODE_ADD)
|
||||
{
|
||||
*ombuf++ = '+';
|
||||
odir = MODE_ADD;
|
||||
}
|
||||
*ombuf++ = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(dir != MODE_ADD)
|
||||
{
|
||||
|
@ -815,6 +839,8 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
|||
dir = MODE_ADD;
|
||||
}
|
||||
*mbuf++ = i;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -822,6 +848,17 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
|||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if((oldmode->mode & chmode_flags[i]) && !(mode->mode & chmode_flags[i]))
|
||||
{
|
||||
if(chmode_table[i].set_func == chm_hidden)
|
||||
{
|
||||
if(odir != MODE_DEL)
|
||||
{
|
||||
*ombuf++ = '-';
|
||||
odir = MODE_DEL;
|
||||
}
|
||||
*ombuf++ = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(dir != MODE_DEL)
|
||||
{
|
||||
|
@ -831,6 +868,7 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
|||
*mbuf++ = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(oldmode->limit && !mode->limit)
|
||||
{
|
||||
|
|
|
@ -1253,7 +1253,7 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
|
|||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if(chmode_table[i].set_func == chm_hidden && !IsOper(client_p))
|
||||
if(chmode_table[i].set_func == chm_hidden && !IsOper(client_p) && IsClient(client_p))
|
||||
continue;
|
||||
if(chptr->mode.mode & chmode_flags[i])
|
||||
*mbuf++ = i;
|
||||
|
|
Loading…
Reference in New Issue