Пример #1
0
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;
}
Пример #2
0
Файл: epg.c Проект: piotrasd/vdr
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;
}