diff options
Diffstat (limited to 'lib/fsusage.c')
-rw-r--r-- | lib/fsusage.c | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/lib/fsusage.c b/lib/fsusage.c index d9260293..b1377907 100644 --- a/lib/fsusage.c +++ b/lib/fsusage.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* fsusage.c -- return space usage of mounted filesystems | 1 | /* fsusage.c -- return space usage of mounted file systems |
2 | 2 | ||
3 | Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003 Free | 3 | Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003, 2004, 2005 |
4 | Software Foundation, Inc. | 4 | Free Software Foundation, Inc. |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify | 6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by | 7 | it under the terms of the GNU General Public License as published by |
@@ -15,19 +15,19 @@ | |||
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License | 16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software Foundation, | 17 | along with this program; if not, write to the Free Software Foundation, |
18 | Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | 18 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
19 | 19 | ||
20 | #if HAVE_CONFIG_H | 20 | #ifdef HAVE_CONFIG_H |
21 | # include <config.h> | 21 | # include <config.h> |
22 | #endif | 22 | #endif |
23 | 23 | ||
24 | #if HAVE_INTTYPES_H | 24 | #if HAVE_INTTYPES_H |
25 | # include <inttypes.h> | 25 | # include <inttypes.h> |
26 | #else | ||
27 | # if HAVE_STDINT_H | ||
28 | # include <stdint.h> | ||
29 | # endif | ||
30 | #endif | 26 | #endif |
27 | #if HAVE_STDINT_H | ||
28 | # include <stdint.h> | ||
29 | #endif | ||
30 | #include <unistd.h> | ||
31 | #ifndef UINTMAX_MAX | 31 | #ifndef UINTMAX_MAX |
32 | # define UINTMAX_MAX ((uintmax_t) -1) | 32 | # define UINTMAX_MAX ((uintmax_t) -1) |
33 | #endif | 33 | #endif |
@@ -58,9 +58,7 @@ | |||
58 | # include <sys/filsys.h> /* SVR2 */ | 58 | # include <sys/filsys.h> /* SVR2 */ |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | #if HAVE_FCNTL_H | 61 | #include <fcntl.h> |
62 | # include <fcntl.h> | ||
63 | #endif | ||
64 | 62 | ||
65 | #if HAVE_SYS_STATFS_H | 63 | #if HAVE_SYS_STATFS_H |
66 | # include <sys/statfs.h> | 64 | # include <sys/statfs.h> |
@@ -72,7 +70,6 @@ | |||
72 | 70 | ||
73 | #if HAVE_SYS_STATVFS_H /* SVR4 */ | 71 | #if HAVE_SYS_STATVFS_H /* SVR4 */ |
74 | # include <sys/statvfs.h> | 72 | # include <sys/statvfs.h> |
75 | int statvfs (); | ||
76 | #endif | 73 | #endif |
77 | 74 | ||
78 | #include "full-read.h" | 75 | #include "full-read.h" |
@@ -102,20 +99,20 @@ int statvfs (); | |||
102 | #define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1)) | 99 | #define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1)) |
103 | 100 | ||
104 | /* Fill in the fields of FSP with information about space usage for | 101 | /* Fill in the fields of FSP with information about space usage for |
105 | the filesystem on which PATH resides. | 102 | the file system on which FILE resides. |
106 | DISK is the device on which PATH is mounted, for space-getting | 103 | DISK is the device on which FILE is mounted, for space-getting |
107 | methods that need to know it. | 104 | methods that need to know it. |
108 | Return 0 if successful, -1 if not. When returning -1, ensure that | 105 | Return 0 if successful, -1 if not. When returning -1, ensure that |
109 | ERRNO is either a system error value, or zero if DISK is NULL | 106 | ERRNO is either a system error value, or zero if DISK is NULL |
110 | on a system that requires a non-NULL value. */ | 107 | on a system that requires a non-NULL value. */ |
111 | int | 108 | int |
112 | get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | 109 | get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp) |
113 | { | 110 | { |
114 | #ifdef STAT_STATFS3_OSF1 | 111 | #ifdef STAT_STATFS3_OSF1 |
115 | 112 | ||
116 | struct statfs fsd; | 113 | struct statfs fsd; |
117 | 114 | ||
118 | if (statfs (path, &fsd, sizeof (struct statfs)) != 0) | 115 | if (statfs (file, &fsd, sizeof (struct statfs)) != 0) |
119 | return -1; | 116 | return -1; |
120 | 117 | ||
121 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize); | 118 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize); |
@@ -126,7 +123,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
126 | 123 | ||
127 | struct fs_data fsd; | 124 | struct fs_data fsd; |
128 | 125 | ||
129 | if (statfs (path, &fsd) != 1) | 126 | if (statfs (file, &fsd) != 1) |
130 | return -1; | 127 | return -1; |
131 | 128 | ||
132 | fsp->fsu_blocksize = 1024; | 129 | fsp->fsu_blocksize = 1024; |
@@ -180,7 +177,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
180 | 177 | ||
181 | struct statfs fsd; | 178 | struct statfs fsd; |
182 | 179 | ||
183 | if (statfs (path, &fsd) < 0) | 180 | if (statfs (file, &fsd) < 0) |
184 | return -1; | 181 | return -1; |
185 | 182 | ||
186 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize); | 183 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize); |
@@ -206,7 +203,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
206 | 203 | ||
207 | struct statfs fsd; | 204 | struct statfs fsd; |
208 | 205 | ||
209 | if (statfs (path, &fsd) < 0) | 206 | if (statfs (file, &fsd) < 0) |
210 | return -1; | 207 | return -1; |
211 | 208 | ||
212 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize); | 209 | fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize); |
@@ -221,7 +218,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
221 | 218 | ||
222 | struct statfs fsd; | 219 | struct statfs fsd; |
223 | 220 | ||
224 | if (statfs (path, &fsd, sizeof fsd, 0) < 0) | 221 | if (statfs (file, &fsd, sizeof fsd, 0) < 0) |
225 | return -1; | 222 | return -1; |
226 | 223 | ||
227 | /* Empirically, the block counts on most SVR3 and SVR3-derived | 224 | /* Empirically, the block counts on most SVR3 and SVR3-derived |
@@ -239,7 +236,7 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
239 | 236 | ||
240 | struct statvfs fsd; | 237 | struct statvfs fsd; |
241 | 238 | ||
242 | if (statvfs (path, &fsd) < 0) | 239 | if (statvfs (file, &fsd) < 0) |
243 | return -1; | 240 | return -1; |
244 | 241 | ||
245 | /* f_frsize isn't guaranteed to be supported. */ | 242 | /* f_frsize isn't guaranteed to be supported. */ |
@@ -268,12 +265,12 @@ get_fs_usage (const char *path, const char *disk, struct fs_usage *fsp) | |||
268 | /* AIX PS/2 does not supply statfs. */ | 265 | /* AIX PS/2 does not supply statfs. */ |
269 | 266 | ||
270 | int | 267 | int |
271 | statfs (char *path, struct statfs *fsb) | 268 | statfs (char *file, struct statfs *fsb) |
272 | { | 269 | { |
273 | struct stat stats; | 270 | struct stat stats; |
274 | struct dustat fsd; | 271 | struct dustat fsd; |
275 | 272 | ||
276 | if (stat (path, &stats)) | 273 | if (stat (file, &stats) != 0) |
277 | return -1; | 274 | return -1; |
278 | if (dustat (stats.st_dev, 0, &fsd, sizeof (fsd))) | 275 | if (dustat (stats.st_dev, 0, &fsd, sizeof (fsd))) |
279 | return -1; | 276 | return -1; |