eitd: -fix read/write epg collision

This commit is contained in:
satbaby
2012-05-08 13:55:47 +02:00
parent cfdf7b0c69
commit 520cf0e150
2 changed files with 12 additions and 15 deletions

View File

@@ -1180,12 +1180,12 @@ static void commandReadSIfromXML(int connfd, char *data, const unsigned dataLeng
static void commandWriteSI2XML(int connfd, char *data, const unsigned dataLength) static void commandWriteSI2XML(int connfd, char *data, const unsigned dataLength)
{ {
char epgdir[100] = "";
sendEmptyResponse(connfd, NULL, 0); sendEmptyResponse(connfd, NULL, 0);
if ((!reader_ready) || (dataLength > 100)){
if (dataLength > 100) eventServer->sendEvent(CSectionsdClient::EVT_WRITE_SI_FINISHED, CEventServer::INITID_SECTIONSD);
return; return;
}
char epgdir[100] = "";
strncpy(epgdir, data, dataLength); strncpy(epgdir, data, dataLength);
epgdir[dataLength] = '\0'; epgdir[dataLength] = '\0';

View File

@@ -243,11 +243,13 @@ void readDVBTimeFilter(void)
dvb_time_update = true; dvb_time_update = true;
} }
} }
void deleteOldfileEvents(char *epgdir) void deleteOldfileEvents(char *epgdir)
{ {
std::string indexname = std::string(epgdir) + "/index.xml"; std::string indexname = std::string(epgdir) + "/index.xml";
xmlDocPtr filter_parser = parseXmlFile(indexname.c_str()); xmlDocPtr filter_parser = parseXmlFile(indexname.c_str());
std::string filename; std::string filename;
std::string file;
if (filter_parser != NULL) if (filter_parser != NULL)
{ {
@@ -255,10 +257,11 @@ void deleteOldfileEvents(char *epgdir)
filter = filter->xmlChildrenNode; filter = filter->xmlChildrenNode;
while (filter) { while (filter) {
filename = xmlGetAttribute(filter, "name"); filename = xmlGetAttribute(filter, "name");
unlink(filename.c_str()); file = epgdir;
file +="/";
file +=filename;
unlink(file.c_str());
filter = filter->xmlNextNode; filter = filter->xmlNextNode;
} }
xmlFreeDoc(filter_parser); xmlFreeDoc(filter_parser);
@@ -267,6 +270,7 @@ void deleteOldfileEvents(char *epgdir)
void *insertEventsfromFile(void * data) void *insertEventsfromFile(void * data)
{ {
reader_ready=false;
xmlDocPtr event_parser = NULL; xmlDocPtr event_parser = NULL;
xmlNodePtr eventfile = NULL; xmlNodePtr eventfile = NULL;
xmlNodePtr service = NULL; xmlNodePtr service = NULL;
@@ -441,13 +445,6 @@ static void write_indexxml_footer(FILE *fd)
fprintf(fd, "</dvbepgfiles>\n"); fprintf(fd, "</dvbepgfiles>\n");
} }
// void cp(char * from, char * to)
// {
// char cmd[256];
// snprintf(cmd, 256, "cp -f %s %s", from, to);
// system(cmd);
// }
void writeEventsToFile(char *epgdir) void writeEventsToFile(char *epgdir)
{ {
FILE * indexfile = NULL; FILE * indexfile = NULL;