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]

RE: Cygstart bug: doesn't keep command line arguments intact


John Wiersba wrote on August 05, 2012 9:37 PM
>I would think that cygstart should pass arg1 as arg1 to the specified command (winword.exe in my example).  That's certainly the way it works in the unix/linux world and cygstart should be considered as an (emulated) unix command, right?  If cygstart were a Windows command I would expect such behavior, but from an (emulated) unix/linux command, I expect the arguments to be kept intact.
>In any case, it makes it awkward to run the command I mentioned, because I have to parse the arguments myself and perform awkward substitutions on them.

Have you considered the following?

cygstart "a b c.doc"

Unless you've reset the default application for doc files, Windows will see the doc file extension and pass the file to winword.

And the following might even work (untested), which lets one take advantage of file name completion.

cygstart a\ b\ c.doc

Or how about a script?  (untested)

#!/bin/bash
for WrdDoc in "$@"; do cygstart /path/winword.exe "\"${WrdDoc}\"" ; done

Unrelated:  Not that I mind, but this list is very anti-top-posting. you are forewarned.

- Barry
  Disclaimer:  Statements made herein are not made on behalf of NIAID.


________________________________
From: "Buchbinder, Barry (NIH/NIAID) [E]"
Sent: Sunday, August 5, 2012 2:38 PM
Subject: RE: Cygstart bug: doesn't keep command line arguments intact

John Wiersba wrote August 03, 2012 3:18 PM
>Calling              /c/program\ files/microsoft\ office/office12/winword.exe "a b c.doc" works.
>Calling cygstart /c/program\ files/microsoft\ office/office12/winword.exe "a b c.doc" tries to open a.doc, b.doc, and c.doc.

In the first, bash strips the quotes and passes <a b c.doc> to winword as arg1.

In the second, bash strips the quotes and passes <a b c.doc> to cygstart as arg1.
cygstart then passes <a>, <b>, and <c.doc> to winword as arg1, arg2, and arg3.

At least that is the way I understand it.
Subject to correction by the more knowledgeable.

So try protecting your double quotes with single quotes.  E.g. '"a b c.doc"'.
I don't know if the double quotes get passed to winword, but there is a lesser
chance that single quotes will work if they are on the inside, I doubt MS ever
treats them as special.

Good luck.

- Barry
  Disclaimer:  Statements made herein are not made on behalf of NIAID.


--
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


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