X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e441555fa867c277985766fcf84af8fdde72d52d..477c468861635555c7179f2f4397dd765f499656:/lib/dvb/epgcache.cpp diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index c361c0b0..0af14c6b 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -701,15 +701,17 @@ void eEPGCache::thread() void eEPGCache::load() { + singleLock s(cache_lock); FILE *f = fopen("/hdd/epg.dat", "r"); if (f) { - unsigned char md5_saved[16]; - unsigned char md5[16]; int size=0; int cnt=0; - bool md5ok=false; #if 0 + unsigned char md5_saved[16]; + unsigned char md5[16]; + bool md5ok=false; + if (!md5_file("/hdd/epg.dat", 1, md5)) { FILE *f = fopen("/hdd/epg.dat.md5", "r"); @@ -724,9 +726,17 @@ void eEPGCache::load() if ( md5ok ) #endif { + unsigned int magic=0; + fread( &magic, sizeof(int), 1, f); + if (magic != 0x98765432) + { + eDebug("epg file has incorrect byte order.. dont read it"); + fclose(f); + return; + } char text1[13]; fread( text1, 13, 1, f); - if ( !strncmp( text1, "ENIGMA_EPG_V4", 13) ) + if ( !strncmp( text1, "ENIGMA_EPG_V5", 13) ) { fread( &size, sizeof(int), 1, f); while(size--) @@ -822,7 +832,9 @@ void eEPGCache::save() int cnt=0; if ( f ) { - const char *text = "ENIGMA_EPG_V4"; + unsigned int magic = 0x98765432; + fwrite( &magic, sizeof(int), 1, f); + const char *text = "ENIGMA_EPG_V5"; fwrite( text, 13, 1, f ); int size = eventDB.size(); fwrite( &size, sizeof(int), 1, f ); @@ -1530,7 +1542,7 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc) if (!PyString_Check(entry)) { eDebug("tuple entry 0 is no a string"); - continue; + goto skip_entry; } service = entry; break; @@ -1540,7 +1552,7 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc) if (type < -1 || type > 2) { eDebug("unknown type %d", type); - continue; + goto skip_entry; } break; case 2: @@ -1612,6 +1624,8 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc) if (service_name) Py_DECREF(service_name); } +skip_entry: + ; } if (convertFuncArgs) Py_DECREF(convertFuncArgs);