From 30273dcc5709c33771f1c253131ff99f6874acfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20T=C3=B6rnblom?= Date: Thu, 7 Mar 2013 23:36:30 +0100 Subject: [PATCH] xmltv: fixed parsing of star-rating --- src/epggrab/module/xmltv.c | 22 +++++++++++++++------- src/main.c | 1 + 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c index d8616f9a..e00d002b 100644 --- a/src/epggrab/module/xmltv.c +++ b/src/epggrab/module/xmltv.c @@ -354,14 +354,22 @@ static int _xmltv_parse_previously_shown * Star rating */ static int _xmltv_parse_star_rating - ( epggrab_module_t *mod, epg_episode_t *ee, htsmsg_t *tags ) + ( epggrab_module_t *mod, epg_episode_t *ee, htsmsg_t *body ) { - int a, b; - const char *stars; - if (!mod || !ee || !tags) return 0; - if (!(stars = htsmsg_xml_get_cdata_str(tags, "star-rating"))) return 0; - if (sscanf(stars, "%d/%d", &a, &b) != 2) return 0; - return epg_episode_set_star_rating(ee, (5 * a) / b, mod); + double a, b; + htsmsg_t *stars, *tags; + const char *s1, *s2; + + if (!mod || !ee || !body) return 0; + if (!(stars = htsmsg_get_map(body, "star-rating"))) return 0; + if (!(tags = htsmsg_get_map(stars, "tags"))) return 0; + if (!(s1 = htsmsg_xml_get_cdata_str(tags, "value"))) return 0; + if (!(s2 = strstr(s1, "/"))) return 0; + + a = atof(s1); + b = atof(s2 + 1); + + return epg_episode_set_star_rating(ee, (100 * a) / b, mod); } /* diff --git a/src/main.c b/src/main.c index 77ee86d8..128e5d5c 100644 --- a/src/main.c +++ b/src/main.c @@ -487,6 +487,7 @@ main(int argc, char **argv) /* Set locale */ setlocale(LC_ALL, ""); + setlocale(LC_NUMERIC, "C"); /* make sure the timezone is set */ tzset();