aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--args.c71
-rw-r--r--args.h2
-rw-r--r--graphics.c4
-rw-r--r--main.c8
-rw-r--r--registry.c2
-rw-r--r--state.h2
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*);