aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Ashworth <bosrsf04@gmail.com>2018-09-18 21:44:40 -0400
committerBrian Ashworth <bosrsf04@gmail.com>2018-09-28 23:12:24 -0400
commit0a0cf4540ab57ba4af6fb547fd5c1a1df61fb8cf (patch)
tree0b32b31a765eca48ce7739de7f4b602e7c71be57
parentaf45ee2d8be0d36436d3714f8b6e71cbc4115098 (diff)
downloadsway-0a0cf4540ab57ba4af6fb547fd5c1a1df61fb8cf.tar.xz
Fix quote handling for commands
Quotes are now stripped for all arguments and stripped before anything is unescaped
-rw-r--r--sway/commands.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/sway/commands.c b/sway/commands.c
index bff230f7..03761c52 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -391,14 +391,12 @@ struct cmd_results *config_command(char *exec) {
// Var replacement, for all but first argument of set
// TODO commands
for (i = handler->handle == cmd_set ? 2 : 1; i < argc; ++i) {
+ if (*argv[i] == '\"' || *argv[i] == '\'') {
+ strip_quotes(argv[i]);
+ }
argv[i] = do_var_replacement(argv[i]);
unescape_string(argv[i]);
}
- // Strip quotes for first argument.
- // TODO This part needs to be handled much better
- if (argc>1 && (*argv[1] == '\"' || *argv[1] == '\'')) {
- strip_quotes(argv[1]);
- }
if (handler->handle) {
results = handler->handle(argc-1, argv+1);
} else {
@@ -422,11 +420,6 @@ struct cmd_results *config_subcommand(char **argv, int argc,
char *input = argv[0] ? argv[0] : "(empty)";
return cmd_results_new(CMD_INVALID, input, "Unknown/invalid command");
}
- // Strip quotes for first argument.
- // TODO This part needs to be handled much better
- if (argc > 1 && (*argv[1] == '\"' || *argv[1] == '\'')) {
- strip_quotes(argv[1]);
- }
if (handler->handle) {
return handler->handle(argc - 1, argv + 1);
}