* autoload.cc (CreateEnvironmentBlock): Import.

(DestroyEnvironmentBlock): Import.
	* environ.cc (env_compare): New static bsearch comparison function.
	(build_env): Add parameter taking a user token.  If token is non-NULL,
	fetch user's default Windows environment and merge it into the resulting
	environment.  Explain what we do in preceeding comment.
	* environ,h (build_env): Align prototype to above change.
	* external.cc (create_winenv): Call build_env with NULL token.
	* spawn.cc (child_info_spawn::worker): When spawning new process under
	another user account, call build_env with new token to allow merging
	user's default Windows environment.
	* winlean.h (_USERENV_): Define to override dllimport.
This commit is contained in:
Corinna Vinschen
2014-12-02 10:16:03 +00:00
parent 0c326d84b5
commit 9119d13db8
7 changed files with 137 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
/* environ.h: Declarations for environ manipulation
Copyright 2000, 2001, 2002, 2003, 2005, 2006, 2008, 2013 Red Hat, Inc.
Copyright 2000, 2001, 2002, 2003, 2005, 2006, 2008, 2013, 2014 Red Hat, Inc.
This file is part of Cygwin.
@@ -45,6 +45,6 @@ extern "C" char **__cygwin_environ, ***main_environ;
extern "C" char __stdcall **cur_environ ();
#endif
char ** __reg3 build_env (const char * const *envp, PWCHAR &envblock,
int &envc, bool need_envblock);
int &envc, bool need_envblock, HANDLE new_token);
#define ENV_CVT -1