[ANNOUNCE] continue-plugin-failed-0.1 patch

Message ID 200602102110.19680.zzam@gentoo.org
State New
Headers

Commit Message

Matthias Schwarzott Feb. 10, 2006, 8:10 p.m. UTC
  Hi!
This patch modifies vdr to not abort when only a plugin fails to load.
This is motivated by me stepping over this case:
I upgraded imagemagick and did not recompile weatherng and at next wakeup vdr 
refused to start and did not record anything.

The behaviour is changeable in setup.
Default is to continue when a plugin fails.

The patch applies to vdr-1.3.41 and vdr-1.3.42.

Matthias
  

Patch

diff -ru vdr-1.3.41-orig/config.c vdr-1.3.41-continue-plugin-failed/config.c
--- vdr-1.3.41-orig/config.c	2006-02-10 11:34:55.000000000 +0100
+++ vdr-1.3.41-continue-plugin-failed/config.c	2006-02-10 13:23:10.000000000 +0100
@@ -272,6 +272,7 @@ 
   CurrentChannel = -1;
   CurrentVolume = MAXVOLUME;
   CurrentDolby = 0;
+  AbortWhenPluginFails = 0;
 }
 
 cSetup& cSetup::operator= (const cSetup &s)
@@ -432,6 +433,7 @@ 
   else if (!strcasecmp(Name, "CurrentChannel"))      CurrentChannel     = atoi(Value);
   else if (!strcasecmp(Name, "CurrentVolume"))       CurrentVolume      = atoi(Value);
   else if (!strcasecmp(Name, "CurrentDolby"))        CurrentDolby       = atoi(Value);
+  else if (!strcasecmp(Name, "AbortWhenPluginFails")) AbortWhenPluginFails = atoi(Value);
   else
      return false;
   return true;
@@ -499,6 +501,7 @@ 
   Store("CurrentChannel",     CurrentChannel);
   Store("CurrentVolume",      CurrentVolume);
   Store("CurrentDolby",       CurrentDolby);
+  Store("AbortWhenPluginFails", AbortWhenPluginFails);
 
   Sort();
 
diff -ru vdr-1.3.41-orig/config.h vdr-1.3.41-continue-plugin-failed/config.h
--- vdr-1.3.41-orig/config.h	2006-02-10 11:34:55.000000000 +0100
+++ vdr-1.3.41-continue-plugin-failed/config.h	2006-02-10 13:23:02.000000000 +0100
@@ -238,6 +238,7 @@ 
   int CurrentChannel;
   int CurrentVolume;
   int CurrentDolby;
+  int AbortWhenPluginFails;
   int __EndData__;
   cSetup(void);
   cSetup& operator= (const cSetup &s);
diff -ru vdr-1.3.41-orig/i18n.c vdr-1.3.41-continue-plugin-failed/i18n.c
--- vdr-1.3.41-orig/i18n.c	2006-02-10 11:34:55.000000000 +0100
+++ vdr-1.3.41-continue-plugin-failed/i18n.c	2006-02-10 13:55:24.000000000 +0100
@@ -4207,6 +4207,27 @@ 
     "Kanalivahetuse ooteaeg (s)",
     "Zap timeout (s)",
   },
+  { "Setup.Miscellaneous$Abort when Plugin fails to load",
+    "Abbrechen wenn Plugin nicht lädt",
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    "",// TODO
+    ""// TODO
+  },
   // The days of the week:
   { "MTWTFSS",
     "MDMDFSS",
diff -ru vdr-1.3.41-orig/menu.c vdr-1.3.41-continue-plugin-failed/menu.c
--- vdr-1.3.41-orig/menu.c	2006-02-10 11:34:55.000000000 +0100
+++ vdr-1.3.41-continue-plugin-failed/menu.c	2006-02-10 13:34:14.000000000 +0100
@@ -2573,6 +2573,7 @@ 
   Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Min. user inactivity (min)"), &data.MinUserInactivity));
   Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$SVDRP timeout (s)"),          &data.SVDRPTimeout));
   Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Zap timeout (s)"),            &data.ZapTimeout));
+  Add(new cMenuEditBoolItem( tr("Setup.Miscellaneous$Abort when Plugin fails to load"),    &data.AbortWhenPluginFails));
 }
 
 // --- cMenuSetupPluginItem --------------------------------------------------
diff -ru vdr-1.3.41-orig/plugin.c vdr-1.3.41-continue-plugin-failed/plugin.c
--- vdr-1.3.41-orig/plugin.c	2006-02-10 11:34:56.000000000 +0100
+++ vdr-1.3.41-continue-plugin-failed/plugin.c	2006-02-10 13:41:59.000000000 +0100
@@ -310,7 +310,8 @@ 
 {
   for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
       if (!dll->Load(Log))
-         return false;
+         if (Setup.AbortWhenPluginFails)
+            return false;
       }
   return true;
 }