From 312d009f656e86401cda1c6198b929e4cbd85d2f Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Mon, 24 Sep 2018 18:42:25 +0100 Subject: swaybar: fail if bar id is invalid --- swaybar/ipc.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'swaybar/ipc.c') diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 0e60c10c..2b50528d 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c @@ -141,9 +141,16 @@ static void ipc_parse_colors( } } -static void ipc_parse_config( +static bool ipc_parse_config( struct swaybar_config *config, const char *payload) { json_object *bar_config = json_tokener_parse(payload); + json_object *success; + if (json_object_object_get_ex(bar_config, "success", &success) + && !json_object_get_boolean(success)) { + wlr_log(WLR_ERROR, "No bar with that ID. Use 'swaymsg -t get_bar_config to get the available bar configs."); + json_object_put(bar_config); + return false; + } json_object *markup, *mode, *hidden_bar, *position, *status_command; json_object *font, *bar_height, *wrap_scroll, *workspace_buttons, *strip_workspace_numbers; json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol, *outputs; @@ -226,6 +233,7 @@ static void ipc_parse_config( } json_object_put(bar_config); + return true; } void ipc_get_workspaces(struct swaybar *bar) { @@ -312,11 +320,14 @@ static void ipc_get_outputs(struct swaybar *bar) { free(res); } -void ipc_initialize(struct swaybar *bar, const char *bar_id) { +bool ipc_initialize(struct swaybar *bar, const char *bar_id) { uint32_t len = strlen(bar_id); char *res = ipc_single_command(bar->ipc_socketfd, IPC_GET_BAR_CONFIG, bar_id, &len); - ipc_parse_config(bar->config, res); + if (!ipc_parse_config(bar->config, res)) { + free(res); + return false; + } free(res); ipc_get_outputs(bar); @@ -324,6 +335,7 @@ void ipc_initialize(struct swaybar *bar, const char *bar_id) { len = strlen(subscribe); free(ipc_single_command(bar->ipc_event_socketfd, IPC_SUBSCRIBE, subscribe, &len)); + return true; } bool handle_ipc_readable(struct swaybar *bar) { -- cgit v1.2.3 From bcd2a8fe124ce6adb7d23ba0fa39287744947e29 Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Mon, 24 Sep 2018 20:15:40 +0100 Subject: swaybar: remove unused focused_output property --- include/swaybar/bar.h | 1 - swaybar/ipc.c | 1 - 2 files changed, 2 deletions(-) (limited to 'swaybar/ipc.c') diff --git a/include/swaybar/bar.h b/include/swaybar/bar.h index 20a51809..20992014 100644 --- a/include/swaybar/bar.h +++ b/include/swaybar/bar.h @@ -54,7 +54,6 @@ struct swaybar { struct wl_seat *seat; struct swaybar_config *config; - struct swaybar_output *focused_output; struct swaybar_pointer pointer; struct status_line *status; diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 2b50528d..7c53a44f 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c @@ -237,7 +237,6 @@ static bool ipc_parse_config( } void ipc_get_workspaces(struct swaybar *bar) { - bar->focused_output = NULL; struct swaybar_output *output; wl_list_for_each(output, &bar->outputs, link) { free_workspaces(&output->workspaces); -- cgit v1.2.3