diff options
author | Yang Tse <yangsita@gmail.com> | 2007-12-18 18:33:24 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2007-12-18 18:33:24 +0000 |
commit | 674845f23997c61f8e88a7d425517c4d8f496265 (patch) | |
tree | 97fd2983bdedda1821ddec4843bdbf0a684c40b3 | |
parent | 07a1857d59e2da6d57eb622e90822ffa4835e1de (diff) |
(http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
a file truncation problem on Windows build targets triggered when retrying
a download with curl.
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | RELEASE-NOTES | 1 | ||||
-rw-r--r-- | src/main.c | 20 |
3 files changed, 14 insertions, 11 deletions
@@ -13,6 +13,10 @@ Yang Tse (18 Dec 2007) if no build target has been defined we will target WinXP when building curl/libcurl with MSVC 9.0 (VS2008). +- (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed + a file truncation problem on Windows build targets triggered when retrying + a download with curl. + Daniel S (17 Dec 2007) - Mateusz Loskot pointed out that MSVC 9.0 (VS2008) has the pollfd struct and defines in winsock2.h somehow differently than previous versions and that diff --git a/RELEASE-NOTES b/RELEASE-NOTES index fb09eba00..12b690469 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -37,6 +37,7 @@ This release includes the following bugfixes: o POST with callback over proxy requiring NTLM or Digest o Expect: 100-continue flaw on re-used connection with POSTs o build fix for MSVC 9.0 (VS2008) + o Windows curl builds failed file truncation when retry downloading This release includes the following known bugs: diff --git a/src/main.c b/src/main.c index 91b6d9fb2..b7a02b3ab 100644 --- a/src/main.c +++ b/src/main.c @@ -323,21 +323,19 @@ char convert_char(curl_infotype infotype, char this_char) #define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence) #endif +#ifndef HAVE_FTRUNCATE +#define HAVE_FTRUNCATE 1 +#endif + static int ftruncate64 (int fd, curl_off_t where) { - curl_off_t curr; - int rc = 0; - - if ((curr = _lseeki64(fd, 0, SEEK_CUR)) < 0) - return -1; + if(_lseeki64(fd, where, SEEK_SET) < 0) + return -1; - if (_lseeki64(fd, where, SEEK_SET) < 0) - return -1; + if(!SetEndOfFile((HANDLE)_get_osfhandle(fd))) + return -1; - if (write(fd, 0, 0) < 0) - rc = -1; - _lseeki64(fd, curr, SEEK_SET); - return rc; + return 0; } #define ftruncate(fd,where) ftruncate64(fd,where) #endif |