if ((c = hts_settings_load("ipblock")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- (void)ipblock_entry_create(f->hmf_name, m);
+ (void)ipblock_entry_create(htsmsg_field_name(f), m);
}
htsmsg_destroy(c);
}
if ((c = hts_settings_load("passwd")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- (void)passwd_entry_create(f->hmf_name, m);
+ (void)passwd_entry_create(htsmsg_field_name(f), m);
}
htsmsg_destroy(c);
}
if ((c = hts_settings_load("accesscontrol")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- (void)access_entry_create(f->hmf_name, m);
+ (void)access_entry_create(htsmsg_field_name(f), m);
}
htsmsg_destroy(c);
access_entry_reindex();
if ((c = hts_settings_load("bouquet")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- bq = bouquet_create(f->hmf_name, m, NULL, NULL);
+ bq = bouquet_create(htsmsg_field_name(f), m, NULL, NULL);
if (bq)
bq->bq_saveflag = 0;
}
if ((e = htsmsg_field_get_map(f)) == NULL) continue;
lcn = htsmsg_get_s64_or_default(e, "lcn", 0);
tag = htsmsg_get_str(e, "tag");
- s = service_find_by_uuid(f->hmf_name);
+ s = service_find_by_uuid(htsmsg_field_name(f));
if (s)
bouquet_add_service(bq, s, lcn, tag);
}
channel_in_load = 1;
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- (void)channel_create(f->hmf_name, e, NULL);
+ (void)channel_create(htsmsg_field_name(f), e, NULL);
}
channel_in_load = 0;
htsmsg_destroy(c);
if ((c = hts_settings_load("channel/tag")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- (void)channel_tag_create(f->hmf_name, m);
+ (void)channel_tag_create(htsmsg_field_name(f), m);
}
htsmsg_destroy(c);
}
htsmsg_destroy(mux);
/* Services */
- config_migrate_v1_dvb_svcs(f->hmf_name, ubuf, ubuf2, channels);
+ config_migrate_v1_dvb_svcs(htsmsg_field_name(f), ubuf, ubuf2, channels);
}
/* Add properties derived from network */
if ((str = config_migrate_v1_chn_name_to_uuid(channels, str))) {
htsmsg_delete_field(m, "channel");
htsmsg_add_str(m, "channel", str);
- hts_settings_save(m, "%s/%s", path, f->hmf_name);
+ hts_settings_save(m, "%s/%s", path, htsmsg_field_name(f));
}
htsmsg_destroy(m);
}
htsmsg_add_str(chns, NULL, str);
}
htsmsg_add_msg(m, "channels", chns);
- hts_settings_save(m, "%s/%s", path, f->hmf_name);
+ hts_settings_save(m, "%s/%s", path, htsmsg_field_name(f));
htsmsg_destroy(m);
}
htsmsg_destroy(c);
/* Build entry */
uuid_set(&chnu, NULL);
m = htsmsg_create_map();
- htsmsg_add_u32(m, "channelid", atoi(f->hmf_name));
+ htsmsg_add_u32(m, "channelid", atoi(htsmsg_field_name(f)));
htsmsg_add_str(m, "uuid", uuid_get_hex(&chnu, ubufc));
htsmsg_add_msg(m, "services", htsmsg_create_list());
if (!htsmsg_get_u32(e, "dvr_extra_time_pre", &u32))
if ((c = hts_settings_load_r(2, "dvbmuxes"))) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- config_migrate_v1_dvb_network(f->hmf_name, e, channels);
+ config_migrate_v1_dvb_network(htsmsg_field_name(f), e, channels);
}
htsmsg_destroy(c);
}
str = tvh_strdupa(str+5);
htsmsg_delete_field(e, "class");
htsmsg_add_str(e, "class", str);
- hts_settings_save(e, "input/dvb/networks/%s/config", f->hmf_name);
+ hts_settings_save(e, "input/dvb/networks/%s/config", htsmsg_field_name(f));
}
}
}
if ((ch = htsmsg_get_map_by_field(f))) {
if ((str = htsmsg_get_str(ch, "xmltv-channel"))) {
if ((xc = htsmsg_get_map(xchs, str))) {
- htsmsg_add_u32(xc, "channel", atoi(f->hmf_name));
+ htsmsg_add_u32(xc, "channel", atoi(htsmsg_field_name(f)));
}
}
}
if (xchs) {
HTSMSG_FOREACH(f, xchs) {
if ((xc = htsmsg_get_map_by_field(f))) {
- hts_settings_save(xc, "epggrab/xmltv/channels/%s", f->hmf_name);
+ hts_settings_save(xc, "epggrab/xmltv/channels/%s", htsmsg_field_name(f));
}
}
}
if (modify)
modify(e, id, ubuf, aux);
hts_settings_save(e, "%s/%s", dir, ubuf);
- hts_settings_remove("%s/%s", dir, f->hmf_name);
+ hts_settings_remove("%s/%s", dir, htsmsg_field_name(f));
}
htsmsg_destroy(c);
htsmsg_add_msg(e, "tags", htsmsg_copy(m));
htsmsg_delete_field(e, "tags_new");
}
- hts_settings_save(e, "channel/%s", f->hmf_name);
+ hts_settings_save(e, "channel/%s", htsmsg_field_name(f));
}
htsmsg_destroy(ch);
}
/* step 1: only "config" */
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- if (strcmp(f->hmf_name, "config")) continue;
- htsmsg_add_str(e, "name", f->hmf_name + 6);
+ if (strcmp(htsmsg_field_name(f), "config")) continue;
+ htsmsg_add_str(e, "name", htsmsg_field_name(f) + 6);
uuid_set(&u, NULL);
- hts_settings_remove("dvr/%s", f->hmf_name);
+ hts_settings_remove("dvr/%s", htsmsg_field_name(f));
hts_settings_save(e, "dvr/config/%s", uuid_get_hex(&u, ubuf));
}
/* step 2: reset (without "config") */
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- if (strcmp(f->hmf_name, "config") == 0) continue;
- if (strncmp(f->hmf_name, "config", 6)) continue;
- htsmsg_add_str(e, "name", f->hmf_name + 6);
+ if (strcmp(htsmsg_field_name(f), "config") == 0) continue;
+ if (strncmp(htsmsg_field_name(f), "config", 6)) continue;
+ htsmsg_add_str(e, "name", htsmsg_field_name(f) + 6);
uuid_set(&u, NULL);
- hts_settings_remove("dvr/%s", f->hmf_name);
+ hts_settings_remove("dvr/%s", htsmsg_field_name(f));
hts_settings_save(e, "dvr/config/%s", uuid_get_hex(&u, ubuf));
}
htsmsg_destroy(c);
if ((c = hts_settings_load("autorec")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- hts_settings_remove("autorec/%s", f->hmf_name);
- hts_settings_save(e, "dvr/autorec/%s", f->hmf_name);
+ hts_settings_remove("autorec/%s", htsmsg_field_name(f));
+ hts_settings_save(e, "dvr/autorec/%s", htsmsg_field_name(f));
}
}
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- hts_settings_save(e, "%s/%s", newdir, f->hmf_name);
- hts_settings_remove("%s/%s", dir, f->hmf_name);
+ hts_settings_save(e, "%s/%s", newdir, htsmsg_field_name(f));
+ hts_settings_remove("%s/%s", dir, htsmsg_field_name(f));
}
htsmsg_destroy(c);
if (!(e = htsmsg_field_get_map(f))) continue;
if ((s = htsmsg_get_str(e, name)) != NULL) {
if (!strcmp(s, value))
- return f->hmf_name;
+ return htsmsg_field_name(f);
}
}
return NULL;
if ((c = hts_settings_load("cwc")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- hts_settings_remove("cwc/%s", f->hmf_name);
- hts_settings_save(e, "caclient/%s", f->hmf_name);
+ hts_settings_remove("cwc/%s", htsmsg_field_name(f));
+ hts_settings_save(e, "caclient/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
if ((c = hts_settings_load("capmt")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- hts_settings_remove("capmt/%s", f->hmf_name);
- hts_settings_save(e, "caclient/%s", f->hmf_name);
+ hts_settings_remove("capmt/%s", htsmsg_field_name(f));
+ hts_settings_save(e, "caclient/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
}
htsmsg_delete_field(e, "rewrite-pat");
htsmsg_delete_field(e, "rewrite-pmt");
- hts_settings_save(e, "dvr/config/%s", f->hmf_name);
+ hts_settings_save(e, "dvr/config/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
}
if (!htsmsg_get_s32(e, "scodec", &i))
htsmsg_delete_field(e, "scodec");
- hts_settings_save(e, "profile/%s", f->hmf_name);
+ hts_settings_save(e, "profile/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
if (!(e = htsmsg_field_get_map(f))) continue;
if (htsmsg_get_s32(e, "timeout", &i)) {
htsmsg_set_s32(e, "timeout", 5);
- hts_settings_save(e, "profile/%s", f->hmf_name);
+ hts_settings_save(e, "profile/%s", htsmsg_field_name(f));
}
}
htsmsg_destroy(c);
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
config_modify_dvrauto(e);
- hts_settings_save(e, "dvr/autorec/%s", f->hmf_name);
+ hts_settings_save(e, "dvr/autorec/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
if (strcmp(htsmsg_get_str(e, "name") ?: "", "htsp") == 0)
p = PROFILE_SPRIO_IMPORTANT;
htsmsg_set_s32(e, "priority", p);
- hts_settings_save(e, "profile/%s", f->hmf_name);
+ hts_settings_save(e, "profile/%s", htsmsg_field_name(f));
}
}
htsmsg_destroy(c);
htsmsg_add_msg(l, NULL, m);
htsmsg_delete_field(e, "filename");
htsmsg_add_msg(e, "files", l);
- hts_settings_save(e, "dvr/log/%s", f->hmf_name);
+ hts_settings_save(e, "dvr/log/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
uuid_set(&u, NULL);
hts_settings_save(m, "passwd/%s", uuid_get_hex(&u, ubuf));
htsmsg_delete_field(e, "password2");
- hts_settings_save(e, "accesscontrol/%s", f->hmf_name);
+ hts_settings_save(e, "accesscontrol/%s", htsmsg_field_name(f));
}
}
htsmsg_destroy(c);
config_migrate_v20_helper(e, "profile");
config_migrate_v20_helper(e, "dvr_config");
config_migrate_v20_helper(e, "channel_tag");
- hts_settings_save(e, "accesscontrol/%s", f->hmf_name);
+ hts_settings_save(e, "accesscontrol/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
HTSMSG_FOREACH(f, m) {
s64 = 0;
htsmsg_field_get_s64(f, &s64);
- if ((s64 || !strcmp(str ?: "", f->hmf_name)) &&
- f->hmf_name[0]) {
+ if ((s64 || !strcmp(str ?: "", htsmsg_field_name(f))) &&
+ htsmsg_field_name(f)[0]) {
a = htsmsg_create_map();
htsmsg_add_bool(a, "enabled", 1);
- htsmsg_add_msg(e, f->hmf_name, a);
+ htsmsg_add_msg(e, htsmsg_field_name(f), a);
}
}
}
m = htsmsg_field_get_map(f);
if (m == NULL) continue;
n = htsmsg_copy(m);
- htsmsg_add_str(n, "id", f->hmf_name);
+ htsmsg_add_str(n, "id", htsmsg_field_name(f));
maj = htsmsg_get_u32_or_default(m, "major", 0);
min = htsmsg_get_u32_or_default(m, "minor", 0);
num = (maj * CHANNEL_SPLIT) + min;
htsmsg_delete_field(n, "major");
htsmsg_delete_field(n, "minor");
uuid_set(&u, NULL);
- hts_settings_remove("epggrab/%s/channels/%s", modname, f->hmf_name);
+ hts_settings_remove("epggrab/%s/channels/%s", modname, htsmsg_field_name(f));
hts_settings_save(n, "epggrab/%s/channels/%s", modname, uuid_get_hex(&u, ubuf));
htsmsg_destroy(n);
}
if (!(e = htsmsg_field_get_map(f))) continue;
config_migrate_v24_helper(streaming_list, e, "streaming");
config_migrate_v24_helper(dvr_list, e, "dvr");
- hts_settings_save(e, "accesscontrol/%s", f->hmf_name);
+ hts_settings_save(e, "accesscontrol/%s", htsmsg_field_name(f));
}
htsmsg_destroy(c);
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- if (strlen(f->hmf_name) != UUID_HEX_SIZE - 1) {
- tvherror(LS_START, "filename %s/%s/%s is invalid", hts_settings_get_root(), dir, f->hmf_name);
+ if (strlen(htsmsg_field_name(f)) != UUID_HEX_SIZE - 1) {
+ tvherror(LS_START, "filename %s/%s/%s is invalid", hts_settings_get_root(), dir, htsmsg_field_name(f));
exit(1);
}
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f)))
continue;
- caclient_create(f->hmf_name, e, 0);
+ caclient_create(htsmsg_field_name(f), e, 0);
}
htsmsg_destroy(c);
}
HTSMSG_FOREACH(f, l) {
if((c = htsmsg_get_map_by_field(f)) == NULL)
continue;
- (void)dvr_autorec_create(f->hmf_name, c);
+ (void)dvr_autorec_create(htsmsg_field_name(f), c);
}
htsmsg_destroy(l);
}
if ((l = hts_settings_load("dvr/config")) != NULL) {
HTSMSG_FOREACH(f, l) {
if ((m = htsmsg_get_map_by_field(f)) == NULL) continue;
- (void)dvr_config_create(NULL, f->hmf_name, m);
+ (void)dvr_config_create(NULL, htsmsg_field_name(f), m);
}
htsmsg_destroy(l);
}
parent = htsmsg_get_str(c, "parent");
child = htsmsg_get_str(c, "child");
if (parent && parent[0])
- htsmsg_set_str(rere, parent, f->hmf_name);
+ htsmsg_set_str(rere, parent, htsmsg_field_name(f));
if (child && child[0])
- htsmsg_set_str(rere, f->hmf_name, child);
+ htsmsg_set_str(rere, htsmsg_field_name(f), child);
htsmsg_delete_field(c, "parent");
htsmsg_delete_field(c, "child");
- (void)dvr_entry_create(f->hmf_name, c, 0);
+ (void)dvr_entry_create(htsmsg_field_name(f), c, 0);
}
htsmsg_destroy(l);
}
HTSMSG_FOREACH(f, rere) {
if((child = htsmsg_field_get_str(f)) == NULL)
continue;
- parent = f->hmf_name;
+ parent = htsmsg_field_name(f);
de1 = dvr_entry_find_by_uuid(parent);
de2 = dvr_entry_find_by_uuid(child);
dvr_entry_change_parent_child(de1, de2, NULL, 0);
dvr_rec_unsubscribe(de);
dvr_entry_destroy(de, 0);
}
+ string_list_destroy(dvr_fanart_to_prefetch);
}
HTSMSG_FOREACH(f, l) {
if((c = htsmsg_get_map_by_field(f)) == NULL)
continue;
- (void)dvr_timerec_create(f->hmf_name, c);
+ (void)dvr_timerec_create(htsmsg_field_name(f), c);
}
htsmsg_destroy(l);
}
} else {
add_sep = 1;
}
- lang_str_append(b->credits_cached, f->hmf_name, NULL);
+ lang_str_append(b->credits_cached, htsmsg_field_name(f), NULL);
}
} else {
if (b->credits_cached) {
idnode_load(&epggrab_conf.idnode, m);
if ((a = htsmsg_get_map(m, "modules"))) {
HTSMSG_FOREACH(f, a) {
- mod = epggrab_module_find_by_id(f->hmf_name);
+ mod = epggrab_module_find_by_id(htsmsg_field_name(f));
map = htsmsg_field_get_map(f);
if (mod && map) {
idnode_load(&mod->idnode, map);
htsmsg_field_t *f;
HTSMSG_FOREACH(f, config) {
e = htsmsg_create_map();
- htsmsg_add_str(e, "key", f->hmf_name);
- htsmsg_add_str(e, "val", f->hmf_name);
+ htsmsg_add_str(e, "key", htsmsg_field_name(f));
+ htsmsg_add_str(e, "val", htsmsg_field_name(f));
htsmsg_add_msg(m, NULL, e);
}
htsmsg_destroy(config);
if (mod == NULL || strcmp(mod->id, id))
mod = epggrab_module_find_by_id(id);
if (mod)
- epggrab_channel_create(mod, e, f->hmf_name);
+ epggrab_channel_create(mod, e, htsmsg_field_name(f));
}
}
htsmsg_destroy(m);
if (map) {
HTSMSG_FOREACH(f, map) {
nit = calloc(1, sizeof(*nit));
- nit->name = f->hmf_name[0] ? strdup(f->hmf_name) : NULL;
+ nit->name = htsmsg_field_name(f)[0] ? strdup(htsmsg_field_name(f)) : NULL;
if ((e = htsmsg_field_get_map(f)) != NULL) {
eit_parse_list(e, "onid", nit->onid, ARRAY_SIZE(nit->onid), &nit->onid_count);
eit_parse_list(e, "tsid", nit->tsid, ARRAY_SIZE(nit->tsid), &nit->tsid_count);
map = htsmsg_get_map(conf, "hacks");
if (map) {
HTSMSG_FOREACH(f, map) {
- if (strcmp(f->hmf_name, "interest-4e") == 0)
+ if (strcmp(htsmsg_field_name(f), "interest-4e") == 0)
priv->hacks |= EIT_HACK_INTEREST4E;
- else if (strcmp(f->hmf_name, "extra-mux-lookup") == 0)
+ else if (strcmp(htsmsg_field_name(f), "extra-mux-lookup") == 0)
priv->hacks |= EIT_HACK_EXTRAMUXLOOKUP;
- else if (strcmp(f->hmf_name, "svc-net-lookup") == 0)
+ else if (strcmp(htsmsg_field_name(f), "svc-net-lookup") == 0)
priv->hacks |= EIT_HACK_EXTRAMUXLOOKUP;
- else if (strcmp(f->hmf_name, "bat") == 0) {
+ else if (strcmp(htsmsg_field_name(f), "bat") == 0) {
if (!(e = htsmsg_field_get_map(f))) continue;
priv->bat_pid = htsmsg_get_s32_or_default(e, "pid", 0);
}
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- eit_init_one(f->hmf_name, e);
+ eit_init_one(htsmsg_field_name(f), e);
}
htsmsg_destroy(c);
}
htsmsg_t *e;
htsmsg_field_t *f;
HTSMSG_FOREACH(f, m) {
- if ((e = htsmsg_get_list(m, f->hmf_name))) {
- if ((r = _opentv_genre_load_one(f->hmf_name, e))) {
+ if ((e = htsmsg_get_list(m, htsmsg_field_name(f)))) {
+ if ((r = _opentv_genre_load_one(htsmsg_field_name(f), e))) {
if (r > 0)
- tvhdebug(LS_OPENTV, "genre map %s loaded", f->hmf_name);
+ tvhdebug(LS_OPENTV, "genre map %s loaded", htsmsg_field_name(f));
else
- tvhwarn(LS_OPENTV, "genre map %s failed", f->hmf_name);
+ tvhwarn(LS_OPENTV, "genre map %s failed", htsmsg_field_name(f));
}
}
}
htsmsg_t *e;
htsmsg_field_t *f;
HTSMSG_FOREACH(f, m) {
- if ((e = htsmsg_get_list(m, f->hmf_name))) {
- if ((r = _opentv_dict_load_one(f->hmf_name, e))) {
+ if ((e = htsmsg_get_list(m, htsmsg_field_name(f)))) {
+ if ((r = _opentv_dict_load_one(htsmsg_field_name(f), e))) {
if (r > 0)
- tvhdebug(LS_OPENTV, "dictionary %s loaded", f->hmf_name);
+ tvhdebug(LS_OPENTV, "dictionary %s loaded", htsmsg_field_name(f));
else
- tvhwarn(LS_OPENTV, "dictionary %s failed", f->hmf_name);
+ tvhwarn(LS_OPENTV, "dictionary %s failed", htsmsg_field_name(f));
}
}
}
htsmsg_field_t *f;
HTSMSG_FOREACH(f, m) {
if ((e = htsmsg_get_map_by_field(f))) {
- if ((r = _opentv_prov_load_one(f->hmf_name, e))) {
+ if ((r = _opentv_prov_load_one(htsmsg_field_name(f), e))) {
if (r > 0)
- tvhdebug(LS_OPENTV, "provider %s loaded", f->hmf_name);
+ tvhdebug(LS_OPENTV, "provider %s loaded", htsmsg_field_name(f));
else
- tvhwarn(LS_OPENTV, "provider %s failed", f->hmf_name);
+ tvhwarn(LS_OPENTV, "provider %s failed", htsmsg_field_name(f));
}
}
}
HTSMSG_FOREACH(f, tags) {
if((c = htsmsg_get_map_by_field(f)) == NULL ||
- strcmp(f->hmf_name, "episode-num") ||
+ strcmp(htsmsg_field_name(f), "episode-num") ||
(a = htsmsg_get_map(c, "attrib")) == NULL ||
(cdata = htsmsg_get_str(c, "cdata")) == NULL ||
(sys = htsmsg_get_str(a, "system")) == NULL)
const char *str;
HTSMSG_FOREACH(f, m) {
- if(!strcmp(f->hmf_name, "subtitles")) {
+ if(!strcmp(htsmsg_field_name(f), "subtitles")) {
if ((tag = htsmsg_get_map_by_field(f))) {
str = htsmsg_xml_get_attr_str(tag, "type");
if (str && !strcmp(str, "teletext"))
else if (str && !strcmp(str, "deaf-signed"))
save |= epg_broadcast_set_is_deafsigned(ebc, 1, changes);
}
- } else if (!strcmp(f->hmf_name, "audio-described")) {
+ } else if (!strcmp(htsmsg_field_name(f), "audio-described")) {
save |= epg_broadcast_set_is_audio_desc(ebc, 1, changes);
}
}
htsmsg_field_t *f;
HTSMSG_FOREACH(f, body) {
- if (!strcmp(f->hmf_name, "rating") && (rating = htsmsg_get_map_by_field(f))) {
+ if (!strcmp(htsmsg_field_name(f), "rating") && (rating = htsmsg_get_map_by_field(f))) {
if ((tags = htsmsg_get_map(rating, "tags"))) {
if ((s1 = htsmsg_xml_get_cdata_str(tags, "value"))) {
/* We map some common ratings since some movies only
htsmsg_field_t *f;
epg_genre_list_t *egl = NULL;
HTSMSG_FOREACH(f, tags) {
- if (!strcmp(f->hmf_name, "category") && (e = htsmsg_get_map_by_field(f))) {
+ if (!strcmp(htsmsg_field_name(f), "category") && (e = htsmsg_get_map_by_field(f))) {
if (!egl) egl = calloc(1, sizeof(epg_genre_list_t));
epg_genre_list_add_by_str(egl, htsmsg_get_str(e, "cdata"), NULL);
}
const char *lang;
HTSMSG_FOREACH(f, tags) {
- if (!strcmp(f->hmf_name, tname) && (e = htsmsg_get_map_by_field(f))) {
+ if (!strcmp(htsmsg_field_name(f), tname) && (e = htsmsg_get_map_by_field(f))) {
if (!*ls) *ls = lang_str_create();
lang = NULL;
if ((attrib = htsmsg_get_map(e, "attrib")))
string_list_t *tag_list = NULL;
HTSMSG_FOREACH(f, tags) {
- if (!strcmp(f->hmf_name, tagname) && (e = htsmsg_get_map_by_field(f))) {
+ if (!strcmp(htsmsg_field_name(f), tagname) && (e = htsmsg_get_map_by_field(f))) {
const char *str = htsmsg_get_str(e, "cdata");
if (str && *str) {
if (!tag_list) tag_list = string_list_create();
htsmsg_field_t *f;
HTSMSG_FOREACH(f, credits_tags) {
- if ((!strcmp(f->hmf_name, "actor") ||
- !strcmp(f->hmf_name, "director") ||
- !strcmp(f->hmf_name, "guest") ||
- !strcmp(f->hmf_name, "presenter") ||
- !strcmp(f->hmf_name, "writer")
+ if ((!strcmp(htsmsg_field_name(f), "actor") ||
+ !strcmp(htsmsg_field_name(f), "director") ||
+ !strcmp(htsmsg_field_name(f), "guest") ||
+ !strcmp(htsmsg_field_name(f), "presenter") ||
+ !strcmp(htsmsg_field_name(f), "writer")
) &&
(e = htsmsg_get_map_by_field(f))) {
const char* str = htsmsg_get_str(e, "cdata");
string_list_insert(credits_names, str);
if (!*out_credits) *out_credits = htsmsg_create_map();
- htsmsg_add_str(*out_credits, str, f->hmf_name);
+ htsmsg_add_str(*out_credits, str, htsmsg_field_name(f));
}
}
}
HTSMSG_FOREACH(f, tags) {
if (!(subtag = htsmsg_field_get_map(f))) continue;
- if (strcmp(f->hmf_name, "display-name") == 0) {
+ if (strcmp(htsmsg_field_name(f), "display-name") == 0) {
name = htsmsg_get_str(subtag, "cdata");
const char *cur = name;
if (cur && *cur)
htsmsg_add_str_exclusive(dnames, cur);
}
- else if (strcmp(f->hmf_name, "icon") == 0) {
+ else if (strcmp(htsmsg_field_name(f), "icon") == 0) {
if ((attribs = htsmsg_get_map(subtag, "attrib")) != NULL &&
(icon = htsmsg_get_str(attribs, "src")) != NULL) {
save |= epggrab_channel_set_icon(ch, icon);
HTSMSG_FOREACH(f, tags) {
save = 0;
- if(!strcmp(f->hmf_name, "channel")) {
+ if(!strcmp(htsmsg_field_name(f), "channel")) {
pthread_mutex_lock(&global_lock);
save = _xmltv_parse_channel(mod, htsmsg_get_map_by_field(f), stats);
pthread_mutex_unlock(&global_lock);
- } else if(!strcmp(f->hmf_name, "programme")) {
+ } else if(!strcmp(htsmsg_field_name(f), "programme")) {
pthread_mutex_lock(&global_lock);
save = _xmltv_parse_programme(mod, htsmsg_get_map_by_field(f), stats);
if (save) epg_updated();
if ((c = hts_settings_load_r(1, "epggrab/otamux"))) {
HTSMSG_FOREACH(f, c) {
if (!(m = htsmsg_field_get_map(f))) continue;
- epggrab_ota_load_one(f->hmf_name, m);
+ epggrab_ota_load_one(htsmsg_field_name(f), m);
}
htsmsg_destroy(c);
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f)))
continue;
- esfilter_create(-1, f->hmf_name, e, 0);
+ esfilter_create(-1, htsmsg_field_name(f), e, 0);
}
htsmsg_destroy(c);
size_t nsize;
htsmsg_field_t *f;
- nsize = name ? strlen(name) + 1 : 1;
- f = malloc(sizeof(htsmsg_field_t) + nsize + esize);
- if(f == NULL)
- return NULL;
- TAILQ_INSERT_TAIL(&msg->hm_fields, f, hmf_link);
-
- if(msg->hm_islist) {
+ if (msg->hm_islist) {
assert(name == NULL || *name == '\0');
+ name = NULL;
+ flags |= HMF_NONAME;
} else {
assert(name != NULL);
}
- if (name) {
- strcpy((char *)f->hmf_name, name);
- } else {
- ((char *)f->hmf_name)[0] = '\0';
- }
+ nsize = name ? htsmsg_malloc_align(type, strlen(name) + 1) : 0;
+ f = malloc(sizeof(htsmsg_field_t) + nsize + esize);
+ if (f == NULL)
+ return NULL;
+ TAILQ_INSERT_TAIL(&msg->hm_fields, f, hmf_link);
+
+ if (name)
+ strcpy((char *)f->_hmf_name, name);
- if(esize) {
+ if (esize) {
if(type == HMF_STR) {
- f->hmf_str = f->hmf_name + nsize;
+ f->hmf_str = f->_hmf_name + nsize;
} else if(type == HMF_UUID) {
- f->hmf_uuid = (uint8_t *)f->hmf_name + nsize;
+ f->hmf_uuid = (uint8_t *)f->_hmf_name + nsize;
} else if(type == HMF_LIST || type == HMF_MAP) {
- f->hmf_msg = (htsmsg_t *)(f->hmf_name + nsize);
+ f->hmf_msg = (htsmsg_t *)(f->_hmf_name + nsize);
} else if(type == HMF_BIN) {
- f->hmf_bin = f->hmf_name + nsize;
+ f->hmf_bin = f->_hmf_name + nsize;
f->hmf_binsize = esize;
}
}
if (msg == NULL || name == NULL)
return NULL;
TAILQ_FOREACH(f, &msg->hm_fields, hmf_link) {
- if(!strcmp(f->hmf_name, name))
+ if(!strcmp(htsmsg_field_name(f), name))
return f;
}
return NULL;
for(i = 0; i < indent; i++) printf("\t");
- printf("%s (", f->hmf_name);
+ printf("%s (", htsmsg_field_name(f));
switch(f->hmf_type) {
htsmsg_field_t *f;
TAILQ_FOREACH(f, &src->hm_fields, hmf_link)
- htsmsg_copy_f(dst, f, f->hmf_name);
+ htsmsg_copy_f(dst, f, htsmsg_field_name(f));
}
htsmsg_t *
if (f1->hmf_type != f2->hmf_type)
return 1;
- if (strcmp(f1->hmf_name, f2->hmf_name))
+ if (strcmp(htsmsg_field_name(f1), htsmsg_field_name(f2)))
return 1;
switch(f1->hmf_type) {
{
if(f->hmf_type != HMF_MAP)
return NULL;
- if(strcmp(f->hmf_name, name))
+ if(strcmp(htsmsg_field_name(f), name))
return NULL;
return f->hmf_msg;
}
#define HMF_ALLOCED 0x1
#define HMF_INALLOCED 0x2
+#define HMF_NONAME 0x4
union {
int64_t s64;
#if ENABLE_SLOW_MEMORYINFO
size_t hmf_edata_size;
#endif
- const char hmf_name[0];
+ const char _hmf_name[0];
} htsmsg_field_t;
#define hmf_s64 u.s64
#define HTSMSG_FIRST(msg) TAILQ_FIRST(&(msg)->hm_fields)
#define HTSMSG_NEXT(f) TAILQ_NEXT(f, hmf_link)
+/**
+ * Aligned memory allocation
+ */
+static inline size_t htsmsg_malloc_align(int type, size_t len)
+{
+ if (type == HMF_LIST || type == HMF_MAP)
+ return (len + (size_t)7) & ~(size_t)7;
+ return len;
+}
+
+/**
+ * Get a field name
+ */
+static inline const char *htsmsg_field_name(htsmsg_field_t *f)
+{
+ if (f->hmf_flags & HMF_NONAME) return "";
+ return f->_hmf_name;
+}
+
/**
* Create a new map
*/
if(len < namelen + datalen)
return -1;
- nlen = namelen ? namelen + 1 : 1;
+ nlen = namelen ? htsmsg_malloc_align(type, namelen + 1) : 0;
tlen = sizeof(htsmsg_field_t) + nlen;
if (type == HMF_STR) {
tlen += datalen + 1;
f->hmf_flags = 0;
if(namelen > 0) {
- memcpy((char *)f->hmf_name, buf, namelen);
- ((char *)f->hmf_name)[namelen] = 0;
+ memcpy((char *)f->_hmf_name, buf, namelen);
+ ((char *)f->_hmf_name)[namelen] = 0;
buf += namelen;
len -= namelen;
} else {
- ((char *)f->hmf_name)[0] = '\0';
+ f->hmf_flags = HMF_NONAME;
}
switch(type) {
case HMF_STR:
- f->hmf_str = f->hmf_name + nlen;
+ f->hmf_str = f->_hmf_name + nlen;
memcpy((char *)f->hmf_str, buf, datalen);
((char *)f->hmf_str)[datalen] = 0;
f->hmf_flags |= HMF_INALLOCED;
break;
case HMF_UUID:
- f->hmf_uuid = (uint8_t *)f->hmf_name + nlen;
+ f->hmf_uuid = (uint8_t *)f->_hmf_name + nlen;
memcpy((char *)f->hmf_uuid, buf, UUID_BIN_SIZE);
break;
case HMF_MAP:
case HMF_LIST:
- sub = f->hmf_msg = (htsmsg_t *)(f->hmf_name + nlen);
+ sub = f->hmf_msg = (htsmsg_t *)(f->_hmf_name + nlen);
TAILQ_INIT(&sub->hm_fields);
sub->hm_data = NULL;
sub->hm_data_size = 0;
TAILQ_FOREACH(f, &msg->hm_fields, hmf_link) {
- len += 6 + strlen(f->hmf_name);
+ len += 6 + strlen(htsmsg_field_name(f));
switch(f->hmf_type) {
case HMF_MAP:
int l, i, namelen;
TAILQ_FOREACH(f, &msg->hm_fields, hmf_link) {
- namelen = strlen(f->hmf_name);
+ namelen = strlen(htsmsg_field_name(f));
*ptr++ = f->hmf_type;
*ptr++ = namelen;
*ptr++ = l;
if(namelen > 0) {
- memcpy(ptr, f->hmf_name, namelen);
+ memcpy(ptr, f->_hmf_name, namelen);
ptr += namelen;
}
if(len < namelen + datalen)
return -1;
- nlen = namelen ? namelen + 1 : 1;
+ nlen = namelen ? htsmsg_malloc_align(type, namelen + 1) : 0;
tlen = sizeof(htsmsg_field_t) + nlen;
if (type == HMF_STR) {
tlen += datalen + 1;
f->hmf_flags = 0;
if(namelen > 0) {
- memcpy((char *)f->hmf_name, buf, namelen);
- ((char *)f->hmf_name)[namelen] = 0;
+ memcpy((char *)f->_hmf_name, buf, namelen);
+ ((char *)f->_hmf_name)[namelen] = 0;
buf += namelen;
len -= namelen;
} else {
- ((char *)f->hmf_name)[0] = '\0';
+ f->hmf_flags |= HMF_NONAME;
}
switch(type) {
case HMF_STR:
- f->hmf_str = f->hmf_name + nlen;
+ f->hmf_str = f->_hmf_name + nlen;
memcpy((char *)f->hmf_str, buf, datalen);
((char *)f->hmf_str)[datalen] = 0;
f->hmf_flags |= HMF_INALLOCED;
break;
case HMF_UUID:
- f->hmf_uuid = (uint8_t *)f->hmf_name + nlen;
+ f->hmf_uuid = (uint8_t *)f->_hmf_name + nlen;
memcpy((char *)f->hmf_uuid, buf, UUID_BIN_SIZE);
break;
case HMF_MAP:
case HMF_LIST:
- sub = f->hmf_msg = (htsmsg_t *)(f->hmf_name + nlen);
+ sub = f->hmf_msg = (htsmsg_t *)(f->_hmf_name + nlen);
TAILQ_INIT(&sub->hm_fields);
sub->hm_data = NULL;
sub->hm_data_size = 0;
TAILQ_FOREACH(f, &msg->hm_fields, hmf_link) {
l = htsmsg_binary2_field_length(f);
len += 2 + htsmsg_binary2_length_count(l);
- len += strlen(f->hmf_name);
+ len += strlen(htsmsg_field_name(f));
len += l;
}
return len;
int l, i, namelen;
TAILQ_FOREACH(f, &msg->hm_fields, hmf_link) {
- namelen = strlen(f->hmf_name);
+ namelen = strlen(htsmsg_field_name(f));
assert(namelen <= 0xff);
*ptr++ = f->hmf_type;
*ptr++ = namelen;
ptr = htsmsg_binary2_set_length(ptr, l);
if(namelen > 0) {
- memcpy(ptr, f->hmf_name, namelen);
+ memcpy(ptr, f->_hmf_name, namelen);
ptr += namelen;
}
htsbuf_append(hq, indentor, indent < 16 ? indent : 16);
if(!isarray) {
- htsbuf_append_and_escape_jsonstr(hq, f->hmf_name);
+ htsbuf_append_and_escape_jsonstr(hq, htsmsg_field_name(f));
htsbuf_append(hq, ": ", pretty ? 2 : 1);
}
if ((m = hts_settings_load("imagecache/meta"))) {
HTSMSG_FOREACH(f, m) {
if (!(e = htsmsg_get_map_by_field(f))) continue;
- if (!(id = atoi(f->hmf_name))) continue;
+ if (!(id = atoi(htsmsg_field_name(f)))) continue;
if (!(url = htsmsg_get_str(e, "url"))) continue;
img = calloc(1, sizeof(imagecache_image_t));
img->id = id;
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_get_map_by_field(f))) continue;
if (!(e = htsmsg_get_map(e, "config"))) continue;
- im = iptv_mux_create0(in, f->hmf_name, e);
+ im = iptv_mux_create0(in, htsmsg_field_name(f), e);
mpegts_mux_post_create((mpegts_mux_t *)im);
}
htsmsg_destroy(c);
if (!(e = htsmsg_get_map_by_field(f))) continue;
if (!(e = htsmsg_get_map(e, "config"))) continue;
if (htsmsg_get_str(e, "url"))
- iptv_network_create0(f->hmf_name, e, &iptv_auto_network_class);
+ iptv_network_create0(htsmsg_field_name(f), e, &iptv_auto_network_class);
else
- iptv_network_create0(f->hmf_name, e, &iptv_network_class);
+ iptv_network_create0(htsmsg_field_name(f), e, &iptv_network_class);
}
htsmsg_destroy(c);
}
if (c) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- (void)iptv_service_create0(im, 0, 0, f->hmf_name, e);
+ (void)iptv_service_create0(im, 0, 0, htsmsg_field_name(f), e);
}
} else if (in->in_service_id) {
conf = htsmsg_create_map();
if (c) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_get_map_by_field(f))) continue;
- mpegts_service_create1(f->hmf_name, (mpegts_mux_t *)lm, 0, 0, e);
+ mpegts_service_create1(htsmsg_field_name(f), (mpegts_mux_t *)lm, 0, 0, e);
}
htsmsg_destroy(c2);
}
if ((c = hts_settings_load_r(1, "muxsched"))) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
- mpegts_mux_sched_create(f->hmf_name, e);
+ mpegts_mux_sched_create(htsmsg_field_name(f), e);
}
htsmsg_destroy(c);
}
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_get_map_by_field(f))) continue;
if (!(e = htsmsg_get_map(e, "config"))) continue;
- lm = dvb_mux_create1(ln, f->hmf_name, e);
+ lm = dvb_mux_create1(ln, htsmsg_field_name(f), e);
mpegts_mux_post_create((mpegts_mux_t *)lm);
}
htsmsg_destroy(c);
if (strcmp(s, "dvb_network_atsc") == 0)
s = "dvb_network_atsc_t";
if(!strcmp(dvb_network_classes[i]->ic_class, s)) {
- dvb_network_create0(f->hmf_name, dvb_network_classes[i], e);
+ dvb_network_create0(htsmsg_field_name(f), dvb_network_classes[i], e);
break;
}
}
if (ret) {
HTSMSG_FOREACH(f, map) {
if ((str = htsmsg_field_get_string(f))) {
- lang_str_add(ret, str, f->hmf_name);
+ lang_str_add(ret, str, htsmsg_field_name(f));
}
}
}
pthread_mutex_lock(&global_lock);
HTSMSG_FOREACH(f, q)
- notify_by_msg(f->hmf_name, htsmsg_detach_submsg(f), 0);
+ notify_by_msg(htsmsg_field_name(f), htsmsg_detach_submsg(f), 0);
/* Finished */
pthread_mutex_unlock(&global_lock);
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f)))
continue;
- (void)profile_create(f->hmf_name, e, 0);
+ (void)profile_create(htsmsg_field_name(f), e, 0);
}
htsmsg_destroy(c);
}
total++;
if (!htsmsg_field_get_bool(f, &b)) {
if (b > 0) {
- p = prop_find(pl, f->hmf_name);
+ p = prop_find(pl, htsmsg_field_name(f));
if (p)
prop_read_value(obj, p, m, p->id, optmask, lang);
count++;
if (total && !count) {
for (; pl->id; pl++) {
HTSMSG_FOREACH(f, list)
- if (!strcmp(pl->id, f->hmf_name))
+ if (!strcmp(pl->id, htsmsg_field_name(f)))
break;
if (f == NULL)
prop_read_value(obj, pl, m, pl->id, optmask, lang);
HTSMSG_FOREACH(f, list) {
total++;
if (!htsmsg_field_get_bool(f, &b) && b > 0) {
- p = prop_find(pl, f->hmf_name);
+ p = prop_find(pl, htsmsg_field_name(f));
if (p)
prop_serialize_value(obj, p, msg, optmask, lang);
count++;
if (total && !count) {
for (; pl->id; pl++) {
HTSMSG_FOREACH(f, list)
- if (!strcmp(pl->id, f->hmf_name))
+ if (!strcmp(pl->id, htsmsg_field_name(f)))
break;
if (f == NULL)
prop_serialize_value(obj, pl, msg, optmask, lang);
const char *name = NULL;
if ((conf = htsmsg_field_get_map(config)) &&
- tvh_codec_profile_create(conf, config->hmf_name, 0)) {
+ tvh_codec_profile_create(conf, htsmsg_field_name(config), 0)) {
tvherror(LS_CODEC, "unable to load codec profile: '%s'",
(name = htsmsg_get_str(conf, "name")) ? name : "<unknown>");
}
htsmsg_field_t *f;
HTSMSG_FOREACH(f, ebc->credits) {
htsbuf_qprintf(hq, " <%s>", f->u.str);
- htsbuf_append_and_escape_xml(hq, f->hmf_name);
+ htsbuf_append_and_escape_xml(hq, htsmsg_field_name(f));
htsbuf_qprintf(hq, "</%s>\n", f->u.str);
}
htsbuf_append_str(hq, " </credits>\n");