diff --git a/include/sway/commands.h b/include/sway/commands.h index 982125c19..20a5344db 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h @@ -6,7 +6,7 @@ struct sway_container; -typedef struct cmd_results *sway_cmd(int argc, char **argv); +typedef struct cmd_results sway_cmd(int argc, char **argv); struct cmd_handler { char *command; @@ -43,7 +43,7 @@ enum expected_args { EXPECTED_EQUAL_TO }; -struct cmd_results *checkarg(int argc, const char *name, +bool checkarg(struct cmd_results *error, int argc, const char *name, enum expected_args type, int val); struct cmd_handler *find_handler(char *line, struct cmd_handler *cmd_handlers, @@ -63,24 +63,24 @@ list_t *execute_command(char *command, struct sway_seat *seat, * * Do not use this under normal conditions. */ -struct cmd_results *config_command(char *command, char **new_block); +struct cmd_results config_command(char *command, char **new_block); /** * Parse and handle a sub command */ -struct cmd_results *config_subcommand(char **argv, int argc, +struct cmd_results config_subcommand(char **argv, int argc, struct cmd_handler *handlers, size_t handlers_size); /* * Parses a command policy rule. */ -struct cmd_results *config_commands_command(char *exec); +struct cmd_results config_commands_command(char *exec); /** - * Allocates a cmd_results object. + * Fills in and returns a cmd_results object. */ -struct cmd_results *cmd_results_new(enum cmd_status status, const char *error, ...); +struct cmd_results cmd_results_new(enum cmd_status status, const char *error, ...); /** - * Frees a cmd_results object. + * Frees the contents of a cmd_results object. */ -void free_cmd_results(struct cmd_results *results); +void free_cmd_results(struct cmd_results results); /** * Serializes a list of cmd_results to a JSON string. * @@ -88,7 +88,7 @@ void free_cmd_results(struct cmd_results *results); */ char *cmd_results_to_json(list_t *res_list); -struct cmd_results *add_color(char *buffer, const char *color); +struct cmd_results add_color(char *buffer, const char *color); /** * TODO: Move this function and its dependent functions to container.c. diff --git a/sway/commands.c b/sway/commands.c index e7f1eafe7..b7fa1e863 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -16,8 +16,9 @@ #include "stringop.h" #include "log.h" -// Returns error object, or NULL if check succeeds. -struct cmd_results *checkarg(int argc, const char *name, enum expected_args type, int val) { +// Returns true and sets error object, or false if check succeeds. +bool checkarg(struct cmd_results *error, int argc, const char *name, + enum expected_args type, int val) { const char *error_name = NULL; switch (type) { case EXPECTED_AT_LEAST: @@ -35,11 +36,13 @@ struct cmd_results *checkarg(int argc, const char *name, enum expected_args type error_name = ""; } } - return error_name ? - cmd_results_new(CMD_INVALID, "Invalid %s command " - "(expected %s%d argument%s, got %d)", - name, error_name, val, val != 1 ? "s" : "", argc) - : NULL; + if (error_name) { + *error = cmd_results_new(CMD_INVALID, "Invalid %s command " + "(expected %s%d argument%s, got %d)", name, error_name, + val, val != 1 ? "s" : "", argc); + return true; + } + return false; } /* Keep alphabetized */ @@ -230,8 +233,15 @@ list_t *execute_command(char *_exec, struct sway_seat *seat, char *error = NULL; struct criteria *criteria = criteria_parse(head, &error); if (!criteria) { - list_add(res_list, - cmd_results_new(CMD_INVALID, "%s", error)); + struct cmd_results *res = malloc(sizeof(struct cmd_results)); + if (!res) { + sway_log(SWAY_ERROR, + "Failed to allocate command results"); + free(error); + goto cleanup; + } + *res = cmd_results_new(CMD_INVALID, "%s", error); + list_add(res_list, res); free(error); goto cleanup; } @@ -265,10 +275,18 @@ list_t *execute_command(char *_exec, struct sway_seat *seat, } } } + struct cmd_results *res = malloc(sizeof(struct cmd_results)); + if (!res) { + sway_log(SWAY_ERROR, "Failed to allocate command results"); + free_argv(argc, argv); + goto cleanup; + } + struct cmd_handler *handler = find_core_handler(argv[0]); if (!handler) { - list_add(res_list, cmd_results_new(CMD_INVALID, - "Unknown/invalid command '%s'", argv[0])); + *res = cmd_results_new(CMD_INVALID, + "Unknown/invalid command '%s'", argv[0]); + list_add(res_list, res); free_argv(argc, argv); goto cleanup; } @@ -283,38 +301,38 @@ list_t *execute_command(char *_exec, struct sway_seat *seat, struct sway_node *node = con ? &con->node : seat_get_focus_inactive(seat, &root->node); set_config_node(node); - struct cmd_results *res = handler->handle(argc-1, argv+1); + *res = handler->handle(argc-1, argv+1); list_add(res_list, res); if (res->status == CMD_INVALID) { free_argv(argc, argv); goto cleanup; } } else if (views->length == 0) { - list_add(res_list, - cmd_results_new(CMD_FAILURE, "No matching node.")); + *res = cmd_results_new(CMD_FAILURE, "No matching node."); + list_add(res_list, res); } else { - struct cmd_results *fail_res = NULL; + struct cmd_results fail_res = cmd_results_new(CMD_SUCCESS, NULL); for (int i = 0; i < views->length; ++i) { struct sway_view *view = views->items[i]; set_config_node(&view->container->node); - struct cmd_results *res = handler->handle(argc-1, argv+1); - if (res->status == CMD_SUCCESS) { - free_cmd_results(res); + struct cmd_results hres = handler->handle(argc-1, argv+1); + if (hres.status == CMD_SUCCESS) { + free_cmd_results(hres); } else { // last failure will take precedence - if (fail_res) { - free_cmd_results(fail_res); - } - fail_res = res; - if (res->status == CMD_INVALID) { - list_add(res_list, fail_res); + free_cmd_results(fail_res); + fail_res = hres; + if (hres.status == CMD_INVALID) { + *res = fail_res; + list_add(res_list, res); free_argv(argc, argv); goto cleanup; } } } - list_add(res_list, - fail_res ? fail_res : cmd_results_new(CMD_SUCCESS, NULL)); + + *res = fail_res; + list_add(res_list, res); } free_argv(argc, argv); } while(head); @@ -331,8 +349,8 @@ cleanup: // be chained together) // 4) execute_command handles all state internally while config_command has // some state handled outside (notably the block mode, in read_config) -struct cmd_results *config_command(char *exec, char **new_block) { - struct cmd_results *results = NULL; +struct cmd_results config_command(char *exec, char **new_block) { + struct cmd_results results; int argc; char **argv = split_args(exec, &argc); @@ -417,7 +435,7 @@ cleanup: return results; } -struct cmd_results *config_subcommand(char **argv, int argc, +struct cmd_results config_subcommand(char **argv, int argc, struct cmd_handler *handlers, size_t handlers_size) { char *command = join_args(argv, argc); sway_log(SWAY_DEBUG, "Subcommand: %s", command); @@ -436,8 +454,8 @@ struct cmd_results *config_subcommand(char **argv, int argc, "The command '%s' is shimmed, but unimplemented", argv[0]); } -struct cmd_results *config_commands_command(char *exec) { - struct cmd_results *results = NULL; +struct cmd_results config_commands_command(char *exec) { + struct cmd_results results; int argc; char **argv = split_args(exec, &argc); if (!argc) { @@ -517,14 +535,10 @@ cleanup: return results; } -struct cmd_results *cmd_results_new(enum cmd_status status, +struct cmd_results cmd_results_new(enum cmd_status status, const char *format, ...) { - struct cmd_results *results = malloc(sizeof(struct cmd_results)); - if (!results) { - sway_log(SWAY_ERROR, "Unable to allocate command results"); - return NULL; - } - results->status = status; + struct cmd_results results; + results.status = status; if (format) { char *error = malloc(256); va_list args; @@ -533,18 +547,15 @@ struct cmd_results *cmd_results_new(enum cmd_status status, vsnprintf(error, 256, format, args); } va_end(args); - results->error = error; + results.error = error; } else { - results->error = NULL; + results.error = NULL; } return results; } -void free_cmd_results(struct cmd_results *results) { - if (results->error) { - free(results->error); - } - free(results); +void free_cmd_results(struct cmd_results results) { + free(results.error); } char *cmd_results_to_json(list_t *res_list) { @@ -573,7 +584,7 @@ char *cmd_results_to_json(list_t *res_list) { * * return error object, or NULL if color is valid. */ -struct cmd_results *add_color(char *buffer, const char *color) { +struct cmd_results add_color(char *buffer, const char *color) { int len = strlen(color); if (len != 7 && len != 9) { return cmd_results_new(CMD_INVALID, @@ -596,5 +607,5 @@ struct cmd_results *add_color(char *buffer, const char *color) { buffer[8] = 'f'; } buffer[9] = '\0'; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/assign.c b/sway/commands/assign.c index 976bc3cc5..f074ceeed 100644 --- a/sway/commands/assign.c +++ b/sway/commands/assign.c @@ -7,9 +7,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_assign(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "assign", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_assign(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "assign", EXPECTED_AT_LEAST, 2)) { return error; } diff --git a/sway/commands/bar.c b/sway/commands/bar.c index 7370910d2..718e42438 100644 --- a/sway/commands/bar.c +++ b/sway/commands/bar.c @@ -51,9 +51,9 @@ static bool is_subcommand(char *name) { find_handler(name, bar_config_handlers, sizeof(bar_config_handlers)); } -struct cmd_results *cmd_bar(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "bar", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_bar(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "bar", EXPECTED_AT_LEAST, 2)) { return error; } @@ -98,7 +98,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) { config->current_bar->id = id; } - struct cmd_results *res = NULL; + struct cmd_results res; if (find_handler(argv[0], bar_config_handlers, sizeof(bar_config_handlers))) { if (config->reading) { @@ -112,7 +112,7 @@ struct cmd_results *cmd_bar(int argc, char **argv) { res = config_subcommand(argv, argc, bar_handlers, sizeof(bar_handlers)); } - if (res && res->status != CMD_SUCCESS) { + if (res.status != CMD_SUCCESS) { if (id) { free_bar_config(config->current_bar); id = NULL; diff --git a/sway/commands/bar/bind.c b/sway/commands/bar/bind.c index b4b5bc459..e1554bdea 100644 --- a/sway/commands/bar/bind.c +++ b/sway/commands/bar/bind.c @@ -9,7 +9,7 @@ #include "log.h" #include "stringop.h" -static struct cmd_results *binding_add(struct bar_binding *binding, +static struct cmd_results binding_add(struct bar_binding *binding, list_t *mode_bindings) { const char *name = get_mouse_button_name(binding->button); bool overwritten = false; @@ -35,7 +35,7 @@ static struct cmd_results *binding_add(struct bar_binding *binding, return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *binding_remove(struct bar_binding *binding, +static struct cmd_results binding_remove(struct bar_binding *binding, list_t *mode_bindings) { const char *name = get_mouse_button_name(binding->button); for (int i = 0; i < mode_bindings->length; i++) { @@ -52,7 +52,7 @@ static struct cmd_results *binding_remove(struct bar_binding *binding, } } - struct cmd_results *error = cmd_results_new(CMD_FAILURE, "Could not " + struct cmd_results error = cmd_results_new(CMD_FAILURE, "Could not " "find binding for [bar %s]" " Button %u (%s)%s", config->current_bar->id, binding->button, name, binding->release ? " - release" : ""); @@ -60,7 +60,7 @@ static struct cmd_results *binding_remove(struct bar_binding *binding, return error; } -static struct cmd_results *bar_cmd_bind(int argc, char **argv, bool code, +static struct cmd_results bar_cmd_bind(int argc, char **argv, bool code, bool unbind) { int minargs = 2; const char *command; @@ -71,8 +71,8 @@ static struct cmd_results *bar_cmd_bind(int argc, char **argv, bool code, command = code ? "bar bindcode" : "bar bindsym"; } - struct cmd_results *error = NULL; - if ((error = checkarg(argc, command, EXPECTED_AT_LEAST, minargs))) { + struct cmd_results error; + if (checkarg(&error, argc, command, EXPECTED_AT_LEAST, minargs)) { return error; } @@ -112,18 +112,18 @@ static struct cmd_results *bar_cmd_bind(int argc, char **argv, bool code, return binding_add(binding, bindings); } -struct cmd_results *bar_cmd_bindcode(int argc, char **argv) { +struct cmd_results bar_cmd_bindcode(int argc, char **argv) { return bar_cmd_bind(argc, argv, true, false); } -struct cmd_results *bar_cmd_bindsym(int argc, char **argv) { +struct cmd_results bar_cmd_bindsym(int argc, char **argv) { return bar_cmd_bind(argc, argv, false, false); } -struct cmd_results *bar_cmd_unbindcode(int argc, char **argv) { +struct cmd_results bar_cmd_unbindcode(int argc, char **argv) { return bar_cmd_bind(argc, argv, true, true); } -struct cmd_results *bar_cmd_unbindsym(int argc, char **argv) { +struct cmd_results bar_cmd_unbindsym(int argc, char **argv) { return bar_cmd_bind(argc, argv, false, true); } diff --git a/sway/commands/bar/binding_mode_indicator.c b/sway/commands/bar/binding_mode_indicator.c index b58d8a838..791f5a079 100644 --- a/sway/commands/bar/binding_mode_indicator.c +++ b/sway/commands/bar/binding_mode_indicator.c @@ -4,10 +4,10 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_binding_mode_indicator(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, - "binding_mode_indicator", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_binding_mode_indicator(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, + "binding_mode_indicator", EXPECTED_EQUAL_TO, 1)) { return error; } config->current_bar->binding_mode_indicator = diff --git a/sway/commands/bar/colors.c b/sway/commands/bar/colors.c index 7921db0de..d3a7e3b19 100644 --- a/sway/commands/bar/colors.c +++ b/sway/commands/bar/colors.c @@ -16,47 +16,43 @@ static struct cmd_handler bar_colors_handlers[] = { { "urgent_workspace", bar_colors_cmd_urgent_workspace }, }; -static struct cmd_results *parse_single_color(char **color, +static struct cmd_results parse_single_color(char **color, const char *cmd_name, int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 1))) { + struct cmd_results error; + if (checkarg(&error, argc, cmd_name, EXPECTED_EQUAL_TO, 1)) { return error; } if (!*color && !(*color = malloc(10))) { - return NULL; + return cmd_results_new(CMD_FAILURE, "Allocation failure"); } - error = add_color(*color, argv[0]); - if (error) { - return error; - } - return cmd_results_new(CMD_SUCCESS, NULL); + return add_color(*color, argv[0]); } -static struct cmd_results *parse_three_colors(char ***colors, +static struct cmd_results parse_three_colors(char ***colors, const char *cmd_name, int argc, char **argv) { - struct cmd_results *error = NULL; + struct cmd_results error; if (argc != 3) { return cmd_results_new(CMD_INVALID, "Command '%s' requires exactly three color values", cmd_name); } for (size_t i = 0; i < 3; i++) { if (!*colors[i] && !(*(colors[i]) = malloc(10))) { - return NULL; + return cmd_results_new(CMD_FAILURE, "Allocation failure"); } error = add_color(*(colors[i]), argv[i]); - if (error) { + if (error.status != CMD_SUCCESS) { return error; } } return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *bar_cmd_colors(int argc, char **argv) { +struct cmd_results bar_cmd_colors(int argc, char **argv) { return config_subcommand(argv, argc, bar_colors_handlers, sizeof(bar_colors_handlers)); } -struct cmd_results *bar_colors_cmd_active_workspace(int argc, char **argv) { +struct cmd_results bar_colors_cmd_active_workspace(int argc, char **argv) { char **colors[3] = { &(config->current_bar->colors.active_workspace_border), &(config->current_bar->colors.active_workspace_bg), @@ -65,17 +61,17 @@ struct cmd_results *bar_colors_cmd_active_workspace(int argc, char **argv) { return parse_three_colors(colors, "active_workspace", argc, argv); } -struct cmd_results *bar_colors_cmd_background(int argc, char **argv) { +struct cmd_results bar_colors_cmd_background(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.background), "background", argc, argv); } -struct cmd_results *bar_colors_cmd_focused_background(int argc, char **argv) { +struct cmd_results bar_colors_cmd_focused_background(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.focused_background), "focused_background", argc, argv); } -struct cmd_results *bar_colors_cmd_binding_mode(int argc, char **argv) { +struct cmd_results bar_colors_cmd_binding_mode(int argc, char **argv) { char **colors[3] = { &(config->current_bar->colors.binding_mode_border), &(config->current_bar->colors.binding_mode_bg), @@ -84,7 +80,7 @@ struct cmd_results *bar_colors_cmd_binding_mode(int argc, char **argv) { return parse_three_colors(colors, "binding_mode", argc, argv); } -struct cmd_results *bar_colors_cmd_focused_workspace(int argc, char **argv) { +struct cmd_results bar_colors_cmd_focused_workspace(int argc, char **argv) { char **colors[3] = { &(config->current_bar->colors.focused_workspace_border), &(config->current_bar->colors.focused_workspace_bg), @@ -93,7 +89,7 @@ struct cmd_results *bar_colors_cmd_focused_workspace(int argc, char **argv) { return parse_three_colors(colors, "focused_workspace", argc, argv); } -struct cmd_results *bar_colors_cmd_inactive_workspace(int argc, char **argv) { +struct cmd_results bar_colors_cmd_inactive_workspace(int argc, char **argv) { char **colors[3] = { &(config->current_bar->colors.inactive_workspace_border), &(config->current_bar->colors.inactive_workspace_bg), @@ -102,27 +98,27 @@ struct cmd_results *bar_colors_cmd_inactive_workspace(int argc, char **argv) { return parse_three_colors(colors, "inactive_workspace", argc, argv); } -struct cmd_results *bar_colors_cmd_separator(int argc, char **argv) { +struct cmd_results bar_colors_cmd_separator(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.separator), "separator", argc, argv); } -struct cmd_results *bar_colors_cmd_focused_separator(int argc, char **argv) { +struct cmd_results bar_colors_cmd_focused_separator(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.focused_separator), "focused_separator", argc, argv); } -struct cmd_results *bar_colors_cmd_statusline(int argc, char **argv) { +struct cmd_results bar_colors_cmd_statusline(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.statusline), "statusline", argc, argv); } -struct cmd_results *bar_colors_cmd_focused_statusline(int argc, char **argv) { +struct cmd_results bar_colors_cmd_focused_statusline(int argc, char **argv) { return parse_single_color(&(config->current_bar->colors.focused_statusline), "focused_statusline", argc, argv); } -struct cmd_results *bar_colors_cmd_urgent_workspace(int argc, char **argv) { +struct cmd_results bar_colors_cmd_urgent_workspace(int argc, char **argv) { char **colors[3] = { &(config->current_bar->colors.urgent_workspace_border), &(config->current_bar->colors.urgent_workspace_bg), diff --git a/sway/commands/bar/font.c b/sway/commands/bar/font.c index 62987f3e3..f4cd16bad 100644 --- a/sway/commands/bar/font.c +++ b/sway/commands/bar/font.c @@ -4,9 +4,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *bar_cmd_font(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "font", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_font(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "font", EXPECTED_AT_LEAST, 1)) { return error; } char *font = join_args(argv, argc); diff --git a/sway/commands/bar/gaps.c b/sway/commands/bar/gaps.c index f99966b40..12bd31f21 100644 --- a/sway/commands/bar/gaps.c +++ b/sway/commands/bar/gaps.c @@ -5,12 +5,12 @@ #include "sway/ipc-server.h" #include "log.h" -struct cmd_results *bar_cmd_gaps(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "gaps", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_gaps(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "gaps", EXPECTED_AT_LEAST, 1)) { return error; } - if ((error = checkarg(argc, "gaps", EXPECTED_AT_MOST, 4))) { + if (checkarg(&error, argc, "gaps", EXPECTED_AT_MOST, 4)) { return error; } diff --git a/sway/commands/bar/height.c b/sway/commands/bar/height.c index 945eb7071..982e6fa01 100644 --- a/sway/commands/bar/height.c +++ b/sway/commands/bar/height.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_height(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "height", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_height(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "height", EXPECTED_EQUAL_TO, 1)) { return error; } int height = atoi(argv[0]); diff --git a/sway/commands/bar/hidden_state.c b/sway/commands/bar/hidden_state.c index 1f08a5d2e..cc6bf9a22 100644 --- a/sway/commands/bar/hidden_state.c +++ b/sway/commands/bar/hidden_state.c @@ -6,7 +6,7 @@ #include "sway/ipc-server.h" #include "log.h" -static struct cmd_results *bar_set_hidden_state(struct bar_config *bar, +static struct cmd_results bar_set_hidden_state(struct bar_config *bar, const char *hidden_state) { char *old_state = bar->hidden_state; if (strcasecmp("toggle", hidden_state) == 0 && !config->reading) { @@ -31,15 +31,15 @@ static struct cmd_results *bar_set_hidden_state(struct bar_config *bar, } // free old mode free(old_state); - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *bar_cmd_hidden_state(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "hidden_state", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_hidden_state(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "hidden_state", EXPECTED_AT_LEAST, 1)) { return error; } - if ((error = checkarg(argc, "hidden_state", EXPECTED_AT_MOST, 2))) { + if (checkarg(&error, argc, "hidden_state", EXPECTED_AT_MOST, 2)) { return error; } if (config->reading && argc > 1) { @@ -55,20 +55,22 @@ struct cmd_results *bar_cmd_hidden_state(int argc, char **argv) { const char *state = argv[0]; if (config->reading) { - error = bar_set_hidden_state(config->current_bar, state); + return bar_set_hidden_state(config->current_bar, state); } else { const char *id = argc == 2 ? argv[1] : NULL; for (int i = 0; i < config->bars->length; ++i) { struct bar_config *bar = config->bars->items[i]; if (id) { if (strcmp(id, bar->id) == 0) { - error = bar_set_hidden_state(bar, state); - break; + return bar_set_hidden_state(bar, state); + } + } else { + error = bar_set_hidden_state(bar, state); + if (error.status != CMD_SUCCESS) { + return error; } - } else if ((error = bar_set_hidden_state(bar, state))) { - break; } } + return cmd_results_new(CMD_SUCCESS, NULL); } - return error ? error : cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/bar/icon_theme.c b/sway/commands/bar/icon_theme.c index 6ac07843d..61c4f9ed3 100644 --- a/sway/commands/bar/icon_theme.c +++ b/sway/commands/bar/icon_theme.c @@ -5,10 +5,10 @@ #include "sway/config.h" #include "log.h" -struct cmd_results *bar_cmd_icon_theme(int argc, char **argv) { +struct cmd_results bar_cmd_icon_theme(int argc, char **argv) { #if HAVE_TRAY - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "icon_theme", EXPECTED_EQUAL_TO, 1))) { + struct cmd_results error; + if (checkarg(&error, argc, "icon_theme", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/id.c b/sway/commands/bar/id.c index a9a617430..ab6bec6cd 100644 --- a/sway/commands/bar/id.c +++ b/sway/commands/bar/id.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_id(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "id", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_id(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "id", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/mode.c b/sway/commands/bar/mode.c index 8b3fb275a..a838e36f1 100644 --- a/sway/commands/bar/mode.c +++ b/sway/commands/bar/mode.c @@ -6,7 +6,7 @@ #include "sway/ipc-server.h" #include "log.h" -static struct cmd_results *bar_set_mode(struct bar_config *bar, const char *mode) { +static struct cmd_results bar_set_mode(struct bar_config *bar, const char *mode) { char *old_mode = bar->mode; if (strcasecmp("toggle", mode) == 0 && !config->reading) { if (strcasecmp("dock", bar->mode) == 0) { @@ -35,15 +35,15 @@ static struct cmd_results *bar_set_mode(struct bar_config *bar, const char *mode // free old mode free(old_mode); - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *bar_cmd_mode(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "mode", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_mode(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "mode", EXPECTED_AT_LEAST, 1)) { return error; } - if ((error = checkarg(argc, "mode", EXPECTED_AT_MOST, 2))) { + if (checkarg(&error, argc, "mode", EXPECTED_AT_MOST, 2)) { return error; } if (config->reading && argc > 1) { @@ -59,20 +59,22 @@ struct cmd_results *bar_cmd_mode(int argc, char **argv) { const char *mode = argv[0]; if (config->reading) { - error = bar_set_mode(config->current_bar, mode); + return bar_set_mode(config->current_bar, mode); } else { const char *id = argc == 2 ? argv[1] : NULL; for (int i = 0; i < config->bars->length; ++i) { struct bar_config *bar = config->bars->items[i]; if (id) { if (strcmp(id, bar->id) == 0) { - error = bar_set_mode(bar, mode); - break; + return bar_set_mode(bar, mode); + } + } else { + error = bar_set_mode(bar, mode); + if (error.status != CMD_SUCCESS) { + return error; } - } else if ((error = bar_set_mode(bar, mode))) { - break; } } + return cmd_results_new(CMD_SUCCESS, NULL); } - return error ? error : cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/bar/modifier.c b/sway/commands/bar/modifier.c index 983d21795..0e29969c8 100644 --- a/sway/commands/bar/modifier.c +++ b/sway/commands/bar/modifier.c @@ -4,9 +4,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *bar_cmd_modifier(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "modifier", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_modifier(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "modifier", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/output.c b/sway/commands/bar/output.c index cac1d0568..4d1137214 100644 --- a/sway/commands/bar/output.c +++ b/sway/commands/bar/output.c @@ -5,9 +5,9 @@ #include "list.h" #include "log.h" -struct cmd_results *bar_cmd_output(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "output", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_output(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "output", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/pango_markup.c b/sway/commands/bar/pango_markup.c index ee51390da..bb45ed48b 100644 --- a/sway/commands/bar/pango_markup.c +++ b/sway/commands/bar/pango_markup.c @@ -4,9 +4,9 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_pango_markup(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "pango_markup", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_pango_markup(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "pango_markup", EXPECTED_EQUAL_TO, 1)) { return error; } config->current_bar->pango_markup = diff --git a/sway/commands/bar/position.c b/sway/commands/bar/position.c index b207de0bf..594d96da0 100644 --- a/sway/commands/bar/position.c +++ b/sway/commands/bar/position.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_position(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "position", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_position(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "position", EXPECTED_EQUAL_TO, 1)) { return error; } char *valid[] = { "top", "bottom" }; diff --git a/sway/commands/bar/separator_symbol.c b/sway/commands/bar/separator_symbol.c index 6737d4d24..9a0449f31 100644 --- a/sway/commands/bar/separator_symbol.c +++ b/sway/commands/bar/separator_symbol.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_separator_symbol(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "separator_symbol", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_separator_symbol(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "separator_symbol", EXPECTED_EQUAL_TO, 1)) { return error; } free(config->current_bar->separator_symbol); diff --git a/sway/commands/bar/status_command.c b/sway/commands/bar/status_command.c index bb92e8e07..4163d7fa3 100644 --- a/sway/commands/bar/status_command.c +++ b/sway/commands/bar/status_command.c @@ -3,9 +3,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *bar_cmd_status_command(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "status_command", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_status_command(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "status_command", EXPECTED_AT_LEAST, 1)) { return error; } free(config->current_bar->status_command); diff --git a/sway/commands/bar/status_edge_padding.c b/sway/commands/bar/status_edge_padding.c index 75ef86f09..0c4c3f09a 100644 --- a/sway/commands/bar/status_edge_padding.c +++ b/sway/commands/bar/status_edge_padding.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_status_edge_padding(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "status_edge_padding", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_status_edge_padding(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "status_edge_padding", EXPECTED_EQUAL_TO, 1)) { return error; } char *end; diff --git a/sway/commands/bar/status_padding.c b/sway/commands/bar/status_padding.c index 0c65e516e..efd95a64d 100644 --- a/sway/commands/bar/status_padding.c +++ b/sway/commands/bar/status_padding.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *bar_cmd_status_padding(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "status_padding", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_status_padding(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "status_padding", EXPECTED_EQUAL_TO, 1)) { return error; } char *end; diff --git a/sway/commands/bar/strip_workspace_name.c b/sway/commands/bar/strip_workspace_name.c index 764321a89..8ee651f01 100644 --- a/sway/commands/bar/strip_workspace_name.c +++ b/sway/commands/bar/strip_workspace_name.c @@ -4,10 +4,10 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_strip_workspace_name(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, - "strip_workspace_name", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_strip_workspace_name(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, + "strip_workspace_name", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/strip_workspace_numbers.c b/sway/commands/bar/strip_workspace_numbers.c index 2d7fe1a7f..9394bcb83 100644 --- a/sway/commands/bar/strip_workspace_numbers.c +++ b/sway/commands/bar/strip_workspace_numbers.c @@ -4,10 +4,10 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, - "strip_workspace_numbers", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_strip_workspace_numbers(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, + "strip_workspace_numbers", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/swaybar_command.c b/sway/commands/bar/swaybar_command.c index 0892a898a..38729ac91 100644 --- a/sway/commands/bar/swaybar_command.c +++ b/sway/commands/bar/swaybar_command.c @@ -3,9 +3,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *bar_cmd_swaybar_command(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "swaybar_command", EXPECTED_AT_LEAST, 1))) { +struct cmd_results bar_cmd_swaybar_command(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "swaybar_command", EXPECTED_AT_LEAST, 1)) { return error; } free(config->current_bar->swaybar_command); diff --git a/sway/commands/bar/tray_bind.c b/sway/commands/bar/tray_bind.c index 243834bad..cee9addbf 100644 --- a/sway/commands/bar/tray_bind.c +++ b/sway/commands/bar/tray_bind.c @@ -5,11 +5,11 @@ #include "sway/input/cursor.h" #include "log.h" -static struct cmd_results *tray_bind(int argc, char **argv, bool code) { +static struct cmd_results tray_bind(int argc, char **argv, bool code) { #if HAVE_TRAY const char *command = code ? "bar tray_bindcode" : "bar tray_bindsym"; - struct cmd_results *error = NULL; - if ((error = checkarg(argc, command, EXPECTED_EQUAL_TO, 2))) { + struct cmd_results error; + if (checkarg(&error, argc, command, EXPECTED_EQUAL_TO, 2)) { return error; } @@ -86,10 +86,10 @@ static struct cmd_results *tray_bind(int argc, char **argv, bool code) { #endif } -struct cmd_results *bar_cmd_tray_bindcode(int argc, char **argv) { +struct cmd_results bar_cmd_tray_bindcode(int argc, char **argv) { return tray_bind(argc, argv, true); } -struct cmd_results *bar_cmd_tray_bindsym(int argc, char **argv) { +struct cmd_results bar_cmd_tray_bindsym(int argc, char **argv) { return tray_bind(argc, argv, false); } diff --git a/sway/commands/bar/tray_output.c b/sway/commands/bar/tray_output.c index eb3b486e2..7b8928352 100644 --- a/sway/commands/bar/tray_output.c +++ b/sway/commands/bar/tray_output.c @@ -6,10 +6,10 @@ #include "list.h" #include "log.h" -struct cmd_results *bar_cmd_tray_output(int argc, char **argv) { +struct cmd_results bar_cmd_tray_output(int argc, char **argv) { #if HAVE_TRAY - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tray_output", EXPECTED_EQUAL_TO, 1))) { + struct cmd_results error; + if (checkarg(&error, argc, "tray_output", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/bar/tray_padding.c b/sway/commands/bar/tray_padding.c index f90b6003f..174877127 100644 --- a/sway/commands/bar/tray_padding.c +++ b/sway/commands/bar/tray_padding.c @@ -5,13 +5,13 @@ #include "sway/config.h" #include "log.h" -struct cmd_results *bar_cmd_tray_padding(int argc, char **argv) { +struct cmd_results bar_cmd_tray_padding(int argc, char **argv) { #if HAVE_TRAY - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tray_padding", EXPECTED_AT_LEAST, 1))) { + struct cmd_results error; + if (checkarg(&error, argc, "tray_padding", EXPECTED_AT_LEAST, 1)) { return error; } - if ((error = checkarg(argc, "tray_padding", EXPECTED_AT_MOST, 2))) { + if (checkarg(&error, argc, "tray_padding", EXPECTED_AT_MOST, 2)) { return error; } diff --git a/sway/commands/bar/workspace_buttons.c b/sway/commands/bar/workspace_buttons.c index 6bfb16165..c66f1166f 100644 --- a/sway/commands/bar/workspace_buttons.c +++ b/sway/commands/bar/workspace_buttons.c @@ -4,9 +4,9 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_workspace_buttons(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "workspace_buttons", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_workspace_buttons(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "workspace_buttons", EXPECTED_EQUAL_TO, 1)) { return error; } config->current_bar->workspace_buttons = diff --git a/sway/commands/bar/wrap_scroll.c b/sway/commands/bar/wrap_scroll.c index f57e393df..c679136df 100644 --- a/sway/commands/bar/wrap_scroll.c +++ b/sway/commands/bar/wrap_scroll.c @@ -4,9 +4,9 @@ #include "log.h" #include "util.h" -struct cmd_results *bar_cmd_wrap_scroll(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "wrap_scroll", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results bar_cmd_wrap_scroll(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "wrap_scroll", EXPECTED_EQUAL_TO, 1)) { return error; } config->current_bar->wrap_scroll = diff --git a/sway/commands/bind.c b/sway/commands/bind.c index 5ec899826..717ce9b4b 100644 --- a/sway/commands/bind.c +++ b/sway/commands/bind.c @@ -116,7 +116,7 @@ static int key_qsort_cmp(const void *keyp_a, const void *keyp_b) { * the value of *type if the initial type guess was incorrect and if this * was the first identified key. */ -static struct cmd_results *identify_key(const char* name, bool first_key, +static struct cmd_results identify_key(const char* name, bool first_key, uint32_t* key_val, enum binding_input_type* type) { if (*type == BINDING_MOUSECODE) { // check for mouse bindcodes @@ -124,7 +124,7 @@ static struct cmd_results *identify_key(const char* name, bool first_key, uint32_t button = get_mouse_bindcode(name, &message); if (!button) { if (message) { - struct cmd_results *error = + struct cmd_results error = cmd_results_new(CMD_INVALID, message); free(message); return error; @@ -140,7 +140,7 @@ static struct cmd_results *identify_key(const char* name, bool first_key, uint32_t button = get_mouse_bindsym(name, &message); if (!button) { if (message) { - struct cmd_results *error = + struct cmd_results error = cmd_results_new(CMD_INVALID, message); free(message); return error; @@ -158,7 +158,7 @@ static struct cmd_results *identify_key(const char* name, bool first_key, if (button) { *type = BINDING_MOUSECODE; *key_val = button; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } } @@ -179,14 +179,14 @@ static struct cmd_results *identify_key(const char* name, bool first_key, char *message = NULL; uint32_t button = get_mouse_bindsym(name, &message); if (message) { - struct cmd_results *error = + struct cmd_results error = cmd_results_new(CMD_INVALID, message); free(message); return error; } else if (button) { *type = BINDING_MOUSESYM; *key_val = button; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } } @@ -202,10 +202,10 @@ static struct cmd_results *identify_key(const char* name, bool first_key, } *key_val = keysym; } - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *switch_binding_add( +static struct cmd_results switch_binding_add( struct sway_switch_binding *binding, const char *bindtype, const char *switchcombo, bool warn) { list_t *mode_bindings = config->current_mode->switch_bindings; @@ -237,7 +237,7 @@ static struct cmd_results *switch_binding_add( return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *switch_binding_remove( +static struct cmd_results switch_binding_remove( struct sway_switch_binding *binding, const char *bindtype, const char *switchcombo) { list_t *mode_bindings = config->current_mode->switch_bindings; @@ -276,7 +276,7 @@ static struct sway_binding *binding_upsert(struct sway_binding *binding, return NULL; } -static struct cmd_results *binding_add(struct sway_binding *binding, +static struct cmd_results binding_add(struct sway_binding *binding, list_t *mode_bindings, const char *bindtype, const char *keycombo, bool warn) { struct sway_binding *config_binding = binding_upsert(binding, mode_bindings); @@ -300,7 +300,7 @@ static struct cmd_results *binding_add(struct sway_binding *binding, return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *binding_remove(struct sway_binding *binding, +static struct cmd_results binding_remove(struct sway_binding *binding, list_t *mode_bindings, const char *bindtype, const char *keycombo) { for (int i = 0; i < mode_bindings->length; ++i) { @@ -319,7 +319,7 @@ static struct cmd_results *binding_remove(struct sway_binding *binding, "for the given flags", keycombo); } -static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, +static struct cmd_results cmd_bindsym_or_bindcode(int argc, char **argv, bool bindcode, bool unbind) { const char *bindtype; int minargs = 2; @@ -330,8 +330,8 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, bindtype = bindcode ? "bindcode": "bindsym"; } - struct cmd_results *error = NULL; - if ((error = checkarg(argc, bindtype, EXPECTED_AT_LEAST, minargs))) { + struct cmd_results error; + if (checkarg(&error, argc, bindtype, EXPECTED_AT_LEAST, minargs)) { return error; } @@ -431,7 +431,7 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, uint32_t key_val = 0; error = identify_key(split->items[i], binding->keys->length == 0, &key_val, &binding->type); - if (error) { + if (error.status != CMD_SUCCESS) { free_sway_binding(binding); list_free(split); return error; @@ -485,7 +485,7 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, return binding_add(binding, mode_bindings, bindtype, argv[0], warn); } -struct cmd_results *cmd_bind_or_unbind_switch(int argc, char **argv, +struct cmd_results cmd_bind_or_unbind_switch(int argc, char **argv, bool unbind) { int minargs = 2; char *bindtype = "bindswitch"; @@ -494,8 +494,8 @@ struct cmd_results *cmd_bind_or_unbind_switch(int argc, char **argv, bindtype = "unbindswitch"; } - struct cmd_results *error = NULL; - if ((error = checkarg(argc, bindtype, EXPECTED_AT_LEAST, minargs))) { + struct cmd_results error; + if (checkarg(&error, argc, bindtype, EXPECTED_AT_LEAST, minargs)) { return error; } struct sway_switch_binding *binding = calloc(1, sizeof(struct sway_switch_binding)); @@ -566,27 +566,27 @@ struct cmd_results *cmd_bind_or_unbind_switch(int argc, char **argv, return switch_binding_add(binding, bindtype, argv[0], warn); } -struct cmd_results *cmd_bindsym(int argc, char **argv) { +struct cmd_results cmd_bindsym(int argc, char **argv) { return cmd_bindsym_or_bindcode(argc, argv, false, false); } -struct cmd_results *cmd_bindcode(int argc, char **argv) { +struct cmd_results cmd_bindcode(int argc, char **argv) { return cmd_bindsym_or_bindcode(argc, argv, true, false); } -struct cmd_results *cmd_unbindsym(int argc, char **argv) { +struct cmd_results cmd_unbindsym(int argc, char **argv) { return cmd_bindsym_or_bindcode(argc, argv, false, true); } -struct cmd_results *cmd_unbindcode(int argc, char **argv) { +struct cmd_results cmd_unbindcode(int argc, char **argv) { return cmd_bindsym_or_bindcode(argc, argv, true, true); } -struct cmd_results *cmd_bindswitch(int argc, char **argv) { +struct cmd_results cmd_bindswitch(int argc, char **argv) { return cmd_bind_or_unbind_switch(argc, argv, false); } -struct cmd_results *cmd_unbindswitch(int argc, char **argv) { +struct cmd_results cmd_unbindswitch(int argc, char **argv) { return cmd_bind_or_unbind_switch(argc, argv, true); } @@ -630,7 +630,8 @@ void seat_execute_command(struct sway_seat *seat, struct sway_binding *binding) binding->command, results->error); success = false; } - free_cmd_results(results); + free_cmd_results(*results); + free(results); } list_free(res_list); if (success) { diff --git a/sway/commands/border.c b/sway/commands/border.c index 647663acf..035c7e8e4 100644 --- a/sway/commands/border.c +++ b/sway/commands/border.c @@ -56,9 +56,9 @@ static void border_toggle(struct sway_container *con) { } } -struct cmd_results *cmd_border(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "border", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_border(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "border", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/client.c b/sway/commands/client.c index f5c7d90fb..8bf37e219 100644 --- a/sway/commands/client.c +++ b/sway/commands/client.c @@ -53,10 +53,10 @@ static bool parse_color_float(char *hexstring, float dest[static 4]) { return true; } -static struct cmd_results *handle_command(int argc, char **argv, +static struct cmd_results handle_command(int argc, char **argv, struct border_colors *class, char *cmd_name) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 5))) { + struct cmd_results error; + if (checkarg(&error, argc, cmd_name, EXPECTED_EQUAL_TO, 5)) { return error; } @@ -97,23 +97,23 @@ static struct cmd_results *handle_command(int argc, char **argv, return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *cmd_client_focused(int argc, char **argv) { +struct cmd_results cmd_client_focused(int argc, char **argv) { return handle_command(argc, argv, &config->border_colors.focused, "client.focused"); } -struct cmd_results *cmd_client_focused_inactive(int argc, char **argv) { +struct cmd_results cmd_client_focused_inactive(int argc, char **argv) { return handle_command(argc, argv, &config->border_colors.focused_inactive, "client.focused_inactive"); } -struct cmd_results *cmd_client_unfocused(int argc, char **argv) { +struct cmd_results cmd_client_unfocused(int argc, char **argv) { return handle_command(argc, argv, &config->border_colors.unfocused, "client.unfocused"); } -struct cmd_results *cmd_client_urgent(int argc, char **argv) { +struct cmd_results cmd_client_urgent(int argc, char **argv) { return handle_command(argc, argv, &config->border_colors.urgent, "client.urgent"); } -struct cmd_results *cmd_client_noop(int argc, char **argv) { +struct cmd_results cmd_client_noop(int argc, char **argv) { sway_log(SWAY_INFO, "Warning: %s is ignored by sway", argv[-1]); return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/create_output.c b/sway/commands/create_output.c index 9961c8fb9..9c898c923 100644 --- a/sway/commands/create_output.c +++ b/sway/commands/create_output.c @@ -29,7 +29,7 @@ static void create_output(struct wlr_backend *backend, void *data) { /** * This command is intended for developer use only. */ -struct cmd_results *cmd_create_output(int argc, char **argv) { +struct cmd_results cmd_create_output(int argc, char **argv) { sway_assert(wlr_backend_is_multi(server.backend), "Expected a multi backend"); diff --git a/sway/commands/default_border.c b/sway/commands/default_border.c index 5c0fee3f3..51aa58364 100644 --- a/sway/commands/default_border.c +++ b/sway/commands/default_border.c @@ -3,9 +3,9 @@ #include "sway/config.h" #include "sway/tree/container.h" -struct cmd_results *cmd_default_border(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "default_border", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_default_border(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "default_border", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/default_floating_border.c b/sway/commands/default_floating_border.c index 7e4edc366..b992ec5e6 100644 --- a/sway/commands/default_floating_border.c +++ b/sway/commands/default_floating_border.c @@ -3,10 +3,10 @@ #include "sway/config.h" #include "sway/tree/container.h" -struct cmd_results *cmd_default_floating_border(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "default_floating_border", - EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_default_floating_border(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "default_floating_border", + EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/default_orientation.c b/sway/commands/default_orientation.c index fd42c1679..c0138de99 100644 --- a/sway/commands/default_orientation.c +++ b/sway/commands/default_orientation.c @@ -2,9 +2,9 @@ #include #include "sway/commands.h" -struct cmd_results *cmd_default_orientation(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "default_orientation", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_default_orientation(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "default_orientation", EXPECTED_EQUAL_TO, 1)) { return error; } if (strcasecmp(argv[0], "horizontal") == 0) { diff --git a/sway/commands/exec.c b/sway/commands/exec.c index 87d907162..9f696b242 100644 --- a/sway/commands/exec.c +++ b/sway/commands/exec.c @@ -4,7 +4,7 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_exec(int argc, char **argv) { +struct cmd_results cmd_exec(int argc, char **argv) { if (!config->active) return cmd_results_new(CMD_DEFER, NULL); if (config->reloading) { char *args = join_args(argv, argc); diff --git a/sway/commands/exec_always.c b/sway/commands/exec_always.c index a57242950..bf1362dc8 100644 --- a/sway/commands/exec_always.c +++ b/sway/commands/exec_always.c @@ -13,12 +13,12 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_exec_always(int argc, char **argv) { - struct cmd_results *error = NULL; +struct cmd_results cmd_exec_always(int argc, char **argv) { + struct cmd_results error; if (!config->active || config->validating) { return cmd_results_new(CMD_DEFER, NULL); } - if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { + if (checkarg(&error, argc, argv[-1], EXPECTED_AT_LEAST, 1)) { return error; } @@ -26,7 +26,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) { if (strcmp(argv[0], "--no-startup-id") == 0) { sway_log(SWAY_INFO, "exec switch '--no-startup-id' not supported, ignored."); --argc; ++argv; - if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { + if (checkarg(&error, argc, argv[-1], EXPECTED_AT_LEAST, 1)) { return error; } } diff --git a/sway/commands/exit.c b/sway/commands/exit.c index 10cde640c..c02486661 100644 --- a/sway/commands/exit.c +++ b/sway/commands/exit.c @@ -4,9 +4,9 @@ void sway_terminate(int exit_code); -struct cmd_results *cmd_exit(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "exit", EXPECTED_EQUAL_TO, 0))) { +struct cmd_results cmd_exit(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "exit", EXPECTED_EQUAL_TO, 0)) { return error; } sway_terminate(0); diff --git a/sway/commands/floating.c b/sway/commands/floating.c index ce1233454..c4729f8b0 100644 --- a/sway/commands/floating.c +++ b/sway/commands/floating.c @@ -11,9 +11,9 @@ #include "list.h" #include "util.h" -struct cmd_results *cmd_floating(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "floating", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_floating(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "floating", EXPECTED_EQUAL_TO, 1)) { return error; } if (!root->outputs->length) { diff --git a/sway/commands/floating_minmax_size.c b/sway/commands/floating_minmax_size.c index 3a1d606a0..b13f40893 100644 --- a/sway/commands/floating_minmax_size.c +++ b/sway/commands/floating_minmax_size.c @@ -13,10 +13,10 @@ static const char min_usage[] = static const char max_usage[] = "Expected 'floating_maximum_size x '"; -static struct cmd_results *handle_command(int argc, char **argv, char *cmd_name, +static struct cmd_results handle_command(int argc, char **argv, char *cmd_name, const char *usage, int *config_width, int *config_height) { - struct cmd_results *error; - if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 3))) { + struct cmd_results error; + if (checkarg(&error, argc, cmd_name, EXPECTED_EQUAL_TO, 3)) { return error; } @@ -41,12 +41,12 @@ static struct cmd_results *handle_command(int argc, char **argv, char *cmd_name, return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *cmd_floating_minimum_size(int argc, char **argv) { +struct cmd_results cmd_floating_minimum_size(int argc, char **argv) { return handle_command(argc, argv, "floating_minimum_size", min_usage, &config->floating_minimum_width, &config->floating_minimum_height); } -struct cmd_results *cmd_floating_maximum_size(int argc, char **argv) { +struct cmd_results cmd_floating_maximum_size(int argc, char **argv) { return handle_command(argc, argv, "floating_maximum_size", max_usage, &config->floating_maximum_width, &config->floating_maximum_height); } diff --git a/sway/commands/floating_modifier.c b/sway/commands/floating_modifier.c index fd606281a..b14f3bdf6 100644 --- a/sway/commands/floating_modifier.c +++ b/sway/commands/floating_modifier.c @@ -3,9 +3,9 @@ #include "sway/config.h" #include "sway/input/keyboard.h" -struct cmd_results *cmd_floating_modifier(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "floating_modifier", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_floating_modifier(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "floating_modifier", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/focus.c b/sway/commands/focus.c index d745aab5c..13b14c2c8 100644 --- a/sway/commands/focus.c +++ b/sway/commands/focus.c @@ -258,7 +258,7 @@ static struct sway_node *node_get_in_direction_floating( return closest_con ? &closest_con->node : NULL; } -static struct cmd_results *focus_mode(struct sway_workspace *ws, +static struct cmd_results focus_mode(struct sway_workspace *ws, struct sway_seat *seat, bool floating) { struct sway_container *new_focus = NULL; if (floating) { @@ -277,7 +277,7 @@ static struct cmd_results *focus_mode(struct sway_workspace *ws, return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *focus_output(struct sway_seat *seat, +static struct cmd_results focus_output(struct sway_seat *seat, int argc, char **argv) { if (!argc) { return cmd_results_new(CMD_INVALID, @@ -322,7 +322,7 @@ static struct cmd_results *focus_output(struct sway_seat *seat, return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *focus_parent(void) { +static struct cmd_results focus_parent(void) { struct sway_seat *seat = config->handler_context.seat; struct sway_container *con = config->handler_context.container; if (!con || con->fullscreen_mode) { @@ -336,7 +336,7 @@ static struct cmd_results *focus_parent(void) { return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *focus_child(void) { +static struct cmd_results focus_child(void) { struct sway_seat *seat = config->handler_context.seat; struct sway_node *node = config->handler_context.node; struct sway_node *focus = seat_get_active_tiling_child(seat, node); @@ -347,7 +347,7 @@ static struct cmd_results *focus_child(void) { return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *cmd_focus(int argc, char **argv) { +struct cmd_results cmd_focus(int argc, char **argv) { if (config->reading || !config->active) { return cmd_results_new(CMD_DEFER, NULL); } diff --git a/sway/commands/focus_follows_mouse.c b/sway/commands/focus_follows_mouse.c index 7afb5f623..98cc0c0a3 100644 --- a/sway/commands/focus_follows_mouse.c +++ b/sway/commands/focus_follows_mouse.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "util.h" -struct cmd_results *cmd_focus_follows_mouse(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "focus_follows_mouse", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_focus_follows_mouse(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "focus_follows_mouse", EXPECTED_EQUAL_TO, 1)) { return error; } else if(strcmp(argv[0], "no") == 0) { config->focus_follows_mouse = FOLLOWS_NO; diff --git a/sway/commands/focus_on_window_activation.c b/sway/commands/focus_on_window_activation.c index 2163fc590..8b02f9e35 100644 --- a/sway/commands/focus_on_window_activation.c +++ b/sway/commands/focus_on_window_activation.c @@ -1,9 +1,9 @@ #include "sway/commands.h" -struct cmd_results *cmd_focus_on_window_activation(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "focus_on_window_activation", - EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_focus_on_window_activation(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "focus_on_window_activation", + EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/focus_wrapping.c b/sway/commands/focus_wrapping.c index d3901cb8f..a83618f15 100644 --- a/sway/commands/focus_wrapping.c +++ b/sway/commands/focus_wrapping.c @@ -3,9 +3,9 @@ #include "sway/config.h" #include "util.h" -struct cmd_results *cmd_focus_wrapping(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "focus_wrapping", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_focus_wrapping(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "focus_wrapping", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/font.c b/sway/commands/font.c index c54365b53..aa121e934 100644 --- a/sway/commands/font.c +++ b/sway/commands/font.c @@ -5,9 +5,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_font(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "font", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_font(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "font", EXPECTED_AT_LEAST, 1)) { return error; } char *font = join_args(argv, argc); diff --git a/sway/commands/for_window.c b/sway/commands/for_window.c index ee9f46478..aad1e7b19 100644 --- a/sway/commands/for_window.c +++ b/sway/commands/for_window.c @@ -5,9 +5,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_for_window(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "for_window", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_for_window(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "for_window", EXPECTED_AT_LEAST, 2)) { return error; } diff --git a/sway/commands/force_display_urgency_hint.c b/sway/commands/force_display_urgency_hint.c index 3202fc43a..899b9861a 100644 --- a/sway/commands/force_display_urgency_hint.c +++ b/sway/commands/force_display_urgency_hint.c @@ -1,10 +1,10 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *cmd_force_display_urgency_hint(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "force_display_urgency_hint", - EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_force_display_urgency_hint(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "force_display_urgency_hint", + EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/force_focus_wrapping.c b/sway/commands/force_focus_wrapping.c index fafc1c3ef..83da9ba03 100644 --- a/sway/commands/force_focus_wrapping.c +++ b/sway/commands/force_focus_wrapping.c @@ -3,7 +3,7 @@ #include "log.h" #include "util.h" -struct cmd_results *cmd_force_focus_wrapping(int argc, char **argv) { +struct cmd_results cmd_force_focus_wrapping(int argc, char **argv) { sway_log(SWAY_INFO, "Warning: force_focus_wrapping is deprecated. " "Use focus_wrapping instead."); if (config->reading) { @@ -11,9 +11,8 @@ struct cmd_results *cmd_force_focus_wrapping(int argc, char **argv) { "Use focus_wrapping instead."); } - struct cmd_results *error = - checkarg(argc, "force_focus_wrapping", EXPECTED_EQUAL_TO, 1); - if (error) { + struct cmd_results error; + if (checkarg(&error, argc, "force_focus_wrapping", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/fullscreen.c b/sway/commands/fullscreen.c index 3392a7f7b..69f107a68 100644 --- a/sway/commands/fullscreen.c +++ b/sway/commands/fullscreen.c @@ -9,9 +9,9 @@ #include "util.h" // fullscreen [enable|disable|toggle] [global] -struct cmd_results *cmd_fullscreen(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "fullscreen", EXPECTED_AT_MOST, 2))) { +struct cmd_results cmd_fullscreen(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "fullscreen", EXPECTED_AT_MOST, 2)) { return error; } if (!root->outputs->length) { diff --git a/sway/commands/gaps.c b/sway/commands/gaps.c index 021df843a..09ad133d4 100644 --- a/sway/commands/gaps.c +++ b/sway/commands/gaps.c @@ -45,9 +45,9 @@ static void prevent_invalid_outer_gaps(void) { // gaps inner|outer|horizontal|vertical|top|right|bottom|left static const char expected_defaults[] = "'gaps inner|outer|horizontal|vertical|top|right|bottom|left '"; -static struct cmd_results *gaps_set_defaults(int argc, char **argv) { - struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_EQUAL_TO, 2); - if (error) { +static struct cmd_results gaps_set_defaults(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "gaps", EXPECTED_EQUAL_TO, 2)) { return error; } @@ -136,9 +136,9 @@ static void configure_gaps(struct sway_workspace *ws, void *_data) { // set|plus|minus static const char expected_runtime[] = "'gaps inner|outer|horizontal|vertical|" "top|right|bottom|left current|all set|plus|minus '"; -static struct cmd_results *gaps_set_runtime(int argc, char **argv) { - struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_EQUAL_TO, 4); - if (error) { +static struct cmd_results gaps_set_runtime(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "gaps", EXPECTED_EQUAL_TO, 4)) { return error; } if (!root->outputs->length) { @@ -203,9 +203,9 @@ static struct cmd_results *gaps_set_runtime(int argc, char **argv) { // gaps inner|outer|| current|all set|plus|minus - runtime only // = horizontal|vertical // = top|right|bottom|left -struct cmd_results *cmd_gaps(int argc, char **argv) { - struct cmd_results *error = checkarg(argc, "gaps", EXPECTED_AT_LEAST, 2); - if (error) { +struct cmd_results cmd_gaps(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "gaps", EXPECTED_AT_LEAST, 2)) { return error; } diff --git a/sway/commands/hide_edge_borders.c b/sway/commands/hide_edge_borders.c index 9a1d84458..d706b4699 100644 --- a/sway/commands/hide_edge_borders.c +++ b/sway/commands/hide_edge_borders.c @@ -3,12 +3,12 @@ #include "sway/tree/arrange.h" #include "sway/tree/view.h" -struct cmd_results *cmd_hide_edge_borders(int argc, char **argv) { +struct cmd_results cmd_hide_edge_borders(int argc, char **argv) { const char *expected_syntax = "Expected 'hide_edge_borders [--i3] " "none|vertical|horizontal|both|smart|smart_no_gaps"; - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "hide_edge_borders", EXPECTED_AT_LEAST, 1))) { + struct cmd_results error; + if (checkarg(&error, argc, "hide_edge_borders", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/include.c b/sway/commands/include.c index d4c14c35f..bc9cccb1f 100644 --- a/sway/commands/include.c +++ b/sway/commands/include.c @@ -1,9 +1,9 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *cmd_include(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "include", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_include(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "include", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/inhibit_idle.c b/sway/commands/inhibit_idle.c index aebc2bf9f..9618b7437 100644 --- a/sway/commands/inhibit_idle.c +++ b/sway/commands/inhibit_idle.c @@ -5,9 +5,9 @@ #include "sway/tree/container.h" #include "sway/tree/view.h" -struct cmd_results *cmd_inhibit_idle(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "inhibit_idle", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_inhibit_idle(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "inhibit_idle", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/input.c b/sway/commands/input.c index 53db9a16a..1339757d6 100644 --- a/sway/commands/input.c +++ b/sway/commands/input.c @@ -44,9 +44,9 @@ static struct cmd_handler input_config_handlers[] = { { "xkb_numlock", input_cmd_xkb_numlock }, }; -struct cmd_results *cmd_input(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "input", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_input(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "input", EXPECTED_AT_LEAST, 2)) { return error; } @@ -57,7 +57,7 @@ struct cmd_results *cmd_input(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "Couldn't allocate config"); } - struct cmd_results *res; + struct cmd_results res; if (find_handler(argv[1], input_config_handlers, sizeof(input_config_handlers))) { @@ -73,16 +73,14 @@ struct cmd_results *cmd_input(int argc, char **argv) { input_handlers, sizeof(input_handlers)); } - if ((!res || res->status == CMD_SUCCESS) && + if (res.status == CMD_SUCCESS && strcmp(argv[1], "xkb_switch_layout") != 0) { char *error = NULL; struct input_config *ic = store_input_config(config->handler_context.input_config, &error); if (!ic) { free_input_config(config->handler_context.input_config); - if (res) { - free_cmd_results(res); - } + free_cmd_results(res); res = cmd_results_new(CMD_FAILURE, "Failed to compile keymap: %s", error ? error : "(details unavailable)"); free(error); diff --git a/sway/commands/input/accel_profile.c b/sway/commands/input/accel_profile.c index 08f324cca..cf7ff57c7 100644 --- a/sway/commands/input/accel_profile.c +++ b/sway/commands/input/accel_profile.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "sway/input/input-manager.h" -struct cmd_results *input_cmd_accel_profile(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "accel_profile", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_accel_profile(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "accel_profile", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/calibration_matrix.c b/sway/commands/input/calibration_matrix.c index 38749fbb9..6371e1e8c 100644 --- a/sway/commands/input/calibration_matrix.c +++ b/sway/commands/input/calibration_matrix.c @@ -8,9 +8,9 @@ #include "stringop.h" #include "util.h" -struct cmd_results *input_cmd_calibration_matrix(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "calibration_matrix", EXPECTED_EQUAL_TO, 6))) { +struct cmd_results input_cmd_calibration_matrix(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "calibration_matrix", EXPECTED_EQUAL_TO, 6)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/click_method.c b/sway/commands/input/click_method.c index 03fcb458f..7b2bd4bca 100644 --- a/sway/commands/input/click_method.c +++ b/sway/commands/input/click_method.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "log.h" -struct cmd_results *input_cmd_click_method(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "click_method", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_click_method(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "click_method", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/drag.c b/sway/commands/input/drag.c index 062357d4f..93bfaf9e6 100644 --- a/sway/commands/input/drag.c +++ b/sway/commands/input/drag.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_drag(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "drag", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_drag(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "drag", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/drag_lock.c b/sway/commands/input/drag_lock.c index 24c548e2d..406d342e7 100644 --- a/sway/commands/input/drag_lock.c +++ b/sway/commands/input/drag_lock.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_drag_lock(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "drag_lock", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_drag_lock(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "drag_lock", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/dwt.c b/sway/commands/input/dwt.c index a7a4e4943..a1a9d614a 100644 --- a/sway/commands/input/dwt.c +++ b/sway/commands/input/dwt.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_dwt(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "dwt", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_dwt(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "dwt", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/events.c b/sway/commands/input/events.c index cd2985ee9..faa18281c 100644 --- a/sway/commands/input/events.c +++ b/sway/commands/input/events.c @@ -105,9 +105,9 @@ static void toggle_wildcard_send_events(int argc, char **argv) { } } -struct cmd_results *input_cmd_events(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "events", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_events(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "events", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/left_handed.c b/sway/commands/input/left_handed.c index 93d8d56d8..bdf2a78ba 100644 --- a/sway/commands/input/left_handed.c +++ b/sway/commands/input/left_handed.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_left_handed(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "left_handed", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_left_handed(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "left_handed", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/map_from_region.c b/sway/commands/input/map_from_region.c index de00b7141..7466b6576 100644 --- a/sway/commands/input/map_from_region.c +++ b/sway/commands/input/map_from_region.c @@ -33,9 +33,9 @@ static bool parse_coords(const char *str, double *x, double *y, bool *mm) { return true; } -struct cmd_results *input_cmd_map_from_region(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "map_from_region", EXPECTED_EQUAL_TO, 2))) { +struct cmd_results input_cmd_map_from_region(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "map_from_region", EXPECTED_EQUAL_TO, 2)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/map_to_output.c b/sway/commands/input/map_to_output.c index f60fb7d57..60254db06 100644 --- a/sway/commands/input/map_to_output.c +++ b/sway/commands/input/map_to_output.c @@ -6,9 +6,9 @@ #include "sway/input/input-manager.h" #include "log.h" -struct cmd_results *input_cmd_map_to_output(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "map_to_output", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_map_to_output(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "map_to_output", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/map_to_region.c b/sway/commands/input/map_to_region.c index e85495e53..ccb5ee443 100644 --- a/sway/commands/input/map_to_region.c +++ b/sway/commands/input/map_to_region.c @@ -5,9 +5,9 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *input_cmd_map_to_region(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "map_to_region", EXPECTED_EQUAL_TO, 4))) { +struct cmd_results input_cmd_map_to_region(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "map_to_region", EXPECTED_EQUAL_TO, 4)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/middle_emulation.c b/sway/commands/input/middle_emulation.c index 9f32692e0..28ebe1df3 100644 --- a/sway/commands/input/middle_emulation.c +++ b/sway/commands/input/middle_emulation.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_middle_emulation(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "middle_emulation", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_middle_emulation(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "middle_emulation", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/natural_scroll.c b/sway/commands/input/natural_scroll.c index dec32a5ba..6ec493a69 100644 --- a/sway/commands/input/natural_scroll.c +++ b/sway/commands/input/natural_scroll.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_natural_scroll(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "natural_scroll", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_natural_scroll(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "natural_scroll", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/pointer_accel.c b/sway/commands/input/pointer_accel.c index e214b32f8..26db1c0e2 100644 --- a/sway/commands/input/pointer_accel.c +++ b/sway/commands/input/pointer_accel.c @@ -6,9 +6,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_pointer_accel(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "pointer_accel", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_pointer_accel(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "pointer_accel", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/repeat_delay.c b/sway/commands/input/repeat_delay.c index 5b787fe63..37994d27f 100644 --- a/sway/commands/input/repeat_delay.c +++ b/sway/commands/input/repeat_delay.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "sway/input/input-manager.h" -struct cmd_results *input_cmd_repeat_delay(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "repeat_delay", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_repeat_delay(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "repeat_delay", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/repeat_rate.c b/sway/commands/input/repeat_rate.c index 79c5efe22..cc5cf299b 100644 --- a/sway/commands/input/repeat_rate.c +++ b/sway/commands/input/repeat_rate.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "sway/input/input-manager.h" -struct cmd_results *input_cmd_repeat_rate(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "repeat_rate", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_repeat_rate(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "repeat_rate", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/scroll_button.c b/sway/commands/input/scroll_button.c index 6b3314190..a19368ef6 100644 --- a/sway/commands/input/scroll_button.c +++ b/sway/commands/input/scroll_button.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "sway/input/cursor.h" -struct cmd_results *input_cmd_scroll_button(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "scroll_button", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_scroll_button(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "scroll_button", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/scroll_factor.c b/sway/commands/input/scroll_factor.c index 4b72b6fa8..8b6bcabf5 100644 --- a/sway/commands/input/scroll_factor.c +++ b/sway/commands/input/scroll_factor.c @@ -7,9 +7,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_scroll_factor(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "scroll_factor", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_scroll_factor(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "scroll_factor", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/scroll_method.c b/sway/commands/input/scroll_method.c index cd8b5f7a7..571126e45 100644 --- a/sway/commands/input/scroll_method.c +++ b/sway/commands/input/scroll_method.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "sway/input/input-manager.h" -struct cmd_results *input_cmd_scroll_method(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "scroll_method", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_scroll_method(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "scroll_method", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/tap.c b/sway/commands/input/tap.c index 443fd49d7..206297a83 100644 --- a/sway/commands/input/tap.c +++ b/sway/commands/input/tap.c @@ -6,9 +6,9 @@ #include "log.h" #include "util.h" -struct cmd_results *input_cmd_tap(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tap", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_tap(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "tap", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/tap_button_map.c b/sway/commands/input/tap_button_map.c index 77ac6de7b..349e0093a 100644 --- a/sway/commands/input/tap_button_map.c +++ b/sway/commands/input/tap_button_map.c @@ -4,9 +4,9 @@ #include "sway/commands.h" #include "sway/input/input-manager.h" -struct cmd_results *input_cmd_tap_button_map(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tap_button_map", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_tap_button_map(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "tap_button_map", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_capslock.c b/sway/commands/input/xkb_capslock.c index 7ce98ebbe..f1d3d63c3 100644 --- a/sway/commands/input/xkb_capslock.c +++ b/sway/commands/input/xkb_capslock.c @@ -5,9 +5,9 @@ #include "sway/input/input-manager.h" #include "util.h" -struct cmd_results *input_cmd_xkb_capslock(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_capslock", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_xkb_capslock(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_capslock", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_file.c b/sway/commands/input/xkb_file.c index 493f94fbd..1c59eca35 100644 --- a/sway/commands/input/xkb_file.c +++ b/sway/commands/input/xkb_file.c @@ -6,9 +6,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *input_cmd_xkb_file(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_file", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_file(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_file", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_layout.c b/sway/commands/input/xkb_layout.c index 226265175..cf37943b5 100644 --- a/sway/commands/input/xkb_layout.c +++ b/sway/commands/input/xkb_layout.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *input_cmd_xkb_layout(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_layout", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_layout(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_layout", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_model.c b/sway/commands/input/xkb_model.c index f4a33de3e..503e55b90 100644 --- a/sway/commands/input/xkb_model.c +++ b/sway/commands/input/xkb_model.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *input_cmd_xkb_model(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_model", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_model(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_model", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_numlock.c b/sway/commands/input/xkb_numlock.c index 87d3e60c1..45e19d10d 100644 --- a/sway/commands/input/xkb_numlock.c +++ b/sway/commands/input/xkb_numlock.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "util.h" -struct cmd_results *input_cmd_xkb_numlock(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_numlock", EXPECTED_AT_LEAST, 1))) { +struct cmd_results input_cmd_xkb_numlock(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_numlock", EXPECTED_AT_LEAST, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_options.c b/sway/commands/input/xkb_options.c index d609293f7..388afa90c 100644 --- a/sway/commands/input/xkb_options.c +++ b/sway/commands/input/xkb_options.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *input_cmd_xkb_options(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_options", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_options(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_options", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_rules.c b/sway/commands/input/xkb_rules.c index 3b59622c4..0324e91d1 100644 --- a/sway/commands/input/xkb_rules.c +++ b/sway/commands/input/xkb_rules.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *input_cmd_xkb_rules(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_rules", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_rules(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_rules", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_switch_layout.c b/sway/commands/input/xkb_switch_layout.c index 286c040da..da131dc10 100644 --- a/sway/commands/input/xkb_switch_layout.c +++ b/sway/commands/input/xkb_switch_layout.c @@ -13,9 +13,9 @@ static void switch_layout(struct wlr_keyboard *kbd, xkb_layout_index_t idx) { kbd->modifiers.latched, kbd->modifiers.locked, idx); } -struct cmd_results *input_cmd_xkb_switch_layout(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_switch_layout", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_switch_layout(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_switch_layout", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/input/xkb_variant.c b/sway/commands/input/xkb_variant.c index d0e21d778..a93948c41 100644 --- a/sway/commands/input/xkb_variant.c +++ b/sway/commands/input/xkb_variant.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "log.h" -struct cmd_results *input_cmd_xkb_variant(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xkb_variant", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results input_cmd_xkb_variant(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xkb_variant", EXPECTED_EQUAL_TO, 1)) { return error; } struct input_config *ic = config->handler_context.input_config; diff --git a/sway/commands/kill.c b/sway/commands/kill.c index f1e95e4bb..2e9ac3587 100644 --- a/sway/commands/kill.c +++ b/sway/commands/kill.c @@ -12,7 +12,7 @@ static void close_container_iterator(struct sway_container *con, void *data) { } } -struct cmd_results *cmd_kill(int argc, char **argv) { +struct cmd_results cmd_kill(int argc, char **argv) { if (!root->outputs->length) { return cmd_results_new(CMD_INVALID, "Can't run this command while there's no outputs connected."); diff --git a/sway/commands/layout.c b/sway/commands/layout.c index 4b31b442e..2fa63e6e4 100644 --- a/sway/commands/layout.c +++ b/sway/commands/layout.c @@ -114,9 +114,9 @@ static enum sway_container_layout get_layout(int argc, char **argv, return L_NONE; } -struct cmd_results *cmd_layout(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "layout", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_layout(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "layout", EXPECTED_AT_LEAST, 1)) { return error; } if (!root->outputs->length) { diff --git a/sway/commands/mark.c b/sway/commands/mark.c index aa5f185c8..a4b8281ea 100644 --- a/sway/commands/mark.c +++ b/sway/commands/mark.c @@ -13,9 +13,9 @@ // mark --add --toggle foo Toggle current mark and persist other marks // mark --replace --toggle foo Toggle current mark and remove other marks -struct cmd_results *cmd_mark(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "mark", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_mark(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "mark", EXPECTED_AT_LEAST, 1)) { return error; } struct sway_container *container = config->handler_context.container; diff --git a/sway/commands/max_render_time.c b/sway/commands/max_render_time.c index ec3282f18..61cda8ac3 100644 --- a/sway/commands/max_render_time.c +++ b/sway/commands/max_render_time.c @@ -3,7 +3,7 @@ #include "sway/config.h" #include "sway/tree/view.h" -struct cmd_results *cmd_max_render_time(int argc, char **argv) { +struct cmd_results cmd_max_render_time(int argc, char **argv) { if (!argc) { return cmd_results_new(CMD_INVALID, "Missing max render time argument."); } diff --git a/sway/commands/mode.c b/sway/commands/mode.c index a5871dabe..356962d60 100644 --- a/sway/commands/mode.c +++ b/sway/commands/mode.c @@ -19,9 +19,9 @@ static struct cmd_handler mode_handlers[] = { { "unbindsym", cmd_unbindsym }, }; -struct cmd_results *cmd_mode(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "mode", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_mode(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "mode", EXPECTED_AT_LEAST, 1)) { return error; } @@ -79,7 +79,7 @@ struct cmd_results *cmd_mode(int argc, char **argv) { } // Create binding - struct cmd_results *result = config_subcommand(argv + 1, argc - 1, + struct cmd_results result = config_subcommand(argv + 1, argc - 1, mode_handlers, sizeof(mode_handlers)); config->current_mode = stored_mode; diff --git a/sway/commands/mouse_warping.c b/sway/commands/mouse_warping.c index 8b643f625..124e87d46 100644 --- a/sway/commands/mouse_warping.c +++ b/sway/commands/mouse_warping.c @@ -2,9 +2,9 @@ #include #include "sway/commands.h" -struct cmd_results *cmd_mouse_warping(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "mouse_warping", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_mouse_warping(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "mouse_warping", EXPECTED_EQUAL_TO, 1)) { return error; } else if (strcasecmp(argv[0], "container") == 0) { config->mouse_warping = WARP_CONTAINER; diff --git a/sway/commands/move.c b/sway/commands/move.c index 6ad1c7ca0..c7bd4fa0f 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -388,13 +388,13 @@ static bool container_move_in_direction(struct sway_container *container, return false; } -static struct cmd_results *cmd_move_to_scratchpad(void); +static struct cmd_results cmd_move_to_scratchpad(void); -static struct cmd_results *cmd_move_container(bool no_auto_back_and_forth, +static struct cmd_results cmd_move_container(bool no_auto_back_and_forth, int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "move container/window", - EXPECTED_AT_LEAST, 2))) { + struct cmd_results error; + if (checkarg(&error, argc, "move container/window", + EXPECTED_AT_LEAST, 2)) { return error; } @@ -629,9 +629,9 @@ static void workspace_move_to_output(struct sway_workspace *workspace, ipc_event_workspace(NULL, workspace, "move"); } -static struct cmd_results *cmd_move_workspace(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "move workspace", EXPECTED_AT_LEAST, 1))) { +static struct cmd_results cmd_move_workspace(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "move workspace", EXPECTED_AT_LEAST, 1)) { return error; } @@ -666,7 +666,7 @@ static struct cmd_results *cmd_move_workspace(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *cmd_move_in_direction( +static struct cmd_results cmd_move_in_direction( enum wlr_direction direction, int argc, char **argv) { int move_amt = 10; if (argc) { @@ -747,7 +747,7 @@ static const char expected_position_syntax[] = "'move [absolute] position center' or " "'move position cursor|mouse|pointer'"; -static struct cmd_results *cmd_move_to_position(int argc, char **argv) { +static struct cmd_results cmd_move_to_position(int argc, char **argv) { struct sway_container *container = config->handler_context.container; if (!container || !container_is_floating(container)) { return cmd_results_new(CMD_FAILURE, "Only floating containers " @@ -843,7 +843,7 @@ static struct cmd_results *cmd_move_to_position(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *cmd_move_to_scratchpad(void) { +static struct cmd_results cmd_move_to_scratchpad(void) { struct sway_node *node = config->handler_context.node; struct sway_container *con = config->handler_context.container; struct sway_workspace *ws = config->handler_context.workspace; @@ -885,9 +885,9 @@ static const char expected_full_syntax[] = "Expected " " or 'move [window|container] [to] [absolute] position center'" " or 'move [window|container] [to] position mouse|cursor|pointer'"; -struct cmd_results *cmd_move(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "move", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_move(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "move", EXPECTED_AT_LEAST, 1)) { return error; } if (!root->outputs->length) { diff --git a/sway/commands/new_float.c b/sway/commands/new_float.c index 4fedb4cb8..e913b2c11 100644 --- a/sway/commands/new_float.c +++ b/sway/commands/new_float.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *cmd_new_float(int argc, char **argv) { +struct cmd_results cmd_new_float(int argc, char **argv) { sway_log(SWAY_INFO, "Warning: new_float is deprecated. " "Use default_floating_border instead."); if (config->reading) { diff --git a/sway/commands/new_window.c b/sway/commands/new_window.c index e8caa4873..073fd0978 100644 --- a/sway/commands/new_window.c +++ b/sway/commands/new_window.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *cmd_new_window(int argc, char **argv) { +struct cmd_results cmd_new_window(int argc, char **argv) { sway_log(SWAY_INFO, "Warning: new_window is deprecated. " "Use default_border instead."); if (config->reading) { diff --git a/sway/commands/no_focus.c b/sway/commands/no_focus.c index 2001e04f0..eabed1d20 100644 --- a/sway/commands/no_focus.c +++ b/sway/commands/no_focus.c @@ -4,9 +4,9 @@ #include "list.h" #include "log.h" -struct cmd_results *cmd_no_focus(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "no_focus", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_no_focus(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "no_focus", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/nop.c b/sway/commands/nop.c index 973ade0e0..347688922 100644 --- a/sway/commands/nop.c +++ b/sway/commands/nop.c @@ -1,5 +1,5 @@ #include "sway/commands.h" -struct cmd_results *cmd_nop(int argc, char **argv) { +struct cmd_results cmd_nop(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/opacity.c b/sway/commands/opacity.c index 96e6228ed..9a7e9a003 100644 --- a/sway/commands/opacity.c +++ b/sway/commands/opacity.c @@ -5,9 +5,9 @@ #include "sway/tree/view.h" #include "log.h" -struct cmd_results *cmd_opacity(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "opacity", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_opacity(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "opacity", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/output.c b/sway/commands/output.c index 2790bd631..aa44f7aad 100644 --- a/sway/commands/output.c +++ b/sway/commands/output.c @@ -25,9 +25,9 @@ static struct cmd_handler output_handlers[] = { { "transform", output_cmd_transform }, }; -struct cmd_results *cmd_output(int argc, char **argv) { - struct cmd_results *error = checkarg(argc, "output", EXPECTED_AT_LEAST, 1); - if (error != NULL) { +struct cmd_results cmd_output(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "output", EXPECTED_AT_LEAST, 1)) { return error; } @@ -66,7 +66,7 @@ struct cmd_results *cmd_output(int argc, char **argv) { } if (!output) { sway_log(SWAY_ERROR, "Failed to allocate output config"); - return NULL; + return cmd_results_new(CMD_FAILURE, "Failed to allocate output config"); } argc--; argv++; @@ -84,7 +84,7 @@ struct cmd_results *cmd_output(int argc, char **argv) { "Invalid output subcommand: %s.", *argv); } - if (error != NULL) { + if (error.status != CMD_SUCCESS) { goto fail; } diff --git a/sway/commands/output/background.c b/sway/commands/output/background.c index 68ee9fe14..43b1d4dcf 100644 --- a/sway/commands/output/background.c +++ b/sway/commands/output/background.c @@ -29,7 +29,7 @@ static bool validate_color(const char *color) { return *ptr == '\0'; } -struct cmd_results *output_cmd_background(int argc, char **argv) { +struct cmd_results output_cmd_background(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -80,7 +80,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { char *src = join_args(argv, j); if (!expand_path(&src)) { - struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, + struct cmd_results cmd_res = cmd_results_new(CMD_INVALID, "Invalid syntax (%s)", src); free(src); return cmd_res; @@ -150,5 +150,5 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { config->handler_context.leftovers.argc = argc; config->handler_context.leftovers.argv = argv; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/disable.c b/sway/commands/output/disable.c index 624f4056d..f37ae9317 100644 --- a/sway/commands/output/disable.c +++ b/sway/commands/output/disable.c @@ -1,7 +1,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_disable(int argc, char **argv) { +struct cmd_results output_cmd_disable(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -9,5 +9,5 @@ struct cmd_results *output_cmd_disable(int argc, char **argv) { config->handler_context.leftovers.argc = argc; config->handler_context.leftovers.argv = argv; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/dpms.c b/sway/commands/output/dpms.c index 9d75a80e8..eec56ca76 100644 --- a/sway/commands/output/dpms.c +++ b/sway/commands/output/dpms.c @@ -2,7 +2,7 @@ #include "sway/config.h" #include "util.h" -struct cmd_results *output_cmd_dpms(int argc, char **argv) { +struct cmd_results output_cmd_dpms(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -18,5 +18,5 @@ struct cmd_results *output_cmd_dpms(int argc, char **argv) { config->handler_context.leftovers.argc = argc - 1; config->handler_context.leftovers.argv = argv + 1; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/enable.c b/sway/commands/output/enable.c index bae3961f8..ac52e8689 100644 --- a/sway/commands/output/enable.c +++ b/sway/commands/output/enable.c @@ -1,7 +1,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_enable(int argc, char **argv) { +struct cmd_results output_cmd_enable(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -10,6 +10,6 @@ struct cmd_results *output_cmd_enable(int argc, char **argv) { config->handler_context.leftovers.argc = argc; config->handler_context.leftovers.argv = argv; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/max_render_time.c b/sway/commands/output/max_render_time.c index 2d3cebe30..118dbb5b4 100644 --- a/sway/commands/output/max_render_time.c +++ b/sway/commands/output/max_render_time.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_max_render_time(int argc, char **argv) { +struct cmd_results output_cmd_max_render_time(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -24,5 +24,5 @@ struct cmd_results *output_cmd_max_render_time(int argc, char **argv) { config->handler_context.leftovers.argc = argc - 1; config->handler_context.leftovers.argv = argv + 1; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/mode.c b/sway/commands/output/mode.c index 5b710713a..6a5e553fb 100644 --- a/sway/commands/output/mode.c +++ b/sway/commands/output/mode.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_mode(int argc, char **argv) { +struct cmd_results output_cmd_mode(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -55,6 +55,6 @@ struct cmd_results *output_cmd_mode(int argc, char **argv) { config->handler_context.leftovers.argc = argc - 1; config->handler_context.leftovers.argv = argv + 1; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/position.c b/sway/commands/output/position.c index 689462cb9..05de430dd 100644 --- a/sway/commands/output/position.c +++ b/sway/commands/output/position.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_position(int argc, char **argv) { +struct cmd_results output_cmd_position(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -36,6 +36,6 @@ struct cmd_results *output_cmd_position(int argc, char **argv) { config->handler_context.leftovers.argc = argc - 1; config->handler_context.leftovers.argv = argv + 1; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/scale.c b/sway/commands/output/scale.c index 9398e06ac..069f8e060 100644 --- a/sway/commands/output/scale.c +++ b/sway/commands/output/scale.c @@ -2,7 +2,7 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *output_cmd_scale(int argc, char **argv) { +struct cmd_results output_cmd_scale(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -18,5 +18,5 @@ struct cmd_results *output_cmd_scale(int argc, char **argv) { config->handler_context.leftovers.argc = argc - 1; config->handler_context.leftovers.argv = argv + 1; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/scale_filter.c b/sway/commands/output/scale_filter.c index fa1e8e0d5..782ab437a 100644 --- a/sway/commands/output/scale_filter.c +++ b/sway/commands/output/scale_filter.c @@ -4,7 +4,7 @@ #include "sway/config.h" #include "sway/output.h" -struct cmd_results *output_cmd_scale_filter(int argc, char **argv) { +struct cmd_results output_cmd_scale_filter(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -30,5 +30,5 @@ struct cmd_results *output_cmd_scale_filter(int argc, char **argv) { config->handler_context.leftovers.argv = argv + 1; oc->scale_filter = scale_filter; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/subpixel.c b/sway/commands/output/subpixel.c index 63191ee62..612c87dd1 100644 --- a/sway/commands/output/subpixel.c +++ b/sway/commands/output/subpixel.c @@ -4,7 +4,7 @@ #include "sway/config.h" #include "sway/output.h" -struct cmd_results *output_cmd_subpixel(int argc, char **argv) { +struct cmd_results output_cmd_subpixel(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -32,5 +32,5 @@ struct cmd_results *output_cmd_subpixel(int argc, char **argv) { config->handler_context.leftovers.argv = argv + 1; oc->subpixel = subpixel; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/toggle.c b/sway/commands/output/toggle.c index 6342d526b..c012fa543 100644 --- a/sway/commands/output/toggle.c +++ b/sway/commands/output/toggle.c @@ -2,7 +2,7 @@ #include "sway/config.h" #include "sway/output.h" -struct cmd_results *output_cmd_toggle(int argc, char **argv) { +struct cmd_results output_cmd_toggle(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -32,6 +32,6 @@ struct cmd_results *output_cmd_toggle(int argc, char **argv) { free(oc); config->handler_context.leftovers.argc = argc; config->handler_context.leftovers.argv = argv; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/output/transform.c b/sway/commands/output/transform.c index 8e5324adb..ee97f8456 100644 --- a/sway/commands/output/transform.c +++ b/sway/commands/output/transform.c @@ -4,7 +4,7 @@ #include "log.h" #include "sway/output.h" -struct cmd_results *output_cmd_transform(int argc, char **argv) { +struct cmd_results output_cmd_transform(int argc, char **argv) { if (!config->handler_context.output_config) { return cmd_results_new(CMD_FAILURE, "Missing output config"); } @@ -38,7 +38,8 @@ struct cmd_results *output_cmd_transform(int argc, char **argv) { if (argc > 1 && (strcmp(argv[1], "clockwise") == 0 || strcmp(argv[1], "anticlockwise") == 0)) { if (!sway_assert(output->name != NULL, "Output config name not set")) { - return NULL; + return cmd_results_new(CMD_INVALID, + "Output config name not set"); } if (strcmp(output->name, "*") == 0) { return cmd_results_new(CMD_INVALID, @@ -58,5 +59,5 @@ struct cmd_results *output_cmd_transform(int argc, char **argv) { config->handler_context.leftovers.argc -= 1; } output->transform = transform; - return NULL; + return cmd_results_new(CMD_SUCCESS, NULL); } diff --git a/sway/commands/popup_during_fullscreen.c b/sway/commands/popup_during_fullscreen.c index e81562623..41158cca1 100644 --- a/sway/commands/popup_during_fullscreen.c +++ b/sway/commands/popup_during_fullscreen.c @@ -2,10 +2,10 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *cmd_popup_during_fullscreen(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "popup_during_fullscreen", - EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_popup_during_fullscreen(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "popup_during_fullscreen", + EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/reload.c b/sway/commands/reload.c index 19ec065cd..030df5465 100644 --- a/sway/commands/reload.c +++ b/sway/commands/reload.c @@ -49,9 +49,9 @@ static void do_reload(void *data) { arrange_root(); } -struct cmd_results *cmd_reload(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "reload", EXPECTED_EQUAL_TO, 0))) { +struct cmd_results cmd_reload(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "reload", EXPECTED_EQUAL_TO, 0)) { return error; } diff --git a/sway/commands/rename.c b/sway/commands/rename.c index 3b855fdf7..f24cf8c2a 100644 --- a/sway/commands/rename.c +++ b/sway/commands/rename.c @@ -15,9 +15,9 @@ static const char expected_syntax[] = "Expected 'rename workspace to ' or " "'rename workspace to '"; -struct cmd_results *cmd_rename(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "rename", EXPECTED_AT_LEAST, 3))) { +struct cmd_results cmd_rename(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "rename", EXPECTED_AT_LEAST, 3)) { return error; } if (!root->outputs->length) { diff --git a/sway/commands/resize.c b/sway/commands/resize.c index 0c9af12d1..fdb6a911c 100644 --- a/sway/commands/resize.c +++ b/sway/commands/resize.c @@ -216,7 +216,7 @@ void container_resize_tiled(struct sway_container *con, /** * Implement `resize ` for a floating container. */ -static struct cmd_results *resize_adjust_floating(uint32_t axis, +static struct cmd_results resize_adjust_floating(uint32_t axis, struct resize_amount *amount) { struct sway_container *con = config->handler_context.container; int grow_width = 0, grow_height = 0; @@ -273,7 +273,7 @@ static struct cmd_results *resize_adjust_floating(uint32_t axis, /** * Implement `resize ` for a tiled container. */ -static struct cmd_results *resize_adjust_tiled(uint32_t axis, +static struct cmd_results resize_adjust_tiled(uint32_t axis, struct resize_amount *amount) { struct sway_container *current = config->handler_context.container; @@ -303,7 +303,7 @@ static struct cmd_results *resize_adjust_tiled(uint32_t axis, /** * Implement `resize set` for a tiled container. */ -static struct cmd_results *resize_set_tiled(struct sway_container *con, +static struct cmd_results resize_set_tiled(struct sway_container *con, struct resize_amount *width, struct resize_amount *height) { if (width->amount) { if (width->unit == RESIZE_UNIT_PPT || @@ -353,7 +353,7 @@ static struct cmd_results *resize_set_tiled(struct sway_container *con, /** * Implement `resize set` for a floating container. */ -static struct cmd_results *resize_set_floating(struct sway_container *con, +static struct cmd_results resize_set_floating(struct sway_container *con, struct resize_amount *width, struct resize_amount *height) { int min_width, max_width, min_height, max_height, grow_width = 0, grow_height = 0; floating_calculate_constraints(&min_width, &max_width, @@ -424,9 +424,9 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, * : height [px|ppt] * : [width] [px|ppt] [height] [px|ppt] */ -static struct cmd_results *cmd_resize_set(int argc, char **argv) { - struct cmd_results *error; - if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 1))) { +static struct cmd_results cmd_resize_set(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "resize", EXPECTED_AT_LEAST, 1)) { return error; } const char usage[] = "Expected 'resize set [width] [px|ppt]' or " @@ -484,7 +484,7 @@ static struct cmd_results *cmd_resize_set(int argc, char **argv) { * args: * args: or */ -static struct cmd_results *cmd_resize_adjust(int argc, char **argv, +static struct cmd_results cmd_resize_adjust(int argc, char **argv, int multiplier) { const char usage[] = "Expected 'resize grow|shrink " "[ px|ppt [or px|ppt]]'"; @@ -566,7 +566,7 @@ static struct cmd_results *cmd_resize_adjust(int argc, char **argv, } } -struct cmd_results *cmd_resize(int argc, char **argv) { +struct cmd_results cmd_resize(int argc, char **argv) { if (!root->outputs->length) { return cmd_results_new(CMD_INVALID, "Can't run this command while there's no outputs connected."); @@ -576,8 +576,8 @@ struct cmd_results *cmd_resize(int argc, char **argv) { return cmd_results_new(CMD_INVALID, "Cannot resize nothing"); } - struct cmd_results *error; - if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 2))) { + struct cmd_results error; + if (checkarg(&error, argc, "resize", EXPECTED_AT_LEAST, 2)) { return error; } diff --git a/sway/commands/scratchpad.c b/sway/commands/scratchpad.c index 34871bc6a..e911b3b49 100644 --- a/sway/commands/scratchpad.c +++ b/sway/commands/scratchpad.c @@ -89,9 +89,9 @@ static void scratchpad_toggle_container(struct sway_container *con) { ipc_event_window(con, "move"); } -struct cmd_results *cmd_scratchpad(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "scratchpad", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_scratchpad(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "scratchpad", EXPECTED_EQUAL_TO, 1)) { return error; } if (strcmp(argv[0], "show") != 0) { diff --git a/sway/commands/seat.c b/sway/commands/seat.c index eba28cacf..595b94d43 100644 --- a/sway/commands/seat.c +++ b/sway/commands/seat.c @@ -25,18 +25,18 @@ static struct cmd_handler seat_handlers[] = { { "xcursor_theme", seat_cmd_xcursor_theme }, }; -static struct cmd_results *action_handlers(int argc, char **argv) { - struct cmd_results *res = config_subcommand(argv, argc, +static struct cmd_results action_handlers(int argc, char **argv) { + struct cmd_results res = config_subcommand(argv, argc, seat_action_handlers, sizeof(seat_action_handlers)); free_seat_config(config->handler_context.seat_config); config->handler_context.seat_config = NULL; return res; } -static struct cmd_results *config_handlers(int argc, char **argv) { - struct cmd_results *res = config_subcommand(argv, argc, +static struct cmd_results config_handlers(int argc, char **argv) { + struct cmd_results res = config_subcommand(argv, argc, seat_handlers, sizeof(seat_handlers)); - if (res && res->status != CMD_SUCCESS) { + if (res.status != CMD_SUCCESS) { free_seat_config(config->handler_context.seat_config); } else { struct seat_config *sc = @@ -49,9 +49,9 @@ static struct cmd_results *config_handlers(int argc, char **argv) { return res; } -struct cmd_results *cmd_seat(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "seat", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_seat(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "seat", EXPECTED_AT_LEAST, 2)) { return error; } @@ -69,12 +69,12 @@ struct cmd_results *cmd_seat(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "Couldn't allocate config"); } - struct cmd_results *res = NULL; + struct cmd_results res; if (find_handler(argv[1], seat_action_handlers, sizeof(seat_action_handlers))) { res = action_handlers(argc - 1, argv + 1); } else { res = config_handlers(argc - 1, argv + 1); } - return res ? res : cmd_results_new(CMD_SUCCESS, NULL); + return res; } diff --git a/sway/commands/seat/attach.c b/sway/commands/seat/attach.c index 7615eef9b..a21c21ad3 100644 --- a/sway/commands/seat/attach.c +++ b/sway/commands/seat/attach.c @@ -4,9 +4,9 @@ #include "sway/config.h" #include "stringop.h" -struct cmd_results *seat_cmd_attach(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "attach", EXPECTED_AT_LEAST, 1))) { +struct cmd_results seat_cmd_attach(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "attach", EXPECTED_AT_LEAST, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/cursor.c b/sway/commands/seat/cursor.c index 085e6a33f..81d06d2cc 100644 --- a/sway/commands/seat/cursor.c +++ b/sway/commands/seat/cursor.c @@ -7,14 +7,14 @@ #include "sway/commands.h" #include "sway/input/cursor.h" -static struct cmd_results *press_or_release(struct sway_cursor *cursor, +static bool press_or_release(struct cmd_results *error, struct sway_cursor *cursor, char *action, char *button_str); static const char expected_syntax[] = "Expected 'cursor ' or " "'cursor ' or " "'cursor '"; -static struct cmd_results *handle_command(struct sway_cursor *cursor, +static struct cmd_results handle_command(struct sway_cursor *cursor, int argc, char **argv) { if (strcasecmp(argv[0], "move") == 0) { if (argc < 3) { @@ -37,8 +37,8 @@ static struct cmd_results *handle_command(struct sway_cursor *cursor, if (argc < 2) { return cmd_results_new(CMD_INVALID, expected_syntax); } - struct cmd_results *error = NULL; - if ((error = press_or_release(cursor, argv[0], argv[1]))) { + struct cmd_results error; + if (press_or_release(&error, cursor, argv[0], argv[1])) { return error; } } @@ -46,9 +46,9 @@ static struct cmd_results *handle_command(struct sway_cursor *cursor, return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *seat_cmd_cursor(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "cursor", EXPECTED_AT_LEAST, 2))) { +struct cmd_results seat_cmd_cursor(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "cursor", EXPECTED_AT_LEAST, 2)) { return error; } struct seat_config *sc = config->handler_context.seat_config; @@ -66,21 +66,20 @@ struct cmd_results *seat_cmd_cursor(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "Seat %s does not exist", sc->name); } - error = handle_command(seat->cursor, argc, argv); + return handle_command(seat->cursor, argc, argv); } else { struct sway_seat *seat = NULL; wl_list_for_each(seat, &server.input->seats, link) { error = handle_command(seat->cursor, argc, argv); - if ((error && error->status != CMD_SUCCESS)) { - break; + if (error.status != CMD_SUCCESS) { + return error; } } + return cmd_results_new(CMD_SUCCESS, NULL); } - - return error ? error : cmd_results_new(CMD_SUCCESS, NULL); } -static struct cmd_results *press_or_release(struct sway_cursor *cursor, +static bool press_or_release(struct cmd_results *error, struct sway_cursor *cursor, char *action, char *button_str) { enum wlr_button_state state; uint32_t button; @@ -89,16 +88,16 @@ static struct cmd_results *press_or_release(struct sway_cursor *cursor, } else if (strcasecmp(action, "release") == 0) { state = WLR_BUTTON_RELEASED; } else { - return cmd_results_new(CMD_INVALID, expected_syntax); + *error = cmd_results_new(CMD_INVALID, expected_syntax); + return true; } char *message = NULL; button = get_mouse_button(button_str, &message); if (message) { - struct cmd_results *error = - cmd_results_new(CMD_INVALID, message); + *error = cmd_results_new(CMD_INVALID, message); free(message); - return error; + return true; } else if (button == SWAY_SCROLL_UP || button == SWAY_SCROLL_DOWN || button == SWAY_SCROLL_LEFT || button == SWAY_SCROLL_RIGHT) { // Dispatch axis event @@ -117,10 +116,11 @@ static struct cmd_results *press_or_release(struct sway_cursor *cursor, .delta_discrete = delta }; dispatch_cursor_axis(cursor, &event); - return cmd_results_new(CMD_SUCCESS, NULL); + return false; } else if (!button) { - return cmd_results_new(CMD_INVALID, "Unknown button %s", button_str); + *error = cmd_results_new(CMD_INVALID, "Unknown button %s", button_str); + return true; } dispatch_cursor_button(cursor, NULL, 0, button, state); - return cmd_results_new(CMD_SUCCESS, NULL); + return false; } diff --git a/sway/commands/seat/fallback.c b/sway/commands/seat/fallback.c index 0330c3537..91a9a2219 100644 --- a/sway/commands/seat/fallback.c +++ b/sway/commands/seat/fallback.c @@ -2,9 +2,9 @@ #include "sway/commands.h" #include "util.h" -struct cmd_results *seat_cmd_fallback(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "fallback", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results seat_cmd_fallback(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "fallback", EXPECTED_EQUAL_TO, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/hide_cursor.c b/sway/commands/seat/hide_cursor.c index 3bfce6977..5fd09092b 100644 --- a/sway/commands/seat/hide_cursor.c +++ b/sway/commands/seat/hide_cursor.c @@ -5,9 +5,9 @@ #include "sway/input/seat.h" #include "stringop.h" -struct cmd_results *seat_cmd_hide_cursor(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "hide_cursor", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results seat_cmd_hide_cursor(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "hide_cursor", EXPECTED_EQUAL_TO, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/idle.c b/sway/commands/seat/idle.c index 82428f2c9..f0de4b67e 100644 --- a/sway/commands/seat/idle.c +++ b/sway/commands/seat/idle.c @@ -38,9 +38,9 @@ static uint32_t parse_sources(int argc, char **argv) { return sources; } -struct cmd_results *seat_cmd_idle_inhibit(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "idle_inhibit", EXPECTED_AT_LEAST, 1))) { +struct cmd_results seat_cmd_idle_inhibit(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "idle_inhibit", EXPECTED_AT_LEAST, 1)) { return error; } if (!config->handler_context.seat_config) { @@ -55,9 +55,9 @@ struct cmd_results *seat_cmd_idle_inhibit(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *seat_cmd_idle_wake(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "idle_wake", EXPECTED_AT_LEAST, 1))) { +struct cmd_results seat_cmd_idle_wake(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "idle_wake", EXPECTED_AT_LEAST, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/keyboard_grouping.c b/sway/commands/seat/keyboard_grouping.c index 5ad0f4081..e40a3a33b 100644 --- a/sway/commands/seat/keyboard_grouping.c +++ b/sway/commands/seat/keyboard_grouping.c @@ -3,9 +3,9 @@ #include "sway/config.h" #include "stringop.h" -struct cmd_results *seat_cmd_keyboard_grouping(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "keyboard_grouping", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results seat_cmd_keyboard_grouping(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "keyboard_grouping", EXPECTED_EQUAL_TO, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/pointer_constraint.c b/sway/commands/seat/pointer_constraint.c index 3890ebde0..8dd1e5e9d 100644 --- a/sway/commands/seat/pointer_constraint.c +++ b/sway/commands/seat/pointer_constraint.c @@ -12,9 +12,9 @@ enum operation { }; // pointer_constraint [enable|disable|escape] -struct cmd_results *seat_cmd_pointer_constraint(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "pointer_constraint", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results seat_cmd_pointer_constraint(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "pointer_constraint", EXPECTED_EQUAL_TO, 1)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/seat/xcursor_theme.c b/sway/commands/seat/xcursor_theme.c index 202f35b9e..668920433 100644 --- a/sway/commands/seat/xcursor_theme.c +++ b/sway/commands/seat/xcursor_theme.c @@ -3,10 +3,10 @@ #include "sway/commands.h" #include "sway/config.h" -struct cmd_results *seat_cmd_xcursor_theme(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xcursor_theme", EXPECTED_AT_LEAST, 1)) || - (error = checkarg(argc, "xcursor_theme", EXPECTED_AT_MOST, 2))) { +struct cmd_results seat_cmd_xcursor_theme(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xcursor_theme", EXPECTED_AT_LEAST, 1) || + checkarg(&error, argc, "xcursor_theme", EXPECTED_AT_MOST, 2)) { return error; } if (!config->handler_context.seat_config) { diff --git a/sway/commands/set.c b/sway/commands/set.c index c539e9fc7..1b6c12aae 100644 --- a/sway/commands/set.c +++ b/sway/commands/set.c @@ -24,9 +24,9 @@ void free_sway_variable(struct sway_variable *var) { free(var); } -struct cmd_results *cmd_set(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "set", EXPECTED_AT_LEAST, 2))) { +struct cmd_results cmd_set(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "set", EXPECTED_AT_LEAST, 2)) { return error; } diff --git a/sway/commands/show_marks.c b/sway/commands/show_marks.c index 0d373b80c..aa173cb08 100644 --- a/sway/commands/show_marks.c +++ b/sway/commands/show_marks.c @@ -14,9 +14,9 @@ static void rebuild_marks_iterator(struct sway_container *con, void *data) { container_update_marks_textures(con); } -struct cmd_results *cmd_show_marks(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "show_marks", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_show_marks(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "show_marks", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/smart_borders.c b/sway/commands/smart_borders.c index 738786799..0c78c3545 100644 --- a/sway/commands/smart_borders.c +++ b/sway/commands/smart_borders.c @@ -4,9 +4,9 @@ #include "sway/tree/view.h" #include "util.h" -struct cmd_results *cmd_smart_borders(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "smart_borders", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_smart_borders(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "smart_borders", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/smart_gaps.c b/sway/commands/smart_gaps.c index b27f9ccde..29a180623 100644 --- a/sway/commands/smart_gaps.c +++ b/sway/commands/smart_gaps.c @@ -8,10 +8,9 @@ #include "stringop.h" #include "util.h" -struct cmd_results *cmd_smart_gaps(int argc, char **argv) { - struct cmd_results *error = checkarg(argc, "smart_gaps", EXPECTED_AT_LEAST, 1); - - if (error) { +struct cmd_results cmd_smart_gaps(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "smart_gaps", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/split.c b/sway/commands/split.c index 8702f39e6..19d25896d 100644 --- a/sway/commands/split.c +++ b/sway/commands/split.c @@ -9,7 +9,7 @@ #include "sway/input/seat.h" #include "log.h" -static struct cmd_results *do_split(int layout) { +static struct cmd_results do_split(int layout) { struct sway_container *con = config->handler_context.container; struct sway_workspace *ws = config->handler_context.workspace; if (con) { @@ -36,9 +36,9 @@ static struct cmd_results *do_split(int layout) { return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *cmd_split(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "split", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_split(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "split", EXPECTED_EQUAL_TO, 1)) { return error; } if (!root->outputs->length) { @@ -66,25 +66,25 @@ struct cmd_results *cmd_split(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL); } -struct cmd_results *cmd_splitv(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) { +struct cmd_results cmd_splitv(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "splitv", EXPECTED_EQUAL_TO, 0)) { return error; } return do_split(L_VERT); } -struct cmd_results *cmd_splith(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) { +struct cmd_results cmd_splith(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "splitv", EXPECTED_EQUAL_TO, 0)) { return error; } return do_split(L_HORIZ); } -struct cmd_results *cmd_splitt(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) { +struct cmd_results cmd_splitt(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "splitv", EXPECTED_EQUAL_TO, 0)) { return error; } diff --git a/sway/commands/sticky.c b/sway/commands/sticky.c index 9df1fe09d..fa52c5b64 100644 --- a/sway/commands/sticky.c +++ b/sway/commands/sticky.c @@ -12,9 +12,9 @@ #include "log.h" #include "util.h" -struct cmd_results *cmd_sticky(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "sticky", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_sticky(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "sticky", EXPECTED_EQUAL_TO, 1)) { return error; } struct sway_container *container = config->handler_context.container; diff --git a/sway/commands/swap.c b/sway/commands/swap.c index 697de2268..edcd1789c 100644 --- a/sway/commands/swap.c +++ b/sway/commands/swap.c @@ -208,9 +208,9 @@ static bool test_mark(struct sway_container *container, void *mark) { return false; } -struct cmd_results *cmd_swap(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "swap", EXPECTED_AT_LEAST, 4))) { +struct cmd_results cmd_swap(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "swap", EXPECTED_AT_LEAST, 4)) { return error; } if (!root->outputs->length) { @@ -242,23 +242,22 @@ struct cmd_results *cmd_swap(int argc, char **argv) { } if (!other) { - error = cmd_results_new(CMD_FAILURE, + struct cmd_results res = cmd_results_new(CMD_FAILURE, "Failed to find %s '%s'", argv[2], value); + free(value); + return res; } else if (!current) { - error = cmd_results_new(CMD_FAILURE, + free(value); + return cmd_results_new(CMD_FAILURE, "Can only swap with containers and views"); } else if (container_has_ancestor(current, other) || container_has_ancestor(other, current)) { - error = cmd_results_new(CMD_FAILURE, + free(value); + return cmd_results_new(CMD_FAILURE, "Cannot swap ancestor and descendant"); } - free(value); - if (error) { - return error; - } - container_swap(current, other); if (root->fullscreen_global) { diff --git a/sway/commands/swaybg_command.c b/sway/commands/swaybg_command.c index 92e9bdfd6..603c7db5c 100644 --- a/sway/commands/swaybg_command.c +++ b/sway/commands/swaybg_command.c @@ -3,9 +3,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_swaybg_command(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "swaybg_command", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_swaybg_command(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "swaybg_command", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/swaynag_command.c b/sway/commands/swaynag_command.c index f851d2234..663a1a5f1 100644 --- a/sway/commands/swaynag_command.c +++ b/sway/commands/swaynag_command.c @@ -3,9 +3,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_swaynag_command(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "swaynag_command", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_swaynag_command(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "swaynag_command", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/tiling_drag.c b/sway/commands/tiling_drag.c index e95526e80..2816e4219 100644 --- a/sway/commands/tiling_drag.c +++ b/sway/commands/tiling_drag.c @@ -1,9 +1,9 @@ #include "sway/commands.h" #include "util.h" -struct cmd_results *cmd_tiling_drag(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tiling_drag", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_tiling_drag(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "tiling_drag", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/tiling_drag_threshold.c b/sway/commands/tiling_drag_threshold.c index f11911182..a1105dfbd 100644 --- a/sway/commands/tiling_drag_threshold.c +++ b/sway/commands/tiling_drag_threshold.c @@ -3,9 +3,9 @@ #include "sway/config.h" #include "log.h" -struct cmd_results *cmd_tiling_drag_threshold(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "tiling_drag_threshold", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_tiling_drag_threshold(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "tiling_drag_threshold", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/title_align.c b/sway/commands/title_align.c index c30355deb..efebce9d1 100644 --- a/sway/commands/title_align.c +++ b/sway/commands/title_align.c @@ -4,9 +4,9 @@ #include "sway/tree/container.h" #include "sway/tree/root.h" -struct cmd_results *cmd_title_align(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "title_align", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_title_align(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "title_align", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/title_format.c b/sway/commands/title_format.c index 9d312470e..5da7aa2f9 100644 --- a/sway/commands/title_format.c +++ b/sway/commands/title_format.c @@ -6,9 +6,9 @@ #include "log.h" #include "stringop.h" -struct cmd_results *cmd_title_format(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "title_format", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_title_format(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "title_format", EXPECTED_AT_LEAST, 1)) { return error; } struct sway_container *container = config->handler_context.container; diff --git a/sway/commands/titlebar_border_thickness.c b/sway/commands/titlebar_border_thickness.c index 7c27c163a..8f0e84b17 100644 --- a/sway/commands/titlebar_border_thickness.c +++ b/sway/commands/titlebar_border_thickness.c @@ -5,9 +5,9 @@ #include "sway/tree/arrange.h" #include "log.h" -struct cmd_results *cmd_titlebar_border_thickness(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "titlebar_border_thickness", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_titlebar_border_thickness(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "titlebar_border_thickness", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/commands/titlebar_padding.c b/sway/commands/titlebar_padding.c index 29ce59ff0..d5be525c6 100644 --- a/sway/commands/titlebar_padding.c +++ b/sway/commands/titlebar_padding.c @@ -5,9 +5,9 @@ #include "sway/tree/arrange.h" #include "log.h" -struct cmd_results *cmd_titlebar_padding(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "titlebar_padding", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_titlebar_padding(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "titlebar_padding", EXPECTED_AT_LEAST, 1)) { return error; } diff --git a/sway/commands/unmark.c b/sway/commands/unmark.c index cedfcfb2c..2b1ea6fa1 100644 --- a/sway/commands/unmark.c +++ b/sway/commands/unmark.c @@ -18,7 +18,7 @@ static void remove_all_marks_iterator(struct sway_container *con, void *data) { // [criteria] unmark Remove all marks from matched view // [criteria] unmark foo Remove single mark from matched view -struct cmd_results *cmd_unmark(int argc, char **argv) { +struct cmd_results cmd_unmark(int argc, char **argv) { // Determine the container struct sway_container *con = NULL; if (config->handler_context.using_criteria) { diff --git a/sway/commands/urgent.c b/sway/commands/urgent.c index 3a2b00ed5..369339a60 100644 --- a/sway/commands/urgent.c +++ b/sway/commands/urgent.c @@ -6,9 +6,9 @@ #include "sway/tree/view.h" #include "util.h" -struct cmd_results *cmd_urgent(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "urgent", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_urgent(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "urgent", EXPECTED_EQUAL_TO, 1)) { return error; } struct sway_container *container = config->handler_context.container; diff --git a/sway/commands/workspace.c b/sway/commands/workspace.c index b911b2f61..f69939912 100644 --- a/sway/commands/workspace.c +++ b/sway/commands/workspace.c @@ -56,13 +56,13 @@ static void prevent_invalid_outer_gaps(struct workspace_config *wsc) { } } -static struct cmd_results *cmd_workspace_gaps(int argc, char **argv, +static struct cmd_results cmd_workspace_gaps(int argc, char **argv, int gaps_location) { const char expected[] = "Expected 'workspace gaps " "inner|outer|horizontal|vertical|top|right|bottom|left '"; - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "workspace", EXPECTED_EQUAL_TO, - gaps_location + 3))) { + struct cmd_results error; + if (checkarg(&error, argc, "workspace", EXPECTED_EQUAL_TO, + gaps_location + 3)) { return error; } char *ws_name = join_args(argv, argc - 3); @@ -119,9 +119,9 @@ static struct cmd_results *cmd_workspace_gaps(int argc, char **argv, return error; } -struct cmd_results *cmd_workspace(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "workspace", EXPECTED_AT_LEAST, 1))) { +struct cmd_results cmd_workspace(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "workspace", EXPECTED_AT_LEAST, 1)) { return error; } @@ -141,8 +141,8 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { } } if (output_location >= 0) { - if ((error = checkarg(argc, "workspace", EXPECTED_AT_LEAST, - output_location + 2))) { + if (checkarg(&error, argc, "workspace", EXPECTED_AT_LEAST, + output_location + 2)) { return error; } char *ws_name = join_args(argv, output_location); @@ -156,9 +156,7 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { list_add(wsc->outputs, strdup(argv[i])); } } else if (gaps_location >= 0) { - if ((error = cmd_workspace_gaps(argc, argv, gaps_location))) { - return error; - } + return cmd_workspace_gaps(argc, argv, gaps_location); } else { if (config->reading || !config->active) { return cmd_results_new(CMD_DEFER, NULL); @@ -175,7 +173,7 @@ struct cmd_results *cmd_workspace(int argc, char **argv) { bool no_auto_back_and_forth = false; while (strcasecmp(argv[0], "--no-auto-back-and-forth") == 0) { no_auto_back_and_forth = true; - if ((error = checkarg(--argc, "workspace", EXPECTED_AT_LEAST, 1))) { + if (checkarg(&error, --argc, "workspace", EXPECTED_AT_LEAST, 1)) { return error; } ++argv; diff --git a/sway/commands/workspace_layout.c b/sway/commands/workspace_layout.c index 4fed05abf..482ccc295 100644 --- a/sway/commands/workspace_layout.c +++ b/sway/commands/workspace_layout.c @@ -2,9 +2,9 @@ #include #include "sway/commands.h" -struct cmd_results *cmd_workspace_layout(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "workspace_layout", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_workspace_layout(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "workspace_layout", EXPECTED_EQUAL_TO, 1)) { return error; } if (strcasecmp(argv[0], "default") == 0) { diff --git a/sway/commands/ws_auto_back_and_forth.c b/sway/commands/ws_auto_back_and_forth.c index e4411c8ed..cbe636b33 100644 --- a/sway/commands/ws_auto_back_and_forth.c +++ b/sway/commands/ws_auto_back_and_forth.c @@ -3,9 +3,9 @@ #include "sway/commands.h" #include "util.h" -struct cmd_results *cmd_ws_auto_back_and_forth(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "workspace_auto_back_and_forth", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_ws_auto_back_and_forth(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "workspace_auto_back_and_forth", EXPECTED_EQUAL_TO, 1)) { return error; } config->auto_back_and_forth = diff --git a/sway/commands/xwayland.c b/sway/commands/xwayland.c index 6ca269231..802297ca5 100644 --- a/sway/commands/xwayland.c +++ b/sway/commands/xwayland.c @@ -4,9 +4,9 @@ #include "sway/server.h" #include "util.h" -struct cmd_results *cmd_xwayland(int argc, char **argv) { - struct cmd_results *error = NULL; - if ((error = checkarg(argc, "xwayland", EXPECTED_EQUAL_TO, 1))) { +struct cmd_results cmd_xwayland(int argc, char **argv) { + struct cmd_results error; + if (checkarg(&error, argc, "xwayland", EXPECTED_EQUAL_TO, 1)) { return error; } diff --git a/sway/config.c b/sway/config.c index 347042772..373d11bab 100644 --- a/sway/config.c +++ b/sway/config.c @@ -657,7 +657,8 @@ void run_deferred_commands(void) { sway_log(SWAY_ERROR, "Error on line '%s': %s", line, res->error); } - free_cmd_results(res); + free_cmd_results(*res); + free(res); } list_del(config->cmd_queue, 0); list_free(res_list); @@ -820,7 +821,7 @@ bool read_config(FILE *file, struct sway_config *config, } config->current_config_line_number = line_number; config->current_config_line = line; - struct cmd_results *res; + struct cmd_results res; char *new_block = NULL; if (block && strcmp(block, "") == 0) { // Special case @@ -828,15 +829,15 @@ bool read_config(FILE *file, struct sway_config *config, } else { res = config_command(expanded, &new_block); } - switch(res->status) { + switch(res.status) { case CMD_FAILURE: case CMD_INVALID: sway_log(SWAY_ERROR, "Error on line %i '%s': %s (%s)", line_number, - line, res->error, config->current_config_path); + line, res.error, config->current_config_path); if (!config->validating) { swaynag_log(config->swaynag_command, swaynag, "Error on line %i (%s) '%s': %s", line_number, - config->current_config_path, line, res->error); + config->current_config_path, line, res.error); } success = false; break; diff --git a/sway/ipc-server.c b/sway/ipc-server.c index 9c4f7a640..00981e276 100644 --- a/sway/ipc-server.c +++ b/sway/ipc-server.c @@ -637,10 +637,10 @@ void ipc_client_handle_command(struct ipc_client *client, uint32_t payload_lengt int length = strlen(json); ipc_send_reply(client, payload_type, json, (uint32_t)length); free(json); - while (res_list->length) { - struct cmd_results *results = res_list->items[0]; - free_cmd_results(results); - list_del(res_list, 0); + for (int i = 0; i < res_list->length; ++i) { + struct cmd_results *res = res_list->items[i]; + free_cmd_results(*res); + free(res); } list_free(res_list); goto exit_cleanup; diff --git a/sway/tree/view.c b/sway/tree/view.c index 93d4fefce..c85d42825 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -441,7 +441,8 @@ void view_execute_criteria(struct sway_view *view) { criteria->cmdlist, NULL, view->container); while (res_list->length) { struct cmd_results *res = res_list->items[0]; - free_cmd_results(res); + free_cmd_results(*res); + free(res); list_del(res_list, 0); } list_free(res_list);