From 027acffb4208d7e6ba8e229cbf6c3dae6f5dabaf Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 21 Feb 2017 15:54:31 +0100 Subject: Handle file names with quotes. Let's repurpose escape_string and make it more flexible by letting us choose the characters to escape. --- src/core/misc.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/core/misc.c') diff --git a/src/core/misc.c b/src/core/misc.c index 1cfa15b6..03fcce59 100644 --- a/src/core/misc.c +++ b/src/core/misc.c @@ -724,18 +724,20 @@ int expand_escape(const char **data) } } -/* Escape all '"', "'" and '\' chars with '\' */ -char *escape_string(const char *str) +/* Escape all the characters in `what' with a backslash */ +char *escape_string(const char *str, const char *what) { - char *ret, *p; + const char *p; + char *ret; - p = ret = g_malloc(strlen(str)*2+1); - while (*str != '\0') { - if (*str == '"' || *str == '\'' || *str == '\\') - *p++ = '\\'; - *p++ = *str++; + ret = g_malloc(strlen(str) * 2 + 1); + for (p = str; *p != '\0'; p++, ret++) { + if (strchr(what, *p) != NULL) { + *ret++ = '\\'; + } + *ret = *p; } - *p = '\0'; + *ret = '\0'; return ret; } -- cgit v1.2.3