1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

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. DVBC_ANNEX_C and DVBC2.
- Added a Status parameter to the interface of cDevice::SignalStats() and - Added a Status parameter to the interface of cDevice::SignalStats() and
cDvbDevice::SignalStats() (thanks to Rolf Ahrenberg). 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 * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * 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" #include "epg.h"
@ -529,15 +529,14 @@ bool cEvent::Parse(char *s)
return true; return true;
} }
bool cEvent::Read(FILE *f, cSchedule *Schedule) bool cEvent::Read(FILE *f, cSchedule *Schedule, int &Line)
{ {
if (Schedule) { if (Schedule) {
cEvent *Event = NULL; cEvent *Event = NULL;
char *s; char *s;
int line = 0;
cReadLine ReadLine; cReadLine ReadLine;
while ((s = ReadLine.Read(f)) != NULL) { while ((s = ReadLine.Read(f)) != NULL) {
line++; Line++;
char *t = skipspace(s + 1); char *t = skipspace(s + 1);
switch (*s) { switch (*s) {
case 'E': if (!Event) { 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 case 'c': // to keep things simple we react on 'c' here
return true; return true;
default: if (Event && !Event->Parse(s)) { 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; 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) bool cSchedule::Read(FILE *f, cSchedules *Schedules)
{ {
if (Schedules) { if (Schedules) {
int Line = 0;
cReadLine ReadLine; cReadLine ReadLine;
char *s; char *s;
while ((s = ReadLine.Read(f)) != NULL) { while ((s = ReadLine.Read(f)) != NULL) {
Line++;
if (*s == 'C') { if (*s == 'C') {
s = skipspace(s + 1); s = skipspace(s + 1);
char *p = strchr(s, ' '); char *p = strchr(s, ' ');
@ -1153,7 +1154,7 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
tChannelID channelID = tChannelID::FromString(s); tChannelID channelID = tChannelID::FromString(s);
if (channelID.Valid()) { if (channelID.Valid()) {
if (cSchedule *p = Schedules->AddSchedule(channelID)) { if (cSchedule *p = Schedules->AddSchedule(channelID)) {
if (!cEvent::Read(f, p)) if (!cEvent::Read(f, p, Line))
return false; return false;
p->Sort(); p->Sort();
} }
@ -1165,7 +1166,7 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
} }
} }
else { 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; return false;
} }
} }

4
epg.h
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * 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 #ifndef __EPG_H
@ -141,7 +141,7 @@ public:
cString ToDescr(void) const; cString ToDescr(void) const;
void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const; void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const;
bool Parse(char *s); bool Parse(char *s);
static bool Read(FILE *f, cSchedule *Schedule); static bool Read(FILE *f, cSchedule *Schedule, int &Line);
void FixEpgBugs(void); void FixEpgBugs(void);
}; };