public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: David Allsopp <david@allsopps.net>
To: Aaron Digulla <digulla@hepe.com>,
	"cygwin@cygwin.com" <cygwin@cygwin.com>
Subject: RE: Formatting command line arguments when starting a Cygwin  process from a native process
Date: Mon, 09 May 2016 15:19:00 -0000	[thread overview]
Message-ID: <E51C5B015DBD1348A1D85763337FB6D9F04BD207@Remus.metastack.local> (raw)
In-Reply-To: <5ba8-5730a580-3b-2319ce00@26574710>

Aaron Digulla wrote:
> 
> Am Samstag, 07. Mai 2016 09:45 CEST, "David Allsopp" <dra27@cantab.net>
> schrieb:
> 
> 
> > > Then all you need is a rudimentary quoting.
> >
> > Yes, but the question still remains what that rudimentary quoting is -
> i.e.
> > I can see how to quote spaces which appear in elements of argv, but I
> > cannot see how to quote double quotes!
> 
> This should help:
> https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/e
> veryone-quotes-command-line-arguments-the-wrong-way/

This provides documentation for how Microsoft implementations do it, not how Cygwin does it. The Cygwin DLL is responsible for determining how a Cygwin process gets argc and argv from GetCommandLineW.

> My line of thought is that Cygwin can't get anything which Windows can't
> send it. So the first step to solve this mess is to make sure the
> arguments which you send to CreateProcess() are correct.
> 
> The next step would be to write a small C utility which dumps it's
> arguments, so you can properly debug all kinds of characters.

See later email, but IMHO the conversion is something Cygwin should have precisely documented, not determined by brittle experimentation.

> PS: I always point people to string list/array type methods to create
> processes which fix all the problems with spaces and odd characters
> (quotes, umlauts, etc). It seems that Windows doesn't have such a method
> to create processes. Which kind of makes sense; Windows is very, very
> mouse centered.

I fail to see the connection with mice! What Windows (NT) does have is a legacy where the decision on how to convert a command line to a list/array of arguments is determined per-process (and so not the responsibility of command line shells) vs Unix which puts the burden of converting a single command line to the array on the shell instead. Nominally, the Windows way is more flexible, though I don't think that flexibility is actually useful (especially if you look at the comments in the command line -> argv conversion in Microsoft's C Runtime library!). 


David


  reply	other threads:[~2016-05-09 15:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-05 15:24 David Allsopp
2016-05-05 16:47 ` Erik Soderquist
2016-05-06  8:03   ` David Allsopp
2016-05-06 13:17     ` Erik Soderquist
2016-05-06 14:35     ` Andrey Repin
2016-05-07  7:45       ` David Allsopp
2016-05-09  9:43         ` Peter Rosin
2016-05-09 10:06           ` Marco Atzeri
2016-05-09 15:49             ` David Allsopp
2016-05-09 16:02               ` Marco Atzeri
2016-05-09 16:14                 ` David Allsopp
2016-05-09 15:49           ` David Allsopp
2016-05-09 14:57         ` Aaron Digulla
2016-05-09 15:19           ` David Allsopp [this message]
2016-05-10 13:30             ` Aaron Digulla
2016-05-10 17:02               ` David Allsopp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E51C5B015DBD1348A1D85763337FB6D9F04BD207@Remus.metastack.local \
    --to=david@allsopps.net \
    --cc=cygwin@cygwin.com \
    --cc=digulla@hepe.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).