summaryrefslogtreecommitdiff
path: root/win32/pwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'win32/pwd.c')
-rw-r--r--win32/pwd.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/win32/pwd.c b/win32/pwd.c
index 2c76480cea..311e2c6380 100644
--- a/win32/pwd.c
+++ b/win32/pwd.c
@@ -26,10 +26,7 @@
#include <lmapibuf.h>
#include "pwd.h"
#include "grp.h"
-
-#ifndef THREAD_SAFE
-static struct passwd pwd;
-#endif
+#include "php_win32_globals.h"
static char *home_dir = ".";
static char *login_shell = "not command.com!";
@@ -44,21 +41,26 @@ getpwnam(char *name)
char *
getlogin()
{
- static char name[256];
+ char name[256];
DWORD max_len = 256;
+ TSRMLS_FETCH();
+ STR_FREE(PW32G(login_name));
GetUserName(name, &max_len);
- return name;
+ name[max_len] = '\0';
+ PW32G(login_name) = strdup(name);
+ return PW32G(login_name);
}
struct passwd *
getpwuid(int user_id)
{
- pwd.pw_name = getlogin();
- pwd.pw_dir = home_dir;
- pwd.pw_shell = login_shell;
- pwd.pw_uid = 0;
+ TSRMLS_FETCH();
+ PW32G(pwd).pw_name = getlogin();
+ PW32G(pwd).pw_dir = home_dir;
+ PW32G(pwd).pw_shell = login_shell;
+ PW32G(pwd).pw_uid = 0;
- return &pwd;
+ return &PW32G(pwd);
}