From 38b05daf7d16898f4a63e4ccf48479d8964e6e19 Mon Sep 17 00:00:00 2001 From: wd0 Date: Sun, 29 Mar 2015 03:03:34 -0400 Subject: parse_commandline: fail gracefully on bad args Args of zero length (i.e. --=) now display a proper error message. Signed-off-by: wm4 --- options/parse_commandline.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'options/parse_commandline.c') diff --git a/options/parse_commandline.c b/options/parse_commandline.c index 6898075430..651f4a9728 100644 --- a/options/parse_commandline.c +++ b/options/parse_commandline.c @@ -80,6 +80,9 @@ static int split_opt_silent(struct parse_state *p) bool ambiguous = !bstr_split_tok(p->arg, "=", &p->arg, &p->param); + if (!p->arg.len) + return M_OPT_INVALID; + bool need_param = m_config_option_requires_param(p->config, p->arg) > 0; if (ambiguous && need_param) { @@ -100,7 +103,7 @@ static bool split_opt(struct parse_state *p) return r == 0; p->error = true; - MP_FATAL(p->config, "Error parsing commandline option %.*s: %s\n", + MP_FATAL(p->config, "Error parsing command line option '%.*s': %s\n", BSTR_P(p->arg), m_option_strerror(r)); return false; } @@ -154,7 +157,7 @@ int m_config_parse_mp_command_line(m_config_t *config, struct playlist *files, goto err_out; } if (r < 0) { - MP_FATAL(config, "Setting commandline option --%.*s=%.*s failed.\n", + MP_FATAL(config, "Setting command line option '--%.*s=%.*s' failed.\n", BSTR_P(p.arg), BSTR_P(p.param)); goto err_out; } -- cgit v1.2.3