summaryrefslogtreecommitdiffstats
path: root/core/input
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 /core/input
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.
Diffstat (limited to 'core/input')
-rw-r--r--core/input/input.c43
-rw-r--r--core/input/input.h3
2 files changed, 20 insertions, 26 deletions
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);