OSDN Git Service

* cygheap.h (cygheap_user::userprofile_env_buf): New static member.
authorcgf <cgf>
Fri, 14 Jun 2002 21:46:17 +0000 (21:46 +0000)
committercgf <cgf>
Fri, 14 Jun 2002 21:46:17 +0000 (21:46 +0000)
* environ.cc (build_env): Add debugging statement.
(spenvs): Switch functions for USERDOMAIN and USERNAME.
* spawn.cc (spawn_guts): Move environment initialization prior to
cygheap_setup_for_child or environment info will never be copied to child.

winsup/cygwin/ChangeLog
winsup/cygwin/cygheap.h
winsup/cygwin/environ.cc
winsup/cygwin/spawn.cc
winsup/cygwin/uinfo.cc

index 1b0e04c..933c900 100644 (file)
@@ -1,5 +1,14 @@
 2002-06-14  Christopher Faylor  <cgf@redhat.com>
 
+       * cygheap.h (cygheap_user::userprofile_env_buf): New static member.
+       * environ.cc (build_env): Add debugging statement.
+       (spenvs): Switch functions for USERDOMAIN and USERNAME.
+       * spawn.cc (spawn_guts): Move environment initialization prior to
+       cygheap_setup_for_child or environment info will never be copied to
+       child.
+
+2002-06-14  Christopher Faylor  <cgf@redhat.com>
+
        * cygheap.h (cygheap_user): Add static members to hold home{drive,path}
        info.
        * uinfo.cc (cygheap_user::ontherange): Use static class members for
index d50e16e..f8777cc 100644 (file)
@@ -109,6 +109,9 @@ class cygheap_user
                                       info may live. */
   static char homepath_env_buf[MAX_PATH + 1]; /* Where the HOMEPATH environment
                                                 variable info may live. */
+  static char userprofile_env_buf[MAX_PATH + 1]; /* Where the USERPROFILE
+                                                   environment variable info
+                                                   may live. */
 public:
   __uid32_t orig_uid;      /* Remains intact even after impersonation */
   __gid32_t orig_gid;      /* Ditto */
index 737c68d..9ed6e41 100644 (file)
@@ -765,8 +765,8 @@ static NO_COPY spenv spenvs[] =
   {"LOGONSERVER=", &cygheap_user::env_logsrv},
   {"SYSTEMDRIVE=", NULL},
   {"SYSTEMROOT=", NULL},
-  {"USERDOMAIN=", &cygheap_user::env_name},
-  {"USERNAME=", &cygheap_user::env_domain},
+  {"USERDOMAIN=", &cygheap_user::env_domain},
+  {"USERNAME=", &cygheap_user::env_name},
   {"USERPROFILE=", &cygheap_user::env_userprofile},
 };
 
@@ -939,6 +939,7 @@ build_env (const char * const *envp, char *&envblock, int &envc,
                                           of buffer */
     }
 
+  debug_printf ("envp %p, envc %d", newenv, envc);
   return newenv;
 }
 
index 1f92c7f..3841e84 100644 (file)
@@ -613,9 +613,9 @@ spawn_guts (const char * prog_arg, const char *const *argv,
   if (!cygheap->user.impersonated || cygheap->user.token == INVALID_HANDLE_VALUE)
     {
       PSECURITY_ATTRIBUTES sec_attribs = sec_user_nih (sa_buf);
-      newheap = cygheap_setup_for_child (&ciresrv, cygheap->fdtab.need_fixup_before ());
       ciresrv.moreinfo->envp = build_env (envp, envblock, ciresrv.moreinfo->envc,
                                          real_path.iscygexec ());
+      newheap = cygheap_setup_for_child (&ciresrv, cygheap->fdtab.need_fixup_before ());
       rc = CreateProcess (runpath,     /* image name - with full path */
                          one_line.buf, /* what was passed to exec */
                          sec_attribs,  /* process security attrs */
@@ -656,9 +656,9 @@ spawn_guts (const char * prog_arg, const char *const *argv,
       strcat (wstname, dskname);
       si.lpDesktop = wstname;
 
-      newheap = cygheap_setup_for_child (&ciresrv, cygheap->fdtab.need_fixup_before ());
       ciresrv.moreinfo->envp = build_env (envp, envblock, ciresrv.moreinfo->envc,
                                          real_path.iscygexec ());
+      newheap = cygheap_setup_for_child (&ciresrv, cygheap->fdtab.need_fixup_before ());
       rc = CreateProcessAsUser (cygheap->user.token,
                       runpath,         /* image name - with full path */
                       one_line.buf,    /* what was passed to exec */
index bd7b3cb..e20c4b7 100644 (file)
@@ -190,6 +190,7 @@ cuserid (char *src)
 
 char cygheap_user::homepath_env_buf[MAX_PATH + 1];
 char cygheap_user::homedrive_env_buf[3];
+char cygheap_user::userprofile_env_buf[MAX_PATH + 1];
 
 const char *
 cygheap_user::ontherange (homebodies what, struct passwd *pw)
@@ -335,12 +336,11 @@ cygheap_user::env_domain ()
 const char *
 cygheap_user::env_userprofile ()
 {
-  static char buf[512]; /* FIXME: This shouldn't be static. */
   if (strcasematch (name (), "SYSTEM") || !env_domain () || !env_logsrv ())
     return NULL;
 
-  if (get_registry_hive_path (sid (), buf))
-    return buf;
+  if (get_registry_hive_path (sid (), userprofile_env_buf))
+    return userprofile_env_buf;
   else
     return NULL;
 }