summaryrefslogtreecommitdiff
path: root/parse.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2011-08-01 17:55:01 +0200
committerJochen Dolze <vdr@dolze.de>2011-08-01 17:55:01 +0200
commit197e21d0450b0fdc6b52f8c89a48c3cd637c88ed (patch)
tree2c21c0d96fabd693f22a3b956224f0a6da5ab383 /parse.cpp
parent4acb900fec6961c82d67f0d87e1e6a973324005d (diff)
downloadvdr-plugin-xmltv2vdr-197e21d0450b0fdc6b52f8c89a48c3cd637c88ed.tar.gz
vdr-plugin-xmltv2vdr-197e21d0450b0fdc6b52f8c89a48c3cd637c88ed.tar.bz2
Fixed "parse error" bug
Diffstat (limited to 'parse.cpp')
-rw-r--r--parse.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/parse.cpp b/parse.cpp
index 8a5eb52..cbf7a60 100644
--- a/parse.cpp
+++ b/parse.cpp
@@ -22,7 +22,7 @@ void cXMLTVEvent::SetTitle(const char *Title)
{
title = strcpyrealloc(title, Title);
if (title) {
- title = compactspace(title);
+ title = compactspace(title);
}
}
@@ -857,28 +857,32 @@ cEPGMapping *cParse::EPGMapping(const char *ChannelName)
return NULL;
}
-bool cParse::Process(char *buffer, int bufsize)
+int cParse::Process(char *buffer, int bufsize)
{
- if (!buffer) return false;
- if (!bufsize) return false;
+ if (!buffer) return 134;
+ if (!bufsize) return 134;
xmlDocPtr xmltv;
xmltv=xmlReadMemory(buffer,bufsize,NULL,NULL,0);
- if (!xmltv) return false;
+ if (!xmltv) {
+ esyslog("xmltv2vdr: '%s' ERROR failed to parse xmltv",name);
+ return 141;
+ }
xmlNodePtr rootnode=xmlDocGetRootElement(xmltv);
if (!rootnode)
{
+ esyslog("xmltv2vdr: '%s' ERROR no rootnode in xmltv",name);
xmlFreeDoc(xmltv);
- return false;
+ return 141;
}
cSchedulesLock schedulesLock(true,25000); // wait up to 25 secs for lock!
const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
if (!schedules)
{
- esyslog("xmltv2vdr: '%s' cannot get schedules, try later",name);
- return false;
+ esyslog("xmltv2vdr: '%s' cannot get schedules now, trying later",name);
+ return 1;
}
time_t begin=time(NULL);
@@ -916,7 +920,9 @@ bool cParse::Process(char *buffer, int bufsize)
node=node->next;
continue;
}
- time_t end=begin+(86000*map->Days())+3600; // 1 hour overlap
+ int days=map->Days();
+ if ((map->Flags() & OPT_APPEND)!=OPT_APPEND) days=1; // only one day with merge
+ time_t end=begin+(86000*days)+3600; // 1 hour overlap
xmlChar *start,*stop;
time_t starttime=(time_t) 0;
time_t stoptime=(time_t) 0;
@@ -1041,7 +1047,7 @@ bool cParse::Process(char *buffer, int bufsize)
node=node->next;
}
xmlFreeDoc(xmltv);
- return true;
+ return 0;
}
void cParse::InitLibXML()