From d184ac5bd33dfa02b5c157d086b7dd0491aa5b1a Mon Sep 17 00:00:00 2001 From: nasr Date: Fri, 17 Apr 2026 13:35:00 +0200 Subject: checkpoint --- source/base/base_os.h | 3 +-- source/base/base_string.h | 12 +++++++++--- source/scb/scb.c | 5 ++++- source/scb/scb.h | 41 ++++++++++++++++++++++++++--------------- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/source/base/base_os.h b/source/base/base_os.h index 4f84d93..4357214 100644 --- a/source/base/base_os.h +++ b/source/base/base_os.h @@ -23,7 +23,7 @@ load_file(mem_arena *arena, const char *path) } - result = PushString(arena, sbuf.st_size); + result = PushString8(arena, sbuf.st_size); result.size = (u64)sbuf.st_size; if(result.size != 0) @@ -38,7 +38,6 @@ load_file(mem_arena *arena, const char *path) internal string8 write_file(const char *path, string8 data) { - string8 result = {0}; s32 file = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); if(file == -1) diff --git a/source/base/base_string.h b/source/base/base_string.h index c4b9f94..eb51e65 100644 --- a/source/base/base_string.h +++ b/source/base/base_string.h @@ -1,9 +1,15 @@ #ifndef BASE_STRING_H #define BASE_STRING_H -#define PushString(arena, count) (string8){ .data = (PushArrayZero(arena, u8, (count))), .size = (count) } -#define StringCast(data, size) (string8){(u8 *)(data), (u64)(size) } -#define StringPCast(data, size) (string8 *){(u8 *)(data), (u64)(size) } +#define PushString8(arena, count) (string8){ .data = (PushArrayZero(arena, u8, (count))), .size = (count) } +#define PushString16(arena, count) (string16){ .data = (PushArrayZero(arena, u16, (count))), .size = (count) } +#define PushString32(arena, count) (string32){ .data = (PushArrayZero(arena, u32, (count))), .size = (count) } + +#define String8(data, size) (string8){(u8 *)(data), (u64)(size) } +#define String16(data, size) (string16){(u16 *)(data), (u64)(size) } +#define String32(data, size) (string32){(u32 *)(data), (u64)(size) } + + #define StringFmt "%.*s" #define ULongFmt "%lu" diff --git a/source/scb/scb.c b/source/scb/scb.c index d81f244..2a6cf43 100755 --- a/source/scb/scb.c +++ b/source/scb/scb.c @@ -1,8 +1,11 @@ #include "scb.h" -s32 main(s32 argument_count, char **argument, char **env) +int main(s32 argument_count, char **argument, char **env) { + mem_arena *global_arena = arena_create(MiB(10)); assert_msg(argument_count < 2, "no arguments passed to scb"); init(argument_count, argument, env); + arena_destroy(global_arena); + return 0; } diff --git a/source/scb/scb.h b/source/scb/scb.h index 39f5e89..09c4852 100644 --- a/source/scb/scb.h +++ b/source/scb/scb.h @@ -13,23 +13,30 @@ struct config { string8 flags[]; }; - -internal void -self_rebuild(const char *binary_path) +typedef struct file_metad file_metad; +struct file_metad { + string8 name; + u32 time; +}; - struct stat scb_binary_stats; - assert_msg((lstat(binary_path), &sb == -1),"\nlstat failed to initialize\n"); +internal b32 +is_file_modified(const char *path) +{ + struct stat scb_bstats; + s8 err = lstat(path, &scb_bstats); + assert_msg((err), "lstat failed."); - if(ctime(&sb.st_mtime)) + if(scb_bstats.st_mtime) { - + } + return 0; } //@documentatie: hebfjlberln internal void -init(int argument_count, char **argument, char **env) +init(int argument_count, char **argument, char **env) { mem_arena *global_arena = arena_create(KiB(2)); assert_msg(argument_count > 2, "no program passed"); @@ -41,20 +48,22 @@ init(int argument_count, char **argument, char **env) //- load files into buffer { - - + if(is_file_modified) + { + self_rebuild(); + } //- TODO(nasr): ... } - if(string8_cmp(command, StringCast("doc", 3))) + if(string8_cmp(command, StringCastUTF8("doc", 3))) { - //- run meta program that builds tool documentation + //- run meta program that builds tool documentation //- hmmm how do i store the documentation { } - } - else if(string8_cmp(command, StringCast("build", 5))) + } + else if(string8_cmp(command, StringCast("build", 5))) { @@ -75,8 +84,10 @@ init(int argument_count, char **argument, char **env) } } - else if(string8_cmp(command, StringCast("meta", 5))) + else if(string8_cmp(command, StringCast("meta", 5))) { //- run the meta program } + + return; } -- cgit v1.3