From: Jaroslav Kysela Date: Fri, 5 Oct 2018 07:53:50 +0000 (+0200) Subject: iptv: fix channel icon handling, fixes #5240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2489f51f02df3fa7d4645f28783bfd3e8cf17383;p=thirdparty%2Ftvheadend.git iptv: fix channel icon handling, fixes #5240 --- diff --git a/src/channels.c b/src/channels.c index 835fbbe8f..338193889 100644 --- a/src/channels.c +++ b/src/channels.c @@ -1190,7 +1190,7 @@ int channel_set_icon ( channel_t *ch, const char *icon ) { int save = 0; if (!ch || !icon) return 0; - if (!ch->ch_icon || strcmp(ch->ch_icon, icon) ) { + if (!ch->ch_icon || strcmp(ch->ch_icon, icon)) { if (ch->ch_icon) free(ch->ch_icon); ch->ch_icon = strdup(icon); save = 1; diff --git a/src/input/mpegts/iptv/iptv_service.c b/src/input/mpegts/iptv/iptv_service.c index bd90c9375..2292ca178 100644 --- a/src/input/mpegts/iptv/iptv_service.c +++ b/src/input/mpegts/iptv/iptv_service.c @@ -19,6 +19,7 @@ #include "iptv_private.h" #include "settings.h" +#include "config.h" extern const idclass_t mpegts_service_class; @@ -70,15 +71,26 @@ iptv_service_channel_icon ( service_t *s ) iptv_mux_t *im = (iptv_mux_t *)is->s_dvb_mux; iptv_network_t *in = (iptv_network_t *)im->mm_network; const char *ic = im->mm_iptv_icon; + const char *dir = NULL; if (ic && ic[0]) { if (strncmp(ic, "http://", 7) == 0 || - strncmp(ic, "https://", 8) == 0) + strncmp(ic, "https://", 8) == 0 || + strncmp(ic, "file:///", 8) == 0) return ic; - if (strncmp(ic, "file:///", 8) == 0) - return ic + 7; - if (strncmp(ic, "file://", 7) == 0) + if (strncmp(ic, "file://", 7) == 0) { + const char *chicon = config.chicon_path; ic += 7; - if (in && in->in_icon_url && in->in_icon_url[0]) { + if (chicon && chicon[0] >= ' ' && chicon[0] <= 122) { + dir = chicon; + } else { + dir = "file:///"; + } + } else { + if (in && in->in_icon_url && in->in_icon_url[0]) + dir = in->in_icon_url; + } + if (dir && ic) { + while (ic[0] == '/') ic++; snprintf(prop_sbuf, PROP_SBUF_LEN, "%s/%s", in->in_icon_url, ic); return prop_sbuf; }