mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-18 23:12:15 +08:00
* autoload.cc (GetCompressedFileSize): Add.
* fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Compute st_blocks value from GetCompressedFileSize() if available.
This commit is contained in:
parent
7920792369
commit
3a88cf1b10
@ -1,3 +1,9 @@
|
|||||||
|
2003-02-20 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* autoload.cc (GetCompressedFileSize): Add.
|
||||||
|
* fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Compute
|
||||||
|
st_blocks value from GetCompressedFileSize() if available.
|
||||||
|
|
||||||
2003-02-18 Vaclav Haisman <V.Haisman@sh.cvut.cz>
|
2003-02-18 Vaclav Haisman <V.Haisman@sh.cvut.cz>
|
||||||
|
|
||||||
* wincap.h (wincaps::supports_sparse_files): New flag.
|
* wincap.h (wincaps::supports_sparse_files): New flag.
|
||||||
|
@ -497,6 +497,7 @@ LoadDLLfunc (CoCreateInstance, 20, ole32)
|
|||||||
LoadDLLfuncEx (CancelIo, 4, kernel32, 1)
|
LoadDLLfuncEx (CancelIo, 4, kernel32, 1)
|
||||||
LoadDLLfuncEx (CreateHardLinkA, 12, kernel32, 1)
|
LoadDLLfuncEx (CreateHardLinkA, 12, kernel32, 1)
|
||||||
LoadDLLfuncEx (CreateToolhelp32Snapshot, 8, kernel32, 1)
|
LoadDLLfuncEx (CreateToolhelp32Snapshot, 8, kernel32, 1)
|
||||||
|
LoadDLLfuncEx2 (GetCompressedFileSizeA, 8, kernel32, 1, 0xffffffff)
|
||||||
LoadDLLfuncEx (GetConsoleWindow, 0, kernel32, 1)
|
LoadDLLfuncEx (GetConsoleWindow, 0, kernel32, 1)
|
||||||
LoadDLLfuncEx2 (IsDebuggerPresent, 0, kernel32, 1, 1)
|
LoadDLLfuncEx2 (IsDebuggerPresent, 0, kernel32, 1, 1)
|
||||||
LoadDLLfuncEx (Process32First, 8, kernel32, 1)
|
LoadDLLfuncEx (Process32First, 8, kernel32, 1)
|
||||||
|
@ -260,6 +260,19 @@ fhandler_disk_file::fstat_helper (struct __stat64 *buf, path_conv *pc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
buf->st_blksize = S_BLKSIZE;
|
buf->st_blksize = S_BLKSIZE;
|
||||||
|
|
||||||
|
/* GetCompressedFileSize() gets autoloaded. It returns INVALID_FILE_SIZE
|
||||||
|
if it doesn't exist. Since that's also a valid return value on 64bit
|
||||||
|
capable file systems, we must additionally check for the win32 error. */
|
||||||
|
nFileSizeLow = GetCompressedFileSizeA (pc->get_win32 (), &nFileSizeHigh);
|
||||||
|
if (nFileSizeLow != INVALID_FILE_SIZE || GetLastError () == NO_ERROR)
|
||||||
|
/* On systems supporting compressed (and sparsed) files,
|
||||||
|
GetCompressedFileSize() returns the actual amount of
|
||||||
|
bytes allocated on disk. */
|
||||||
|
buf->st_blocks = (((__off64_t)nFileSizeHigh << 32)
|
||||||
|
+ nFileSizeLow + S_BLKSIZE - 1) / S_BLKSIZE;
|
||||||
|
else
|
||||||
|
/* Just compute no. of blocks from file size. */
|
||||||
buf->st_blocks = (buf->st_size + S_BLKSIZE - 1) / S_BLKSIZE;
|
buf->st_blocks = (buf->st_size + S_BLKSIZE - 1) / S_BLKSIZE;
|
||||||
|
|
||||||
buf->st_mode = 0;
|
buf->st_mode = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user