]> www.vanbest.org Git - sasc-ng.git/commitdiff
remove vdr 1.4.7 compatibility code
authorleslie <unknown>
Thu, 11 Mar 2010 11:41:12 +0000 (19:41 +0800)
committerleslie <unknown>
Thu, 11 Mar 2010 11:41:12 +0000 (19:41 +0800)
13 files changed:
.hgignore
Makefile
README
README.po2i18n [deleted file]
cam.c
cam.h
contrib/sasc-ng/sc/include/vdr/config.h
contrib/sasc-ng/sc/include/vdr/i18n.h
i18n-template.c [deleted file]
i18n.h
patches/vdr-1.4.x-sc7.diff [deleted file]
po2i18n.pl [deleted file]
sc.c

index c23b951e375bb4f8263a775ab9189060fbed7717..9ad82304d1abb0987dba208691f012c119a4d398 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -11,7 +11,6 @@ po/*.pot
 *.rej
 *.bak
 version.c
-i18n.c
 FFdecsa/FFdecsa_test
 FFdecsa/FFdecsa_test.done
 dump.*
index 66bff813338682a80bf3559b39d7e2ff6c4de11b..bc5060252e3460edb0763450a17966a2434e91ef 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -88,18 +88,9 @@ OBJS = $(PLUGIN).o data.o filter.o system.o misc.o cam.o version.o \
 
 PODIR     = po
 I18Npot   = $(PODIR)/$(PLUGIN).pot
-ifeq ($(strip $(APIVERSION)),1.5.7)
-  I18Nmo  = $(PLUGIN).mo
-else
-  I18Nmo  = vdr-$(PLUGIN).mo
-endif
+I18Nmo    = vdr-$(PLUGIN).mo
 I18Nmsgs  = $(addprefix $(LOCALEDIR)/,$(addsuffix /LC_MESSAGES/$(I18Nmo),$(notdir $(foreach file, $(wildcard $(PODIR)/*.po), $(basename $(file))))))
 LOCALEDIR = $(VDRDIR)/locale
-HASLOCALE = $(shell grep -l 'I18N_DEFAULT_LOCALE' $(VDRDIR)/include/vdr/i18n.h)
-
-ifeq ($(strip $(HASLOCALE)),)
-  OBJS += i18n.o
-endif
 
 ### VDR version dependant
 
@@ -164,11 +155,7 @@ SHAREDDEFINES += -DSTATICBUILD
 else
 BUILDTARGETS = $(LIBDIR)/libvdr-$(PLUGIN).so.$(APIVERSION) systems-pre
 endif
-BUILDTARGETS += $(FFDECSATEST) systems
-
-ifneq ($(strip $(HASLOCALE)),)
-BUILDTARGETS += i18n
-endif
+BUILDTARGETS += $(FFDECSATEST) systems i18n
 
 all: $(BUILDTARGETS)
 .PHONY: i18n systems systems-pre contrib clean clean-core clean-systems clean-pre dist srcdist
@@ -216,9 +203,6 @@ $(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/$(I18Nmo): $(PODIR)/%.mo
 
 i18n: $(I18Nmsgs)
 
-i18n.c: $(PODIR)/*.po i18n-template.c po2i18n.pl
-       perl ./po2i18n.pl <i18n-template.c >i18n.c
-
 version.c: FORCE
        @echo >$@.new "/* generated file, do not edit */"; \
         echo >>$@.new 'const char *ScVersion =' '"'$(VERSION)'";'; \
@@ -244,7 +228,7 @@ clean-core:
        @if test -d $(FFDECSADIR); then $(MAKE) -C $(FFDECSADIR) clean; fi
        @-rm -f $(LIBDIR)/libsc-*-$(SCAPIVERS).so.$(APIVERSION)
        @-rm -f $(LIBDIR)/libvdr-$(PLUGIN).a $(LIBDIR)/libsc-*.a
-       @-rm -f $(OBJS) $(DEPFILE) version.c i18n.c *.so *.tar.gz core* *~
+       @-rm -f $(OBJS) $(DEPFILE) version.c *.so *.tar.gz core* *~
        @-rm -f $(PODIR)/*.mo
 
 clean-pre:
diff --git a/README b/README
index b0009c765c4b69eb2f5134e2f24b5c9783f62e8d..6db76688f839b691aa65489e8181e2d6ed17c4c5 100644 (file)
--- a/README
+++ b/README
@@ -39,7 +39,7 @@ Requirements
 
 * DVB driver from dvb-kernel 2.6 or 2.4 branch with applied patches
 * a patched firmware version 2620 or newer
-* VDR 1.5.0 or newer (VDR 1.4.6+ in compatibility mode, see 1.4.x setup section)
+* VDR 1.6.0 or newer
 * Openssl package version 0.9.7 or newer
 
 
@@ -57,15 +57,13 @@ ARM crashes, add "hw_sections=0" while loading the dvb-ttpci module.
 
 Contrary to older plugin versions (before 0.7.0) you MUST NOT apply patches to
 the VDR core (neither vdr-sc nor ffdecsa/softcsa) except if:
-- you are using VDR 1.4.x (see section below)
 - you are using VDR 1.7.8 or lower and want to view channels with split ECM
 
 To correctly decode channels with split ECM (i.e. audio and video encrypted
 with different CW) you need to apply a patch to the VDR core if you are using
 a VDR version before 1.7.9. You can find the "vdr-1.6.0-2-streamca.diff" file
 in the patches subdirectory. It has been tested with VDR 1.6.0-2 only, but
-probably will apply to other VDR versions as well. This feature is explicitely
-not supported for VDR 1.4.x.
+probably will apply to other VDR versions as well.
 
 You must have installed the openssl development files. For most distributions
 this means to install openssl-devel package. You should use a openssl package
@@ -107,23 +105,6 @@ rotated.
 
 
 
-How to setup for VDR 1.4.x ?
-----------------------------
-
-NOTE: support for VDR 1.4.7 is deprecated. As development requires, the support
-will be removed.
-
-Additional to the points mentioned above, you have to patch the VDR core with
-the supplied patch (vdr-1.4.x-sc7.diff). Recompile VDR and use the new binary.
-Patches from older SC releases are not going to work.
-
-Even with VDR 1.4.x you don't have to use a softcsa/ffdecsa patch.
-
-Activating/deactivating DVB cards in the plugin setup menu needs a VDR restart
-to take effect.
-
-
-
 Pre-compiled libraries
 ----------------------
 
diff --git a/README.po2i18n b/README.po2i18n
deleted file mode 100644 (file)
index c690235..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-        
-                  po2i18n - Converter for po files
-
-
-Written by:              Udo Richter <udo_richter@gmx.de>
-Project's homepage:      http://www.udo-richter.de/vdr/scripts.html#po2i18n
-                         http://www.udo-richter.de/vdr/scripts.en.html#po2i18n
-
-
-
-About
---------------------------------------------------------------------------
-po2i18n is a perl script that generates an i18n.c file compatible to the i18n
-system of VDR 1.2.0 - VDR 1.5.6, based on the .po files of VDR 1.5.7. This
-allows plugins to transit to the translation system of VDR 1.5.7 while 
-maintaining compatibility to earlier versions. The script can be used manually
-or automatically as part of the Makefile.
-
-
-Use
---------------------------------------------------------------------------
-po2i18n.pl is a filter and can be used manually like this:
-
-  ./po2i18n.pl < i18n-template.c > i18n.c
-  
-The filter reads all relevant ./po/*.po files and writes the i18n strings
-into the template file. Strings will be added between the following two lines:
-
-  // START I18N
-  // END I18N
-
-See also the sample i18n.h and i18n-template.c file. Note that the phrases data
-structure is encapsulated in #if VDRVERSNUM < 10507, so the i18n strings won't 
-be in the plugin file after 1.5.7. The call to RegisterI18n() of your plugin 
-should also be encapsulated like this.
-
-po2i18n can also generate the i18n.c file on the fly while compiling. The 
-changes to the Makefile are demonstrated by the included Makefile.diff sample.
-With these changes, the i18n.c file will be generated on VDR up to 1.5.6, and
-the whole gettext conversion is skipped. From 1.5.7 on, the i18n-template.c 
-file will be simply copied as a dummy, and the new locale system will run.
-
-As a drawback, the automatic .dependencies for i18n.c won't work.
-
diff --git a/cam.c b/cam.c
index e08ec9962ce099ad42a0c8c084559f4e63bd0403..f19e99a29c3ee0172c9d223b0ff991554d33da76 100644 (file)
--- a/cam.c
+++ b/cam.c
@@ -29,9 +29,7 @@
 #include <vdr/ci.h>
 #include <vdr/dvbdevice.h>
 #ifndef SASC
-#if APIVERSNUM >= 10500
 #include <vdr/dvbci.h>
-#endif
 #include <vdr/thread.h>
 
 #include "FFdecsa/FFdecsa.h"
@@ -1916,8 +1914,6 @@ void cCam::RemHandler(cEcmHandler *handler)
 
 // --- cChannelCaids -----------------------------------------------------------
 
-#if APIVERSNUM >= 10500
-
 class cChannelCaids : public cSimpleItem {
 private:
   int prg, source, transponder;
@@ -2695,8 +2691,6 @@ bool cScCiAdapter::Assign(cDevice *Device, bool Query)
   return Device ? (Device==device) : true;
 }
 
-#endif //APIVERSNUM >= 10500
-
 // -- cDeCSA -------------------------------------------------------------------
 
 #define MAX_CSA_PIDS 8192
@@ -3206,11 +3200,7 @@ cScDevice::cScDevice(int Adapter, int Frontend, int cafd)
 #endif
 {
   decsa=0; tsBuffer=0; cam=0; fullts=false;
-#if APIVERSNUM >= 10500
   ciadapter=0; hwciadapter=0;
-#else
-  memset(lrucaid,0,sizeof(lrucaid));
-#endif
   fd_ca=cafd; fd_ca2=dup(fd_ca); fd_dvr=-1;
   softcsa=(fd_ca<0);
 }
@@ -3222,18 +3212,14 @@ cScDevice::~cScDevice()
   EarlyShutdown();
   delete decsa;
   if(fd_ca>=0) close(fd_ca);
-#if APIVERSNUM >= 10500
   if(fd_ca2>=0) close(fd_ca2);
-#endif
 }
 
 void cScDevice::EarlyShutdown(void)
 {
-#if APIVERSNUM >= 10500
   SetCamSlot(0);
   delete ciadapter; ciadapter=0;
   delete hwciadapter; hwciadapter=0;
-#endif
   if(cam) cam->Stop();
   delete cam; cam=0;
 }
@@ -3251,17 +3237,9 @@ void cScDevice::LateInit(void)
     softcsa=true;
     }
   
-#if APIVERSNUM >= 10500
   if(fd_ca2>=0) hwciadapter=cDvbCiAdapter::CreateCiAdapter(this,fd_ca2);
   cam=new cCam(this,n);
   ciadapter=new cScCiAdapter(this,n,cam);
-#else
-  if(fd_ca2>=0) {
-    ciHandler=cCiHandler::CreateCiHandler(fd_ca2);
-    if(!ciHandler) close(fd_ca2);
-    }
-  cam=ScSetup.CapCheck(n) ? new cCam(this,n):0;
-#endif
   if(softcsa) {
     decsa=new cDeCSA(n);
     if(IsPrimaryDevice() && HasDecoder()) {
@@ -3272,20 +3250,16 @@ void cScDevice::LateInit(void)
     }
 }
 
-#if APIVERSNUM >= 10501
 bool cScDevice::HasCi(void)
 {
   return ciadapter || hwciadapter;
 }
-#endif
 
-#if APIVERSNUM >= 10500
 bool cScDevice::Ready(void)
 {
   return (ciadapter   ? ciadapter->Ready():true) &&
          (hwciadapter ? hwciadapter->Ready():true);
 }
-#endif
 
 bool cScDevice::SetPid(cPidHandle *Handle, int Type, bool On)
 {
@@ -3298,112 +3272,15 @@ bool cScDevice::SetPid(cPidHandle *Handle, int Type, bool On)
 
 bool cScDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
 {
-#if APIVERSNUM < 10500
-  SetChannelLRU(Channel);
-#endif
   if(cam) cam->Tune(Channel);
   bool ret=cDvbDevice::SetChannelDevice(Channel,LiveView);
   if(ret && cam) cam->PostTune();
   return ret;
 }
 
-#if APIVERSNUM < 10500
-int cScDevice::ProvidesCa(const cChannel *Channel) const
-{
-  if(cam && Channel->Ca()>=CA_ENCRYPTED_MIN) {
-    int caid;
-    for(int j=0; (caid=Channel->Ca(j)); j++)
-      if(!overrides.Ignore(Channel->Source(),Channel->Transponder(),caid)) {
-        int n=cSystems::CanHandle(caid,!softcsa);
-        if(n<0) break;
-        if(n>0) return 2;
-        }
-    }
-  return cDvbDevice::ProvidesCa(Channel);
-}
-
-bool cScDevice::CiAllowConcurrent(void) const
-{
-  return softcsa || ScSetup.ConcurrentFF>0;
-}
-
-bool cScDevice::GetPrgCaids(int source, int transponder, int prg, caid_t *c)
-{
-  cMutexLock lock(&lruMutex);
-  int i=FindLRUPrg(source,transponder,prg);
-  if(i>=0) {
-    for(int j=0; j<MAXCAIDS && lrucaid[i].caids[j]; j++) *c++=lrucaid[i].caids[j];
-    *c=0;
-    return true;
-    }
-  return false;
-}
-
-int cScDevice::FindLRUPrg(int source, int transponder, int prg)
-{
-  for(int i=0; i<MAX_LRU_CAID; i++)
-    if(lrucaid[i].src==source && lrucaid[i].tr==transponder && lrucaid[i].prg==prg) return i;
-  return -1;
-}
-
-void cScDevice::SetChannelLRU(const cChannel *Channel)
-{
-  lruMutex.Lock();
-  int i=FindLRUPrg(Channel->Source(),Channel->Transponder(),Channel->Sid());
-  if(i<0) i=MAX_LRU_CAID-1;
-  if(i>0) memmove(&lrucaid[1],&lrucaid[0],sizeof(struct LruCaid)*i);
-  for(i=0; i<=MAXCAIDS; i++) if((lrucaid[0].caids[i]=Channel->Ca(i))==0) break;
-  lrucaid[0].src=Channel->Source();
-  lrucaid[0].tr=Channel->Transponder();
-  lrucaid[0].prg=Channel->Sid();
-  lruMutex.Unlock();
-}
-
-void cScDevice::CiStartDecrypting(void)
-{
-  if(cam) {
-    cSimpleList<cPrg> prgList;
-    for(cCiCaProgramData *p=ciProgramList.First(); p; p=ciProgramList.Next(p)) {
-      if(p->modified) {
-        cPrg *prg=new cPrg(p->programNumber,cam->HasPrg(p->programNumber));
-        if(prg) {
-          bool haspid=false;
-          for(cCiCaPidData *q=p->pidList.First(); q; q=p->pidList.Next(q)) {
-            if(q->active) {
-              prg->pids.Add(new cPrgPid(q->streamType,q->pid));
-              haspid=true;
-              }
-            }
-          if(haspid) {
-            caid_t casys[MAXCAIDS+1];
-            if(GetPrgCaids(ciSource,ciTransponder,p->programNumber,casys)) {
-              unsigned char buff[2048];
-              bool streamflag;
-              int len=GetCaDescriptors(ciSource,ciTransponder,p->programNumber,casys,sizeof(buff),buff,streamflag);
-              if(len>0) prg->caDescr.Set(buff,len);
-              }
-            }
-          prgList.Add(prg);
-          }
-        p->modified=false;
-        }
-      }
-    for(int loop=1; loop<=2; loop++) // first delete, then add
-      for(cPrg *prg=prgList.First(); prg; prg=prgList.Next(prg))
-        if((loop==1)!=(prg->pids.Count()>0))
-          cam->AddPrg(prg);
-    }
-  cDvbDevice::CiStartDecrypting();
-}
-#endif //APIVERSNUM < 10500
-
 bool cScDevice::ScActive(void)
 {
-#if APIVERSNUM >= 10500
   return dynamic_cast<cScCamSlot *>(CamSlot())!=0;
-#else
-  return cam && softcsa;
-#endif
 }
 
 bool cScDevice::OpenDvr(void)
@@ -3439,10 +3316,8 @@ bool cScDevice::SoftCSA(bool live)
 
 void cScDevice::CaidsChanged(void)
 {
-#if APIVERSNUM >= 10500
   if(ciadapter) ciadapter->CaidsChanged();
   PRINTF(L_CORE_CAIDS,"caid list rebuild triggered");
-#endif
 }
 
 bool cScDevice::SetCaDescr(ca_descr_t *ca_descr, bool initial)
diff --git a/cam.h b/cam.h
index e05cd6438273de78d49a34bdcf853f6b0b98b07e..74603fb3c410dada389cf89e5bf40efc13852ca5 100644 (file)
--- a/cam.h
+++ b/cam.h
@@ -112,11 +112,7 @@ public:
 
 // ----------------------------------------------------------------
 
-#if APIVERSNUM >= 10500
 typedef int caid_t;
-#else
-typedef unsigned short caid_t;
-#endif
 
 #define MAX_CW_IDX        16
 #define MAX_CI_SLOTS      8
@@ -211,10 +207,8 @@ private:
   cDeCSA *decsa;
   cDeCsaTSBuffer *tsBuffer;
   cMutex tsMutex;
-#if APIVERSNUM >= 10500
   cScCiAdapter *ciadapter;
   cCiAdapter *hwciadapter;
-#endif
   cCam *cam;
   int fd_dvr, fd_ca, fd_ca2;
   bool softcsa, fullts;
@@ -227,26 +221,9 @@ private:
   bool ScActive(void);
 #endif //SASC
   //
-#if APIVERSNUM < 10500
-#define MAX_LRU_CAID 10
-  struct LruCaid {
-    int src, tr, prg;
-    caid_t caids[MAXCAIDS+1];
-    } lrucaid[MAX_LRU_CAID];
-  cMutex lruMutex;
-  //
-  int FindLRUPrg(int source, int transponder, int prg);
-  bool GetPrgCaids(int source, int transponder, int prg, caid_t *c);
-  void SetChannelLRU(const cChannel *Channel);
-#endif
 protected:
 #ifndef SASC
-#if APIVERSNUM >= 10500
   virtual bool Ready(void);
-#else
-  virtual void CiStartDecrypting(void);
-  virtual bool CiAllowConcurrent(void) const;
-#endif
   virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
   virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
   virtual bool OpenDvr(void);
@@ -257,12 +234,7 @@ public:
   cScDevice(int Adapter, int Frontend, int cafd);
   ~cScDevice();
 #ifndef SASC
-#if APIVERSNUM >= 10501
   virtual bool HasCi(void);
-#endif
-#if APIVERSNUM < 10500
-  virtual int ProvidesCa(const cChannel *Channel) const;
-#endif
 #endif //SASC
   virtual bool SetCaDescr(ca_descr_t *ca_descr, bool initial);
   virtual bool SetCaPid(ca_pid_t *ca_pid);
index aa4cfe87a09bfeee464b0e77fe7f50a746761459..964ba4fd12f4bbfdc4015e9b6b04105a9a8108f6 100644 (file)
 
 // VDR's own version number:
 
-#define VDRVERSION  "1.5.5"
-#define VDRVERSNUM   10505  // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION  "1.6.0"
+#define VDRVERSNUM   10600  // Version * 10000 + Major * 100 + Minor
 
 // The plugin API's version number:
 
-#define APIVERSION  "1.5.5"
-#define APIVERSNUM   10505  // Version * 10000 + Major * 100 + Minor
+#define APIVERSION  "1.6.0"
+#define APIVERSNUM   10600  // Version * 10000 + Major * 100 + Minor
 
 // When loading plugins, VDR searches them by their APIVERSION, which
 // may be smaller than VDRVERSION in case there have been no changes to
index 7f9f0659cc4a0b53822d2c2a4755efe41caa918f..3d1d8ec8ac3121f75de3ceda51b96916a10db3a8 100644 (file)
@@ -44,4 +44,6 @@ bool I18nIsPreferredLanguage(int *PreferredLanguages, const char *LanguageCode,
 #define tr(s)  I18nTranslate(s)
 #endif
 
+#define trNOOP(s) (s)
+
 #endif //__I18N_H
diff --git a/i18n-template.c b/i18n-template.c
deleted file mode 100644 (file)
index 2678e03..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 
- * Auto generated file, do not edit
- * Will be overwritten/deleted without warning
- * 
- * Edit the .po files if you want to update translations!!
- */
-
-#include "i18n.h"
-
-#if VDRVERSNUM < 10507
-
-const tI18nPhrase ScPhrases[] = {
-// START I18N
-// END I18N
-  { NULL }
-  };
-
-#endif
diff --git a/i18n.h b/i18n.h
index 151afb168fac5251126064b21686b739542d25e1..2df5a56e32262b3d1207b9dead2937c3aad207cd 100644 (file)
--- a/i18n.h
+++ b/i18n.h
@@ -22,9 +22,4 @@
 
 #include <vdr/i18n.h>
 
-#if APIVERSNUM < 10507
-extern const tI18nPhrase ScPhrases[];
-#define trNOOP(s) (s)
-#endif
-
 #endif //___I18N_H
diff --git a/patches/vdr-1.4.x-sc7.diff b/patches/vdr-1.4.x-sc7.diff
deleted file mode 100644 (file)
index 8ee66ef..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/ci.c vdr-1.4.7-sc7/ci.c
---- vdr-1.4.7-orig/ci.c        2007-04-30 14:58:41.000000000 +0200
-+++ vdr-1.4.7-sc7/ci.c 2007-05-13 18:04:04.000000000 +0200
-@@ -1502,9 +1502,8 @@
-   close(fd);
- }
--cCiHandler *cCiHandler::CreateCiHandler(const char *FileName)
-+cCiHandler *cCiHandler::CreateCiHandler(int fd_ca)
- {
--  int fd_ca = open(FileName, O_RDWR);
-   if (fd_ca >= 0) {
-      ca_caps_t Caps;
-      if (ioctl(fd_ca, CA_GET_CAP, &Caps) == 0) {
-@@ -1520,8 +1519,7 @@
-            esyslog("ERROR: no CAM slots found");
-         }
-      else
--        LOG_ERROR_STR(FileName);
--     close(fd_ca);
-+        LOG_ERROR_STR("CA_GET_CAP");
-      }
-   return NULL;
- }
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/ci.h vdr-1.4.7-sc7/ci.h
---- vdr-1.4.7-orig/ci.h        2006-08-12 11:43:31.000000000 +0200
-+++ vdr-1.4.7-sc7/ci.h 2007-06-24 19:46:39.000000000 +0200
-@@ -85,10 +85,12 @@
- class cCiCaProgramData : public cListObject {
- public:
-   int programNumber;
-+  bool modified;
-   cList<cCiCaPidData> pidList;
-   cCiCaProgramData(int ProgramNumber)
-   {
-     programNumber = ProgramNumber;
-+    modified = true;
-   }
-   };
-@@ -96,6 +98,8 @@
- class cCiTransportLayer;
- class cCiTransportConnection;
-+#define VDR_IS_SC_PATCHED 402
-+
- class cCiHandler {
- private:
-   cMutex mutex;
-@@ -123,7 +127,7 @@
-   void SendCaPmt(void);
- public:
-   ~cCiHandler();
--  static cCiHandler *CreateCiHandler(const char *FileName);
-+  static cCiHandler *CreateCiHandler(int fd_ca);
-        ///< Creates a new cCiHandler for the given CA device.
-   int NumSlots(void) { return numSlots; }
-        ///< Returns the number of CAM slots provided by this CA device.
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/device.c vdr-1.4.7-sc7/device.c
---- vdr-1.4.7-orig/device.c    2006-09-03 12:13:25.000000000 +0200
-+++ vdr-1.4.7-sc7/device.c     2007-05-13 18:30:57.000000000 +0200
-@@ -395,6 +395,54 @@
-   return false;
- }
-+void cDevice::CiStartDecrypting(void)
-+{
-+  if (ciHandler)
-+     ciHandler->StartDecrypting();
-+}
-+
-+void cDevice::CiSetSource(int Source, int Transponder)
-+{
-+  cMutexLock MutexLock(&ciListMutex);
-+  if (ciSource != Source || ciTransponder != Transponder)
-+     ciProgramList.Clear();
-+  ciSource = Source;
-+  ciTransponder = Transponder;
-+}
-+
-+void cDevice::CiAddPid(int ProgramNumber, int Pid, int StreamType)
-+{
-+  cMutexLock MutexLock(&ciListMutex);
-+  cCiCaProgramData *ProgramData = NULL;
-+  for (cCiCaProgramData *p = ciProgramList.First(); p; p = ciProgramList.Next(p)) {
-+      if (p->programNumber == ProgramNumber) {
-+         ProgramData = p;
-+         for (cCiCaPidData *q = p->pidList.First(); q; q = p->pidList.Next(q)) {
-+             if (q->pid == Pid)
-+                return;
-+             }
-+         }
-+      }
-+  if (!ProgramData)
-+     ciProgramList.Add(ProgramData = new cCiCaProgramData(ProgramNumber));
-+  ProgramData->pidList.Add(new cCiCaPidData(Pid, StreamType));
-+  ProgramData->modified=true;
-+}
-+
-+void cDevice::CiSetPid(int Pid, bool Active)
-+{
-+  cMutexLock MutexLock(&ciListMutex);
-+  for (cCiCaProgramData *p = ciProgramList.First(); p; p = ciProgramList.Next(p)) {
-+      for (cCiCaPidData *q = p->pidList.First(); q; q = p->pidList.Next(q)) {
-+          if (q->pid == Pid) {
-+             q->active = Active;
-+             p->modified = true;
-+             return;
-+             }
-+         }
-+      }
-+}
-+
- bool cDevice::AddPid(int Pid, ePidType PidType)
- {
-   if (Pid || PidType == ptPcr) {
-@@ -424,6 +472,7 @@
-               }
-            if (ciHandler)
-               ciHandler->SetPid(Pid, true);
-+           CiSetPid(Pid, true);
-            }
-         PRINTPIDS("a");
-         return true;
-@@ -453,6 +502,7 @@
-            }
-         if (ciHandler)
-            ciHandler->SetPid(Pid, true);
-+        CiSetPid(Pid, true);
-         }
-      }
-   return true;
-@@ -481,6 +531,7 @@
-               pidHandles[n].pid = 0;
-               if (ciHandler)
-                  ciHandler->SetPid(Pid, false);
-+              CiSetPid(Pid, false);
-               }
-            }
-         PRINTPIDS("E");
-@@ -663,6 +714,16 @@
-            }
- #endif
-         }
-+
-+     CiSetSource(Channel->Source(), Channel->Transponder());
-+     if (Channel->Ca() >= CA_ENCRYPTED_MIN) {
-+        CiAddPid(Channel->Sid(), Channel->Vpid(), 2);
-+        for (const int *Apid = Channel->Apids(); *Apid; Apid++)
-+            CiAddPid(Channel->Sid(), *Apid, 4);
-+        for (const int *Dpid = Channel->Dpids(); *Dpid; Dpid++)
-+            CiAddPid(Channel->Sid(), *Dpid, 0);
-+        }
-+
-      if (NeedsDetachReceivers)
-         DetachAllReceivers();
-      if (SetChannelDevice(Channel, LiveView)) {
-@@ -672,8 +733,7 @@
-            sectionHandler->SetStatus(true);
-            }
-         // Start decrypting any PIDs that might have been set in SetChannelDevice():
--        if (ciHandler)
--           ciHandler->StartDecrypting();
-+        CiStartDecrypting();
-         }
-      else
-         Result = scrFailed;
-@@ -1258,8 +1318,7 @@
-          Unlock();
-          if (!Running())
-             Start();
--         if (ciHandler)
--            ciHandler->StartDecrypting();
-+         CiStartDecrypting();
-          return true;
-          }
-       }
-@@ -1286,8 +1345,7 @@
-       else if (receiver[i])
-          receiversLeft = true;
-       }
--  if (ciHandler)
--     ciHandler->StartDecrypting();
-+  CiStartDecrypting();
-   if (!receiversLeft)
-      Cancel(3);
- }
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/device.h vdr-1.4.7-sc7/device.h
---- vdr-1.4.7-orig/device.h    2006-06-15 11:32:48.000000000 +0200
-+++ vdr-1.4.7-sc7/device.h     2007-05-13 18:04:04.000000000 +0200
-@@ -311,6 +311,14 @@
- protected:
-   cCiHandler *ciHandler;
-+  int ciSource, ciTransponder;
-+  cList<cCiCaProgramData> ciProgramList;
-+  cMutex ciListMutex;
-+  virtual void CiStartDecrypting(void);
-+  virtual bool CiAllowConcurrent(void) const { return false; }
-+  void CiSetSource(int Source, int Transponder);
-+  void CiAddPid(int ProgramNumber, int Pid, int StreamType);
-+  void CiSetPid(int Pid, bool Active);
- public:
-   cCiHandler *CiHandler(void) { return ciHandler; }
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/dvbdevice.c vdr-1.4.7-sc7/dvbdevice.c
---- vdr-1.4.7-orig/dvbdevice.c 2007-02-24 12:10:14.000000000 +0100
-+++ vdr-1.4.7-sc7/dvbdevice.c  2007-06-24 19:42:24.000000000 +0200
-@@ -419,7 +419,11 @@
-      dvb_frontend_info feinfo;
-      if (ioctl(fd_frontend, FE_GET_INFO, &feinfo) >= 0) {
-         frontendType = feinfo.type;
--        ciHandler = cCiHandler::CreateCiHandler(*cDvbName(DEV_DVB_CA, n));
-+        int fd_ca = DvbOpen(DEV_DVB_CA, n, O_RDWR);
-+        if(fd_ca>=0) {
-+          ciHandler = cCiHandler::CreateCiHandler(fd_ca);
-+          if(!ciHandler) close(fd_ca);
-+          }
-         dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType, ciHandler);
-         }
-      else
-@@ -776,8 +780,12 @@
-            if (Channel->Vpid() && !HasPid(Channel->Vpid()) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) {
- #ifdef DO_MULTIPLE_RECORDINGS
- #ifndef DO_MULTIPLE_CA_CHANNELS
--              if (Ca() >= CA_ENCRYPTED_MIN || Channel->Ca() >= CA_ENCRYPTED_MIN)
--                 needsDetachReceivers = Ca() != Channel->Ca();
-+              if (Ca() >= CA_ENCRYPTED_MIN || Channel->Ca() >= CA_ENCRYPTED_MIN) {
-+                 if(Channel->Ca()<CA_ENCRYPTED_MIN || CiAllowConcurrent())
-+                   result = true;
-+                 else
-+                   needsDetachReceivers = Ca() != Channel->Ca();
-+                 }
-               else
- #endif
-               if (!IsPrimaryDevice())
-@@ -927,7 +935,7 @@
-            SetPid(&pidHandles[ptAudio], ptAudio, true);
-            if (ciHandler) {
-               ciHandler->SetPid(pidHandles[ptAudio].pid, true);
--              ciHandler->StartDecrypting();
-+              CiStartDecrypting();
-               }
-            }
-         }
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/tools.c vdr-1.4.7-sc7/tools.c
---- vdr-1.4.7-orig/tools.c     2006-12-02 12:12:59.000000000 +0100
-+++ vdr-1.4.7-sc7/tools.c      2007-05-13 18:04:04.000000000 +0200
-@@ -542,9 +542,9 @@
- // --- cTimeMs ---------------------------------------------------------------
--cTimeMs::cTimeMs(void)
-+cTimeMs::cTimeMs(int Ms)
- {
--  Set();
-+  Set(Ms);
- }
- uint64_t cTimeMs::Now(void)
-diff -urN -X ex.vdr-sc7 vdr-1.4.7-orig/tools.h vdr-1.4.7-sc7/tools.h
---- vdr-1.4.7-orig/tools.h     2006-12-03 18:38:38.000000000 +0100
-+++ vdr-1.4.7-sc7/tools.h      2007-05-13 18:04:04.000000000 +0200
-@@ -162,7 +162,7 @@
- private:
-   uint64_t begin;
- public:
--  cTimeMs(void);
-+  cTimeMs(int Ms = 0);
-   static uint64_t Now(void);
-   void Set(int Ms = 0);
-   bool TimedOut(void);
diff --git a/po2i18n.pl b/po2i18n.pl
deleted file mode 100644 (file)
index cef8092..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/usr/bin/perl
-#
-#  po2i18n - Convert plugin po files in into i18n.c-format
-#
-#  See the README file for copyright information and how to reach the author.
-#
-
-use strict;
-use warnings;
-
-my @LANGS = (
-  "en_US",
-  "de_DE",
-  "sl_SI",
-  "it_IT",
-  "nl_NL",
-  "pt_PT",
-  "fr_FR",
-  "nn_NO",
-  "fi_FI",
-  "pl_PL",
-  "es_ES",
-  "el_GR",
-  "sv_SE",
-  "ro_RO",
-  "hu_HU",
-  "ca_ES",
-  "ru_RU",
-  "hr_HR",
-  "et_EE",
-  "da_DK",
-  "cs_CZ",
-  "tr_TR"
-  );
-
-my %VERS = (
-  "en_US" => 10200,
-  "de_DE" => 10200,
-  "sl_SI" => 10200,
-  "it_IT" => 10200,
-  "nl_NL" => 10200,
-  "pt_PT" => 10200,
-  "fr_FR" => 10200,
-  "nn_NO" => 10200,
-  "fi_FI" => 10200,
-  "pl_PL" => 10200,
-  "es_ES" => 10200,
-  "el_GR" => 10200,
-  "sv_SE" => 10200,
-  "ro_RO" => 10200,
-  "hu_HU" => 10200,
-  "ca_ES" => 10200,
-  "ru_RU" => 10302,
-  "hr_HR" => 10307,
-  "et_EE" => 10313,
-  "da_DK" => 10316,
-  "cs_CZ" => 10342,
-  "tr_TR" => 10502
-  );
-
-
-my %strings;
-
-foreach my $lang (@LANGS) { $strings{$lang} = { }; }
-
-
-sub LoadLanguage(*) {
-    my ($lang) = @_;
-    
-    if (!open FILE, "<", "po/$lang.po") {
-        return 0;   
-    }
-    
-    my $msgid = "";
-    my $msgstr = "";
-    my $last = 0; # 0=init, 1=msgid was last, 2=msgstr was last
-    
-    while (<FILE>) {
-        chomp;
-        my $line = $_;
-        
-        if ($line =~ /^msgid "(.*)"$/) {
-            if ($last eq 2) {
-                $strings{$lang}->{$msgid} = $msgstr;
-                $strings{"en_US"}->{$msgid} = $msgid;
-            }
-            $msgid = $1;
-            $last = 1;
-        } elsif ($line =~ /^msgstr "(.*)"/) {
-            $msgstr = $1;
-            $last = 2;
-        } elsif ($line =~ /^"(.*)"/) {
-            if ($last eq 1) {
-                $msgid = $msgid . $1;
-            } elsif ($last eq 2) {
-                $msgstr = $msgstr . $1;
-            }
-        }       
-    }
-    if ($last eq 2) {
-        $strings{$lang}->{$msgid} = $msgstr;
-        $strings{"en_US"}->{$msgid} = $msgid;
-    }
-    
-    close FILE;
-}
-
-
-
-foreach my $lang (@LANGS) { 
-    LoadLanguage($lang);
-}
-
-my @msgids = sort keys %{$strings{"en_US"}};
-
-
-my $silent = 0;
-
-while (<>) {
-    my $line = $_;
-
-    if ($line =~ /^\/\/ START I18N/) {
-        print "// START I18N - automatically generated by po2i18n.pl\n";
-        for my $msgid (@msgids) {
-            next if $msgid eq "";
-
-            my $head = "  { ";
-            my $endif = "";
-            my $versnum = 10200;
-            
-            for my $lang (@LANGS) {
-                if ($VERS{$lang} ne $versnum) {
-                    $versnum = $VERS{$lang};
-                    print $endif;
-                    print "#if VDRVERSNUM >= $versnum\n";
-                    $endif = "#endif\n";
-                }
-                my $msgstr = $strings{$lang}->{$msgid};
-                $msgstr = "" if !defined $msgstr;
-                
-                print "$head\"$msgstr\",\n";
-                $head = "    ";
-            }
-            print $endif;
-            print "  },\n";
-        }
-        $silent = 1;
-    }
-
-    if (!$silent) { print $line; }
-
-    if ($line =~ /^\/\/ END I18N/) { 
-        print "// END I18N - automatically generated by po2i18n.pl\n";
-        $silent = 0; 
-    }    
-}
diff --git a/sc.c b/sc.c
index 1ec9f4a88138dbc59bb19dd7db600c30fba51072..fb426c0563c2e4bd231645db8bd9fe2afcf081c2 100644 (file)
--- a/sc.c
+++ b/sc.c
 #include "version.h"
 
 #define MIN_VERS   1 // required VDR version
-#define MIN_MAJOR  4
-#define MIN_MINOR  6
-#define MINAPIVERSNUM 10405
+#define MIN_MAJOR  6
+#define MIN_MINOR  0
+#define MINAPIVERSNUM 10600
 
 // some sanity checks
 #ifdef HAVE_SOFTCSA
 #error softcsa/ffdecsa patch MUST NOT be applied. Next time read the README first.
 #endif
-#if APIVERSNUM >= 10500
 #ifdef VDR_IS_SC_PATCHED
 #error You MUST NOT patch the VDR core. Next time read the README first.
 #endif
-#else //APIVERSNUM >= 10500
-#if !defined(VDR_IS_SC_PATCHED)
-#error You MUST patch the VDR core with the supplied patch. Next time read the README first.
-#endif
-#if VDR_IS_SC_PATCHED<402
-#error Your VDR core is patched with an outdated patch version. Please upgrade to the supplied version.
-#endif
-#endif //APIVERSNUM >= 10500
 #if APIVERSNUM<MINAPIVERSNUM
 #error Your VDR API version is too old. See README.
 #endif
@@ -1312,9 +1303,6 @@ bool cScPlugin::Start(void)
     }
     
   ScPlugin=this;
-#if APIVERSNUM < 10507
-  RegisterI18n(ScPhrases);
-#endif
   const char *cfgdir=ConfigDirectory(cfgsub);
   filemaps.SetCfgDir(cfgdir);
   cStructLoaders::SetCfgDir(cfgdir);
@@ -1331,9 +1319,6 @@ void cScPlugin::Stop(void)
   cScDevices::Shutdown();
   LogStatsDown();
   cSoftCAM::Shutdown();
-#if APIVERSNUM < 10507
-  RegisterI18n(NULL);
-#endif
   PRINTF(L_GEN_DEBUG,"SC cleanup done");
 }