X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/7606810b356e9b3fbe1fbf7c7ca6da2e15e32a0e..fab31898f5892e9841b5c4f24fe505bd216e0ab2:/lib/service/service.cpp?ds=sidebyside diff --git a/lib/service/service.cpp b/lib/service/service.cpp index a044c66a..eb2757ab 100644 --- a/lib/service/service.cpp +++ b/lib/service/service.cpp @@ -41,8 +41,8 @@ static std::string decode(const std::string s) i += 2; if (i >= len) break; - char s[3] = {s[i - 1], s[i], 0}; - unsigned char r = strtoul(s, 0, 0x10); + char t[3] = {s[i - 1], s[i], 0}; + unsigned char r = strtoul(t, 0, 0x10); if (r) res += r; } @@ -187,18 +187,38 @@ RESULT eServiceCenter::offlineOperations(const eServiceReference &ref, ePtrsecond->offlineOperations(ref, ptr); } -RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd) +RESULT eServiceCenter::addServiceFactory(int id, iServiceHandler *hnd, std::list &extensions) { handler.insert(std::pair >(id, hnd)); + this->extensions[id]=extensions; return 0; } RESULT eServiceCenter::removeServiceFactory(int id) { handler.erase(id); + extensions.erase(id); return 0; } +int eServiceCenter::getServiceTypeForExtension(const char *str) +{ + for (std::map >::iterator sit(extensions.begin()); sit != extensions.end(); ++sit) + { + for (std::list::iterator eit(sit->second.begin()); eit != sit->second.end(); ++eit) + { + if (*eit == str) + return sit->first; + } + } + return -1; +} + +int eServiceCenter::getServiceTypeForExtension(const std::string &str) +{ + return getServiceTypeForExtension(str.c_str()); +} + /* default handlers */ RESULT iServiceHandler::info(const eServiceReference &, ePtr &ptr) { @@ -219,7 +239,7 @@ int iStaticServiceInformation::getLength(const eServiceReference &ref) return -1; } -int iStaticServiceInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore) +int iStaticServiceInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate) { return 0; }