From 24fb6ee3b2d6e3c68410e439c7395f5058dabce5 Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Sat, 18 Oct 2025 01:40:58 -0400 Subject: exit codes --- README.md | 2 +- input_field.c | 2 ++ keyboard.c | 9 +++++++++ layer_surface.c | 2 ++ main.c | 7 +++++-- state.h | 1 + 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4f16dc2..5635cbc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ To build: `make` ## Todo - - [x] "selection" -- [ ] figure out whats going on with stderr and exit code +- [x] figure out whats going on with stderr and exit code - [ ] cursor - [ ] fuzzy filter and sort filtering by match % - [ ] fancy highlights diff --git a/input_field.c b/input_field.c index 46f0791..31ae627 100644 --- a/input_field.c +++ b/input_field.c @@ -41,6 +41,7 @@ bool type_key(client_state* state, xkb_keysym_t keysym) { (keysym == XKB_KEY_Escape)) { state->running = false; + state->exit_code = EXIT_FAILURE; return false; } @@ -114,4 +115,5 @@ void submit_line(client_state* state) { printf("%s\n", state->items[state->filtered_items[state->selected_filtered_item]].text); } state->running = false; + state->exit_code = EXIT_SUCCESS; } diff --git a/keyboard.c b/keyboard.c index bdfda16..3ed761c 100644 --- a/keyboard.c +++ b/keyboard.c @@ -23,6 +23,7 @@ void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { fprintf(stderr, "unknown keyboard format"); state->running = false; + state->exit_code = EXIT_FAILURE; return; } @@ -30,6 +31,7 @@ void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, if (buffer == MAP_FAILED) { fprintf(stderr, "Failed to mmap keymap"); state->running = false; + state->exit_code = EXIT_FAILURE; return; } @@ -37,6 +39,7 @@ void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, if (!state->xkb_context) { fprintf(stderr, "Failed to create xkb context\n"); state->running = false; + state->exit_code = EXIT_FAILURE; return; } @@ -49,6 +52,9 @@ void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, state->xkb_state = xkb_state_new(state->xkb_keymap); if (!state->xkb_state) { fprintf(stderr, "Failed to create state"); + state->running = false; + state->exit_code = EXIT_FAILURE; + return; } struct xkb_compose_table* xkb_compose_table = xkb_compose_table_new_from_locale( @@ -56,6 +62,8 @@ void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, if (!xkb_compose_table) { fprintf(stderr, "Failed to create xkb compose table"); + state->running = false; + state->exit_code = EXIT_FAILURE; return; } @@ -73,6 +81,7 @@ void wl_keyboard_leave(void *data, struct wl_keyboard *wl_keyboard, // close on focus lost state->running = false; + state->exit_code = EXIT_FAILURE; } void wl_keyboard_key(void *data, struct wl_keyboard *wl_keyboard, diff --git a/layer_surface.c b/layer_surface.c index 7758dde..936e1ab 100644 --- a/layer_surface.c +++ b/layer_surface.c @@ -45,7 +45,9 @@ void configure(void *data, struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, void closed(void *data, struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1) { client_state* state = data; + state->running = false; + state->exit_code = EXIT_FAILURE; } struct zwlr_layer_surface_v1_listener layer_surface_listener = { diff --git a/main.c b/main.c index a85a74a..faf3be0 100644 --- a/main.c +++ b/main.c @@ -57,7 +57,7 @@ int main(int argc, char* argv[]) { state.display = wl_display_connect(NULL); if (!state.display) { fprintf(stderr, "Failed to Connect to wayland display\n"); - return 0; + return EXIT_FAILURE; } // bind globals and roundtrip @@ -72,7 +72,7 @@ int main(int argc, char* argv[]) { // set up graphics if (!init_gl(&state)) { fprintf(stderr, "Failed to Initalize EGL/OpenGL\n"); - return 1; + return EXIT_FAILURE; } // create font altas textures @@ -90,9 +90,12 @@ int main(int argc, char* argv[]) { render_frame(&state); } + // cleanup (of course) if (state.items) { array_free(state.items); } + + return state.exit_code; } void poll_events(client_state* state) { diff --git a/state.h b/state.h index 877c70a..6940d0d 100644 --- a/state.h +++ b/state.h @@ -103,6 +103,7 @@ typedef struct { item_t* items; uint32_t* filtered_items; bool running; + int exit_code; } client_state; -- cgit v1.2.3