Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/uinfo.cc')
-rw-r--r--winsup/cygwin/uinfo.cc41
1 files changed, 10 insertions, 31 deletions
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
index 8ea3e1ab0..60db38e76 100644
--- a/winsup/cygwin/uinfo.cc
+++ b/winsup/cygwin/uinfo.cc
@@ -38,16 +38,14 @@ void
cygheap_user::init ()
{
WCHAR user_name[UNLEN + 1];
- DWORD user_name_len;
+ DWORD user_name_len = UNLEN + 1;
- user_name_len = GetEnvironmentVariableW (L"USERNAME", user_name, UNLEN + 1);
- if (user_name_len)
- {
- user_name[UNLEN] = L'\0';
- char mb_user_name[user_name_len = sys_wcstombs (NULL, 0, user_name)];
- sys_wcstombs (mb_user_name, user_name_len, user_name);
- set_name (mb_user_name);
- }
+ if (!GetUserNameW (user_name, &user_name_len))
+ wcpcpy (user_name, L"unknown");
+
+ char mb_user_name[user_name_len = sys_wcstombs (NULL, 0, user_name)];
+ sys_wcstombs (mb_user_name, user_name_len, user_name);
+ set_name (mb_user_name);
DWORD siz;
PSECURITY_DESCRIPTOR psd;
@@ -98,29 +96,10 @@ internal_getlogin (cygheap_user &user)
{
struct passwd *pw = NULL;
- /* Handle a border case. If neither $USERNAME, nor /etc/passwd exists,
- we tryto fetch the username from the system now. */
- if (!user.name () || !*user.name ())
- {
- WCHAR user_name[UNLEN + 1];
- DWORD user_name_len = UNLEN + 1;
-
- if (GetUserNameW (user_name, &user_name_len))
- {
- char mb_user_name[user_name_len = sys_wcstombs (NULL, 0, user_name)];
- sys_wcstombs (mb_user_name, user_name_len, user_name);
- user.set_name (mb_user_name);
- }
- else
- user.set_name ("unknown");
- }
- else
- {
- cygpsid psid = user.sid ();
- pw = internal_getpwsid (psid);
- }
+ cygpsid psid = user.sid ();
+ pw = internal_getpwsid (psid);
- if (!pw && !(pw = internal_getpwnam (user.name (), true))
+ if (!pw && !(pw = internal_getpwnam (user.name ()))
&& !(pw = internal_getpwuid (DEFAULT_UID)))
debug_printf ("user not found in augmented /etc/passwd");
else