summaryrefslogtreecommitdiff
path: root/conflictcheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'conflictcheck.c')
-rw-r--r--conflictcheck.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/conflictcheck.c b/conflictcheck.c
index 4d1538d..ce25612 100644
--- a/conflictcheck.c
+++ b/conflictcheck.c
@@ -29,6 +29,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
#include "conflictcheck_thread.h"
#include "recstatus.h"
#include "timerstatus.h"
+#include "uservars.h"
#define FULLMATCH 1000
#define EPGLIMITBEFORE (1 * 3600) // Time in seconds before a timer's start time and
@@ -681,3 +682,38 @@ bool cConflictCheck::TimerInConflict(cTimer* timer)
}
return false;
}
+
+void cConflictCheck::EvaluateConflCheckCmd()
+{
+ if (strlen(EPGSearchConfig.conflCheckCmd) > 0)
+ {
+ LogFile.Log(2,"evaluating conflict check command '%s'", EPGSearchConfig.conflCheckCmd);
+ for(cConflictCheckTime* ct = failedList->First(); ct; ct = failedList->Next(ct))
+ {
+ if (ct->ignore) continue;
+ std::set<cConflictCheckTimerObj*,TimerObjSort>::iterator it;
+ for (it = ct->failedTimers.begin(); it != ct->failedTimers.end(); it++)
+ if ((*it) && !(*it)->ignore)
+ {
+ string result = EPGSearchConfig.conflCheckCmd;
+ if (!(*it)->OrigTimer())
+ {
+ LogFile.Log(3,"timer has disappeared meanwhile");
+ continue;
+ }
+ else
+ LogFile.Log(3,"evaluating conflict check command for timer '%s' (%s, channel %s)", (*it)->timer->File(), DAYDATETIME((*it)->start), CHANNELNAME((*it)->timer->Channel()));
+
+ if ((*it)->Event())
+ {
+ cVarExpr varExprEvent(result);
+ result = varExprEvent.Evaluate((*it)->Event());
+ }
+ cVarExpr varExprTimer(result);
+ result = varExprTimer.Evaluate((*it)->timer);
+ cVarExpr varExpr(result);
+ varExpr.Evaluate();
+ }
+ }
+ }
+}