Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 345cd35f19 | |||
| c2b9571c2d | |||
| 3f7f216c92 | |||
| 70d50dda92 |
+25
-2
@@ -7,7 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.0] - 2026-02-15
|
||||
## [0.1.2] - 2026-02-15
|
||||
|
||||
### Fixed
|
||||
- **Windows**
|
||||
- Module reload now works correctly, idk how it was broken
|
||||
- Temp directory creation fixed
|
||||
- `.tmp` directory now hidden via FILE_ATTRIBUTE_HIDDEN
|
||||
- Test build fixed
|
||||
- Force cmd.exe shell in gmake.mk
|
||||
- Fix bash syntax errors when running build.bat
|
||||
- **All Platforms**: platform_mkdir now checks if directory exists before creating
|
||||
|
||||
## [0.1.1] - 2026-02-14
|
||||
|
||||
### Fixed
|
||||
- **Logging**: Corrected log level severity order in enum
|
||||
- Reversed order so DEBUG (0) < INFO (1) < WARN (2) < ERROR (3)
|
||||
- Fixes filtering logic where ERROR/WARN were incorrectly blocked
|
||||
- Default INFO level now properly shows INFO, WARN, and ERROR while filtering DEBUG
|
||||
|
||||
## [0.1.0] - 2026-02-14
|
||||
|
||||
### Fixed
|
||||
- **C89 Compliance**: Removed stdint.h dependency (C99 feature)
|
||||
@@ -84,7 +104,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Dependency management and versioning not yet implemented
|
||||
- API is unstable and subject to change in future releases
|
||||
|
||||
[Unreleased]: https://github.com/anth64/stk/compare/v0.1.0...HEAD
|
||||
[Unreleased]: https://github.com/anth64/stk/compare/v0.1.2...HEAD
|
||||
[0.1.2]: https://github.com/anth64/stk/releases/tag/v0.1.2
|
||||
[0.1.1]: https://github.com/anth64/stk/releases/tag/v0.1.1
|
||||
[0.1.1]: https://github.com/anth64/stk/releases/tag/v0.1.1
|
||||
[0.1.0]: https://github.com/anth64/stk/releases/tag/v0.1.0
|
||||
[0.0.4]: https://github.com/anth64/stk/releases/tag/v0.0.4
|
||||
[0.0.3]: https://github.com/anth64/stk/releases/tag/v0.0.3
|
||||
|
||||
@@ -182,9 +182,9 @@ stk_init();
|
||||
|
||||
## Project Status
|
||||
|
||||
**Current Version:** 0.1.0 (Pre-release)
|
||||
**Current Version:** 0.1.2 (Pre-release)
|
||||
|
||||
This release brings C89 compliance fixes and a complete logging system rewrite with levels, timestamps, and runtime configuration.
|
||||
Fixed Windows compatibility issues.
|
||||
|
||||
### What Works
|
||||
- Cross-platform module loading and hot-reloading
|
||||
|
||||
+3
-3
@@ -8,10 +8,10 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
STK_LOG_ERROR,
|
||||
STK_LOG_WARN,
|
||||
STK_LOG_DEBUG,
|
||||
STK_LOG_INFO,
|
||||
STK_LOG_DEBUG
|
||||
STK_LOG_WARN,
|
||||
STK_LOG_ERROR
|
||||
} stk_log_level_t;
|
||||
|
||||
void stk_set_log_output(FILE *fp);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#define STK_VERSION_MAJOR 0
|
||||
#define STK_VERSION_MINOR 1
|
||||
#define STK_VERSION_PATCH 0
|
||||
#define STK_VERSION_PATCH 2
|
||||
|
||||
#define STK_STRINGIFY_HELPER(x) #x
|
||||
#define STK_STRINGIFY(x) STK_STRINGIFY_HELPER(x)
|
||||
|
||||
+22
-2
@@ -107,9 +107,29 @@ typedef struct {
|
||||
unsigned char platform_mkdir(const char *path)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return CreateDirectoryA(path, NULL) ? STK_PLATFORM_OPERATION_SUCCESS
|
||||
: STK_PLATFORM_MKDIR_ERROR;
|
||||
DWORD attrib;
|
||||
|
||||
attrib = GetFileAttributesA(path);
|
||||
|
||||
if (attrib != INVALID_FILE_ATTRIBUTES &&
|
||||
(attrib & FILE_ATTRIBUTE_DIRECTORY))
|
||||
return STK_PLATFORM_OPERATION_SUCCESS;
|
||||
|
||||
if (!CreateDirectoryA(path, NULL))
|
||||
return STK_PLATFORM_MKDIR_ERROR;
|
||||
|
||||
if (strrchr(path, '\\') && *(strrchr(path, '\\') + 1) == '.')
|
||||
SetFileAttributesA(path, FILE_ATTRIBUTE_HIDDEN);
|
||||
else if (!strrchr(path, '\\') && path[0] == '.')
|
||||
SetFileAttributesA(path, FILE_ATTRIBUTE_HIDDEN);
|
||||
|
||||
return STK_PLATFORM_OPERATION_SUCCESS;
|
||||
#else
|
||||
struct stat st;
|
||||
|
||||
if (stat(path, &st) == 0 && S_ISDIR(st.st_mode))
|
||||
return STK_PLATFORM_OPERATION_SUCCESS;
|
||||
|
||||
return mkdir(path, 0755) == 0 ? STK_PLATFORM_OPERATION_SUCCESS
|
||||
: STK_PLATFORM_MKDIR_ERROR;
|
||||
#endif
|
||||
|
||||
@@ -19,7 +19,7 @@ unsigned char stk_flags = STK_FLAG_LOGGING_ENABLED;
|
||||
|
||||
static char stk_mod_dir[STK_PATH_MAX_OS] = "mods";
|
||||
static char stk_tmp_name[STK_MOD_ID_BUFFER] = ".tmp";
|
||||
static char stk_tmp_dir[STK_PATH_MAX_OS] = "mods/.tmp";
|
||||
static char stk_tmp_dir[STK_PATH_MAX_OS] = "";
|
||||
static void *watch_handle = NULL;
|
||||
|
||||
char (*platform_directory_init_scan(const char *path,
|
||||
@@ -77,6 +77,8 @@ unsigned char stk_init(void)
|
||||
char tmp_path[STK_PATH_MAX_OS];
|
||||
int load_result;
|
||||
|
||||
platform_mkdir(stk_mod_dir);
|
||||
build_path(stk_tmp_dir, sizeof(stk_tmp_dir), stk_mod_dir, stk_tmp_name);
|
||||
if (platform_mkdir(stk_tmp_dir) != STK_PLATFORM_OPERATION_SUCCESS) {
|
||||
char (*test_scan)[STK_PATH_MAX];
|
||||
size_t test_count;
|
||||
@@ -263,6 +265,8 @@ begin_operations:
|
||||
build_path(tmp_path, sizeof(tmp_path), stk_tmp_dir,
|
||||
file_list[file_index]);
|
||||
|
||||
stk_module_unload(mod_index);
|
||||
|
||||
if (platform_copy_file(full_path, tmp_path) !=
|
||||
STK_PLATFORM_OPERATION_SUCCESS) {
|
||||
stk_log(STK_LOG_ERROR, "Failed to copy %s for reload",
|
||||
@@ -270,8 +274,6 @@ begin_operations:
|
||||
continue;
|
||||
}
|
||||
|
||||
stk_module_unload(mod_index);
|
||||
|
||||
load_result = stk_module_load(tmp_path, mod_index);
|
||||
if (load_result != STK_MOD_INIT_SUCCESS) {
|
||||
stk_log(STK_LOG_ERROR, "Failed to reload module %s: %s",
|
||||
|
||||
@@ -3,6 +3,8 @@ CFLAGS = -Wall -Wpedantic -I../include -std=c89
|
||||
LDFLAGS = -L../bin/debug -lstk
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
SHELL := cmd.exe
|
||||
.SHELLFLAGS := /c
|
||||
MODULE_EXT = .dll
|
||||
EXE_EXT = .exe
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user