git: cec715ea83a4 - main - multimedia/tvheadend: Update to 4.3.0 (from 2026.07.09)
Bernhard Froehlich <[email protected]> Sat, 01 Aug 2026 10:55:20 +0000
| Newsgroups | gmane.os.freebsd.devel.cvs.ports |
|---|---|
| Message-ID | <[email protected]> |
The branch main has been updated by decke: URL: https://cgit.FreeBSD.org/ports/commit/?id=cec715ea83a4c3f4e91ac8f77f4283991146b3ad commit cec715ea83a4c3f4e91ac8f77f4283991146b3ad Author: Bernhard Froehlich <[email protected]> AuthorDate: 2026-08-01 10:49:33 +0000 Commit: Bernhard Froehlich <[email protected]> CommitDate: 2026-08-01 10:49:33 +0000 multimedia/tvheadend: Update to 4.3.0 (from 2026.07.09) Tested by: Heiko Kirschke --- multimedia/tvheadend/Makefile | 21 +- multimedia/tvheadend/distinfo | 6 +- multimedia/tvheadend/files/patch-Makefile | 29 -- multimedia/tvheadend/files/patch-configure | 33 ++ multimedia/tvheadend/files/patch-fno-common.patch | 52 --- ...atch-src_input_mpegts_tvhdhomerun_tvhdhomerun.c | 26 -- multimedia/tvheadend/files/patch-src_main.c | 62 --- ...patch-src_transcoding_codec_codecs_libs_vaapi.c | 39 ++ multimedia/tvheadend/files/patch-src_tvheadend.h | 11 + .../files/patch-src_webui_static_app_epg.js | 44 -- multimedia/tvheadend/files/patch-src_webui_webui.c | 80 ---- multimedia/tvheadend/files/patch-src_wrappers.c | 8 +- multimedia/tvheadend/pkg-plist | 455 ++++++++++++++++++--- 13 files changed, 501 insertions(+), 365 deletions(-) diff --git a/multimedia/tvheadend/Makefile b/multimedia/tvheadend/Makefile index dcc03f613128..f50d117e82c1 100644 --- a/multimedia/tvheadend/Makefile +++ b/multimedia/tvheadend/Makefile @@ -1,7 +1,6 @@ PORTNAME= tvheadend -PORTVERSION= 4.2.8 +PORTVERSION= 4.3.0.20260709 DISTVERSIONPREFIX= v -PORTREVISION= 7 CATEGORIES= multimedia MAINTAINER= [email protected] @@ -14,24 +13,28 @@ LICENSE_FILE= ${WRKSRC}/LICENSE.md BUILD_DEPENDS= bash:shells/bash \ cmake:devel/cmake-core \ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat -LIB_DEPENDS= libcurl.so:ftp/curl \ +LIB_DEPENDS= libdvbcsa.so:multimedia/libdvbcsa \ + libcurl.so:ftp/curl \ liburiparser.so:net/uriparser \ libunwind.so:devel/libunwind RUN_DEPENDS= dtv-scan-tables>=0:multimedia/dtv-scan-tables USES= compiler:c++11-lang gettext gmake pkgconfig python shebangfix ssl USE_GITHUB= yes +GH_TAGNAME= 8ddfe27 GNU_CONFIGURE= yes -GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share MAKE_JOBS_UNSAFE= yes USE_RC_SUBR= ${PORTNAME} SHEBANG_FILES= ${WRKSRC}/Autobuild.sh \ ${WRKSRC}/configure \ + ${WRKSRC}/lib/py/tvh/tv_meta_tmdb.py \ + ${WRKSRC}/lib/py/tvh/tv_meta_tvdb.py \ ${WRKSRC}/support/apt-update \ ${WRKSRC}/support/configure.inc \ ${WRKSRC}/support/getmuxlist \ + ${WRKSRC}/support/tvhmeta \ ${WRKSRC}/support/version TVHUSER?= tvheadend @@ -48,15 +51,11 @@ CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib --disable-hdhomerun_static \ CFLAGS+= -I${LOCALBASE}/include -Wno-conversion -Wno-int-to-pointer-cast LDFLAGS+= -L${LOCALBASE}/lib -lexecinfo -lssl -lcrypto -lz -OPTIONS_DEFINE= AVAHI DVBCSA DVBEN50221 HDHOMERUN INOTIFY TRANSCODING XMLTV -OPTIONS_DEFAULT=DVBCSA HDHOMERUN INOTIFY +OPTIONS_DEFINE= AVAHI DVBEN50221 HDHOMERUN INOTIFY TRANSCODING XMLTV +OPTIONS_DEFAULT=HDHOMERUN INOTIFY AVAHI_LIB_DEPENDS= libavahi-client.so:net/avahi-app -DVBCSA_DESC= Replace internal ffdecsa with dvbcsa -DVBCSA_LIB_DEPENDS= libdvbcsa.so:multimedia/libdvbcsa -DVBCSA_CONFIGURE_ENABLE= dvbcsa - DVBEN50221_DESC= Hardware CAM support DVBEN50221_LIB_DEPENDS= libdvben50221.so:multimedia/dvb-apps DVBEN50221_CONFIGURE_ENABLE= dvben50221 @@ -80,8 +79,6 @@ XMLTV_RUN_DEPENDS= p5-xmltv>=0:textproc/p5-xmltv .include <bsd.port.pre.mk> post-patch: - @${REINPLACE_CMD} 's|-ldl||' \ - ${WRKSRC}/Makefile @${REINPLACE_CMD} 's|-Werror||' \ ${WRKSRC}/Makefile diff --git a/multimedia/tvheadend/distinfo b/multimedia/tvheadend/distinfo index 55c718a05633..f2c69196d435 100644 --- a/multimedia/tvheadend/distinfo +++ b/multimedia/tvheadend/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1547368627 -SHA256 (tvheadend-tvheadend-v4.2.8_GH0.tar.gz) = 1aef889373d5fad2a7bd2f139156d4d5e34a64b6d38b87b868a2df415f01f7ad -SIZE (tvheadend-tvheadend-v4.2.8_GH0.tar.gz) = 21875281 +TIMESTAMP = 1783628855 +SHA256 (tvheadend-tvheadend-v4.3.0.20260709-8ddfe27_GH0.tar.gz) = 1f16256ee27c2fde2c82a10fdd631a297eec25e52812082018607dee59b31c3c +SIZE (tvheadend-tvheadend-v4.3.0.20260709-8ddfe27_GH0.tar.gz) = 24203353 diff --git a/multimedia/tvheadend/files/patch-Makefile b/multimedia/tvheadend/files/patch-Makefile deleted file mode 100644 index cb7da85f939d..000000000000 --- a/multimedia/tvheadend/files/patch-Makefile +++ /dev/null @@ -1,29 +0,0 @@ -Prepend local include paths in CFLAGS to avoid conflict with system wide includes - -CFLAGS could contain system wide include paths which might conflict -with our filenames. So make sure that our local directories are first -in the search order. - -Example with conflicting profile.h from kerberos: - -tvheadend-4.2.5/src/dvr/dvr.h:27: -/usr/local/include/profile.h:24:28: error: typedef redefinition with -different types ('struct _profile_t *' vs 'struct profile') -typedef struct _profile_t *profile_t; - ^ -tvheadend-4.2.5/src/profile.h:147:3: -note: previous definition is here -} profile_t; - -Reported by: Frank Razenberg <[email protected]> ---- Makefile.bak 2018-02-22 16:07:14.367738000 +0000 -+++ Makefile 2018-02-22 16:08:14.628857000 +0000 -@@ -52,7 +52,7 @@ - CFLAGS += -Wmissing-prototypes - CFLAGS += -fms-extensions -funsigned-char -fno-strict-aliasing - CFLAGS += -D_FILE_OFFSET_BITS=64 --CFLAGS += -I${BUILDDIR} -I${ROOTDIR}/src -I${ROOTDIR} -+CFLAGS := -I${BUILDDIR} -I${ROOTDIR}/src -I${ROOTDIR} ${CFLAGS} - ifeq ($(CONFIG_ANDROID),yes) - LDFLAGS += -lm - else diff --git a/multimedia/tvheadend/files/patch-configure b/multimedia/tvheadend/files/patch-configure new file mode 100644 index 000000000000..c42401627474 --- /dev/null +++ b/multimedia/tvheadend/files/patch-configure @@ -0,0 +1,33 @@ +Fix build on FreeBSD/i386 where time_t is int + +--- configure.orig 2024-05-26 20:34:22 UTC ++++ configure +@@ -280,6 +280,19 @@ int test(void) + } + ' + ++check_cc_snippet time_d ' ++#define _FILE_OFFSET_BITS 64 ++#define _TIME_BITS 64 ++#include <stdio.h> ++#include <time.h> ++#define TEST test ++int test(void) ++{ ++ printf("%d", (time_t)1); ++ return 0; ++} ++' '-Wformat -Werror=format' ++ + check_cc_snippet time_ld ' + #define _FILE_OFFSET_BITS 64 + #define _TIME_BITS 64 +@@ -310,6 +323,8 @@ elif enabled time_ld; then + printf " ^ using time_t format 'lld'\n" + elif enabled time_ld; then + printf " ^ using time_t format 'ld'\n" ++elif enabled time_d; then ++ printf " ^ using time_t format 'd'\n" + else + die 'Unable to determine size of "time_t"' + fi diff --git a/multimedia/tvheadend/files/patch-fno-common.patch b/multimedia/tvheadend/files/patch-fno-common.patch deleted file mode 100644 index ed54a4cba142..000000000000 --- a/multimedia/tvheadend/files/patch-fno-common.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 8a2942a361e95ccdbd30c1edc7627df3862cdbbe Mon Sep 17 00:00:00 2001 -From: James Le Cuirot <[email protected]> -Date: Fri, 15 May 2020 17:45:30 +0100 -Subject: [PATCH] Fix building with -fno-common (default from GCC 10) - ---- - src/input.h | 4 ++-- - src/input/mpegts.c | 2 ++ - src/input/mpegts.h | 2 +- - 3 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/src/input.h b/src/input.h -index a9c96df048..3dce355c6a 100644 ---- src/input.h -+++ src/input.h -@@ -133,8 +133,8 @@ void tvh_hardware_delete ( tvh_hardware_t *th ); - extern const idclass_t tvh_input_class; - extern const idclass_t tvh_input_instance_class; - --tvh_input_list_t tvh_inputs; --tvh_hardware_list_t tvh_hardware; -+extern tvh_input_list_t tvh_inputs; -+extern tvh_hardware_list_t tvh_hardware; - - #define TVH_INPUT_FOREACH(x) LIST_FOREACH(x, &tvh_inputs, ti_link) - #define TVH_HARDWARE_FOREACH(x) LIST_FOREACH(x, &tvh_hardware, th_link) -diff --git a/src/input/mpegts.c b/src/input/mpegts.c -index e02d491f19..fca4f34296 100644 ---- src/input/mpegts.c -+++ src/input/mpegts.c -@@ -20,6 +20,8 @@ - #include "mpegts/fastscan.h" - #include "memoryinfo.h" - -+struct mpegts_listeners mpegts_listeners; -+ - extern memoryinfo_t mpegts_input_queue_memoryinfo; - extern memoryinfo_t mpegts_input_table_memoryinfo; - -diff --git a/src/input/mpegts.h b/src/input/mpegts.h -index 9dda3bacaa..9c4c57b73b 100644 ---- src/input/mpegts.h -+++ src/input/mpegts.h -@@ -1149,7 +1149,7 @@ typedef struct mpegts_listener - void (*ml_mux_delete) (mpegts_mux_t *mm, void *p); - } mpegts_listener_t; - --LIST_HEAD(,mpegts_listener) mpegts_listeners; -+extern LIST_HEAD(mpegts_listeners, mpegts_listener) mpegts_listeners; - - #define mpegts_add_listener(ml)\ - LIST_INSERT_HEAD(&mpegts_listeners, ml, ml_link) diff --git a/multimedia/tvheadend/files/patch-src_input_mpegts_tvhdhomerun_tvhdhomerun.c b/multimedia/tvheadend/files/patch-src_input_mpegts_tvhdhomerun_tvhdhomerun.c deleted file mode 100644 index b77ab4bde6e3..000000000000 --- a/multimedia/tvheadend/files/patch-src_input_mpegts_tvhdhomerun_tvhdhomerun.c +++ /dev/null @@ -1,26 +0,0 @@ -From 6f494ce84b77de092447dbb793eca8cc7b5296ee Mon Sep 17 00:00:00 2001 -From: Michael Marley <[email protected]> -Date: Wed, 26 Jun 2019 19:35:50 -0400 -Subject: [PATCH] Fix compilation with libhdhomerun 20190621 - -They renamed the symbol that was used to determine whether the -"hdhomerun_discover_find_devices_custom" needed to be aliased, -causing an FTBFS. Instead, recognize both the old and new symbols. ---- - src/input/mpegts/tvhdhomerun/tvhdhomerun.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/input/mpegts/tvhdhomerun/tvhdhomerun.c b/src/input/mpegts/tvhdhomerun/tvhdhomerun.c -index 58dec51ab3..18068faf5d 100644 ---- src/input/mpegts/tvhdhomerun/tvhdhomerun.c -+++ src/input/mpegts/tvhdhomerun/tvhdhomerun.c -@@ -32,7 +32,8 @@ - - #include "config.h" - --#ifdef HDHOMERUN_TAG_DEVICE_AUTH_BIN -+#if defined(HDHOMERUN_TAG_DEVICE_AUTH_BIN) \ -+ || defined(HDHOMERUN_TAG_DEVICE_AUTH_BIN_DEPRECATED) - #define hdhomerun_discover_find_devices_custom \ - hdhomerun_discover_find_devices_custom_v2 - #endif diff --git a/multimedia/tvheadend/files/patch-src_main.c b/multimedia/tvheadend/files/patch-src_main.c deleted file mode 100644 index 48f8d7644e6b..000000000000 --- a/multimedia/tvheadend/files/patch-src_main.c +++ /dev/null @@ -1,62 +0,0 @@ -Avoid build error with recent clang on FreeBSD 12-CURRENT. - -CC src/main.o -In file included from src/main.c:51: -In file included from -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27: -/usr/local/include/profile.h:24:28: error: typedef redefinition with -different types ('struct _profile_t *' vs - 'struct profile') -typedef struct _profile_t *profile_t; - ^ -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:148:3: -note: previous definition is here -} profile_t; - ^ -In file included from src/main.c:51: -In file included from -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27: -/usr/local/include/profile.h:45:20: error: conflicting types for -'profile_init' -long KRB5_CALLCONV profile_init - ^ -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:197:6: -note: previous declaration is here -void profile_init(void); - ^ -In file included from src/main.c:51: -In file included from -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/dvr/dvr.h:27: -/usr/local/include/profile.h:71:20: error: conflicting types for -'profile_release' -void KRB5_CALLCONV profile_release - ^ -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/src/profile.h:159:20: -note: previous definition is here -static inline void profile_release( profile_t *pro ) - ^ -3 errors generated. -gmake[2]: *** [Makefile:631: -/usr/ports/multimedia/tvheadend/work/tvheadend-4.2.2/build.freebsd/src/main.o] -Error 1 -gmake[2]: Leaving directory - -Reported by: Rainer Hurling <[email protected]> ---- src/main.c.orig 2017-07-01 07:22:23.000000000 +0000 -+++ src/main.c 2017-08-23 15:27:26.427162000 +0000 -@@ -48,6 +48,7 @@ - #include "subscriptions.h" - #include "service_mapper.h" - #include "descrambler.h" -+#include "profile.h" - #include "dvr/dvr.h" - #include "htsp_server.h" - #include "satip/server.h" -@@ -68,7 +69,6 @@ - #include "intlconv.h" - #include "dbus.h" - #include "libav.h" --#include "profile.h" - #include "bouquet.h" - #include "tvhtime.h" - #include "packet.h" diff --git a/multimedia/tvheadend/files/patch-src_transcoding_codec_codecs_libs_vaapi.c b/multimedia/tvheadend/files/patch-src_transcoding_codec_codecs_libs_vaapi.c new file mode 100644 index 000000000000..83631656e740 --- /dev/null +++ b/multimedia/tvheadend/files/patch-src_transcoding_codec_codecs_libs_vaapi.c @@ -0,0 +1,39 @@ +Fix compile error with newer clang + +src/transcoding/codec/codecs/libs/vaapi.c:819:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 819 | .def.dyn_i= tvh_codec_profile_vaapi_h264_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:829:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 829 | .def.dyn_i= tvh_codec_profile_vaapi_h264lp_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1132:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1132 | .def.dyn_i= tvh_codec_profile_vaapi_hevc_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1142:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1142 | .def.dyn_i= tvh_codec_profile_vaapi_hevclp_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1439:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1439 | .def.dyn_i= tvh_codec_profile_vaapi_vp8_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1449:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1449 | .def.dyn_i= tvh_codec_profile_vaapi_vp8lp_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1766:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1766 | .def.dyn_i= tvh_codec_profile_vaapi_vp9_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/transcoding/codec/codecs/libs/vaapi.c:1776:29: error: incompatible function pointer types initializing 'int (*)(void)' with an expression of type 'const int (void)' [-Wincompatible-function-pointer-types] + 1776 | .def.dyn_i= tvh_codec_profile_vaapi_vp9lp_ui, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +8 errors generated. + +--- src/transcoding/codec/codecs/libs/vaapi.c.orig 2026-05-19 20:37:17 UTC ++++ src/transcoding/codec/codecs/libs/vaapi.c +@@ -275,7 +275,7 @@ tvh_codec_profile_vaapi_device_list(void *obj, const c + } + + #define TVH_CODEC_PROFILE_VAAPI_CODEC_UI(codec_ui, codec_name) \ +- static const int tvh_codec_profile_vaapi_##codec_ui##_ui(void) \ ++ static int tvh_codec_profile_vaapi_##codec_ui##_ui(void) \ + { \ + return TVH_CODEC_PROFILE_VAAPI_UI(codec_name); \ + } diff --git a/multimedia/tvheadend/files/patch-src_tvheadend.h b/multimedia/tvheadend/files/patch-src_tvheadend.h new file mode 100644 index 000000000000..1802402eeafc --- /dev/null +++ b/multimedia/tvheadend/files/patch-src_tvheadend.h @@ -0,0 +1,11 @@ +--- src/tvheadend.h.orig 2024-04-26 17:57:22 UTC ++++ src/tvheadend.h +@@ -340,6 +340,8 @@ void tvh_qsort_r(void *base, size_t nmemb, size_t size + # define PRItime_t "lld" + #elif CONFIG_TIME_LD == 1 + # define PRItime_t "ld" ++#elif CONFIG_TIME_D == 1 ++# define PRItime_t "d" + #else + # error "CONFIG_TIME not properly defined" + #endif diff --git a/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js b/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js deleted file mode 100644 index ce3f35c23723..000000000000 --- a/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js +++ /dev/null @@ -1,44 +0,0 @@ -From 5363fb5cefbf8f9f0f4d38f81252ce93942665e4 Mon Sep 17 00:00:00 2001 -From: Jongsung Kim <[email protected]> -Date: Tue, 20 Nov 2018 17:36:10 +0900 -Subject: [PATCH 2/2] webui: epg: fix compatibility issue for FreeBSD - -The EPG screen serviced by FreeBSD port of tvheadend has two abnormal control -behaviors: - - Reset All button makes the list empty - Typing and then deleting any search string also makes the list empty. - -This patch fixes the symptoms above. - -Patch tested with the latest FreeBSD port of tvheadend-4.2.7. - -Changes since v1: -- call reset only if required ---- - src/webui/static/app/epg.js | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/webui/static/app/epg.js b/src/webui/static/app/epg.js -index 2c8b914b2..7337177ef 100644 ---- src/webui/static/app/epg.js -+++ src/webui/static/app/epg.js -@@ -902,10 +902,11 @@ tvheadend.epg = function() { - epgFilterTitle.on('valid', function(c) { - var value = c.getValue(); - -- if (value.length < 1) -- value = null; -- -- if (epgStore.baseParams.title !== value) { -+ if (value.length < 1) { -+ delete epgStore.baseParams.title; -+ epgView.reset(); -+ } -+ else if (epgStore.baseParams.title !== value) { - epgStore.baseParams.title = value; - epgView.reset(); - } --- -2.19.1 - diff --git a/multimedia/tvheadend/files/patch-src_webui_webui.c b/multimedia/tvheadend/files/patch-src_webui_webui.c deleted file mode 100644 index 9896e020b41a..000000000000 --- a/multimedia/tvheadend/files/patch-src_webui_webui.c +++ /dev/null @@ -1,80 +0,0 @@ -From 411f957733222e24df4ead9fb15332dcb2c116da Mon Sep 17 00:00:00 2001 -From: Jongsung Kim <[email protected]> -Date: Tue, 29 May 2018 03:42:04 +0900 -Subject: [PATCH 1/2] webui: fix http_serve_file() for FreeBSD - -This patch fixes two major problems of FreeBSD port of tvheadend: - -1. very high CPU usage while streaming a recored program -2. unable to stream the recorded program beyond 128MB. - -Unlike Linux sendfile(), FreeBSD sendfile() requires an explicit -file offset, and return value must be checked to catch any error -occurred. (i.e., closed connection) - -Patch tested with the latest FreeBSD port of tvheadend-4.2.6. ---- - src/webui/webui.c | 24 +++++++++++++++++------- - 1 file changed, 17 insertions(+), 7 deletions(-) - -diff --git a/src/webui/webui.c b/src/webui/webui.c -index 12b965230..331d998e9 100644 ---- src/webui/webui.c -+++ src/webui/webui.c -@@ -1570,7 +1570,7 @@ http_serve_file(http_connection_t *hc, const char *fname, - #if defined(PLATFORM_LINUX) - ssize_t r; - #elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN) -- off_t r; -+ off_t o, r; - #endif - - if (fconv) { -@@ -1631,11 +1631,15 @@ http_serve_file(http_connection_t *hc, const char *fname, - sprintf(range_buf, "bytes %jd-%jd/%jd", - file_start, file_end, (intmax_t)st.st_size); - -+#if defined(PLATFORM_LINUX) - if(file_start > 0) - if (lseek(fd, file_start, SEEK_SET) != file_start) { - close(fd); - return HTTP_STATUS_INTERNAL; - } -+#elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN) -+ o = file_start; -+#endif - - if (preop) { - ret = preop(hc, file_start, content_len, opaque); -@@ -1656,16 +1660,22 @@ http_serve_file(http_connection_t *hc, const char *fname, - chunk = MIN(1024 * ((stats ? 128 : 1024) * 1024), content_len); - #if defined(PLATFORM_LINUX) - r = sendfile(hc->hc_fd, fd, NULL, chunk); -+ if (r < 0) { -+ ret = -1; -+ break; -+ } - #elif defined(PLATFORM_FREEBSD) -- sendfile(fd, hc->hc_fd, 0, chunk, NULL, &r, 0); -+ ret = sendfile(fd, hc->hc_fd, o, chunk, NULL, &r, 0); -+ if (ret < 0) -+ break; -+ o += r; - #elif defined(PLATFORM_DARWIN) - r = chunk; -- sendfile(fd, hc->hc_fd, 0, &r, NULL, 0); --#endif -- if(r < 0) { -- ret = -1; -+ ret = sendfile(fd, hc->hc_fd, o, &r, NULL, 0); -+ if (ret < 0) - break; -- } -+ o += r; -+#endif - content_len -= r; - if (stats) - stats(hc, r, opaque); --- -2.19.1 - diff --git a/multimedia/tvheadend/files/patch-src_wrappers.c b/multimedia/tvheadend/files/patch-src_wrappers.c index af4aaafea0f5..3b849553bd8c 100644 --- a/multimedia/tvheadend/files/patch-src_wrappers.c +++ b/multimedia/tvheadend/files/patch-src_wrappers.c @@ -2,9 +2,9 @@ Use the implementation from Darwin for tvh_usleep() and tvh_usleep_abs() in FreeBSD. Submitted by: Bernhard Froehlich <[email protected]> ---- src/wrappers.c.orig 2018-10-08 12:37:05.000000000 +0000 -+++ src/wrappers.c 2018-10-16 14:27:38.788502000 +0000 -@@ -324,7 +324,7 @@ +--- src/wrappers.c.orig 2026-05-19 20:37:17 UTC ++++ src/wrappers.c +@@ -171,7 +171,7 @@ tvh_usleep(int64_t us) int64_t tvh_usleep(int64_t us) { @@ -13,7 +13,7 @@ Submitted by: Bernhard Froehlich <[email protected]> return usleep(us); #else struct timespec ts; -@@ -345,7 +345,7 @@ +@@ -192,7 +192,7 @@ tvh_usleep_abs(int64_t us) int64_t tvh_usleep_abs(int64_t us) { diff --git a/multimedia/tvheadend/pkg-plist b/multimedia/tvheadend/pkg-plist index 6c63423de5ad..ac61ef091fa3 100644 --- a/multimedia/tvheadend/pkg-plist +++ b/multimedia/tvheadend/pkg-plist @@ -1,6 +1,19 @@ +bin/tv_meta_tmdb.py +bin/tv_meta_tvdb.py bin/tvheadend +bin/tvhmeta share/man/man1/tvheadend.1.gz %%DATADIR%%/data/conf/descrambler +%%DATADIR%%/data/conf/epggrab/eit/config +%%DATADIR%%/data/conf/epggrab/eit/scrape/README +%%DATADIR%%/data/conf/epggrab/eit/scrape/README.uk +%%DATADIR%%/data/conf/epggrab/eit/scrape/au +%%DATADIR%%/data/conf/epggrab/eit/scrape/bg +%%DATADIR%%/data/conf/epggrab/eit/scrape/fi +%%DATADIR%%/data/conf/epggrab/eit/scrape/it +%%DATADIR%%/data/conf/epggrab/eit/scrape/nz +%%DATADIR%%/data/conf/epggrab/eit/scrape/pl +%%DATADIR%%/data/conf/epggrab/eit/scrape/uk %%DATADIR%%/data/conf/epggrab/opentv/dict/skyeng %%DATADIR%%/data/conf/epggrab/opentv/dict/skyit %%DATADIR%%/data/conf/epggrab/opentv/dict/skynz @@ -13,15 +26,20 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/data/conf/epggrab/opentv/prov/skynz %%DATADIR%%/data/conf/epggrab/opentv/prov/skyuk %%DATADIR%%/data/conf/fastscan +%%DATADIR%%/data/conf/profiles %%DATADIR%%/data/conf/satellites +%%DATADIR%%/data/conf/transcoder/codecs +%%DATADIR%%/data/conf/transcoder/profiles %%DATADIR%%/src/webui/static/app/acleditor.js %%DATADIR%%/src/webui/static/app/caclient.js %%DATADIR%%/src/webui/static/app/chconf.js +%%DATADIR%%/src/webui/static/app/codec.js %%DATADIR%%/src/webui/static/app/comet.js %%DATADIR%%/src/webui/static/app/config.js %%DATADIR%%/src/webui/static/app/cteditor.js %%DATADIR%%/src/webui/static/app/dvr.js %%DATADIR%%/src/webui/static/app/epg.js +%%DATADIR%%/src/webui/static/app/epgevent.js %%DATADIR%%/src/webui/static/app/epggrab.js %%DATADIR%%/src/webui/static/app/esfilter.js %%DATADIR%%/src/webui/static/app/ext-access.css @@ -35,6 +53,8 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/app/marked.js %%DATADIR%%/src/webui/static/app/mpegts.js %%DATADIR%%/src/webui/static/app/namespace.js +%%DATADIR%%/src/webui/static/app/profile.js +%%DATADIR%%/src/webui/static/app/ratinglabels.js %%DATADIR%%/src/webui/static/app/servicemapper.js %%DATADIR%%/src/webui/static/app/status.js %%DATADIR%%/src/webui/static/app/timeshift.js @@ -986,7 +1006,9 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/icons/connections.png %%DATADIR%%/src/webui/static/icons/control_pause.png %%DATADIR%%/src/webui/static/icons/control_play.png +%%DATADIR%%/src/webui/static/icons/control_repeat_blue.png %%DATADIR%%/src/webui/static/icons/control_stop.png +%%DATADIR%%/src/webui/static/icons/csfd.png %%DATADIR%%/src/webui/static/icons/debug.png %%DATADIR%%/src/webui/static/icons/delete.png %%DATADIR%%/src/webui/static/icons/download.png @@ -1001,11 +1023,165 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/icons/film.png %%DATADIR%%/src/webui/static/icons/film_edit.png %%DATADIR%%/src/webui/static/icons/film_key.png +%%DATADIR%%/src/webui/static/icons/filmaffinity.png %%DATADIR%%/src/webui/static/icons/find.png %%DATADIR%%/src/webui/static/icons/full_screen.png %%DATADIR%%/src/webui/static/icons/general.png %%DATADIR%%/src/webui/static/icons/group.png %%DATADIR%%/src/webui/static/icons/help.png +%%DATADIR%%/src/webui/static/icons/hires/README +%%DATADIR%%/src/webui/static/icons/hires/airplane.png +%%DATADIR%%/src/webui/static/icons/hires/ambulance.png +%%DATADIR%%/src/webui/static/icons/hires/american_football.png +%%DATADIR%%/src/webui/static/icons/hires/artist_pallette.png +%%DATADIR%%/src/webui/static/icons/hires/automobile.png +%%DATADIR%%/src/webui/static/icons/hires/baby.png +%%DATADIR%%/src/webui/static/icons/hires/ballot_box_with_ballot.png +%%DATADIR%%/src/webui/static/icons/hires/baseball.png +%%DATADIR%%/src/webui/static/icons/hires/basketball_and_hoop.png +%%DATADIR%%/src/webui/static/icons/hires/beach_with_umbrella.png +%%DATADIR%%/src/webui/static/icons/hires/bow_and_arrow.png +%%DATADIR%%/src/webui/static/icons/hires/boxing_glove.png +%%DATADIR%%/src/webui/static/icons/hires/cactus.png +%%DATADIR%%/src/webui/static/icons/hires/castle.png +%%DATADIR%%/src/webui/static/icons/hires/chart_with_upwards_trend.png +%%DATADIR%%/src/webui/static/icons/hires/clapper_board.png +%%DATADIR%%/src/webui/static/icons/hires/collision_symbol.png +%%DATADIR%%/src/webui/static/icons/hires/construction_worker.png +%%DATADIR%%/src/webui/static/icons/hires/cooking.png +%%DATADIR%%/src/webui/static/icons/hires/couch_and_lamp.png +%%DATADIR%%/src/webui/static/icons/hires/dancer.png +%%DATADIR%%/src/webui/static/icons/hires/elephant.png +%%DATADIR%%/src/webui/static/icons/hires/extraterrestrial_alien.png +%%DATADIR%%/src/webui/static/icons/hires/face_with_tears_of_joy.png +%%DATADIR%%/src/webui/static/icons/hires/family.png +%%DATADIR%%/src/webui/static/icons/hires/film_frames.png +%%DATADIR%%/src/webui/static/icons/hires/fishing_pole_and_fish.png +%%DATADIR%%/src/webui/static/icons/hires/game_die.png +%%DATADIR%%/src/webui/static/icons/hires/ghost.png +%%DATADIR%%/src/webui/static/icons/hires/graduation_cap.png +%%DATADIR%%/src/webui/static/icons/hires/grinning_face.png +%%DATADIR%%/src/webui/static/icons/hires/high_heeled_shoe.png +%%DATADIR%%/src/webui/static/icons/hires/horse_face.png +%%DATADIR%%/src/webui/static/icons/hires/house_with_garden.png +%%DATADIR%%/src/webui/static/icons/hires/ice_skate.png +%%DATADIR%%/src/webui/static/icons/hires/left_pointing_magnifying_glass.png +%%DATADIR%%/src/webui/static/icons/hires/link_symbol.png +%%DATADIR%%/src/webui/static/icons/hires/martial_arts_uniform.png +%%DATADIR%%/src/webui/static/icons/hires/microphone.png +%%DATADIR%%/src/webui/static/icons/hires/microscope.png +%%DATADIR%%/src/webui/static/icons/hires/military_medal.png +%%DATADIR%%/src/webui/static/icons/hires/money_with_wings.png +%%DATADIR%%/src/webui/static/icons/hires/musical_note.png +%%DATADIR%%/src/webui/static/icons/hires/newspaper.png +%%DATADIR%%/src/webui/static/icons/hires/no_one_under_eighteen_symbol.png +%%DATADIR%%/src/webui/static/icons/hires/noto/LICENSE +%%DATADIR%%/src/webui/static/icons/hires/noto/URL +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f195.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f335.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f393.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f396.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f39e.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3a3.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3a4.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3a8.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3ac.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3ad.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3b2.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3b5.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3be.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3c0.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3c5.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3c8.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3ca_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3cb_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3cd.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3ce.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3d6.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3e1.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3f0.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f3f9.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f418.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f434.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f43e.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f460.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f468_200d_1f373.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f468_200d_1f469_200d_1f466.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f46e_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f476.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f477_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f47b.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f47d.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f480.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f483.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4a5.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4ac.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4b8.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4bb.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4c8.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4f0.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4fa.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f4fb.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f50d.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f517.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f51e.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f52c.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f575_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f5e3.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f5f3.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f600.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f602.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f691.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f697.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f6cb.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f6d0.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f6d2.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f933.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f938_200d_2640.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f93c_200d_2642.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f94a.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f94b.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f984.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u1f9d8_200d_2640.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u2660.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u26bd.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u26be.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u26c5.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u26f7.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u26f8.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u2708.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u270f.png +%%DATADIR%%/src/webui/static/icons/hires/noto/emoji_u2764.png +%%DATADIR%%/src/webui/static/icons/hires/paw_prints.png +%%DATADIR%%/src/webui/static/icons/hires/pencil.png +%%DATADIR%%/src/webui/static/icons/hires/performing_arts.png +%%DATADIR%%/src/webui/static/icons/hires/person_doing_cartwheel.png +%%DATADIR%%/src/webui/static/icons/hires/person_in_lotus_position.png +%%DATADIR%%/src/webui/static/icons/hires/person_lifting_weights.png +%%DATADIR%%/src/webui/static/icons/hires/personal_computer.png +%%DATADIR%%/src/webui/static/icons/hires/place_of_worship.png +%%DATADIR%%/src/webui/static/icons/hires/police_officer.png +%%DATADIR%%/src/webui/static/icons/hires/racing_car.png +%%DATADIR%%/src/webui/static/icons/hires/racing_motorcycle.png +%%DATADIR%%/src/webui/static/icons/hires/radio.png +%%DATADIR%%/src/webui/static/icons/hires/red_heart.png +%%DATADIR%%/src/webui/static/icons/hires/selfie.png +%%DATADIR%%/src/webui/static/icons/hires/shopping_trolley.png +%%DATADIR%%/src/webui/static/icons/hires/skier.png +%%DATADIR%%/src/webui/static/icons/hires/skull.png +%%DATADIR%%/src/webui/static/icons/hires/soccer_ball.png +%%DATADIR%%/src/webui/static/icons/hires/spade_suit.png +%%DATADIR%%/src/webui/static/icons/hires/speaking_head_in_silhouette.png +%%DATADIR%%/src/webui/static/icons/hires/speech_balloon.png +%%DATADIR%%/src/webui/static/icons/hires/sports_medal.png +%%DATADIR%%/src/webui/static/icons/hires/spy.png +%%DATADIR%%/src/webui/static/icons/hires/squared_new.png +%%DATADIR%%/src/webui/static/icons/hires/sun_behind_cloud.png +%%DATADIR%%/src/webui/static/icons/hires/swimmer.png +%%DATADIR%%/src/webui/static/icons/hires/television.png +%%DATADIR%%/src/webui/static/icons/hires/tennis_racquet_and_ball.png +%%DATADIR%%/src/webui/static/icons/hires/unicorn_face.png +%%DATADIR%%/src/webui/static/icons/hires/wrestlers.png %%DATADIR%%/src/webui/static/icons/imdb.png %%DATADIR%%/src/webui/static/icons/imgcacheconf.png %%DATADIR%%/src/webui/static/icons/information.png @@ -1013,6 +1189,7 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/icons/key.png %%DATADIR%%/src/webui/static/icons/layers.png %%DATADIR%%/src/webui/static/icons/linked.gif +%%DATADIR%%/src/webui/static/icons/list.png %%DATADIR%%/src/webui/static/icons/mux_schedulers.png %%DATADIR%%/src/webui/static/icons/muxes.png %%DATADIR%%/src/webui/static/icons/networks.png @@ -1021,6 +1198,7 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/icons/pass.png %%DATADIR%%/src/webui/static/icons/pci.png %%DATADIR%%/src/webui/static/icons/plugin.png +%%DATADIR%%/src/webui/static/icons/plugin_disabled.png %%DATADIR%%/src/webui/static/icons/progress-bg-green.gif %%DATADIR%%/src/webui/static/icons/progress-bg-orange.gif %%DATADIR%%/src/webui/static/icons/progress-bg-red.gif @@ -1056,34 +1234,36 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/icons/world_add.png %%DATADIR%%/src/webui/static/icons/wrench.png %%DATADIR%%/src/webui/static/img/bg-header.png -%%DATADIR%%/src/webui/static/img/doc/access_entry/new.png -%%DATADIR%%/src/webui/static/img/doc/access_entry/tab.png -%%DATADIR%%/src/webui/static/img/doc/before_begin/schematic.png -%%DATADIR%%/src/webui/static/img/doc/bouquet/add.png -%%DATADIR%%/src/webui/static/img/doc/bouquet/detach.png -%%DATADIR%%/src/webui/static/img/doc/bouquet/tab.png -%%DATADIR%%/src/webui/static/img/doc/caclient/tab.png -%%DATADIR%%/src/webui/static/img/doc/caclient_capmt/tab.png +%%DATADIR%%/src/webui/static/img/doc/caclient/cas.png %%DATADIR%%/src/webui/static/img/doc/channel/add.png -%%DATADIR%%/src/webui/static/img/doc/channel/tab.png -%%DATADIR%%/src/webui/static/img/doc/channeltag/tab.png -%%DATADIR%%/src/webui/static/img/doc/config/tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/bouquet_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/channels_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/channeltag_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/detach_bouquet.png +%%DATADIR%%/src/webui/static/img/doc/channel/epgconf_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/grabber_channels_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/grabber_modules_tab.png +%%DATADIR%%/src/webui/static/img/doc/channel/grabber_xpath_fields.png +%%DATADIR%%/src/webui/static/img/doc/config/base.png +%%DATADIR%%/src/webui/static/img/doc/config/imagecache.png +%%DATADIR%%/src/webui/static/img/doc/config/satip_server.png %%DATADIR%%/src/webui/static/img/doc/debugging/tab.png -%%DATADIR%%/src/webui/static/img/doc/dvrautorec/add.png -%%DATADIR%%/src/webui/static/img/doc/dvrautorec/tab.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_mux_sched.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_muxes.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_networks.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_service.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_service_info.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/dvbinput_tab.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/service_mapper_dialog.png +%%DATADIR%%/src/webui/static/img/doc/dvbinputs/the_tree_explained.png +%%DATADIR%%/src/webui/static/img/doc/dvr/add.png +%%DATADIR%%/src/webui/static/img/doc/dvr/addtimer.png +%%DATADIR%%/src/webui/static/img/doc/dvr/tab.png %%DATADIR%%/src/webui/static/img/doc/dvrconfig/tab.png -%%DATADIR%%/src/webui/static/img/doc/dvrentry/add.png -%%DATADIR%%/src/webui/static/img/doc/dvrentry/tab.png -%%DATADIR%%/src/webui/static/img/doc/dvrtimerec/add.png -%%DATADIR%%/src/webui/static/img/doc/dvrtimerec/tab.png %%DATADIR%%/src/webui/static/img/doc/epg/autorec.png -%%DATADIR%%/src/webui/static/img/doc/epg/series_link.png %%DATADIR%%/src/webui/static/img/doc/epg/tab.png -%%DATADIR%%/src/webui/static/img/doc/epgconf/tab.png -%%DATADIR%%/src/webui/static/img/doc/epggrabber_channel/tab.png -%%DATADIR%%/src/webui/static/img/doc/epggrabber_modules/tab.png -%%DATADIR%%/src/webui/static/img/doc/filters/example.png -%%DATADIR%%/src/webui/static/img/doc/filters/tab.png +%%DATADIR%%/src/webui/static/img/doc/firstconfig/adapters.png +%%DATADIR%%/src/webui/static/img/doc/firstconfig/wizard.png %%DATADIR%%/src/webui/static/img/doc/icons/abort.png %%DATADIR%%/src/webui/static/img/doc/icons/accept.png %%DATADIR%%/src/webui/static/img/doc/icons/acl.png @@ -1115,7 +1295,9 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/img/doc/icons/connections.png %%DATADIR%%/src/webui/static/img/doc/icons/control_pause.png %%DATADIR%%/src/webui/static/img/doc/icons/control_play.png +%%DATADIR%%/src/webui/static/img/doc/icons/control_repeat_blue.png %%DATADIR%%/src/webui/static/img/doc/icons/control_stop.png +%%DATADIR%%/src/webui/static/img/doc/icons/csfd.png %%DATADIR%%/src/webui/static/img/doc/icons/debug.png %%DATADIR%%/src/webui/static/img/doc/icons/delete.png %%DATADIR%%/src/webui/static/img/doc/icons/download.png @@ -1130,11 +1312,165 @@ share/man/man1/tvheadend.1.gz %%DATADIR%%/src/webui/static/img/doc/icons/film.png %%DATADIR%%/src/webui/static/img/doc/icons/film_edit.png %%DATADIR%%/src/webui/static/img/doc/icons/film_key.png +%%DATADIR%%/src/webui/static/img/doc/icons/filmaffinity.png %%DATADIR%%/src/webui/static/img/doc/icons/find.png %%DATADIR%%/src/webui/static/img/doc/icons/full_screen.png %%DATADIR%%/src/webui/static/img/doc/icons/general.png %%DATADIR%%/src/webui/static/img/doc/icons/group.png %%DATADIR%%/src/webui/static/img/doc/icons/help.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/README +%%DATADIR%%/src/webui/static/img/doc/icons/hires/airplane.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/ambulance.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/american_football.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/artist_pallette.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/automobile.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/baby.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/ballot_box_with_ballot.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/baseball.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/basketball_and_hoop.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/beach_with_umbrella.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/bow_and_arrow.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/boxing_glove.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/cactus.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/castle.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/chart_with_upwards_trend.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/clapper_board.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/collision_symbol.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/construction_worker.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/cooking.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/couch_and_lamp.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/dancer.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/elephant.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/extraterrestrial_alien.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/face_with_tears_of_joy.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/family.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/film_frames.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/fishing_pole_and_fish.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/game_die.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/ghost.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/graduation_cap.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/grinning_face.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/high_heeled_shoe.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/horse_face.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/house_with_garden.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/ice_skate.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/left_pointing_magnifying_glass.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/link_symbol.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/martial_arts_uniform.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/microphone.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/microscope.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/military_medal.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/money_with_wings.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/musical_note.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/newspaper.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/no_one_under_eighteen_symbol.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/LICENSE +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/URL +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f195.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f335.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f393.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f396.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f39e.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3a3.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3a4.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3a8.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3ac.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3ad.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3b2.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3b5.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3be.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3c0.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3c5.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3c8.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3ca_200d_2642.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3cb_200d_2642.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3cd.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3ce.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3d6.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3e1.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3f0.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f3f9.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f418.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f434.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f43e.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f460.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f468_200d_1f373.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f468_200d_1f469_200d_1f466.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f46e_200d_2642.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f476.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f477_200d_2642.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f47b.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f47d.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f480.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f483.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4a5.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4ac.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4b8.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4bb.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4c8.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4f0.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4fa.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f4fb.png +%%DATADIR%%/src/webui/static/img/doc/icons/hires/noto/emoji_u1f50d.png *** 165 LINES SKIPPED ***