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.)
This commit is contained in:
M Stoeckl 2019-01-10 08:27:52 -05:00
parent 64ef936673
commit 6d392150a7
3 changed files with 11 additions and 22 deletions

View File

@ -31,7 +31,6 @@ enum cmd_status {
*/ */
struct cmd_results { struct cmd_results {
enum cmd_status status; enum cmd_status status;
char *input;
/** /**
* Human friendly error message, or NULL on success * 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. * 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 * Parse and handle a sub command
*/ */

View File

@ -316,7 +316,7 @@ cleanup:
// be chained together) // be chained together)
// 4) execute_command handles all state internally while config_command has // 4) execute_command handles all state internally while config_command has
// some state handled outside (notably the block mode, in read_config) // 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; struct cmd_results *results = NULL;
int argc; int argc;
char **argv = split_args(exec, &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 // Check for the start of a block
if (argc > 1 && strcmp(argv[argc - 1], "{") == 0) { if (argc > 1 && strcmp(argv[argc - 1], "{") == 0) {
char *block = join_args(argv, argc - 1); *new_block = join_args(argv, argc - 1);
results = cmd_results_new(CMD_BLOCK, block, NULL); results = cmd_results_new(CMD_BLOCK, NULL, NULL);
free(block);
goto cleanup; goto cleanup;
} }
@ -509,11 +508,7 @@ struct cmd_results *cmd_results_new(enum cmd_status status,
return NULL; return NULL;
} }
results->status = status; results->status = status;
if (input) { // NOTE: `input` argument is unused, remove
results->input = strdup(input); // input is the command name
} else {
results->input = NULL;
}
if (format) { if (format) {
char *error = malloc(256); char *error = malloc(256);
va_list args; 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) { void free_cmd_results(struct cmd_results *results) {
if (results->input) {
free(results->input);
}
if (results->error) { if (results->error) {
free(results->error); free(results->error);
} }
@ -552,10 +544,6 @@ char *cmd_results_to_json(list_t *res_list) {
json_object_object_add( json_object_object_add(
root, "error", json_object_new_string(results->error)); 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); json_object_array_add(result_array, root);
} }
const char *json = json_object_to_json_string(result_array); const char *json = json_object_to_json_string(result_array);

View File

@ -710,11 +710,12 @@ bool read_config(FILE *file, struct sway_config *config,
config->current_config_line_number = line_number; config->current_config_line_number = line_number;
config->current_config_line = line; config->current_config_line = line;
struct cmd_results *res; struct cmd_results *res;
char *new_block = NULL;
if (block && strcmp(block, "<commands>") == 0) { if (block && strcmp(block, "<commands>") == 0) {
// Special case // Special case
res = config_commands_command(expanded); res = config_commands_command(expanded);
} else { } else {
res = config_command(expanded); res = config_command(expanded, &new_block);
} }
switch(res->status) { switch(res->status) {
case CMD_FAILURE: case CMD_FAILURE:
@ -740,9 +741,9 @@ bool read_config(FILE *file, struct sway_config *config,
break; break;
case CMD_BLOCK: case CMD_BLOCK:
wlr_log(WLR_DEBUG, "Entering block '%s'", res->input); wlr_log(WLR_DEBUG, "Entering block '%s'", new_block);
list_insert(stack, 0, strdup(res->input)); list_insert(stack, 0, strdup(new_block));
if (strcmp(res->input, "bar") == 0) { if (strcmp(new_block, "bar") == 0) {
config->current_bar = NULL; config->current_bar = NULL;
} }
break; break;
@ -764,6 +765,7 @@ bool read_config(FILE *file, struct sway_config *config,
sizeof(config->handler_context)); sizeof(config->handler_context));
default:; default:;
} }
free(new_block);
free(expanded); free(expanded);
free_cmd_results(res); free_cmd_results(res);
} }