*/
static const char *xmltv_ns_get_parse_num
- (const char *s, int *ap, int *bp)
+ (const char *s, uint16_t *ap, uint16_t *bp)
{
int a = -1, b = -1;
}
static void parse_xmltv_ns_episode
- (const char *s, int *sn, int *sc, int *en, int *ec, int *pn, int *pc)
+ (const char *s, epg_episode_num_t *epnum)
{
- s = xmltv_ns_get_parse_num(s, sn, sc);
- s = xmltv_ns_get_parse_num(s, en, ec);
- xmltv_ns_get_parse_num(s, pn, pc);
+ s = xmltv_ns_get_parse_num(s, &(epnum->s_num), &(epnum->s_cnt));
+ s = xmltv_ns_get_parse_num(s, &(epnum->e_num), &(epnum->e_cnt));
+ s = xmltv_ns_get_parse_num(s, &(epnum->p_num), &(epnum->p_cnt));
}
static void parse_xmltv_dd_progid
- (epggrab_module_t *mod, const char *s, char **uri, char **suri, int *en )
+ (epggrab_module_t *mod, const char *s, char **uri, char **suri,
+ epg_episode_num_t *epnum)
{
char buf[128];
if (strlen(s) < 2) return;
if (e) {
buf[e] = '\0';
*suri = strdup(buf);
- if (s[e+1]) sscanf(s+e+1, "%d", en);
+ if (s[e+1]) sscanf(s+e+1, "%hu", &(epnum->e_num));
}
}
}
*/
static void get_episode_info
(epggrab_module_t *mod,
- htsmsg_t *tags, char **uri, char **suri, const char **screen,
- int *sn, int *sc, int *en, int *ec, int *pn, int *pc)
+ htsmsg_t *tags, char **uri, char **suri, epg_episode_num_t *epnum )
{
htsmsg_field_t *f;
htsmsg_t *c, *a;
continue;
if(!strcmp(sys, "onscreen"))
- *screen = cdata;
+ epnum->text = (char*)cdata;
else if(!strcmp(sys, "xmltv_ns"))
- parse_xmltv_ns_episode(cdata, sn, sc, en, ec, pn, pc);
+ parse_xmltv_ns_episode(cdata, epnum);
else if(!strcmp(sys, "dd_progid"))
- parse_xmltv_dd_progid(mod, cdata, uri, suri, en);
+ parse_xmltv_dd_progid(mod, cdata, uri, suri, epnum);
}
}
epg_serieslink_t *es = NULL;
epg_broadcast_t *ebc;
epg_genre_list_t *egl;
- int sn = 0, sc = 0, en = 0, ec = 0, pn = 0, pc = 0;
- const char *onscreen = NULL;
+ epg_episode_num_t epnum;
+ memset(&epnum, 0, sizeof(epnum));
char *suri = NULL, *uri = NULL;
lang_str_t *title = NULL;
lang_str_t *desc = NULL;
/*
* Episode/Series info
*/
- get_episode_info(mod, tags, &uri, &suri, &onscreen,
- &sn, &sc, &en, &ec, &pn, &pc);
+ get_episode_info(mod, tags, &uri, &suri, &epnum);
/*
* Series Link
epg_genre_list_destroy(egl);
}
- if (pn) save3 |= epg_episode_set_part(ee, pn, pc, mod);
- if (en) save3 |= epg_episode_set_number(ee, en, mod);
+ save3 |= epg_episode_set_epnum(ee, &epnum, mod);
// TODO: need to handle certification and ratings
// TODO: need to handle season numbering!