Version bumped. This version includes some bugfixes.
authorMatthias Schwarzott <zzam@gentoo.org>
Wed, 9 Nov 2005 21:28:05 +0000 (21:28 +0000)
committerMatthias Schwarzott <zzam@gentoo.org>
Wed, 9 Nov 2005 21:28:05 +0000 (21:28 +0000)
Package-Manager: portage-2.0.51.22-r3

media-video/vdr/ChangeLog
media-video/vdr/Manifest
media-video/vdr/files/digest-vdr-1.3.36 [new file with mode: 0644]
media-video/vdr/files/vdr-1.3.36-SourceCaps-for-lnb-sharing.patch [new file with mode: 0644]
media-video/vdr/files/vdr-1.3.36-SourceCaps.patch [new file with mode: 0644]
media-video/vdr/vdr-1.3.36.ebuild [new file with mode: 0644]

index 53db256776cf56af0abdfb8e22127eb7e808e885..a5bfc2cff35945869ea5f729905d7918d4477391 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for media-video/vdr
 # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.26 2005/10/24 11:30:35 zzam Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.27 2005/11/09 21:28:05 zzam Exp $
+
+*vdr-1.3.36 (09 Nov 2005)
+
+  09 Nov 2005; Matthias Schwarzott <zzam@gentoo.org>
+  +files/vdr-1.3.36-SourceCaps.patch,
+  +files/vdr-1.3.36-SourceCaps-for-lnb-sharing.patch, +vdr-1.3.36.ebuild:
+  Version bumped. This version includes some bugfixes.
 
 *vdr-1.3.34-r2 (24 Oct 2005)
 
index ac3c26d28aaad86c905bccf71ca7c39835149198..c739dda27c30141bc6006eaf9b1a1ee1a66ab518 100644 (file)
@@ -1,14 +1,18 @@
 MD5 85028e3cc03f1ac1ba27a5ee0391e96d vdr-1.2.6-r1.ebuild 1433
 MD5 3157799f6d2dea384d8db6a8673e8325 vdr-1.3.34-r1.ebuild 4491
+MD5 076f2745aa3aa1d66aee58e18c5a2ae3 vdr-1.3.36.ebuild 4792
 MD5 27cbd03c0fde4fcddf379f306ea8e981 vdr-1.3.27.ebuild 4236
 MD5 8554f7d2baba12e38b4c15115f4e2f20 vdr-1.3.34-r2.ebuild 4537
-MD5 289ffc88d5174a9551f0c58b559ba8fa ChangeLog 3799
+MD5 89ada8f5b245228a85f2c9c1abf8d1bf ChangeLog 4047
 MD5 a973dfa1638779880ca99f1c1435cac7 metadata.xml 259
 MD5 4d3ece4e7bb6ec5913f33dd5952e658e vdr-1.3.34.ebuild 4225
 MD5 aa18122fb081cdc19d419d53ad1f63de files/vdr-1.2.6_CAN-2005-0071.patch 893
 MD5 4e0e788481ae4a07c9260bcdbaab3465 files/digest-vdr-1.3.27 370
 MD5 3d3b8b271925155442f660f5a9da86da files/digest-vdr-1.3.34 366
+MD5 6608205ec103c06aea6c3532edf13e30 files/digest-vdr-1.3.36 366
+MD5 4e70ea0094c7bccffbdd3ac93f3010af files/vdr-1.3.36-SourceCaps-for-lnb-sharing.patch 7957
 MD5 472e23b8b78fd88b22e140386af74b3d files/vdr-1.3.32-daemon.patch 794
+MD5 d43cfe3b33e25f0d6b9fe2e7a05ae082 files/vdr-1.3.36-SourceCaps.patch 7729
 MD5 5df3de1f888e3fc8f8ba27623a19f40b files/digest-vdr-1.2.6-r1 62
 MD5 aa8d0f66c8831be73c049584d6143c8b files/vdr-1.2.6-gentoo.diff 1995
 MD5 3d3b8b271925155442f660f5a9da86da files/digest-vdr-1.3.34-r1 366
diff --git a/media-video/vdr/files/digest-vdr-1.3.36 b/media-video/vdr/files/digest-vdr-1.3.36
new file mode 100644 (file)
index 0000000..8e962fd
--- /dev/null
@@ -0,0 +1,5 @@
+MD5 43fd33cdc3980773543f83017f747148 vdr-1.3.36.tar.bz2 513639
+MD5 c64d982f9fe110e6cdc0ce023301a36c configurableLNBshare-VDR_1.3.36.patch 20066
+MD5 f83f881f2f7f906dd1980c1fa8280ec2 vdr-1.3.36-enAIO-2.7.diff.gz 11475
+MD5 006d29b6d95c36b57a9d0be0e365e1d7 vdr-1.3.36-bigpatch-test1.tar.bz2 140154
+MD5 3b276851190bac5dc03ab81ba55ac193 vdr-jumpplay-0.6-1.3.29.diff 18904
diff --git a/media-video/vdr/files/vdr-1.3.36-SourceCaps-for-lnb-sharing.patch b/media-video/vdr/files/vdr-1.3.36-SourceCaps-for-lnb-sharing.patch
new file mode 100644 (file)
index 0000000..309157f
--- /dev/null
@@ -0,0 +1,215 @@
+diff -ru vdr-1.3.34-lnbsharing/config.c vdr-1.3.34-lnbsharing-sourcecaps/config.c
+--- vdr-1.3.34-lnbsharing/config.c     2005-10-08 23:39:10.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/config.c  2005-10-08 23:37:04.000000000 +0200
+@@ -15,6 +15,7 @@
+ #include "interface.h"
+ #include "plugin.h"
+ #include "recording.h"
++#include "sources.h"
+ 
+ // IMPORTANT NOTE: in the 'sscanf()' calls there is a blank after the '%d'
+ // format characters in order to allow any number of blanks after a numeric
+@@ -300,6 +301,8 @@
+   MultiSpeedMode = 0;
+   ShowReplayMode = 0;
+   ResumeID = 0;
++  memset(SourceCaps, 0, sizeof SourceCaps);
++  SourceCapsSet = false;
+   CurrentChannel = -1;
+   CurrentVolume = MAXVOLUME;
+   CurrentDolby = 0;
+@@ -407,6 +410,49 @@
+   return true;
+ }
+ 
++void cSetup::StoreSourceCaps(const char *Name)
++{
++  cSetupLine *l;
++  while ((l = Get(Name)) != NULL)
++        Del(l);
++
++  for (int i = 0; i < MAXDEVICES; i++) {
++      char buffer[KILOBYTE(10)]={0,}, *q = buffer;
++      int j = 0;
++      while (SourceCaps[i][j] && j < MAXSOURCECAPS) {
++            if (j==0) 
++               q += snprintf(buffer, sizeof(buffer), "%i ", i+1);
++            q += snprintf(q, sizeof(buffer) - (q-buffer), "%s ", *cSource::ToString(SourceCaps[i][j++]));
++      }
++      if (*buffer)
++         Store(Name, buffer, NULL, true);
++      }
++}
++
++bool cSetup::ParseSourceCaps(const char *Value)
++{
++  char *p;
++  int d = strtol(Value, &p, 10)-1, i = 0;
++  while (p < Value+strlen(Value)) {
++      if (*p==0) return true;
++      if (isblank(*p)) ++p;
++      if (isalpha(*p)) {
++         int source = cSource::FromString(p);
++         if (source != cSource::stNone) {
++            SourceCaps[d][i++] = source;
++            SourceCapsSet = true;
++            }
++         else
++            return false;
++         while (!isblank(*p) && *p)
++               ++p;
++         if (i>MAXSOURCECAPS) 
++            return false;
++         }
++        }
++  return true;
++}
++
+ bool cSetup::Parse(const char *Name, const char *Value)
+ {
+   if      (!strcasecmp(Name, "OSDLanguage"))         OSDLanguage        = atoi(Value);
+@@ -464,6 +510,7 @@
+   else if (!strcasecmp(Name, "MultiSpeedMode"))      MultiSpeedMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ShowReplayMode"))      ShowReplayMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ResumeID"))            ResumeID           = atoi(Value);
++  else if (!strcasecmp(Name, "SourceCaps"))          return ParseSourceCaps(Value);
+   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentDolby"))        CurrentDolby       = atoi(Value);
+@@ -545,6 +592,7 @@
+   Store("MultiSpeedMode",     MultiSpeedMode);
+   Store("ShowReplayMode",     ShowReplayMode);
+   Store("ResumeID",           ResumeID);
++  if (SourceCapsSet) StoreSourceCaps("SourceCaps");
+   Store("CurrentChannel",     CurrentChannel);
+   Store("CurrentVolume",      CurrentVolume);
+   Store("CurrentDolby",       CurrentDolby);
+diff -ru vdr-1.3.34-lnbsharing/config.h vdr-1.3.34-lnbsharing-sourcecaps/config.h
+--- vdr-1.3.34-lnbsharing/config.h     2005-10-08 23:39:10.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/config.h  2005-10-08 23:37:04.000000000 +0200
+@@ -30,6 +30,9 @@
+ #define MINOSDHEIGHT 324
+ #define MAXOSDHEIGHT 567
+ 
++#define MAXDEVICES         16 // the maximum number of devices in the system
++#define MAXSOURCECAPS     128 // the maximum number of different sources per device
++
+ #define MaxFileName 256
+ #define MaxSkinName 16
+ #define MaxThemeName 16
+@@ -198,6 +201,8 @@
+   void StoreLanguages(const char *Name, int *Values);
+   bool ParseLanguages(const char *Value, int *Values);
+   bool Parse(const char *Name, const char *Value);
++  void StoreSourceCaps(const char *Name);
++  bool ParseSourceCaps(const char *Value);
+   cSetupLine *Get(const char *Name, const char *Plugin = NULL);
+   void Store(const char *Name, const char *Value, const char *Plugin = NULL, bool AllowMultiple = false);
+   void Store(const char *Name, int Value, const char *Plugin = NULL);
+@@ -252,6 +257,8 @@
+   int MultiSpeedMode;
+   int ShowReplayMode;
+   int ResumeID;
++  int SourceCaps[MAXDEVICES][MAXSOURCECAPS];
++  bool SourceCapsSet;
+   int CurrentChannel;
+   int CurrentVolume;
+   int CurrentDolby;
+diff -ru vdr-1.3.34-lnbsharing/device.c vdr-1.3.34-lnbsharing-sourcecaps/device.c
+--- vdr-1.3.34-lnbsharing/device.c     2005-10-08 23:39:10.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/device.c  2005-10-08 23:37:04.000000000 +0200
+@@ -184,8 +184,10 @@
+   for (int i = 0; i < MAXRECEIVERS; i++)
+       receiver[i] = NULL;
+ 
+-  if (numDevices < MAXDEVICES)
++  if (numDevices < MAXDEVICES) {
+      device[numDevices++] = this;
++     SetSourceCaps(cardIndex);
++     }
+   else
+      esyslog("ERROR: too many devices!");
+ }
+@@ -440,6 +442,17 @@
+   return d;
+ }
+ 
++void cDevice::SetSourceCaps(int Index)
++{
++  for (int d = 0; d < numDevices; d++) {
++      if (Index < 0 || Index == device[d]->CardIndex()) {
++       for (int i = 0; i < MAXSOURCECAPS; i++)
++           device[d]->sourceCaps[i] = Setup.SourceCaps[device[d]->CardIndex()][i];
++       }
++      }
++}
++
++
+ void cDevice::Shutdown(void)
+ {
+   primaryDevice = NULL;
+diff -ru vdr-1.3.34-lnbsharing/device.h vdr-1.3.34-lnbsharing-sourcecaps/device.h
+--- vdr-1.3.34-lnbsharing/device.h     2005-10-08 23:39:10.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/device.h  2005-10-08 23:37:36.000000000 +0200
+@@ -23,7 +23,6 @@
+ #include "thread.h"
+ #include "tools.h"
+ 
+-#define MAXDEVICES         16 // the maximum number of devices in the system
+ #define MAXPIDHANDLES      64 // the maximum number of different PIDs per device
+ #define MAXRECEIVERS       16 // the maximum number of receivers per device
+ #define MAXVOLUME         255
+@@ -160,6 +159,8 @@
+          ///< would not be affected by switching to the requested channel.
+ //ML-Ende
+ 
++  static void SetSourceCaps(int Index = -1);
++         ///< Sets the SourceCaps of the given device according to the Setup data.
+   static void Shutdown(void);
+          ///< Closes down all devices.
+          ///< Must be called at the end of the program.
+@@ -167,6 +168,7 @@
+   static int nextCardIndex;
+   int cardIndex;
+ protected:
++  int sourceCaps[MAXSOURCECAPS];
+   cDevice(void);
+   virtual ~cDevice();
+   virtual bool Ready(void);
+diff -ru vdr-1.3.34-lnbsharing/dvbdevice.c vdr-1.3.34-lnbsharing-sourcecaps/dvbdevice.c
+--- vdr-1.3.34-lnbsharing/dvbdevice.c  2005-10-08 23:38:46.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/dvbdevice.c       2005-10-08 23:37:04.000000000 +0200
+@@ -754,10 +754,17 @@
+ bool cDvbDevice::ProvidesSource(int Source) const
+ {
+   int type = Source & cSource::st_Mask;
+-  return type == cSource::stNone
+-      || type == cSource::stCable && frontendType == FE_QAM
+-      || type == cSource::stSat   && frontendType == FE_QPSK
+-      || type == cSource::stTerr  && frontendType == FE_OFDM;
++  if (Setup.SourceCapsSet && type == cSource::stSat && frontendType == FE_QPSK) {
++     for (int i = 0; i < MAXSOURCECAPS; i++)
++         if (sourceCaps[i] == Source)
++            return true;
++     return false;
++     }
++  else
++     return type == cSource::stNone                            
++       || type == cSource::stCable && frontendType == FE_QAM   
++       || type == cSource::stSat   && frontendType == FE_QPSK  
++       || type == cSource::stTerr  && frontendType == FE_OFDM; 
+ }
+ 
+ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
+diff -ru vdr-1.3.34-lnbsharing/sources.c vdr-1.3.34-lnbsharing-sourcecaps/sources.c
+--- vdr-1.3.34-lnbsharing/sources.c    2005-10-08 23:38:46.000000000 +0200
++++ vdr-1.3.34-lnbsharing-sourcecaps/sources.c 2005-10-08 23:37:04.000000000 +0200
+@@ -68,7 +68,7 @@
+      int pos = 0;
+      bool dot = false;
+      bool neg = false;
+-     while (*++s) {
++     while (*++s && !isblank(*s)) {
+            switch (toupper(*s)) {
+              case '0' ... '9': pos *= 10;
+                                pos += *s - '0';
diff --git a/media-video/vdr/files/vdr-1.3.36-SourceCaps.patch b/media-video/vdr/files/vdr-1.3.36-SourceCaps.patch
new file mode 100644 (file)
index 0000000..ed97f02
--- /dev/null
@@ -0,0 +1,214 @@
+diff -ur vdr-1.3.33/config.c vdr-1.3.33+SourceCaps/config.c
+--- vdr-1.3.33/config.c        2005-09-09 17:08:59.000000000 +0200
++++ vdr-1.3.33+SourceCaps/config.c     2005-09-25 20:25:45.869496656 +0200
+@@ -15,6 +15,7 @@
+ #include "interface.h"
+ #include "plugin.h"
+ #include "recording.h"
++#include "sources.h"
+ 
+ // IMPORTANT NOTE: in the 'sscanf()' calls there is a blank after the '%d'
+ // format characters in order to allow any number of blanks after a numeric
+@@ -300,6 +301,8 @@
+   MultiSpeedMode = 0;
+   ShowReplayMode = 0;
+   ResumeID = 0;
++  memset(SourceCaps, 0, sizeof SourceCaps);
++  SourceCapsSet = false;
+   CurrentChannel = -1;
+   CurrentVolume = MAXVOLUME;
+   CurrentDolby = 0;
+@@ -401,6 +404,49 @@
+   return true;
+ }
+ 
++void cSetup::StoreSourceCaps(const char *Name)
++{
++  cSetupLine *l;
++  while ((l = Get(Name)) != NULL)
++        Del(l);
++
++  for (int i = 0; i < MAXDEVICES; i++) {
++      char buffer[KILOBYTE(10)]={0,}, *q = buffer;
++      int j = 0;
++      while (SourceCaps[i][j] && j < MAXSOURCECAPS) {
++            if (j==0) 
++               q += snprintf(buffer, sizeof(buffer), "%i ", i+1);
++            q += snprintf(q, sizeof(buffer) - (q-buffer), "%s ", *cSource::ToString(SourceCaps[i][j++]));
++      }
++      if (*buffer)
++         Store(Name, buffer, NULL, true);
++      }
++}
++
++bool cSetup::ParseSourceCaps(const char *Value)
++{
++  char *p;
++  int d = strtol(Value, &p, 10)-1, i = 0;
++  while (p < Value+strlen(Value)) {
++      if (*p==0) return true;
++      if (isblank(*p)) ++p;
++      if (isalpha(*p)) {
++         int source = cSource::FromString(p);
++         if (source != cSource::stNone) {
++            SourceCaps[d][i++] = source;
++            SourceCapsSet = true;
++            }
++         else
++            return false;
++         while (!isblank(*p) && *p)
++               ++p;
++         if (i>MAXSOURCECAPS) 
++            return false;
++         }
++        }
++  return true;
++}
++
+ bool cSetup::Parse(const char *Name, const char *Value)
+ {
+   if      (!strcasecmp(Name, "OSDLanguage"))         OSDLanguage        = atoi(Value);
+@@ -458,6 +504,7 @@
+   else if (!strcasecmp(Name, "MultiSpeedMode"))      MultiSpeedMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ShowReplayMode"))      ShowReplayMode     = atoi(Value);
+   else if (!strcasecmp(Name, "ResumeID"))            ResumeID           = atoi(Value);
++  else if (!strcasecmp(Name, "SourceCaps"))          return ParseSourceCaps(Value);
+   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
+   else if (!strcasecmp(Name, "CurrentDolby"))        CurrentDolby       = atoi(Value);
+@@ -523,6 +570,7 @@
+   Store("MultiSpeedMode",     MultiSpeedMode);
+   Store("ShowReplayMode",     ShowReplayMode);
+   Store("ResumeID",           ResumeID);
++  if (SourceCapsSet) StoreSourceCaps("SourceCaps");
+   Store("CurrentChannel",     CurrentChannel);
+   Store("CurrentVolume",      CurrentVolume);
+   Store("CurrentDolby",       CurrentDolby);
+diff -ur vdr-1.3.33/config.h vdr-1.3.33+SourceCaps/config.h
+--- vdr-1.3.33/config.h        2005-09-14 18:04:09.000000000 +0200
++++ vdr-1.3.33+SourceCaps/config.h     2005-09-25 20:25:45.871496352 +0200
+@@ -30,6 +30,9 @@
+ #define MINOSDHEIGHT 324
+ #define MAXOSDHEIGHT 567
+ 
++#define MAXDEVICES         16 // the maximum number of devices in the system
++#define MAXSOURCECAPS     128 // the maximum number of different sources per device
++
+ #define MaxFileName 256
+ #define MaxSkinName 16
+ #define MaxThemeName 16
+@@ -198,6 +201,8 @@
+   void StoreLanguages(const char *Name, int *Values);
+   bool ParseLanguages(const char *Value, int *Values);
+   bool Parse(const char *Name, const char *Value);
++  void StoreSourceCaps(const char *Name);
++  bool ParseSourceCaps(const char *Value);
+   cSetupLine *Get(const char *Name, const char *Plugin = NULL);
+   void Store(const char *Name, const char *Value, const char *Plugin = NULL, bool AllowMultiple = false);
+   void Store(const char *Name, int Value, const char *Plugin = NULL);
+@@ -252,6 +257,8 @@
+   int MultiSpeedMode;
+   int ShowReplayMode;
+   int ResumeID;
++  int SourceCaps[MAXDEVICES][MAXSOURCECAPS];
++  bool SourceCapsSet;
+   int CurrentChannel;
+   int CurrentVolume;
+   int CurrentDolby;
+diff -ur vdr-1.3.33/device.c vdr-1.3.33+SourceCaps/device.c
+--- vdr-1.3.33/device.c        2005-09-17 16:29:44.000000000 +0200
++++ vdr-1.3.33+SourceCaps/device.c     2005-09-25 20:25:45.873496048 +0200
+@@ -174,8 +174,10 @@
+   for (int i = 0; i < MAXRECEIVERS; i++)
+       receiver[i] = NULL;
+ 
+-  if (numDevices < MAXDEVICES)
++  if (numDevices < MAXDEVICES) {
+      device[numDevices++] = this;
++     SetSourceCaps(cardIndex);
++     }
+   else
+      esyslog("ERROR: too many devices!");
+ }
+@@ -313,6 +315,17 @@
+   return d;
+ }
+ 
++void cDevice::SetSourceCaps(int Index)
++{
++  for (int d = 0; d < numDevices; d++) {
++      if (Index < 0 || Index == device[d]->CardIndex()) {
++       for (int i = 0; i < MAXSOURCECAPS; i++)
++           device[d]->sourceCaps[i] = Setup.SourceCaps[device[d]->CardIndex()][i];
++       }
++      }
++}
++
++
+ void cDevice::Shutdown(void)
+ {
+   primaryDevice = NULL;
+diff -ur vdr-1.3.33/device.h vdr-1.3.33+SourceCaps/device.h
+--- vdr-1.3.33/device.h        2005-09-17 16:29:28.000000000 +0200
++++ vdr-1.3.33+SourceCaps/device.h     2005-09-25 20:25:45.874495896 +0200
+@@ -23,7 +23,6 @@
+ #include "thread.h"
+ #include "tools.h"
+ 
+-#define MAXDEVICES         16 // the maximum number of devices in the system
+ #define MAXPIDHANDLES      64 // the maximum number of different PIDs per device
+ #define MAXRECEIVERS       16 // the maximum number of receivers per device
+ #define MAXVOLUME         255
+@@ -133,6 +132,8 @@
+          ///< given Priority.
+          ///< See ProvidesChannel() for more information on how
+          ///< priorities are handled, and the meaning of NeedsDetachReceivers.
++  static void SetSourceCaps(int Index = -1);
++         ///< Sets the SourceCaps of the given device according to the Setup data.
+   static void Shutdown(void);
+          ///< Closes down all devices.
+          ///< Must be called at the end of the program.
+@@ -140,6 +141,7 @@
+   static int nextCardIndex;
+   int cardIndex;
+ protected:
++  int sourceCaps[MAXSOURCECAPS];
+   cDevice(void);
+   virtual ~cDevice();
+   virtual bool Ready(void);
+diff -ur vdr-1.3.33/dvbdevice.c vdr-1.3.33+SourceCaps/dvbdevice.c
+--- vdr-1.3.33/dvbdevice.c     2005-08-21 11:17:20.000000000 +0200
++++ vdr-1.3.33+SourceCaps/dvbdevice.c  2005-09-25 20:25:45.876495592 +0200
+@@ -754,10 +754,17 @@
+ bool cDvbDevice::ProvidesSource(int Source) const
+ {
+   int type = Source & cSource::st_Mask;
+-  return type == cSource::stNone
+-      || type == cSource::stCable && frontendType == FE_QAM
+-      || type == cSource::stSat   && frontendType == FE_QPSK
+-      || type == cSource::stTerr  && frontendType == FE_OFDM;
++  if (Setup.SourceCapsSet && type == cSource::stSat && frontendType == FE_QPSK) {
++     for (int i = 0; i < MAXSOURCECAPS; i++)
++         if (sourceCaps[i] == Source)
++            return true;
++     return false;
++     }
++  else
++     return type == cSource::stNone                            
++       || type == cSource::stCable && frontendType == FE_QAM   
++       || type == cSource::stSat   && frontendType == FE_QPSK  
++       || type == cSource::stTerr  && frontendType == FE_OFDM; 
+ }
+ 
+ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
+--- vdr-1.3.23/sources.c        2004-12-26 12:58:52.000000000 +0100
++++ vdr-1.3.23+SourceCaps/sources.c     2005-02-16 00:29:02.652355896 +0100
+@@ -68,7 +68,7 @@
+      int pos = 0;
+      bool dot = false;
+      bool neg = false;
+-     while (*++s) {
++     while (*++s && !isblank(*s)) {
+            switch (toupper(*s)) {
+              case '0' ... '9': pos *= 10;
+                                pos += *s - '0';
diff --git a/media-video/vdr/vdr-1.3.36.ebuild b/media-video/vdr/vdr-1.3.36.ebuild
new file mode 100644 (file)
index 0000000..d79f4ee
--- /dev/null
@@ -0,0 +1,201 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-1.3.36.ebuild,v 1.1 2005/11/09 21:28:05 zzam Exp $
+
+inherit eutils
+
+IUSE="lirc vfat rcu
+       lnbsharing sourcecaps aio bigpatch jumpplay"
+
+# Names of patches
+FNAME_AIO="${P}-enAIO-2.7.diff"
+FNAME_BIGPATCH="${P}-bigpatch-test1"
+FNAME_JUMPPLAY="vdr-jumpplay-0.6-1.3.29.diff"
+FNAME_LNBSHARING="configurableLNBshare-VDR_1.3.36.patch"
+FNAME_SOURCECAPS_NORMAL="vdr-1.3.36-SourceCaps.patch"
+FNAME_SOURCECAPS_LNBSHARING="vdr-1.3.36-SourceCaps-for-lnb-sharing.patch"
+
+DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB"
+HOMEPAGE="http://www.cadsoft.de/vdr/"
+SRC_URI="ftp://ftp.cadsoft.de/vdr/Developer/${P}.tar.bz2
+       lnbsharing? ( http://xn--ltzke-jua.de/dvb/VDR_LNB_sharing_patch/${FNAME_LNBSHARING} )
+       aio? ( http://www.saunalahti.fi/~rahrenbe/vdr/patches/${FNAME_AIO}.gz )
+       bigpatch? ( http://bigpatch.vdr-developer.org/${PV}/${FNAME_BIGPATCH}.tar.bz2 )
+       jumpplay? ( http://www.toms-cafe.de/vdr/download/${FNAME_JUMPPLAY} )"
+
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+LICENSE="GPL-2"
+
+
+_DEPEND="media-libs/jpeg
+       lirc? ( app-misc/lirc )
+       sys-apps/gawk"
+
+RDEPEND="${_DEPEND}
+       dev-lang/perl
+       media-tv/vdrplugin-rebuild
+       media-tv/gentoo-vdr-scripts"
+
+DEPEND="${_DEPEND}
+       || (
+               >=sys-kernel/linux-headers-2.6.11-r2
+               media-tv/linuxtv-dvb
+       )"
+
+# Relevant Pathes for vdr on gentoo
+DVB_DIR=/usr/include
+VDR_INCLUDE_DIR=/usr/include/vdr
+PLUGIN_DIR=/usr/lib/vdr/plugins
+CONF_DIR=/etc/vdr
+RC_DIR=/usr/lib/vdr/rcscript
+CAP_FILE=${S}/vdr-capabilities.sh
+CAPS="# Capabilities of the vdr-executable for use by startscript etc."
+VDR_HOME=/var/vdr
+
+add_cap() {
+       while [ "$1" ]; do
+               CAPS="${CAPS}\n$1=1"
+               shift
+       done
+}
+
+pkg_setup() {
+       enewgroup vdr
+       enewuser vdr -1 /bin/bash ${VDR_HOME} vdr,video
+}
+
+src_unpack() {
+       unpack ${A}
+       cd ${S}
+
+       ebegin "Changing pathes for gentoo"
+       sed -e 's-$(DVBDIR)/include-$(DVBDIR)-' -i Makefile
+
+       sed \
+         -e 's-ConfigDirectory = VideoDirectory;-ConfigDirectory = CONFIGDIR;-' \
+         -i vdr.c
+
+       cat > Make.config <<-EOT
+               #
+               # Generated by ebuild ${PF}
+               #
+               DVBDIR       = ${DVB_DIR}
+               PLUGINLIBDIR = ${PLUGIN_DIR}
+               CONFIGDIR    = ${CONF_DIR}
+
+               DEFINES     += -DCONFIGDIR=\"\$(CONFIGDIR)\"
+       EOT
+       eend 0
+
+       if use rcu; then
+               echo "REMOTE=RCU" >> Make.config
+               use lirc && ewarn "Only one remotes can be used: dropping lirc and keeping rcu"
+       else
+               use lirc && echo "REMOTE=LIRC" >> Make.config
+       fi
+       use vfat && echo "VFAT=1" >> Make.config
+
+       # apply standard patches
+       local MY_SOURCECAPS="${FILESDIR}/${FNAME_SOURCECAPS_NORMAL}"
+
+       epatch "${FILESDIR}/1.3.34/vdr-1.3.34-shutdown-retry.diff"
+
+       if use bigpatch; then
+               epatch "${WORKDIR}/BigPatch/bigpatch-current.diff"
+               add_cap PATCHED_BIGPATCH PATCHED_SOURCECAPS PATCHED_LNBSHARING PATCHED_AIO
+       else
+               # All these patches are included in bigpatch
+               if use aio; then
+                       if use lnbsharing; then
+                               ewarn "At the moment lnbsharing can not be combined with aio, dropping aio patch!"
+                       else
+                               epatch "../${FNAME_AIO}"
+                               add_cap PATCHED_AIO
+                       fi
+               fi
+
+               if use lnbsharing; then
+                       epatch "${DISTDIR}/${FNAME_LNBSHARING}"
+                       MY_SOURCECAPS="${FILESDIR}/${FNAME_SOURCECAPS_LNBSHARING}"
+                       add_cap PATCHED_LNBSHARING
+               fi
+
+               use sourcecaps && epatch "${MY_SOURCECAPS}"
+               add_cap PATCHED_SOURCECAPS
+
+               if use jumpplay; then
+                       if use sourcecaps; then
+                               ewarn "At the moment sourcecaps can not be combined with jumpplay, dropping jumpplay patch."
+                       else
+                               epatch "${DISTDIR}/${FNAME_JUMPPLAY}"
+                       fi
+               fi
+       fi
+
+
+
+       # apply local patches defined by variable VDR_LOCAL_PATCHES_DIR
+       if test -n "${VDR_LOCAL_PATCHES_DIR}"; then
+               echo
+               einfo "Applying local patches"
+               for LOCALPATCH in ${VDR_LOCAL_PATCHES_DIR}/${PV}/*.{diff,patch}; do
+                       test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
+               done
+       fi
+
+       if [[ -n "${VDRSOURCE_DIR}" ]]; then
+               cp -r ${S} ${T}/source-tree
+       fi
+
+
+       add_cap CAP_IRCTRL_RUNTIME_PARAM \
+               CAP_VFAT_RUNTIME_PARAM \
+               CAP_SHUTDOWN_AUTO_RETRY
+
+       echo -e ${CAPS} > ${CAP_FILE}
+}
+
+src_install() {
+       exeinto /usr/bin
+       doexe vdr
+       doexe svdrpsend.pl
+
+       insinto ${VDR_INCLUDE_DIR}
+       doins *.h
+       doins Make.config
+
+       insinto ${VDR_INCLUDE_DIR}/libsi
+       doins libsi/*.h
+
+       diropts -m755 -ovdr -gvdr
+       keepdir ${CONF_DIR}
+       keepdir ${CONF_DIR}/plugins
+       keepdir ${VDR_HOME}
+       keepdir ${VDR_HOME}/video
+
+       insinto ${CONF_DIR}
+       insopts -m0644 -ovdr -gvdr
+       doins *.conf channels.conf.*
+       insopts -m0644
+       diropts -m755
+
+
+       keepdir "${PLUGIN_DIR}"
+
+       doman vdr.1 vdr.5
+
+       insinto ${RC_DIR}
+       doins ${CAP_FILE}
+
+       if [[ -n "${VDRSOURCE_DIR}" ]]; then
+               einfo "Installing sources"
+               insinto ${VDRSOURCE_DIR}/${P}
+               doins -r ${T}/source-tree/*
+               keepdir ${VDRSOURCE_DIR}/${P}/PLUGINS/lib
+       fi
+}
+
+pkg_postinst() {
+       einfo "It is a good idea to run vdrplugin-rebuild now"
+}