idnode_set_t *is;
idnode_t *in;
access_entry_t *ae;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
l = htsmsg_create_list();
ae = (access_entry_t *)in;
if (ae->ae_username != NULL && ae->ae_username[0] != '\0' &&
- ae->ae_username[0] != '*') {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", ae->ae_username);
- htsmsg_add_str(e, "val", ae->ae_username);
- htsmsg_add_msg(l, NULL, e);
- }
+ ae->ae_username[0] != '*')
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(ae->ae_username, ae->ae_username));
idnode_perm_unset(in);
}
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
bouquet_t *bq;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
char ubuf[UUID_HEX_SIZE];
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
- RB_FOREACH(bq, &bouquets, bq_link) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", idnode_uuid_as_str(&bq->bq_id, ubuf));
- htsmsg_add_str(e, "val", bq->bq_name ?: "");
- htsmsg_add_msg(l, NULL, e);
- }
+ RB_FOREACH(bq, &bouquets, bq_link)
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(idnode_uuid_as_str(&bq->bq_id, ubuf), bq->bq_name ?: ""));
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
htsmsg_add_msg(*resp, "entries", l);
#include "access.h"
#include "api.h"
-static void
-api_channel_key_val(htsmsg_t *dst, const char *key, const char *val)
-{
- htsmsg_t *e = htsmsg_create_map();
- htsmsg_add_str(e, "key", key);
- htsmsg_add_str(e, "val", val ?: "");
- htsmsg_add_msg(dst, NULL, e);
-}
-
static int
api_channel_is_all(access_t *perm, htsmsg_t *args)
{
htsmsg_t *l;
int cfg = api_channel_is_all(perm, args);
char buf[128], ubuf[UUID_HEX_SIZE];
+ const char *name;
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
if (!cfg && !channel_access(ch, perm, 0)) continue;
if (!ch->ch_enabled) {
snprintf(buf, sizeof(buf), "{%s}", channel_get_name(ch));
- api_channel_key_val(l, idnode_uuid_as_str(&ch->ch_id, ubuf), buf);
+ name =buf;
} else {
- api_channel_key_val(l, idnode_uuid_as_str(&ch->ch_id, ubuf), channel_get_name(ch));
+ name = channel_get_name(ch);
}
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(idnode_uuid_as_str(&ch->ch_id, ubuf), name));
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
channel_tag_t *ct;
htsmsg_t *l;
int cfg = api_channel_is_all(perm, args);
- char buf[128], ubuf[UUID_HEX_SIZE];
+ char buf[128], ubuf[UUID_HEX_SIZE], *name;
l = htsmsg_create_list();
pthread_mutex_lock(&global_lock);
TAILQ_FOREACH(ct, &channel_tags, ct_link)
if (cfg || channel_tag_access(ct, perm, 0)) {
if (ct->ct_enabled) {
- api_channel_key_val(l, idnode_uuid_as_str(&ct->ct_id, ubuf), ct->ct_name);
+ name = ct->ct_name;
} else {
snprintf(buf, sizeof(buf), "{%s}", ct->ct_name);
- api_channel_key_val(l, idnode_uuid_as_str(&ct->ct_id, ubuf), buf);
+ name = buf;
}
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(idnode_uuid_as_str(&ct->ct_id, ubuf), name));
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
/* Name/UUID only */
if (_enum) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", idnode_uuid_as_str(in, ubuf));
- htsmsg_add_str(e, "val", idnode_get_title(in, perm->aa_lang_ui));
+ e = htsmsg_create_key_val(idnode_uuid_as_str(in, ubuf),
+ idnode_get_title(in, perm->aa_lang_ui));
/* Full record */
} else {
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const char **chrst;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
l = htsmsg_create_list();
chrst = intlconv_charsets;
while (*chrst) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", *chrst);
- htsmsg_add_str(e, "val", *chrst);
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(*chrst, *chrst));
chrst++;
}
*resp = htsmsg_create_map();
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const lang_code_t *c = lang_codes;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
l = htsmsg_create_list();
while (c->code2b) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", c->code2b);
- htsmsg_add_str(e, "val", c->desc);
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(c->code2b, c->desc));
c++;
}
*resp = htsmsg_create_map();
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp, int all )
{
const lang_code_t *c = lang_codes;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
const char *s;
char buf1[8];
char buf2[128];
l = htsmsg_create_list();
while (c->code2b) {
- if (all || tvh_gettext_langcode_valid(c->code2b)) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", c->code2b);
- htsmsg_add_str(e, "val", c->desc);
- htsmsg_add_msg(l, NULL, e);
- }
+ if (all || tvh_gettext_langcode_valid(c->code2b))
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(c->code2b, c->desc));
s = c->locale;
while (s && *s) {
if (*s == '|')
snprintf(buf1, sizeof(buf1), "%s_%c%c", c->code2b, s[0], s[1]);
if (all || tvh_gettext_langcode_valid(buf1)) {
snprintf(buf2, sizeof(buf2), "%s (%c%c)", c->desc, s[0], s[1]);
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", buf1);
- htsmsg_add_str(e, "val", buf2);
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(buf1, buf2));
}
s += 2;
}
if ((is = mi->mi_network_list(mi))) {
for (i = 0; i < is->is_count; i++) {
char buf[256];
- htsmsg_t *e = htsmsg_create_map();
mn = (mpegts_network_t*)is->is_array[i];
- htsmsg_add_str(e, "key", idnode_uuid_as_str(is->is_array[i], ubuf));
mn->mn_display_name(mn, buf, sizeof(buf));
- htsmsg_add_str(e, "val", buf);
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(idnode_uuid_as_str(&mn->mn_id, ubuf), buf));
}
idnode_set_free(is);
}
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
profile_t *pro;
- htsmsg_t *l, *e;
+ htsmsg_t *l;
int cfg = api_profile_is_all(perm, args);
int sflags = htsmsg_get_bool_or_default(args, "htsp", 0) ? SUBSCRIPTION_HTSP : 0;
char ubuf[UUID_HEX_SIZE];
idnode_uuid_as_str(&pro->pro_id, ubuf);
if (!cfg && (!profile_verify(pro, sflags) || !api_profile_find(perm, ubuf)))
continue;
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", ubuf);
- htsmsg_add_str(e, "val", profile_get_name(pro));
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(ubuf, profile_get_name(pro)));
}
pthread_mutex_unlock(&global_lock);
*resp = htsmsg_create_map();
config_class_info_area_list1 ( htsmsg_t *m, const char *key,
const char *val, const char *lang )
{
- htsmsg_t *e = htsmsg_create_map();
- htsmsg_add_str(e, "key", key);
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, val));
+ htsmsg_t *e = htsmsg_create_key_val(key, tvh_gettext_lang(lang, val));
htsmsg_add_msg(m, NULL, e);
}
char buf[128];
while (lc->code2b) {
- htsmsg_t *e = htsmsg_create_map();
+ htsmsg_t *e;
if (!strcmp(lc->code2b, "und")) {
- htsmsg_add_str(e, "key", "");
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, any));
+ e = htsmsg_create_key_val("", tvh_gettext_lang(lang, any));
} else {
- htsmsg_add_str(e, "key", lc->code2b);
snprintf(buf, sizeof(buf), "%s (%s)", lc->desc, lc->code2b);
buf[sizeof(buf)-1] = '\0';
- htsmsg_add_str(e, "val", buf);
+ e = htsmsg_create_key_val(lc->code2b, buf);
}
htsmsg_add_msg(l, NULL, e);
lc++;
static htsmsg_t *
esfilter_build_ca_enum(int provider)
{
- htsmsg_t *e, *l;
+ htsmsg_t *l;
uint32_t *a = alloca(sizeof(uint32_t) * MAX_ITEMS);
char buf[16], buf2[128];
service_t *s;
l = htsmsg_create_list();
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", provider ? "ffffff" : "ffff");
- htsmsg_add_str(e, "val", "ANY");
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(provider ? "ffffff" : "ffff", "ANY"));
for (i = 0; i < count; i++) {
- e = htsmsg_create_map();
snprintf(buf, sizeof(buf), provider ? "%06x" : "%04x", a[i]);
if (!provider)
snprintf(buf2, sizeof(buf2), "%04x - %s",
a[i], caid2name(a[i]));
- htsmsg_add_str(e, "key", buf);
- htsmsg_add_str(e, "val", provider ? buf : buf2);
- htsmsg_add_msg(l, NULL, e);
+ htsmsg_add_msg(l, NULL, htsmsg_create_key_val(buf, provider ? buf : buf2));
}
return l;
uint32_t i;
htsmsg_t *e, *l = htsmsg_create_list();
for (i = 0; i < n; i++) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", tab[i].val);
- htsmsg_add_str(e, "val", i18n ? tvh_gettext_lang(lang, tab[i].str) : tab[i].str);
+ e = htsmsg_create_key_val(tab[i].val, i18n ? tvh_gettext_lang(lang, tab[i].str) : tab[i].str);
htsmsg_add_msg(l, NULL, e);
}
return l;
}
return m;
}
+
+/*
+ *
+ */
+htsmsg_t *
+htsmsg_create_key_val(const char *key, const char *val)
+{
+ htsmsg_t *r = htsmsg_create_map();
+ if (r) {
+ htsmsg_add_str(r, "key", key);
+ htsmsg_add_str(r, "val", val);
+ }
+ return r;
+}
htsmsg_t *htsmsg_csv_2_list(const char *str, char delim);
+htsmsg_t *htsmsg_create_key_val(const char *key, const char *val);
+
/**
*
*/
htsmsg_t *l = htsmsg_create_list(), *m;
for (; options->id; options++) {
- m = htsmsg_create_map();
- htsmsg_add_str(m, "key", options->id);
- htsmsg_add_str(m, "val", tvh_gettext_lang(lang, options->name));
+ m = htsmsg_create_key_val(options->id, tvh_gettext_lang(lang, options->name));
htsmsg_add_msg(l, NULL, m);
}
return l;
return m;
}
-static htsmsg_t *
+htsmsg_t *
linuxdvb_en50494_pin_list ( void *o, const char *lang )
{
int32_t i;
char ubuf[UUID_HEX_SIZE];
htsmsg_t *m = htsmsg_create_list();
if (self == NULL) return m;
- htsmsg_t *e = htsmsg_create_map();
- htsmsg_add_str(e, "key", "");
- htsmsg_add_str(e, "val", N_("This tuner"));
+ htsmsg_t *e = htsmsg_create_key_val("", N_("This tuner"));
htsmsg_add_msg(m, NULL, e);
LIST_FOREACH(th, &tvh_hardware, th_link) {
if (!idnode_is_instance(&th->th_id, &linuxdvb_adapter_class)) continue;
la = (linuxdvb_adapter_t*)th;
LIST_FOREACH(lfe2, &la->la_frontends, lfe_link) {
if (lfe2 != lfe && lfe2->lfe_type == lfe->lfe_type) {
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", idnode_uuid_as_str(&lfe2->ti_id, ubuf));
- htsmsg_add_str(e, "val", lfe2->mi_name);
+ e = htsmsg_create_key_val(idnode_uuid_as_str(&lfe2->ti_id, ubuf), lfe2->mi_name);
htsmsg_add_msg(m, NULL, e);
}
}
return &prop_sbuf_ptr;
}
-static void
-mpegts_input_add_keyval(htsmsg_t *l, const char *key, const char *val)
-{
- htsmsg_t *e = htsmsg_create_map();
- htsmsg_add_str(e, "key", key);
- htsmsg_add_str(e, "val", val);
- htsmsg_add_msg(l, NULL, e);
-}
-
static htsmsg_t *
mpegts_input_class_linked_enum( void * self, const char *lang )
{
tvh_input_t *ti;
char ubuf[UUID_HEX_SIZE];
htsmsg_t *m = htsmsg_create_list();
- mpegts_input_add_keyval(m, "", tvh_gettext_lang(lang, N_("Not linked")));
+ htsmsg_t *e = htsmsg_create_key_val("", tvh_gettext_lang(lang, N_("Not linked")));
+ htsmsg_add_msg(m, NULL, e);
TVH_INPUT_FOREACH(ti)
if (idnode_is_instance(&ti->ti_id, &mpegts_input_class)) {
mi2 = (mpegts_input_t *)ti;
- if (mi2 != mi)
- mpegts_input_add_keyval(m, idnode_uuid_as_str(&ti->ti_id, ubuf),
- idnode_get_title(&mi2->ti_id, lang));
+ if (mi2 != mi) {
+ e = htsmsg_create_key_val(idnode_uuid_as_str(&ti->ti_id, ubuf),
+ idnode_get_title(&mi2->ti_id, lang));
+ htsmsg_add_msg(m, NULL, e);
+ }
}
return m;
}
int i;\
htsmsg_t *m = htsmsg_create_list(), *e;\
for (i = 0; i < ARRAY_SIZE(t); i++) {\
- e = htsmsg_create_map(); \
- htsmsg_add_str(e, "key", dvb_##t##2str(t[i]));\
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, dvb_##t##2str(t[i])));\
+ e = htsmsg_create_key_val(dvb_##t##2str(t[i]), tvh_gettext_lang(lang, dvb_##t##2str(t[i]))); \
htsmsg_add_msg(m, NULL, e);\
}\
return m;\
int i;\
htsmsg_t *m = htsmsg_create_list(), *e;\
for (i = 0; i < ARRAY_SIZE(t); i++) {\
- e = htsmsg_create_map(); \
- htsmsg_add_str(e, "key", dvb_##t##2str(t[i]));\
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, dvb_##t##2str(t[i])));\
+ e = htsmsg_create_key_val(dvb_##t##2str(t[i]), tvh_gettext_lang(lang, dvb_##t##2str(t[i]))); \
htsmsg_add_msg(m, NULL, e);\
}\
return m;\
mi->mi_display_name(mi, buf, sizeof(buf));
htsmsg_add_str(m, "input_name", buf);
l = htsmsg_create_list();
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", idc->ic_class);
- htsmsg_add_str(e, "val", idclass_get_caption(idc, lang));
+ e = htsmsg_create_key_val(idc->ic_class, idclass_get_caption(idc, lang));
htsmsg_add_msg(l, NULL, e);
htsmsg_add_msg(m, "mpegts_network_types", l);
if (mn)
char buf[128];
while (lc->code2b) {
- htsmsg_t *e = htsmsg_create_map();
+ htsmsg_t *e;
if (!strcmp(lc->code2b, "und")) {
- htsmsg_add_str(e, "key", "");
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, N_("Use original")));
+ e = htsmsg_create_key_val("", tvh_gettext_lang(lang, N_("Use original")));
} else {
- htsmsg_add_str(e, "key", lc->code2b);
snprintf(buf, sizeof(buf), "%s (%s)", lc->desc, lc->code2b);
buf[sizeof(buf)-1] = '\0';
- htsmsg_add_str(e, "val", buf);
+ e = htsmsg_create_key_val(lc->code2b, buf);
}
htsmsg_add_msg(l, NULL, e);
lc++;
char buf[128];
int sct;
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", "");
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, N_("Do not use")));
+ e = htsmsg_create_key_val("", tvh_gettext_lang(lang, N_("Do not use")));
htsmsg_add_msg(l, NULL, e);
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", "copy");
- htsmsg_add_str(e, "val", tvh_gettext_lang(lang, N_("Copy codec type")));
+ e = htsmsg_create_key_val("copy", tvh_gettext_lang(lang, N_("Copy codec type")));
htsmsg_add_msg(l, NULL, e);
c = transcoder_get_capabilities(profile_transcode_experimental_codecs);
HTSMSG_FOREACH(f, c) {
snprintf(buf, sizeof(buf), "%s: %s", s, s2);
else
snprintf(buf, sizeof(buf), "%s", s);
- e = htsmsg_create_map();
- htsmsg_add_str(e, "key", s);
- htsmsg_add_str(e, "val", buf);
+ e = htsmsg_create_key_val(s, buf);
htsmsg_add_msg(l, NULL, e);
}
htsmsg_destroy(c);
if (ifnames) {
struct if_nameindex *ifname;
- for (ifname = ifnames; ifname->if_name; ifname++) {
- htsmsg_t *entry = htsmsg_create_map();
- htsmsg_add_str(entry, "key", ifname->if_name);
- htsmsg_add_str(entry, "val", ifname->if_name);
- htsmsg_add_msg(list, NULL, entry);
- }
+ for (ifname = ifnames; ifname->if_name; ifname++)
+ htsmsg_add_msg(list, NULL, htsmsg_create_key_val(ifname->if_name, ifname->if_name));
if_freenameindex(ifnames);
}