From 71775ebd4b0e7bd61d36c53e9f557f924243f752 Mon Sep 17 00:00:00 2001 From: mirv Date: Fri, 4 Jan 2008 16:49:58 +0100 Subject: [PATCH] remove old loader code. ca.cache is gone --- cam.c | 1 - data.c | 177 ------------------------------------ data.h | 36 -------- sc.c | 4 - systems/irdeto/irdeto.c | 1 - systems/nagra/nagra1.c | 2 - systems/nagra/nagra2.c | 2 - systems/seca/seca.c | 1 - systems/viaccess/viaccess.c | 1 - 9 files changed, 225 deletions(-) diff --git a/cam.c b/cam.c index 0fc0372..1a20284 100644 --- a/cam.c +++ b/cam.c @@ -1212,7 +1212,6 @@ void cEcmHandler::EcmOk(void) if(e->Cached() && e->Failed()) ecmcache.Delete(e); e=ecmList.Next(e); } - cLoaders::SaveCache(); } void cEcmHandler::EcmFail(void) diff --git a/data.c b/data.c index 9a47ed0..6e0897c 100644 --- a/data.c +++ b/data.c @@ -31,7 +31,6 @@ #include "log-core.h" #define KEY_FILE "SoftCam.Key" -#define CACACHE_FILE "ca.cache" #define EXT_AU_INT (15*60*1000) // ms interval for external AU #define EXT_AU_MIN ( 2*60*1000) // ms min. interval for external AU @@ -446,7 +445,6 @@ void cStructLoaderPlain::PreSave(FILE *f) "## This file will be OVERWRITTEN WITHOUT WARNING!!\n"); } - // -- cStructLoaders ----------------------------------------------------------- #define RELOAD_TIMEOUT 20000 @@ -521,181 +519,6 @@ bool cConfRead::ConfRead(const char *type, const char *filename, bool missingok) return res; } -// -- cLineDummy --------------------------------------------------------------- - -class cLineDummy : public cSimpleItem { -private: - char *store; -public: - cLineDummy(void); - ~cLineDummy(); - bool Parse(const char *line); - bool Save(FILE *f); - }; - -cLineDummy::cLineDummy(void) -{ - store=0; -} - -cLineDummy::~cLineDummy() -{ - free(store); -} - -bool cLineDummy::Parse(const char *line) -{ - free(store); - store=strdup(line); - return store!=0; -} - -bool cLineDummy::Save(FILE *f) -{ - fprintf(f,"%s",store); - return ferror(f)==0; -} - -// -- cLoaderDummy ------------------------------------------------------------- - -class cLoaderDummy : public cSimpleList, public cLoader { -public: - cLoaderDummy(const char *Id); - virtual bool ParseLine(const char *line, bool fromCache); - virtual bool Save(FILE *f); - }; - -cLoaderDummy::cLoaderDummy(const char *id) -:cLoader(id) -{} - -bool cLoaderDummy::ParseLine(const char *line, bool fromCache) -{ - if(fromCache) { - cLineDummy *k=new cLineDummy; - if(k) { - if(k->Parse(line)) Add(k); - else delete k; - return true; - } - PRINTF(L_GEN_ERROR,"not enough memory for %s loader dummy!",Id()); - } - return false; -} - -bool cLoaderDummy::Save(FILE *f) -{ - bool res=true; - for(cLineDummy *k=First(); k; k=Next(k)) - if(!k->Save(f)) { res=false; break; } - Modified(!res); - return res; -} - -// -- cLoader ------------------------------------------------------------------ - -cLoader::cLoader(const char *Id) -{ - id=Id; modified=false; - cLoaders::Register(this); -} - -// -- cLoaders ----------------------------------------------------------------- - -cLoader *cLoaders::first=0; -cMutex cLoaders::lock; -char *cLoaders::cacheFile=0; - -void cLoaders::Register(cLoader *ld) -{ - PRINTF(L_CORE_DYN,"loaders: registering loader %s",ld->id); - ld->next=first; - first=ld; -} - -void cLoaders::LoadCache(const char *cfgdir) -{ - lock.Lock(); - cacheFile=strdup(AddDirectory(cfgdir,CACACHE_FILE)); - if(access(cacheFile,F_OK)==0) { - PRINTF(L_GEN_INFO,"loading ca cache from %s",cacheFile); - FILE *f=fopen(cacheFile,"r"); - if(f) { - char buf[512]; - cLoader *ld=0; - while(fgets(buf,sizeof(buf),f)) { - if(!index(buf,'\n')) - PRINTF(L_GEN_ERROR,"loaders fgets readbuffer overflow"); - if(buf[0]=='#') continue; - if(!strncmp(buf,":::",3)) { // new loader section - ld=FindLoader(stripspace(&buf[3])); - if(!ld) { - PRINTF(L_CORE_LOAD,"unknown loader section '%s', adding dummy",&buf[3]); - ld=new cLoaderDummy(strdup(&buf[3])); - } - } - else if(ld) { - if(!ld->ParseLine(buf,true)) { - PRINTF(L_CORE_LOAD,"loader '%s' failed on line '%s'",ld->Id(),buf); - } - } - } - fclose(f); - } - else LOG_ERROR_STR(cacheFile); - } - lock.Unlock(); -} - -void cLoaders::SaveCache(void) -{ - lock.Lock(); - if(cacheFile && IsModified()) { - cSafeFile f(cacheFile); - if(f.Open()) { - fprintf(f,"## This is a generated file. DO NOT EDIT!!\n" - "## This file will be OVERWRITTEN WITHOUT WARNING!!\n"); - - cLoader *ld=first; - while(ld) { - fprintf(f,":::%s\n",ld->Id()); - if(!ld->Save(f)) break; - ld=ld->next; - } - f.Close(); - PRINTF(L_CORE_LOAD,"saved cache to file"); - } - } - lock.Unlock(); -} - -bool cLoaders::IsModified(void) -{ - bool res=false; - lock.Lock(); - cLoader *ld=first; - while(ld) { - if(ld->IsModified()) { - res=true; break; - } - ld=ld->next; - } - lock.Unlock(); - return res; -} - -cLoader *cLoaders::FindLoader(const char *id) -{ - lock.Lock(); - cLoader *ld=first; - while(ld) { - if(!strcmp(id,ld->Id())) break; - ld=ld->next; - } - lock.Unlock(); - return ld; -} - // -- cPid --------------------------------------------------------------------- cPid::cPid(int Pid, int Section, int Mask, int Mode) diff --git a/data.h b/data.h index 7fb57aa..bcc236e 100644 --- a/data.h +++ b/data.h @@ -200,42 +200,6 @@ public: // ---------------------------------------------------------------- -class cLoader { -friend class cLoaders; -private: - cLoader *next; - bool modified; - const char *id; -protected: - void Modified(bool mod=true) { modified=mod; } -public: - cLoader(const char *Id); - virtual ~cLoader() {} - virtual bool ParseLine(const char *line, bool fromCache)=0; - virtual bool Save(FILE *f)=0; - bool IsModified(void) const { return modified; } - const char *Id(void) const { return id; } - }; - -// ---------------------------------------------------------------- - -class cLoaders { -friend class cLoader; -private: - static cLoader *first; - static cMutex lock; - static char *cacheFile; - // - static void Register(cLoader *ld); - static cLoader *FindLoader(const char *id); - static bool IsModified(void); -public: - static void LoadCache(const char *cfgdir); - static void SaveCache(void); - }; - -// ---------------------------------------------------------------- - class cPid : public cSimpleItem { public: int pid, sct, mask, mode; diff --git a/sc.c b/sc.c index ddf1eb4..001fae5 100644 --- a/sc.c +++ b/sc.c @@ -895,7 +895,6 @@ eOSState cMenuSetupSc::ProcessKey(eKeys Key) state=osContinue; if(Interface->Confirm(tr("Really flush ECM cache?"))) { ecmcache.Flush(); - cLoaders::SaveCache(); state=osEnd; } break; @@ -1013,14 +1012,11 @@ bool cSoftCAM::Load(const char *cfgdir) if(!cSystems::Init(cfgdir)) return false; if(Feature.SmartCard()) smartcards.LoadData(cfgdir); - cLoaders::LoadCache(cfgdir); - cLoaders::SaveCache(); return true; } void cSoftCAM::HouseKeeping(void) { - cLoaders::SaveCache(); if(Feature.KeyFile()) keys.HouseKeeping(); if(!Active(false)) cStructLoaders::Purge(); cStructLoaders::Load(true); diff --git a/systems/irdeto/irdeto.c b/systems/irdeto/irdeto.c index fdc3143..543ccec 100644 --- a/systems/irdeto/irdeto.c +++ b/systems/irdeto/irdeto.c @@ -447,7 +447,6 @@ void cSystemIrd::ProcessEMM(int pid, int caid, unsigned char *buffer) FoundKey(); if(Icards.Update(ci,mk,prvId[0]?prvId:0)) NewKey(); } - cLoaders::SaveCache(); break; } else { diff --git a/systems/nagra/nagra1.c b/systems/nagra/nagra1.c index 21fb6bc..1eddc3d 100644 --- a/systems/nagra/nagra1.c +++ b/systems/nagra/nagra1.c @@ -954,7 +954,6 @@ void cSystemNagra::ProcessEMM(int pid, int caid, unsigned char *buffer) FoundKey(); if(keys.NewKey('N',pkKeyId,ADDC3(MBC('E','1'),KEYSET(0,i,0)),e1,64)) NewKey(); } - cLoaders::SaveCache(); } break; // don't process other nanos } @@ -991,7 +990,6 @@ void cSystemNagra::ProcessEMM(int pid, int caid, unsigned char *buffer) if(keys.NewKey('N',keyId,00,key0,8)) NewKey(); FoundKey(); if(keys.NewKey('N',keyId,01,key1,8)) NewKey(); - cLoaders::SaveCache(); } } } diff --git a/systems/nagra/nagra2.c b/systems/nagra/nagra2.c index 96c9a0a..0fe2001 100644 --- a/systems/nagra/nagra2.c +++ b/systems/nagra/nagra2.c @@ -1012,7 +1012,6 @@ void cSystemNagra2::ProcessEMM(int pid, int caid, unsigned char *buffer) else { if(keys.NewKey('N',id,kn,key,len)) NewKey(); } - cLoaders::SaveCache(); } i+=ulen; } @@ -1025,7 +1024,6 @@ void cSystemNagra2::ProcessEMM(int pid, int caid, unsigned char *buffer) if(emmdata[i+1]==0x25) { FoundKey(); if(keys.NewKey('N',id,(emmdata[i+16]&0x40)>>6,&emmdata[i+23],16)) NewKey(); - cLoaders::SaveCache(); } i+=emmdata[i+1]+2; break; diff --git a/systems/seca/seca.c b/systems/seca/seca.c index 06dd038..afd5e55 100644 --- a/systems/seca/seca.c +++ b/systems/seca/seca.c @@ -1612,7 +1612,6 @@ void cSystemSeca::ProcessEMM(int pid, int caid, unsigned char *buffer) if(keys.NewKey('S',provId,keyN[i],key[i],8)) NewKey(); } LBEND(); - cLoaders::SaveCache(); break; } else if(!CheckNull(ci->sa,sizeof(ci->sa))) diff --git a/systems/viaccess/viaccess.c b/systems/viaccess/viaccess.c index 5278a94..cd7a316 100644 --- a/systems/viaccess/viaccess.c +++ b/systems/viaccess/viaccess.c @@ -503,7 +503,6 @@ void cSystemViaccess::ProcessEMM(int pid, int caid, unsigned char *data) FoundKey(); if(keys.NewKey('V',updPrv[numKeys],updKey[numKeys],newKey[numKeys],8)) NewKey(); } - cLoaders::SaveCache(); } else PRINTF(L_SYS_EMM,"%02X%02X %02X %s %s - FAIL",mkey->ident[0],mkey->ident[1],mkey->keyno,addr,ptext[updtype]); -- 2.39.5