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 doesn't handle question marks in mailto URLs


On 30/03/2012 1:52 PM, Ken Brown wrote:
On 3/30/2012 12:04 PM, Ryan Johnson wrote:
On 30/03/2012 11:14 AM, Corinna Vinschen wrote:
On Mar 30 09:43, Ryan Johnson wrote:
On 30/03/2012 9:27 AM, Ken Brown wrote:
If I type `cygstart mailto:recipient?subject=subject' at a Cygwin
bash prompt, I expect my default Windows mail program to start an
outgoing message with `recipient' as recipient and `subject' as
subject. (This is what happens if I type the same URL into a
`Start Menu -> Run' box.) What happens instead is that
`recipient?subject=subject' shows up as the recipient, with the
question mark replaced by something unprintable, and the subject
is blank.

Is this a bug in cygstart, or am I misunderstanding something?
I suspect a bug in the way cygwin1.dll handles conversion from unix-
to windows-style paths.
http://cygwin.com/acronyms/#IAFNAB

http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars


Makes sense... for files, but we're dealing with a URL here, so it *is*
a bug IMO (but you're right, not a bug in cygwin's handling of
windows-style paths).

Cygstart knows it's dealing with a URL.

Actually, it doesn't, and that's the problem. Here's the relevant code in cygstart.c:


/* Start a program, or open a file or URL, using Cygwin POSIX paths */
static int
cygStart (const char *aPath, const wchar_t * action,
const wchar_t * args, const char *workDir,
int show, StartFlags startFlags)
[...]
/* Convert file path from POSIX to Windows, unless it looks like a URL */
if (!strstr (aPath, "://"))


Chuck, what would you think of changing this so that cygstart would recognize `mailto:' URLs? It would also be useful if cygstart could learn to handle `file://' URLs involving POSIX paths.
Interesting... I expected it was doing strchr(aPath, ':') to detect URLS.

Given that ':' "special" for both Windows paths and URLS, why not just call strchr(aPath, ':') ? Then we'd catch ftp, **http, mailto, etc. all in one fell swoop. Whether to make "file:" (or "file://") a special case is technically orthogonal (but probably a good idea).

**BTW, it turns out that Windows and Firefox both do the right thing with `http:www.cygwin.com'

Ryan


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