This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: [PATCH setup 2/2] Improve file:// url handling
- From: szgyg <szgyg at ludens dot elte dot hu>
- To: cygwin-apps at cygwin dot com
- Date: Fri, 9 Mar 2018 00:01:40 +0100
- Subject: Re: [PATCH setup 2/2] Improve file:// url handling
- Authentication-results: sourceware.org; auth=none
- References: <20180228115124.4988-1-szgyg@ludens.elte.hu> <20180228115124.4988-3-szgyg@ludens.elte.hu> <71071a66-e7ed-8df2-47ac-38384c7ead74@dronecode.org.uk>
On Tue, Mar 06, 2018 at 08:43:47PM +0000, Jon Turney wrote:
> On 28/02/2018 11:51, SZAVAI Gyula wrote:
> > [...]
> > Most non-standard urls accepted by the old code should work, too.
> > Paths longer than 260 characters are not supported anymore.
>
> Great, thanks! I applied these patches.
Thanks.
> > @@ -72,11 +74,24 @@ NetIO::open (char const *url, bool cachable)
> > else if (strncmp (url, "ftps://", 7) == 0)
> > proto = ftps;
> > else if (strncmp (url, "file://", 7) == 0)
> > - proto = file;
> > - else
> > {
> > proto = file;
> > - file_url = (std::string("file://") + url);
> > +
> > + // WinInet expects a legacy file:// url
> > + // (a windows path with "file://" prepended)
> > + // https://blogs.msdn.microsoft.com/freeassociations/2005/05/19/the-bizarre-and-unhappy-story-of-file-urls/
> > + char path[MAX_PATH];
> > + DWORD len = MAX_PATH;
> > + if (S_OK == PathCreateFromUrl(url, path, &len, 0))
> > + {
> > + file_url = std::string("file://") + path;
> > + url = file_url.c_str();
> > + }
>
> If PathCreateFromUrl fails (longer than PATH_MAX?), how intelligibly is that
> failure reported?
We get the "Unable to get setup from" messagebox and a
"connection error: 206" line in setup.log.
from https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382%28v=vs.85%29.aspx
206 (0xCE) ERROR_FILENAME_EXCED_RANGE The filename or extension is too long.
> I suspect PathCreateFromUrlA is being called here. What happens if there is
> a non-ascii character in the URL?
It doesn't work, but it didn't work before my changes either.
(I've tried 2.889 with greek and chinese directory names, and it has failed.)
s