Mercurial > hg > xemacs-beta
annotate netinstall/diskfull.cc @ 1346:01c57eb70ae9
[xemacs-hg @ 2003-03-09 02:27:27 by ben]
To: xemacs-patches@xemacs.org
i.c: Sleep between calls to check for I/O, since these calls are non-blocking.
behavior.el: Allow other keywords for forward compatibility.
cl-macs.el: Rewrite to eliminate byte-compiler warning when `return' is used
without `finally'.
cmdloop.el: Avoid truncated error messages for `end-of-file' and the like.
cmdloop.el: Avoid char-int error after syncing.
files.el: Eliminate byte-compile warnings.
printer.el: Fix line-width calculations.
#### This used to work. Someone's changes (perhaps by
Michael Sperber?) seem to have messed something up.
simple.el: Use new clear-left-side functions to avoid messages ending up on
the same line as other output.
xemacs.mak: Add override for info/ as well when separate source/build dirs.
xemacs.mak: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
Makefile.in.in: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
alloc.c: Don't arbitrarily clear Vconfigure_info_directory since it
messes up separate build/source dirs.
console.c, console.h, device-msw.c, device.c: Add accidentally omitted msprinter console and data descriptions.
print.c, console-msw.c: Add clear-left-side functionality to help keep stdio/stderr
output from separate sources on separate lines. Generalize
the different kinds of debugging output. Add dpa().
profile.c: Add better docs on Unix/Windows differences.
regex.c: Fix problems with rel-alloc compilation caused by previous patch.
emacs.c: Seg fault rather than abort on Cygwin, since gdb doesn't trap
aborts properly.
console-gtk-impl.h, console-gtk.h, console-msw.h, console-x-impl.h, console-x.h, dialog-gtk.c, dialog-x.c, event-msw.c, frame-gtk.c, frame-x.c, frameslots.h, glyphs-gtk.c, glyphs-x.c, gui-gtk.c, gui-x.c, inline.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, scrollbar-gtk.c, scrollbar-x.c, ui-gtk.c: Delete popup-data object. Delete menubar_data field from frames,
since its usage is frame-specific. Delete menubar-msw.h,
gui-x.h, gui-gtk.h. Clean up handling of lwlib callback data
GCPRO'ing and add missing GCPRO recomputation in widget code.
author | ben |
---|---|
date | Sun, 09 Mar 2003 02:27:46 +0000 |
parents | 3078fd1074e8 |
children |
rev | line source |
---|---|
448 | 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" | |
22 #include "diskfull.h" | |
23 | |
24 typedef BOOL (WINAPI * GDFS)(LPCTSTR, PULARGE_INTEGER, PULARGE_INTEGER, | |
25 PULARGE_INTEGER); | |
26 | |
27 int | |
28 diskfull (char *path) | |
29 { | |
30 GDFS gdfs = 0; | |
31 | |
32 HINSTANCE k = LoadLibrary ("KERNEL32.DLL"); | |
33 if (k) | |
34 { | |
35 gdfs = (GDFS) GetProcAddress (k, "GetDiskFreeSpaceExA"); | |
36 | |
37 if (gdfs) | |
38 { | |
39 ULARGE_INTEGER avail, total, free; | |
40 if (gdfs (path, &avail, &total, &free)) | |
41 { | |
42 int perc = avail.QuadPart * 100 / total.QuadPart; | |
43 return 100-perc; | |
44 } | |
45 } | |
46 } | |
47 | |
48 char root[4]; | |
49 if (path[1] != ':') | |
50 return 0; | |
51 | |
52 root[0] = path[0]; | |
53 root[1] = ':'; | |
54 root[2] = '\\'; | |
55 root[3] = 0; | |
56 | |
57 DWORD junk, free_clusters, total_clusters; | |
58 | |
59 if (GetDiskFreeSpace (root, &junk, &junk, &free_clusters, &total_clusters)) | |
60 { | |
61 int perc = free_clusters * 100 / total_clusters; | |
62 return 100-perc; | |
63 } | |
64 | |
65 return 0; | |
66 } |