This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Command line processing in does not match Microsoft parsing rules

The standard rules for Microsoft command line processing are documented here:

The Cygwin code for command line processing is in, function build_argv.

The behaviors do not match. For instance, given a script like this:

    echo $1

And the following invocation of bash.exe from a Windows command prompt:

    bash.exe foo\"bar

The result is:


When the expected result is:


As a workaround, you can achieve the expected result using:

    bash.exe "foo\"bar"

Which is great until you use a language like Go to shell exec the command line, and don't have control over how the command line string is generated from an original set of arguments. See:

Go just reverses the Microsoft standard rules in the most efficient manner possible, but those command lines don't parse correctly in Cygwin processes.

Go implements a pretty definitive command line parsing algorithm as a replacement for the CommandLineToArgv function in shell32.dll:

The behavior here is based on a detailed analysis of what command line parsing "should" be in Windows:

It would be very nice if Cygwin followed the same procedure at startup.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]