Boost logo

Boost-Build :

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


   Hi all.

   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
match.

   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
command-line length'.

   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?

   Best regards,
     Jurko Gospodnetiæ

P.S.
   I fixed several outstanding bugs related to the execnt.c module that
I'll be committing soon, like executing the command:
     C:\Program Files\foo
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