From 5a528e1ef835fb88e475c7c0f366de68f510987c Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sat, 27 Jan 2024 22:01:14 +0100 Subject: [PATCH] Fix mac exe path and mac debugging --- core_library/filesystem.c | 22 +++++++++++++++++++--- tests/test_main.cpp | 13 +++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/core_library/filesystem.c b/core_library/filesystem.c index 275d094..b7624b9 100644 --- a/core_library/filesystem.c +++ b/core_library/filesystem.c @@ -386,13 +386,20 @@ OS_API OS_Date OS_GetDate(void) { #include #include -OS_API bool OS_EnableTerminalColors(void) { return true; } + #if OS_MAC -OS_API bool OS_IsAbsolute(S8_String path) { - bool result = path.len >= 1 && path.str[0] == '/'; +OS_API S8_String OS_GetExePath(MA_Arena *arena) { + char buf[PATH_MAX]; + uint32_t bufsize = PATH_MAX; + if (_NSGetExecutablePath(buf, &bufsize)) { + return S8_MakeEmpty(); + } + S8_String result = S8_Copy(arena, S8_Make(buf, bufsize)); return result; } + #else + OS_API S8_String OS_GetExePath(MA_Arena *arena) { char buffer[PATH_MAX] = {}; if (readlink("/proc/self/exe", buffer, PATH_MAX) == -1) { @@ -402,6 +409,15 @@ OS_API S8_String OS_GetExePath(MA_Arena *arena) { return result; } + #endif + +OS_API bool OS_EnableTerminalColors(void) { return true; } + +OS_API bool OS_IsAbsolute(S8_String path) { + bool result = path.len >= 1 && path.str[0] == '/'; + return result; +} + OS_API S8_String OS_GetExeDir(MA_Arena *arena) { S8_String path = OS_GetExePath(arena); S8_String dir = S8_ChopLastSlash(path); diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 37368e9..8e6ff2d 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -6,21 +6,34 @@ int main() { TestSimpleInsertAndIntegrity(); + IO_Printf("TestSimpleInsertAndIntegrity() - DONE\n"); TestStrings(); + IO_Printf("TestStrings() - DONE\n"); TestExclusiveArenaBackedArray(); + IO_Printf("TestExclusiveArenaBackedArray() - DONE\n"); TestRemoveForLoop(); + IO_Printf("TestRemoveForLoop() - DONE\n"); TestBasic(); + IO_Printf("TestBasic() - DONE\n"); TestReverseLoop(); + IO_Printf("TestReverseLoop() - DONE\n"); TestCopy(); + IO_Printf("TestCopy() - DONE\n"); TestBuffer(); + IO_Printf("TestBuffer() - DONE\n"); TestCreateAllocate(); + IO_Printf("TestCreateAllocate() - DONE\n"); TestBootstrap(); + IO_Printf("TestBootstrap() - DONE\n"); TestBootstrapExclusive(); + IO_Printf("TestBootstrapExclusive() - DONE\n"); TestBootstrapArenaClear(); + IO_Printf("TestBootstrapArenaClear() - DONE\n"); TestClexer(); + IO_Printf("TestClexer() - DONE\n"); // Unicode iteration over codepoints using For {