Re: [vdr] [PATCH] Fix EPG for UPC direct

2007-02-03 Thread Thomas Günther
Thiemo Gehrke wrote:
 UPC is a provider for middle european countries (Czechia, Hungary and
 Poland).  They use iso6937-2 for encoding their EPG data so this looks
 quite strange in  the vdr.
 The applied patch does a remapping to iso8859-2 so that characters
 are  displayed correct. (Currently only tested with Czech and
 Hungarian, but  should also work for Polish)

Here is an iconv version of the patch:
http://toms-cafe.de/vdr/download/vdr-epg-conv-iso6937-1.4.5.diff

Tom

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] [PATCH] Fix EPG for UPC direct

2006-12-31 Thread Adrian C.

On Fri, 8 Dec 2006, Thiemo Gehrke wrote:


UPC is a provider for middle european countries (Czechia, Hungary and Poland).
They use iso6937-2 for encoding their EPG data so this looks quite strange in
the vdr.


Hello the applied patch made no diffrence on my system,
you can see the snapshot here:
http://sysphere.org/~anrxc/upc.png

--
PGP:0xA8916BBD | JID:anrxc|sysphere|org | sysphere.org/~anrxc/

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[vdr] [PATCH] Fix EPG for UPC direct

2006-12-08 Thread Thiemo Gehrke
UPC is a provider for middle european countries (Czechia, Hungary and Poland). 
They use iso6937-2 for encoding their EPG data so this looks quite strange in 
the vdr.
The applied patch does a remapping to iso8859-2 so that characters are 
displayed correct. (Currently only tested with Czech and Hungarian, but 
should also work for Polish)

While testing this with the help of an hungarian user, i also found out that 
the the codepage for Hungary must be 8859-2, not -1.

The patch is work by Helmut Auer.

cheers,
Tim
--- vdr-1.4.4-vanilla/epg.c	2006-10-28 11:12:42.0 +0200
+++ vdr-1.4/epg.c	2006-11-28 12:39:33.0 +0100
@@ -18,6 +18,165 @@

 #define RUNNINGSTATUSTIMEOUT 30 // seconds before the running status is considered unknown

+// UPC Direct / HBO strange two-character encoding. 0xC2 means acute, 0xCF caron.
+// many thanks to the czechs who helped me while solving this.
+void checkUPC( char *str )
+{
+   char *s1 = str;
+   char *s2 = str;
+   char nc;
+
+   if (!str)
+  return;
+
+   while (*s1 != '\0') {
+  nc = *s1;
+  switch (*s1) {
+ case 0xC2: // acute: á é í ó ú ý
+s1++;
+switch (*s1) {
+   case 'A': nc = (char)0xC1;
+  break;
+   case 'a': nc = (char)0xE1;
+  break;
+   case 'E': nc = (char)0xC9;
+  break;
+   case 'e': nc = (char)0xE9;
+  break;
+   case 'I': nc = (char)0xCD;
+  break;
+   case 'i': nc = (char)0xED;
+  break;
+   case 'O': nc = (char)0xD3;
+  break;
+   case 'o': nc = (char)0xF3;
+  break;
+   case 'U': nc = (char)0xDA;
+  break;
+   case 'u': nc = (char)0xFA;
+  break;
+   case 'Y': nc = (char)0xDD;
+  break;
+   case 'y': nc = (char)0xFD;
+  break;
+   default:
+  s1--;
+  break;
+}
+	 break;
+ case 0xC6:
+s1++;
+switch (*s1) {
+   case 'S': nc = (char)0xA9;
+  break;
+   case 's': nc = (char)0xB9;
+  break;
+   default:
+  s1--;
+  break;
+}
+break;
+ case 0xC8:
+s1++;
+switch (*s1) {
+   case 'A': nc = (char)0xC4;
+  break;
+   case 'a': nc = (char)0xE4;
+  break;
+   case 'O': nc = (char)0xD6;
+  break;
+   case 'o': nc = (char)0xF6;
+  break;
+   case 'U': nc = (char)0xDC;
+  break;
+   case 'u': nc = (char)0xFC;
+  break;
+   default:
+  s1--;
+  break;
+}
+break;
+ case 0xCA: // krouzek http://de.wikipedia.org/wiki/Krouzek
+s1++;
+switch (*s1) {
+   case 'U': nc = (char)0xD9;
+  break;
+   case 'u': nc = (char)0xF9;
+  break;
+   default:
+  s1--;
+  break;
+}
+break;
+ case 0xCD:
+s1++;
+switch (*s1) {
+   case 'O': nc = (char)0xD5;
+  break;
+   case 'o': nc = (char)0xF5;
+  break;
+   case 'U': nc = (char)0xDB;
+  break;
+   case 'u': nc = (char)0xFB;
+  break;
+   default:
+  s1--;
+  break;
+}
+break;
+ case 0xCF: // caron
+s1++;
+switch (*s1) {
+   case 'C': nc =  (char)0xC8;
+  break;
+   case 'c': nc =  (char)0xE8;
+  break;
+   case 'D': nc =  (char)0xCF;
+  break;
+   case 'd': nc =  (char)0xEF;
+  break;
+   case 'E': nc =  (char)0xCC;
+  break;
+   case 'e': nc =  (char)0xEC;
+  break;
+   case 'L': nc =  (char)0xC5;// not sure if they really exist.
+  break;
+   case 'l': nc =  (char)0xE5;
+  break;
+   case 'N': nc =  (char)0xD2;
+  break;
+   case 'n': nc =  (char)0xF2;
+  break;
+   case 'R': nc =  (char)0xD8;
+  break;
+   case 'r': nc =  (char)0xF8;
+  break;
+   case 'S': nc =  (char)0xA9;
+  break;
+   case 's': nc =  (char)0xB9;
+  break;
+   case 'T': nc =  (char)0xAB;
+