From ea526f2340d11271f206582e660df9689a4b3740 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 24 Jan 2014 09:58:39 +0100 Subject: [PATCH] Fix the adapter_mask handling for linuxdvb --- src/input/mpegts/linuxdvb/linuxdvb.c | 4 ++++ src/input/mpegts/linuxdvb/linuxdvb_adapter.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/input/mpegts/linuxdvb/linuxdvb.c b/src/input/mpegts/linuxdvb/linuxdvb.c index 4c4d5a3a..94f8c77e 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb.c +++ b/src/input/mpegts/linuxdvb/linuxdvb.c @@ -24,8 +24,12 @@ #include "scanfile.h" #include "../dvb_charset.h" +int linuxdvb_adapter_mask; + void linuxdvb_init ( int adapter_mask ) { + linuxdvb_adapter_mask = adapter_mask; + /* Load scan files */ scanfile_init(); diff --git a/src/input/mpegts/linuxdvb/linuxdvb_adapter.c b/src/input/mpegts/linuxdvb/linuxdvb_adapter.c index 4ac2f616..8c0ca8fa 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_adapter.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_adapter.c @@ -160,6 +160,7 @@ linuxdvb_adapter_create static void linuxdvb_adapter_add ( const char *path ) { + extern int linuxdvb_adapter_mask; int a, i, j, r, fd; char fe_path[512], dmx_path[512], dvr_path[512], uuid[UUID_STR_LEN]; linuxdvb_adapter_t *la = NULL; @@ -182,6 +183,9 @@ linuxdvb_adapter_add ( const char *path ) if (sscanf(path, "/dev/dvb/adapter%d", &a) != 1) return; + if (a >= 0 && a < 32 && (linuxdvb_adapter_mask & (1 << a)) == 0) + return; + /* Note: some of the below can take a while, so we relinquish the lock * to stop us blocking everyhing else */