#include <lib/dvb/dvb.h>
#include <lib/dvb/frontend.h>
#include <lib/dvb/epgcache.h>
+#include <lib/base/eenv.h>
#include <lib/base/eerror.h>
#include <lib/base/estring.h>
#include <xmlccwrap/xmlccwrap.h>
RESULT eBouquet::flushChanges()
{
- FILE *f=fopen((CONFIGDIR"/enigma2/"+m_filename).c_str(), "w");
+ FILE *f=fopen(eEnv::resolve("${sysconfdir}/enigma2/" + m_filename).c_str(), "w");
if (!f)
return -1;
if ( fprintf(f, "#NAME %s\r\n", m_bouquet_name.c_str()) < 0 )
res = m_provider_name == query.m_string;
break;
case eDVBChannelQuery::tType:
- res = ref.getServiceType() == query.m_int;
+ {
+ int service_type = ref.getServiceType();
+ if (query.m_int == 1) // TV Service
+ {
+ // Hack for dish network
+ int onid = ref.getOriginalNetworkID().get();
+ if (onid >= 0x1001 && onid <= 0x100b)
+ {
+ static int dish_tv_types[] = { 128, 133, 137, 140, 144, 145, 150, 154, 160, 163, 164, 165, 166, 167, 168, 173, 174 };
+ static size_t dish_tv_num_types = sizeof(dish_tv_types) / sizeof(int);
+ if (std::binary_search(dish_tv_types, dish_tv_types + dish_tv_num_types, service_type))
+ return true;
+ }
+ }
+ res = service_type == query.m_int;
break;
+ }
case eDVBChannelQuery::tBouquet:
res = 0;
break;
void eDVBDB::reloadServicelist()
{
- loadServicelist(CONFIGDIR"/enigma2/lamedb");
+ loadServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
}
void eDVBDB::parseServiceData(ePtr<eDVBService> s, std::string str)
{
eDebug("---- opening lame channel db");
FILE *f=fopen(file, "rt");
- if (!f && strcmp(file, CONFIGDIR"/enigma2/lamedb") == 0)
+ if (!f && strcmp(file, eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str()) == 0)
{
struct stat s;
if ( !stat("lamedb", &s) )
{
- if ( !stat(CONFIGDIR"/enigma2", &s) )
+ if ( !stat(eEnv::resolve("${sysconfdir}/enigma2").c_str(), &s) )
{
- rename("lamedb", CONFIGDIR"/enigma2/lamedb" );
+ rename("lamedb", eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
reloadServicelist();
}
}
void eDVBDB::saveServicelist()
{
- saveServicelist(CONFIGDIR"/enigma2/lamedb");
+ saveServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
}
void eDVBDB::loadBouquet(const char *path)
std::list<eServiceReference> &list = bouquet.m_services;
list.clear();
- std::string p = CONFIGDIR"/enigma2/";
+ std::string p = eEnv::resolve("${sysconfdir}/enigma2/");
p+=path;
eDebug("loading bouquet... %s", p.c_str());
FILE *fp=fopen(p.c_str(), "rt");