leave update plugin with ok button after the update process (we entered it with ok...
[enigma2.git] / lib / base / estring.cpp
index 22b65698d2916ace5c2a5f36dab717fe6f1df944..10bfbef81ca130febe685bb7fbe6f3538d8e5ddf 100644 (file)
@@ -1,12 +1,10 @@
 #include <string>
 #include <ctype.h>
 #include <limits.h>
-#include <lib/base/elock.h>
 #include <lib/base/eerror.h>
+#include <lib/base/encoding.h>
 #include <lib/base/estring.h>
 
-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<int, int>::iterator it =
-                       std::string::TransponderDefaultMapping.find(tsidonid);
-               if ( it != std::string::TransponderDefaultMapping.end() )
-                       table = it->second;
-       }
-#endif
+               encodingHandler.getTransponderDefaultMapping(tsidonid, table);
 
        switch(data[0])
        {
@@ -386,17 +377,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 +587,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);