diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2003-05-26 16:52:58 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2003-05-26 16:52:58 +0000 |
commit | ada0376f6499dd8d796de5020eb86d14430cfea4 (patch) | |
tree | 28e6df2da329d29372674b7506af283853581b84 /winsup/cygwin/syscalls.cc | |
parent | 0372ad9f117d574cca0bbad9830d72057b18a34d (diff) | |
download | cygnal-ada0376f6499dd8d796de5020eb86d14430cfea4.tar.gz cygnal-ada0376f6499dd8d796de5020eb86d14430cfea4.tar.bz2 cygnal-ada0376f6499dd8d796de5020eb86d14430cfea4.zip |
* syscalls.cc (statfs): Call GetDiskFreeSpaceEx before GetDiskFreeSpace.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3c3be8664..8922f948a 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1876,6 +1876,11 @@ statfs (const char *fname, struct statfs *sfs) syscall_printf ("statfs %s", root); + /* GetDiskFreeSpaceEx must be called before GetDiskFreeSpace on + WinME, to avoid the MS KB 314417 bug */ + ULARGE_INTEGER availb, freeb, totalb; + BOOL status = GetDiskFreeSpaceEx (root, &availb, &totalb, &freeb); + DWORD spc, bps, availc, freec, totalc; if (!GetDiskFreeSpace (root, &spc, &bps, &freec, &totalc)) @@ -1884,9 +1889,7 @@ statfs (const char *fname, struct statfs *sfs) return -1; } - ULARGE_INTEGER availb, freeb, totalb; - - if (GetDiskFreeSpaceEx (root, &availb, &totalb, &freeb)) + if (status) { availc = availb.QuadPart / (spc*bps); totalc = totalb.QuadPart / (spc*bps); |