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
names++; same nick */
ovmask |= NICKOP; while (flagchars) {
} else if (*names == '+') { switch (*names) {
names++; case '@':
ovmask |= NICKVOICED; names++;
ovmask |= NICKOP;
break;
case '+':
names++;
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 != ' ')