X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/9cd2284f3e08f856860adcf6ac54943e664b27c3..e1342ca063df18d3b933420150d06b86ea506bb3:/lib/dvb/epgcache.cpp diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index 716033ee..189fcfc4 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -701,6 +701,7 @@ void eEPGCache::thread() void eEPGCache::load() { + singleLock s(cache_lock); FILE *f = fopen("/hdd/epg.dat", "r"); if (f) { @@ -725,7 +726,7 @@ void eEPGCache::load() if ( md5ok ) #endif { - int magic; + unsigned int magic=0; fread( &magic, sizeof(int), 1, f); if (magic != 0x98765432) { @@ -831,7 +832,7 @@ void eEPGCache::save() int cnt=0; if ( f ) { - int magic = 0x98765432; + unsigned int magic = 0x98765432; fwrite( &magic, sizeof(int), 1, f); const char *text = "ENIGMA_EPG_V5"; fwrite( text, 13, 1, f ); @@ -1445,25 +1446,28 @@ PyObject *handleEvent(ePtr &ptr, PyObject *dest_list, char* argst return 0; } -// here we get a list with tuples -// first tuple entry is the servicereference -// the second is the type of query (0 = time, 1 = event_id) -// the third -// when type is eventid it is the event_id -// when type is time then it is the start_time ( 0 for now_time ) -// the fourth is the end_time .. ( optional ) - -/* argv is a python string - I = Event Id - B = Event Begin Time - D = Event Duration - T = Event Title - S = Event Short Description - E = Event Extended Description - C = Current Time - R = Service Reference - N = Service Name -*/ +// here we get a python list +// the first entry in the list is a python string to specify the format of the returned tuples (in a list) +// I = Event Id +// B = Event Begin Time +// D = Event Duration +// T = Event Title +// S = Event Short Description +// E = Event Extended Description +// C = Current Time +// R = Service Reference +// N = Service Name +// then for each service follows a tuple +// first tuple entry is the servicereference (as string... use the ref.toString() function) +// the second is the type of query +// 2 = event_id +// -1 = event before given start_time +// 0 = event intersects given start_time +// +1 = event after given start_time +// the third +// when type is eventid it is the event_id +// when type is time then it is the start_time ( 0 for now_time ) +// the fourth is the end_time .. ( optional .. for query all events in time range) PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc) { @@ -1541,7 +1545,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; @@ -1551,7 +1555,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: @@ -1623,6 +1627,8 @@ PyObject *eEPGCache::lookupEvent(PyObject *list, PyObject *convertFunc) if (service_name) Py_DECREF(service_name); } +skip_entry: + ; } if (convertFuncArgs) Py_DECREF(convertFuncArgs);