Subject: [Boost-build] RFC - Boost Build's Windows implementation for JAMBASE = %
From: Jurko Gospodnetiæ (jurko.gospodnetic_at_[hidden])
Date: 2012-06-18 17:33:21
I was looking through the execnt.c implementation trying to figure
out why exactly the core_nt_line_length.py test is failing and I noticed
that the JAMBASE = % implementation on Unix & Windows does not exactly
On Unix - if you specify JAMBASE = % your actions get executed
directly using execvp(). On Windows, they get executed directly 'only if
they do not contain <>| characters, do not contain multiple
non-whitespace lines and are longer than the maximum allowed shell
Is that the intended or accidental behavior? And if intended - why?
If we check for <>|, why not for & and && as well for instance?
I have a patch locally that changes this to 'execute it directly if
it does not contain multiple non-whitespace lines' - and that seems more
natural. Any thoughts on whether or not to apply something like that?
I fixed several outstanding bugs related to the execnt.c module that
I'll be committing soon, like executing the command:
which works fine as long as you do not have a program named
C:\Program.exe on your system. :-)
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk