1
0
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:
Trygve Aaberge
2023-06-03 15:20:05 +02:00
committed by Sébastien Helleu
parent 682fc40708
commit 43dee8ce54
+20 -2
View File
@@ -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);
}
/*