a290be5dcc
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).
32 lines
500 B
C
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 */
|