From 8bcd41407ecd78c00f458eef935f05e73698a13b Mon Sep 17 00:00:00 2001 From: David Gonzalez Martin Date: Fri, 27 Jun 2025 16:46:22 -0600 Subject: [PATCH] Debug realpath --- src/compiler.bbb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/compiler.bbb b/src/compiler.bbb index ebc2abc..e246bf5 100644 --- a/src/compiler.bbb +++ b/src/compiler.bbb @@ -73,12 +73,26 @@ O = bits u32 _: u9, } +[extern] __errno_location = fn [cc(c)] () &u32; + +Error = enum u32 +{ + success = 0, + perm = 1, +} + +errno = fn () Error +{ + return @enum_from_int(__errno_location().&); +} + [extern] memcmp = fn [cc(c)] (a: &u8, b: &u8, byte_count: usize) int; [extern] memcpy = fn [cc(c)] (destination: &u8, source: &u8, byte_count: u64) &u8; [extern] exit = fn [cc(c)] (exit_code: int) noreturn; [extern] getenv = fn [cc(c)] (env: &u8) &u8; +[extern] getcwd = fn [cc(c)] (pointer: &u8, length: u64) &u8; [extern] realpath = fn [cc(c)] (source_path: &u8, resolved_path: &u8) &u8; [extern] mkdir = fn [cc(c)] (path: &u8, mode: mode_t) int; @@ -437,6 +451,13 @@ os_path_absolute_stack = fn (buffer: []u8, relative_file_path: &u8) []u8 result = c_string_to_slice(syscall_result); assert(result.length < buffer.length); } + else + { + >error = errno(); + >cwd = getcwd(buffer.pointer, buffer.length); + assert(cwd == buffer.pointer); + @trap(); + } return result; }