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:
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user