bool cEpg::ParseLine(const char *s) { char *t = skipspace(s + 1); switch (*s) { case 'T': SetTitle(t); break; case 'S': SetShortText(t); break; case 'D': strreplace(t, '|', '\n'); SetDescription(t); break; case 'E': { unsigned int EventID; time_t StartTime; int Duration; unsigned int TableID = 0; unsigned int Version = 0xFF; // actual value is ignored int n = sscanf(t, "%u %ld %d %X %X", &EventID, &StartTime, &Duration, &TableID, &Version); if (n >= 3 && n <= 5) { m_StartTime = StartTime; m_EndTime = StartTime+Duration; m_Duration = Duration; m_uid = EventID; } } break; case 'G': { char genre[1024]; int genreType; int genreSubType; int n = sscanf(t, "%u %u %[^\n]", &genreType, &genreSubType, genre); if (n == 3) { SetGenre(genre, genreType, genreSubType); } } break; case 'X': break; case 'C': break; case 'c': break; case 'V': SetVps(atoi(t)); break; case 'R': SetParentalRating(atoi(t)); break; case 'e': return true; default: XBMC->Log(LOG_ERROR, "cEpg::ParseLine - unexpected tag while reading EPG data: %s", s); return true; } return false; }
bool cEvent::Parse(char *s) { char *t = skipspace(s + 1); switch (*s) { case 'T': SetTitle(t); break; case 'S': SetShortText(t); break; case 'D': strreplace(t, '|', '\n'); SetDescription(t); break; case 'G': { memset(contents, 0, sizeof(contents)); for (int i = 0; i < MaxEventContents; i++) { char *tail = NULL; int c = strtol(t, &tail, 16); if (0x00 < c && c <= 0xFF) { contents[i] = c; t = tail; } else break; } } break; case 'R': SetParentalRating(atoi(t)); break; case 'X': if (!components) components = new cComponents; components->SetComponent(components->NumComponents(), t); break; case 'V': SetVps(atoi(t)); break; default: esyslog("ERROR: unexpected tag while reading EPG data: %s", s); return false; } return true; }