Refactor parse_command

parse_command returns a struct that contains useful information about
the result of a command as a whole (instead of the intermediate
representation used during parsing).

parse_command now requires the caller to allocate the yajl_gen used for
generating a json reply. This is passed as the second parameter to
parse_command. If NULL is passed, no json reply will be generated.
This commit is contained in:
Tony Crisci
2014-05-28 02:01:50 -04:00
committed by Michael Stapelberg
parent 62ea60ba42
commit c7aae56030
6 changed files with 99 additions and 32 deletions

@ -45,13 +45,13 @@ void run_assignments(i3Window *window) {
DLOG("execute command %s\n", current->dest.command);
char *full_command;
sasprintf(&full_command, "[id=\"%d\"] %s", window->id, current->dest.command);
struct CommandResultIR *command_output = parse_command(full_command);
CommandResult *result = parse_command(full_command, NULL);
free(full_command);
if (command_output->needs_tree_render)
if (result->needs_tree_render)
needs_tree_render = true;
yajl_gen_free(command_output->json_gen);
command_result_free(result);
}
/* Store that we ran this assignment to not execute it again */