mirror of
https://github.com/irssi/irssi.git
synced 2024-10-27 05:20:20 -04:00
Added '.' to known nick flag characters. Also supports having multiple flag
chars in /NAMES list, so eg. "@+nick" works or ".@nick" which is already used by some servers. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2559 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
b89fb4a549
commit
15e716e283
@ -78,6 +78,7 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
{
|
{
|
||||||
IRC_CHANNEL_REC *chanrec;
|
IRC_CHANNEL_REC *chanrec;
|
||||||
char *params, *type, *channel, *names, *ptr;
|
char *params, *type, *channel, *names, *ptr;
|
||||||
|
int op, halfop, voice;
|
||||||
|
|
||||||
g_return_if_fail(data != NULL);
|
g_return_if_fail(data != NULL);
|
||||||
|
|
||||||
@ -112,9 +113,27 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
|
|||||||
while (*names != '\0' && *names != ' ') names++;
|
while (*names != '\0' && *names != ' ') names++;
|
||||||
if (*names != '\0') *names++ = '\0';
|
if (*names != '\0') *names++ = '\0';
|
||||||
|
|
||||||
irc_nicklist_insert(chanrec, ptr+isnickflag(*ptr),
|
/* some servers show ".@nick", there's also been talk about
|
||||||
*ptr == '@', *ptr == '%', *ptr == '+',
|
showing "@+nick" and since none of these chars are valid
|
||||||
FALSE);
|
nick chars, just check them until a non-nickflag char is
|
||||||
|
found. FIXME: we just ignore owner char now. */
|
||||||
|
op = halfop = voice = FALSE;
|
||||||
|
while (isnickflag(*ptr)) {
|
||||||
|
switch (*ptr) {
|
||||||
|
case '@':
|
||||||
|
op = TRUE;
|
||||||
|
break;
|
||||||
|
case '%':
|
||||||
|
halfop = TRUE;
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
voice = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
irc_nicklist_insert(chanrec, ptr, op, halfop, voice, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free(params);
|
g_free(params);
|
||||||
|
@ -20,8 +20,8 @@ typedef struct _REDIRECT_REC REDIRECT_REC;
|
|||||||
(a) == '+' || (a) == '=' || (a) == '-')
|
(a) == '+' || (a) == '=' || (a) == '-')
|
||||||
|
|
||||||
#define isnickflag(a) \
|
#define isnickflag(a) \
|
||||||
((a) == '@' || (a) == '+' || (a) == '%' || /* op / voice / half-op */ \
|
((a) == '@' || (a) == '+' || (a) == '%' || /* op / voice */ \
|
||||||
(a) == '-' || (a) == '~') /* no idea, just copied from somewhere.. */
|
(a) == '%' || (a) == '.') /* extensions: half-op / owner */
|
||||||
|
|
||||||
#define ischannel(a) \
|
#define ischannel(a) \
|
||||||
((a) == '#' || /* normal */ \
|
((a) == '#' || /* normal */ \
|
||||||
|
Loading…
Reference in New Issue
Block a user