From 67172406507a8030a38c229a217970d81b9d1b1e Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 5 Mar 2004 09:40:16 +0000
Subject: [PATCH] more fixing to make the progress/getinfo stuff to work
 properly when doing file: transfers too

---
 lib/file.c     | 7 ++++++-
 lib/transfer.c | 7 +++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/file.c b/lib/file.c
index 40ee5cab50..e923ae2559 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -83,6 +83,7 @@
 #include "escape.h"
 #include "file.h"
 #include "speedcheck.h"
+#include "getinfo.h"
 
 #define _MPRINTF_REPLACE /* use our functions only */
 #include <curl/mprintf.h>
@@ -177,10 +178,14 @@ CURLcode Curl_file(struct connectdata *conn)
   int fd;
   struct timeval now = Curl_tvnow();
 
+  Curl_readwrite_init(conn);
+  Curl_initinfo(data);
+  Curl_pgrsStartNow(data);
+
   /* get the fd from the connection phase */
   fd = conn->proto.file->fd;
 
-/*VMS?? -- This only works reliable for STREAMLF files */
+  /* VMS: This only works reliable for STREAMLF files */
   if( -1 != fstat(fd, &statbuf)) {
     /* we could stat it, then read out the size */
     expected_size = statbuf.st_size;
diff --git a/lib/transfer.c b/lib/transfer.c
index b37691aa95..d449294075 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1386,7 +1386,7 @@ void Curl_single_fdset(struct connectdata *conn,
  * The transfer must already have been setup by a call to Curl_Transfer().
  *
  * Note that headers are created in a preallocated buffer of a default size.
- * That buffer can be enlarged on demand, but it is never shrinken again.
+ * That buffer can be enlarged on demand, but it is never shrunken again.
  *
  * Parts of this function was once written by the friendly Mark Butler
  * <butlerm@xmission.com>.
@@ -1400,7 +1400,10 @@ Transfer(struct connectdata *conn)
   struct Curl_transfer_keeper *k = &conn->keep;
   bool done=FALSE;
 
-  Curl_readwrite_init(conn);
+  if(!(conn->protocol & PROT_FILE))
+    /* Only do this if we are not transferring FILE:, since the file: treatment
+       is different*/
+    Curl_readwrite_init(conn);
 
   if((conn->sockfd == -1) && (conn->writesockfd == -1))
     /* nothing to read, nothing to write, we're already OK! */
-- 
GitLab