1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 00:33:13 +02:00

Fixed nick prefix display on servers that doesn't support all prefixes (bug #20025)

This commit is contained in:
Sebastien Helleu
2007-08-01 10:44:51 +00:00
parent efd511dea4
commit 9d3e31e165
8 changed files with 44 additions and 28 deletions
+2
View File
@@ -5,6 +5,8 @@ ChangeLog - 2007-08-01
Version 0.2.6 (under dev!):
* fixed nick prefix display on servers that doesn't support all prefixes
(bug #20025)
* fixed terminal encoding detection when NLS is disabled (bug #20646)
* fixed crash when sending data to channel or pv on disconnected server
(bug #20524)
+17 -11
View File
@@ -81,7 +81,8 @@ irc_mode_channel_get_flag (char *str, char *pos)
*/
void
irc_mode_channel_set (t_irc_channel *channel, char *modes)
irc_mode_channel_set (t_irc_server *server, t_irc_channel *channel,
char *modes)
{
char *pos_args, set_flag, **argv, *pos, *ptr_arg;
int argc, current_arg;
@@ -121,14 +122,16 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
case 'a': /* unrealircd specific flag */
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANADMIN);
if (irc_mode_nick_prefix_allowed (server, '~'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANADMIN);
break;
case 'h':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_HALFOP);
if (irc_mode_nick_prefix_allowed (server, '%'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_HALFOP);
break;
case 'k':
if (channel->key)
@@ -158,20 +161,23 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
case 'o':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_OP);
if (irc_mode_nick_prefix_allowed (server, '@'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_OP);
break;
case 'q': /* unrealircd specific flag */
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANOWNER);
if (irc_mode_nick_prefix_allowed (server, '~'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANOWNER);
break;
case 'v':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_VOICE);
if (irc_mode_nick_prefix_allowed (server, '+'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_VOICE);
break;
}
break;
+2 -2
View File
@@ -742,7 +742,7 @@ irc_recv_cmd_mode (t_irc_server *server, char *host, char *nick, char *arguments
GUI_COLOR(COLOR_WIN_CHAT_NICK),
nick);
}
irc_mode_channel_set (ptr_channel, pos_modes);
irc_mode_channel_set (server, ptr_channel, pos_modes);
irc_server_sendf (server, "MODE %s", ptr_channel->name);
}
else
@@ -3474,7 +3474,7 @@ irc_recv_cmd_324 (t_irc_server *server, char *host, char *nick, char *arguments)
else
ptr_channel->modes = (char *) malloc (strlen (pos_modes) + 1);
strcpy (ptr_channel->modes, pos_modes);
irc_mode_channel_set (ptr_channel, pos_modes);
irc_mode_channel_set (server, ptr_channel, pos_modes);
}
else
{
+1 -1
View File
@@ -443,7 +443,7 @@ extern void irc_nick_print_log (t_irc_nick *);
/* mode functions (irc-mode.c) */
extern void irc_mode_channel_set (t_irc_channel *, char *);
extern void irc_mode_channel_set (t_irc_server *, t_irc_channel *, char *);
extern void irc_mode_user_set (t_irc_server *, char *);
extern int irc_mode_nick_prefix_allowed (t_irc_server *, char);
+2
View File
@@ -5,6 +5,8 @@ ChangeLog - 2007-08-01
Version 0.2.6 (under dev!):
* fixed nick prefix display on servers that doesn't support all prefixes
(bug #20025)
* fixed terminal encoding detection when NLS is disabled (bug #20646)
* fixed crash when sending data to channel or pv on disconnected server
(bug #20524)
+17 -11
View File
@@ -81,7 +81,8 @@ irc_mode_channel_get_flag (char *str, char *pos)
*/
void
irc_mode_channel_set (t_irc_channel *channel, char *modes)
irc_mode_channel_set (t_irc_server *server, t_irc_channel *channel,
char *modes)
{
char *pos_args, set_flag, **argv, *pos, *ptr_arg;
int argc, current_arg;
@@ -121,14 +122,16 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
case 'a': /* unrealircd specific flag */
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANADMIN);
if (irc_mode_nick_prefix_allowed (server, '~'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANADMIN);
break;
case 'h':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_HALFOP);
if (irc_mode_nick_prefix_allowed (server, '%'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_HALFOP);
break;
case 'k':
if (channel->key)
@@ -158,20 +161,23 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
case 'o':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_OP);
if (irc_mode_nick_prefix_allowed (server, '@'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_OP);
break;
case 'q': /* unrealircd specific flag */
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANOWNER);
if (irc_mode_nick_prefix_allowed (server, '~'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_CHANOWNER);
break;
case 'v':
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
argv[current_arg--] : NULL;
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_VOICE);
if (irc_mode_nick_prefix_allowed (server, '+'))
irc_mode_channel_set_nick (channel, ptr_arg,
set_flag, NICK_VOICE);
break;
}
break;
+2 -2
View File
@@ -742,7 +742,7 @@ irc_recv_cmd_mode (t_irc_server *server, char *host, char *nick, char *arguments
GUI_COLOR(COLOR_WIN_CHAT_NICK),
nick);
}
irc_mode_channel_set (ptr_channel, pos_modes);
irc_mode_channel_set (server, ptr_channel, pos_modes);
irc_server_sendf (server, "MODE %s", ptr_channel->name);
}
else
@@ -3474,7 +3474,7 @@ irc_recv_cmd_324 (t_irc_server *server, char *host, char *nick, char *arguments)
else
ptr_channel->modes = (char *) malloc (strlen (pos_modes) + 1);
strcpy (ptr_channel->modes, pos_modes);
irc_mode_channel_set (ptr_channel, pos_modes);
irc_mode_channel_set (server, ptr_channel, pos_modes);
}
else
{
+1 -1
View File
@@ -443,7 +443,7 @@ extern void irc_nick_print_log (t_irc_nick *);
/* mode functions (irc-mode.c) */
extern void irc_mode_channel_set (t_irc_channel *, char *);
extern void irc_mode_channel_set (t_irc_server *, t_irc_channel *, char *);
extern void irc_mode_user_set (t_irc_server *, char *);
extern int irc_mode_nick_prefix_allowed (t_irc_server *, char);