Mail Archives: cygwin/2004/09/03/12:08:37
On Fri, 3 Sep 2004, Mark Bohlman wrote:
> Igor Pechtchanski wrote:
> > On Fri, 3 Sep 2004, Mark Bohlman wrote:
> >
> > > Igor Pechtchanski wrote:
> > >
> > > > On Fri, 3 Sep 2004, Christopher Cobb wrote:
> > > >
> > > > > I get different results than you do. It seems to work as expected:
> > > > >
> > > > > chcobb AT CHCOBB-054009 /c/Documents and Settings 09:45:46
> > > > > 511$ cat test.bat
> > > > > echo %1
> > > > >
> > > > > chcobb AT CHCOBB-054009 /c/Documents and Settings 09:45:48
> > > > > 511$ ./test.bat
> > > > >
> > > > > C:\Documents and Settings>echo
> > > > > ECHO is on.
> > > >
> > > > I believe you're missing the point. Try
> > > >
> > > > ../test.bat "hello world"
> > > >
> > > > and you'll get the error.
> > > >
> > > > I've come across this when writing a pure Windows loader for
> > > > another program. The above is actually an idiosyncrasy of the way
> > > > spawn() works in Cygwin (and, incidentally, in Windows' own
> > > > MSVCRT) -- it calls CreateProcess, which expects all arguments
> > > > combined into one command string (which, in turn, is later parsed
> > > > for separate arguments - yes, retarded, I know). The fact is
> > > > that, if any argument contains spaces, it has to be quoted before
> > > > CreateProcess() is invoked. Cygwin apparently doesn't do this
> > > > properly to the first argument, so the above breaks. See
> > > > spawn_guts() in winsup/cygwin/spawn.cc (warning: a 590!-line
> > > > function). <http://cygwin.com/acronyms/#PTC>.
> > > > Igor
> > >
> > > You get the same "odd evaluation behavior" when doing
> > > echo "Hello World" | ./test.bat
> > > (in any directory).
> > > -- Mark
> >
> > Actually, I don't. Did you, by chance, mean "echo ...|xargs ./test.bat"?
> > Even so, you should probably be a bit more specific about the "odd
> > evaluation behavior" that you're observing.
> > Igor
>
> Hmmm. I'm seeing the same results as you show above with a quoted "Hello
> World" parameter to the ./test.bat.
>
> Then in doing the echo, without the xargs, results in the same
> "non-evaluation" (what i consider to be 'odd') for parameter %1 within the
> test.bat file.
> -- Mark
Well, piping the output of echo to test.bat's stdin is *not* the same as
passing the string as a parameter. In the former case, test.bat is called
with no arguments, so %1 evaluates to nothing. IOW, the behavior you're
seeing is expected.
Igor
--
http://cs.nyu.edu/~pechtcha/
|\ _,,,---,,_ pechtcha AT cs DOT nyu DOT edu
ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com
|,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D.
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
"Happiness lies in being privileged to work hard for long hours in doing
whatever you think is worth doing." -- Dr. Jubal Harshaw
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -