Web lists-archives.com

Re: [Mingw-msys] forking issue on Windows XP?

On Fri, 2008-01-11 at 18:11 +0100, Michael Kappert wrote:
> I already asked about this on mingw-users
> (news://news.gmane.org:119/4783A5B0.6030804@xxxxxxx)
> but I think it's more properly handled here. Thanks to Dave and
> Earnie for their help so far.

I'd already seen your post there, but hadn't gotten around to replying.
You are correct; this probably is a more appropriate forum for this

> My preferred solution would be to drop the automagic conversion
> completely as it doesn't seem to work at all.

Oh, but it does!  About 99 times out of 100, it does exactly what you
want; you are unfortunate that your particular usage falls into the 1%
band, where it fails.

>  But maybe that's not feasible for reasons I don't see? Comments?

There is no way around this, in present versions of MSYS; for the time
being, Cygwin may be a better choice for your needs.

However, the problem is known, and there had been some discussion of
possible solutions, when it was originally reported.  At the time,
Earnie was the MSYS maintainer, and he proposed some possible features
that might help to alleviate the problem:--

1) Create an environment variable, which could be set to particular
values, to control the behaviour of the transformation; that would allow
you to disable the transformation, as you suggest.

2) Prefix some specific signature to the argument string itself, which
MSYS would remove, recognising it as an instruction to leave the string
otherwise unmodified.

Of these two, I personally prefer the second, since it will allow finer
control of the behaviour.  Consider the problem, using the example which
you originally presented:--

   $ ./test "(../src) (foo::bar)"
   test: (..\src) (foo;bar)

As you noticed, MSYS mistakenly identifies this as a path list, in POSIX
format, and "helpfully" converts it to its Woe32 equivalent form; also,
there seems to be no way to persuade MSYS to pass that string on, as you
really wanted it.  However, look what happens, if you make a very small
alteration to that string:--

   $ ./test "?:(../src) (foo::bar)"
   test: ?:(../src) (foo::bar)

Close to what you want, but not quite there.  However, if the MSYS path
transformation code could be modified, such that one initial `?:' on any
argument string is discarded, while leaving the remainder of the string
untouched, wouldn't that give you the desired effect?

This is certainly how I would propose dealing with this problem; I've
even considered working on a patch to implement it, but it's currently
way down on my priority list.  In any case, it would be up to Cesar,
whether or not he would consider such a patch, before the upcoming
release of MSYS-1.0.11, or whether to wait for MSYS-1.0.12. 

Additionally, while I've suggested `?:' as the signature tag, the user
population should be given an opportunity to discuss that, and to agree
on any final preferred sequence.


Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
Mingw-msys mailing list