diff options
-rw-r--r-- | utils/skinupdater/skinupdater.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/utils/skinupdater/skinupdater.c b/utils/skinupdater/skinupdater.c index 7e3d14e237..537c53ffbd 100644 --- a/utils/skinupdater/skinupdater.c +++ b/utils/skinupdater/skinupdater.c @@ -36,8 +36,6 @@ bool is_mono_display = false; bool use_new_vp_tags = true; - - /* dump "count" args to output replacing '|' with ',' except after the last count. * return the amount of chars read. (start+return will be after the last | ) */ @@ -56,6 +54,10 @@ int dump_arg(FILE* out, const char* start, int count, bool close) } count--; } else { + if (find_escape_character(start[l])) + { + PUTCH(out, '%'); + } PUTCH(out, start[l]); } l++; @@ -264,6 +266,9 @@ top: case '>': case ';': case '#': + case ')': + case '(': + case ',': PUTCH(out, *in++); goto top; break; @@ -291,6 +296,14 @@ top: level--; PUTCH(out, *in++); } + else if (*in == '|') + { + if (level == 0) + { + PUTCH(out, '%'); + } + PUTCH(out, *in++); + } else if (*in == '#') { while (*in && *in != '\n') @@ -300,6 +313,10 @@ top: } else { + if (find_escape_character(*in)) + { + PUTCH(out, '%'); + } PUTCH(out, *in++); } } |