aboutsummaryrefslogtreecommitdiff
path: root/src/string.cpp
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2024-07-08 18:58:17 +0200
committerLaytan Laats <laytanlaats@hotmail.com>2024-07-08 18:58:17 +0200
commit9ff77397c6ee59833d8271cd1dac757f42092805 (patch)
tree903b9497f80b757999080c3079191a30499999cb /src/string.cpp
parent498fb00c25651ce8070a6c615a957a9f5d0eeb33 (diff)
implement `temporary_directory` on non-windows
Diffstat (limited to 'src/string.cpp')
-rw-r--r--src/string.cpp20
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;
}