git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix another subtitles bug
[enigma2.git]
/
lib
/
base
/
estring.cpp
diff --git
a/lib/base/estring.cpp
b/lib/base/estring.cpp
index 22b65698d2916ace5c2a5f36dab717fe6f1df944..91491c381bddb6602bd6af9c1f0f3f2c2f31603a 100644
(file)
--- a/
lib/base/estring.cpp
+++ b/
lib/base/estring.cpp
@@
-1,12
+1,10
@@
#include <string>
#include <ctype.h>
#include <limits.h>
#include <string>
#include <ctype.h>
#include <limits.h>
-#include <lib/base/elock.h>
#include <lib/base/eerror.h>
#include <lib/base/eerror.h>
+#include <lib/base/encoding.h>
#include <lib/base/estring.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
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;
int i=0, t=0;
-#if 0 // FIXME
if ( tsidonid )
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])
{
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);
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)
{
++i;
switch(n)
{
@@
-386,17
+378,18
@@
std::string convertDVBUTF8(const unsigned char *data, int len, int table, int ts
break;
}
break;
}
+ bool useTwoCharMapping =
+ tsidonid && encodingHandler.getTransponderUseTwoCharMapping(tsidonid);
+
unsigned char res[2048];
while (i < len)
{
unsigned long code=0;
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;
(code=doVideoTexSuppl(data[i], data[i+1])) )
i+=2;
-#endif
+
if (!code)
code=recode(data[i++], table);
if (!code)
if (!code)
code=recode(data[i++], table);
if (!code)
@@
-529,7
+522,7
@@
std::string convertLatin1UTF8(const std::string &string)
while (i < len)
{
while (i < len)
{
- unsigned long code=string[i++];
+ unsigned long code=
(unsigned char)
string[i++];
// Unicode->UTF8 encoding
if (code < 0x80) // identity latin <-> utf8 mapping
res[t++]=char(code);
// Unicode->UTF8 encoding
if (code < 0x80) // identity latin <-> utf8 mapping
res[t++]=char(code);
@@
-595,13
+588,13
@@
std::string removeDVBChars(const std::string &s)
int len = s.length();
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) */
{
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);
{
unsigned char c2 = s[i + 1];
c = ((c1&0x3F)<<6) + (c2&0x3F);