Newlines in title and short text of an EPG event are now changed into blanks only after all other fixes

This commit is contained in:
Klaus Schmidinger 2006-07-22 10:48:22 +02:00
parent e9a90f7972
commit 5f0b2fbf2e
2 changed files with 20 additions and 16 deletions

View File

@ -4816,3 +4816,5 @@ Video Disk Recorder Revision History
in case they are added after the current event.
- cEIT::cEIT() now calls pSchedule->SetPresentSeen() even if OnlyRunningStatus is
true.
- Newlines in title and short text of an EPG event are now changed into blanks only
after all other fixes, because a short text might become a description.

34
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 1.76 2006/07/22 09:13:15 kls Exp $
* $Id: epg.c 1.77 2006/07/22 10:13:34 kls Exp $
*/
#include "epg.h"
@ -435,18 +435,6 @@ void ReportEpgBugFixStats(bool Reset)
void cEvent::FixEpgBugs(void)
{
// VDR can't usefully handle newline characters in the title and shortText of EPG
// data, so let's always convert them to blanks (independent of the setting of EPGBugfixLevel):
strreplace(title, '\n', ' ');
strreplace(shortText, '\n', ' ');
// Same for control characters:
strreplace(title, '\x86', ' ');
strreplace(title, '\x87', ' ');
strreplace(shortText, '\x86', ' ');
strreplace(shortText, '\x87', ' ');
strreplace(description, '\x86', ' ');
strreplace(description, '\x87', ' ');
if (isempty(title)) {
// we don't want any "(null)" titles
title = strcpyrealloc(title, tr("No title"));
@ -454,7 +442,7 @@ void cEvent::FixEpgBugs(void)
}
if (Setup.EPGBugfixLevel == 0)
return;
goto Final;
// Some TV stations apparently have their own idea about how to fill in the
// EPG data. Let's fix their bugs as good as we can:
@ -528,7 +516,7 @@ void cEvent::FixEpgBugs(void)
}
if (Setup.EPGBugfixLevel <= 1)
return;
goto Final;
// Some channels apparently try to do some formatting in the texts,
// which is a bad idea because they have no way of knowing the width
@ -574,7 +562,7 @@ void cEvent::FixEpgBugs(void)
strreplace(description, '`', '\'');
if (Setup.EPGBugfixLevel <= 2)
return;
goto Final;
// The stream components have a "description" field which some channels
// apparently have no idea of how to set correctly:
@ -638,6 +626,20 @@ void cEvent::FixEpgBugs(void)
}
}
}
Final:
// VDR can't usefully handle newline characters in the title and shortText of EPG
// data, so let's always convert them to blanks (independent of the setting of EPGBugfixLevel):
strreplace(title, '\n', ' ');
strreplace(shortText, '\n', ' ');
// Same for control characters:
strreplace(title, '\x86', ' ');
strreplace(title, '\x87', ' ');
strreplace(shortText, '\x86', ' ');
strreplace(shortText, '\x87', ' ');
strreplace(description, '\x86', ' ');
strreplace(description, '\x87', ' ');
}
// --- cSchedule -------------------------------------------------------------