reduce some yajl boilerplate
This patch introduces a yerror() macro in src/commands.c and also removes some unused yajl helper macros from src/config_directives.c. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
This commit is contained in:
parent
0bfcf1a762
commit
5baada6532
|
@ -24,6 +24,14 @@
|
||||||
y(bool, success); \
|
y(bool, success); \
|
||||||
y(map_close); \
|
y(map_close); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
#define yerror(message) do { \
|
||||||
|
y(map_open); \
|
||||||
|
ystr("success"); \
|
||||||
|
y(bool, false); \
|
||||||
|
ystr("error"); \
|
||||||
|
ystr(message); \
|
||||||
|
y(map_close); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/** When the command did not include match criteria (!), we use the currently
|
/** When the command did not include match criteria (!), we use the currently
|
||||||
* focused container. Do not confuse this case with a command which included
|
* focused container. Do not confuse this case with a command which included
|
||||||
|
@ -441,12 +449,7 @@ void cmd_move_con_to_workspace_back_and_forth(I3_CMD) {
|
||||||
ws = workspace_back_and_forth_get();
|
ws = workspace_back_and_forth_get();
|
||||||
|
|
||||||
if (ws == NULL) {
|
if (ws == NULL) {
|
||||||
y(map_open);
|
yerror("No workspace was previously active.");
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
ystr("No workspace was previously active.");
|
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -535,13 +538,8 @@ void cmd_move_con_to_workspace_number(I3_CMD, char *which) {
|
||||||
parsed_num < 0 ||
|
parsed_num < 0 ||
|
||||||
endptr == which) {
|
endptr == which) {
|
||||||
LOG("Could not parse initial part of \"%s\" as a number.\n", which);
|
LOG("Could not parse initial part of \"%s\" as a number.\n", which);
|
||||||
y(map_open);
|
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
// TODO: better error message
|
// TODO: better error message
|
||||||
ystr("Could not parse number");
|
yerror("Could not parse number");
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -939,13 +937,8 @@ void cmd_workspace_number(I3_CMD, char *which) {
|
||||||
parsed_num < 0 ||
|
parsed_num < 0 ||
|
||||||
endptr == which) {
|
endptr == which) {
|
||||||
LOG("Could not parse initial part of \"%s\" as a number.\n", which);
|
LOG("Could not parse initial part of \"%s\" as a number.\n", which);
|
||||||
y(map_open);
|
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
// TODO: better error message
|
// TODO: better error message
|
||||||
ystr("Could not parse number");
|
yerror("Could not parse number");
|
||||||
y(map_close);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1439,12 +1432,7 @@ void cmd_focus(I3_CMD) {
|
||||||
ELOG("You have to specify which window/container should be focused.\n");
|
ELOG("You have to specify which window/container should be focused.\n");
|
||||||
ELOG("Example: [class=\"urxvt\" title=\"irssi\"] focus\n");
|
ELOG("Example: [class=\"urxvt\" title=\"irssi\"] focus\n");
|
||||||
|
|
||||||
y(map_open);
|
yerror("You have to specify which window/container should be focused");
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
ystr("You have to specify which window/container should be focused");
|
|
||||||
y(map_close);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1750,12 +1738,7 @@ void cmd_move_window_to_position(I3_CMD, char *method, char *cx, char *cy) {
|
||||||
|
|
||||||
if (!con_is_floating(focused)) {
|
if (!con_is_floating(focused)) {
|
||||||
ELOG("Cannot change position. The window/container is not floating\n");
|
ELOG("Cannot change position. The window/container is not floating\n");
|
||||||
y(map_open);
|
yerror("Cannot change position. The window/container is not floating.");
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
ystr("Cannot change position. The window/container is not floating.");
|
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1790,12 +1773,7 @@ void cmd_move_window_to_center(I3_CMD, char *method) {
|
||||||
|
|
||||||
if (!con_is_floating(focused)) {
|
if (!con_is_floating(focused)) {
|
||||||
ELOG("Cannot change position. The window/container is not floating\n");
|
ELOG("Cannot change position. The window/container is not floating\n");
|
||||||
y(map_open);
|
yerror("Cannot change position. The window/container is not floating.");
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
ystr("Cannot change position. The window/container is not floating.");
|
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1890,13 +1868,8 @@ void cmd_rename_workspace(I3_CMD, char *old_name, char *new_name) {
|
||||||
if (!workspace) {
|
if (!workspace) {
|
||||||
// TODO: we should include the old workspace name here and use yajl for
|
// TODO: we should include the old workspace name here and use yajl for
|
||||||
// generating the reply.
|
// generating the reply.
|
||||||
y(map_open);
|
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
// TODO: better error message
|
// TODO: better error message
|
||||||
ystr("Old workspace not found");
|
yerror("Old workspace not found");
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1908,13 +1881,8 @@ void cmd_rename_workspace(I3_CMD, char *old_name, char *new_name) {
|
||||||
if (check_dest != NULL) {
|
if (check_dest != NULL) {
|
||||||
// TODO: we should include the new workspace name here and use yajl for
|
// TODO: we should include the new workspace name here and use yajl for
|
||||||
// generating the reply.
|
// generating the reply.
|
||||||
y(map_open);
|
|
||||||
ystr("success");
|
|
||||||
y(bool, false);
|
|
||||||
ystr("error");
|
|
||||||
// TODO: better error message
|
// TODO: better error message
|
||||||
ystr("New workspace already exists");
|
yerror("New workspace already exists");
|
||||||
y(map_close);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,16 +14,6 @@
|
||||||
|
|
||||||
#include "all.h"
|
#include "all.h"
|
||||||
|
|
||||||
// Macros to make the YAJL API a bit easier to use.
|
|
||||||
#define y(x, ...) yajl_gen_ ## x (cmd_output->json_gen, ##__VA_ARGS__)
|
|
||||||
#define ystr(str) yajl_gen_string(cmd_output->json_gen, (unsigned char*)str, strlen(str))
|
|
||||||
#define ysuccess(success) do { \
|
|
||||||
y(map_open); \
|
|
||||||
ystr("success"); \
|
|
||||||
y(bool, success); \
|
|
||||||
y(map_close); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Criteria functions.
|
* Criteria functions.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue