fix not working epg search
[enigma2.git] / lib / dvb / db.cpp
index 6b6aa0338efbc9189605666005c262f2595cfae5..bb29bcca9a19e36195f6c07528fc0bd97f091982 100644 (file)
@@ -615,7 +615,7 @@ void eDVBDB::loadBouquet(const char *path)
                        break;
                if (line[0]=='#')
                {
-                       if (!strncmp(line, "#SERVICE ", 9) || !strncmp(line, "#SERVICE: ", 10))
+                       if (!strncmp(line, "#SERVICE", 8))
                        {
                                int offs = line[8] == ':' ? 10 : 9;
                                eServiceReference tmp(line+offs);
@@ -662,9 +662,10 @@ void eDVBDB::loadBouquet(const char *path)
                                read_descr=true;
                                ++entries;
                        }
-                       else if (read_descr && !strncmp(line, "#DESCRIPTION ", 13))
+                       else if (read_descr && !strncmp(line, "#DESCRIPTION", 12))
                        {
-                               e->name = line+13;
+                               int offs = line[12] == ':' ? 14 : 13;
+                               e->name = line+offs;
                                read_descr=false;
                        }
                        else if (!strncmp(line, "#NAME ", 6))
@@ -770,6 +771,8 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos)
                        if ((unsigned int)sat.orbital_position != orbpos)
                                remove=false;
                }
+               else if (orbpos != 0xFFFFFFFF) // do not remove -C or -T transponders when a orbital position is given..
+                       remove=false;
                if ( remove && chid.dvbnamespace != eNs && chid.dvbnamespace != ch.dvbnamespace )
                        remove=false;
                if ( remove && chid.original_network_id != eOnid && chid.original_network_id != ch.original_network_id )