Merge branch 'master' of git.opendreambox.org:/git/enigma2
[enigma2.git] / lib / dvb / epgcache.cpp
index d87a61e1a3485724be33a7210f48043321425f04..fdcbe0e9faf2cb835db04288f6ae2e0b850ce6fb 100644 (file)
@@ -2058,7 +2058,11 @@ PyObject *eEPGCache::search(ePyObject arg)
                        ePyObject obj = PyTuple_GET_ITEM(arg,0);
                        if (PyString_Check(obj))
                        {
+#if PY_VERSION_HEX < 0x02060000
                                argcount = PyString_GET_SIZE(obj);
+#else
+                               argcount = PyString_Size(obj);
+#endif
                                argstring = PyString_AS_STRING(obj);
                                for (int i=0; i < argcount; ++i)
                                        switch(argstring[i])
@@ -2156,7 +2160,11 @@ PyObject *eEPGCache::search(ePyObject arg)
                                {
                                        int casetype = PyLong_AsLong(PyTuple_GET_ITEM(arg, 4));
                                        const char *str = PyString_AS_STRING(obj);
+#if PY_VERSION_HEX < 0x02060000
                                        int textlen = PyString_GET_SIZE(obj);
+#else
+                                       int textlen = PyString_Size(obj);
+#endif
                                        if (querytype == 1)
                                                eDebug("lookup for events with '%s' as title(%s)", str, casetype?"ignore case":"case sensitive");
                                        else
@@ -2171,14 +2179,20 @@ PyObject *eEPGCache::search(ePyObject arg)
                                                        int title_len = data[5];
                                                        if ( querytype == 1 )
                                                        {
-                                                               if (title_len != textlen)
-                                                                       continue;
                                                                int offs = 6;
                                                                // skip DVB-Text Encoding!
                                                                if (data[6] == 0x10)
-                                                                       offs+=2;
+                                                               {
+                                                                       offs+=3;
+                                                                       title_len-=3;
+                                                               }
                                                                else if(data[6] > 0 && data[6] < 0x20)
+                                                               {
                                                                        offs+=1;
+                                                                       title_len-=1;
+                                                               }
+                                                               if (title_len != textlen)
+                                                                       continue;
                                                                if ( casetype )
                                                                {
                                                                        if ( !strncasecmp((const char*)data+offs, str, title_len) )