diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2024-07-08 18:25:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-08 18:25:34 +0100 |
| commit | a3af94eeaeaf0550176ccc552c6569836f2635eb (patch) | |
| tree | cfea748cbbcf18c8567028473174fae3cc6537af /src | |
| parent | 48aef5016499291996f0710449a26f1f92078d51 (diff) | |
| parent | 9ff77397c6ee59833d8271cd1dac757f42092805 (diff) | |
Merge pull request #3893 from laytan/temporary-directory-non-windows
implement `temporary_directory` on non-windows
Diffstat (limited to 'src')
| -rw-r--r-- | src/string.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/string.cpp b/src/string.cpp index ab08e3d4a..42bf51f80 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; } |