Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
in the same style other code does.
This commit is contained in:
Родитель
35089a4289
Коммит
cbc0f65fa3
14
lib/file.c
14
lib/file.c
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче