summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-05-18 12:53:38 +0200
committerwm4 <wm4@nowhere>2013-05-18 17:45:55 +0200
commit3e6ec6dfa551740c4d52ede83a0cacba3ab59532 (patch)
tree72aca62e59e5465d4d65d3cb2570a956100801cb
parentb0a60b7321c8878154f2488d99dd7b99cefca43b (diff)
downloadmpv-3e6ec6dfa551740c4d52ede83a0cacba3ab59532.tar.bz2
mpv-3e6ec6dfa551740c4d52ede83a0cacba3ab59532.tar.xz
input: accept input command prefixes in any order
This is more consistent, and doesn't bother the user with ordering rules when new prefixes are added. Will break obscure uses of legacy commands: if the command is supposed to be translated by the legacy command bridge, and if that command uses one of the pausing* prefixes, the command can't be parsed. Well, just use the new commands in this case.
-rw-r--r--core/input/input.c42
1 files changed, 22 insertions, 20 deletions
diff --git a/core/input/input.c b/core/input/input.c
index 116e963b93..ebfd74a7ea 100644
--- a/core/input/input.c
+++ b/core/input/input.c
@@ -794,16 +794,6 @@ mp_cmd_t *mp_input_parse_cmd(bstr str, const char *loc)
bstr start = str;
void *tmp = talloc_new(NULL);
- if (eat_token(&str, "pausing")) {
- pausing = 1;
- } else if (eat_token(&str, "pausing_keep")) {
- pausing = 2;
- } else if (eat_token(&str, "pausing_toggle")) {
- pausing = 3;
- } else if (eat_token(&str, "pausing_keep_force")) {
- pausing = 4;
- }
-
str = bstr_lstrip(str);
for (const struct legacy_cmd *entry = legacy_cmds; entry->old; entry++) {
size_t old_len = strlen(entry->old);
@@ -820,16 +810,28 @@ mp_cmd_t *mp_input_parse_cmd(bstr str, const char *loc)
}
}
- if (eat_token(&str, "no-osd")) {
- on_osd = MP_ON_OSD_NO;
- } else if (eat_token(&str, "osd-bar")) {
- on_osd = MP_ON_OSD_BAR;
- } else if (eat_token(&str, "osd-msg")) {
- on_osd = MP_ON_OSD_MSG;
- } else if (eat_token(&str, "osd-msg-bar")) {
- on_osd = MP_ON_OSD_MSG | MP_ON_OSD_BAR;
- } else if (eat_token(&str, "osd-auto")) {
- // default
+ while (1) {
+ if (eat_token(&str, "pausing")) {
+ pausing = 1;
+ } else if (eat_token(&str, "pausing_keep")) {
+ pausing = 2;
+ } else if (eat_token(&str, "pausing_toggle")) {
+ pausing = 3;
+ } else if (eat_token(&str, "pausing_keep_force")) {
+ pausing = 4;
+ } else if (eat_token(&str, "no-osd")) {
+ on_osd = MP_ON_OSD_NO;
+ } else if (eat_token(&str, "osd-bar")) {
+ on_osd = MP_ON_OSD_BAR;
+ } else if (eat_token(&str, "osd-msg")) {
+ on_osd = MP_ON_OSD_MSG;
+ } else if (eat_token(&str, "osd-msg-bar")) {
+ on_osd = MP_ON_OSD_MSG | MP_ON_OSD_BAR;
+ } else if (eat_token(&str, "osd-auto")) {
+ // default
+ } else {
+ break;
+ }
}
int cmd_idx = 0;