diff options
Diffstat (limited to 'src/win32/posix_w32.c')
-rw-r--r-- | src/win32/posix_w32.c | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c index c082dbacd..91e164348 100644 --- a/src/win32/posix_w32.c +++ b/src/win32/posix_w32.c @@ -525,58 +525,6 @@ int p_creat(const char *path, mode_t mode) return p_open(path, O_WRONLY | O_CREAT | O_TRUNC, mode); } -int p_fallocate(int fd, off_t offset, off_t len) -{ - HANDLE fh = (HANDLE)_get_osfhandle(fd); - LARGE_INTEGER zero, position, oldsize, newsize; - size_t size; - - if (fh == INVALID_HANDLE_VALUE) { - errno = EBADF; - return -1; - } - - if (offset < 0 || len <= 0) { - errno = EINVAL; - return -1; - } - - if (git__add_sizet_overflow(&size, offset, len)) { - errno = EINVAL; - return -1; - } - - zero.u.LowPart = 0; - zero.u.HighPart = 0; - - newsize.u.LowPart = (size & 0xffffffff); - -#if (SIZE_MAX > UINT32_MAX) - newsize.u.HighPart = size >> 32; -#else - newsize.u.HighPart = 0; -#endif - - if (!GetFileSizeEx(fh, &oldsize)) { - set_errno(); - return -1; - } - - /* POSIX emulation: attempting to shrink the file is ignored */ - if (oldsize.QuadPart >= newsize.QuadPart) - return 0; - - if (!SetFilePointerEx(fh, zero, &position, FILE_CURRENT) || - !SetFilePointerEx(fh, newsize, NULL, FILE_BEGIN) || - !SetEndOfFile(fh) || - !SetFilePointerEx(fh, position, 0, FILE_BEGIN)) { - set_errno(); - return -1; - } - - return 0; -} - int p_utimes(const char *path, const struct p_timeval times[2]) { git_win32_path wpath; |