diff options
Diffstat (limited to 'src/core/misc.c')
-rw-r--r-- | src/core/misc.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/core/misc.c b/src/core/misc.c index 03fcce59..1cfa15b6 100644 --- a/src/core/misc.c +++ b/src/core/misc.c @@ -724,20 +724,18 @@ int expand_escape(const char **data) } } -/* Escape all the characters in `what' with a backslash */ -char *escape_string(const char *str, const char *what) +/* Escape all '"', "'" and '\' chars with '\' */ +char *escape_string(const char *str) { - const char *p; - char *ret; + char *ret, *p; - ret = g_malloc(strlen(str) * 2 + 1); - for (p = str; *p != '\0'; p++, ret++) { - if (strchr(what, *p) != NULL) { - *ret++ = '\\'; - } - *ret = *p; + p = ret = g_malloc(strlen(str)*2+1); + while (*str != '\0') { + if (*str == '"' || *str == '\'' || *str == '\\') + *p++ = '\\'; + *p++ = *str++; } - *ret = '\0'; + *p = '\0'; return ret; } |