remove diff output

This commit is contained in:
2025-11-02 19:28:16 +01:00
parent 3c7608ef51
commit e878819b02
-151
View File
@@ -1,151 +0,0 @@
diff --git a/include/stk.h b/include/stk.h
index 1097a45..f93177a 100644
--- a/include/stk.h
+++ b/include/stk.h
@@ -5,6 +5,7 @@
#include <stdlib.h>
#define MOD_DIR_BUFFER_SIZE 32
+#define PATH_BUFFER_SIZE 1024
#ifdef __cplusplus
extern "C" {
diff --git a/src/module.c b/src/module.c
index 13d5971..2a3e067 100644
--- a/src/module.c
+++ b/src/module.c
@@ -7,16 +7,15 @@ void *platform_get_symbol(void *handle, const char *symbol);
typedef void (*stk_module_func)(void);
-char stk_mod_dir[MOD_DIR_BUFFER_SIZE];
static void **stk_handles = NULL;
static stk_module_func *stk_inits = NULL;
static stk_module_func *stk_shutdowns = NULL;
-static size_t module_count = 0;
+size_t module_count = 0;
size_t stk_module_count(void) { return module_count; }
-static int stk_module_load(const char *path)
+int stk_module_load(const char *path)
{
void *handle;
stk_module_func init_func;
@@ -46,7 +45,7 @@ static int stk_module_load(const char *path)
return 0;
}
-static void stk_module_unload(size_t index)
+void stk_module_unload(size_t index)
{
size_t i;
@@ -62,11 +61,17 @@ static void stk_module_unload(size_t index)
--module_count;
}
-static void stk_free_file_list(char **list, size_t count)
+void stk_module_unload_all(void)
{
size_t i;
- for (i = 0; i < count; ++i)
- free(list[i]);
+ for (i = module_count; i > 0; --i)
+ stk_module_unload(i - 1);
- free(list);
+ free(stk_handles);
+ free(stk_inits);
+ free(stk_shutdowns);
+
+ stk_handles = NULL;
+ stk_inits = NULL;
+ stk_shutdowns = NULL;
}
diff --git a/src/platform.c b/src/platform.c
index b1d2e29..50379c7 100644
--- a/src/platform.c
+++ b/src/platform.c
@@ -1,3 +1,4 @@
+#include "stk.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -13,7 +14,6 @@
#endif
#define EVENT_BUFFER_SIZE 4096
-#define PATH_BUFFER_SIZE 1024
void *platform_load_library(const char *path)
{
diff --git a/src/stk.c b/src/stk.c
index f472b55..3375d62 100644
--- a/src/stk.c
+++ b/src/stk.c
@@ -1,16 +1,61 @@
#include "stk.h"
#include "stk_log.h"
+#include <string.h>
-extern char stk_mod_dir[MOD_DIR_BUFFER_SIZE];
+extern size_t module_count;
+
+static char stk_mod_dir[MOD_DIR_BUFFER_SIZE];
+static void *watch_handle = NULL;
+
+char **platform_directory_init_scan(const char *path, size_t *out_count);
+void *platform_directory_watch_start(const char *path);
+void platform_directory_watch_stop(void *handle);
+size_t stk_module_count(void);
+int stk_module_load(const char *path);
+void stk_module_unload(size_t index);
+void stk_module_unload_all(void);
int stk_init(const char *mod_dir)
{
- stk_log(stdout, "[stk] stk initialized v%s!", STK_VERSION_STRING);
+ char **files;
+ size_t file_count, i;
+ char full_path[PATH_BUFFER_SIZE];
+
+ if (mod_dir) {
+ strncpy(stk_mod_dir, mod_dir, MOD_DIR_BUFFER_SIZE - 1);
+ stk_mod_dir[MOD_DIR_BUFFER_SIZE - 1] = '\0';
+ } else {
+ strcpy(stk_mod_dir, "mods");
+ }
+
+ files = platform_directory_init_scan(stk_mod_dir, &file_count);
+ if (!files)
+ goto scanned;
+
+ for (i = 0; i < file_count; ++i) {
+ sprintf(full_path, "%s/%s", stk_mod_dir, files[i]);
+ stk_module_load(full_path);
+ free(files[i]);
+ }
+
+ free(files);
+
+scanned:
+ watch_handle = platform_directory_watch_start(stk_mod_dir);
+ stk_log(stdout, "[stk] stk initialized v%s! Loaded %zu from %s",
+ STK_VERSION_STRING, module_count, stk_mod_dir);
return 0;
}
int stk_shutdown(void)
{
+ if (watch_handle) {
+ platform_directory_watch_stop(watch_handle);
+ watch_handle = NULL;
+ }
+
+ stk_module_unload_all();
+
stk_log(stdout, "[stk] stk shutdown");
return 0;
}