summaryrefslogtreecommitdiffstats
path: root/src/win32
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2024-11-24 10:55:53 -0500
committerDavid Robillard <d@drobilla.net>2024-11-24 12:34:51 -0500
commit39e30fdc4016337c5e41413600e337879949fac5 (patch)
treeb381767d823581fc58bf8173344eeed6686d01e3 /src/win32
parentd338f4afed7ddafa718cb58ef893ca074fa69f79 (diff)
downloadzix-39e30fdc4016337c5e41413600e337879949fac5.tar.gz
zix-39e30fdc4016337c5e41413600e337879949fac5.tar.bz2
zix-39e30fdc4016337c5e41413600e337879949fac5.zip
Add zix_expand_environment_strings()
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/environment_win32.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/win32/environment_win32.c b/src/win32/environment_win32.c
new file mode 100644
index 0000000..e7a0ee3
--- /dev/null
+++ b/src/win32/environment_win32.c
@@ -0,0 +1,22 @@
+// Copyright 2012-2024 David Robillard <d@drobilla.net>
+// SPDX-License-Identifier: ISC
+
+#include <zix/environment.h>
+
+#include <windows.h>
+
+char*
+zix_expand_environment_strings(ZixAllocator* const allocator,
+ const char* const string)
+{
+ const DWORD size = ExpandEnvironmentStrings(string, NULL, 0U);
+ if (!size) {
+ return NULL;
+ }
+
+ char* const out = (char*)zix_calloc(allocator, 1U, size + 1U);
+ if (out) {
+ ExpandEnvironmentStrings(string, out, size + 1U);
+ }
+ return out;
+}