#include <sys/vfs.h> // for statfs
// #include <libmd5sum.h>
#include <lib/base/eerror.h>
+#include <lib/base/estring.h>
#include <lib/dvb/pmt.h>
#include <lib/dvb/db.h>
#include <lib/python/python.h>
if ( tm_it_tmp->first == TM ) // just update eventdata
{
// exempt memory
- delete ev_it->second;
+ eventData *tmp = ev_it->second;
ev_it->second = tm_it_tmp->second =
new eventData(eit_event, eit_event_size, source);
FixOverlapping(servicemap, TM, duration, tm_it_tmp, service);
+ delete tmp;
goto next;
}
else // event has new event begin time
#endif
if (ev_erase_count > 0 && tm_erase_count > 0) // 2 different pairs have been removed
{
- // exempt memory
- delete ev_it->second;
- delete tm_it->second;
+ eventData *tmp1 = ev_it->second,
+ *tmp2 = tm_it->second;
ev_it->second=evt;
tm_it->second=evt;
+ // exempt memory
+ delete tmp1;
+ delete tmp2;
}
else if (ev_erase_count == 0 && tm_erase_count > 0)
{
- // exempt memory
- delete ev_it->second;
+ eventData *tmp = ev_it->second;
tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair<const time_t, eventData*>( TM, evt ) );
ev_it->second=evt;
+ // exempt memory
+ delete tmp;
}
else if (ev_erase_count > 0 && tm_erase_count == 0)
{
- // exempt memory
- delete tm_it->second;
+ eventData *tmp = tm_it->second;
ev_it=prevEventIt=servicemap.first.insert( prevEventIt, std::pair<const __u16, eventData*>( event_id, evt) );
tm_it->second=evt;
+ // exempt memory
+ delete tmp;
}
else // added new eventData
{
tmp = service;
inc_refcount = true;
break;
+ case 'n': // short service name
case 'N': // service name
tmp = service_name;
inc_refcount = true;
// C = Current Time
// R = Service Reference
// N = Service Name
+// n = Short 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
PyLong_FromLong(eDVBLocalTimeHandler::getInstance()->nowTime()) :
ePyObject();
- bool must_get_service_name = strchr(argstring, 'N') ? true : false;
+ int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0;
// create dest list
ePyObject dest_list=PyList_New(0);
{
std::string name;
sptr->getName(ref, name);
+
+ if (must_get_service_name == 1)
+ {
+ unsigned int pos;
+ // filter short name brakets
+ while((pos = name.find("\xc2\x86")) != std::string::npos)
+ name.erase(pos,2);
+ while((pos = name.find("\xc2\x87")) != std::string::npos)
+ name.erase(pos,2);
+ }
+ else
+ name = buildShortName(name);
+
if (name.length())
service_name = PyString_FromString(name.c_str());
}
tmp = service_reference;
inc_refcount = true;
break;
+ case 'n': // short service name
case 'N': // service name
tmp = service_name;
inc_refcount = true;
// E = Event Extended Description
// R = Service Reference
// N = Service Name
+// n = Short Service Name
// the second tuple entry is the MAX matches value
// the third tuple entry is the type of query
// 0 = search for similar broadcastings (SIMILAR_BROADCASTINGS_SEARCH)
return NULL;
}
- ASSERT(descridx <= 512);
-
if (descridx > -1)
{
int maxcount=maxmatches;
if ( evid == eventid)
continue;
__u8 *data = evit->second->EITdata;
- int tmp = evit->second->ByteSize-12;
- __u32 *p = (__u32*)(data+12);
+ int tmp = evit->second->ByteSize-10;
+ __u32 *p = (__u32*)(data+10);
// check if any of our descriptor used by this event
int cnt=-1;
- while(tmp>0)
+ while(tmp>3)
{
__u32 crc32 = *p++;
for ( int i=0; i <= descridx; ++i)
eDebug("event not found !!!!!!!!!!!");
}
// create service name
- if (!service_name && strchr(argstring,'N'))
+ if (!service_name)
{
- ePtr<iStaticServiceInformation> sptr;
- eServiceCenterPtr service_center;
- eServiceCenter::getPrivInstance(service_center);
- if (service_center)
+ int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0;
+ if (must_get_service_name)
{
- service_center->info(ref, sptr);
- if (sptr)
+ ePtr<iStaticServiceInformation> sptr;
+ eServiceCenterPtr service_center;
+ eServiceCenter::getPrivInstance(service_center);
+ if (service_center)
{
- std::string name;
- sptr->getName(ref, name);
- if (name.length())
- service_name = PyString_FromString(name.c_str());
+ service_center->info(ref, sptr);
+ if (sptr)
+ {
+ std::string name;
+ sptr->getName(ref, name);
+
+ if (must_get_service_name == 1)
+ {
+ unsigned int pos;
+ // filter short name brakets
+ while((pos = name.find("\xc2\x86")) != std::string::npos)
+ name.erase(pos,2);
+ while((pos = name.find("\xc2\x87")) != std::string::npos)
+ name.erase(pos,2);
+ }
+ else
+ name = buildShortName(name);
+
+ if (name.length())
+ service_name = PyString_FromString(name.c_str());
+ }
}
+ if (!service_name)
+ service_name = PyString_FromString("<n/a>");
}
- if (!service_name)
- service_name = PyString_FromString("<n/a>");
}
// create servicereference string
if (!service_reference && strchr(argstring,'R'))