1
0
mirror of https://github.com/irssi/irssi.git synced 2024-11-03 04:27:19 -05:00

Add escape_string_escape function for expand_escapes

To avoid expanding, tab completion escapes the completion list. But the
escape_string function escapes too much for the expand_escapes code. Add
a function that only escapes the backslashes.
This commit is contained in:
ailin-nemui 2018-11-25 13:41:46 +01:00
parent 257cb2f5f9
commit 7e6e3cd503
3 changed files with 20 additions and 1 deletions

View File

@ -757,6 +757,22 @@ char *escape_string(const char *str)
return ret;
}
/* Escape all '\' chars with '\' */
char *escape_string_escape(const char *str)
{
char *ret, *p;
p = ret = g_malloc(strlen(str)*2+1);
while (*str != '\0') {
if (*str == '\\')
*p++ = '\\';
*p++ = *str++;
}
*p = '\0';
return ret;
}
int nearest_power(int num)
{
int n = 1;

View File

@ -93,6 +93,9 @@ char *ascii_strdown(char *str);
/* Escape all '"', "'" and '\' chars with '\' */
char *escape_string(const char *str);
/* Escape all '\' chars with '\' */
char *escape_string_escape(const char *str);
/* convert all low-ascii (<32) to ^<A..> combinations */
char *show_lowascii(const char *str);

View File

@ -256,7 +256,7 @@ char *word_complete(WINDOW_REC *window, const char *line, int *pos, int erase, i
/* escape if the word doesn't begin with '/' and expand_escapes are turned on */
data = strchr(cmdchars, *line) == NULL && expand_escapes ?
escape_string(complist->data) : g_strdup(complist->data);
escape_string_escape(complist->data) : g_strdup(complist->data);
/* word completed */
*pos = startpos + strlen(data);