summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
authorPaul Betts <paul@paulbetts.org>2011-09-21 11:17:30 -0700
committerPaul Betts <paul@paulbetts.org>2011-09-21 11:17:30 -0700
commitac31a60bcd4dd5bf6542115a54c18718d64663ef (patch)
tree451559b8082bc60a6f60e77910647e22a4307b79 /src/win32
parent6d0ef97478633263cafa1329e865f5a33b950ac3 (diff)
downloadlibgit2-ac31a60bcd4dd5bf6542115a54c18718d64663ef.tar.gz
Rewrite getenv to use Win32 version on Windows
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/posix.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/win32/posix.c b/src/win32/posix.c
index af54e7f82..1c9430d0f 100644
--- a/src/win32/posix.c
+++ b/src/win32/posix.c
@@ -370,6 +370,30 @@ int p_mkstemp(char *tmp_path)
return p_creat(tmp_path, 0744);
}
+char* p_getenv(const char* name)
+{
+ wchar_t* buf;
+ wchar_t* name_w = conv_utf8_to_utf16(name);
+ char* ret;
+ DWORD len;
+
+ len = GetEnvironmentVariableW(name_w, NULL, 0);
+ if (len == 0) {
+ free(name_w);
+ return NULL;
+ }
+
+ len++; /* Null Terminator */
+ buf = malloc(sizeof(wchar_t) * len);
+ GetEnvironmentVariable(name_w, buf, len);
+
+ ret = conv_utf16_to_utf8(buf);
+
+ free(name_w);
+ free(buf);
+ return ret;
+}
+
int p_setenv(const char* name, const char* value, int overwrite)
{
if (overwrite != 1)