Re: Something wrong with cygstart
Christian Franke via Cygwin <[email protected]>
| Newsgroups | gmane.os.cygwin |
|---|---|
| Message-ID | <[email protected]> |
Andrey Repin via Cygwin wrote: > I'm using a wrapper script to comfortably start VS Code from file manager. > > The last line of it is > > cygstart --hide -- "/proc/cygdrive/c/Program Files/Microsoft VS Code/bin/code.cmd" "$(cygpath -alw "$_arg")" > > It works well up to the point where there are no spaces in the $_arg. But on > the first seen space it break the arguments list into pieces. > I have to double-quote the argument to maintain the consistency, like > > cygstart --hide -- "/proc/cygdrive/c/Program Files/Microsoft VS Code/bin/code.cmd" "\"$(cygpath -alw "$_arg")\"" > > but that's a questionable solution at best. This is as expected. Unlike Cygwin's exec() emulation, cygstart does not add any quoting during conversion of the argv[] array to the plain argument string required for Windows process creation API. Example: $ cat test.cmd @echo off echo %%1 = '%1'>test.txt echo %%2 = '%2'>>test.txt echo %%3 = '%3'>>test.txt echo %%4 = '%4'>>test.txt echo %%5 = '%5'>>test.txt $ ./test.cmd ArgOne 'Arg Two' 'Arg Three'; cat test.txt %1 = 'ArgOne' %2 = '"Arg Two"' %3 = '"Arg Three"' %4 = '' %5 = '' $ cygstart ./test.cmd ArgOne 'Arg Two' 'Arg Three';\ sleep 1; cat test.txt %1 = 'ArgOne' %2 = 'arg' %3 = 'Two' %4 = 'Arg' %5 = 'Three' $ cygstart ./test.cmd ArgOne '"Arg Two"' '"Arg Three"' ;\ sleep 1; cat test.txt %1 = 'ArgOne' %2 = '"Arg Two"' %3 = '"Arg Three"' %4 = '' %5 = '' $ cygstart ./test.cmd 'ArgOne "Arg Two" "Arg Three"' ;\ sleep 1; cat test.txt %1 = 'ArgOne' %2 = '"Arg Two"' %3 = '"Arg Three"' %4 = '' %5 = '' -- Regards, Christian -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple