This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Adding MSYS functionality to Cygwin
- From: Алексей Павлов <alexpux at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 19 Jun 2013 10:53:34 +0400
- Subject: Re: Adding MSYS functionality to Cygwin
- References: <CABEPuQJDLjtbcLig1isTUJgb6RBCD8LNShbm9mTPcb9WM5S5fw at mail dot gmail dot com> <51C0B08E dot 8080900 at etr-usa dot com> <CABEPuQJJpRfPKSwZ7M0eTOdp1HxDcmvuy1=qXFHBw-8kLkZ1ZQ at mail dot gmail dot com> <51C0D956 dot 4090905 at etr-usa dot com> <20130619020234 dot GA3669 at ednor dot casa dot cgf dot cx>
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