From b854ee2372eeab705bb3d812a62ac31d45acd774 Mon Sep 17 00:00:00 2001 From: Riley Beckett Date: Fri, 24 Apr 2026 19:55:04 -0400 Subject: different args --- args.c | 71 +++++++++++++++++++++++++++++++++----------------------------- args.h | 2 +- graphics.c | 4 ++-- main.c | 8 ++++--- registry.c | 2 +- state.h | 2 +- 6 files changed, 48 insertions(+), 41 deletions(-) diff --git a/args.c b/args.c index 157bf07..d74916d 100644 --- a/args.c +++ b/args.c @@ -6,7 +6,7 @@ #include "args.h" #include "array.h" -void parse_args(client_state* state, int argc, char* argv[]) { +bool parse_args(client_state* state, int argc, char* argv[]) { static struct option long_opts[] = { {"lines", required_argument, 0, 'l'}, {"center", no_argument, 0, 'c'}, @@ -17,6 +17,7 @@ void parse_args(client_state* state, int argc, char* argv[]) { {"orderless", no_argument, 0, 'o'}, {"insensitive", no_argument, 0, 'i'}, {"starting-text", required_argument, 0, 's'}, + {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; @@ -24,38 +25,42 @@ void parse_args(client_state* state, int argc, char* argv[]) { int long_index = 0; while ((opt = getopt_long(argc, argv, "l:p:s:coievP", long_opts, &long_index)) != -1) { switch (opt) { - case 'l': - state->lines = MIN(atoi(optarg), array_size(state->items)); - break; - case 'p': - state->prompt = optarg; - break; - case 'c': - state->center = true; - break; - case 'e': - state->exact_match = true; - break; - case 'v': - state->verbose = true; - break; - case 'P': - state->password = true; - break; - case 'o': - state->orderless = true; - break; - case 'i': - state->strstr2 = strcasestr; - break; - case 's': - array_insert_many(state->input_buffer, 0, optarg, strlen(optarg)); - state->cursor_index = strlen(optarg); - break; - default: - fprintf(stderr, "Usage: NOT WHAT YOU TYPED\n"); - fprintf(stderr, "%c\n", opt); - break; + case 'l': + state->lines = MIN(atoi(optarg), array_size(state->items)); + break; + case 'p': + state->prompt = optarg; + break; + case 'c': + state->center = true; + break; + case 'e': + state->exact_match = true; + break; + case 'v': + state->verbose++; + break; + case 'P': + state->password = true; + break; + case 'o': + state->orderless = true; + break; + case 'i': + state->strstr2 = strcasestr; + break; + case 's': + array_insert_many(state->input_buffer, 0, optarg, strlen(optarg)); + state->cursor_index = strlen(optarg); + break; + case 'h': + fprintf(stderr, "WIP\n"); + return false; + break; + default: + fprintf(stderr, "Usage: NOT WHAT YOU TYPED\n"); + return false; } } + return true; } diff --git a/args.h b/args.h index 604bfda..f700642 100644 --- a/args.h +++ b/args.h @@ -3,6 +3,6 @@ #include "state.h" -void parse_args(client_state* state, int argc, char* argv[]); +bool parse_args(client_state* state, int argc, char* argv[]); #endif diff --git a/graphics.c b/graphics.c index 8343778..3a43fca 100644 --- a/graphics.c +++ b/graphics.c @@ -106,7 +106,7 @@ bool init_gl(client_state* state) { return false; } - if (state->verbose) { + if (state->verbose >= 1) { /* */ fprintf(stderr, "EGL version %u.%u\n", major, minor); } } @@ -139,7 +139,7 @@ bool init_gl(client_state* state) { return false; } - if (state->verbose) { + if (state->verbose >= 1) { GLint major, minor; glGetIntegerv(GL_MAJOR_VERSION, &major); glGetIntegerv(GL_MINOR_VERSION, &minor); diff --git a/main.c b/main.c index 29dc26e..e9ea440 100644 --- a/main.c +++ b/main.c @@ -46,19 +46,21 @@ int main(int argc, char* argv[]) { state.filtered_items = array_new(item_display_t, 0); state.page_indices = array_new(size_t, 0); state.strstr2 = strstr; + if (!parse_args(&state, argc, argv)) { + return 1; + } // check locale setlocale(LC_ALL, ""); const char *encoding = nl_langinfo(CODESET); if (strcmp(encoding, "UTF-8") != 0) { fprintf(stderr, "Cannot continue because encoding (%s), is not UTF-8.", encoding); - return EXIT_FAILURE; + return 1; } // read input init_conf(); read_stdin(&state); - parse_args(&state, argc, argv); // find font char* font = get_font("Monospace"); @@ -90,7 +92,7 @@ int main(int argc, char* argv[]) { // set up graphics if (!init_gl(&state)) { fprintf(stderr, "Failed to Initalize EGL/OpenGL\n"); - return EXIT_FAILURE; + return 1; } // create font altas textures diff --git a/registry.c b/registry.c index dbbe4de..fe849fe 100644 --- a/registry.c +++ b/registry.c @@ -16,7 +16,7 @@ void setup_registry_and_globals(client_state* state) { void global(void *data, struct wl_registry *wl_registry, uint32_t name, const char *interface, uint32_t version) { client_state* state = data; - if (state->verbose) { + if (state->verbose >= 2) { /* */ fprintf(stderr, "iface: %s v%d\n", interface, version); } diff --git a/state.h b/state.h index dbcc8fe..e956625 100644 --- a/state.h +++ b/state.h @@ -118,7 +118,7 @@ typedef struct { char* prompt; bool exact_match; bool center; - bool verbose; + size_t verbose; bool password; bool orderless; char* (*strstr2)(const char*, const char*); -- cgit v1.2.3