{
cPlainKey *k;
for(k=0; (k=FindKeyNoTrig(nk->type,nk->id,nk->keynr,-1,k)); )
- if(k->Cmp(nk)) return false;
+ if(k->CmpExtId(nk) && k->Cmp(nk)) return false;
cPlainKey *ref=0;
cString ks=nk->ToString(true);
PRINTF(L_GEN_INFO,"key update for ID %s",*ks);
ums.Queue("%s %s",tr("Key update"),*ks);
for(k=0; (k=FindKeyNoTrig(nk->type,nk->id,nk->keynr,nk->Size(),k)); ) {
+ if(!k->CmpExtId(nk)) continue;
if(nk->CanSupersede()) {
PRINTF(L_GEN_INFO,"supersedes key: %s",*k->ToString(true));
DelItem(k,ScSetup.SuperKeys==0);
virtual int IdSize(void);
virtual cString Print(void)=0;
virtual cString PrintKeyNr(void);
+ virtual bool CmpExtId(cPlainKey *k) { return true; }
public:
int type, id, keynr;
//
int freq;
char pol;
protected:
- virtual bool Cmp(cPlainKey *k);
virtual int IdSize(void) { return 4; }
virtual cString PrintKeyNr(void);
+ virtual bool CmpExtId(cPlainKey *k);
public:
cPlainKeyConstCw(bool Super);
virtual bool Parse(const char *line);
freq=-1;
}
-bool cPlainKeyConstCw::Cmp(cPlainKey *k)
+bool cPlainKeyConstCw::CmpExtId(cPlainKey *k)
{
cPlainKeyConstCw *ck=dynamic_cast<cPlainKeyConstCw *>(k); // downcast
- return ck && prgId==ck->prgId && source==ck->source && freq==ck->freq && pol==ck->pol && cHexKey::Cmp(k);
+ return ck && prgId==ck->prgId && source==ck->source && freq==ck->freq && pol==ck->pol;
}
bool cPlainKeyConstCw::Matches(const cEcmInfo *ecm)