Commit cbc0f65f authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes

in the same style other code does.
parent 35089a42
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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);