]>
Commit | Line | Data |
---|---|---|
23c9e63c DD |
1 | /* |
2 | * Copyright (c) 2000, Red Hat, Inc. | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License as published by | |
6 | * the Free Software Foundation; either version 2 of the License, or | |
7 | * (at your option) any later version. | |
8 | * | |
9 | * A copy of the GNU General Public License can be found at | |
10 | * http://www.gnu.org/ | |
11 | * | |
12 | * Written by DJ Delorie <dj@cygnus.com> | |
13 | * | |
14 | */ | |
15 | ||
16 | /* The purpose of this file is to hide the mess needed just to figure | |
17 | out how full a given disk is. There is an old API that can't | |
18 | handle disks bigger than 2G, and a new API that isn't always | |
19 | available. */ | |
20 | ||
21 | #include "win32.h" | |
7cc4d95e | 22 | #include "filemanip.h" |
23c9e63c DD |
23 | #include "diskfull.h" |
24 | ||
23c9e63c | 25 | int |
08678720 | 26 | diskfull (const std::string& path) |
23c9e63c | 27 | { |
7cc4d95e CV |
28 | ULARGE_INTEGER avail, total, free; |
29 | size_t len = path.size () + 7; | |
30 | WCHAR wpath[len]; | |
23c9e63c | 31 | |
7cc4d95e CV |
32 | mklongpath (wpath, path.c_str (), len); |
33 | if (GetDiskFreeSpaceExW (wpath, &avail, &total, &free)) | |
23c9e63c | 34 | { |
7cc4d95e | 35 | int perc = avail.QuadPart * 100 / total.QuadPart; |
b24c88b3 | 36 | return 100 - perc; |
23c9e63c | 37 | } |
23c9e63c DD |
38 | return 0; |
39 | } |