X-Spam-Check-By: sourceware.org Date: Tue, 12 Dec 2006 09:00:24 -0500 (EST) From: Igor Peshansky Reply-To: cygwin@cygwin.com To: cygwin@cygwin.com Subject: Re: cygstart getting The specified file was not found In-Reply-To: Message-ID: References: <457E0CB8.5070002@mscha.nl> <20061212082036.GY9829@calimero.vinschen.de> <457EAD4F.1000605@mscha.nl> <457EB1D6.7000908@mscha.nl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Delivered-To: mailing list cygwin@cygwin.com On Tue, 12 Dec 2006, Igor Peshansky wrote: > On Tue, 12 Dec 2006, Michael Schaap wrote: > > > Michael Schaap wrote: > > > Corinna Vinschen wrote: > > > > > > > > Does cygstart use CreateProcess and/or GetCurrentDirectory instead of > > > > fork/exec/getcwd? > > > > > > > > If so, cygstart will have to call cygwin_internal(CW_SYNC_WINENV) > > > > before using the native Windows functions. > > > > > > No, it uses ShellExecute (see "cygstart --reference"). It does indeed > > > need to sync the environment, but it does this using its own code. > > > (Predates cygwin_internal(CW_SYNC_WINENV); I still need to change > > > cygstart some day to use it.) > > > > > > However, this is unrelated to this problem, things go wrong long > > > before that. It appears that cygwin_conv_to_win32_path incorrectly > > > determines the current working directory. > > > > > > It is called as follows: > > > > > > cygwin_conv_to_win32_path(aPath, winPath); > > > > > > where aPath == "hello.txt". > > > > > > The current directory is "/cygdrive/c/user" =~ "c:\user", but > > > cygwin_conv_to_win32_path thinks that: > > > > > > normalize_posix_path: /cygdrive/c/WINDOWS/system32/hello.txt = > > > normalize_posix_path (hello.txt) > > > > > > (See Eric's messages for more debugging info.) > > > > I just installed the 2006-12-11 snapshot, and I can reproduce this. Like > > Eric, I'm on XP SP2. > > > > I went down the list of snapshots, and it looks like this was introduced > > some time in between 2006-11-27 and 2006-11-30. > > I just looked at the ChangeLog between those two snapshots. The following > looks like the culprit change: > > 2006-11-29 Corinna Vinschen WHOOPS! Corinna, major apologies for leaving the email address unmunged. I'm usually more careful than that. > * path.cc [snip] > (cwdstuff::init): Initialize cygheap->cwd with current working > directory. Change to windows_system_directory afterwards. > > With that change, any use of non-Cygwin calls, e.g., GetCurrentDirectory, > or ShellExecute (which calls GetCurrentDirectory under the covers, it > seems) will produce the problem you're seeing (Windows system directory as > the current directory). > > So it looks like you ought to call cygwin_internal(CW_SYNC_WINENV) after > all, as it syncs more than the environment variables... > Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ pechtcha@cs.nyu.edu | igor@watson.ibm.com ZZZzz /,`.-'`' -. ;-;;,_ Igor Peshansky, Ph.D. (name changed!) |,4- ) )-,_. ,\ ( `'-' old name: Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! Freedom is just another word for "nothing left to lose"... -- Janis Joplin -- 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/