diff options
Diffstat (limited to 'lib/dvb/db.cpp')
| -rw-r--r-- | lib/dvb/db.cpp | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 38be6359..05474071 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -3,6 +3,7 @@ #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> @@ -73,7 +74,7 @@ RESULT eBouquet::moveService(const eServiceReference &ref, unsigned int pos) 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 ) @@ -280,7 +281,7 @@ DEFINE_REF(eDVBDB); void eDVBDB::reloadServicelist() { - loadServicelist(CONFIGDIR"/enigma2/lamedb"); + loadServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str()); } void eDVBDB::parseServiceData(ePtr<eDVBService> s, std::string str) @@ -324,19 +325,11 @@ void eDVBDB::loadServicelist(const char *file) { eDebug("---- opening lame channel db"); FILE *f=fopen(file, "rt"); - if (!f && strcmp(file, CONFIGDIR"/enigma2/lamedb") == 0) - { - struct stat s; - if ( !stat("lamedb", &s) ) - { - if ( !stat(CONFIGDIR"/enigma2", &s) ) - { - rename("lamedb", CONFIGDIR"/enigma2/lamedb" ); - reloadServicelist(); - } - } + if (!f) { + eDebug("can't open %s: %m", file); return; } + char line[256]; int version=3; if ((!fgets(line, 256, f)) || sscanf(line, "eDVB services /%d/", &version) != 1) @@ -594,7 +587,7 @@ void eDVBDB::saveServicelist(const char *file) void eDVBDB::saveServicelist() { - saveServicelist(CONFIGDIR"/enigma2/lamedb"); + saveServicelist(eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str()); } void eDVBDB::loadBouquet(const char *path) @@ -618,28 +611,20 @@ 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"); - int entries=0; if (!fp) { - struct stat s; - if ( !stat(path, &s) ) - { - rename(path, p.c_str() ); - loadBouquet(path); - return; - } - eDebug("failed to open."); - if ( strstr(path, "bouquets.tv") ) + eDebug("can't open %s: %m", p.c_str()); + if (!strcmp(path, "bouquets.tv")) { eDebug("recreate bouquets.tv"); bouquet.m_bouquet_name="Bouquets (TV)"; bouquet.flushChanges(); } - else if ( strstr(path, "bouquets.radio") ) + else if (!strcmp(path, "bouquets.radio")) { eDebug("recreate bouquets.radio"); bouquet.m_bouquet_name="Bouquets (Radio)"; @@ -647,6 +632,7 @@ void eDVBDB::loadBouquet(const char *path) } return; } + int entries=0; char line[256]; bool read_descr=false; eServiceReference *e = NULL; |
