summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Hanisch <dvb@flensrocker.de>2011-02-17 02:35:09 +0100
committerLars Hanisch <dvb@flensrocker.de>2011-02-17 02:35:09 +0100
commitb59fef0e72038d8f7f9576ceb0cfd2a49983a00b (patch)
tree317b3bbed6884b07c5466e27bb41239249a27644
parent2a185bc079c3ebfb488b2419989543e378709c49 (diff)
downloadvdr-plugin-dynamite-b59fef0e72038d8f7f9576ceb0cfd2a49983a00b.tar.gz
vdr-plugin-dynamite-b59fef0e72038d8f7f9576ceb0cfd2a49983a00b.tar.bz2
refactoring and use vdr's SystemExec
-rw-r--r--dynamicdevice.c3
-rw-r--r--dynamite.c46
2 files changed, 25 insertions, 24 deletions
diff --git a/dynamicdevice.c b/dynamicdevice.c
index 49339e0..b808fe9 100644
--- a/dynamicdevice.c
+++ b/dynamicdevice.c
@@ -740,7 +740,8 @@ bool cDynamicDevice::GetTSPacket(uchar *&Data)
const char *d = NULL;
if (devpath)
d = **devpath;
- esyslog("dynamite: device %s hasn't delivered any data for %d seconds, it will be detached", d, getTSTimeout);
+ esyslog("dynamite: device %s hasn't delivered any data for %d seconds, detaching all receivers", d, getTSTimeout);
+ subDevice->DetachAllReceivers();
cDynamicDeviceProbe::QueueDynamicDeviceCommand(ddpcDetach, *devpath);
const char *timeoutHandlerArg = *devpath;
if (getTSTimeoutHandlerArg)
diff --git a/dynamite.c b/dynamite.c
index f23aa92..9e8bc6e 100644
--- a/dynamite.c
+++ b/dynamite.c
@@ -8,7 +8,7 @@
#include "dynamicdevice.h"
#include "monitor.h"
-static const char *VERSION = "0.0.5h";
+static const char *VERSION = "0.0.5i";
static const char *DESCRIPTION = "attach/detach devices on the fly";
static const char *MAINMENUENTRY = NULL;
@@ -178,7 +178,7 @@ bool cPluginDynamite::SetupParse(const char *Name, const char *Value)
int replyCode;
if (strcasecmp(Name, "DefaultGetTSTimeout") == 0)
SVDRPCommand("SetDefaultGetTSTimeout", Value, replyCode);
- if (strcasecmp(Name, "GetTSTimeoutHandler") == 0) {
+ else if (strcasecmp(Name, "GetTSTimeoutHandler") == 0) {
if (getTSTimeoutHandler != NULL)
delete getTSTimeoutHandler;
getTSTimeoutHandler = NULL;
@@ -240,17 +240,17 @@ bool cPluginDynamite::Service(const char *Id, void *Data)
}
return true;
}
- if (strcmp(Id, "dynamite-CallGetTSTimeoutHandler-v0.1") == 0) {
+ if (strcmp(Id, "dynamite-SetGetTSTimeoutHandlerArg-v0.1") == 0) {
if (Data != NULL) {
int replyCode;
- SVDRPCommand("CallGetTSTimeoutHandler", (const char*)Data, replyCode);
+ SVDRPCommand("SetGetTSTimeoutHandlerArg", (const char*)Data, replyCode);
}
return true;
}
- if (strcmp(Id, "dynamite-SetGetTSTimeoutHandlerArg-v0.1") == 0) {
+ if (strcmp(Id, "dynamite-CallGetTSTimeoutHandler-v0.1") == 0) {
if (Data != NULL) {
int replyCode;
- SVDRPCommand("SetGetTSTimeoutHandlerArg", (const char*)Data, replyCode);
+ SVDRPCommand("CallGetTSTimeoutHandler", (const char*)Data, replyCode);
}
return true;
}
@@ -402,23 +402,6 @@ cString cPluginDynamite::SVDRPCommand(const char *Command, const char *Option, i
}
}
- if (strcasecmp(Command, "CallGetTSTimeoutHandler") == 0) {
- if (getTSTimeoutHandler == NULL) {
- cString msg = cString::sprintf("no GetTSTimeoutHandler configured, arg: %s", Option);
- isyslog("dynamite: %s", *msg);
- return cString("no GetTSTimeoutHandler configured, arg: %s", Option);
- }
- isyslog("dynamite: executing %s %s", **getTSTimeoutHandler, Option);
- if (system(*cString::sprintf("%s %s", **getTSTimeoutHandler, Option)) < 0) {
- cString msg = cString::sprintf("error (%d) on executing %s %s", errno, **getTSTimeoutHandler, Option);
- isyslog("dynamite: %s", *msg);
- return msg;
- }
- cString msg = cString::sprintf("success on executing %s %s", **getTSTimeoutHandler, Option);
- isyslog("dynamite: %s", *msg);
- return msg;
- }
-
if (strcasecmp(Command, "SetGetTSTimeoutHandlerArg") == 0) {
cString ret;
int len = strlen(Option);
@@ -435,6 +418,23 @@ cString cPluginDynamite::SVDRPCommand(const char *Command, const char *Option, i
return ret;
}
+ if (strcasecmp(Command, "CallGetTSTimeoutHandler") == 0) {
+ if (getTSTimeoutHandler == NULL) {
+ cString msg = cString::sprintf("no GetTSTimeoutHandler configured, arg: %s", Option);
+ isyslog("dynamite: %s", *msg);
+ return cString("no GetTSTimeoutHandler configured, arg: %s", Option);
+ }
+ isyslog("dynamite: executing %s %s", **getTSTimeoutHandler, Option);
+ if (SystemExec(*cString::sprintf("%s %s", **getTSTimeoutHandler, Option), true) < 0) {
+ cString msg = cString::sprintf("error (%d) on executing %s %s", errno, **getTSTimeoutHandler, Option);
+ isyslog("dynamite: %s", *msg);
+ return msg;
+ }
+ cString msg = cString::sprintf("success on executing %s %s", **getTSTimeoutHandler, Option);
+ isyslog("dynamite: %s", *msg);
+ return msg;
+ }
+
return NULL;
}