From ea526f2340d11271f206582e660df9689a4b3740 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
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
    */