bool mp_parse_cfgfiles(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; if (!opts->load_config) return true; m_config_t *conf = mpctx->mconfig; void *tmp = talloc_new(NULL); bool r = true; char *conffile; // The #if is a stupid hack to avoid errors if libavfilter is not available. #if HAVE_VF_LAVFI && HAVE_ENCODING conffile = mp_find_config_file(tmp, mpctx->global, "encoding-profiles.conf"); if (conffile && mp_path_exists(conffile)) m_config_parse_config_file(mpctx->mconfig, conffile, 0); #endif conffile = mp_find_global_config_file(tmp, mpctx->global, "mpv.conf"); if (conffile && m_config_parse_config_file(conf, conffile, 0) < 0) { r = false; goto done; } mp_mk_config_dir(mpctx->global, NULL); if (!(conffile = mp_find_user_config_file(tmp, mpctx->global, "config"))) MP_ERR(mpctx, "mp_find_user_config_file(\"config\") problem\n"); else if (m_config_parse_config_file(conf, conffile, 0) < 0) { r = false; goto done; } done: talloc_free(tmp); return r; }
void mp_parse_cfgfiles(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; if (!opts->load_config) return; mp_mk_config_dir(mpctx->global, ""); m_config_t *conf = mpctx->mconfig; char *section = NULL; bool encoding = opts->encode_opts && opts->encode_opts->file && opts->encode_opts->file[0]; // In encoding mode, we don't want to apply normal config options. // So we "divert" normal options into a separate section, and the diverted // section is never used - unless maybe it's explicitly referenced from an // encoding profile. if (encoding) section = "playback-default"; // The #if is a stupid hack to avoid errors if libavfilter is not available. #if HAVE_LIBAVFILTER && HAVE_ENCODING char *cf = mp_find_config_file(NULL, mpctx->global, "encoding-profiles.conf"); if (cf) m_config_parse_config_file(mpctx->mconfig, cf, SECT_ENCODE, 0); talloc_free(cf); #endif load_all_cfgfiles(mpctx, section, "config"); load_all_cfgfiles(mpctx, section, "mpv.conf"); if (encoding) m_config_set_profile(conf, m_config_add_profile(conf, SECT_ENCODE), 0); }
static int try_load_config(struct MPContext *mpctx, const char *file, int flags) { if (!mp_path_exists(file)) return 0; MP_INFO(mpctx, "Loading config '%s'\n", file); m_config_parse_config_file(mpctx->mconfig, file, NULL, flags); return 1; }
bool mp_parse_cfgfiles(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; if (!opts->load_config) return true; m_config_t *conf = mpctx->mconfig; void *tmp = talloc_new(NULL); bool r = true; char *conffile; char *section = NULL; bool encoding = opts->encode_output.file && *opts->encode_output.file; // In encoding mode, we don't want to apply normal config options. // So we "divert" normal options into a separate section, and the diverted // section is never used - unless maybe it's explicitly referenced from an // encoding profile. if (encoding) section = "playback-default"; // The #if is a stupid hack to avoid errors if libavfilter is not available. #if HAVE_LIBAVFILTER && HAVE_ENCODING conffile = mp_find_config_file(tmp, mpctx->global, "encoding-profiles.conf"); if (conffile && mp_path_exists(conffile)) m_config_parse_config_file(mpctx->mconfig, conffile, SECT_ENCODE, 0); #endif conffile = mp_find_global_config_file(tmp, mpctx->global, "mpv.conf"); if (conffile && m_config_parse_config_file(conf, conffile, section, 0) < 0) { r = false; goto done; } mp_mk_config_dir(mpctx->global, NULL); if (!(conffile = mp_find_user_config_file(tmp, mpctx->global, "config"))) MP_ERR(mpctx, "mp_find_user_config_file(\"config\") problem\n"); else if (m_config_parse_config_file(conf, conffile, section, 0) < 0) { r = false; goto done; } if (encoding) m_config_set_profile(conf, m_config_add_profile(conf, SECT_ENCODE), 0); done: talloc_free(tmp); return r; }
static void load_all_cfgfiles(struct MPContext *mpctx, char *section, char *filename) { char **cf = mp_find_all_config_files(NULL, mpctx->global, filename); for (int i = 0; cf && cf[i]; i++) m_config_parse_config_file(mpctx->mconfig, cf[i], section, 0); talloc_free(cf); }
int cfg_read(void) { char *cfg = get_path("gui.conf"); /* read configuration */ mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] [cfg] reading config file: %s\n", cfg); gui_conf = m_config_new(); m_config_register_options(gui_conf, gui_opts); if (m_config_parse_config_file(gui_conf, cfg) < 0) mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_ConfigFileError); free(cfg); return 0; }
int cfg_include(m_option_t *conf, const char *filename) { return m_config_parse_config_file(mconfig, filename, 0); }
int cfg_gui_include(m_option_t *conf, const char *filename) { (void)conf; return m_config_parse_config_file(gui_conf, filename, 0); }