From: Jaroslav Kysela Date: Fri, 16 Jun 2017 18:55:23 +0000 (+0200) Subject: channels: icons - try to replace always the bad characters (begin '.', global '/... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a3cb59a8d15af445803ef68489638cd4549c7e2;p=thirdparty%2Ftvheadend.git channels: icons - try to replace always the bad characters (begin '.', global '/','\'), fixes #3807 --- diff --git a/src/channels.c b/src/channels.c index 264a97357..ccc6b4a2b 100644 --- a/src/channels.c +++ b/src/channels.c @@ -862,8 +862,7 @@ channel_get_icon ( channel_t *ch ) s = sname; while (s && *s) { c = *s; - if (c <= ' ' || c > 122 || - strchr("/:\\<>|*?'\"", c) != NULL) + if (c > 122 || strchr("/:\\<>|*?'\"", c) != NULL) *(char *)s = '_'; else if (config.chicon_scheme == CHICON_LOWERCASE && c >= 'A' && c <= 'Z') *(char *)s = c - 'A' + 'a'; @@ -898,16 +897,25 @@ channel_get_icon ( channel_t *ch ) if (send) { *(char *)send = '\0'; - send += 2; + send = url_encode(send + 2); } if (sname) { - char *aname = url_encode(sname); + char *aname; + + for (s = sname; *s == '.'; s++) + *(char *)s = '_'; + + for (s = sname; *s; s++) + if (*s == '/' || *s == '\\') + *(char *)s = '-'; + else if (*s < ' ') + *(char *)s = '_'; + + aname = url_encode(sname); free((char *)sname); sname = aname; } - if (send) - send = url_encode(send); snprintf(buf, sizeof(buf), "%s%s%s", chi, sname ?: "", send ?: ""); free((char *)sname);