mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 14:14:48 +02:00
fifo: allow using escape characters
This allows you to use escape characters if you start the fifo command with \ instead of *, in the same way as the escape_commands option in the relay protocol. This allows you to send commands consisting of multiple lines by using \n if the buffer has input_multiline set.
This commit is contained in:
committed by
Sébastien Helleu
parent
682fc40708
commit
43dee8ce54
+20
-2
@@ -197,7 +197,8 @@ fifo_remove ()
|
||||
void
|
||||
fifo_exec (const char *text)
|
||||
{
|
||||
char *text2, *pos_msg;
|
||||
char *text2, *pos_msg, *command_unescaped;
|
||||
int escaped;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
|
||||
text2 = strdup (text);
|
||||
@@ -205,20 +206,26 @@ fifo_exec (const char *text)
|
||||
return;
|
||||
|
||||
pos_msg = NULL;
|
||||
command_unescaped = NULL;
|
||||
escaped = 0;
|
||||
ptr_buffer = NULL;
|
||||
|
||||
/*
|
||||
* look for plugin + buffer name at beginning of text
|
||||
* text may be: "plugin.buffer *text" or "*text"
|
||||
*/
|
||||
if (text2[0] == '*')
|
||||
if (text2[0] == '*' || text2[0] == '\\')
|
||||
{
|
||||
escaped = text2[0] == '\\';
|
||||
pos_msg = text2 + 1;
|
||||
ptr_buffer = weechat_current_buffer ();
|
||||
}
|
||||
else
|
||||
{
|
||||
pos_msg = strstr (text2, " *");
|
||||
if (!pos_msg)
|
||||
pos_msg = strstr (text2, " \\");
|
||||
|
||||
if (!pos_msg)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
@@ -227,6 +234,8 @@ fifo_exec (const char *text)
|
||||
free (text2);
|
||||
return;
|
||||
}
|
||||
|
||||
escaped = pos_msg[1] == '\\';
|
||||
pos_msg[0] = '\0';
|
||||
pos_msg += 2;
|
||||
ptr_buffer = weechat_buffer_search ("==", text2);
|
||||
@@ -241,9 +250,18 @@ fifo_exec (const char *text)
|
||||
}
|
||||
}
|
||||
|
||||
if (escaped)
|
||||
{
|
||||
command_unescaped = weechat_string_convert_escaped_chars (pos_msg);
|
||||
if (command_unescaped)
|
||||
pos_msg = command_unescaped;
|
||||
}
|
||||
|
||||
weechat_command (ptr_buffer, pos_msg);
|
||||
|
||||
free (text2);
|
||||
if (command_unescaped)
|
||||
free(command_unescaped);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user