From: Jaroslav Kysela Date: Thu, 21 Dec 2017 17:14:28 +0000 (+0100) Subject: eit: cleanups - add lang_str_set_multi() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e42c2ae5b23e1ff2bcec8c228d748704a5d54ad;p=thirdparty%2Ftvheadend.git eit: cleanups - add lang_str_set_multi() --- diff --git a/src/epggrab/module/eit.c b/src/epggrab/module/eit.c index 88bab322f..9d7e26597 100644 --- a/src/epggrab/module/eit.c +++ b/src/epggrab/module/eit.c @@ -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); } } diff --git a/src/lang_str.c b/src/lang_str.c index fd9cf0b0c..0a2b2f249 100644 --- a/src/lang_str.c +++ b/src/lang_str.c @@ -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)) diff --git a/src/lang_str.h b/src/lang_str.h index d0beebdb1..648d6007a 100644 --- a/src/lang_str.h +++ b/src/lang_str.h @@ -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