aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-07-08 18:25:34 +0100
committerGitHub <noreply@github.com>2024-07-08 18:25:34 +0100
commita3af94eeaeaf0550176ccc552c6569836f2635eb (patch)
treecfea748cbbcf18c8567028473174fae3cc6537af /src
parent48aef5016499291996f0710449a26f1f92078d51 (diff)
parent9ff77397c6ee59833d8271cd1dac757f42092805 (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.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;
}