1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-01 23:36:37 +02:00

Added channel modes +e/+f, IRC commands 348,349,470

This commit is contained in:
Sebastien Helleu
2005-10-16 21:46:31 +00:00
parent 2ca5b4f651
commit 11d77e6168
16 changed files with 3228 additions and 2470 deletions
+2 -2
View File
@@ -1,13 +1,13 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2005-10-15
ChangeLog - 2005-10-16
Version 0.1.6 (under dev!):
* new plugin interface, rewritten from scratch: now loads dynamic C
library, and perl/python are plugin scripts
* added some missing IRC commands
* added some missing IRC commands, channel modes +e and +f
* added colors for input buffer and current channel of status bar
* added online help for config options (with /set full_option_name)
* enhanced "smart" hotlist, with names (new options:
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -309
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -148,6 +148,7 @@ t_irc_command irc_commands[] =
" m: moderated channel\n"
" l: set the user limit to channel\n"
" b: set a ban mask to keep users out\n"
" e: set exception mask\n"
" v: give/take the ability to speak on a moderated channel\n"
" k: set a channel key (password)\n"
"user modes:\n"
@@ -361,6 +362,8 @@ t_irc_command irc_commands[] =
{ "341", N_("inviting"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_341 },
{ "344", N_("channel reop"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_344 },
{ "345", N_("end of channel reop list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_345 },
{ "348", N_("channel exception list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_348 },
{ "349", N_("end of channel exception list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_349 },
{ "351", N_("server version"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_351 },
{ "352", N_("who"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_352 },
{ "353", N_("list of nicks on channel"),
@@ -452,6 +455,8 @@ t_irc_command irc_commands[] =
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "467", N_("channel key already set"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "470", N_("forwarding to another channel"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "471", N_("channel is already full"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "472", N_("unknown mode char to me"),
+225
View File
@@ -565,6 +565,56 @@ void irc_get_channel_modes (t_irc_channel *ptr_channel, char *channel_name,
_("removes ban on"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
pos++;
while (pos[0] == ' ')
pos++;
parm = pos;
}
break;
case 'e':
pos = NULL;
if (parm)
{
pos = strchr (parm, ' ');
if (pos)
pos[0] = '\0';
}
if (nick_host)
irc_display_mode (ptr_channel->buffer,
channel_name, set_flag, "e", nick_host,
(set_flag == '+') ?
_("sets exception on") :
_("removes exception on"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
pos++;
while (pos[0] == ' ')
pos++;
parm = pos;
}
break;
case 'f':
pos = NULL;
if (parm)
{
pos = strchr (parm, ' ');
if (pos)
pos[0] = '\0';
}
if (nick_host)
irc_display_mode (ptr_channel->buffer,
channel_name, set_flag, "f", nick_host,
(set_flag == '+') ?
_("sets mode +f") :
_("removes mode +f"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
@@ -3777,6 +3827,181 @@ irc_cmd_recv_345 (t_irc_server *server, char *host, char *nick, char *arguments)
return 0;
}
/*
* irc_cmd_recv_348: '348' command received (channel exception list)
*/
int
irc_cmd_recv_348 (t_irc_server *server, char *host, char *nick, char *arguments)
{
char *pos_channel, *pos_exception, *pos_user, *pos_date, *pos;
t_irc_channel *ptr_channel;
t_gui_buffer *buffer;
time_t datetime;
/* make gcc happy */
(void) nick;
/* look for channel */
pos_channel = strchr (arguments, ' ');
if (!pos_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_channel[0] = '\0';
pos_channel++;
while (pos_channel[0] == ' ')
pos_channel++;
/* look for exception mask */
pos_exception = strchr (pos_channel, ' ');
if (!pos_exception)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_exception[0] = '\0';
pos_exception++;
while (pos_exception[0] == ' ')
pos_exception++;
/* look for user who set exception */
pos_user = strchr (pos_exception, ' ');
if (!pos_user)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_user[0] = '\0';
pos_user++;
while (pos_user[0] == ' ')
pos_user++;
/* look for date/time */
pos_date = strchr (pos_user, ' ');
if (!pos_date)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_date[0] = '\0';
pos_date++;
while (pos_date[0] == ' ')
pos_date++;
if (!pos_date || !pos_date[0])
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
ptr_channel = channel_search (server, pos_channel);
buffer = (ptr_channel) ? ptr_channel->buffer : server->buffer;
command_ignored |= ignore_check (host, "348", pos_channel, server->name);
if (!command_ignored)
{
irc_display_prefix (buffer, PREFIX_INFO);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (buffer, COLOR_WIN_CHAT_CHANNEL, "%s", pos_channel);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "] ");
gui_printf (buffer, _("exception"));
gui_printf_color (buffer, COLOR_WIN_CHAT_HOST, " %s ", pos_exception);
gui_printf (buffer, _("by"));
pos = strchr (pos_user, '!');
if (pos)
{
pos[0] = '\0';
gui_printf_color (buffer, COLOR_WIN_CHAT_NICK, " %s ", pos_user);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "(");
gui_printf_color (buffer, COLOR_WIN_CHAT_HOST, "%s", pos + 1);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, ")");
}
else
gui_printf_color (buffer, COLOR_WIN_CHAT_NICK, " %s", pos_user);
datetime = (time_t)(atol (pos_date));
gui_printf_nolog (buffer, ", %s", ctime (&datetime));
}
return 0;
}
/*
* irc_cmd_recv_349: '349' command received (end of channel exception list)
*/
int
irc_cmd_recv_349 (t_irc_server *server, char *host, char *nick, char *arguments)
{
char *pos_channel, *pos_msg;
t_irc_channel *ptr_channel;
t_gui_buffer *buffer;
/* make gcc happy */
(void) nick;
pos_channel = strchr (arguments, ' ');
if (!pos_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "349");
return -1;
}
pos_channel[0] = '\0';
pos_channel++;
while (pos_channel[0] == ' ')
pos_channel++;
pos_msg = strchr (pos_channel, ' ');
if (!pos_msg)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "349");
return -1;
}
pos_msg[0] = '\0';
pos_msg++;
while (pos_msg[0] == ' ')
pos_msg++;
if (pos_msg[0] == ':')
pos_msg++;
ptr_channel = channel_search (server, pos_channel);
buffer = (ptr_channel) ? ptr_channel->buffer : server->buffer;
command_ignored |= ignore_check (host, "349", pos_channel, server->name);
if (!command_ignored)
{
irc_display_prefix (buffer, PREFIX_INFO);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (buffer, COLOR_WIN_CHAT_CHANNEL, "%s", pos_channel);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_nolog (buffer, "%s\n", pos_msg);
}
return 0;
}
/*
* irc_cmd_recv_351: '351' command received (server version)
*/
+2
View File
@@ -488,6 +488,8 @@ extern int irc_cmd_recv_333 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_341 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_344 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_345 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_348 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_349 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_351 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_352 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_353 (t_irc_server *, char *, char *, char *);
+2 -2
View File
@@ -1,13 +1,13 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2005-10-15
ChangeLog - 2005-10-16
Version 0.1.6 (under dev!):
* new plugin interface, rewritten from scratch: now loads dynamic C
library, and perl/python are plugin scripts
* added some missing IRC commands
* added some missing IRC commands, channel modes +e and +f
* added colors for input buffer and current channel of status bar
* added online help for config options (with /set full_option_name)
* enhanced "smart" hotlist, with names (new options:
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -308
View File
File diff suppressed because it is too large Load Diff
+345 -309
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -148,6 +148,7 @@ t_irc_command irc_commands[] =
" m: moderated channel\n"
" l: set the user limit to channel\n"
" b: set a ban mask to keep users out\n"
" e: set exception mask\n"
" v: give/take the ability to speak on a moderated channel\n"
" k: set a channel key (password)\n"
"user modes:\n"
@@ -361,6 +362,8 @@ t_irc_command irc_commands[] =
{ "341", N_("inviting"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_341 },
{ "344", N_("channel reop"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_344 },
{ "345", N_("end of channel reop list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_345 },
{ "348", N_("channel exception list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_348 },
{ "349", N_("end of channel exception list"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_349 },
{ "351", N_("server version"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_351 },
{ "352", N_("who"), "", "", 0, 0, 1, NULL, NULL, irc_cmd_recv_352 },
{ "353", N_("list of nicks on channel"),
@@ -452,6 +455,8 @@ t_irc_command irc_commands[] =
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "467", N_("channel key already set"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "470", N_("forwarding to another channel"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "471", N_("channel is already full"),
"", "", 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
{ "472", N_("unknown mode char to me"),
+225
View File
@@ -565,6 +565,56 @@ void irc_get_channel_modes (t_irc_channel *ptr_channel, char *channel_name,
_("removes ban on"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
pos++;
while (pos[0] == ' ')
pos++;
parm = pos;
}
break;
case 'e':
pos = NULL;
if (parm)
{
pos = strchr (parm, ' ');
if (pos)
pos[0] = '\0';
}
if (nick_host)
irc_display_mode (ptr_channel->buffer,
channel_name, set_flag, "e", nick_host,
(set_flag == '+') ?
_("sets exception on") :
_("removes exception on"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
pos++;
while (pos[0] == ' ')
pos++;
parm = pos;
}
break;
case 'f':
pos = NULL;
if (parm)
{
pos = strchr (parm, ' ');
if (pos)
pos[0] = '\0';
}
if (nick_host)
irc_display_mode (ptr_channel->buffer,
channel_name, set_flag, "f", nick_host,
(set_flag == '+') ?
_("sets mode +f") :
_("removes mode +f"),
(parm) ? parm : NULL);
/* look for next parameter */
if (parm && pos)
{
@@ -3777,6 +3827,181 @@ irc_cmd_recv_345 (t_irc_server *server, char *host, char *nick, char *arguments)
return 0;
}
/*
* irc_cmd_recv_348: '348' command received (channel exception list)
*/
int
irc_cmd_recv_348 (t_irc_server *server, char *host, char *nick, char *arguments)
{
char *pos_channel, *pos_exception, *pos_user, *pos_date, *pos;
t_irc_channel *ptr_channel;
t_gui_buffer *buffer;
time_t datetime;
/* make gcc happy */
(void) nick;
/* look for channel */
pos_channel = strchr (arguments, ' ');
if (!pos_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_channel[0] = '\0';
pos_channel++;
while (pos_channel[0] == ' ')
pos_channel++;
/* look for exception mask */
pos_exception = strchr (pos_channel, ' ');
if (!pos_exception)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_exception[0] = '\0';
pos_exception++;
while (pos_exception[0] == ' ')
pos_exception++;
/* look for user who set exception */
pos_user = strchr (pos_exception, ' ');
if (!pos_user)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_user[0] = '\0';
pos_user++;
while (pos_user[0] == ' ')
pos_user++;
/* look for date/time */
pos_date = strchr (pos_user, ' ');
if (!pos_date)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
pos_date[0] = '\0';
pos_date++;
while (pos_date[0] == ' ')
pos_date++;
if (!pos_date || !pos_date[0])
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "348");
return -1;
}
ptr_channel = channel_search (server, pos_channel);
buffer = (ptr_channel) ? ptr_channel->buffer : server->buffer;
command_ignored |= ignore_check (host, "348", pos_channel, server->name);
if (!command_ignored)
{
irc_display_prefix (buffer, PREFIX_INFO);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (buffer, COLOR_WIN_CHAT_CHANNEL, "%s", pos_channel);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "] ");
gui_printf (buffer, _("exception"));
gui_printf_color (buffer, COLOR_WIN_CHAT_HOST, " %s ", pos_exception);
gui_printf (buffer, _("by"));
pos = strchr (pos_user, '!');
if (pos)
{
pos[0] = '\0';
gui_printf_color (buffer, COLOR_WIN_CHAT_NICK, " %s ", pos_user);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "(");
gui_printf_color (buffer, COLOR_WIN_CHAT_HOST, "%s", pos + 1);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, ")");
}
else
gui_printf_color (buffer, COLOR_WIN_CHAT_NICK, " %s", pos_user);
datetime = (time_t)(atol (pos_date));
gui_printf_nolog (buffer, ", %s", ctime (&datetime));
}
return 0;
}
/*
* irc_cmd_recv_349: '349' command received (end of channel exception list)
*/
int
irc_cmd_recv_349 (t_irc_server *server, char *host, char *nick, char *arguments)
{
char *pos_channel, *pos_msg;
t_irc_channel *ptr_channel;
t_gui_buffer *buffer;
/* make gcc happy */
(void) nick;
pos_channel = strchr (arguments, ' ');
if (!pos_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "349");
return -1;
}
pos_channel[0] = '\0';
pos_channel++;
while (pos_channel[0] == ' ')
pos_channel++;
pos_msg = strchr (pos_channel, ' ');
if (!pos_msg)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf_nolog (server->buffer,
_("%s cannot parse \"%s\" command\n"),
WEECHAT_ERROR, "349");
return -1;
}
pos_msg[0] = '\0';
pos_msg++;
while (pos_msg[0] == ' ')
pos_msg++;
if (pos_msg[0] == ':')
pos_msg++;
ptr_channel = channel_search (server, pos_channel);
buffer = (ptr_channel) ? ptr_channel->buffer : server->buffer;
command_ignored |= ignore_check (host, "349", pos_channel, server->name);
if (!command_ignored)
{
irc_display_prefix (buffer, PREFIX_INFO);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (buffer, COLOR_WIN_CHAT_CHANNEL, "%s", pos_channel);
gui_printf_color (buffer, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_nolog (buffer, "%s\n", pos_msg);
}
return 0;
}
/*
* irc_cmd_recv_351: '351' command received (server version)
*/
+2
View File
@@ -488,6 +488,8 @@ extern int irc_cmd_recv_333 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_341 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_344 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_345 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_348 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_349 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_351 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_352 (t_irc_server *, char *, char *, char *);
extern int irc_cmd_recv_353 (t_irc_server *, char *, char *, char *);