[ANNOUNCE] VDR developer version 1.5.6

Message ID 46A3C03D.4060805@cadsoft.de
State New
Headers

Commit Message

Klaus Schmidinger July 22, 2007, 8:38 p.m. UTC
  On 07/22/07 16:56, Luca Olivetti wrote:
> En/na Klaus Schmidinger ha escrit:
>> VDR developer version 1.5.6 is now available at
> 
> With this version display of national character broke here, e.g. "WDR 
> münster" changed to "WDR m<little square>nster" (not only in the 
> channels name, also in the epg for wdr, zdf, das erste ).
> 
> I reverted these two fixes in tools.c:
> 
>> - Fixed a buffer overflow in initializing the system character table (thanks
>>   to Marco Schlüßler).
> [...]
>> - Fixed handling single byte characters >0x7F in Utf8ToArray() (thanks to Udo
>>   Richter).
> 
> with no result.

Marco Schlüßler sent me the fix - see attachment.
It was a side effect of the changes in skipspace()...

Klaus
  

Comments

Hermann Gausterer July 23, 2007, 5:23 a.m. UTC | #1
On Sun, Jul 22, 2007 at 10:38:21PM +0200, Klaus Schmidinger wrote:
> Marco Schlüßler sent me the fix - see attachment.
> It was a side effect of the changes in skipspace()...

this patch seems to work only partialy:
-----------------------------------------------------------------
lstc wdr
250-17 WDR
Köln;ARD:11836:hC34:S19.2E:27500:601:602=deu:604:0:28111:1:1101:0
250-901 WDR
M?nster;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28310:1:1201:0
<<<<< CUT >>>>>
250-1425 WDR
D?sseldorf;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28308:1:1201:0
-----------------------------------------------------------------

looks like only The "Ü" (ONLY UPPERCASE) does not work for me :-o

newt 1:20:23:0:5:0:0:AAAÖÖÖÜÜÜ€€€€
250 14 1:20:2007-07-23:0000:0005:0:0:AAAÖÖÖ???€€€€:

vdr: [17770] timer 14 (20 0000-0005 'AAAÖÖÖ?\377?\377?^F?\377?\377?^F?\377?\377?^F€€€€') added
vdr: [17770] deleting timer 14 (20 0000-0005 'AAAÖÖÖ?\377?\377?^F?\377?\377?^F?\377?\377?^F€€€€')

newt 1:20:23:715:720:0:0:Bühnendübel
250 14 1:20:2007-07-23:0715:0720:0:0:Bühnendübel:

here it get strange: after putting a Ü in the Line, the timer gets added
but the normal output of the complete timerline is not always echoed back:
i have to press enter for getting a prompt; only every second input of
lstt works;

newt 1:20:23:800:805:0:0:BÜHNENDÜBEL

"
lstt 15
500 Command unrecognized: "lstt"
lstt 15
250 15 1:20:2007-07-23:0800:0805:0:0:B?HNEND?BEL:

mfg hermann
  
Klaus Schmidinger July 28, 2007, 1:31 p.m. UTC | #2
On 07/23/07 07:23, Hermann Gausterer wrote:
> On Sun, Jul 22, 2007 at 10:38:21PM +0200, Klaus Schmidinger wrote:
>> Marco Schlüßler sent me the fix - see attachment.
>> It was a side effect of the changes in skipspace()...
> 
> this patch seems to work only partialy:
> -----------------------------------------------------------------
> lstc wdr
> 250-17 WDR
> Köln;ARD:11836:hC34:S19.2E:27500:601:602=deu:604:0:28111:1:1101:0
> 250-901 WDR
> M�nster;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28310:1:1201:0
> <<<<< CUT >>>>>
> 250-1425 WDR
> D�sseldorf;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28308:1:1201:0
> -----------------------------------------------------------------
> 
> looks like only The "Ü" (ONLY UPPERCASE) does not work for me :-o
> 
> newt 1:20:23:0:5:0:0:AAAÖÖÖÜÜÜ€€€€
> 250 14 1:20:2007-07-23:0000:0005:0:0:AAAÖÖÖ���€€€€:
> 
> vdr: [17770] timer 14 (20 0000-0005 'AAAÖÖÖ�\377�\377�^F�\377�\377�^F�\377�\377�^F€€€€') added
> vdr: [17770] deleting timer 14 (20 0000-0005 'AAAÖÖÖ�\377�\377�^F�\377�\377�^F�\377�\377�^F€€€€')
> 
> newt 1:20:23:715:720:0:0:Bühnendübel
> 250 14 1:20:2007-07-23:0715:0720:0:0:Bühnendübel:
> 
> here it get strange: after putting a Ü in the Line, the timer gets added
> but the normal output of the complete timerline is not always echoed back:
> i have to press enter for getting a prompt; only every second input of
> lstt works;
> 
> newt 1:20:23:800:805:0:0:BÃœHNENDÃœBEL
> 
> "
> lstt 15
> 500 Command unrecognized: "lstt"
> lstt 15
> 250 15 1:20:2007-07-23:0800:0805:0:0:B�HNEND�BEL:

Well, the fix in skipspace() did fix the problems as far as I could see
them.

Any further UTF-8 problems will probably need to be debugged by somebody
actually using UTF-8.

Klaus
  

Patch

diff -bur vdr-1.5.6_orig/tools.h vdr-1.5.6/tools.h
--- vdr-1.5.6_orig/tools.h	2007-07-22 18:54:14.000000000 +0200
+++ vdr-1.5.6/tools.h	2007-07-22 18:56:30.000000000 +0200
@@ -175,9 +175,9 @@ 
 char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' and deletes the original string if necessary!
 inline char *skipspace(const char *s)
 {
-  if (*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible
+  if ((uchar)*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible
      return (char *)s;
-  while (*s && *s <= ' ') // avoiding isspace() here, because it is much slower
+  while (*s && (uchar)*s <= ' ') // avoiding isspace() here, because it is much slower
         s++;
   return (char *)s;
 }