diff options
-rw-r--r-- | include/sway/commands.h | 6 | ||||
-rw-r--r-- | sway/commands/exec.c | 7 | ||||
-rw-r--r-- | sway/commands/exec_always.c | 20 |
3 files changed, 27 insertions, 6 deletions
diff --git a/include/sway/commands.h b/include/sway/commands.h index 4a2f8c20..07730f98 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h | |||
@@ -97,6 +97,12 @@ void container_resize_tiled(struct sway_container *parent, uint32_t axis, | |||
97 | struct sway_container *container_find_resize_parent(struct sway_container *con, | 97 | struct sway_container *container_find_resize_parent(struct sway_container *con, |
98 | uint32_t edge); | 98 | uint32_t edge); |
99 | 99 | ||
100 | /** | ||
101 | * Handlers shared by exec and exec_always. | ||
102 | */ | ||
103 | sway_cmd cmd_exec_validate; | ||
104 | sway_cmd cmd_exec_process; | ||
105 | |||
100 | sway_cmd cmd_assign; | 106 | sway_cmd cmd_assign; |
101 | sway_cmd cmd_bar; | 107 | sway_cmd cmd_bar; |
102 | sway_cmd cmd_bindcode; | 108 | sway_cmd cmd_bindcode; |
diff --git a/sway/commands/exec.c b/sway/commands/exec.c index 87d90716..2c6f3d2d 100644 --- a/sway/commands/exec.c +++ b/sway/commands/exec.c | |||
@@ -5,12 +5,15 @@ | |||
5 | #include "stringop.h" | 5 | #include "stringop.h" |
6 | 6 | ||
7 | struct cmd_results *cmd_exec(int argc, char **argv) { | 7 | struct cmd_results *cmd_exec(int argc, char **argv) { |
8 | if (!config->active) return cmd_results_new(CMD_DEFER, NULL); | 8 | struct cmd_results *error = NULL; |
9 | if ((error = cmd_exec_validate(argc, argv))) { | ||
10 | return error; | ||
11 | } | ||
9 | if (config->reloading) { | 12 | if (config->reloading) { |
10 | char *args = join_args(argv, argc); | 13 | char *args = join_args(argv, argc); |
11 | sway_log(SWAY_DEBUG, "Ignoring 'exec %s' due to reload", args); | 14 | sway_log(SWAY_DEBUG, "Ignoring 'exec %s' due to reload", args); |
12 | free(args); | 15 | free(args); |
13 | return cmd_results_new(CMD_SUCCESS, NULL); | 16 | return cmd_results_new(CMD_SUCCESS, NULL); |
14 | } | 17 | } |
15 | return cmd_exec_always(argc, argv); | 18 | return cmd_exec_process(argc, argv); |
16 | } | 19 | } |
diff --git a/sway/commands/exec_always.c b/sway/commands/exec_always.c index a5724295..39e48a44 100644 --- a/sway/commands/exec_always.c +++ b/sway/commands/exec_always.c | |||
@@ -13,15 +13,19 @@ | |||
13 | #include "log.h" | 13 | #include "log.h" |
14 | #include "stringop.h" | 14 | #include "stringop.h" |
15 | 15 | ||
16 | struct cmd_results *cmd_exec_always(int argc, char **argv) { | 16 | struct cmd_results *cmd_exec_validate(int argc, char **argv) { |
17 | struct cmd_results *error = NULL; | 17 | struct cmd_results *error = NULL; |
18 | if (!config->active || config->validating) { | ||
19 | return cmd_results_new(CMD_DEFER, NULL); | ||
20 | } | ||
21 | if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { | 18 | if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { |
22 | return error; | 19 | return error; |
23 | } | 20 | } |
21 | if (!config->active || config->validating) { | ||
22 | return cmd_results_new(CMD_DEFER, NULL); | ||
23 | } | ||
24 | return error; | ||
25 | } | ||
24 | 26 | ||
27 | struct cmd_results *cmd_exec_process(int argc, char **argv) { | ||
28 | struct cmd_results *error = NULL; | ||
25 | char *tmp = NULL; | 29 | char *tmp = NULL; |
26 | if (strcmp(argv[0], "--no-startup-id") == 0) { | 30 | if (strcmp(argv[0], "--no-startup-id") == 0) { |
27 | sway_log(SWAY_INFO, "exec switch '--no-startup-id' not supported, ignored."); | 31 | sway_log(SWAY_INFO, "exec switch '--no-startup-id' not supported, ignored."); |
@@ -92,3 +96,11 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) { | |||
92 | 96 | ||
93 | return cmd_results_new(CMD_SUCCESS, NULL); | 97 | return cmd_results_new(CMD_SUCCESS, NULL); |
94 | } | 98 | } |
99 | |||
100 | struct cmd_results *cmd_exec_always(int argc, char **argv) { | ||
101 | struct cmd_results *error; | ||
102 | if ((error = cmd_exec_validate(argc, argv))) { | ||
103 | return error; | ||
104 | } | ||
105 | return cmd_exec_process(argc, argv); | ||
106 | } | ||