diff -ruNbw vdr-1.2.5pre1/CONTRIBUTORS vdr-1.2.5pre2/CONTRIBUTORS
--- vdr-1.2.5pre1/CONTRIBUTORS	Sat Aug 30 13:48:45 2003
+++ vdr-1.2.5pre2/CONTRIBUTORS	Sat Sep  6 12:35:24 2003
@@ -546,6 +546,8 @@
  for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device
  for making the program use the values of VIDEODIR and PLUGINDIR defined in Makefile
  or Makefile.config as defaults
+ for helping to debug a crash when using the --terminal option without having access
+ to the given terminal
 
 Peter Seyringer <e9425234@student.tuwien.ac.at>
  for reporting a bug in saving the polarization parameter of channels that have a
@@ -782,3 +784,18 @@
 
 Robert Bartl <robert@bartl.priv.at>
  for reporting a hangup in SVDRP when the client disappears without sending QUIT
+
+Sebastian Frei <sebastian@schnapsleichen.de>
+ for his support in keeping 'channels.conf' up-to-date.
+
+Rene Bartsch <ml@bartschnet.de>
+ for reporting a bug in setting the primary device in case none of the devices
+ provides an MPEG decoder
+
+Christoph Hermanns <christoph.hermanns@gmx.de>
+ for reporting a bug in handling the "Red" button in the "Schedules" menu in case
+ there are no events listed for a particular channel
+
+Oskar Signell <oskar@signell.net>
+ for pointing out a problem with setting an editing mark while in "Pause" mode,
+ where replay was not immediately positioned to the marked frame
diff -ruNbw vdr-1.2.5pre1/HISTORY vdr-1.2.5pre2/HISTORY
--- vdr-1.2.5pre1/HISTORY	Sun Aug 31 15:06:18 2003
+++ vdr-1.2.5pre2/HISTORY	Sun Sep  7 11:02:19 2003
@@ -2348,7 +2348,30 @@
   previous behaviour by commenting out the line
   #define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
   in VDR/dvbdevice.c.
+  Note that you need driver version 2003-08-23 or later for this to work!
 - Fixed handling extra blanks in plugin command lines.
 - Actually implemented the SVDRP command DELC.
 - Now clearing the player device if there are too many poll timeouts in 'Transfer
   Mode', which avoids buffer overflows and black screens in such cases.
+
+2003-09-07: Version 1.2.5pre2
+
+- Updated VIVA, VIVA Plus, MTV Central and MTV 2 in channels.conf (thanks to
+  Sebastian Frei).
+- Changed "Studio Universal" to "Sci-Fi" in channels.conf.
+- Fixed a crash when using the --terminal option without having access to the
+  given terminal (thanks to Steffen Barszus for helping to debug this one).
+- Added a note about the driver version needed for the still picture fix from
+  version 1.2.5pre1 to work properly (thanks to Oliver Endriss for pointing
+  this out).
+- Fixed setting the primary device in case none of the devices provides an MPEG
+  decoder (thanks to Rene Bartsch for reporting this one).
+- Fixed handling the "Red" button in the "Schedules" menu in case there are no
+  events listed for a particular channel (thanks to Christoph Hermanns for
+  reporting this one).
+- When setting an editing mark while in "Pause" mode, replay now immediately
+  jumps to the marked frame (thanks to Oskar Signell for pointing out this
+  problem).
+- The DVB devices no longer send CA descriptors to the CAM while the EPG scanner
+  is active (sometimes the CAMs got irritated when the device tuned to channels
+  they couldn't handle).
diff -ruNbw vdr-1.2.5pre1/channels.conf vdr-1.2.5pre2/channels.conf
--- vdr-1.2.5pre1/channels.conf	Sun Jun 22 15:41:17 2003
+++ vdr-1.2.5pre2/channels.conf	Fri Sep  5 14:46:20 2003
@@ -56,7 +56,7 @@
 Premiere 6:11797:h:S19.2E:27500:1535:1536:0:101:41:0:0:0
 Premiere 7:11797:h:S19.2E:27500:1023:1024:0:101:20:0:0:0
 13th Street:11758:h:S19.2E:27500:2303:2304:0:101:42:0:0:0
-Studio Universal:11798:h:S19.2E:27500:2047:2048:0:101:36:0:0:0
+Sci-Fi:11758:h:S19.2E:27500:2047:2048:0:101:36:0:0:0
 Premiere Serie:12031:h:S19.2E:27500:1023:1024:0:101:16:0:0:0
 Disney Channel:11758:h:S19.2E:27500:2559:2560:0:101:34:0:0:0
 Premiere Nostalgie:12031:h:S19.2E:27500:2559:2560:0:101:516:0:0:0
@@ -145,13 +145,13 @@
 RTL Tele Letzebuerg:12552:v:S19.2E:22000:168:144,146:0:0:3994:0:0:0
 VERONICA:12574:h:S19.2E:22000:161:84:0:0:5010:0:0:0
 VH1 Classic:12670:v:S19.2E:22000:3071:3072:0:0:28647:0:0:0
-MTV 2 Pop:12670:v:S19.2E:22000:3081:3082:0:0:28648:0:0:0
+MTV 2:12225:h:S19.2E:27500:513:661:577:0:28640:0:0:0
 Via 1 - Schöner Reisen:12148:h:S19.2E:27500:511:512:0:0:44:0:0:0
 Video Italia:12610:v:S19.2E:22000:121:122:0:0:12220:0:0:0
 ORF/ZDF:12670:h:S19.2E:22000:506:507:0:0:13012:0:0:0
-VIVA:12670:v:S19.2E:22000:309:310:0:0:12732:0:0:0
-VIVA PLUS:12552:v:S19.2E:22000:171:172:0:0:12120:0:0:0
-MTV German:12670:v:S19.2E:22000:3031:3032:0:0:28643:0:0:0
+VIVA:12670:v:S19.2E:22000:309:310:311:0:12732:0:0:0
+VIVA PLUS:12552:v:S19.2E:22000:171:172:179:0:12120:0:0:0
+MTV Central:11739:v:S19.2E:27500:3031:3032:3034:0:28653:0:0:0
 QVC Germany:12552:v:S19.2E:22000:165:166:0:0:12100:0:0:0
 Tele 5:12480:v:S19.2E:27500:1535:1536:0:0:51:0:0:0
 :@201 Sky
diff -ruNbw vdr-1.2.5pre1/config.h vdr-1.2.5pre2/config.h
--- vdr-1.2.5pre1/config.h	Sat Aug 30 10:39:37 2003
+++ vdr-1.2.5pre2/config.h	Fri Sep  5 15:18:38 2003
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: config.h 1.170 2003/08/30 08:39:37 kls Exp $
+ * $Id: config.h 1.171 2003/09/05 13:18:38 kls Exp $
  */
 
 #ifndef __CONFIG_H
@@ -19,7 +19,7 @@
 #include "device.h"
 #include "tools.h"
 
-#define VDRVERSION  "1.2.5pre1"
+#define VDRVERSION  "1.2.5pre2"
 #define VDRVERSNUM   10205  // Version * 10000 + Major * 100 + Minor
 
 #define MAXPRIORITY 99
diff -ruNbw vdr-1.2.5pre1/dvbdevice.c vdr-1.2.5pre2/dvbdevice.c
--- vdr-1.2.5pre1/dvbdevice.c	Sat Aug 30 13:40:41 2003
+++ vdr-1.2.5pre2/dvbdevice.c	Sat Sep  6 15:19:33 2003
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: dvbdevice.c 1.63 2003/08/30 11:40:41 kls Exp $
+ * $Id: dvbdevice.c 1.64 2003/09/06 13:19:33 kls Exp $
  */
 
 #include "dvbdevice.h"
@@ -74,6 +74,7 @@
   cChannel channel;
   const char *diseqcCommands;
   bool active;
+  bool useCa;
   time_t startTime;
   eTunerStatus tunerStatus;
   cMutex mutex;
@@ -84,7 +85,7 @@
   cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType, cCiHandler *CiHandler);
   virtual ~cDvbTuner();
   bool IsTunedTo(const cChannel *Channel) const;
-  void Set(const cChannel *Channel, bool Tune);
+  void Set(const cChannel *Channel, bool Tune, bool UseCa);
   bool Locked(void) { return tunerStatus == tsLocked; }
   };
 
@@ -96,6 +97,7 @@
   ciHandler = CiHandler;
   diseqcCommands = NULL;
   active = false;
+  useCa = false;
   tunerStatus = tsIdle;
   startTime = time(NULL);
   Start();
@@ -114,7 +116,7 @@
   return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Frequency() == Channel->Frequency();
 }
 
-void cDvbTuner::Set(const cChannel *Channel, bool Tune)
+void cDvbTuner::Set(const cChannel *Channel, bool Tune, bool UseCa)
 {
   cMutexLock MutexLock(&mutex);
   bool CaChange = !(Channel->GetChannelID() == channel.GetChannelID());
@@ -122,6 +124,7 @@
      tunerStatus = tsSet;
   else if (tunerStatus == tsCam && CaChange)
      tunerStatus = tsTuned;
+  useCa = UseCa;
   if (Channel->Ca() && CaChange)
      startTime = time(NULL);
   channel = *Channel;
@@ -267,7 +270,7 @@
               }
            if (tunerStatus >= tsLocked) {
               if (ciHandler) {
-                 if (ciHandler->Process()) {
+                 if (ciHandler->Process() && useCa) {
                     if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed
                        for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) {
                            uchar buffer[2048];
@@ -673,6 +676,7 @@
   StartTransferMode = false;
 #endif
 
+  // XXX 1.3: use the same mechanism as below (!EITScanner.UsesDevice(this))
   if (EITScanner.Active()) {
      StartTransferMode = false;
      TurnOnLivePIDs = false;
@@ -690,7 +694,7 @@
   if (TurnOffLivePIDs)
      TurnOffLiveMode();
 
-  dvbTuner->Set(Channel, DoTune);
+  dvbTuner->Set(Channel, DoTune, !EITScanner.UsesDevice(this)); //XXX 1.3: this is an ugly hack - find a cleaner solution
 
   // PID settings:
 
diff -ruNbw vdr-1.2.5pre1/eitscan.c vdr-1.2.5pre2/eitscan.c
--- vdr-1.2.5pre1/eitscan.c	Sat May 24 15:34:59 2003
+++ vdr-1.2.5pre2/eitscan.c	Sat Sep  6 15:06:13 2003
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: eitscan.c 1.13 2003/05/24 13:34:59 kls Exp $
+ * $Id: eitscan.c 1.14 2003/09/06 13:06:13 kls Exp $
  */
 
 #include "eitscan.h"
@@ -17,6 +17,7 @@
 cEITScanner::cEITScanner(void)
 {
   lastScan = lastActivity = time(NULL);
+  currentDevice = NULL;
   currentChannel = 0;
   memset(lastChannel, 0, sizeof(lastChannel));
   numTransponders = 0;
@@ -66,7 +67,9 @@
                                if (Device == cDevice::PrimaryDevice() && !currentChannel) {
                                   currentChannel = Device->CurrentChannel();
                                   }
+                               currentDevice = Device;
                                Device->SwitchChannel(Channel, false);
+                               currentDevice = NULL;
                                break;
                                }
                             }
diff -ruNbw vdr-1.2.5pre1/eitscan.h vdr-1.2.5pre2/eitscan.h
--- vdr-1.2.5pre1/eitscan.h	Sat May 24 15:21:36 2003
+++ vdr-1.2.5pre2/eitscan.h	Sat Sep  6 15:05:51 2003
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: eitscan.h 1.3 2003/05/24 13:21:36 kls Exp $
+ * $Id: eitscan.h 1.4 2003/09/06 13:05:51 kls Exp $
  */
 
 #ifndef __EITSCAN_H
@@ -19,6 +19,7 @@
          ScanTimeout = 20
        };
   time_t lastScan, lastActivity;
+  cDevice *currentDevice;
   int currentChannel;
   int lastChannel[MAXDEVICES];
   int numTransponders, *transponders;
@@ -27,6 +28,7 @@
   cEITScanner(void);
   ~cEITScanner();
   bool Active(void) { return currentChannel; }
+  bool UsesDevice(const cDevice *Device) { return currentDevice == Device; }
   void Activity(void);
   void Process(void);
   };
diff -ruNbw vdr-1.2.5pre1/menu.c vdr-1.2.5pre2/menu.c
--- vdr-1.2.5pre1/menu.c	Sun Aug 24 16:28:44 2003
+++ vdr-1.2.5pre2/menu.c	Sat Sep  6 12:26:45 2003
@@ -4,7 +4,7 @@
  * See the main source file 'vdr.c' for copyright information and
  * how to reach the author.
  *
- * $Id: menu.c 1.269 2003/08/24 14:28:44 kls Exp $
+ * $Id: menu.c 1.271 2003/09/06 10:26:45 kls Exp $
  */
 
 #include "menu.h"
@@ -1250,7 +1250,7 @@
 
   currentChannel = CurrentChannelNr;
   free(pArray);
-  SetHelp(tr("Record"), Now ? tr("Next") : tr("Now"), tr("Button$Schedule"), tr("Switch"));
+  SetHelp(Count() ? tr("Record") : NULL, Now ? tr("Next") : tr("Now"), tr("Button$Schedule"), tr("Switch"));
 }
 
 const cEventInfo *cMenuWhatsOn::ScheduleEventInfo(void)
@@ -1358,7 +1358,7 @@
      cMenuWhatsOn::SetCurrentChannel(channel->Number());
      schedules = cSIProcessor::Schedules(mutexLock);
      PrepareSchedule(channel);
-     SetHelp(tr("Record"), tr("Now"), tr("Next"));
+     SetHelp(Count() ? tr("Record") : NULL, tr("Now"), tr("Next"));
      }
 }
 
@@ -1470,7 +1470,7 @@
            PrepareSchedule(channel);
            if (channel->Number() != cDevice::CurrentChannel()) {
               otherChannel = channel->Number();
-              SetHelp(tr("Record"), tr("Now"), tr("Next"), tr("Switch"));
+              SetHelp(Count() ? tr("Record") : NULL, tr("Now"), tr("Next"), tr("Switch"));
               }
            Display();
            }
@@ -3531,6 +3531,10 @@
      else {
         marks.Add(Current);
         ShowTimed(2);
+        bool Play, Forward;
+        int Speed;
+        if (GetReplayMode(Play, Forward, Speed) && !Play)
+           Goto(Current, true);
         }
      marks.Save();
      }
@@ -3659,7 +3663,6 @@
       DoShowMode = false;
       switch (Key) {
         // Editing:
-        //XXX should we do this only when the ProgressDisplay is on???
         case kMarkToggle:      MarkToggle(); break;
         case kMarkJumpBack:    MarkJump(false); break;
         case kMarkJumpForward: MarkJump(true); break;
diff -ruNbw vdr-1.2.5pre1/vdr.c vdr-1.2.5pre2/vdr.c
--- vdr-1.2.5pre1/vdr.c	Sun Aug 24 13:18:04 2003
+++ vdr-1.2.5pre2/vdr.c	Fri Sep  5 15:14:16 2003
@@ -22,7 +22,7 @@
  *
  * The project's page is at http://www.cadsoft.de/vdr
  *
- * $Id: vdr.c 1.166 2003/08/24 11:18:04 kls Exp $
+ * $Id: vdr.c 1.168 2003/09/05 13:14:16 kls Exp $
  */
 
 #include <getopt.h>
@@ -199,6 +199,10 @@
           case 's': Shutdown = optarg;
                     break;
           case 't': Terminal = optarg;
+                    if (access(Terminal, R_OK | W_OK) < 0) {
+                       fprintf(stderr, "vdr: can't access terminal: %s\n", Terminal);
+                       return 2;
+                       }
                     break;
           case 'V': DisplayVersion = true;
                     break;
@@ -383,7 +387,7 @@
         const char *msg = "no primary device found - using first device!";
         fprintf(stderr, "vdr: %s\n", msg);
         esyslog("ERROR: %s", msg);
-        if (!cDevice::SetPrimaryDevice(0))
+        if (!cDevice::SetPrimaryDevice(1))
            return 2;
         if (!cDevice::PrimaryDevice()) {
            const char *msg = "no primary device found - giving up!";
