summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorschmirl <schmirl>2010-01-29 12:03:01 +0000
committerschmirl <schmirl>2010-01-29 12:03:01 +0000
commit93c9aa9af073177d04e357d61fdd0292fd360129 (patch)
tree0812c4bdba5212e89347d97a56df246f5d10cb1d /server
parentc882a991ccee79ddde6e68d5f1684456a85b5729 (diff)
downloadvdr-plugin-streamdev-93c9aa9af073177d04e357d61fdd0292fd360129.tar.gz
vdr-plugin-streamdev-93c9aa9af073177d04e357d61fdd0292fd360129.tar.bz2
added DELT FORCE option to delete running timers (#554)
Diffstat (limited to 'server')
-rw-r--r--server/connectionVTP.c52
1 files changed, 41 insertions, 11 deletions
diff --git a/server/connectionVTP.c b/server/connectionVTP.c
index 9cdaaca..7ff60e5 100644
--- a/server/connectionVTP.c
+++ b/server/connectionVTP.c
@@ -1,5 +1,5 @@
/*
- * $Id: connectionVTP.c,v 1.26 2010/01/29 11:44:52 schmirl Exp $
+ * $Id: connectionVTP.c,v 1.27 2010/01/29 12:03:02 schmirl Exp $
*/
#include "server/connectionVTP.h"
@@ -1406,22 +1406,52 @@ bool cConnectionVTP::CmdDELT(const char *Option)
{
INIT_WRAPPER();
if (*Option) {
- if (isnumber(Option)) {
- cTimer *timer = Timers.Get(strtol(Option, NULL, 10) - 1);
+ int number = 0;
+ bool force = false;
+ char buf[strlen(Option) + 1];
+ strcpy(buf, Option);
+ const char *delim = " \t";
+ char *strtok_next;
+ char *p = strtok_r(buf, delim, &strtok_next);
+
+ if (isnumber(p)) {
+ number = strtol(p, NULL, 10) - 1;
+ }
+ else if (strcasecmp(p, "FORCE") == 0) {
+ force = true;
+ }
+ if ((p = strtok_r(NULL, delim, &strtok_next)) != NULL) {
+ if (isnumber(p)) {
+ number = strtol(p, NULL, 10) - 1;
+ }
+ else if (strcasecmp(p, "FORCE") == 0) {
+ force = true;
+ }
+ else {
+ Reply(501, "Timer not found or wrong syntax");
+ }
+ }
+
+ cTimer *timer = Timers.Get(number);
if (timer) {
- if (!timer->Recording()) {
+ if (timer->Recording()) {
+ if (force) {
+ timer->Skip();
+ cRecordControls::Process(time(NULL));
+ }
+ else {
+ Reply(550, "Timer \"%i\" is recording", number);
+ EXIT_WRAPPER();
+ }
+ }
isyslog("deleting timer %s", *timer->ToDescr());
Timers.Del(timer);
Timers.SetModified();
- Reply(250, "Timer \"%s\" deleted", Option);
+ Reply(250, "Timer \"%i\" deleted", number);
} else
- Reply(550, "Timer \"%s\" is recording", Option);
+ Reply(501, "Timer \"%i\" not defined", number);
} else
- Reply(501, "Timer \"%s\" not defined", Option);
- } else
- Reply(501, "Error in timer number \"%s\"", Option);
- } else
- Reply(501, "Missing timer number");
+ Reply(501, "Missing timer option");
EXIT_WRAPPER();
}