Fixed handling line numbers in error messages when reading EPG data

This commit is contained in:
Klaus Schmidinger 2017-05-09 12:25:32 +02:00
parent 44287ca25e
commit 34f572f792
3 changed files with 11 additions and 9 deletions

View File

@ -9021,3 +9021,4 @@ Video Disk Recorder Revision History
DVBC_ANNEX_C and DVBC2.
- Added a Status parameter to the interface of cDevice::SignalStats() and
cDvbDevice::SignalStats() (thanks to Rolf Ahrenberg).
- Fixed handling line numbers in error messages when reading EPG data.

15
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
* $Id: epg.c 4.5 2017/05/03 08:58:19 kls Exp $
* $Id: epg.c 4.6 2017/05/09 12:16:36 kls Exp $
*/
#include "epg.h"
@ -529,15 +529,14 @@ bool cEvent::Parse(char *s)
return true;
}
bool cEvent::Read(FILE *f, cSchedule *Schedule)
bool cEvent::Read(FILE *f, cSchedule *Schedule, int &Line)
{
if (Schedule) {
cEvent *Event = NULL;
char *s;
int line = 0;
cReadLine ReadLine;
while ((s = ReadLine.Read(f)) != NULL) {
line++;
Line++;
char *t = skipspace(s + 1);
switch (*s) {
case 'E': if (!Event) {
@ -573,7 +572,7 @@ bool cEvent::Read(FILE *f, cSchedule *Schedule)
case 'c': // to keep things simple we react on 'c' here
return true;
default: if (Event && !Event->Parse(s)) {
esyslog("ERROR: EPG data problem in line %d", line);
esyslog("ERROR: EPG data problem in line %d", Line);
return false;
}
}
@ -1141,9 +1140,11 @@ void cSchedule::Dump(FILE *f, const char *Prefix, eDumpMode DumpMode, time_t AtT
bool cSchedule::Read(FILE *f, cSchedules *Schedules)
{
if (Schedules) {
int Line = 0;
cReadLine ReadLine;
char *s;
while ((s = ReadLine.Read(f)) != NULL) {
Line++;
if (*s == 'C') {
s = skipspace(s + 1);
char *p = strchr(s, ' ');
@ -1153,7 +1154,7 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
tChannelID channelID = tChannelID::FromString(s);
if (channelID.Valid()) {
if (cSchedule *p = Schedules->AddSchedule(channelID)) {
if (!cEvent::Read(f, p))
if (!cEvent::Read(f, p, Line))
return false;
p->Sort();
}
@ -1165,7 +1166,7 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
}
}
else {
esyslog("ERROR: unexpected tag while reading EPG data: %s", s);
esyslog("ERROR: unexpected tag in line %d while reading EPG data: %s", Line, s);
return false;
}
}

4
epg.h
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
* $Id: epg.h 4.5 2017/05/09 09:16:29 kls Exp $
* $Id: epg.h 4.6 2017/05/09 12:15:14 kls Exp $
*/
#ifndef __EPG_H
@ -141,7 +141,7 @@ public:
cString ToDescr(void) const;
void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const;
bool Parse(char *s);
static bool Read(FILE *f, cSchedule *Schedule);
static bool Read(FILE *f, cSchedule *Schedule, int &Line);
void FixEpgBugs(void);
};