From 6d392150a72ecc3b69fcfb48865f625e2c7b79d6 Mon Sep 17 00:00:00 2001 From: M Stoeckl Date: Thu, 10 Jan 2019 08:27:52 -0500 Subject: [PATCH] Remove 'input' field of IPC command return json This field is not in i3 and provides imprecise and redundant information. (Specifically, when swaymsg is given a list of commands, the IPC return array already indicates precisely which number command failed; knowing the name of the command is not useful when multiple commands of the same type are provided.) --- include/sway/commands.h | 3 +-- sway/commands.c | 20 ++++---------------- sway/config.c | 10 ++++++---- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/sway/commands.h b/include/sway/commands.h index 5d45d78b..757cc817 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h @@ -31,7 +31,6 @@ enum cmd_status { */ struct cmd_results { enum cmd_status status; - char *input; /** * Human friendly error message, or NULL on success */ @@ -63,7 +62,7 @@ list_t *execute_command(char *command, struct sway_seat *seat, * * Do not use this under normal conditions. */ -struct cmd_results *config_command(char *command); +struct cmd_results *config_command(char *command, char **new_block); /** * Parse and handle a sub command */ diff --git a/sway/commands.c b/sway/commands.c index 1d190e0b..9fae6a35 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -316,7 +316,7 @@ 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) { +struct cmd_results *config_command(char *exec, char **new_block) { struct cmd_results *results = NULL; int argc; char **argv = split_args(exec, &argc); @@ -329,9 +329,8 @@ struct cmd_results *config_command(char *exec) { // Check for the start of a block if (argc > 1 && strcmp(argv[argc - 1], "{") == 0) { - char *block = join_args(argv, argc - 1); - results = cmd_results_new(CMD_BLOCK, block, NULL); - free(block); + *new_block = join_args(argv, argc - 1); + results = cmd_results_new(CMD_BLOCK, NULL, NULL); goto cleanup; } @@ -509,11 +508,7 @@ struct cmd_results *cmd_results_new(enum cmd_status status, return NULL; } results->status = status; - if (input) { - results->input = strdup(input); // input is the command name - } else { - results->input = NULL; - } + // NOTE: `input` argument is unused, remove if (format) { char *error = malloc(256); va_list args; @@ -530,9 +525,6 @@ struct cmd_results *cmd_results_new(enum cmd_status status, } void free_cmd_results(struct cmd_results *results) { - if (results->input) { - free(results->input); - } if (results->error) { free(results->error); } @@ -552,10 +544,6 @@ char *cmd_results_to_json(list_t *res_list) { json_object_object_add( root, "error", json_object_new_string(results->error)); } - if (results->input) { - json_object_object_add( - root, "input", json_object_new_string(results->input)); - } json_object_array_add(result_array, root); } const char *json = json_object_to_json_string(result_array); diff --git a/sway/config.c b/sway/config.c index 18fee404..d5d36306 100644 --- a/sway/config.c +++ b/sway/config.c @@ -710,11 +710,12 @@ 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; + char *new_block = NULL; if (block && strcmp(block, "") == 0) { // Special case res = config_commands_command(expanded); } else { - res = config_command(expanded); + res = config_command(expanded, &new_block); } switch(res->status) { case CMD_FAILURE: @@ -740,9 +741,9 @@ bool read_config(FILE *file, struct sway_config *config, break; case CMD_BLOCK: - wlr_log(WLR_DEBUG, "Entering block '%s'", res->input); - list_insert(stack, 0, strdup(res->input)); - if (strcmp(res->input, "bar") == 0) { + wlr_log(WLR_DEBUG, "Entering block '%s'", new_block); + list_insert(stack, 0, strdup(new_block)); + if (strcmp(new_block, "bar") == 0) { config->current_bar = NULL; } break; @@ -764,6 +765,7 @@ bool read_config(FILE *file, struct sway_config *config, sizeof(config->handler_context)); default:; } + free(new_block); free(expanded); free_cmd_results(res); }