summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-02-08 23:52:06 +0100
committerwm4 <wm4@nowhere>2013-02-09 00:21:18 +0100
commita1be0e1aecdd88bbc56b940e00d3bf51b96c0e4c (patch)
treeaa472dd8f39cafcd0b3e38030ee8a945f4b3103d
parentc1ddfb59076e9b568484b97f10b4eadeb48384e3 (diff)
downloadmpv-a1be0e1aecdd88bbc56b940e00d3bf51b96c0e4c.tar.bz2
mpv-a1be0e1aecdd88bbc56b940e00d3bf51b96c0e4c.tar.xz
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.
-rw-r--r--DOCS/man/en/options.rst20
-rw-r--r--core/cfg-mplayer.h3
-rw-r--r--core/defaultopts.c1
-rw-r--r--core/input/input.c43
-rw-r--r--core/input/input.h3
-rw-r--r--core/mplayer.c10
-rw-r--r--core/options.h2
-rw-r--r--core/parser-mpcmd.c2
8 files changed, 38 insertions, 46 deletions
diff --git a/DOCS/man/en/options.rst b/DOCS/man/en/options.rst
index 8d809c9db8..ea43b9c49f 100644
--- a/DOCS/man/en/options.rst
+++ b/DOCS/man/en/options.rst
@@ -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.
diff --git a/core/cfg-mplayer.h b/core/cfg-mplayer.h
index 92f7d87906..78d85aa9ed 100644
--- a/core/cfg-mplayer.h
+++ b/core/cfg-mplayer.h
@@ -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 --------------------
diff --git a/core/defaultopts.c b/core/defaultopts.c
index d0205cb3d3..36407cc71d 100644
--- a/core/defaultopts.c
+++ b/core/defaultopts.c
@@ -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,
diff --git a/core/input/input.c b/core/input/input.c
index 0e2955116b..171909b015 100644
--- a/core/input/input.c
+++ b/core/input/input.c
@@ -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
diff --git a/core/input/input.h b/core/input/input.h
index 974ca3d6c4..14d100e152 100644
--- a/core/input/input.h
+++ b/core/input/input.h
@@ -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);
diff --git a/core/mplayer.c b/core/mplayer.c
index 65bd1f2f8e..5dc719d97f 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -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);
diff --git a/core/options.h b/core/options.h
index 10eb7135fd..b261731f16 100644
--- a/core/options.h
+++ b/core/options.h
@@ -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;
diff --git a/core/parser-mpcmd.c b/core/parser-mpcmd.c
index 9914e7a614..1a7a4dcbc9 100644
--- a/core/parser-mpcmd.c
+++ b/core/parser-mpcmd.c
@@ -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.
*/