summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-03-22 20:39:35 +0100
committerAlbert Cervin <albert@acervin.com>2024-03-22 20:39:35 +0100
commitbb2dff871b6a5b1362a2f867e586b06dc6b49996 (patch)
tree22811279a106e8f95ab727c59ec11399c98969a4
parent5ce90cb97a08c6057224b3a8181e2e757fcfd4e2 (diff)
downloaddged-bb2dff871b6a5b1362a2f867e586b06dc6b49996.tar.gz
dged-bb2dff871b6a5b1362a2f867e586b06dc6b49996.tar.xz
dged-bb2dff871b6a5b1362a2f867e586b06dc6b49996.zip
Initial OpenBSD support
Reactor is not really implemented yet but at least it builds and the tests run.
-rw-r--r--Makefile11
-rw-r--r--openbsd.mk4
-rw-r--r--src/dged/buffer_view.c6
-rw-r--r--src/dged/reactor-kqueue.c45
-rw-r--r--src/dged/settings.c2
5 files changed, 61 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index cb3d941..82ef47b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,6 @@
# Makefile for bmake
-.OBJDIR: ./build
.PHONY: default clean check run debug debug-tests install format
-
+.OBJDIR: ./build
SYNTAX_ENABLE ?= true
default: dged
@@ -29,7 +28,7 @@ TEST_SOURCES = test/assert.c test/buffer.c test/text.c test/utf8.c test/main.c \
test/command.c test/keyboard.c test/fake-reactor.c test/allocator.c \
test/minibuffer.c test/undo.c test/settings.c test/container.c
-prefix ?= /usr
+prefix ?= /usr/local
datadir = $(prefix)/share/dged
.SUFFIXES:
@@ -60,6 +59,8 @@ UNAME_S != uname -s | tr '[:upper:]' '[:lower:]'
. include "$(.CURDIR)/$(UNAME_S).mk"
.endif
+FORMAT_TOOL ?= clang-format
+
DEPS = $(SOURCES:.c=.d) $(MAIN_SOURCES:.c=.d) $(TEST_SOURCES:.c=.d)
OBJS = $(SOURCES:.c=.o)
@@ -99,7 +100,7 @@ run-tests: $(TEST_OBJS) $(OBJS)
$(CC) $(LDFLAGS) $(TEST_OBJS) $(OBJS) -lm -o run-tests
check: run-tests
- clang-format --dry-run --Werror $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c) $(HEADERS:%.h=../%.h)
+ $(FORMAT_TOOL) --dry-run --Werror $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c) $(HEADERS:%.h=../%.h)
./run-tests
run: dged
@@ -112,7 +113,7 @@ debug-tests: run-tests
gdb ./run-tests
format:
- clang-format -i $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c) $(HEADERS:%.h=../%.h)
+ $(FORMAT_TOOL) -i $(SOURCES:%.c=../%.c) $(MAIN_SOURCES:%.c=../%.c) $(TEST_SOURCES:%c=../%c) $(HEADERS:%.h=../%.h)
clean:
rm -f $(FILES)
diff --git a/openbsd.mk b/openbsd.mk
new file mode 100644
index 0000000..59e6ed2
--- /dev/null
+++ b/openbsd.mk
@@ -0,0 +1,4 @@
+CFLAGS += -DOPENBSD -DBSD
+
+PLATFORM_SOURCES += src/dged/reactor-kqueue.c
+FORMAT_TOOL = clang-format-13
diff --git a/src/dged/buffer_view.c b/src/dged/buffer_view.c
index 23bd8e2..49d938a 100644
--- a/src/dged/buffer_view.c
+++ b/src/dged/buffer_view.c
@@ -353,7 +353,11 @@ static void render_modeline(struct modeline *modeline, struct buffer_view *view,
if (strcmp(buf, (char *)modeline->buffer) != 0) {
modeline->buffer = realloc(modeline->buffer, width * 4);
modeline->sz = width * 4;
- strcpy((char *)modeline->buffer, buf);
+
+ uint32_t len = strlen(buf);
+ len = (len + 1) > modeline->sz ? modeline->sz - 1 : len;
+ memcpy(modeline->buffer, buf, len);
+ modeline->buffer[len] = '\0';
}
command_list_set_index_color_bg(commands, 8);
diff --git a/src/dged/reactor-kqueue.c b/src/dged/reactor-kqueue.c
new file mode 100644
index 0000000..5543c04
--- /dev/null
+++ b/src/dged/reactor-kqueue.c
@@ -0,0 +1,45 @@
+#include "reactor.h"
+
+#include <stdlib.h>
+
+struct reactor {
+
+};
+
+struct reactor *reactor_create() {
+ struct reactor *reactor = calloc(1, sizeof(struct reactor));
+
+ return reactor;
+}
+
+void reactor_destroy(struct reactor *reactor) {
+ free(reactor);
+}
+
+void reactor_update(struct reactor *reactor) {
+
+}
+
+bool reactor_poll_event(struct reactor *reactor, uint32_t ev_id) {
+ return false;
+}
+
+uint32_t reactor_register_interest(struct reactor *reactor, int fd, enum interest interest) {
+ return -1;
+}
+
+uint32_t reactor_watch_file(struct reactor *reactor, const char *path, uint32_t mask) {
+ return -1;
+}
+
+void reactor_unwatch_file(struct reactor *reactor, uint32_t id) {
+
+}
+
+bool reactor_next_file_event(struct reactor *reactor, struct file_event *out) {
+ return false;
+}
+
+void reactor_unregister_interest(struct reactor *reactor, uint32_t ev_id) {
+
+}
diff --git a/src/dged/settings.c b/src/dged/settings.c
index fc7d23c..e63862f 100644
--- a/src/dged/settings.c
+++ b/src/dged/settings.c
@@ -150,7 +150,7 @@ static int32_t parse_toml(struct parser *state, char **errmsgs[]) {
curkey = calloc(len, 1);
if (curtbl != NULL) {
- strcpy(curkey, curtbl);
+ memcpy(curkey, curtbl, strlen(curtbl));
curkey[strlen(curtbl)] = '.';
}