aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-10-22 12:26:19 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-10-22 12:26:19 -0400
commit90d6b2a866c6da29921dfae3d684203fd232ea74 (patch)
treeb7e95964708bc81c3237a8d67c3d27309fa88637
parenta3117976dc912a35575c1c5813a480001cd8b789 (diff)
some improvements
-rw-r--r--array.c17
-rw-r--r--array.h1
-rw-r--r--input_field.c2
-rw-r--r--main.c10
4 files changed, 29 insertions, 1 deletions
diff --git a/array.c b/array.c
index 7120899..4345346 100644
--- a/array.c
+++ b/array.c
@@ -43,6 +43,23 @@ void* array_add_(void* array, size_t item_size) {
return &(info[1]);
}
+void array_resize(void* array, size_t size) {
+ array_info* info = &((array_info*)array)[-1];
+ info->size = size;
+ if (size > info->capacity) {
+ info->capacity = size;
+
+ // round up to next power of 2
+ info->capacity--;
+ info->capacity |= info->capacity >> 1;
+ info->capacity |= info->capacity >> 2;
+ info->capacity |= info->capacity >> 4;
+ info->capacity |= info->capacity >> 8;
+ info->capacity |= info->capacity >> 16;
+ info->capacity++;
+ }
+}
+
void array_print(void* array) {
array_info* info = &((array_info*)array)[-1];
printf( "size: %lu\n"
diff --git a/array.h b/array.h
index 4975261..1672ac6 100644
--- a/array.h
+++ b/array.h
@@ -10,6 +10,7 @@ typedef struct {
} array_info;
array_info* array_new_(size_t item_size, size_t size);
+void array_resize(void* array, size_t size);
void array_print(void* array);
void array_pop(void* array);
void* array_add_(void* array, size_t item_size);
diff --git a/input_field.c b/input_field.c
index aa522dc..6ca9a1b 100644
--- a/input_field.c
+++ b/input_field.c
@@ -112,7 +112,7 @@ bool type_key(client_state* state, xkb_keysym_t keysym) {
update_text_buffer(state);
free(buffer);
- return false;
+ return true;
}
// submit line
diff --git a/main.c b/main.c
index c3b7eb0..714e3a5 100644
--- a/main.c
+++ b/main.c
@@ -1,3 +1,5 @@
+#include <locale.h>
+#include <langinfo.h>
#include <stdio.h>
#include <poll.h>
#include <unistd.h>
@@ -37,6 +39,14 @@ int main(int argc, char* argv[]) {
state.input_buffer = array_new(char, 0);
state.filtered_items = array_new(item_display_t, 0);
+ // 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;
+ }
+
// read input
parse_args(&state, argc, argv);
read_stdin(&state);