af30a1b67c
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."
36 lines
794 B
C
36 lines
794 B
C
#ifndef _SWAY_COMMANDS_H
|
|
#define _SWAY_COMMANDS_H
|
|
#include <stdbool.h>
|
|
#include <json-c/json.h>
|
|
#include "config.h"
|
|
|
|
|
|
enum cmd_status {
|
|
CMD_SUCCESS,
|
|
CMD_FAILURE, // was or at least could be executed
|
|
CMD_INVALID, // unknown or parse error
|
|
CMD_DEFER,
|
|
// Config Blocks
|
|
CMD_BLOCK_END,
|
|
CMD_BLOCK_MODE,
|
|
};
|
|
|
|
struct cmd_results {
|
|
enum cmd_status status;
|
|
|
|
const char *input;
|
|
char *error;
|
|
};
|
|
|
|
struct cmd_results *handle_command(char *command);
|
|
// Handles commands during config
|
|
struct cmd_results *config_command(char *command);
|
|
|
|
struct cmd_results *cmd_results_new(enum cmd_status status, const char* input, const char *error, ...);
|
|
void free_cmd_results(struct cmd_results *results);
|
|
const char *cmd_results_to_json(struct cmd_results *results);
|
|
|
|
void remove_view_from_scratchpad();
|
|
|
|
#endif
|