/** * find a dvr config by name, return the default config if not found */ dvr_config_t * dvr_config_find_by_name_default(const char *name) { dvr_config_t *cfg; if (dvrdefaultconfig == NULL) dvrdefaultconfig = dvr_config_find_by_name(NULL); if (dvrdefaultconfig == NULL) { cfg = dvr_config_create("", NULL, NULL); assert(cfg); dvr_config_save(cfg); dvrdefaultconfig = cfg; } if (name == NULL || *name == '\0') return dvrdefaultconfig; cfg = dvr_config_find_by_name(name); if (cfg == NULL) { if (name && *name) tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not found, using default", name); cfg = dvrdefaultconfig; } else if (!cfg->dvr_enabled) { tvhlog(LOG_WARNING, "dvr", "Configuration '%s' not enabled, using default", name); cfg = dvrdefaultconfig; } return cfg; }
static int api_dvr_config_create ( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp ) { dvr_config_t *cfg; htsmsg_t *conf; const char *s; if (!(conf = htsmsg_get_map(args, "conf"))) return EINVAL; if (!(s = htsmsg_get_str(conf, "name"))) return EINVAL; if (s[0] == '\0') return EINVAL; pthread_mutex_lock(&global_lock); if ((cfg = dvr_config_create(NULL, NULL, conf))) dvr_config_save(cfg); pthread_mutex_unlock(&global_lock); return 0; }