X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/65effa9e0f808f8a981da5015df2cbddcfc8716b..fe12fe9e0ab3a4f9751b67c0aa3751d5864784ba:/lib/base/estring.cpp diff --git a/lib/base/estring.cpp b/lib/base/estring.cpp index 91491c38..dcba7705 100644 --- a/lib/base/estring.cpp +++ b/lib/base/estring.cpp @@ -1,10 +1,26 @@ +#include +#include +#include #include -#include -#include #include #include #include +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 +28,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); @@ -334,9 +350,9 @@ std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts switch(data[0]) { - case 1 ... 12: + case 1 ... 11: table=data[i++]+4; -// eDebug("(1..12)text encoded in ISO-8859-%d",table); +// eDebug("(1..11)text encoded in ISO-8859-%d",table); break; case 0x10: { @@ -347,7 +363,8 @@ 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; break; @@ -370,9 +387,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: // UTF-8 encoding of ISO/IEC 10646-1 + return std::string((char*)data+1, len-1); case 0x0: - case 0xD ... 0xF: - case 0x15 ... 0x1F: + case 0xC ... 0xF: + case 0x16 ... 0x1F: eDebug("reserved %d", data[0]); ++i; break; @@ -615,3 +634,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; +}