diff options
Diffstat (limited to 'win32/pwd.c')
-rw-r--r-- | win32/pwd.c | 24 |
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); } |