X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/33388f98fd5499197f5309befd2106ad7b65699c..0ebee4265be628e8b2c354a071e9fab37303c663:/lib/base/estring.cpp diff --git a/lib/base/estring.cpp b/lib/base/estring.cpp index 22b65698..18b277ab 100644 --- a/lib/base/estring.cpp +++ b/lib/base/estring.cpp @@ -1,12 +1,10 @@ #include #include #include -#include #include +#include #include -static pthread_mutex_t lock=PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP; - std::string getNum(int val, int sys) { // Returns a string that contain the value val as string @@ -331,15 +329,8 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts int i=0, t=0; -#if 0 // FIXME if ( tsidonid ) - { - std::map::iterator it = - std::string::TransponderDefaultMapping.find(tsidonid); - if ( it != std::string::TransponderDefaultMapping.end() ) - table = it->second; - } -#endif + encodingHandler.getTransponderDefaultMapping(tsidonid, table); switch(data[0]) { @@ -350,7 +341,8 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts case 0x10: { // eDebug("(0x10)text encoded in ISO-8859-%d",n); - int n=(data[++i]<<8)|(data[++i]); + int n=(data[++i]<<8); + n |= (data[++i]); ++i; switch(n) { @@ -386,17 +378,18 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts break; } + bool useTwoCharMapping = + tsidonid && encodingHandler.getTransponderUseTwoCharMapping(tsidonid); + unsigned char res[2048]; while (i < len) { unsigned long code=0; -#if 0 // FIXME - if ( i+1 < len && tsidonid && - std::string::TransponderUseTwoCharMapping.find(tsidonid) != std::string::TransponderUseTwoCharMapping.end() && + if ( useTwoCharMapping && i+1 < len && (code=doVideoTexSuppl(data[i], data[i+1])) ) i+=2; -#endif + if (!code) code=recode(data[i++], table); if (!code) @@ -595,13 +588,13 @@ std::string removeDVBChars(const std::string &s) int len = s.length(); - for(int i = 0; i < len-1; i++) + for(int i = 0; i < len; i++) { unsigned char c1 = s[i]; unsigned int c; /* UTF8? decode (but only simple) */ - if(c1 > 0x80) + if((c1 > 0x80) && (i < len-1)) { unsigned char c2 = s[i + 1]; c = ((c1&0x3F)<<6) + (c2&0x3F);