On 06 Dec 2015, at 20:55, Peter Münster pmlists@free.fr wrote:
On Wed, Dec 02 2015, Klaus Schmidinger wrote:
C S19.2E-133-3-263 SVM - GR\326D
Would it be possible/easy to patch vdr to filter out such errors? What is the right function to look at?
Take a look at StripControlCharacters() or cEvent::FixEpgBugs() in epg.c.
It seems, that these functions only take care of the title and the description, but not the channel name.
Sorry, I missed that.
Finally, I've patched vdr like this:
--8<---------------cut here---------------start------------->8--- --- epg.c~ 2013-12-28 12:33:08.000000000 +0100 +++ epg.c 2015-12-06 15:54:58.312233837 +0100 @@ -1064,11 +1064,32 @@ } }
+static char *StripFunny8bitCharacters(const char *src) +{
- static char dest[100];
- strn0cpy(dest, src, 100);
- char *s = dest;
- int len = strlen(s);
- while (len > 0) {
int l = Utf8CharLen(s);
uchar *p = (uchar *)s;
if (l == 1 && *p > 0x7F) { // this is not utf-8
memmove(s, p + 1, len); // we also copy the terminating 0!
len--;
l = 0;
}
s += l;
len -= l;
- }
- return dest;
+}
void cSchedule::Dump(FILE *f, const char *Prefix, eDumpMode DumpMode, time_t AtTime) const { cChannel *channel = Channels.GetByChannelID(channelID, true); if (channel) {
fprintf(f, "%sC %s %s\n", Prefix, *channel->GetChannelID().ToString(), channel->Name());
fprintf(f, "%sC %s %s\n", Prefix, *channel->GetChannelID().ToString(),
const cEvent *p; switch (DumpMode) { case dmAll: {StripFunny8bitCharacters(channel->Name()));
--8<---------------cut here---------------end--------------->8---
It seems to work. Would it be possible to integrate this patch into vdr?
Well, first we should investigate why this isn’t set correctly in libsi/si.c. That’s the place where such fixes should actually be done. I’ll look into this once I have my VDR development environment up and running at my new place…
Klaus