vdr 1.3.25 thread problems (was: Re: [vdr] vdr 1.3.25 delivers wrong wakeup time)

Rainer Zocholl UseNet-Posting-Nospam-74308- at zocki.toppoint.de
Wed Jun 1 16:04:00 CEST 2005

/video0/pwroff get the parameters from VDR:
VDR shutdown delay now 1:1117634400 2:3702 3:88 4:Do It Yourself - S.O.S. 5:0

that is time
msi:~/video#  date  -d  "1970-01-01 1117634400 sec"
Wed Jun  1 15:00:00 CEST 2005

the timer is:
msi:~/video# grep Yourself /video0/timers.conf
1:T-8468-8705-16403:MTWTF--:1600:1701:50:3:Do It Yourself - S.O.S.:

Jun  1 15:15:56 msi vdr[5722]: executing '/video0/pwroff 1117634400 2644 88
"Do It Yourself - S.O.S." 0'
Jun  1 15:15:56 msi pwroff: VDR shutdown 1:1117634400 2:2644 3:88 4:Do It
Yourself - S.O.S. 5:0 A:1117634400 2644 88 Do It Yourself - S.O.S. 0
Jun  1 15:15:57 msi pwroff: wrong wakeup time 1117634400!

It seems that VDR finds the right timer, but calcutes the time
in second wrong! 

The most beloved problem: Reentrancy...

cString TimeToString(time_t t)
  char buffer[32];
  if (ctime_r(&t, buffer)) {
     buffer[strlen(buffer) - 1] = 0; // strip trailing newline
     return buffer;
  return "???";

It's no good idea to deference a variable on the stack
OUTSIDE the function it self...
It might work but is not really better than a static
and is not relyable!

Having a deja vue:
I thought all that was "overworked" with the "thread-save" patches
3 month ago? 

ere old soruces fed back to cvs?

Making it "static" violates multithreading...

the fastest:
Make it like in ctime_r an define a buffer pint as parameter
the slowest: use the ugly aprintf and don't forget to free
the memory...

Rainer---<=====>                         Vertraulich
         <=====>--------------ocholl, Kiel, Germany ------------

More information about the vdr mailing list