summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-06-30 16:39:36 +0200
committerwm4 <wm4@nowhere>2017-06-30 16:39:36 +0200
commit91583fccac85880ad2199f50463c095560791d56 (patch)
treec0e18c2755edf4bd3f9255975cbe1d8f1f1e97f7 /options
parentc1f46dbbe9a9b2d1ae6694118244bea8859ab2f0 (diff)
downloadmpv-91583fccac85880ad2199f50463c095560791d56.tar.bz2
mpv-91583fccac85880ad2199f50463c095560791d56.tar.xz
options: change path list options, and document list options
The changes to path list options is basically getting rid of the need to pass multiple paths to a single option. Instead, you can use the option multiple times. The old behavior can be used by using the -set suffix with the option. Change some options to path lists. For example --script is now append by default, and if you use --script-set, you need to use ":"/";" as separator instead of ",". --sub-paths/--audio-file-paths is a deprecated alias now, and will break if the user tries to pass multiple paths to it. I'm assuming that if these are used, most users will pass only 1 path anyway. --opengl-shaders has more compatibility handling, since it's probably rather common that users pass multiple options to it. Also document all that in the manpage. I'll probably regret this later, as it somewhat increases the complexity of the option parser, rather than increasing it.
Diffstat (limited to 'options')
-rw-r--r--options/m_option.c6
-rw-r--r--options/m_option.h5
-rw-r--r--options/options.c16
3 files changed, 14 insertions, 13 deletions
diff --git a/options/m_option.c b/options/m_option.c
index 9403817ed8..ae63044e50 100644
--- a/options/m_option.c
+++ b/options/m_option.c
@@ -1164,6 +1164,8 @@ static int str_list_del(struct mp_log *log, char **del, int n, void *dst)
talloc_free(lst[idx]);
lst[idx] = NULL;
s--;
+ if (i > 0)
+ mp_warn(log, "Passing multiple -del arguments is deprecated!\n");
}
talloc_free(del);
@@ -1252,9 +1254,7 @@ static int parse_str_list_impl(struct mp_log *log, const m_option_t *opt,
return 1;
}
- // custom type for "profile" calls this but uses ->priv for something else
- char separator = opt->type == &m_option_type_string_list && opt->priv ?
- *(char *)opt->priv : OPTION_LIST_SEPARATOR;
+ char separator = opt->priv ? *(char *)opt->priv : OPTION_LIST_SEPARATOR;
int n = 0;
struct bstr str = param;
while (str.len) {
diff --git a/options/m_option.h b/options/m_option.h
index fc879d44f1..8489077627 100644
--- a/options/m_option.h
+++ b/options/m_option.h
@@ -579,14 +579,11 @@ extern const char m_option_path_separator;
#define OPT_STRINGLIST(...) \
OPT_GENERAL(char**, __VA_ARGS__, .type = &m_option_type_string_list)
-#define OPT_STRING_APPEND_LIST(...) \
- OPT_GENERAL(char**, __VA_ARGS__, .type = &m_option_type_string_append_list)
-
#define OPT_KEYVALUELIST(...) \
OPT_GENERAL(char**, __VA_ARGS__, .type = &m_option_type_keyvalue_list)
#define OPT_PATHLIST(...) \
- OPT_GENERAL(char**, __VA_ARGS__, .type = &m_option_type_string_list, \
+ OPT_GENERAL(char**, __VA_ARGS__, .type = &m_option_type_string_append_list, \
.priv = (void *)&m_option_path_separator)
#define OPT_INT(...) \
diff --git a/options/options.c b/options/options.c
index 3827709dcc..02dc5e94dd 100644
--- a/options/options.c
+++ b/options/options.c
@@ -289,7 +289,7 @@ const m_option_t mp_opts[] = {
OPT_STRINGLIST("reset-on-next-file", reset_options, 0),
#if HAVE_LUA || HAVE_JAVASCRIPT
- OPT_STRINGLIST("script", script_files, M_OPT_FIXED | M_OPT_FILE),
+ OPT_PATHLIST("script", script_files, M_OPT_FIXED),
OPT_KEYVALUELIST("script-opts", script_opts, 0),
OPT_FLAG("load-scripts", auto_load_scripts, 0),
#endif
@@ -375,7 +375,7 @@ const m_option_t mp_opts[] = {
#endif
// demuxer.c - select audio/sub file/demuxer
- OPT_STRING_APPEND_LIST("audio-file", audio_files, M_OPT_FILE),
+ OPT_PATHLIST("audio-file", audio_files, 0),
OPT_STRING("demuxer", demuxer_name, 0),
OPT_STRING("audio-demuxer", audio_demuxer_name, 0),
OPT_STRING("sub-demuxer", sub_demuxer_name, 0),
@@ -459,10 +459,10 @@ const m_option_t mp_opts[] = {
// ------------------------- subtitles options --------------------
- OPT_STRING_APPEND_LIST("sub-file", sub_name, M_OPT_FILE),
- OPT_PATHLIST("sub-paths", sub_paths, 0),
- OPT_PATHLIST("audio-file-paths", audiofile_paths, 0),
- OPT_STRING_APPEND_LIST("external-file", external_files, M_OPT_FILE),
+ OPT_PATHLIST("sub-file", sub_name, 0),
+ OPT_PATHLIST("sub-file-path", sub_paths, 0),
+ OPT_PATHLIST("audio-file-path", audiofile_paths, 0),
+ OPT_PATHLIST("external-file", external_files, 0),
OPT_FLAG("autoload-files", autoload_files, 0),
OPT_FLOAT("sub-delay", sub_delay, UPDATE_OSD),
OPT_FLOAT("sub-fps", sub_fps, UPDATE_OSD),
@@ -832,6 +832,10 @@ const m_option_t mp_opts[] = {
OPT_REMOVED("fs-black-out-screens", NULL),
OPT_REPLACED_MSG("loop", "loop-playlist", "--loop will be changed to map to"
" --loop-file in future releases."),
+ OPT_REPLACED_MSG("sub-paths", "sub-file-path",
+ "passing multiple paths works differently now"),
+ OPT_REPLACED_MSG("audio-file-paths", "audio-file-path",
+ "passing multiple paths works differently now"),
{0}
};