diff -ruN vdr-1.4.4/CONTRIBUTORS vdr-1.4.5/CONTRIBUTORS
--- vdr-1.4.4/CONTRIBUTORS	2006-11-04 14:18:43.000000000 +0100
+++ vdr-1.4.5/CONTRIBUTORS	2007-01-04 14:38:40.000000000 +0100
@@ -1113,6 +1113,7 @@
  for implementing cDevice::ForceTransferMode()
  for changing the behaviour when hitting the end of a recording in fast forward mode
  for suggesting to give the cRemote::CallPlugin() function a boolean return value
+ for fixing a possible crash in remux.c on 64-bit machines
 
 Richard Robson <richard_robson@beeb.net>
  for reporting freezing replay if a timer starts while in Transfer Mode from the
@@ -1474,6 +1475,10 @@
  for reporting that an assignment in svdrp.c didn't use the cTimer::operator=())
  for suggesting that the function cThread::Cancel() should only set 'running' to
  false and not actually kill the thread if the special value -1 is given
+ or fixing a possible segfault in cSkins::Message()
+ for some hints on how to improve handling cPluginManager::Active()
+ for fixing a possible segfault if VDR gets terminated while a message is displayed
+ for reporting an error in the INSTALL section on retrying shutdown later
 
 Sven Kreiensen <svenk@kammer.uni-hannover.de>
  for his help in keeping 'channels.conf.terr' up to date
@@ -1521,6 +1526,9 @@
  cStatus::Replaying(), so that they can provide the full file name of the recording
  for suggesting that externally provided EPG data (with table ID 0x00) shall get its
  component descriptors set from the broadcast data
+ for reporting a typo in the change to the "Use small font" setup option in version
+ 1.3.47 in the HISTORY and CONTRIBUTORS file
+ for reporting a missing 'const' in cRecordingInfo::ChannelID()
 
 Dino Ravnic <dino.ravnic@fer.hr>
  for fixing some characters in the iso8859-2 font file
@@ -1638,6 +1646,7 @@
  for fixing converting the port number in the "connect from..." log message of SVDRP
  for reporting that there are places where ntohs() is assigned to different types
  for adapting cThread::ThreadId() to recent kernels
+ for some improvements to the man pages
 
 Steffen Beyer <cpunk@reactor.de>
  for fixing setting the colored button help after deleting a recording in case the next
@@ -1899,11 +1908,12 @@
 Suur Karu <suurkaru@fastmail.fm>
  for reporting a problem with the tuning timeout for channels that have low symbol
  rates
+ for reporting that dropping the 'uint64' typedef caused many plugins to be modified
 
 Ronny Kornexl <ronny.kornexl@online.de>
  for reporting a problem with setting "No title" for broken event data
  for suggesting to make the "Use small font" setup option *always* use the small
- font if set to '3' - even if it would have been a fixed font
+ font if set to '2' - even if it would have been a fixed font
  for reporting a bug in initializing 'noapiv' in the Makefile
 
 Vladimír Bárta <vladimir.barta@k2atmitec.cz>
@@ -2006,6 +2016,8 @@
 Frank Schmirler <vdr@schmirler.de>
  for fixing handling client side termination of SVDRP connections
  for fixing assigning schedules to channels in case there is no initial EPG information
+ for making entering text via the numeric keys check the characters against the
+ allowed characters
 
 Jörn Reder <joern@zyn.de>
  for reporting that a recording may unnecessarily block a device with a CAM, while
@@ -2032,3 +2044,9 @@
 Ulf Kiener <webmaster@ulf-kiener.de>
  for reporting a problem with audio track descriptions in the DVD plugin after a
  replay has been stopped
+
+Jörg Wendel <vdr-ml@jwendel.de>
+ for reporting that cPlugin::Active() was called too often
+
+Peter Pinnau <vdr@unterbrecher.de>
+ for reporting that 'uint32_t' requires uncluding stdint.h in font.h on some systems
diff -ruN vdr-1.4.4/HISTORY vdr-1.4.5/HISTORY
--- vdr-1.4.4/HISTORY	2006-11-04 14:18:10.000000000 +0100
+++ vdr-1.4.5/HISTORY	2007-01-07 14:47:19.000000000 +0100
@@ -4611,7 +4611,7 @@
   (since version 1.3.38 disk access is done in a separate thread, so the watchdog
   timer won't hit).
 - Changed the behaviour of the "Use small font" setup option to *always* use the small
-  font if set to '3' - even if it would have been a fixed font (suggested by Ronny
+  font if set to '2' - even if it would have been a fixed font (suggested by Ronny
   Kornexl).
 - No longer using characters 0x01 and 0x02 for mapping single quote and slash in
   recording names (thanks to Patrick Fischer for reporting that this was a problem
@@ -4985,3 +4985,46 @@
 
 - Fixed displaying the replay mode symbol in case of "Multi speed mode" (reported
   by Marco Schlüßler).
+
+2006-12-03: Version 1.4.4-1
+
+- Some improvements to the man pages (thanks to Ville Skyttä).
+- Fixed a possible segfault in cSkins::Message() (thanks to Udo Richter).
+- Made the getskyepg.pl script of the 'sky' plugin send a user agent message to
+  the server, according to the rules at http://bleb.org/tv/data/listings.
+  If your version of 'wget' doesn't support the -U option to set the user agent,
+  use the new option -U of getskyepg.pl to have the information added to the URL
+  as a query string.
+- The getskyepg.pl script now replaces "&amp;" with "&".
+- Fixed a possible crash in remux.c on 64-bit machines (thanks to Reinhard Nissl).
+- Fixed a typo in the change to the "Use small font" setup option in version 1.3.47
+  in the HISTORY and CONTRIBUTORS file (reported by Andreas Brugger).
+- Added a missing 'const' to cRecordingInfo::ChannelID() (reported by Andreas
+  Brugger). This required the APIVERSION to be increased, so plugins will have to
+  be recompiled.
+- Now calling cPluginManager::Active() only if VDR is really trying to shut down,
+  and waiting for 5 minutes before calling it again (thanks to Jörg Wendel for
+  reporting that cPlugin::Active() was called too often, and to Udo Richter for
+  some hints on how to improve this).
+- Replaced 'unsigned long' with 'uint32_t' and 'uint64' with 'uint64_t' to
+  avoid problems on 64-bit machines.
+
+2006-12-03: Version 1.4.4-2
+
+- Added '#include <stdint.h>' to font.h (reported by Peter Pinnau).
+- Added a compatibility define for 'uint64' to tools.h, so that existing
+  plugins don't need to be modified immediately (reported by Suur Karu).
+  This will be removed in version 1.5.
+
+2007-01-05: Version 1.4.4-3
+
+- Fixed a possible segfault if VDR gets terminated while a message is displayed
+  (thanks to Udo Richter).
+- Fixed the INSTALL section on retrying shutdown later (reported by Udo Richter).
+- When entering text via the numeric keys, the characters are now checked against
+  the allowed characters (thanks to Frank Schmirler).
+- Added a missing break statement in cCiHandler::OpenSession().
+
+2007-01-07: Version 1.4.5
+
+- Official release.
diff -ruN vdr-1.4.4/INSTALL vdr-1.4.5/INSTALL
--- vdr-1.4.4/INSTALL	2006-07-30 12:57:25.000000000 +0200
+++ vdr-1.4.5/INSTALL	2007-01-04 14:22:01.000000000 +0100
@@ -199,9 +199,8 @@
 Before the shutdown program is called, the user will be prompted to inform
 him that the system is about to shut down. If any remote control key is
 pressed while this prompt is visible, the shutdown will be cancelled (and
-tried again after another MinUserInactivity minutes). The shutdown prompt
-will be displayed for 5 minutes, which should be enough time for the user
-to react.
+tried again later). The shutdown prompt will be displayed for 5 minutes, which
+should be enough time for the user to react.
 
 A sample shell script to be used with the '-s' option might look like this:
 
diff -ruN vdr-1.4.4/PLUGINS/src/sky/HISTORY vdr-1.4.5/PLUGINS/src/sky/HISTORY
--- vdr-1.4.4/PLUGINS/src/sky/HISTORY	2006-03-26 11:26:11.000000000 +0200
+++ vdr-1.4.5/PLUGINS/src/sky/HISTORY	2006-12-02 10:55:31.000000000 +0100
@@ -45,3 +45,12 @@
 2006-03-26: Version 0.3.5
 
 - Fixed format string handling.
+
+2006-12-02: Version 0.3.5 (version number not increased)
+
+- Made the getskyepg.pl script send a user agent message to
+  the server, according to the rules at http://bleb.org/tv/data/listings.
+  If your version of 'wget' doesn't support the -U option to set the user agent,
+  use the new option -U of getskyepg.pl to have the information added to the URL
+  as a query string.
+- The getskyepg.pl script now replaces "&amp;" with "&".
diff -ruN vdr-1.4.4/PLUGINS/src/sky/getskyepg.pl vdr-1.4.5/PLUGINS/src/sky/getskyepg.pl
--- vdr-1.4.4/PLUGINS/src/sky/getskyepg.pl	2006-01-08 11:21:32.000000000 +0100
+++ vdr-1.4.5/PLUGINS/src/sky/getskyepg.pl	2006-12-02 10:52:49.000000000 +0100
@@ -8,7 +8,7 @@
 #
 # See the README file for copyright information and how to reach the author.
 #
-# $Id: getskyepg.pl 1.4 2006/01/08 10:21:32 kls Exp $
+# $Id: getskyepg.pl 1.6 2006/12/02 09:52:49 kls Exp $
 
 use Getopt::Std;
 use Time::Local;
@@ -21,18 +21,29 @@
          -p port            SVDRP port number (default: 2001)
          -S source          channel source (default: S28.2E)
          -D days            days to get EPG for (1..7, default: 2)
+         -U                 use this if your version of 'wget' doesn't support -U
 };
 
-die $Usage if (!getopts("c:d:D:hp:S:") || $opt_h);
+die $Usage if (!getopts("c:d:D:hp:S:U") || $opt_h);
 
 $Conf   = $opt_c || "channels.conf.sky";
 $Dest   = $opt_d || "localhost";
 $Port   = $opt_p || 2001;
 $Source = $opt_S || "S28.2E";
 $Days   = $opt_D || 2;
+$User   = $opt_U;
+
+# See "Rules for using this data" on http://bleb.org/tv/data/listings.
+# In case you modify this script in a way that changes its behavior
+# towards the www.bleb.org website, please replace 'vdrbugs@cadsoft.de'
+# with your own email address! That way Andrew Flegg <andrew@bleb.org>,
+# who runs that web site, can contact you in case of problems.
+$IDENT = "VDR::getskyepg.pl, http://www.cadsoft.de/vdr - vdrbugs\@cadsoft.de";
+$GAP = 2;
 
 $SkyWebPage = "www.bleb.org/tv/data/listings";
 $WGET = "/usr/bin/wget -q -O-";
+$WGET .= " -U '$IDENT'" unless $User;
 $LOGGER = "/usr/bin/logger -t SKYEPG";
 
 $DST = -3600; # Daylight Saving Time offset
@@ -76,13 +87,21 @@
   my $channel = shift;
   my $day = shift;
   $day--;
-  my $url = "$SkyWebPage/$day/$channel.xml";
+  my $url = "http://$SkyWebPage/$day/$channel.xml";
+  $url .= "?$IDENT" if $User;
   Log("reading $url");
   my @page = split("\n", `$WGET '$url'`);
   Log("received " . ($#page + 1) . " lines");
   return @page;
 }
 
+sub ReplaceTags
+{
+  my $s = shift;
+  $s =~ s/&amp;/&/g;
+  return $s;
+}
+
 sub StripWhitespace
 {
   my $s = shift;
@@ -96,7 +115,7 @@
   my $s = shift;
   my $t = shift;
   $s =~ /<$t>([^<]*)<\/$t>/;
-  return StripWhitespace($1);
+  return ReplaceTags(StripWhitespace($1));
 }
 
 # In order to get the duration we need to buffer the last event:
@@ -174,6 +193,7 @@
              $data .= $line;
              }
           }
+      sleep($GAP);
       }
   SVDRPsend("c");
   Log("generated $numEvents EPG events");
diff -ruN vdr-1.4.4/channels.conf vdr-1.4.5/channels.conf
--- vdr-1.4.4/channels.conf	2006-08-27 10:48:58.000000000 +0200
+++ vdr-1.4.5/channels.conf	2007-01-07 14:55:46.000000000 +0100
@@ -6,10 +6,10 @@
 Bayerisches FS;ARD:11836:hC34:S19.2E:27500:201:202=deu:204:0:28107:1:1101:0
 hr-fernsehen;ARD:11836:hC34:S19.2E:27500:301:302=deu:304:0:28108:1:1101:0
 NDR FS MV;ARD:12109:hC34:S19.2E:27500:2401:2402=deu:2404:0:28224:1:1073:0
-SR SÜDWEST Ferns.;ARD:12265:hC34:S19.2E:27500:1301:1302=deu:1304:0:28486:1:1093:0
+SR Fernsehen;ARD:12265:hC34:S19.2E:27500:1301:1302=deu:1304:0:28486:1:1093:0
 WDR Köln;ARD:11836:hC34:S19.2E:27500:601:602=deu:604:0:28111:1:1101:0
 BR-alpha;ARD:11836:hC34:S19.2E:27500:701:702=deu:704:0:28112:1:1101:0
-SÜDWEST Ferns. BW;ARD:11836:hC34:S19.2E:27500:801:802=deu:804:0:28113:1:1101:0
+SWR Fernsehen BW;ARD:11836:hC34:S19.2E:27500:801:802=deu:804:0:28113:1:1101:0
 Phoenix;ARD:11836:hC34:S19.2E:27500:901:902=deu:904:0:28114:1:1101:0
 ZDF;ZDFvision:11953:hC34:S19.2E:27500:110:120=deu,121=2ch;125=dd:130:0:28006:1:1079:0
 3sat;ZDFvision:11953:hC34:S19.2E:27500:210:220=deu,221=2ch;225=dd:230:0:28007:1:1079:0
@@ -44,30 +44,30 @@
 MDR FERNSEHEN;ARD:12109:hC34:S19.2E:27500:401:402=deu:404:0:28204:1:1073:0
 rbb Berlin;ARD:12109:hC34:S19.2E:27500:601:602=deu:604:0:28206:1:1073:0
 :Premiere World
-PREMIERE START,START;PREMIERE:12070:hC34:S19.2E:27500:3071:3072=deu:32:1801,1702,1722:8:133:1:0
-PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1:10:133:2:0
-PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu;1795=deu:32:1:11:133:2:0
-PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu;2307=deu:32:1:43:133:2:0
+PREMIERE START,START;PREMIERE:12070:hC34:S19.2E:27500:3071:3072=deu:32:1702,1722,1801:8:133:1:0
+PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1722,1702,1801:10:133:2:0
+PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1801,1722,1702:11:133:2:0
+PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu;2307=deu:32:1702,1722,1801:43:133:2:0
 PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=deu;771=deu:32:1801,1722,1702:9:133:2:0
 PREMIERE SERIE,SERIE;PREMIERE:11797:hC34:S19.2E:27500:2559:2560=deu;2563=deu:32:1801,1702,1722:16:133:2:0
 PREMIERE KRIMI,KRIMI;PREMIERE:11797:hC34:S19.2E:27500:2815:2816=deu:32:1702,1801,1722:23:133:2:0
 PREMIERE NOSTALGIE,NOSTALGIE;PREMIERE:11719:hC34:S19.2E:27500:1535:1536=deu:32:1702,1801,1722:516:133:3:0
-PREMIERE FILMCLASSICS,FILMCLASSICS;PREMIERE:11719:hC34:S19.2E:27500:1023:1024=deu:32:1801,1702,1722:41:133:3:0
+PREMIERE FILMCLASSICS,FILMCLASSICS;PREMIERE:11719:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:41:133:3:0
 PREMIERE FILMFEST,FILMFEST;PREMIERE:11719:hC34:S19.2E:27500:1279:1280=deu:32:1801,1702,1722:20:133:3:0
-DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1:34:133:17:0
+DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1801,1702,1722:34:133:17:0
 :Premiere Direkt
 PREMIERE DIREKT,DIREKT;PREMIERE:12031:hC34:S19.2E:27500:2815:2816=deu,2817=deu;2819=deu:0:0:18:133:4:0
 :PW Erotic
 BEATE-UHSE.TV,B-UHSE;PREMIERE:11758:hC34:S19.2E:27500:1791:1792=deu:32:1702,1722,1801:21:133:17:0
-EROTIK - AB 18!,AB 18!;PREMIERE:12031:hC34:S19.2E:27500:1279:1280=deu:0:1801,1702,1722,1810:513:133:4:0
+EROTIK - AB 18!,AB 18!;PREMIERE:12031:hC34:S19.2E:27500:1279:1280=deu:0:1722,1801,1702,1810:513:133:4:0
 :Sportsworld
 PREMIERE SPORT PORTAL,SPORT PORTAL;PREMIERE:11719:hC34:S19.2E:27500:255:256=deu,257=deu;259=deu:32:1722,1801,1702:17:133:3:0
-Live Wetten:12031:hC34:S19.2E:27500:3839:3840=deu:33:0:27:133:4:0
+PREMIERE WIN,WIN;PREMIERE:12031:hC34:S19.2E:27500:3839:3840=deu:33:0:27:133:4:0
 :Beta Digital
 N24;ProSiebenSat.1:12480:vC34:S19.2E:27500:2047:2048=deu:36:0:47:133:33:0
 LibertyTV FR;LibertyTV.com:12610:vC56:S19.2E:22000:941:943=deu:0:0:12199:1:1112:0
 :-
-münchen.TV/RFO,müTV/RFO;BetaDigital:12148:hC34:S19.2E:27500:495:496=deu:0:0:658:133:7:0
+APS.TV3;BetaDigital:12148:hC34:S19.2E:27500:495:496=deu:0:0:658:133:7:0
 ProSieben Austria;ProSiebenSat.1:12051:vC34:S19.2E:27500:161:84=deu;85=deu:36:0:20002:1:1082:0
 Kabel 1 Schweiz;ProSiebenSat.1:12051:vC34:S19.2E:27500:162:163=deu:165:0:20003:1:1082:0
 Kabel 1 Austria;ProSiebenSat.1:12051:vC34:S19.2E:27500:166:167=deu:169:0:20004:1:1082:0
@@ -82,20 +82,20 @@
 ASTRA-Mosaic 4;SES ASTRA:12551:vC56:S19.2E:22000:185:170=fra:0:0:3985:1:1108:0
 ASTRA-Mosaic 5;SES ASTRA:12551:vC56:S19.2E:22000:163:164:0:0:3984:1:1108:0
 Chamber TV;Chambre des Députées:12551:vC56:S19.2E:22000:55:56=ltz:0:0:12180:1:1108:0
-RTL TELE Letzebuerg:12551:vC56:S19.2E:22000:168:144=ltz,146=fra:74:0:3994:1:1108:0
-Nick/Talpa;CANALDIGITAAL:12574:hC56:S19.2E:22000:512+8190:84=dut:33:622,100:5010:53:1109:0
-NICK;MTV Networks:12226:hC34:S19.2E:27500:513+8190:661=deu:577:0:28640:1:1091:0
-Service 3;MTV Networks:11739:vC34:S19.2E:27500:3031:3032:3034:0:28653:1:1066:0
-VIVA;MTV Networks:11973:vC34:S19.2E:27500:4061+8190:4062:4064:0:28676:1:1078:0
-VIVA PLUS;MTV Networks:11973:vC34:S19.2E:27500:4071+8190:4072:4074:0:28677:1:1078:0
+RTL Tele Letzebuerg:12551:vC56:S19.2E:22000:168:144=ltz,146=fra:301:0:3994:1:1108:0
+tien;CANALDIGITAAL:12574:hC56:S19.2E:22000:512+8190:84=dut:33:622,100:5010:53:1109:0
+NICK AUSTRIA;MTV Networks:12226:hC34:S19.2E:27500:513+8190:661=deu:577:0:28640:1:1091:0
+Service 3;MTV Networks Europe:11739:vC34:S19.2E:27500:3031:3032:3034:0:28653:1:1066:0
+VIVA;MTV Networks Europe:11973:vC34:S19.2E:27500:4061+8190:4062:4064:0:28676:1:1078:0
+VIVA PLUS;MTV Networks Europe:11973:vC34:S19.2E:27500:4071+8190:4072:4074:0:28677:1:1078:0
 QVC Deutschland;QVC:12551:vC56:S19.2E:22000:165:166:167:0:12100:1:1108:0
 TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0
 :NTSC
 Venevision;T-Systems/MTI:11200:vC56:S13.0E:27500:922:923=und:0:0:4750:0:13400:0
 EBC.1;T-Systems/MTI:11200:vC56:S13.0E:27500:373:374=eng:0:0:4747:0:13400:0
 :HDTV
-HDFORUM;TF1:11242:vC34:S13.0E:27500:0:36=fra:0:0:13809:100:200:0
-HD FORUM;EUTELSAT:11240:vC34:S13.0E:27500:33:36=fra:0:0:13809:318:200:0
+HDFORUM;TF1:11242:vC34:S13.0E:27500:0:36=fra,37=fra:0:0:13809:100:200:0
+LUXE TV HD;Eutelsat:11240:vC34:S13.0E:27500:33:36=fra:0:0:13809:318:200:0
 Euro1080 HD-5;Euro1080:10758:vC78:S23.5E:22000:34:160=eng:0:0:1085:9999:3104:0
 Euro1080;EURO1080:12168:vC56:S19.2E:27500:308:256:0:0:21100:1:1088:0
 SMD HD;SES ASTRA:12699:vC56:S19.2E:22000:133+80:234=eng:0:0:29700:0:0:0
@@ -103,13 +103,13 @@
 Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:0:29700:0:0:0
 TV HD;CSAT:12581:vC56:S19.2E:22000:165:100=fra;101=fra:0:0:9306:1:1110:0
 C M HD;Telenor:11261:hC78:S1.0W:24500:517:660=eng;661=eng:0:B00:3306:70:33:0
-C MORE HD;Telenor:11389:hC78:S1.0W:24500:512:640;641=eng:0:B00:3306:70:34:0
-HELLAS-HDTV;Scopus Network Technologies:11642:hC34:S13.0E:27500:2201:2211=ell,2212=eng:0:0:2200:318:15700:0
+CANAL+ HD;Telenor:11389:hC78:S1.0W:24500:512:640;641=eng:580:0:3306:70:34:0
+HELLAS-HDTV;Scopus Network Technologies:11645:hC34:S13.0E:27500:2201:2211=ell,2212=eng:0:0:2200:318:15700:0
 TPS Star:10757:vC34:S13.0E:27500:420:430=fra,431=eng:440:500,100:1204:176:11200:0
 :@201 Sky
 Sky One;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4703:2:2030:0
 Sky Two;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
-ITV2;BSkyB:10758:vC56:S28.2E:22000:2348:2350=eng,2352=NAR:2354:0:10070:2:2044:0
+ITV2;BSkyB:10758:vC56:S28.2E:22000:2348:2349=eng,2352=NAR:2354:0:10070:2:2044:0
 SCI FI;BSkyB:12148:hC23:S28.2E:27500:512+8190:640=eng,660=NAR:576:960,961:4905:2:2023:0
 ParaComedy 1;BSkyB:12187:hC23:S28.2E:27500:518+8190:666=eng,686=NAR:582:960,961:5904:2:2025:0
 ParaComedy 1;BSkyB:11526:vC23:S28.2E:27500:2317+2306:2318=eng:2319:960,961:50305:2:2404:0
@@ -118,25 +118,26 @@
 Sky Movies 1;BSkyB:11836:hC23:S28.2E:27500:518+8190:646=eng,653=NAR;666=eng:582:960,961:4303:2:2007:0
 Sky Movies 2;BSkyB:11836:hC23:S28.2E:27500:519+8190:647=eng,655=NAR;667=eng:583:960,961:4302:2:2007:0
 Sky Movies 3;BSkyB:11836:hC23:S28.2E:27500:520+8190:648=eng,654=NAR;668=eng:584:960,961:4403:2:2007:0
-Sky Movies 4;BSkyB:11914:hC23:S28.2E:27500:512+8190:640=eng,655=NAR;660=eng:576:960,961:4402:2:2011:0
-Sky Movies 5;BSkyB:11914:hC23:S28.2E:27500:515+8190:643=eng,656=NAR;663=eng:579:960,961:4503:2:2011:0
-Sky Movies 6;BSkyB:11914:hC23:S28.2E:27500:513+8190:641=eng,657=NAR;661=eng:577:960,961:4502:2:2011:0
+Sky Movies 4;BSkyB:11836:hC23:S28.2E:27500:512+8190:640=eng,657=NAR;660=eng:576:960,961:4304:2:2007:0
+Sky Movies 5;BSkyB:11836:hC23:S28.2E:27500:513+8190:641=eng,658=NAR;661=eng:577:960,961:4305:2:2007:0
+Sky Movies 6;BSkyB:11836:hC23:S28.2E:27500:514+8190:642=eng,659=NAR;662=eng:578:960,961:4306:2:2007:0
 Sky Movies 7;BSkyB:12285:vC23:S28.2E:27500:515+8190:643=eng,653=NAR;663=eng:579:960,961:4603:2:2030:0
 Sky Movies 8;BSkyB:11836:hC23:S28.2E:27500:515+8190:643=eng,656=NAR;663=eng:579:960,961:5502:2:2007:0
 Sky Movies 9;BSkyB:12285:vC23:S28.2E:27500:518+8190:646=eng,654=NAR;666=eng:2440:960,961:4602:2:2030:0
-Sky Cinema 1;BSkyB:12285:vC23:S28.2E:27500:519+8190:647=eng,667=NAR:583:960,961:4809:2:2030:0
-Sky Cinema 2;BSkyB:12285:vC23:S28.2E:27500:517+8190:645=eng,665=NAR:581:960,961:4802:2:2030:0
+Sky Movies 10;BSkyB:12285:vC23:S28.2E:27500:514+8190:642=eng,655=NAR;662=eng:2441:960,961:4604:2:2030:0
+Sky Cinema 1;BSkyB:11603:vC23:S28.2E:27500:513+129:641=eng,661=NAR:577:960,961:4651:2:2408:0
+Sky Cinema 2;BSkyB:11603:vC23:S28.2E:27500:514+130:642=eng,662=NAR:578:960,961:4652:2:2408:0
 :@900 Some 'seed' channels
 Chelsea TV;BskyB:11778:vC23:S28.2E:27500:2308+2304:2309=eng:0:960,961:9307:2:2004:0
 WDR Münster;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28310:1:1201:0
-Animal Plnt+1;BSkyB:12070:hC23:S28.2E:27500:514+8190:662=eng:0:960,961:50002:2:2019:0
+Animal Plnt+1;BSkyB:12070:hC23:S28.2E:27500:514+8190:662=eng,682=NAR:578:960,961:50002:2:2019:0
 S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:2030:0
-CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
+CNN;BSkyB:12051:vC23:S28.2E:27500:2317:2319=eng:2318:0:7140:2:2018:0
 BBC PARL'MNT;BSkyB:10847:vC56:S28.2E:22000:2327:2328=eng:2331:0:6902:2:2050:0
 MTI;T-Systems/MTI:11200:vC56:S13.0E:27500:4097:4098:0:0:4733:318:13400:0
 WRN Eng AAP;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
-Dr Dish TV;Overon:12359:hC34:S13.0E:27500:4231:4232=eng:0:0:14023:318:8300:0
+Dr Dish TV;Overon:12359:hC34:S13.0E:27500:4231:4232:0:0:14023:318:8300:0
 ! LifeStyle-TV !;T-Systems:12633:hC56:S19.2E:22000:204:304=deu:0:0:12603:1:1113:0
 Challenger Tv;Telespazio:11295:hC34:S13.0E:27500:490:491:0:0:8409:318:500:0
-TVS Teleport Bonn;DMV:11535:vC34:S1.0W:5632:308+8190:256=eng,257=eng:0:0:1:65535:1:0
+NDS Enc 3;NDS:11535:vC34:S1.0W:5632:308+8190:256=eng,257=fra:273:0:1:65535:1:0
 :@1000 New channels
diff -ruN vdr-1.4.4/ci.c vdr-1.4.5/ci.c
--- vdr-1.4.4/ci.c	2006-08-20 13:38:33.000000000 +0200
+++ vdr-1.4.5/ci.c	2007-01-05 11:08:46.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: ci.c 1.45 2006/08/20 11:38:33 kls Exp $
+ * $Id: ci.c 1.46 2007/01/05 10:08:46 kls Exp $
  */
 
 #include "ci.h"
@@ -1607,6 +1607,7 @@
                  }
               esyslog("ERROR: can't create session for resource identifier: %08X", ResourceId);
             }
+            break;
        default: esyslog("ERROR: unknown resource identifier: %08X", ResourceId);
        }
      }
diff -ruN vdr-1.4.4/config.h vdr-1.4.5/config.h
--- vdr-1.4.4/config.h	2006-11-04 14:19:31.000000000 +0100
+++ vdr-1.4.5/config.h	2007-01-07 14:45:19.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.h 1.277 2006/11/04 13:19:31 kls Exp $
+ * $Id: config.h 1.282 2007/01/07 13:45:19 kls Exp $
  */
 
 #ifndef __CONFIG_H
@@ -21,13 +21,13 @@
 
 // VDR's own version number:
 
-#define VDRVERSION  "1.4.4"
-#define VDRVERSNUM   10404  // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION  "1.4.5"
+#define VDRVERSNUM   10405  // Version * 10000 + Major * 100 + Minor
 
 // The plugin API's version number:
 
-#define APIVERSION  "1.4.4"
-#define APIVERSNUM   10404  // Version * 10000 + Major * 100 + Minor
+#define APIVERSION  "1.4.5"
+#define APIVERSNUM   10405  // Version * 10000 + Major * 100 + Minor
 
 // When loading plugins, VDR searches them by their APIVERSION, which
 // may be smaller than VDRVERSION in case there have been no changes to
diff -ruN vdr-1.4.4/font.h vdr-1.4.5/font.h
--- vdr-1.4.4/font.h	2006-02-05 14:46:36.000000000 +0100
+++ vdr-1.4.5/font.h	2006-12-03 17:42:10.000000000 +0100
@@ -4,12 +4,13 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: font.h 1.12 2006/02/05 13:46:36 kls Exp $
+ * $Id: font.h 1.14 2006/12/03 16:42:10 kls Exp $
  */
 
 #ifndef __FONT_H
 #define __FONT_H
 
+#include <stdint.h>
 #include <stdlib.h>
 
 enum eDvbFont {
@@ -32,7 +33,7 @@
 class cFont {
 public:
   enum { NUMCHARS = 256 };
-  typedef unsigned long tPixelData;
+  typedef uint32_t tPixelData;
   struct tCharData {
     tPixelData width, height;
     tPixelData lines[1];
diff -ruN vdr-1.4.4/menu.c vdr-1.4.5/menu.c
--- vdr-1.4.4/menu.c	2006-11-04 14:13:18.000000000 +0100
+++ vdr-1.4.5/menu.c	2006-12-02 12:12:02.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.c 1.445 2006/11/04 13:13:18 kls Exp $
+ * $Id: menu.c 1.446 2006/12/02 11:12:02 kls Exp $
  */
 
 #include "menu.h"
@@ -3280,7 +3280,7 @@
             return osEnd;
             }
     };
-  if (!timeout || lastTime.Elapsed() < (uint64)(Setup.ChannelInfoTime * 1000)) {
+  if (!timeout || lastTime.Elapsed() < (uint64_t)(Setup.ChannelInfoTime * 1000)) {
      if (Key == kNone && !number && group < 0 && !NewChannel && channel && channel->Number() != cDevice::CurrentChannel()) {
         // makes sure a channel switch through the SVDRP CHAN command is displayed
         channel = Channels.GetByNumber(cDevice::CurrentChannel());
diff -ruN vdr-1.4.4/menuitems.c vdr-1.4.5/menuitems.c
--- vdr-1.4.4/menuitems.c	2006-07-30 11:09:30.000000000 +0200
+++ vdr-1.4.5/menuitems.c	2007-01-04 14:30:37.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menuitems.c 1.47 2006/07/30 09:09:30 kls Exp $
+ * $Id: menuitems.c 1.48 2007/01/04 13:30:37 kls Exp $
  */
 
 #include "menuitems.h"
@@ -461,13 +461,6 @@
                           AdvancePos();
                        currentChar = NULL;
                        }
-                    if (insert && newchar) {
-                       // create a new character in insert mode
-                       if (int(strlen(value)) < length - 1) {
-                          memmove(value + pos + 1, value + pos, strlen(value) - pos + 1);
-                          value[pos] = ' ';
-                          }
-                       }
                     if (!currentChar || !*currentChar || *currentChar == '\t') {
                        // find the beginning of the character map entry for Key
                        int n = NORMALKEY(Key) - k0;
@@ -476,15 +469,28 @@
                              if (*currentChar++ == '\t')
                                 n--;
                              }
+                       // find first allowed character
+                       while (*currentChar && *currentChar != '\t' && !strchr(allowed, *currentChar))
+                             currentChar++;
                        }
                     if (*currentChar && *currentChar != '\t') {
+                       if (insert && newchar) {
+                          // create a new character in insert mode
+                          if (int(strlen(value)) < length - 1) {
+                             memmove(value + pos + 1, value + pos, strlen(value) - pos + 1);
+                             value[pos] = ' ';
+                             }
+                          }
                        value[pos] = *currentChar;
                        if (uppercase)
                           value[pos] = toupper(value[pos]);
-                       currentChar++;
+                       // find next allowed character
+                       do {
+                          currentChar++;
+                          } while (*currentChar && *currentChar != '\t' && !strchr(allowed, *currentChar));
+                       newchar = false;
+                       autoAdvanceTimeout.Set(AUTO_ADVANCE_TIMEOUT);
                        }
-                    newchar = false;
-                    autoAdvanceTimeout.Set(AUTO_ADVANCE_TIMEOUT);
                     }
                  else
                     return cMenuEditItem::ProcessKey(Key);
diff -ruN vdr-1.4.4/rcu.c vdr-1.4.5/rcu.c
--- vdr-1.4.4/rcu.c	2006-06-16 11:29:24.000000000 +0200
+++ vdr-1.4.5/rcu.c	2006-12-02 12:12:28.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: rcu.c 1.14 2006/06/16 09:29:24 kls Exp $
+ * $Id: rcu.c 1.15 2006/12/02 11:12:28 kls Exp $
  */
 
 #include "rcu.h"
@@ -97,7 +97,7 @@
   time_t LastCodeRefresh = 0;
   cTimeMs FirstTime;
   unsigned char LastCode = 0, LastMode = 0;
-  uint64 LastCommand = ~0; // 0x00 might be a valid command
+  uint64_t LastCommand = ~0; // 0x00 might be a valid command
   unsigned int LastData = 0;
   bool repeat = false;
 
@@ -109,13 +109,13 @@
                   buffer.raw[i] = b;
                   if (i == 5) {
                      unsigned short Address = ntohs(buffer.data.address); // the PIC sends bytes in "network order"
-                     uint64         Command = ntohl(buffer.data.command);
+                     uint64_t       Command = ntohl(buffer.data.command);
                      if (code == 'B' && Address == 0x0000 && Command == 0x00004000)
                         // Well, well, if it isn't the "d-box"...
                         // This remote control sends the above command before and after
                         // each keypress - let's just drop this:
                         break;
-                     Command |= uint64(Address) << 32;
+                     Command |= uint64_t(Address) << 32;
                      if (Command != LastCommand) {
                         LastCommand = Command;
                         repeat = false;
diff -ruN vdr-1.4.4/recording.h vdr-1.4.5/recording.h
--- vdr-1.4.4/recording.h	2006-07-30 12:24:07.000000000 +0200
+++ vdr-1.4.5/recording.h	2006-12-01 16:06:07.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: recording.h 1.55 2006/07/30 10:24:07 kls Exp $
+ * $Id: recording.h 1.56 2006/12/01 15:06:07 kls Exp $
  */
 
 #ifndef __RECORDING_H
@@ -50,7 +50,7 @@
   void SetAux(const char *Aux);
 public:
   ~cRecordingInfo();
-  tChannelID ChannelID(void) { return channelID; }
+  tChannelID ChannelID(void) const { return channelID; }
   const char *Title(void) const { return event->Title(); }
   const char *ShortText(void) const { return event->ShortText(); }
   const char *Description(void) const { return event->Description(); }
diff -ruN vdr-1.4.4/remote.c vdr-1.4.5/remote.c
--- vdr-1.4.4/remote.c	2006-10-14 13:05:57.000000000 +0200
+++ vdr-1.4.5/remote.c	2006-12-02 12:12:42.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remote.c 1.54 2006/10/14 11:05:57 kls Exp $
+ * $Id: remote.c 1.55 2006/12/02 11:12:42 kls Exp $
  */
 
 #include "remote.h"
@@ -116,7 +116,7 @@
   return true;
 }
 
-bool cRemote::Put(uint64 Code, bool Repeat, bool Release)
+bool cRemote::Put(uint64_t Code, bool Repeat, bool Release)
 {
   char buffer[32];
   snprintf(buffer, sizeof(buffer), "%016LX", Code);
@@ -203,7 +203,7 @@
 
 struct tKbdMap {
   eKbdFunc func;
-  uint64 code;
+  uint64_t code;
   };
 
 static tKbdMap KbdMap[] = {
@@ -264,7 +264,7 @@
   rawMode = RawMode;
 }
 
-uint64 cKbdRemote::MapFuncToCode(int Func)
+uint64_t cKbdRemote::MapFuncToCode(int Func)
 {
   for (tKbdMap *p = KbdMap; p->func != kfNone; p++) {
       if (p->func == Func)
@@ -273,7 +273,7 @@
   return (Func <= 0xFF) ? Func : 0;
 }
 
-int cKbdRemote::MapCodeToFunc(uint64 Code)
+int cKbdRemote::MapCodeToFunc(uint64_t Code)
 {
   for (tKbdMap *p = KbdMap; p->func != kfNone; p++) {
       if (p->code == Code)
@@ -296,9 +296,9 @@
   return -1;
 }
 
-uint64 cKbdRemote::ReadKeySequence(void)
+uint64_t cKbdRemote::ReadKeySequence(void)
 {
-  uint64 k = 0;
+  uint64_t k = 0;
   int key1;
 
   if ((key1 = ReadKey()) >= 0) {
@@ -342,7 +342,7 @@
 void cKbdRemote::Action(void)
 {
   while (Running()) {
-        uint64 Command = ReadKeySequence();
+        uint64_t Command = ReadKeySequence();
         if (Command) {
            if (rawMode || !Put(Command)) {
               int func = MapCodeToFunc(Command);
diff -ruN vdr-1.4.4/remote.h vdr-1.4.5/remote.h
--- vdr-1.4.4/remote.h	2006-10-14 13:46:58.000000000 +0200
+++ vdr-1.4.5/remote.h	2006-12-02 12:12:49.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: remote.h 1.37 2006/10/14 11:46:58 kls Exp $
+ * $Id: remote.h 1.38 2006/12/02 11:12:49 kls Exp $
  */
 
 #ifndef __REMOTE_H
@@ -35,7 +35,7 @@
   cRemote(const char *Name);
   const char *GetSetup(void);
   void PutSetup(const char *Setup);
-  bool Put(uint64 Code, bool Repeat = false, bool Release = false);
+  bool Put(uint64_t Code, bool Repeat = false, bool Release = false);
   bool Put(const char *Code, bool Repeat = false, bool Release = false);
 public:
   virtual ~cRemote();
@@ -100,13 +100,13 @@
   struct termios savedTm;
   virtual void Action(void);
   int ReadKey(void);
-  uint64 ReadKeySequence(void);
-  int MapCodeToFunc(uint64 Code);
+  uint64_t ReadKeySequence(void);
+  int MapCodeToFunc(uint64_t Code);
 public:
   cKbdRemote(void);
   virtual ~cKbdRemote();
   static bool KbdAvailable(void) { return kbdAvailable; }
-  static uint64 MapFuncToCode(int Func);
+  static uint64_t MapFuncToCode(int Func);
   static void SetRawMode(bool RawMode);
   };
 
diff -ruN vdr-1.4.4/remux.c vdr-1.4.5/remux.c
--- vdr-1.4.4/remux.c	2006-04-17 14:48:12.000000000 +0200
+++ vdr-1.4.5/remux.c	2006-12-01 15:46:25.000000000 +0100
@@ -11,7 +11,7 @@
  * The cRepacker family's code was originally written by Reinhard Nissl <rnissl@gmx.de>,
  * and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
  *
- * $Id: remux.c 1.56 2006/04/17 12:48:12 kls Exp $
+ * $Id: remux.c 1.57 2006/12/01 14:46:25 kls Exp $
  */
 
 #include "remux.h"
@@ -389,7 +389,7 @@
         }
 
   Data = Limit;
-  unsigned long *Scanner = (unsigned long *)(Data - 3);
+  uint32_t *Scanner = (uint32_t *)(Data - 3);
   scanner = ntohl(*Scanner);
   return false;
 }
@@ -615,7 +615,7 @@
         }
 
   Data = Limit + 1;
-  unsigned long *LocalScanner = (unsigned long *)(Data - 4);
+  uint32_t *LocalScanner = (uint32_t *)(Data - 4);
   localScanner = ntohl(*LocalScanner);
   return false;
 }
diff -ruN vdr-1.4.4/skins.c vdr-1.4.5/skins.c
--- vdr-1.4.4/skins.c	2006-06-03 16:39:14.000000000 +0200
+++ vdr-1.4.5/skins.c	2007-01-04 14:08:55.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: skins.c 1.11 2006/06/03 14:39:14 kls Exp $
+ * $Id: skins.c 1.13 2007/01/04 13:08:55 kls Exp $
  */
 
 #include "skins.h"
@@ -226,8 +226,11 @@
     }
   if (!Current())
      return kNone;
-  if (!cSkinDisplay::Current() && !displayMessage)
+  if (!cSkinDisplay::Current()) {
+     if (displayMessage)
+        delete displayMessage;
      displayMessage = Current()->DisplayMessage();
+     }
   cSkinDisplay::Current()->SetMessage(Type, s);
   cSkinDisplay::Current()->Flush();
   cStatus::MsgOsdStatusMessage(s);
@@ -355,3 +358,12 @@
   if (cSkinDisplay::Current())
      cSkinDisplay::Current()->Flush();
 }
+
+void cSkins::Clear(void)
+{
+  if (displayMessage) {
+     delete displayMessage;
+     displayMessage = NULL;
+     }
+  cList<cSkin>::Clear();
+}
diff -ruN vdr-1.4.4/skins.h vdr-1.4.5/skins.h
--- vdr-1.4.4/skins.h	2006-06-03 12:21:45.000000000 +0200
+++ vdr-1.4.5/skins.h	2007-01-04 14:08:55.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: skins.h 1.14 2006/06/03 10:21:45 kls Exp $
+ * $Id: skins.h 1.15 2007/01/04 13:08:55 kls Exp $
  */
 
 #ifndef __SKINS_H
@@ -360,6 +360,8 @@
        ///< Processes the first queued message, if any.
   void Flush(void);
        ///< Flushes the currently active cSkinDisplay, if any.
+  virtual void Clear(void);
+       ///< Free up all registered skins
   };
 
 extern cSkins Skins;
diff -ruN vdr-1.4.4/tools.c vdr-1.4.5/tools.c
--- vdr-1.4.4/tools.c	2006-08-12 15:30:07.000000000 +0200
+++ vdr-1.4.5/tools.c	2006-12-02 12:12:59.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: tools.c 1.120 2006/08/12 13:30:07 kls Exp $
+ * $Id: tools.c 1.121 2006/12/02 11:12:59 kls Exp $
  */
 
 #include "tools.h"
@@ -547,11 +547,11 @@
   Set();
 }
 
-uint64 cTimeMs::Now(void)
+uint64_t cTimeMs::Now(void)
 {
   struct timeval t;
   if (gettimeofday(&t, NULL) == 0)
-     return (uint64(t.tv_sec)) * 1000 + t.tv_usec / 1000;
+     return (uint64_t(t.tv_sec)) * 1000 + t.tv_usec / 1000;
   return 0;
 }
 
@@ -565,7 +565,7 @@
   return Now() >= begin;
 }
 
-uint64 cTimeMs::Elapsed(void)
+uint64_t cTimeMs::Elapsed(void)
 {
   return Now() - begin;
 }
diff -ruN vdr-1.4.4/tools.h vdr-1.4.5/tools.h
--- vdr-1.4.4/tools.h	2006-04-16 12:40:45.000000000 +0200
+++ vdr-1.4.5/tools.h	2006-12-03 18:38:38.000000000 +0100
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: tools.h 1.93 2006/04/16 10:40:45 kls Exp $
+ * $Id: tools.h 1.96 2006/12/03 17:38:38 kls Exp $
  */
 
 #ifndef __TOOLS_H
@@ -15,6 +15,7 @@
 #include <fcntl.h>
 #include <poll.h>
 #include <stddef.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <syslog.h>
@@ -22,7 +23,7 @@
 #include <sys/types.h>
 
 typedef unsigned char uchar;
-typedef unsigned long long int uint64;
+#define uint64 uint64_t // for compatibility - TODO remove in version 1.5
 
 extern int SysLogLevel;
 
@@ -159,13 +160,13 @@
 
 class cTimeMs {
 private:
-  uint64 begin;
+  uint64_t begin;
 public:
   cTimeMs(void);
-  static uint64 Now(void);
+  static uint64_t Now(void);
   void Set(int Ms = 0);
   bool TimedOut(void);
-  uint64 Elapsed(void);
+  uint64_t Elapsed(void);
   };
 
 class cReadLine {
diff -ruN vdr-1.4.4/vdr.1 vdr-1.4.5/vdr.1
--- vdr-1.4.4/vdr.1	2006-06-24 12:07:16.000000000 +0200
+++ vdr-1.4.5/vdr.1	2007-01-07 15:03:56.000000000 +0100
@@ -8,9 +8,9 @@
 .\" License as specified in the file COPYING that comes with the
 .\" vdr distribution.
 .\"
-.\" $Id: vdr.1 1.26 2006/06/24 10:07:16 kls Exp $
+.\" $Id: vdr.1 1.28 2007/01/07 14:03:56 kls Exp $
 .\"
-.TH vdr 1 "30 Apr 2006" "1.4.0" "Video Disk Recorder"
+.TH vdr 1 "07 Jan 2007" "1.4.5" "Video Disk Recorder"
 .SH NAME
 vdr - the Video Disk Recorder
 .SH SYNOPSIS
@@ -23,12 +23,12 @@
 well as cable (DVB-C) and terrestrial (DVB-T) signals.
 
 At least one DVB card is required to run \fBvdr\fR. With it you can watch
-live tv while recording one or more other broadcasts from the same transponder.
+live TV while recording one or more other broadcasts from the same transponder.
 It is also possible to start watching a recorded programme before the live
 broadcast has ended (\fBtime shifting\fR). In order to record from different
 transponders simultaneously two or more DVB cards are necessary.
 By default \fBvdr\fR can support up to four
-DVB cards. The primary DVB card (the one your tv set is connected to) has
+DVB cards. The primary DVB card (the one your TV set is connected to) has
 to be a "full featured" card, which means it must contain an MPEG decoder
 and provide audio and video signal outputs.
 
@@ -76,7 +76,7 @@
 \fB0\fR\ =\ no logging, \fB1\fR\ =\ errors only,
 \fB2\fR\ =\ errors and info, \fB3\fR\ =\ errors, info and debug.
 The default logging level is \fB3\fR.
-If logging should be done to LOG_LOCALn instead of
+If logging should be done to LOG_LOCAL\fIn\fR instead of
 LOG_USER, add '.n' to LEVEL, as in 3.7 (n=0..7).
 .TP
 .BI \-L\  dir ,\ \-\-lib= dir
@@ -122,10 +122,12 @@
 If \fIpath\fR is omitted, vdr uses \fI/dev/ttyS1\fR.
 .TP
 .BI \-r\  cmd ,\ \-\-record= cmd
-Call \fIcmd\fR before and after a recording.
+Call \fIcmd\fR before and after a recording. See the file \fIINSTALL\fR for
+more information.
 .TP
 .BI \-s\  cmd ,\ \-\-shutdown= cmd
-Call \fIcmd\fR to shutdown the computer.
+Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
+information.
 .TP
 .BI \-t\  tty ,\ \-\-terminal= tty
 Set the controlling terminal.
diff -ruN vdr-1.4.4/vdr.5 vdr-1.4.5/vdr.5
--- vdr-1.4.4/vdr.5	2006-04-30 10:55:16.000000000 +0200
+++ vdr-1.4.5/vdr.5	2007-01-07 15:04:12.000000000 +0100
@@ -8,9 +8,9 @@
 .\" License as specified in the file COPYING that comes with the
 .\" vdr distribution.
 .\"
-.\" $Id: vdr.5 1.59 2006/04/30 08:55:16 kls Exp $
+.\" $Id: vdr.5 1.61 2007/01/07 14:04:12 kls Exp $
 .\"
-.TH vdr 5 "30 Apr 2006" "1.4.0" "Video Disk Recorder Files"
+.TH vdr 5 "07 Jan 2007" "1.4.5" "Video Disk Recorder Files"
 .SH NAME
 vdr file formats - the Video Disk Recorder Files
 .SH DESCRIPTION
@@ -57,7 +57,7 @@
 .B Name
 The channel's name (if the name originally contains a ':' character
 it has to be replaced by '|').
-Some tv stations provide a way of deriving a "short name" from the
+Some TV stations provide a way of deriving a "short name" from the
 channel name, which can be used in situations where there is not
 much space for displaying a long name. If a short name is available
 for this channel, it follows the full name and is delimited by a comma,
@@ -248,7 +248,7 @@
 
 .B MTWTF\-\-
 
-will define a timer that records on Monday thru Friday and does not record
+will define a timer that records on Monday through Friday and does not record
 on weekends. The same result could be achieved with \fBABCDE\-\-\fR (this is
 used to allow setting the days with language specific characters).
 Note that only letters may be used here, no digits.
@@ -259,7 +259,7 @@
 
 \fBMTWTF\-\-@2002\-02\-18\fR
 
-which would implement a timer that records Monday thru Friday, and will hit
+which would implement a timer that records Monday through Friday, and will hit
 for the first time on or after February 18, 2002.
 This \fBfirst day\fR feature can be used to disable a repeating timer for a couple
 of days, or for instance to define a new Mon...Fri timer on Wednesday, which
diff -ruN vdr-1.4.4/vdr.c vdr-1.4.5/vdr.c
--- vdr-1.4.4/vdr.c	2006-10-14 12:01:32.000000000 +0200
+++ vdr-1.4.5/vdr.c	2006-12-02 17:22:12.000000000 +0100
@@ -22,7 +22,7 @@
  *
  * The project's page is at http://www.cadsoft.de/vdr
  *
- * $Id: vdr.c 1.280 2006/10/14 10:01:32 kls Exp $
+ * $Id: vdr.c 1.282 2006/12/02 16:22:12 kls Exp $
  */
 
 #include <getopt.h>
@@ -1154,7 +1154,7 @@
                  Skins.Message(mtInfo, tr("Editing process finished"));
               }
            }
-        if (!Interact && ((!cRecordControls::Active() && !cCutter::Active() && !cPluginManager::Active() && (!Interface->HasSVDRPConnection() || UserShutdown)) || ForceShutdown)) {
+        if (!Interact && ((!cRecordControls::Active() && !cCutter::Active() && (!Interface->HasSVDRPConnection() || UserShutdown)) || ForceShutdown)) {
            time_t Now = time(NULL);
            if (Now - LastActivity > ACTIVITYTIMEOUT) {
               // Shutdown:
@@ -1178,6 +1178,10 @@
                     timer = NULL;
                     dsyslog("reboot at %s", *TimeToString(Next));
                     }
+                 if (!ForceShutdown && cPluginManager::Active()) {
+                    LastActivity = Now - Setup.MinUserInactivity * 60 + SHUTDOWNRETRY; // try again later
+                    continue;
+                    }
                  if (!Next || Delta > Setup.MinEventTimeout * 60 || ForceShutdown) {
                     ForceShutdown = false;
                     if (timer)
