diff options
Diffstat (limited to 'src/vdr-plugin/common.c')
-rw-r--r-- | src/vdr-plugin/common.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/vdr-plugin/common.c b/src/vdr-plugin/common.c index 0731da9..12a5204 100644 --- a/src/vdr-plugin/common.c +++ b/src/vdr-plugin/common.c @@ -180,3 +180,26 @@ char *safeFilename(char *filename) { return filename; } + +cString shellEscape(const char *s) { + char *buffer = (char *)malloc((4*strlen(s)+3)*sizeof(char)); + const char *src = s; + char *dst = buffer; + + *dst++ = '\''; + while (*src) { + if (*src == '\'') { + *dst++ = '\''; + *dst++ = '\\'; + *dst++ = '\''; + *dst++ = '\''; + src++; + } else { + *dst++ = *src++; + } + } + *dst++ = '\''; + *dst = '\0'; + + return cString(buffer, true); +} |