diff options
Diffstat (limited to 'sway/commands.c')
-rw-r--r-- | sway/commands.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sway/commands.c b/sway/commands.c index f6326038..9f6e5032 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -169,15 +169,18 @@ static struct cmd_results *cmd_assign(int argc, char **argv) { | |||
169 | 169 | ||
170 | char *criteria = *argv++; | 170 | char *criteria = *argv++; |
171 | 171 | ||
172 | if (strncmp(*argv, "→", 1) == 0) { | 172 | if (strncmp(*argv, "→", strlen("→")) == 0) { |
173 | if (argc < 3) { | ||
174 | return cmd_results_new(CMD_INVALID, "assign", "Missing workspace"); | ||
175 | } | ||
173 | argv++; | 176 | argv++; |
174 | } | 177 | } |
175 | 178 | ||
176 | char *movecmd = "move container to workspace "; | 179 | char *movecmd = "move container to workspace "; |
177 | int arglen = strlen(*argv); | 180 | int arglen = strlen(movecmd) + strlen(*argv) + 1; |
178 | char *cmdlist = calloc(1, sizeof(movecmd) + arglen); | 181 | char *cmdlist = calloc(1, arglen); |
179 | 182 | ||
180 | sprintf(cmdlist, "%s%s", movecmd, *argv); | 183 | snprintf(cmdlist, arglen, "%s%s", movecmd, *argv); |
181 | 184 | ||
182 | struct criteria *crit = malloc(sizeof(struct criteria)); | 185 | struct criteria *crit = malloc(sizeof(struct criteria)); |
183 | crit->crit_raw = strdup(criteria); | 186 | crit->crit_raw = strdup(criteria); |