ipc,commands,config: Replace cmd_status enum with cmd_results struct.

In i3 the ipc reply will contain a human readable error message, and
this patch replicates that behaviour.

However, that error message is also useful for logging, which this
patch takes advantage of.

E.g. instead of logging errors directly in commands.c/checkargs, it is
fed back to the caller which eventually ends up logging everything with
maximum context available (config.c/read_config).

So instead of logging e.g. "Error on line 'exit'" it will now log:
"Error on line 'exit': Can't execute from config."
This commit is contained in:
S. Christoffer Eliesen 2015-10-22 14:14:13 +02:00
parent 544c6c412a
commit af30a1b67c
5 changed files with 333 additions and 222 deletions

View file

@ -234,10 +234,11 @@ bool read_config(FILE *file, bool is_active) {
while (!feof(file)) {
line = read_line(file);
line = strip_comments(line);
switch(config_command(line)) {
struct cmd_results *res = config_command(line);
switch(res->status) {
case CMD_FAILURE:
case CMD_INVALID:
sway_log(L_ERROR, "Error on line '%s'", line);
sway_log(L_ERROR, "Error on line '%s': %s", line, res->error);
success = false;
break;
@ -270,6 +271,7 @@ bool read_config(FILE *file, bool is_active) {
default:;
}
free(line);
free(res);
}
if (is_active) {