From 4e402f5dcf7daa00849db3713f218336c8ec0ff6 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 16 Jun 2017 20:55:23 +0200 Subject: [PATCH] channels: icons - try to replace always the bad characters (begin '.', global '/','\'), fixes #3807 --- src/channels.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/channels.c b/src/channels.c index b80ce5ede..c702f1b49 100644 --- a/src/channels.c +++ b/src/channels.c @@ -850,8 +850,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'; @@ -886,16 +885,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); -- 2.47.2