move replace_all function to base/string.h
[enigma2.git] / lib / base / estring.cpp
index 74d773c40495ef73ceae3d44d9d7c25a75298d9b..f1d50cccd34f51207f85d2b41a22c04850ed6b12 100644 (file)
@@ -5,6 +5,21 @@
 #include <lib/base/encoding.h>
 #include <lib/base/estring.h>
 
+std::string buildShortName( const std::string &str )
+{
+       std::string tmp;
+       static char stropen[3] = { 0xc2, 0x86, 0x00 };
+       static char strclose[3] = { 0xc2, 0x87, 0x00 };
+       size_t open=std::string::npos-1;
+       while ( (open = str.find(stropen, open+2)) != std::string::npos )
+       {
+               size_t close = str.find(strclose, open);
+               if ( close != std::string::npos )
+                       tmp+=str.substr( open+2, close-(open+2) );
+       }
+       return tmp.length() ? tmp : str;
+}
+
 std::string getNum(int val, int sys)
 {
 //     Returns a string that contain the value val as string
@@ -12,9 +27,9 @@ std::string getNum(int val, int sys)
        char buf[12];
 
        if (sys == 10)
-               std::snprintf(buf, 12, "%i", val);
+               snprintf(buf, 12, "%i", val);
        else if (sys == 16)
-               std::snprintf(buf, 12, "%X", val);              
+               snprintf(buf, 12, "%X", val);           
        
        std::string res;
        res.assign(buf);
@@ -347,7 +362,7 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts
                        switch(n)
                        {
                                case 12:
-                                       eDebug("unsup. ISO8859-12 enc.", n);
+                                       eDebug("unsup. ISO8859-12 enc.");
                                        break;
                                default:
                                        table=n;
@@ -371,14 +386,11 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts
                        ++i;
                        eDebug("unsup. Big5 subset of ISO/IEC 10646-1 enc.");
                        break;
-               case 0x15:
-                       ++i;
-                       eDebug("unsup. UTF-8 encoding of ISO/IEC 10646-1.");
-                       break;
+               case 0x15: // UTF-8 encoding of ISO/IEC 10646-1
+                       return std::string((char*)data+1, len-1);
                case 0x0:
                case 0xC ... 0xF:
                case 0x16 ... 0x1F:
-               default:
                        eDebug("reserved %d", data[0]);
                        ++i;
                        break;
@@ -621,3 +633,12 @@ void makeUpper(std::string &s)
 {
        std::transform(s.begin(), s.end(), s.begin(), (int(*)(int)) toupper);
 }
+
+std::string replace_all(const std::string &in, const std::string &entity, const std::string &symbol)
+{
+       std::string out = in;
+       std::string::size_type loc = 0;
+       while (( loc = out.find(entity, loc)) != std::string::npos )
+       out.replace(loc, entity.length(), symbol);
+       return out;
+}