void eEPGCache::load()
{
+ singleLock s(cache_lock);
FILE *f = fopen("/hdd/epg.dat", "r");
if (f)
{
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--)
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 );
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)
{
if (!PyString_Check(entry))
{
eDebug("tuple entry 0 is no a string");
- continue;
+ goto skip_entry;
}
service = entry;
break;
if (type < -1 || type > 2)
{
eDebug("unknown type %d", type);
- continue;
+ goto skip_entry;
}
break;
case 2:
if (service_name)
Py_DECREF(service_name);
}
+skip_entry:
+ ;
}
if (convertFuncArgs)
Py_DECREF(convertFuncArgs);