[PATCH setup 11/11] Use wininet for fetching URLs in direct (non-proxy) case (DO NOT APPLY)

Åke Rehnman ake.rehnman@gmail.com
Tue May 2 19:29:00 GMT 2017


Hi,

>> One thought though, why not let wininet take care of file:// URL's as
>> well? Or actually don't try to parse the url string at all and just pass
>> it down to NETIO_IE5 unfiltered? The advantage is setup would be able to
>
> I'd be happy to look at a separate patch to do this.
See proposed incremental patch. Have a look, give me your thoughts.

>
>> handle what ever protocols wininet has. Also letting wininet taking care
>> of file:// url's would let the user install from a local network
>
> I'm pretty sure I've done that in the past, so I think it already 
> works.  The form of file: URL required might not be strictly correct, 
> though, (I think file:////server/pathname/ ?)
Seem to work with \\server\share_name\path or //server/share_name/path 
now anyway

/Ake
-------------- next part --------------
From 4e8a95e59bf761bc4d0bcc4ba3ec042401073b54 Mon Sep 17 00:00:00 2001
From: Ake Rehnman <ake.rehnman at gmail.com>
Date: Tue, 2 May 2017 20:55:07 +0200
Subject: [PATCH 1/1] Use wininet for "file://" protocol. Use NetIO_File for
 unknown protocols.

---
 netio.cc    | 10 ++++++----
 nio-file.cc |  7 -------
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/netio.cc b/netio.cc
index cf634c1..07ee217 100644
--- a/netio.cc
+++ b/netio.cc
@@ -126,7 +126,7 @@ NetIO::open (char const *url, bool cachable)
 {
   NetIO *rv = 0;
   enum
-  { http, https, ftp, ftps, file }
+  { http, https, ftp, ftps, file, unk }
   proto;
   if (strncmp (url, "http://", 7) == 0)
     proto = http;
@@ -136,10 +136,12 @@ NetIO::open (char const *url, bool cachable)
     proto = ftp;
   else if (strncmp (url, "ftps://", 7) == 0)
     proto = ftps;
-  else
+  else if (strncmp (url, "file://", 7) == 0)
     proto = file;
+  else
+    proto = unk;
 
-  if (proto == file)
+  if (proto == unk)
     rv = new NetIO_File (url);
   else if (net_method == IDC_NET_IE5)
     rv = new NetIO_IE5 (url, false, cachable);
@@ -157,7 +159,7 @@ NetIO::open (char const *url, bool cachable)
 	case ftp:
 	  rv = new NetIO_FTP (url);
 	  break;
-	case file:
+	case unk:
 	  rv = new NetIO_File (url);
 	  break;
 	default:
diff --git a/nio-file.cc b/nio-file.cc
index e69f1ff..c302616 100644
--- a/nio-file.cc
+++ b/nio-file.cc
@@ -35,13 +35,6 @@ NetIO (Purl)
     {
       file_size = get_file_size (std::string("file://") + path);
     }
-  else
-    {
-      const char *err = strerror (errno);
-      if (!err)
-	err = "(unknown error)";
-      note (NULL, IDS_ERR_OPEN_READ, path, err);
-    }
 }
 
 NetIO_File::~NetIO_File ()
-- 
2.12.2



More information about the Cygwin-apps mailing list