This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygstart getting The specified file was not found


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  <corinna AT vinschen DOT de>

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]