diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-12-17 15:51:49 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-12-17 15:51:49 -0500 |
commit | 1c4a086e7556475139960a25cb642f115d057c23 (patch) | |
tree | baa407363899155a876ea6993ad55020059c5cfd | |
parent | Merge pull request #1519 from ggreer/clear-password-buffer-0.15 (diff) | |
parent | Adaptions for API change in json-c v0.13 (diff) | |
download | sway-1c4a086e7556475139960a25cb642f115d057c23.tar.gz sway-1c4a086e7556475139960a25cb642f115d057c23.tar.zst sway-1c4a086e7556475139960a25cb642f115d057c23.zip |
Merge remote-tracking branch 'besser82/bugfix/json-c' into 0.15
-rw-r--r-- | .travis.yml | 7 | ||||
-rw-r--r-- | CMakeLists.txt | 11 | ||||
-rw-r--r-- | include/sway_json_helper.h | 16 | ||||
-rw-r--r-- | include/swaygrab/json.h | 2 | ||||
-rw-r--r-- | sway/ipc-server.c | 7 | ||||
-rw-r--r-- | swaybar/status_line.c | 5 | ||||
-rw-r--r-- | swaygrab/json.c | 9 | ||||
-rw-r--r-- | swaylock/main.c | 4 | ||||
-rw-r--r-- | swaymsg/main.c | 4 |
9 files changed, 48 insertions, 17 deletions
diff --git a/.travis.yml b/.travis.yml index 69634765..3eeb1682 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -6,6 +6,11 @@ compiler: | |||
6 | - gcc | 6 | - gcc |
7 | - clang | 7 | - clang |
8 | 8 | ||
9 | env: | ||
10 | - BUILD_TYPE=Release | ||
11 | - BUILD_TYPE=Debug | ||
12 | - BUILD_TYPE=ASAN | ||
13 | |||
9 | arch: | 14 | arch: |
10 | packages: | 15 | packages: |
11 | - cmake | 16 | - cmake |
@@ -19,7 +24,7 @@ arch: | |||
19 | - wlc-git | 24 | - wlc-git |
20 | - libcap | 25 | - libcap |
21 | script: | 26 | script: |
22 | - "cmake ." | 27 | - "cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE ." |
23 | - "make" | 28 | - "make" |
24 | 29 | ||
25 | script: | 30 | script: |
diff --git a/CMakeLists.txt b/CMakeLists.txt index 99081dca..dc521570 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -9,6 +9,17 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) | |||
9 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) | 9 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) |
10 | add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-unused-result -Werror) | 10 | add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wno-unused-result -Werror) |
11 | 11 | ||
12 | # Add Address Sanitiezed build type | ||
13 | set(CMAKE_C_FLAGS_ASAN | ||
14 | "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer" | ||
15 | CACHE STRING "Flags used by the C compiler during address sanitizer builds." | ||
16 | FORCE ) | ||
17 | mark_as_advanced( | ||
18 | CMAKE_C_FLAGS_ASAN | ||
19 | CMAKE_EXE_LINKER_FLAGS_DEBUG | ||
20 | CMAKE_SHARED_LINKER_FLAGS_DEBUG | ||
21 | ) | ||
22 | |||
12 | list(INSERT CMAKE_MODULE_PATH 0 | 23 | list(INSERT CMAKE_MODULE_PATH 0 |
13 | ${CMAKE_CURRENT_SOURCE_DIR}/CMake | 24 | ${CMAKE_CURRENT_SOURCE_DIR}/CMake |
14 | ) | 25 | ) |
diff --git a/include/sway_json_helper.h b/include/sway_json_helper.h new file mode 100644 index 00000000..66f9cff1 --- /dev/null +++ b/include/sway_json_helper.h | |||
@@ -0,0 +1,16 @@ | |||
1 | #ifndef _SWAY_JSON_HELPER_H | ||
2 | #define _SWAY_JSON_HELPER_H | ||
3 | |||
4 | #include <json-c/json.h> | ||
5 | |||
6 | // Macros for checking a specific version. | ||
7 | #define JSON_C_VERSION_013 (13 << 8) | ||
8 | |||
9 | // json-c v0.13 uses size_t for array_list_length(). | ||
10 | #if defined(JSON_C_VERSION_NUM) && JSON_C_VERSION_NUM >= JSON_C_VERSION_013 | ||
11 | typedef size_t json_ar_len_t; | ||
12 | #else | ||
13 | typedef int json_ar_len_t; | ||
14 | #endif | ||
15 | |||
16 | #endif // _SWAY_JSON_HELPER_H | ||
diff --git a/include/swaygrab/json.h b/include/swaygrab/json.h index c1093ef1..c0bd8587 100644 --- a/include/swaygrab/json.h +++ b/include/swaygrab/json.h | |||
@@ -1,4 +1,4 @@ | |||
1 | #include <json-c/json.h> | 1 | #include "sway_json_helper.h" |
2 | #include "wlc/wlc.h" | 2 | #include "wlc/wlc.h" |
3 | 3 | ||
4 | void init_json_tree(int socketfd); | 4 | void init_json_tree(int socketfd); |
diff --git a/sway/ipc-server.c b/sway/ipc-server.c index b560b930..e10445cf 100644 --- a/sway/ipc-server.c +++ b/sway/ipc-server.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <stdlib.h> | 15 | #include <stdlib.h> |
16 | #include <sys/ioctl.h> | 16 | #include <sys/ioctl.h> |
17 | #include <fcntl.h> | 17 | #include <fcntl.h> |
18 | #include <json-c/json.h> | ||
19 | #include <list.h> | 18 | #include <list.h> |
20 | #include <libinput.h> | 19 | #include <libinput.h> |
21 | #ifdef __linux__ | 20 | #ifdef __linux__ |
@@ -25,6 +24,7 @@ struct ucred { | |||
25 | gid_t gid; | 24 | gid_t gid; |
26 | }; | 25 | }; |
27 | #endif | 26 | #endif |
27 | #include "sway_json_helper.h" | ||
28 | #include "sway/ipc-json.h" | 28 | #include "sway/ipc-json.h" |
29 | #include "sway/ipc-server.h" | 29 | #include "sway/ipc-server.h" |
30 | #include "sway/security.h" | 30 | #include "sway/security.h" |
@@ -724,7 +724,7 @@ void ipc_client_handle_command(struct ipc_client *client) { | |||
724 | } | 724 | } |
725 | 725 | ||
726 | // parse requested event types | 726 | // parse requested event types |
727 | for (int i = 0; i < json_object_array_length(request); i++) { | 727 | for (json_ar_len_t i = 0; i < json_object_array_length(request); i++) { |
728 | const char *event_type = json_object_get_string(json_object_array_get_idx(request, i)); | 728 | const char *event_type = json_object_get_string(json_object_array_get_idx(request, i)); |
729 | if (strcmp(event_type, "workspace") == 0) { | 729 | if (strcmp(event_type, "workspace") == 0) { |
730 | client->subscribed_events |= event_mask(IPC_EVENT_WORKSPACE); | 730 | client->subscribed_events |= event_mask(IPC_EVENT_WORKSPACE); |
@@ -1126,7 +1126,8 @@ static void ipc_event_binding(json_object *sb_obj) { | |||
1126 | sway_log(L_DEBUG, "Sending binding::run event"); | 1126 | sway_log(L_DEBUG, "Sending binding::run event"); |
1127 | json_object *obj = json_object_new_object(); | 1127 | json_object *obj = json_object_new_object(); |
1128 | json_object_object_add(obj, "change", json_object_new_string("run")); | 1128 | json_object_object_add(obj, "change", json_object_new_string("run")); |
1129 | json_object_object_add(obj, "binding", sb_obj); | 1129 | // sb_obj gets owned by the temporary json_object, too. |
1130 | json_object_object_add(obj, "binding", json_object_get(sb_obj)); | ||
1130 | 1131 | ||
1131 | const char *json_string = json_object_to_json_string(obj); | 1132 | const char *json_string = json_object_to_json_string(obj); |
1132 | ipc_send_event(json_string, IPC_EVENT_BINDING); | 1133 | ipc_send_event(json_string, IPC_EVENT_BINDING); |
diff --git a/swaybar/status_line.c b/swaybar/status_line.c index 87e90caf..e3cc0bf4 100644 --- a/swaybar/status_line.c +++ b/swaybar/status_line.c | |||
@@ -2,8 +2,8 @@ | |||
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | #include <string.h> | 3 | #include <string.h> |
4 | #include <unistd.h> | 4 | #include <unistd.h> |
5 | #include <json-c/json.h> | ||
6 | 5 | ||
6 | #include "sway_json_helper.h" | ||
7 | #include "swaybar/config.h" | 7 | #include "swaybar/config.h" |
8 | #include "swaybar/status_line.h" | 8 | #include "swaybar/status_line.h" |
9 | #include "log.h" | 9 | #include "log.h" |
@@ -70,8 +70,7 @@ static void parse_json(struct bar *bar, const char *text) { | |||
70 | 70 | ||
71 | bar->status->block_line = create_list(); | 71 | bar->status->block_line = create_list(); |
72 | 72 | ||
73 | int i; | 73 | for (json_ar_len_t i = 0; i < json_object_array_length(results); ++i) { |
74 | for (i = 0; i < json_object_array_length(results); ++i) { | ||
75 | json_object *full_text, *short_text, *color, *min_width, *align, *urgent; | 74 | json_object *full_text, *short_text, *color, *min_width, *align, *urgent; |
76 | json_object *name, *instance, *separator, *separator_block_width; | 75 | json_object *name, *instance, *separator, *separator_block_width; |
77 | json_object *background, *border, *border_top, *border_bottom; | 76 | json_object *background, *border, *border_top, *border_bottom; |
diff --git a/swaygrab/json.c b/swaygrab/json.c index 286085c3..f0e8fa90 100644 --- a/swaygrab/json.c +++ b/swaygrab/json.c | |||
@@ -50,8 +50,7 @@ static json_object *get_focused_container_r(json_object *c) { | |||
50 | } else { | 50 | } else { |
51 | json_object *nodes, *node, *child; | 51 | json_object *nodes, *node, *child; |
52 | json_object_object_get_ex(c, "nodes", &nodes); | 52 | json_object_object_get_ex(c, "nodes", &nodes); |
53 | int i; | 53 | for (json_ar_len_t i = 0; i < json_object_array_length(nodes); i++) { |
54 | for (i = 0; i < json_object_array_length(nodes); i++) { | ||
55 | node = json_object_array_get_idx(nodes, i); | 54 | node = json_object_array_get_idx(nodes, i); |
56 | 55 | ||
57 | if ((child = get_focused_container_r(node))) { | 56 | if ((child = get_focused_container_r(node))) { |
@@ -60,7 +59,7 @@ static json_object *get_focused_container_r(json_object *c) { | |||
60 | } | 59 | } |
61 | 60 | ||
62 | json_object_object_get_ex(c, "floating_nodes", &nodes); | 61 | json_object_object_get_ex(c, "floating_nodes", &nodes); |
63 | for (i = 0; i < json_object_array_length(nodes); i++) { | 62 | for (json_ar_len_t i = 0; i < json_object_array_length(nodes); i++) { |
64 | node = json_object_array_get_idx(nodes, i); | 63 | node = json_object_array_get_idx(nodes, i); |
65 | 64 | ||
66 | if ((child = get_focused_container_r(node))) { | 65 | if ((child = get_focused_container_r(node))) { |
@@ -83,7 +82,7 @@ char *get_focused_output() { | |||
83 | if (!outputs) { | 82 | if (!outputs) { |
84 | sway_abort("Unabled to get focused output. No nodes in tree."); | 83 | sway_abort("Unabled to get focused output. No nodes in tree."); |
85 | } | 84 | } |
86 | for (int i = 0; i < json_object_array_length(outputs); i++) { | 85 | for (json_ar_len_t i = 0; i < json_object_array_length(outputs); i++) { |
87 | output = json_object_array_get_idx(outputs, i); | 86 | output = json_object_array_get_idx(outputs, i); |
88 | 87 | ||
89 | if (get_focused_container_r(output)) { | 88 | if (get_focused_container_r(output)) { |
@@ -131,7 +130,7 @@ json_object *get_output_container(const char *output) { | |||
131 | json_object *outputs, *json_output, *name; | 130 | json_object *outputs, *json_output, *name; |
132 | json_object_object_get_ex(tree, "nodes", &outputs); | 131 | json_object_object_get_ex(tree, "nodes", &outputs); |
133 | 132 | ||
134 | for (int i = 0; i < json_object_array_length(outputs); i++) { | 133 | for (json_ar_len_t i = 0; i < json_object_array_length(outputs); i++) { |
135 | json_output = json_object_array_get_idx(outputs, i); | 134 | json_output = json_object_array_get_idx(outputs, i); |
136 | json_object_object_get_ex(json_output, "name", &name); | 135 | json_object_object_get_ex(json_output, "name", &name); |
137 | 136 | ||
diff --git a/swaylock/main.c b/swaylock/main.c index 4b486461..3208a45b 100644 --- a/swaylock/main.c +++ b/swaylock/main.c | |||
@@ -3,7 +3,6 @@ | |||
3 | #include <xkbcommon/xkbcommon.h> | 3 | #include <xkbcommon/xkbcommon.h> |
4 | #include <xkbcommon/xkbcommon-names.h> | 4 | #include <xkbcommon/xkbcommon-names.h> |
5 | #include <security/pam_appl.h> | 5 | #include <security/pam_appl.h> |
6 | #include <json-c/json.h> | ||
7 | #include <stdio.h> | 6 | #include <stdio.h> |
8 | #include <stdlib.h> | 7 | #include <stdlib.h> |
9 | #include <string.h> | 8 | #include <string.h> |
@@ -14,6 +13,7 @@ | |||
14 | #include <signal.h> | 13 | #include <signal.h> |
15 | #include <stdbool.h> | 14 | #include <stdbool.h> |
16 | #include <unistd.h> | 15 | #include <unistd.h> |
16 | #include "sway_json_helper.h" | ||
17 | #include "client/window.h" | 17 | #include "client/window.h" |
18 | #include "client/registry.h" | 18 | #include "client/registry.h" |
19 | #include "client/cairo.h" | 19 | #include "client/cairo.h" |
@@ -583,7 +583,7 @@ int main(int argc, char **argv) { | |||
583 | 583 | ||
584 | for (i = 0; i < registry->outputs->length; ++i) { | 584 | for (i = 0; i < registry->outputs->length; ++i) { |
585 | if (displays_paths[i * 2] != NULL) { | 585 | if (displays_paths[i * 2] != NULL) { |
586 | for (int j = 0;; ++j) { | 586 | for (json_ar_len_t j = 0;; ++j) { |
587 | if (j >= json_object_array_length(json_outputs)) { | 587 | if (j >= json_object_array_length(json_outputs)) { |
588 | sway_log(L_ERROR, "%s is not an extant output", displays_paths[i * 2]); | 588 | sway_log(L_ERROR, "%s is not an extant output", displays_paths[i * 2]); |
589 | exit(EXIT_FAILURE); | 589 | exit(EXIT_FAILURE); |
diff --git a/swaymsg/main.c b/swaymsg/main.c index 2f9cfb14..0ee7c76f 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c | |||
@@ -9,7 +9,7 @@ | |||
9 | #include <sys/socket.h> | 9 | #include <sys/socket.h> |
10 | #include <ctype.h> | 10 | #include <ctype.h> |
11 | #include <unistd.h> | 11 | #include <unistd.h> |
12 | #include <json-c/json.h> | 12 | #include "sway_json_helper.h" |
13 | #include "stringop.h" | 13 | #include "stringop.h" |
14 | #include "ipc-client.h" | 14 | #include "ipc-client.h" |
15 | #include "readline.h" | 15 | #include "readline.h" |
@@ -149,7 +149,7 @@ static void pretty_print_version(json_object *v) { | |||
149 | static void pretty_print_clipboard(json_object *v) { | 149 | static void pretty_print_clipboard(json_object *v) { |
150 | if (success(v, true)) { | 150 | if (success(v, true)) { |
151 | if (json_object_is_type(v, json_type_array)) { | 151 | if (json_object_is_type(v, json_type_array)) { |
152 | for (int i = 0; i < json_object_array_length(v); ++i) { | 152 | for (json_ar_len_t i = 0; i < json_object_array_length(v); ++i) { |
153 | json_object *o = json_object_array_get_idx(v, i); | 153 | json_object *o = json_object_array_get_idx(v, i); |
154 | printf("%s\n", json_object_get_string(o)); | 154 | printf("%s\n", json_object_get_string(o)); |
155 | } | 155 | } |