1
0
forked from bip/bip

Do not freak out when seeing unreal ircd wierd name flags.

This commit is contained in:
Sebastian Hagen 2008-06-24 20:27:12 +02:00 committed by Arnaud Cornet
parent 81239265b9
commit babaac246d

View File

@ -1345,15 +1345,29 @@ static int irc_353(struct link_server *server, struct line *line)
names = line->elemv[4]; names = line->elemv[4];
while (*names) { while (*names) {
eon = names;
int ovmask = 0; int ovmask = 0;
/* these should be exclusive */ int flagchars = 1;
if (*names == '@') { /* some ircds (e.g. unreal) may display several flags for the
same nick */
while (flagchars) {
switch (*names) {
case '@':
names++; names++;
ovmask |= NICKOP; ovmask |= NICKOP;
} else if (*names == '+') { break;
case '+':
names++; names++;
ovmask |= NICKVOICED; ovmask |= NICKVOICED;
break;
case '%': /* unrealircd: halfop */
case '&': /* unrealircd: protect */
case '~': /* unrealircd: owner */
names++;
break;
default:
flagchars = 0;
break;
}
} }
eon = names; eon = names;
while (*eon && *eon != ' ') while (*eon && *eon != ' ')