From 9ff77397c6ee59833d8271cd1dac757f42092805 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Mon, 8 Jul 2024 18:58:17 +0200 Subject: [PATCH] implement `temporary_directory` on non-windows --- src/string.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/string.cpp b/src/string.cpp index ab08e3d4a34..42bf51f807b 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -544,11 +544,10 @@ gb_internal String string16_to_string(gbAllocator a, String16 s) { gb_internal String temporary_directory(gbAllocator allocator) { - String res = {}; #if defined(GB_SYSTEM_WINDOWS) DWORD n = GetTempPathW(0, nullptr); if (n == 0) { - return res; + return String{0}; } DWORD len = gb_max(MAX_PATH, n); wchar_t *b = gb_alloc_array(heap_allocator(), wchar_t, len+1); @@ -561,9 +560,22 @@ gb_internal String temporary_directory(gbAllocator allocator) { } b[n] = 0; String16 s = make_string16(b, n); - res = string16_to_string(allocator, s); + return string16_to_string(allocator, s); +#else + char const *tmp_env = gb_get_env("TMPDIR", allocator); + if (tmp_env) { + return make_string_c(tmp_env); + } + +#if defined(P_tmpdir) + String tmp_macro = make_string_c(P_tmpdir); + if (tmp_macro.len != 0) { + return copy_string(allocator, tmp_macro); + } +#endif + + return copy_string(allocator, str_lit("/tmp")); #endif - return res; }