- fix character conversion for DVB
authorFelix Domke <tmbinc@elitedvb.net>
Wed, 31 Aug 2005 18:20:45 +0000 (18:20 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Wed, 31 Aug 2005 18:20:45 +0000 (18:20 +0000)
lib/base/estring.cpp
lib/base/estring.h
lib/dvb/db.cpp
lib/service/event.cpp

index f0107b6..aee1742 100644 (file)
@@ -3,6 +3,7 @@
 #include <limits.h>
 #include <lib/base/elock.h>
 #include <lib/base/eerror.h>
+#include <lib/base/estring.h>
 
 static pthread_mutex_t lock=PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
 
@@ -181,7 +182,12 @@ static inline unsigned int recode(unsigned char d, int cp)
        }
 }
 
-std::string convertDVBUTF8(unsigned char *data, int len, int table)
+std::string convertDVBUTF8(const std::string &s, int table)
+{
+       return convertDVBUTF8((const unsigned char*)s.c_str(), s.size(), table);
+}
+
+std::string convertDVBUTF8(const unsigned char *data, int len, int table)
 {
        int i;
        if (!len)
index 9cc3180..a0b161d 100644 (file)
@@ -9,8 +9,9 @@
 int strnicmp(const char*, const char*, int);
 
 std::string getNum(int num, int base=10);
-std::string convertDVBUTF8(unsigned char *data, int len, int table=5);
+std::string convertDVBUTF8(const unsigned char *data, int len, int table=5);
 std::string convertUTF8DVB(const std::string &string);  // with default ISO8859-5
+std::string convertDVBUTF8(const std::string &s, int table=5);
 std::string convertLatin1UTF8(const std::string &string);
 int isUTF8(const std::string &string);
 
index 067b003..6e3207e 100644 (file)
@@ -2,6 +2,7 @@
 #include <lib/dvb/db.h>
 #include <lib/dvb/frontend.h>
 #include <lib/base/eerror.h>
+#include <lib/base/estring.h>
 #include <lib/dvb_si/sdt.h>
 #include <lib/dvb_si/descriptor_tag.h>
 #include <lib/dvb_si/service_descriptor.h>
@@ -29,7 +30,7 @@ eDVBService &eDVBService::operator=(const eDVBService &s)
 
 RESULT eDVBService::getName(const eServiceReference &ref, std::string &name)
 {
-       name = m_service_name;
+       name = convertDVBUTF8(m_service_name);
        return 0;
 }
 
index 58079da..482527c 100644 (file)
@@ -1,4 +1,5 @@
 #include <lib/service/event.h>
+#include <lib/base/estring.h>
 #include <lib/dvb_si/eit.h>
 #include <lib/dvb_si/short_event_descriptor.h>
 #include <lib/dvb_si/descriptor_tag.h>
@@ -17,8 +18,8 @@ RESULT eServiceEvent::parseFrom(Event *evt)
                case SHORT_EVENT_DESCRIPTOR:
                {
                        const ShortEventDescriptor *sed = (ShortEventDescriptor*)*desc;
-                       m_event_name = sed->getEventName();
-                       m_description = sed->getText();
+                       m_event_name = convertDVBUTF8(sed->getEventName());
+                       m_description = convertDVBUTF8(sed->getText());
                        break;
                }
                }