more improvements for extended_event_descriptor

This commit is contained in:
Robert 2010-02-08 17:29:19 +00:00
parent 6103f01ebd
commit d42d68198c
3 changed files with 54 additions and 6 deletions

View file

@ -611,7 +611,12 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
int desc_number = (ptr[0] & 0xF0) >> 4;
//int desc_last = (ptr[0] & 0x0F);
epg_event_set_ext_text(e, desc_number, exttext);
if (strlen(extdesc))
epg_event_set_ext_desc(e, desc_number, extdesc);
if (strlen(extitem))
epg_event_set_ext_item(e, desc_number, extitem);
if (strlen(exttext))
epg_event_set_ext_text(e, desc_number, exttext);
}
break;
default:

View file

@ -153,12 +153,52 @@ epg_event_set_desc(event_t *e, const char *desc)
/**
*
*/
void epg_event_set_ext_desc(event_t *e, const char *desc)
void epg_event_set_ext_desc(event_t *e, int ext_dn, const char *desc)
{
if(e->e_ext_desc != NULL && !strcmp(e->e_ext_desc, desc))
if (e->e_ext_desc == NULL && ext_dn != 0)
return;
free(e->e_ext_desc);
e->e_ext_desc = strdup(desc);
if (e->e_ext_desc != NULL && strstr(e->e_ext_desc, desc))
return;
int len = strlen(desc) + ( e->e_ext_desc ? strlen(e->e_ext_desc) : 0) + 1;
char *tmp = (char*)malloc(len);
if (e->e_ext_desc)
{
strcpy(tmp, e->e_ext_desc);
strcat(tmp, desc);
free(e->e_ext_desc);
}
else
strcpy(tmp, desc);
e->e_ext_desc = tmp;
epg_event_changed(e);
}
/**
*
*/
void epg_event_set_ext_item(event_t *e, int ext_dn, const char *item)
{
if (e->e_ext_item == NULL && ext_dn != 0)
return;
if (e->e_ext_item != NULL && strstr(e->e_ext_item, item))
return;
int len = strlen(item) + ( e->e_ext_item ? strlen(e->e_ext_item) : 0) + 1;
char *tmp = (char*)malloc(len);
if (e->e_ext_item)
{
strcpy(tmp, e->e_ext_item);
strcat(tmp, item);
free(e->e_ext_item);
}
else
strcpy(tmp, item);
e->e_ext_item = tmp;
epg_event_changed(e);
}

View file

@ -62,6 +62,7 @@ typedef struct event {
char *e_title; /* UTF-8 encoded */
char *e_desc; /* UTF-8 encoded */
char *e_ext_desc;/* UTF-8 encoded (from extended descriptor) */
char *e_ext_item;/* UTF-8 encoded (from extended descriptor) */
char *e_ext_text;/* UTF-8 encoded (from extended descriptor) */
int e_dvb_id;
@ -78,7 +79,9 @@ void epg_event_set_title(event_t *e, const char *title);
void epg_event_set_desc(event_t *e, const char *desc);
void epg_event_set_ext_desc(event_t *e, const char *desc);
void epg_event_set_ext_desc(event_t *e, int ext_dn, const char *desc);
void epg_event_set_ext_item(event_t *e, int ext_dn, const char *item);
void epg_event_set_ext_text(event_t *e, int ext_dn, const char *text);