Files
stk/include/stk.h
T
anth64 a290be5dcc feat: implement .tmp directory isolation for safe hot-reload
Add foundation for cross-platform hot-reload system by isolating
loaded modules from source files using a temporary directory.

Changes:
- Add configurable tmp directory parameter to stk_init()
  (defaults to mods/.tmp/ if not specified)
- Copy all modules from mods/ to .tmp/ on initialization
- Load modules exclusively from .tmp/ directory
- Clean up .tmp/ directory on shutdown
- Add cross-platform file operations:
  * platform_mkdir() - create directories
  * platform_copy_file() - copy files
  * platform_remove_file() - delete files
  * platform_remove_dir() - delete directory and contents
- Improve BSD kqueue implementation to detect file overwrites
  (adds individual file watches with NOTE_WRITE)

This isolates the loaded shared libraries from source files,
preventing segfaults when users overwrite mods using cp/copy
operations. The actual reload logic remains unimplemented
(marked as TODO in stk_poll switch cases).
2026-01-18 21:26:17 +01:00

32 lines
500 B
C

#ifndef STK_H
#define STK_H
#include "stk_version.h"
#include <stdlib.h>
#define STK_MOD_DIR_BUFFER 256
#define STK_MOD_ID_BUFFER 64
#define STK_PATH_MAX 256
#define STK_PATH_MAX_OS 4096
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
STK_MOD_LOAD,
STK_MOD_UNLOAD,
STK_MOD_RELOAD
} stk_module_event_t;
int stk_init(const char *mod_dir, const char *tmp_dir);
void stk_shutdown(void);
size_t stk_module_count(void);
size_t stk_poll(void);
#ifdef __cplusplus
}
#endif
#endif /* STK_H */