mirror of
https://github.com/weechat/weechat.git
synced 2026-06-30 23:06:38 +02:00
Added "modifier" in plugins API, improved /plugin command
This commit is contained in:
@@ -427,7 +427,7 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
|
||||
{
|
||||
channel->checking_away++;
|
||||
server_sendf (server, "WHO %s\r\n", channel->name);
|
||||
server_sendf (server, "WHO %s", channel->name);
|
||||
}
|
||||
else
|
||||
channel_remove_away (channel);
|
||||
|
||||
+7
-7
@@ -632,8 +632,8 @@ dcc_accept (t_irc_dcc *ptr_dcc)
|
||||
ptr_dcc->status = DCC_CONNECTING;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC RESUME \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC RESUME %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
dcc_redraw (HOTLIST_MSG);
|
||||
@@ -661,8 +661,8 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
|
||||
ptr_dcc->last_check_pos = pos_start;
|
||||
server_sendf (ptr_dcc->server,
|
||||
(strchr (ptr_dcc->filename, ' ')) ?
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC ACCEPT \"%s\" %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC ACCEPT %s %d %u\01",
|
||||
ptr_dcc->nick, ptr_dcc->filename,
|
||||
ptr_dcc->port, ptr_dcc->start_resume);
|
||||
|
||||
@@ -1158,13 +1158,13 @@ dcc_send_request (t_irc_server *server, int type, char *nick, char *filename)
|
||||
/* send DCC request to nick */
|
||||
if (type == DCC_CHAT_SEND)
|
||||
server_sendf (server,
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01\r\n",
|
||||
"PRIVMSG %s :\01DCC CHAT chat %lu %d\01",
|
||||
nick, local_addr, port);
|
||||
else
|
||||
server_sendf (server,
|
||||
(spaces) ?
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
|
||||
"PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\n" :
|
||||
"PRIVMSG %s :\01DCC SEND %s %lu %d %u\01",
|
||||
nick, short_filename, local_addr, port,
|
||||
(unsigned long) st.st_size);
|
||||
|
||||
|
||||
+11
-11
@@ -725,7 +725,7 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
nick);
|
||||
}
|
||||
irc_mode_channel_set (ptr_channel, pos_modes);
|
||||
server_sendf (server, "MODE %s\r\n", ptr_channel->name);
|
||||
server_sendf (server, "MODE %s", ptr_channel->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1180,7 +1180,7 @@ irc_cmd_recv_ping (t_irc_server *server, char *host, char *nick, char *arguments
|
||||
pos = strrchr (arguments, ' ');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
server_sendf (server, "PONG :%s\r\n", arguments);
|
||||
server_sendf (server, "PONG :%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1253,7 +1253,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"%s %s / %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
&buf->sysname,
|
||||
&buf->release, &buf->machine, "\01\r\n");
|
||||
&buf->release, &buf->machine, "\01");
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
@@ -1261,7 +1261,7 @@ irc_cmd_reply_version (t_irc_server *server, t_irc_channel *channel,
|
||||
"NOTICE %s :%sVERSION %s v%s"
|
||||
" compiled on %s%s",
|
||||
nick, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
|
||||
"\01\r\n");
|
||||
"\01");
|
||||
irc_display_prefix (server, ptr_buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_buffer,
|
||||
_("CTCP %sVERSION%s received from %s%s"),
|
||||
@@ -1408,10 +1408,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, ptr_channel->buffer, PREFIX_SERVER);
|
||||
gui_printf (ptr_channel->buffer,
|
||||
@@ -1549,10 +1549,10 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *nick, char *argume
|
||||
if (pos && !pos[0])
|
||||
pos = NULL;
|
||||
if (pos)
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING %s\01",
|
||||
nick, pos);
|
||||
else
|
||||
server_sendf (server, "NOTICE %s :\01PING\01\r\n",
|
||||
server_sendf (server, "NOTICE %s :\01PING\01",
|
||||
nick);
|
||||
irc_display_prefix (server, server->buffer, PREFIX_SERVER);
|
||||
gui_printf (server->buffer,
|
||||
@@ -2414,10 +2414,10 @@ irc_cmd_recv_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
if (ptr_channel->key)
|
||||
server_sendf (server, "JOIN %s %s\r\n",
|
||||
server_sendf (server, "JOIN %s %s",
|
||||
ptr_channel->name, ptr_channel->key);
|
||||
else
|
||||
server_sendf (server, "JOIN %s\r\n",
|
||||
server_sendf (server, "JOIN %s",
|
||||
ptr_channel->name);
|
||||
}
|
||||
}
|
||||
@@ -4811,7 +4811,7 @@ irc_cmd_recv_433 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
if (!hostname[0])
|
||||
strcpy (hostname, _("unknown"));
|
||||
server_sendf (server,
|
||||
"NICK %s\r\n",
|
||||
"NICK %s",
|
||||
server->nick);
|
||||
}
|
||||
else
|
||||
|
||||
+94
-94
@@ -54,7 +54,7 @@ irc_login (t_irc_server *server)
|
||||
char hostname[NI_MAXHOST];
|
||||
|
||||
if ((server->password) && (server->password[0]))
|
||||
server_sendf (server, "PASS %s\r\n", server->password);
|
||||
server_sendf (server, "PASS %s", server->password);
|
||||
|
||||
gethostname (hostname, sizeof (hostname) - 1);
|
||||
hostname[sizeof (hostname) - 1] = '\0';
|
||||
@@ -68,8 +68,8 @@ irc_login (t_irc_server *server)
|
||||
if (!server->nick)
|
||||
server->nick = strdup (server->nick1);
|
||||
server_sendf (server,
|
||||
"NICK %s\r\n"
|
||||
"USER %s %s %s :%s\r\n",
|
||||
"NICK %s\n"
|
||||
"USER %s %s %s :%s",
|
||||
server->nick, server->username, hostname, "servername",
|
||||
server->realname);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
@@ -87,9 +87,9 @@ irc_cmd_send_admin (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "ADMIN %s\r\n", arguments);
|
||||
server_sendf (server, "ADMIN %s", arguments);
|
||||
else
|
||||
server_sendf (server, "ADMIN\r\n");
|
||||
server_sendf (server, "ADMIN");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ irc_send_me (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
char *string;
|
||||
|
||||
server_sendf (server, "PRIVMSG %s :\01ACTION %s\01\r\n",
|
||||
server_sendf (server, "PRIVMSG %s :\01ACTION %s\01",
|
||||
channel->name,
|
||||
(arguments && arguments[0]) ? arguments : "");
|
||||
irc_display_prefix (NULL, channel->buffer, PREFIX_ACTION_ME);
|
||||
@@ -200,7 +200,7 @@ irc_cmd_send_amsg (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
if (ptr_channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
server_sendf (ptr_server, "PRIVMSG %s :%s\r\n",
|
||||
server_sendf (ptr_server, "PRIVMSG %s :%s",
|
||||
ptr_channel->name, arguments);
|
||||
ptr_nick = nick_search (ptr_channel, ptr_server->nick);
|
||||
if (ptr_nick)
|
||||
@@ -250,7 +250,7 @@ irc_send_away (t_irc_server *server, char *arguments)
|
||||
if (server->away_message)
|
||||
strcpy (server->away_message, arguments);
|
||||
server->away_time = time (NULL);
|
||||
server_sendf (server, "AWAY :%s\r\n", arguments);
|
||||
server_sendf (server, "AWAY :%s", arguments);
|
||||
if (cfg_irc_display_away != CFG_IRC_DISPLAY_AWAY_OFF)
|
||||
{
|
||||
string = (char *)gui_color_decode ((unsigned char *)arguments, 1);
|
||||
@@ -275,7 +275,7 @@ irc_send_away (t_irc_server *server, char *arguments)
|
||||
}
|
||||
else
|
||||
{
|
||||
server_sendf (server, "AWAY\r\n");
|
||||
server_sendf (server, "AWAY");
|
||||
server->is_away = 0;
|
||||
if (server->away_message)
|
||||
{
|
||||
@@ -428,7 +428,7 @@ irc_cmd_send_ban (t_irc_server *server, t_irc_channel *channel,
|
||||
while (pos2[0] == ' ')
|
||||
pos2++;
|
||||
}
|
||||
server_sendf (server, "MODE %s +b %s\r\n", pos_channel, pos);
|
||||
server_sendf (server, "MODE %s +b %s", pos_channel, pos);
|
||||
pos = pos2;
|
||||
}
|
||||
}
|
||||
@@ -442,7 +442,7 @@ irc_cmd_send_ban (t_irc_server *server, t_irc_channel *channel,
|
||||
WEECHAT_ERROR, "ban");
|
||||
return -1;
|
||||
}
|
||||
server_sendf (server, "MODE %s +b\r\n", CHANNEL(buffer)->name);
|
||||
server_sendf (server, "MODE %s +b", CHANNEL(buffer)->name);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -500,7 +500,7 @@ irc_cmd_send_ctcp (t_irc_server *server, t_irc_channel *channel,
|
||||
if ((ascii_strcasecmp (pos_type, "ping") == 0) && (!pos_args))
|
||||
{
|
||||
gettimeofday (&tv, NULL);
|
||||
server_sendf (server, "PRIVMSG %s :\01PING %d %d\01\r\n",
|
||||
server_sendf (server, "PRIVMSG %s :\01PING %d %d\01",
|
||||
arguments, tv.tv_sec, tv.tv_usec);
|
||||
gui_printf (server->buffer, " %s%d %d\n",
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
@@ -510,7 +510,7 @@ irc_cmd_send_ctcp (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
if (pos_args)
|
||||
{
|
||||
server_sendf (server, "PRIVMSG %s :\01%s %s\01\r\n",
|
||||
server_sendf (server, "PRIVMSG %s :\01%s %s\01",
|
||||
arguments, pos_type, pos_args);
|
||||
gui_printf (server->buffer, " %s%s\n",
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
@@ -518,7 +518,7 @@ irc_cmd_send_ctcp (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
else
|
||||
{
|
||||
server_sendf (server, "PRIVMSG %s :\01%s\01\r\n",
|
||||
server_sendf (server, "PRIVMSG %s :\01%s\01",
|
||||
arguments, pos_type);
|
||||
gui_printf (server->buffer, "\n");
|
||||
}
|
||||
@@ -617,13 +617,13 @@ irc_cmd_send_cycle (t_irc_server *server, t_irc_channel *channel,
|
||||
if (ptr_arg)
|
||||
{
|
||||
buf = weechat_strreplace (ptr_arg, "%v", PACKAGE_VERSION);
|
||||
server_sendf (server, "PART %s :%s\r\n", channel_name,
|
||||
server_sendf (server, "PART %s :%s", channel_name,
|
||||
(buf) ? buf : ptr_arg);
|
||||
if (buf)
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "PART %s\r\n", channel_name);
|
||||
server_sendf (server, "PART %s", channel_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -643,7 +643,7 @@ irc_cmd_send_dehalfop (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s -h %s\r\n",
|
||||
server_sendf (server, "MODE %s -h %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -675,7 +675,7 @@ irc_cmd_send_deop (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s -o %s\r\n",
|
||||
server_sendf (server, "MODE %s -o %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -707,7 +707,7 @@ irc_cmd_send_devoice (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s -v %s\r\n",
|
||||
server_sendf (server, "MODE %s -v %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -737,7 +737,7 @@ irc_cmd_send_die (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
(void) arguments;
|
||||
|
||||
server_sendf (server, "DIE\r\n");
|
||||
server_sendf (server, "DIE");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -756,7 +756,7 @@ irc_cmd_send_halfop (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s +h %s\r\n",
|
||||
server_sendf (server, "MODE %s +h %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -786,9 +786,9 @@ irc_cmd_send_info (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "INFO %s\r\n", arguments);
|
||||
server_sendf (server, "INFO %s", arguments);
|
||||
else
|
||||
server_sendf (server, "INFO\r\n");
|
||||
server_sendf (server, "INFO");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -805,7 +805,7 @@ irc_cmd_send_invite (t_irc_server *server, t_irc_channel *channel,
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
if (argc == 2)
|
||||
server_sendf (server, "INVITE %s %s\r\n", argv[0], argv[1]);
|
||||
server_sendf (server, "INVITE %s %s", argv[0], argv[1]);
|
||||
else
|
||||
{
|
||||
if (!BUFFER_IS_CHANNEL(buffer))
|
||||
@@ -816,7 +816,7 @@ irc_cmd_send_invite (t_irc_server *server, t_irc_channel *channel,
|
||||
WEECHAT_ERROR, "invite");
|
||||
return -1;
|
||||
}
|
||||
server_sendf (server, "INVITE %s %s\r\n",
|
||||
server_sendf (server, "INVITE %s %s",
|
||||
argv[0], CHANNEL(buffer)->name);
|
||||
}
|
||||
return 0;
|
||||
@@ -833,7 +833,7 @@ irc_cmd_send_ison (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "ISON %s\r\n", arguments);
|
||||
server_sendf (server, "ISON %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -849,9 +849,9 @@ irc_cmd_send_join (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (string_is_channel (arguments))
|
||||
server_sendf (server, "JOIN %s\r\n", arguments);
|
||||
server_sendf (server, "JOIN %s", arguments);
|
||||
else
|
||||
server_sendf (server, "JOIN #%s\r\n", arguments);
|
||||
server_sendf (server, "JOIN #%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -909,9 +909,9 @@ irc_cmd_send_kick (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
if (pos_comment)
|
||||
server_sendf (server, "KICK %s %s :%s\r\n", pos_channel, pos_nick, pos_comment);
|
||||
server_sendf (server, "KICK %s %s :%s", pos_channel, pos_nick, pos_comment);
|
||||
else
|
||||
server_sendf (server, "KICK %s %s\r\n", pos_channel, pos_nick);
|
||||
server_sendf (server, "KICK %s %s", pos_channel, pos_nick);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -969,11 +969,11 @@ irc_cmd_send_kickban (t_irc_server *server, t_irc_channel *channel,
|
||||
pos_comment++;
|
||||
}
|
||||
|
||||
server_sendf (server, "MODE %s +b %s\r\n", pos_channel, pos_nick);
|
||||
server_sendf (server, "MODE %s +b %s", pos_channel, pos_nick);
|
||||
if (pos_comment)
|
||||
server_sendf (server, "KICK %s %s :%s\r\n", pos_channel, pos_nick, pos_comment);
|
||||
server_sendf (server, "KICK %s %s :%s", pos_channel, pos_nick, pos_comment);
|
||||
else
|
||||
server_sendf (server, "KICK %s %s\r\n", pos_channel, pos_nick);
|
||||
server_sendf (server, "KICK %s %s", pos_channel, pos_nick);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -998,10 +998,10 @@ irc_cmd_send_kill (t_irc_server *server, t_irc_channel *channel,
|
||||
pos++;
|
||||
while (pos[0] == ' ')
|
||||
pos++;
|
||||
server_sendf (server, "KILL %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "KILL %s :%s", arguments, pos);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "KILL %s\r\n", arguments);
|
||||
server_sendf (server, "KILL %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1018,9 +1018,9 @@ irc_cmd_send_links (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "LINKS %s\r\n", arguments);
|
||||
server_sendf (server, "LINKS %s", arguments);
|
||||
else
|
||||
server_sendf (server, "LINKS\r\n");
|
||||
server_sendf (server, "LINKS");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1057,7 +1057,7 @@ irc_cmd_send_list (t_irc_server *server, t_irc_channel *channel,
|
||||
WEECHAT_ERROR, arguments, buffer);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "LIST\r\n");
|
||||
server_sendf (server, "LIST");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1067,7 +1067,7 @@ irc_cmd_send_list (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
}
|
||||
else
|
||||
server_sendf (server, "LIST\r\n");
|
||||
server_sendf (server, "LIST");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1084,9 +1084,9 @@ irc_cmd_send_lusers (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "LUSERS %s\r\n", arguments);
|
||||
server_sendf (server, "LUSERS %s", arguments);
|
||||
else
|
||||
server_sendf (server, "LUSERS\r\n");
|
||||
server_sendf (server, "LUSERS");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1125,7 +1125,7 @@ irc_cmd_send_mode (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "MODE %s\r\n", arguments);
|
||||
server_sendf (server, "MODE %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1155,7 +1155,7 @@ irc_send_mode_nicks (t_irc_server *server, char *channel,
|
||||
strcat (command, " ");
|
||||
strcat (command, argv[i]);
|
||||
}
|
||||
server_sendf (server, "%s\r\n", command);
|
||||
server_sendf (server, "%s", command);
|
||||
free (command);
|
||||
}
|
||||
}
|
||||
@@ -1172,9 +1172,9 @@ irc_cmd_send_motd (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "MOTD %s\r\n", arguments);
|
||||
server_sendf (server, "MOTD %s", arguments);
|
||||
else
|
||||
server_sendf (server, "MOTD\r\n");
|
||||
server_sendf (server, "MOTD");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1237,7 +1237,7 @@ irc_cmd_send_msg (t_irc_server *server, t_irc_channel *channel,
|
||||
if (string)
|
||||
free (string);
|
||||
|
||||
server_sendf (server, "PRIVMSG %s :%s\r\n", ptr_channel->name, pos);
|
||||
server_sendf (server, "PRIVMSG %s :%s", ptr_channel->name, pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1265,7 +1265,7 @@ irc_cmd_send_msg (t_irc_server *server, t_irc_channel *channel,
|
||||
WEECHAT_ERROR, server->nick, "msg");
|
||||
}
|
||||
}
|
||||
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "PRIVMSG %s :%s", arguments, pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1301,7 +1301,7 @@ irc_cmd_send_msg (t_irc_server *server, t_irc_channel *channel,
|
||||
(string) ? string : "");
|
||||
if (string)
|
||||
free (string);
|
||||
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "PRIVMSG %s :%s", arguments, pos);
|
||||
free (msg_pwd_hidden);
|
||||
return 0;
|
||||
}
|
||||
@@ -1332,7 +1332,7 @@ irc_cmd_send_msg (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
if (string)
|
||||
free (string);
|
||||
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "PRIVMSG %s :%s", arguments, pos);
|
||||
}
|
||||
}
|
||||
arguments = pos_comma;
|
||||
@@ -1362,7 +1362,7 @@ irc_cmd_send_names (t_irc_server *server, t_irc_channel *channel,
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "NAMES %s\r\n", arguments);
|
||||
server_sendf (server, "NAMES %s", arguments);
|
||||
else
|
||||
{
|
||||
if (!BUFFER_IS_CHANNEL(buffer))
|
||||
@@ -1374,7 +1374,7 @@ irc_cmd_send_names (t_irc_server *server, t_irc_channel *channel,
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
server_sendf (server, "NAMES %s\r\n",
|
||||
server_sendf (server, "NAMES %s",
|
||||
CHANNEL(buffer)->name);
|
||||
}
|
||||
return 0;
|
||||
@@ -1390,7 +1390,7 @@ irc_cmd_send_nick_server (t_irc_server *server, char *nickname)
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
if (server->is_connected)
|
||||
server_sendf (server, "NICK %s\r\n", nickname);
|
||||
server_sendf (server, "NICK %s", nickname);
|
||||
else
|
||||
{
|
||||
if (server->nick)
|
||||
@@ -1474,7 +1474,7 @@ irc_cmd_send_notice (t_irc_server *server, t_irc_channel *channel,
|
||||
(string) ? string : "");
|
||||
if (string)
|
||||
free (string);
|
||||
server_sendf (server, "NOTICE %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "NOTICE %s :%s", arguments, pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1502,7 +1502,7 @@ irc_cmd_send_op (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s +o %s\r\n",
|
||||
server_sendf (server, "MODE %s +o %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -1531,7 +1531,7 @@ irc_cmd_send_oper (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "OPER %s\r\n", arguments);
|
||||
server_sendf (server, "OPER %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1607,13 +1607,13 @@ irc_cmd_send_part (t_irc_server *server, t_irc_channel *channel,
|
||||
if (ptr_arg)
|
||||
{
|
||||
buf = weechat_strreplace (ptr_arg, "%v", PACKAGE_VERSION);
|
||||
server_sendf (server, "PART %s :%s\r\n", channel_name,
|
||||
server_sendf (server, "PART %s :%s", channel_name,
|
||||
(buf) ? buf : ptr_arg);
|
||||
if (buf)
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "PART %s\r\n", channel_name);
|
||||
server_sendf (server, "PART %s", channel_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1629,7 +1629,7 @@ irc_cmd_send_ping (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "PING %s\r\n", arguments);
|
||||
server_sendf (server, "PING %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1644,7 +1644,7 @@ irc_cmd_send_pong (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "PONG %s\r\n", arguments);
|
||||
server_sendf (server, "PONG %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1717,7 +1717,7 @@ irc_cmd_send_query (t_irc_server *server, t_irc_channel *channel,
|
||||
(string) ? string : "");
|
||||
if (string)
|
||||
free (string);
|
||||
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "PRIVMSG %s :%s", arguments, pos);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1740,13 +1740,13 @@ irc_send_quit_server (t_irc_server *server, char *arguments)
|
||||
if (ptr_arg)
|
||||
{
|
||||
buf = weechat_strreplace (ptr_arg, "%v", PACKAGE_VERSION);
|
||||
server_sendf (server, "QUIT :%s\r\n",
|
||||
server_sendf (server, "QUIT :%s",
|
||||
(buf) ? buf : ptr_arg);
|
||||
if (buf)
|
||||
free (buf);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "QUIT\r\n");
|
||||
server_sendf (server, "QUIT");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1784,7 +1784,7 @@ irc_cmd_send_quote (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "%s\r\n", arguments);
|
||||
server_sendf (server, "%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1800,7 +1800,7 @@ irc_cmd_send_rehash (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
(void) arguments;
|
||||
|
||||
server_sendf (server, "REHASH\r\n");
|
||||
server_sendf (server, "REHASH");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1816,7 +1816,7 @@ irc_cmd_send_restart (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
(void) arguments;
|
||||
|
||||
server_sendf (server, "RESTART\r\n");
|
||||
server_sendf (server, "RESTART");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1831,7 +1831,7 @@ irc_cmd_send_service (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "SERVICE %s\r\n", arguments);
|
||||
server_sendf (server, "SERVICE %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1847,9 +1847,9 @@ irc_cmd_send_servlist (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "SERVLIST %s\r\n", arguments);
|
||||
server_sendf (server, "SERVLIST %s", arguments);
|
||||
else
|
||||
server_sendf (server, "SERVLIST\r\n");
|
||||
server_sendf (server, "SERVLIST");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1875,10 +1875,10 @@ irc_cmd_send_squery (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
pos++;
|
||||
}
|
||||
server_sendf (server, "SQUERY %s :%s\r\n", arguments, pos);
|
||||
server_sendf (server, "SQUERY %s :%s", arguments, pos);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "SQUERY %s\r\n", arguments);
|
||||
server_sendf (server, "SQUERY %s", arguments);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1894,7 +1894,7 @@ irc_cmd_send_squit (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "SQUIT %s\r\n", arguments);
|
||||
server_sendf (server, "SQUIT %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1910,9 +1910,9 @@ irc_cmd_send_stats (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "STATS %s\r\n", arguments);
|
||||
server_sendf (server, "STATS %s", arguments);
|
||||
else
|
||||
server_sendf (server, "STATS\r\n");
|
||||
server_sendf (server, "STATS");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1928,7 +1928,7 @@ irc_cmd_send_summon (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "SUMMON %s\r\n", arguments);
|
||||
server_sendf (server, "SUMMON %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1944,9 +1944,9 @@ irc_cmd_send_time (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "TIME %s\r\n", arguments);
|
||||
server_sendf (server, "TIME %s", arguments);
|
||||
else
|
||||
server_sendf (server, "TIME\r\n");
|
||||
server_sendf (server, "TIME");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2002,12 +2002,12 @@ irc_cmd_send_topic (t_irc_server *server, t_irc_channel *channel,
|
||||
if (new_topic)
|
||||
{
|
||||
if (strcmp (new_topic, "-delete") == 0)
|
||||
server_sendf (server, "TOPIC %s :\r\n", channel_name);
|
||||
server_sendf (server, "TOPIC %s :", channel_name);
|
||||
else
|
||||
server_sendf (server, "TOPIC %s :%s\r\n", channel_name, new_topic);
|
||||
server_sendf (server, "TOPIC %s :%s", channel_name, new_topic);
|
||||
}
|
||||
else
|
||||
server_sendf (server, "TOPIC %s\r\n", channel_name);
|
||||
server_sendf (server, "TOPIC %s", channel_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2024,9 +2024,9 @@ irc_cmd_send_trace (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "TRACE %s\r\n", arguments);
|
||||
server_sendf (server, "TRACE %s", arguments);
|
||||
else
|
||||
server_sendf (server, "TRACE\r\n");
|
||||
server_sendf (server, "TRACE");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2092,7 +2092,7 @@ irc_cmd_send_unban (t_irc_server *server, t_irc_channel *channel,
|
||||
while (pos2[0] == ' ')
|
||||
pos2++;
|
||||
}
|
||||
server_sendf (server, "MODE %s -b %s\r\n", pos_channel, pos);
|
||||
server_sendf (server, "MODE %s -b %s", pos_channel, pos);
|
||||
pos = pos2;
|
||||
}
|
||||
}
|
||||
@@ -2118,7 +2118,7 @@ irc_cmd_send_userhost (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "USERHOST %s\r\n", arguments);
|
||||
server_sendf (server, "USERHOST %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2134,9 +2134,9 @@ irc_cmd_send_users (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "USERS %s\r\n", arguments);
|
||||
server_sendf (server, "USERS %s", arguments);
|
||||
else
|
||||
server_sendf (server, "USERS\r\n");
|
||||
server_sendf (server, "USERS");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2156,10 +2156,10 @@ irc_cmd_send_version (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
if (BUFFER_IS_CHANNEL(buffer) &&
|
||||
nick_search (CHANNEL(buffer), arguments))
|
||||
server_sendf (server, "PRIVMSG %s :\01VERSION\01\r\n",
|
||||
server_sendf (server, "PRIVMSG %s :\01VERSION\01",
|
||||
arguments);
|
||||
else
|
||||
server_sendf (server, "VERSION %s\r\n",
|
||||
server_sendf (server, "VERSION %s",
|
||||
arguments);
|
||||
}
|
||||
else
|
||||
@@ -2168,7 +2168,7 @@ irc_cmd_send_version (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (server->buffer, _("%s, compiled on %s %s\n"),
|
||||
PACKAGE_STRING,
|
||||
__DATE__, __TIME__);
|
||||
server_sendf (server, "VERSION\r\n");
|
||||
server_sendf (server, "VERSION");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -2188,7 +2188,7 @@ irc_cmd_send_voice (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_CHANNEL(buffer))
|
||||
{
|
||||
if (argc == 0)
|
||||
server_sendf (server, "MODE %s +v %s\r\n",
|
||||
server_sendf (server, "MODE %s +v %s",
|
||||
CHANNEL(buffer)->name,
|
||||
server->nick);
|
||||
else
|
||||
@@ -2218,7 +2218,7 @@ irc_cmd_send_wallops (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "WALLOPS :%s\r\n", arguments);
|
||||
server_sendf (server, "WALLOPS :%s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2234,9 +2234,9 @@ irc_cmd_send_who (t_irc_server *server, t_irc_channel *channel,
|
||||
(void) channel;
|
||||
|
||||
if (arguments)
|
||||
server_sendf (server, "WHO %s\r\n", arguments);
|
||||
server_sendf (server, "WHO %s", arguments);
|
||||
else
|
||||
server_sendf (server, "WHO\r\n");
|
||||
server_sendf (server, "WHO");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2251,7 +2251,7 @@ irc_cmd_send_whois (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "WHOIS %s\r\n", arguments);
|
||||
server_sendf (server, "WHOIS %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2266,6 +2266,6 @@ irc_cmd_send_whowas (t_irc_server *server, t_irc_channel *channel,
|
||||
/* make gcc happy */
|
||||
(void) channel;
|
||||
|
||||
server_sendf (server, "WHOWAS %s\r\n", arguments);
|
||||
server_sendf (server, "WHOWAS %s", arguments);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+215
-86
@@ -49,6 +49,10 @@
|
||||
#include "../common/weeconfig.h"
|
||||
#include "../gui/gui.h"
|
||||
|
||||
#ifdef PLUGINS
|
||||
#include "../plugins/plugins.h"
|
||||
#endif
|
||||
|
||||
|
||||
t_irc_server *irc_servers = NULL;
|
||||
t_irc_server *last_irc_server = NULL;
|
||||
@@ -553,8 +557,80 @@ server_send (t_irc_server *server, char *buffer, int size_buf)
|
||||
return send (server->sock, buffer, size_buf, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* server_send_one_msg: send one message to IRC server
|
||||
*/
|
||||
|
||||
int
|
||||
server_send_one_msg (t_irc_server *server, char *message)
|
||||
{
|
||||
static char buffer[4096];
|
||||
char *new_msg, *ptr_msg, *pos;
|
||||
int rc;
|
||||
|
||||
rc = 1;
|
||||
|
||||
gui_printf_raw_data (server, 1, 0, message);
|
||||
#ifdef DEBUG
|
||||
gui_printf (server->buffer, "[DEBUG] Sending to server >>> %s\n", message);
|
||||
#endif
|
||||
#ifdef PLUGINS
|
||||
new_msg = plugin_modifier_exec (PLUGIN_MODIFIER_IRC_OUT,
|
||||
server->name,
|
||||
message);
|
||||
#else
|
||||
new_msg = NULL;
|
||||
#endif
|
||||
|
||||
/* no changes in new message */
|
||||
if (new_msg && (strcmp (buffer, new_msg) == 0))
|
||||
{
|
||||
free (new_msg);
|
||||
new_msg = NULL;
|
||||
}
|
||||
|
||||
/* message not dropped? */
|
||||
if (!new_msg || new_msg[0])
|
||||
{
|
||||
ptr_msg = (new_msg) ? new_msg : message;
|
||||
|
||||
while (rc && ptr_msg && ptr_msg[0])
|
||||
{
|
||||
pos = strchr (ptr_msg, '\n');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
|
||||
if (new_msg)
|
||||
gui_printf_raw_data (server, 1, 1, ptr_msg);
|
||||
|
||||
snprintf (buffer, sizeof (buffer) - 1, "%s\r\n", ptr_msg);
|
||||
if (server_send (server, buffer, strlen (buffer)) <= 0)
|
||||
{
|
||||
irc_display_prefix (server, server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer, _("%s error sending data to IRC server\n"),
|
||||
WEECHAT_ERROR);
|
||||
rc = 0;
|
||||
}
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\n';
|
||||
ptr_msg = pos + 1;
|
||||
}
|
||||
else
|
||||
ptr_msg = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
gui_printf_raw_data (server, 1, 1, _("(message dropped)"));
|
||||
if (new_msg)
|
||||
free (new_msg);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* server_sendf: send formatted data to IRC server
|
||||
* many messages may be sent, separated by '\n'
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -562,34 +638,81 @@ server_sendf (t_irc_server *server, char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
static char buffer[4096];
|
||||
int size_buf;
|
||||
char *ptr_buf, *pos;
|
||||
int rc;
|
||||
|
||||
if (!server)
|
||||
return;
|
||||
|
||||
va_start (args, fmt);
|
||||
size_buf = vsnprintf (buffer, sizeof (buffer) - 1, fmt, args);
|
||||
va_end (args);
|
||||
|
||||
if ((size_buf == 0) || (strcmp (buffer, "\r\n") == 0))
|
||||
return;
|
||||
vsnprintf (buffer, sizeof (buffer) - 1, fmt, args);
|
||||
va_end (args);
|
||||
|
||||
buffer[sizeof (buffer) - 1] = '\0';
|
||||
if ((size_buf < 0) || (size_buf > (int) (sizeof (buffer) - 1)))
|
||||
size_buf = strlen (buffer);
|
||||
|
||||
buffer[size_buf - 2] = '\0';
|
||||
gui_printf_raw_data (server, 1, buffer);
|
||||
#ifdef DEBUG
|
||||
gui_printf (server->buffer, "[DEBUG] Sending to server >>> %s\n", buffer);
|
||||
#endif
|
||||
buffer[size_buf - 2] = '\r';
|
||||
|
||||
if (server_send (server, buffer, strlen (buffer)) <= 0)
|
||||
ptr_buf = buffer;
|
||||
while (ptr_buf && ptr_buf[0])
|
||||
{
|
||||
irc_display_prefix (server, server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer, _("%s error sending data to IRC server\n"),
|
||||
WEECHAT_ERROR);
|
||||
pos = strchr (ptr_buf, '\n');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
|
||||
rc = server_send_one_msg (server, ptr_buf);
|
||||
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\n';
|
||||
ptr_buf = pos + 1;
|
||||
}
|
||||
else
|
||||
ptr_buf = NULL;
|
||||
|
||||
if (!rc)
|
||||
ptr_buf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* server_parse_message: parse IRC message and return pointer to
|
||||
* host, command and arguments (if any)
|
||||
*/
|
||||
|
||||
void
|
||||
server_parse_message (char *message, char **host, char **command, char **args)
|
||||
{
|
||||
char *pos, *pos2;
|
||||
|
||||
*host = NULL;
|
||||
*command = NULL;
|
||||
*args = NULL;
|
||||
|
||||
if (message[0] == ':')
|
||||
{
|
||||
pos = strchr (message, ' ');
|
||||
if (pos)
|
||||
{
|
||||
*host = strndup (message + 1, pos - (message + 1));
|
||||
pos++;
|
||||
}
|
||||
else
|
||||
pos = message;
|
||||
}
|
||||
else
|
||||
pos = message;
|
||||
|
||||
if (pos && pos[0])
|
||||
{
|
||||
while (pos[0] == ' ')
|
||||
pos++;
|
||||
pos2 = strchr (pos, ' ');
|
||||
if (pos2)
|
||||
{
|
||||
*command = strndup (pos, pos2 - pos);
|
||||
pos2++;
|
||||
while (pos2[0] == ' ')
|
||||
pos2++;
|
||||
if (pos2[0] == ':')
|
||||
pos2++;
|
||||
*args = strdup (pos2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -735,7 +858,7 @@ void
|
||||
server_msgq_flush ()
|
||||
{
|
||||
t_irc_message *next;
|
||||
char *entire_line, *ptr_data, *pos, *pos2;
|
||||
char *ptr_data, *new_msg, *ptr_msg, *pos;
|
||||
char *host, *command, *args;
|
||||
|
||||
while (recv_msgq)
|
||||
@@ -745,84 +868,90 @@ server_msgq_flush ()
|
||||
#ifdef DEBUG
|
||||
gui_printf (gui_current_window->buffer, "[DEBUG] %s\n", recv_msgq->data);
|
||||
#endif
|
||||
|
||||
ptr_data = recv_msgq->data;
|
||||
entire_line = strdup (ptr_data);
|
||||
|
||||
while (ptr_data[0] == ' ')
|
||||
ptr_data++;
|
||||
|
||||
if (ptr_data && ptr_data[0])
|
||||
if (ptr_data[0])
|
||||
{
|
||||
gui_printf_raw_data (recv_msgq->server, 0, ptr_data);
|
||||
gui_printf_raw_data (recv_msgq->server, 0, 0, ptr_data);
|
||||
#ifdef DEBUG
|
||||
gui_printf (NULL, "[DEBUG] data received from server: %s\n", ptr_data);
|
||||
#endif
|
||||
|
||||
host = NULL;
|
||||
command = NULL;
|
||||
args = ptr_data;
|
||||
|
||||
if (ptr_data[0] == ':')
|
||||
#ifdef PLUGINS
|
||||
new_msg = plugin_modifier_exec (PLUGIN_MODIFIER_IRC_IN,
|
||||
recv_msgq->server->name,
|
||||
ptr_data);
|
||||
#else
|
||||
new_msg = NULL;
|
||||
#endif
|
||||
/* no changes in new message */
|
||||
if (new_msg && (strcmp (ptr_data, new_msg) == 0))
|
||||
{
|
||||
pos = strchr (ptr_data, ' ');
|
||||
if (pos)
|
||||
free (new_msg);
|
||||
new_msg = NULL;
|
||||
}
|
||||
|
||||
/* message not dropped? */
|
||||
if (!new_msg || new_msg[0])
|
||||
{
|
||||
/* use new message (returned by plugin) */
|
||||
ptr_msg = (new_msg) ? new_msg : ptr_data;
|
||||
|
||||
while (ptr_msg && ptr_msg[0])
|
||||
{
|
||||
pos[0] = '\0';
|
||||
host = ptr_data + 1;
|
||||
pos++;
|
||||
pos = strchr (ptr_msg, '\n');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
|
||||
if (new_msg)
|
||||
gui_printf_raw_data (recv_msgq->server, 0, 1, ptr_msg);
|
||||
|
||||
server_parse_message (ptr_msg, &host, &command, &args);
|
||||
|
||||
switch (irc_recv_command (recv_msgq->server, ptr_msg, host, command, args))
|
||||
{
|
||||
case -1:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s Command \"%s\" failed!\n"), WEECHAT_ERROR, command);
|
||||
break;
|
||||
case -2:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s No command to execute!\n"), WEECHAT_ERROR);
|
||||
break;
|
||||
case -3:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s Unknown command: cmd=\"%s\", host=\"%s\", args=\"%s\"\n"),
|
||||
WEECHAT_WARNING, command, host, args);
|
||||
break;
|
||||
}
|
||||
if (host)
|
||||
free (host);
|
||||
if (command)
|
||||
free (command);
|
||||
if (args)
|
||||
free (args);
|
||||
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\n';
|
||||
ptr_msg = pos + 1;
|
||||
}
|
||||
else
|
||||
ptr_msg = NULL;
|
||||
}
|
||||
else
|
||||
pos = ptr_data;
|
||||
}
|
||||
else
|
||||
pos = ptr_data;
|
||||
|
||||
if (pos && pos[0])
|
||||
{
|
||||
while (pos[0] == ' ')
|
||||
pos++;
|
||||
pos2 = strchr (pos, ' ');
|
||||
if (pos2)
|
||||
{
|
||||
pos2[0] = '\0';
|
||||
command = strdup (pos);
|
||||
pos2++;
|
||||
while (pos2[0] == ' ')
|
||||
pos2++;
|
||||
args = (pos2[0] == ':') ? pos2 + 1 : pos2;
|
||||
}
|
||||
}
|
||||
|
||||
switch (irc_recv_command (recv_msgq->server, entire_line, host,
|
||||
command, args))
|
||||
{
|
||||
case -1:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s Command \"%s\" failed!\n"), WEECHAT_ERROR, command);
|
||||
break;
|
||||
case -2:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s No command to execute!\n"), WEECHAT_ERROR);
|
||||
break;
|
||||
case -3:
|
||||
irc_display_prefix (recv_msgq->server,
|
||||
recv_msgq->server->buffer, PREFIX_ERROR);
|
||||
gui_printf (recv_msgq->server->buffer,
|
||||
_("%s Unknown command: cmd=\"%s\", host=\"%s\", args=\"%s\"\n"),
|
||||
WEECHAT_WARNING, command, host, args);
|
||||
break;
|
||||
}
|
||||
|
||||
if (command)
|
||||
free (command);
|
||||
gui_printf_raw_data (recv_msgq->server, 0, 1, _("(message dropped)"));
|
||||
if (new_msg)
|
||||
free (new_msg);
|
||||
}
|
||||
|
||||
free (entire_line);
|
||||
free (recv_msgq->data);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
#define PREFIX_QUIT "<--"
|
||||
#define PREFIX_ERROR "=!="
|
||||
#define PREFIX_PLUGIN "-P-"
|
||||
#define PREFIX_RECV_MOD "==>"
|
||||
#define PREFIX_SEND_MOD "<=="
|
||||
|
||||
#define DEFAULT_IRC_PORT 6667
|
||||
|
||||
@@ -345,6 +347,7 @@ extern char *server_get_charset_decode_utf (t_irc_server *);
|
||||
extern char *server_get_charset_encode (t_irc_server *);
|
||||
extern int server_send (t_irc_server *, char *, int);
|
||||
extern void server_sendf (t_irc_server *, char *, ...);
|
||||
extern void server_parse_message (char *, char **, char **, char **);
|
||||
extern void server_recv (t_irc_server *);
|
||||
extern void server_child_read (t_irc_server *);
|
||||
extern int server_connect (t_irc_server *);
|
||||
|
||||
Reference in New Issue
Block a user