Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
htsmsg: add htsmsg_create_key_val() fcn
  • Loading branch information
perexg committed Sep 20, 2016
1 parent 766f2fd commit b1bb554
Show file tree
Hide file tree
Showing 21 changed files with 73 additions and 133 deletions.
10 changes: 3 additions & 7 deletions src/api/api_access.c
Expand Up @@ -97,7 +97,7 @@ api_access_entry_userlist
idnode_set_t *is;
idnode_t *in;
access_entry_t *ae;
htsmsg_t *l, *e;
htsmsg_t *l;

l = htsmsg_create_list();

Expand All @@ -113,12 +113,8 @@ api_access_entry_userlist

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);
}
Expand Down
10 changes: 3 additions & 7 deletions src/api/api_bouquet.c
Expand Up @@ -30,17 +30,13 @@ api_bouquet_list
( 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);
Expand Down
22 changes: 8 additions & 14 deletions src/api/api_channel.c
Expand Up @@ -25,15 +25,6 @@
#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)
{
Expand All @@ -50,17 +41,19 @@ api_channel_list
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);
CHANNEL_FOREACH(ch) {
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();
Expand Down Expand Up @@ -107,18 +100,19 @@ api_channel_tag_list
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();
Expand Down
5 changes: 2 additions & 3 deletions src/api/api_idnode.c
Expand Up @@ -196,9 +196,8 @@ api_idnode_load_by_class0

/* 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 {
Expand Down
7 changes: 2 additions & 5 deletions src/api/api_intlconv.c
Expand Up @@ -30,15 +30,12 @@ api_intlconv_charset_enum
( 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();
Expand Down
22 changes: 6 additions & 16 deletions src/api/api_language.c
Expand Up @@ -30,14 +30,11 @@ api_language_enum
( 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();
Expand All @@ -50,19 +47,15 @@ _api_language_locale_enum
( 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 == '|')
Expand All @@ -72,10 +65,7 @@ _api_language_locale_enum
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;
}
Expand Down
5 changes: 1 addition & 4 deletions src/api/api_mpegts.c
Expand Up @@ -54,12 +54,9 @@ api_mpegts_input_network_list
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);
}
Expand Down
7 changes: 2 additions & 5 deletions src/api/api_profile.c
Expand Up @@ -58,7 +58,7 @@ api_profile_list
( 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];
Expand All @@ -70,10 +70,7 @@ api_profile_list
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();
Expand Down
4 changes: 1 addition & 3 deletions src/config.c
Expand Up @@ -1865,9 +1865,7 @@ static void
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);
}

Expand Down
20 changes: 6 additions & 14 deletions src/esfilter.c
Expand Up @@ -372,15 +372,13 @@ esfilter_class_language_enum(void *o, const char *lang)
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++;
Expand Down Expand Up @@ -441,7 +439,7 @@ esfilter_build_ca_cmp(const void *_a, const void *_b)
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;
Expand Down Expand Up @@ -469,20 +467,14 @@ esfilter_build_ca_enum(int provider)

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;

Expand Down
4 changes: 1 addition & 3 deletions src/hts_strtab.h
Expand Up @@ -128,9 +128,7 @@ strtab2htsmsg0_str(const struct strtab_str tab[], uint32_t n, int i18n, const ch
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;
Expand Down
14 changes: 14 additions & 0 deletions src/htsmsg.c
Expand Up @@ -1274,3 +1274,17 @@ htsmsg_csv_2_list(const char *str, char delim)
}
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;
}
2 changes: 2 additions & 0 deletions src/htsmsg.h
Expand Up @@ -427,6 +427,8 @@ char *htsmsg_list_2_csv(htsmsg_t *m, char delim, int human);

htsmsg_t *htsmsg_csv_2_list(const char *str, char delim);

htsmsg_t *htsmsg_create_key_val(const char *key, const char *val);

/**
*
*/
Expand Down
4 changes: 1 addition & 3 deletions src/idnode.c
Expand Up @@ -1513,9 +1513,7 @@ idnode_slist_enum ( idnode_t *in, idnode_slist_t *options, const char *lang )
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;
Expand Down
2 changes: 1 addition & 1 deletion src/input/mpegts/linuxdvb/linuxdvb_en50494.c
Expand Up @@ -111,7 +111,7 @@ linuxdvb_en50607_id_list ( void *o, const char *lang )
return m;
}

static htsmsg_t *
htsmsg_t *
linuxdvb_en50494_pin_list ( void *o, const char *lang )
{
int32_t i;
Expand Down
8 changes: 2 additions & 6 deletions src/input/mpegts/linuxdvb/linuxdvb_frontend.c
Expand Up @@ -243,18 +243,14 @@ linuxdvb_frontend_dvbs_class_master_enum( void * self, const char *lang )
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);
}
}
Expand Down

0 comments on commit b1bb554

Please sign in to comment.