Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
settings: merge mux config / service config into one file
  • Loading branch information
perexg committed Feb 11, 2016
1 parent 8097f96 commit 68958ae
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 61 deletions.
17 changes: 10 additions & 7 deletions src/input/mpegts/iptv/iptv_mux.c
Expand Up @@ -268,7 +268,7 @@ iptv_mux_config_save ( mpegts_mux_t *mm, char *filename, size_t fsize )
char ubuf2[UUID_HEX_SIZE];
htsmsg_t *c = htsmsg_create_map();
mpegts_mux_save(mm, c);
snprintf(filename, fsize, "input/iptv/networks/%s/muxes/%s/config",
snprintf(filename, fsize, "input/iptv/networks/%s/muxes/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf1),
idnode_uuid_as_str(&mm->mm_id, ubuf2));
return c;
Expand All @@ -282,7 +282,7 @@ iptv_mux_delete ( mpegts_mux_t *mm, int delconf )
char ubuf2[UUID_HEX_SIZE];

if (delconf)
hts_settings_remove("input/iptv/networks/%s/muxes/%s/config",
hts_settings_remove("input/iptv/networks/%s/muxes/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf1),
idnode_uuid_as_str(&mm->mm_id, ubuf2));

Expand Down Expand Up @@ -321,7 +321,7 @@ iptv_mux_display_name ( mpegts_mux_t *mm, char *buf, size_t len )
iptv_mux_t *
iptv_mux_create0 ( iptv_network_t *in, const char *uuid, htsmsg_t *conf )
{
htsmsg_t *c, *e;
htsmsg_t *c, *c2, *e;
htsmsg_field_t *f;
iptv_service_t *ms;
char ubuf1[UUID_HEX_SIZE];
Expand All @@ -348,9 +348,12 @@ iptv_mux_create0 ( iptv_network_t *in, const char *uuid, htsmsg_t *conf )
(mpegts_mux_t*)im);

/* Services */
c = hts_settings_load_r(1, "input/iptv/networks/%s/muxes/%s/services",
idnode_uuid_as_str(&in->mn_id, ubuf1),
idnode_uuid_as_str(&im->mm_id, ubuf2));
c2 = NULL;
c = htsmsg_get_map(conf, "services");
if (c == NULL)
c = c2 = hts_settings_load_r(1, "input/iptv/networks/%s/muxes/%s/services",
idnode_uuid_as_str(&in->mn_id, ubuf1),
idnode_uuid_as_str(&im->mm_id, ubuf2));
if (c) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
Expand All @@ -365,7 +368,7 @@ iptv_mux_create0 ( iptv_network_t *in, const char *uuid, htsmsg_t *conf )
if (ms)
iptv_bouquet_trigger(in, 0);
}
htsmsg_destroy(c);
htsmsg_destroy(c2);

return im;
}
30 changes: 5 additions & 25 deletions src/input/mpegts/iptv/iptv_service.c
Expand Up @@ -25,36 +25,16 @@ extern const idclass_t mpegts_service_class;
static htsmsg_t *
iptv_service_config_save ( service_t *s, char *filename, size_t fsize )
{
mpegts_mux_t *mm = ((mpegts_service_t *)s)->s_dvb_mux;
htsmsg_t *c = htsmsg_create_map();
char ubuf0[UUID_HEX_SIZE];
char ubuf1[UUID_HEX_SIZE];
char ubuf2[UUID_HEX_SIZE];

service_save(s, c);
snprintf(filename, fsize, "input/iptv/networks/%s/muxes/%s/services/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf0),
idnode_uuid_as_str(&mm->mm_id, ubuf1),
idnode_uuid_as_str(&s->s_id, ubuf2));
return c;
mpegts_mux_t *mm = ((mpegts_service_t *)s)->s_dvb_mux;
idnode_changed(&mm->mm_id);
return NULL;
}

static void
iptv_service_delete ( service_t *s, int delconf )
{
iptv_service_t *is = (iptv_service_t *)s;
mpegts_mux_t *mm = is->s_dvb_mux;
char ubuf0[UUID_HEX_SIZE];
char ubuf1[UUID_HEX_SIZE];
char ubuf2[UUID_HEX_SIZE];

/* Remove config */
if (delconf && s->s_type == STYPE_STD)
hts_settings_remove("input/iptv/networks/%s/muxes/%s/services/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf0),
idnode_uuid_as_str(&mm->mm_id, ubuf1),
idnode_uuid_as_str(&s->s_id, ubuf2));

mpegts_mux_t *mm = ((mpegts_service_t *)s)->s_dvb_mux;
idnode_changed(&mm->mm_id);
/* Note - do no pass the delconf flag - another file location */
mpegts_service_delete(s, 0);
}
Expand Down
16 changes: 15 additions & 1 deletion src/input/mpegts/mpegts_mux.c
Expand Up @@ -694,6 +694,7 @@ mpegts_mux_delete ( mpegts_mux_t *mm, int delconf )
gtimer_disarm(&mm->mm_update_pids_timer);

/* Free memory */
idnode_save_check(&mm->mm_id, 1);
idnode_unlink(&mm->mm_id);
free(mm->mm_provider_network_name);
free(mm->mm_crid_authority);
Expand Down Expand Up @@ -1174,7 +1175,20 @@ mpegts_mux_create0
void
mpegts_mux_save ( mpegts_mux_t *mm, htsmsg_t *c )
{
idnode_save(&mm->mm_id, c);
mpegts_service_t *ms;
htsmsg_t *root = htsmsg_create_map();
htsmsg_t *services = htsmsg_create_map();
htsmsg_t *e;
char ubuf[UUID_HEX_SIZE];

idnode_save(&mm->mm_id, root);
LIST_FOREACH(ms, &mm->mm_services, s_dvb_mux_link) {
e = htsmsg_create_map();
service_save((service_t *)ms, e);
htsmsg_add_msg(services, idnode_uuid_as_str(&ms->s_id, ubuf), e);
}
htsmsg_add_msg(root, "services", services);
htsmsg_add_msg(c, "config", root);
}

int
Expand Down
16 changes: 10 additions & 6 deletions src/input/mpegts/mpegts_mux_dvb.c
Expand Up @@ -903,7 +903,7 @@ dvb_mux_config_save ( mpegts_mux_t *mm, char *filename, size_t fsize )
char ubuf2[UUID_HEX_SIZE];
htsmsg_t *c = htsmsg_create_map();
mpegts_mux_save(mm, c);
snprintf(filename, fsize, "input/dvb/networks/%s/muxes/%s/config",
snprintf(filename, fsize, "input/dvb/networks/%s/muxes/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf1),
idnode_uuid_as_str(&mm->mm_id, ubuf2));
return c;
Expand Down Expand Up @@ -978,7 +978,7 @@ dvb_mux_create0
const idclass_t *idc;
mpegts_mux_t *mm;
dvb_mux_t *lm;
htsmsg_t *c, *e;
htsmsg_t *c, *c2, *e;
htsmsg_field_t *f;
dvb_fe_delivery_system_t delsys;
char ubuf1[UUID_HEX_SIZE];
Expand Down Expand Up @@ -1046,15 +1046,19 @@ dvb_mux_create0
if (!conf) return lm;

/* Services */
c = hts_settings_load_r(1, "input/dvb/networks/%s/muxes/%s/services",
idnode_uuid_as_str(&ln->mn_id, ubuf1),
idnode_uuid_as_str(&mm->mm_id, ubuf2));
c2 = NULL;
c = htsmsg_get_map(conf, "services");
if (c == NULL)
c = c2 = hts_settings_load_r(1, "input/dvb/networks/%s/muxes/%s/services",
idnode_uuid_as_str(&ln->mn_id, ubuf1),
idnode_uuid_as_str(&mm->mm_id, ubuf2));

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);
}
htsmsg_destroy(c);
htsmsg_destroy(c2);
}

if (ln->ln_type == DVB_TYPE_S) {
Expand Down
24 changes: 4 additions & 20 deletions src/input/mpegts/mpegts_service.c
Expand Up @@ -272,17 +272,9 @@ mpegts_service_is_enabled(service_t *t, int flags)
static htsmsg_t *
mpegts_service_config_save ( service_t *t, char *filename, size_t fsize )
{
htsmsg_t *c = htsmsg_create_map();
mpegts_service_t *s = (mpegts_service_t*)t;
char ubuf0[UUID_HEX_SIZE];
char ubuf1[UUID_HEX_SIZE];
char ubuf2[UUID_HEX_SIZE];
service_save(t, c);
snprintf(filename, fsize, "input/dvb/networks/%s/muxes/%s/services/%s",
idnode_uuid_as_str(&s->s_dvb_mux->mm_network->mn_id, ubuf0),
idnode_uuid_as_str(&s->s_dvb_mux->mm_id, ubuf1),
idnode_uuid_as_str(&s->s_id, ubuf2));
return c;
idnode_changed(&s->s_dvb_mux->mm_id);
return NULL;
}

/*
Expand Down Expand Up @@ -672,16 +664,8 @@ mpegts_service_delete ( service_t *t, int delconf )
{
mpegts_service_t *ms = (mpegts_service_t*)t, *mms;
mpegts_mux_t *mm = ms->s_dvb_mux;
char ubuf0[UUID_HEX_SIZE];
char ubuf1[UUID_HEX_SIZE];
char ubuf2[UUID_HEX_SIZE];

/* Remove config */
if (delconf && t->s_type == STYPE_STD)
hts_settings_remove("input/dvb/networks/%s/muxes/%s/services/%s",
idnode_uuid_as_str(&mm->mm_network->mn_id, ubuf0),
idnode_uuid_as_str(&mm->mm_id, ubuf1),
idnode_uuid_as_str(&t->s_id, ubuf2));

idnode_changed(&mm->mm_id);

/* Free memory */
if (t->s_type == STYPE_STD)
Expand Down
11 changes: 9 additions & 2 deletions src/settings.c
Expand Up @@ -133,7 +133,7 @@ hts_settings_save(htsmsg_t *record, const char *pathfmt, ...)
va_list ap;
htsbuf_queue_t hq;
htsbuf_data_t *hd;
int ok;
int ok, r;

if(settingspath == NULL)
return;
Expand Down Expand Up @@ -172,7 +172,14 @@ hts_settings_save(htsmsg_t *record, const char *pathfmt, ...)

/* Move */
if(ok) {
rename(tmppath, path);
r = rename(tmppath, path);
if (r && errno == EISDIR) {
rmtree(path);
r = rename(tmppath, path);
}
if (r)
tvhlog(LOG_ALERT, "settings", "Unable to rename file \"%s\" to \"%s\" - %s",
tmppath, path, strerror(errno));

/* Delete tmp */
} else
Expand Down

0 comments on commit 68958ae

Please sign in to comment.