]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
eit: cleanups - add lang_str_set_multi()
authorJaroslav Kysela <perex@perex.cz>
Thu, 21 Dec 2017 17:14:28 +0000 (18:14 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 21 Dec 2017 17:14:28 +0000 (18:14 +0100)
src/epggrab/module/eit.c
src/lang_str.c
src/lang_str.h

index 88bab322f3755a01e7076ffe6a582f7332a78b86..9d7e26597e1f2e4b6ba6708317e9827fc4df927f 100644 (file)
@@ -525,12 +525,15 @@ _eit_scrape_text(eit_module_t *eit_mod, eit_event_t *ev)
   lang_str_ele_t *se;
   char buffer[2048];
 
+  if (!ev->summary)
+    return;
+
   /* UK Freeview/Freesat have a subtitle as part of the summary in the format
    * "subtitle: desc". They may also have the title continue into the
    * summary. So if configured, run scrapers for the title, the subtitle
    * and the summary (the latter to tidy up).
    */
-  if (ev->title && ev->summary && eit_mod->scrape_title) {
+  if (ev->title && eit_mod->scrape_title) {
     char title_summary[2048];
     lang_str_t *ls = lang_str_create();
     RB_FOREACH(se, ev->title, link) {
@@ -542,13 +545,11 @@ _eit_scrape_text(eit_module_t *eit_mod, eit_event_t *ev)
         lang_str_set(&ls, buffer, se->lang);
       }
     }
-    RB_FOREACH(se, ls, link) {
-      lang_str_set(&ev->title, se->str, se->lang);
-    }
+    lang_str_set_multi(&ev->title, ls);
     lang_str_destroy(ls);
   }
 
-  if (ev->summary && eit_mod->scrape_subtitle) {
+  if (eit_mod->scrape_subtitle) {
     RB_FOREACH(se, ev->summary, link) {
       if (eit_pattern_apply_list(buffer, sizeof(buffer), se->str, &eit_mod->p_scrape_subtitle)) {
         tvhtrace(LS_TBL_EIT, "  scrape subtitle '%s' from '%s' using %s",
@@ -558,7 +559,7 @@ _eit_scrape_text(eit_module_t *eit_mod, eit_event_t *ev)
     }
   }
 
-  if (ev->summary && eit_mod->scrape_summary) {
+  if (eit_mod->scrape_summary) {
     lang_str_t *ls = lang_str_create();
     RB_FOREACH(se, ev->summary, link) {
       if (eit_pattern_apply_list(buffer, sizeof(buffer), se->str, &eit_mod->p_scrape_summary)) {
@@ -567,9 +568,7 @@ _eit_scrape_text(eit_module_t *eit_mod, eit_event_t *ev)
         lang_str_set(&ls, buffer, se->lang);
       }
     }
-    RB_FOREACH(se, ls, link) {
-      lang_str_set(&ev->summary, se->str, se->lang);
-    }
+    lang_str_set_multi(&ev->summary, ls);
     lang_str_destroy(ls);
   }
 }
index fd9cf0b0cce5f0e504fe3a706236decc80ef45ac..0a2b2f24934018dec604d74db0788ec661e9093b 100644 (file)
@@ -199,9 +199,21 @@ change1:
   return 1;
 }
 
+/* Set new string with update check */
+int lang_str_set_multi
+  ( lang_str_t **dst, const lang_str_t *src )
+{
+  int changed = 0;
+  lang_str_ele_t *e;
+  RB_FOREACH(e, src, link) {
+    changed |= lang_str_set(dst, e->str, e->lang);
+  }
+  return changed;
+}
+
 /* Set new strings with update check */
 int lang_str_set2
-  ( lang_str_t **dst, lang_str_t *src )
+  ( lang_str_t **dst, const lang_str_t *src )
 {
   if (*dst) {
     if (!lang_str_compare(*dst, src))
index d0beebdb1d198d0d3f30ace7fcad9245f323ef0e..648d6007a098df474f1201f96811cfe17d369b36 100644 (file)
@@ -48,8 +48,10 @@ int             lang_str_append
   ( lang_str_t *ls, const char *str, const char *lang );
 int             lang_str_set
   ( lang_str_t **dst, const char *str, const char *lang );
+int             lang_str_set_multi
+  ( lang_str_t **dst, const lang_str_t *src );
 int             lang_str_set2
-  ( lang_str_t **dst, lang_str_t *src );
+  ( lang_str_t **dst, const lang_str_t *src );
 
 /* Serialize/Deserialize */
 htsmsg_t       *lang_str_serialize_map