From: carlo\.bramix <car...@li...> - 2009-06-27 09:40:35
|
Hello, this is the first time that I post here, nice to meet you. I replicated my problem with a simple programme that just prints the arguments into the console. If I launch a test program with these arguments into DOS CMD: test.exe -c '(display "foo")' I get this result: argc=4 argv[0]=test argv[1]=-c argv[2]='(display argv[3]=foo)' and it's ok... now I retry the same test.exe under bash but I get the same output! Instead, I was expecting this one: argc=3 argv[0]=test argv[1]=-c argv[2]=(display "foo") I though that bash had to convert the arguments to something like to: -c "(display \"foo\")" but it does not. I believe I'm missing something... do I need to declare or link with something special in msys for getting this behaviour? Unfortunately the research into the archives of this mailing list gave not a good reply. Thanks a lot for your answers. Sincerely, Carlo Bramini. |
From: Earnie B. <ea...@us...> - 2009-06-30 14:09:23
|
Quoting "carlo.bramix" <car...@li...>: > Hello, > this is the first time that I post here, nice to meet you. > I replicated my problem with a simple programme that just prints the > arguments into the console. > If I launch a test program with these arguments into DOS CMD: > > test.exe -c '(display "foo")' > > I get this result: > argc=4 > argv[0]=test > argv[1]=-c > argv[2]='(display > argv[3]=foo)' > > and it's ok... now I retry the same test.exe under bash but I get > the same output! The test.exe is a native program and therefore the arguments are given as windows expects it. > Instead, I was expecting this one: > > argc=3 > argv[0]=test > argv[1]=-c > argv[2]=(display "foo") > > I though that bash had to convert the arguments to something like to: > MSYS will only convert posix paths to native windows paths. It will pass arguments to native programs untouched otherwise. > -c "(display \"foo\")" > > but it does not. > I believe I'm missing something... do I need to declare or link with > something special in msys for getting this behaviour? > Unfortunately the research into the archives of this mailing list > gave not a good reply. > > Thanks a lot for your answers. > You may have luck with adjusting the argument to '(display\ "foo")'. You may need something more complex like '"(display\ "foo")"' or other combinations. -- Earnie |
From: Keith M. <kei...@us...> - 2009-06-30 19:30:33
|
On Tuesday 30 June 2009 14:34:07 Earnie Boyd wrote: > > and it's ok... now I retry the same test.exe under bash but I > > get the same output! > > The test.exe is a native program and therefore the arguments are > given as windows expects it. > > > Instead, I was expecting this one: > > > > argc=3 > > argv[0]=test > > argv[1]=-c > > argv[2]=(display "foo") > > > > I though that bash had to convert the arguments to something > > like to: > > MSYS will only convert posix paths to native windows paths. It > will pass arguments to native programs untouched otherwise. Hmm. I'm *not* seeing the behaviour reported by the OP; with dumpargs.c as in: http://thread.gmane.org/gmane.comp.gnu.mingw.msys/3719 and with: $ uname -a MINGW32_NT-5.0 ... 1.0.11(0.46/3/2) 2009-01-29 00:39 i686 Msys $ sh --version GNU bash, version 3.1.0(1)-release (i686-pc-msys) Copyright (C) 2005 Free Software Foundation, Inc. $ dumpargs -c '(display "foo")' argv[0]: d:\usr\sandbox\local\bin\dumpargs.exe argv[1]: -c argv[2]: (display "foo") which seems to match the OP's expectations--but not experience--while cmd.exe says, (as for the OP): D:\usr\sandbox\local\bin> dumpargs -c '(display "foo")' argv[0]: dumpargs argv[1]: -c argv[2]: '(display argv[3]: foo)' -- Regards, Keith. |