]>
cygwin.com Git - cygwin-apps/setup.git/blob - diskfull.cc
2 * Copyright (c) 2000, Red Hat, Inc.
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.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
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
22 static const char *cvsid
=
30 typedef BOOL
WINAPI (*GDFS
) (LPCTSTR
, PULARGE_INTEGER
, PULARGE_INTEGER
,
34 diskfull (String
const &path
)
38 HINSTANCE k
= LoadLibrary ("KERNEL32.DLL");
41 gdfs
= (GDFS
) GetProcAddress (k
, "GetDiskFreeSpaceExA");
45 ULARGE_INTEGER avail
, total
, free
;
46 if (gdfs (path
.cstr_oneuse(), &avail
, &total
, &free
))
48 int perc
= avail
.QuadPart
* 100 / total
.QuadPart
;
55 if (path
.cstr_oneuse()[1] != ':')
58 root
[0] = path
.cstr_oneuse()[0];
63 DWORD junk
, free_clusters
, total_clusters
;
65 if (GetDiskFreeSpace (root
, &junk
, &junk
, &free_clusters
, &total_clusters
))
67 int perc
= free_clusters
* 100 / total_clusters
;
This page took 0.038041 seconds and 5 git commands to generate.