Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Wed, 11 May 2005 11:58:34 -0700 From: David Rothenberger Subject: Re: Fixing strace and cygcheck so that they work with mount -X In-reply-to: <20050511165354.GA15412@trixie.casa.cgf.cx> To: cygwin AT cygwin DOT com Message-id: <428255DA.4030907@acm.org> MIME-version: 1.0 Content-type: multipart/mixed; boundary=------------030401070206010500000103 References: <20050508230637 DOT GD3896 AT trixie DOT casa DOT cgf DOT cx> <20050509002126 DOT GH3896 AT trixie DOT casa DOT cgf DOT cx> <20050509022611 DOT GA7850 AT trixie DOT casa DOT cgf DOT cx> <427F9C41 DOT 1000605 AT acm DOT org> <427FB7B2 DOT 8040903 AT mscha DOT nl> <20050510151746 DOT GV15665 AT trixie DOT casa DOT cgf DOT cx> <42822503 DOT 2090903 AT mscha DOT org> <20050511154036 DOT GD10119 AT trixie DOT casa DOT cgf DOT cx> <20050511165354 DOT GA15412 AT trixie DOT casa DOT cgf DOT cx> User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-IsSubscribed: yes Reply-To: cygwin AT cygwin DOT com --------------030401070206010500000103 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 5/11/2005 9:53 AM, Christopher Faylor wrote: > On Wed, May 11, 2005 at 11:40:36AM -0400, Christopher Faylor wrote: > >>It sounds like you need to read MSDN on CreateProcess and see what it says >>about "lpEnvironment": >> >>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp cygstart uses ShellExecute, not CreateProcess. > Btw, from the description, it sounds like cygstart is broken right now > and could be fixed right now. You don't need any of the functionality > from the snapshot. You just need to construct a windows lpEnvironment > block from the UNIX-like global variable, provided by cygwin: "extern char **environ". The attached patch fixes cygstart for me. It copies all missing Cygwin environment variables to the Windows environment before invoking ShellExecute. -- David Rothenberger spammer? -> spam AT daveroth DOT dyndns DOT org GPG/PGP: 0x7F67E734, C233 365A 25EF 2C5F C8E1 43DF B44F BA26 7F67 E734 It'll be a nice world if they ever get it finished. --------------030401070206010500000103 Content-Type: text/plain; name="cygutils.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="cygutils.patch" --- cygutils-1.2.7-orig/src/cygstart/cygstart.c 2005-03-07 21:22:51.000000000 -0800 +++ cygutils-1.2.7/src/cygstart/cygstart.c 2005-05-11 11:43:55.598000000 -0700 @@ -24,6 +24,7 @@ #include "config.h" #endif #include "common.h" +#include /* The official name of this program (e.g., no `g' prefix). */ #define PROGRAM_NAME "cygstart" @@ -64,6 +65,7 @@ static void help(poptContext optCon, FILE *f, char *name); static void version(poptContext optCon, FILE *f, char *name); static void license(poptContext optCon, FILE *f, char *name); +static void setup_win_environ(void); int main(int argc, const char **argv) { @@ -404,6 +406,7 @@ { int ret; + setup_win_environ(); ret = (int) ShellExecute(NULL, action, aPath, args, workDir, show); if (ret >= 32) { return TRUE; @@ -511,3 +514,23 @@ printTopDescription(f, name); printLicense(f, name); } + +/* Copy cygwin environment variables to the Windows environment if they're not already there. */ +static void setup_win_environ(void) +{ + char **envp = (char **) cygwin_internal (CW_ENVP); + char *var, *val; + char curval[2]; + + while (envp && *envp) { + var = strdup(*envp++); + val = strchr(var, '='); + *val++ = '\0'; + + if (GetEnvironmentVariable(var, curval, 2) == 0 && GetLastError() == ERROR_ENVVAR_NOT_FOUND) { + SetEnvironmentVariable(var, val); + } + + free(var); + } +} --------------030401070206010500000103 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --------------030401070206010500000103--