2013/6/19 Christopher Faylor wrote: > On Tue, Jun 18, 2013 at 04:04:06PM -0600, Warren Young wrote: >>On 6/18/2013 13:30, ??????? ?????? wrote: >>> 2013/6/18 Warren Young : >>>> On 6/18/2013 12:40, ??????? ?????? wrote: >>>>> >>>>> 1. The correct definition of executables belonging to Cygwin DLL. >>>> >>>> Can you give an example of what you mean here? >>>> >>> All cygwin applications depends on cygwin1.dll. We need to translate >>> arguments only for non-cygwin applications. >> >>It would be possible, though somewhat evil, for Cygwin's exec() >>implementation to peek at the DLL dependency list of a program before >>starting it, and from that infer whether it should automatically >>translate paths. > > Cygwin already does this. It detects whether the program it is about > to run uses the Cygwin DLL and, if not, makes decisions on how to > handle exec. It would be relatively easy to extend this. >
Thanks for the point Christopher. Today I investigate in this direction and find that logic works well except one line in spawn.cc that I think can be fixed without break anything. Index: cygwin/spawn.cc =================================================================== RCS file: /cvs/src/src/winsup/cygwin/spawn.cc,v retrieving revision 1.345 diff -u -p -r1.345 spawn.cc --- cygwin/spawn.cc 3 May 2013 19:39:01 -0000 1.345 +++ cygwin/spawn.cc 19 Jun 2013 05:53:36 -0000 @@ -406,7 +406,7 @@ child_info_spawn::worker (const char *pr } else { - if (wascygexec) + if (real_path.iscygexec ()) newargv.dup_all (); else if (!one_line.fromargv (newargv, real_path.get_win32 (), real_path.iscygexec ())) Regards, Alexey. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple