Hi! Peter Rosin wrote: > I think cygwin emulates posix shell style command line parsing when > invoked from a Win32 process (like you do). So, try single quotes: > > commandLine = "callee.exe \"@\"te\"\n\"st fo@o bar\" \"baz baz '*' > '\"\\'\"'"; > > I get this (w/o noglob): > > argc = 7 > argv[0] = callee > argv[1] = @te > st > argv[2] = fo@o > argv[3] = bar baz > argv[4] = baz > argv[5] = * > argv[6] = "'"
Yes, that seems to be approximately the way I arrived at too - my concern with all the extra quoting is then hitting the Windows limit on command line length (I'd like to avoid needing @response files as much as possible). So with various experimenting, the slightly odd scheme I've come up with is that if none of the arguments contain double-quote characters, then set noglob and use the quoting mechanism previously described (so whitespace within an argument or an @ at the beginning of an argument needing double-quoting) and if a double-quote character appears in any of the arguments, then don't set noglob and escape every argument with double-quotes (to avoid globbing) - any double-quote characters within can then be escaped with "'"'" (i.e. terminate the current quote string, single-quote a double-quote and then resume a quote string!). Messy, but that seems to be about the only way... David -- 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