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);
|
rb_dlink_list * list, char c, int mems);
|
||||||
|
|
||||||
static char modebuf[MODEBUFLEN];
|
static char modebuf[MODEBUFLEN];
|
||||||
|
static char omodebuf[MODEBUFLEN];
|
||||||
static char parabuf[MODEBUFLEN];
|
static char parabuf[MODEBUFLEN];
|
||||||
static const char *para[MAXMODEPARAMS];
|
static const char *para[MAXMODEPARAMS];
|
||||||
static char *mbuf;
|
static char *mbuf, *ombuf;
|
||||||
static int pargs;
|
static int pargs;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -122,6 +123,7 @@ ms_join(struct Client *client_p, struct Client *source_p, int parc, const char *
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
mbuf = modebuf;
|
mbuf = modebuf;
|
||||||
|
ombuf = omodebuf;
|
||||||
mode.key[0] = mode.forward[0] = '\0';
|
mode.key[0] = mode.forward[0] = '\0';
|
||||||
mode.mode = mode.limit = mode.join_num = mode.join_time = 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",
|
":%s MODE %s %s %s",
|
||||||
source_p->servptr->name,
|
source_p->servptr->name,
|
||||||
chptr->chname, modebuf, parabuf);
|
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))
|
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] == '&')
|
if(*parv[2] == '&')
|
||||||
return 0;
|
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;
|
pargs = mode.mode = mode.limit = mode.join_num = mode.join_time = 0;
|
||||||
|
|
||||||
/* Hide connecting server on netburst -- jilles */
|
/* 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;
|
fakesource_p = source_p;
|
||||||
|
|
||||||
mbuf = modebuf;
|
mbuf = modebuf;
|
||||||
|
ombuf = omodebuf;
|
||||||
newts = atol(parv[1]);
|
newts = atol(parv[1]);
|
||||||
|
|
||||||
s = parv[3];
|
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",
|
sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s %s %s",
|
||||||
fakesource_p->name, chptr->chname, modebuf, parabuf);
|
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)
|
if(parv[3][0] != '0' && keep_new_modes)
|
||||||
modes = channel_modes(chptr, source_p);
|
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;
|
ptr_uid = buf_uid + mlen_uid;
|
||||||
|
|
||||||
mbuf = modebuf;
|
mbuf = modebuf;
|
||||||
|
ombuf = omodebuf;
|
||||||
para[0] = para[1] = para[2] = para[3] = empty;
|
para[0] = para[1] = para[2] = para[3] = empty;
|
||||||
pargs = 0;
|
pargs = 0;
|
||||||
len_nick = len_uid = 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
|
static void
|
||||||
set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
||||||
{
|
{
|
||||||
int dir = MODE_QUERY;
|
int dir = MODE_QUERY, odir = MODE_QUERY;
|
||||||
char *pbuf = parabuf;
|
char *pbuf = parabuf;
|
||||||
int len;
|
int len;
|
||||||
int i;
|
int i;
|
||||||
|
@ -809,12 +822,25 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
||||||
{
|
{
|
||||||
if((mode->mode & chmode_flags[i]) && !(oldmode->mode & chmode_flags[i]))
|
if((mode->mode & chmode_flags[i]) && !(oldmode->mode & chmode_flags[i]))
|
||||||
{
|
{
|
||||||
if(dir != MODE_ADD)
|
if (chmode_table[i].set_func == chm_hidden)
|
||||||
{
|
{
|
||||||
*mbuf++ = '+';
|
if(odir != MODE_ADD)
|
||||||
dir = MODE_ADD;
|
{
|
||||||
|
*ombuf++ = '+';
|
||||||
|
odir = MODE_ADD;
|
||||||
|
}
|
||||||
|
*ombuf++ = i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(dir != MODE_ADD)
|
||||||
|
{
|
||||||
|
*mbuf++ = '+';
|
||||||
|
dir = MODE_ADD;
|
||||||
|
}
|
||||||
|
*mbuf++ = i;
|
||||||
|
|
||||||
}
|
}
|
||||||
*mbuf++ = i;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,12 +849,24 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode)
|
||||||
{
|
{
|
||||||
if((oldmode->mode & chmode_flags[i]) && !(mode->mode & chmode_flags[i]))
|
if((oldmode->mode & chmode_flags[i]) && !(mode->mode & chmode_flags[i]))
|
||||||
{
|
{
|
||||||
if(dir != MODE_DEL)
|
if(chmode_table[i].set_func == chm_hidden)
|
||||||
{
|
{
|
||||||
*mbuf++ = '-';
|
if(odir != MODE_DEL)
|
||||||
dir = MODE_DEL;
|
{
|
||||||
|
*ombuf++ = '-';
|
||||||
|
odir = MODE_DEL;
|
||||||
|
}
|
||||||
|
*ombuf++ = i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(dir != MODE_DEL)
|
||||||
|
{
|
||||||
|
*mbuf++ = '-';
|
||||||
|
dir = MODE_DEL;
|
||||||
|
}
|
||||||
|
*mbuf++ = i;
|
||||||
}
|
}
|
||||||
*mbuf++ = i;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1253,7 +1253,7 @@ channel_modes(struct Channel *chptr, struct Client *client_p)
|
||||||
|
|
||||||
for (i = 0; i < 256; i++)
|
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;
|
continue;
|
||||||
if(chptr->mode.mode & chmode_flags[i])
|
if(chptr->mode.mode & chmode_flags[i])
|
||||||
*mbuf++ = i;
|
*mbuf++ = i;
|
||||||
|
|
Loading…
Reference in New Issue