Browse Source

Merge pull request #476 from castano/symlink-fix

Add support for running odin through a symlink.
gingerBill 5 years ago
parent
commit
8be1b2e1b1
1 changed files with 7 additions and 2 deletions
  1. 7 2
      src/build_settings.cpp

+ 7 - 2
src/build_settings.cpp

@@ -357,6 +357,8 @@ String odin_root_dir(void) {
 
 #include <mach-o/dyld.h>
 
+String path_to_fullpath(gbAllocator a, String s);
+
 String odin_root_dir(void) {
 	String path = global_module_path;
 	isize len, i;
@@ -390,7 +392,8 @@ String odin_root_dir(void) {
 	text = gb_alloc_array(string_buffer_allocator, u8, len + 1);
 	gb_memmove(text, &path_buf[0], len);
 
-	path = make_string(text, len);
+	path = path_to_fullpath(heap_allocator(), make_string(text, len));
+
 	for (i = path.len-1; i >= 0; i--) {
 		u8 c = path[i];
 		if (c == '/' || c == '\\') {
@@ -412,6 +415,8 @@ String odin_root_dir(void) {
 // NOTE: Linux / Unix is unfinished and not tested very well.
 #include <sys/stat.h>
 
+String path_to_fullpath(gbAllocator a, String s);
+
 String odin_root_dir(void) {
 	String path = global_module_path;
 	isize len, i;
@@ -451,7 +456,7 @@ String odin_root_dir(void) {
 
 	gb_memmove(text, &path_buf[0], len);
 
-	path = make_string(text, len);
+	path = path_to_fullpath(heap_allocator(), make_string(text, len));
 	for (i = path.len-1; i >= 0; i--) {
 		u8 c = path[i];
 		if (c == '/' || c == '\\') {