Mailing-List: contact cygwin-apps-help AT cygwin DOT com; run by ezmlm Sender: cygwin-apps-owner AT cygwin DOT com List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps AT cygwin DOT com Delivered-To: mailing list cygwin-apps AT cygwin DOT com Date: Tue, 7 May 2002 13:11:52 +0200 From: Pavel Tsekov Reply-To: Pavel Tsekov Organization: Syntrex, Inc. X-Priority: 3 (Normal) Message-ID: <3715156594.20020507131152@syntrex.com> To: "Robert Collins" CC: cygwin-apps AT cygwin DOT com Subject: Re[2]: URL paths in setup.exe In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------10187146120263F6" ------------10187146120263F6 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello Robert, Tuesday, May 07, 2002, 12:45:33 PM, you wrote: RC> I'd like to formalise what file:// and cygfile:// schemes mean. RC> file:// is a native filesystem URL handler - whatever the OS may be. RC> cygfile:// is a handler that only makes sense on mingw platforms, and RC> access's the cygwin mount table. There is no cygfile://. There is no authority in the cygfile schema - only path. // leads to authority. I think of cygfile as a UNIX/posix path. RC> This means that: RC> file:///foo/bar.txt is /foo/bar.txt on posix, and Current RC> drive:\foo\bar.txt on mingw. No. file:///foo/bar.txt is not parsed. RC> As for file:// + d: + \foo\bar.txt, can we normalise that as RC> file://d|/foo/bar.txt - that is what MS do, and will be less confusing RC> for users of the codebase (IMO). How would this confuse them ? I don't think with file://d|/foo/bar.txt is better thatn file://d/foo/bar.txt. There is a method which converts d:\foo\bar to file URL - isn't it enough ? There is also a method whic gets the parsed URL as path. Btw see the attached program. It is a test for the URL parser. ------------10187146120263F6 Content-Type: application/x-zip-compressed; name="URLTest.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="URLTest.zip" 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 ------------10187146120263F6--