Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
authorDaniel Stenberg <daniel@haxx.se>
Mon, 23 Sep 2002 12:46:23 +0000 (12:46 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 23 Sep 2002 12:46:23 +0000 (12:46 +0000)
in the same style other code does.

lib/file.c

index a490856..1f9b5d1 100644 (file)
@@ -159,6 +159,16 @@ CURLcode Curl_file(struct connectdata *conn)
     expected_size = (double)statbuf.st_size;
   }
 
+  /* Added by Dolbneff A.V & Spiridonoff A.V */
+  if (conn->resume_from <= expected_size)
+    expected_size -= conn->resume_from;
+  else
+    /* Is this error code suitable in such situation? */
+    return CURLE_FTP_BAD_DOWNLOAD_RESUME;
+
+  if (expected_size == 0)
+    return CURLE_OK;
+
   /* The following is a shortcut implementation of file reading
      this is both more efficient than the former call to download() and
      it avoids problems with select() and recv() on file descriptors
@@ -166,6 +176,10 @@ CURLcode Curl_file(struct connectdata *conn)
   if(expected_size != -1)
     Curl_pgrsSetDownloadSize(data, expected_size);
 
+  if(conn->resume_from)
+    /* Added by Dolbneff A.V & Spiridonoff A.V */
+    lseek(fd, conn->resume_from, SEEK_SET);
+
   while (res == CURLE_OK) {
     nread = read(fd, buf, BUFSIZE-1);