mirror of
https://github.com/mpv-player/mpv
synced 2025-01-09 01:36:25 +01:00
options: change --no-config option, make it apply to input.conf as well
Simplify --no-config and make it a normal flag option, and doesn't take an argument anymore. You can get the same behavior by using --no-config and then --include to explicitly load a certain config file. Make --no-config work for input.conf as well. Make it so that --input:conf=file still works in this case. As a technically unrelated change, the file argument now works as one would expect, instead of making it relatively to "~/.mpv/". This makes for simpler code and easier to understand option semantics. We can also print better error messages.
This commit is contained in:
parent
c1ddfb5907
commit
a1be0e1aec
@ -886,8 +886,7 @@
|
||||
|
||||
conf=<filename>
|
||||
Specify input configuration file other than the default
|
||||
``~/.mpv/input.conf``. ``~/.mpv/<filename>`` is assumed if no
|
||||
full path is given.
|
||||
``~/.mpv/input.conf``.
|
||||
|
||||
ar-dev=<device>
|
||||
Device to be used for Apple IR Remote (default is autodetected, Linux
|
||||
@ -1251,17 +1250,16 @@
|
||||
Disables colorkeying. Only supported by the xv (see ``--vo=xv:ck``) video
|
||||
output driver.
|
||||
|
||||
--no-config=<options>
|
||||
Do not parse selected configuration files.
|
||||
--no-config
|
||||
Do not load default configuration files. This prevents loading of
|
||||
``~/.mpv/config`` and ``~/.mpv/input.conf``, as well as loading the
|
||||
same files from system wide configuration directories.
|
||||
|
||||
*NOTE*: If ``--include`` or ``--use-filedir-conf`` options are specified
|
||||
at the command line, they will be honoured.
|
||||
Loading of some configuration files is not affected by this option, such
|
||||
as configuration files for cddb, DVB code and fontconfig.
|
||||
|
||||
Available options are:
|
||||
|
||||
:all: all configuration files
|
||||
:system: system configuration file
|
||||
:user: user configuration file
|
||||
*NOTE*: Files explicitly requested by command line options, like
|
||||
``--include`` or ``--use-filedir-conf``, will still be loaded.
|
||||
|
||||
--no-idx
|
||||
Do not use index present in the file even if one is present.
|
||||
|
@ -297,8 +297,7 @@ const m_option_t common_opts[] = {
|
||||
#ifdef CONFIG_PRIORITY
|
||||
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||
#endif
|
||||
OPT_CHOICE("no-config", noconfig, CONF_GLOBAL | CONF_NOCFG | CONF_PRE_PARSE,
|
||||
({"no", 0}, {"user", 1}, {"system", 2}, {"all", 3})),
|
||||
OPT_FLAG("config", load_config, CONF_GLOBAL | CONF_NOCFG | CONF_PRE_PARSE),
|
||||
|
||||
// ------------------------- stream options --------------------
|
||||
|
||||
|
@ -31,6 +31,7 @@ void set_default_mplayer_options(struct MPOpts *opts)
|
||||
.loop_times = -1,
|
||||
.ordered_chapters = 1,
|
||||
.chapter_merge_threshold = 100,
|
||||
.load_config = 1,
|
||||
.stream_cache_min_percent = 20.0,
|
||||
.stream_cache_seek_min_percent = 50.0,
|
||||
.stream_cache_pause = 10.0,
|
||||
|
@ -520,7 +520,7 @@ static int print_cmd_list(m_option_t *cfg, char *optname, char *optparam);
|
||||
|
||||
// Our command line options
|
||||
static const m_option_t input_conf[] = {
|
||||
OPT_STRING("conf", input.config_file, CONF_GLOBAL, OPTDEF_STR("input.conf")),
|
||||
OPT_STRING("conf", input.config_file, CONF_GLOBAL),
|
||||
OPT_INT("ar-delay", input.ar_delay, CONF_GLOBAL),
|
||||
OPT_INT("ar-rate", input.ar_rate, CONF_GLOBAL),
|
||||
{ "keylist", print_key_list, CONF_TYPE_PRINT_FUNC, CONF_GLOBAL | CONF_NOCFG },
|
||||
@ -1721,15 +1721,16 @@ static int parse_config(struct input_ctx *ictx, bool builtin, bstr data,
|
||||
return n_binds;
|
||||
}
|
||||
|
||||
static int parse_config_file(struct input_ctx *ictx, char *file)
|
||||
static int parse_config_file(struct input_ctx *ictx, char *file, bool warn)
|
||||
{
|
||||
if (!mp_path_exists(file)) {
|
||||
mp_msg(MSGT_INPUT, MSGL_V, "Input config file %s missing.\n", file);
|
||||
mp_msg(MSGT_INPUT, warn ? MSGL_ERR : MSGL_V,
|
||||
"Input config file %s not found.\n", file);
|
||||
return 0;
|
||||
}
|
||||
stream_t *s = open_stream(file, NULL, NULL);
|
||||
if (!s) {
|
||||
mp_msg(MSGT_INPUT, MSGL_V, "Can't open input config file %s.\n", file);
|
||||
mp_msg(MSGT_INPUT, MSGL_ERR, "Can't open input config file %s.\n", file);
|
||||
return 0;
|
||||
}
|
||||
bstr res = stream_read_complete(s, NULL, 1000000, 0);
|
||||
@ -1754,7 +1755,8 @@ char *mp_input_get_section(struct input_ctx *ictx)
|
||||
return ictx->section;
|
||||
}
|
||||
|
||||
struct input_ctx *mp_input_init(struct input_conf *input_conf)
|
||||
struct input_ctx *mp_input_init(struct input_conf *input_conf,
|
||||
bool load_default_conf)
|
||||
{
|
||||
struct input_ctx *ictx = talloc_ptrtype(NULL, ictx);
|
||||
*ictx = (struct input_ctx){
|
||||
@ -1786,27 +1788,18 @@ struct input_ctx *mp_input_init(struct input_conf *input_conf)
|
||||
NULL, NULL);
|
||||
#endif
|
||||
|
||||
char *file;
|
||||
char *config_file = input_conf->config_file;
|
||||
file = config_file[0] != '/' ?
|
||||
mp_find_user_config_file(config_file) : config_file;
|
||||
if (!file)
|
||||
return ictx;
|
||||
|
||||
if (!parse_config_file(ictx, file)) {
|
||||
// free file if it was allocated by get_path(),
|
||||
// before it gets overwritten
|
||||
if (file != config_file)
|
||||
talloc_free(file);
|
||||
bool config_ok = false;
|
||||
if (input_conf->config_file)
|
||||
config_ok = parse_config_file(ictx, input_conf->config_file, true);
|
||||
if (!config_ok && load_default_conf) {
|
||||
// Try global conf dir
|
||||
file = MPLAYER_CONFDIR "/input.conf";
|
||||
if (!parse_config_file(ictx, file))
|
||||
mp_msg(MSGT_INPUT, MSGL_V, "Falling back on default (hardcoded) "
|
||||
"input config\n");
|
||||
} else {
|
||||
// free file if it was allocated by get_path()
|
||||
if (file != config_file)
|
||||
talloc_free(file);
|
||||
char *file = mp_find_config_file("input.conf");
|
||||
config_ok = file && parse_config_file(ictx, file, false);
|
||||
talloc_free(file);
|
||||
}
|
||||
if (!config_ok) {
|
||||
mp_msg(MSGT_INPUT, MSGL_V, "Falling back on default (hardcoded) "
|
||||
"input config\n");
|
||||
}
|
||||
|
||||
#ifdef CONFIG_JOYSTICK
|
||||
|
@ -203,7 +203,8 @@ char *mp_input_get_section(struct input_ctx *ictx);
|
||||
|
||||
// Initialize the input system
|
||||
struct input_conf;
|
||||
struct input_ctx *mp_input_init(struct input_conf *input_conf);
|
||||
struct input_ctx *mp_input_init(struct input_conf *input_conf,
|
||||
bool load_default_conf);
|
||||
|
||||
void mp_input_uninit(struct input_ctx *ictx);
|
||||
|
||||
|
@ -689,8 +689,9 @@ static bool parse_cfgfiles(struct MPContext *mpctx, m_config_t *conf)
|
||||
struct MPOpts *opts = &mpctx->opts;
|
||||
char *conffile;
|
||||
int conffile_fd;
|
||||
if (!(opts->noconfig & 2) &&
|
||||
m_config_parse_config_file(conf, MPLAYER_CONFDIR "/mpv.conf") < 0)
|
||||
if (!opts->load_config)
|
||||
return true;
|
||||
if (!m_config_parse_config_file(conf, MPLAYER_CONFDIR "/mpv.conf") < 0)
|
||||
return false;
|
||||
if ((conffile = mp_find_user_config_file("")) == NULL)
|
||||
mp_tmsg(MSGT_CPLAYER, MSGL_WARN, "Cannot find HOME directory.\n");
|
||||
@ -708,8 +709,7 @@ static bool parse_cfgfiles(struct MPContext *mpctx, m_config_t *conf)
|
||||
write(conffile_fd, DEF_CONFIG, sizeof(DEF_CONFIG) - 1);
|
||||
close(conffile_fd);
|
||||
}
|
||||
if (!(opts->noconfig & 1) &&
|
||||
m_config_parse_config_file(conf, conffile) < 0)
|
||||
if (m_config_parse_config_file(conf, conffile) < 0)
|
||||
return false;
|
||||
talloc_free(conffile);
|
||||
}
|
||||
@ -3657,7 +3657,7 @@ static void check_previous_track_selection(struct MPContext *mpctx)
|
||||
|
||||
static void init_input(struct MPContext *mpctx)
|
||||
{
|
||||
mpctx->input = mp_input_init(&mpctx->opts.input);
|
||||
mpctx->input = mp_input_init(&mpctx->opts.input, mpctx->opts.load_config);
|
||||
mpctx->key_fifo = mp_fifo_create(mpctx->input, &mpctx->opts);
|
||||
if (slave_mode)
|
||||
mp_input_add_cmd_fd(mpctx->input, 0, USE_FD0_CMD_SELECT, MP_INPUT_SLAVE_CMD_FUNC, NULL);
|
||||
|
@ -54,7 +54,7 @@ typedef struct MPOpts {
|
||||
int ordered_chapters;
|
||||
int chapter_merge_threshold;
|
||||
int quiet;
|
||||
int noconfig;
|
||||
int load_config;
|
||||
char *codecs_file;
|
||||
int stream_cache_size;
|
||||
float stream_cache_min_percent;
|
||||
|
@ -289,7 +289,7 @@ err_out:
|
||||
extern int mp_msg_levels[];
|
||||
|
||||
/* Parse some command line options early before main parsing.
|
||||
* --noconfig prevents reading configuration files (otherwise done before
|
||||
* --no-config prevents reading configuration files (otherwise done before
|
||||
* command line parsing), and --really-quiet suppresses messages printed
|
||||
* during normal options parsing.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user