diff options
| -rw-r--r-- | eepg.c | 57 | 
1 files changed, 43 insertions, 14 deletions
| @@ -745,10 +745,16 @@ bool cFilterEEPG::GetThemesSKYBOX (void) //TODO can't we read this from the DVB    FILE *FileThemes;    char *Line;    char Buffer[256]; -  if (Format == SKY_IT) +  const char **SkyThemes; +  bool updateFile = false; +  if (Format == SKY_IT) {      FileName += "/sky_it.themes"; -  else if (Format == SKY_UK) +    SkyThemes = SkyItThemes; +  } +  else if (Format == SKY_UK) {      FileName += "/sky_uk.themes"; +    SkyThemes = SkyUkThemes; +  }    else {      LogE (0, prep("Error, wrong format detected in GetThemesSKYBOX. Format = %i."), Format);      return false; @@ -759,26 +765,49 @@ bool cFilterEEPG::GetThemesSKYBOX (void) //TODO can't we read this from the DVB      LogE (0, prep("Error opening file '%s'. %s"), FileName.c_str(), strerror (errno));      return false;    } else { -    //int id = 0; +    int id = 0;      nThemes = 0; -    char string1[256]; -    char string2[256]; -    //sTheme *T; +    char thId[256]; +    char theme[256]; +      while ((Line = fgets (Buffer, sizeof (Buffer), FileThemes)) != NULL) { -      memset (string1, 0, sizeof (string1)); -      memset (string2, 0, sizeof (string2)); +      memset (thId, 0, sizeof (thId)); +      memset (theme, 0, sizeof (theme));        if (!isempty (Line)) { -        //T = &Themes[nThemes]; -        if (sscanf (Line, "%[^=] =%[^\n] ", string1, string2) == 2) { -          snprintf ((char *) Themes[nThemes], 255, "%s", string2); +        if (sscanf (Line, "%[^=] =%[^\n] ", thId, theme) == 2 && !isempty (theme)) { +          snprintf ((char *) Themes[id], 255, "%s", theme); +          nThemes++;          } else { -          Themes[nThemes][0] = '\0'; +          if (SkyThemes[id]) { +            updateFile = true; +            snprintf ((char *) Themes[id], 255, "%s", SkyThemes[id]); +            LogD (1, prep("Theme '%s' missing in theme file '%s'"), SkyThemes[id], FileName.c_str()); +          } else +              Themes[id][0] = '\0';          } -        //id ++; -        nThemes++; +        id ++;        }      }      fclose (FileThemes); + +    if (updateFile) { +      FileThemes = fopen (FileName.c_str(), "w"); +      if (FileThemes == NULL) { +        LogE (0, prep("Error re-creating file '%s', %s"), FileName.c_str(), strerror (errno)); +      } else { +        for (int i = 0; i < 256; i++) { +          if (Themes[nThemes]) { +            fprintf (FileThemes, "0x%02x=%s\n", i, (char *) Themes[nThemes]); +          } +          else { +            fprintf (FileThemes, "0x%02x=\n", i); +          } +        } + +        LogI (0, prep("Success updating file '%s'"), FileName.c_str()); +        fclose (FileThemes); +      } +    }    }    return true;  } | 
