projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netdb: Add support for GNULIB_POSIXCHECK.
[gnulib.git]
/
lib
/
fsusage.c
diff --git
a/lib/fsusage.c
b/lib/fsusage.c
index
0bb6224
..
10db467
100644
(file)
--- a/
lib/fsusage.c
+++ b/
lib/fsusage.c
@@
-1,12
+1,12
@@
/* fsusage.c -- return space usage of mounted file systems
/* fsusage.c -- return space usage of mounted file systems
- Copyright (C) 1991
, 1992, 1996, 1998, 1999, 2002, 2003, 2004, 2005, 2006
- F
ree Software F
oundation, Inc.
+ Copyright (C) 1991
-1992, 1996, 1998-1999, 2002-2006, 2009-2010 Free Software
+ Foundation, Inc.
- This program is free software
;
you can redistribute it and/or modify
+ This program is free software
:
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2, or (at your option)
- any later version.
+ the Free Software Foundation; either version
3 of the License, or
+
(at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-14,19
+14,16
@@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
#include "fsusage.h"
#include <limits.h>
#include <sys/types.h>
#include "fsusage.h"
#include <limits.h>
#include <sys/types.h>
-#if STAT_STATVFS /* POSIX 1003.1-2001 (and later) with XSI */
+#if STAT_STATVFS
/* POSIX 1003.1-2001 (and later) with XSI */
# include <sys/statvfs.h>
#else
/* Don't include backward-compatibility files unless they're needed.
# include <sys/statvfs.h>
#else
/* Don't include backward-compatibility files unless they're needed.
@@
-43,24
+40,25
@@
# if HAVE_SYS_VFS_H
# include <sys/vfs.h>
# endif
# if HAVE_SYS_VFS_H
# include <sys/vfs.h>
# endif
-# if HAVE_SYS_FS_S5PARAM_H /* Fujitsu UXP/V */
+# if HAVE_SYS_FS_S5PARAM_H
/* Fujitsu UXP/V */
# include <sys/fs/s5param.h>
# endif
# if defined HAVE_SYS_FILSYS_H && !defined _CRAY
# include <sys/fs/s5param.h>
# endif
# if defined HAVE_SYS_FILSYS_H && !defined _CRAY
-# include <sys/filsys.h> /* SVR2 */
+# include <sys/filsys.h>
/* SVR2 */
# endif
# if HAVE_SYS_STATFS_H
# include <sys/statfs.h>
# endif
# endif
# if HAVE_SYS_STATFS_H
# include <sys/statfs.h>
# endif
-# if HAVE_DUSTAT_H /* AIX PS/2 */
+# if HAVE_DUSTAT_H
/* AIX PS/2 */
# include <sys/dustat.h>
# endif
# include "full-read.h"
#endif
# include <sys/dustat.h>
# endif
# include "full-read.h"
#endif
-#ifndef UINTMAX_MAX
-# define UINTMAX_MAX ((uintmax_t) -1)
-#endif
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
/* Many space usage primitives use all 1 bits to denote a value that is
not applicable or unknown. Propagate this information by returning
/* Many space usage primitives use all 1 bits to denote a value that is
not applicable or unknown. Propagate this information by returning
@@
-69,13
+67,13
@@
#define PROPAGATE_ALL_ONES(x) \
((sizeof (x) < sizeof (uintmax_t) \
&& (~ (x) == (sizeof (x) < sizeof (int) \
#define PROPAGATE_ALL_ONES(x) \
((sizeof (x) < sizeof (uintmax_t) \
&& (~ (x) == (sizeof (x) < sizeof (int) \
- ? - (1 << (sizeof (x) * CHAR_BIT)) \
- : 0))) \
- ? UINTMAX_MAX : (x))
+
? - (1 << (sizeof (x) * CHAR_BIT)) \
+
: 0))) \
+ ? UINTMAX_MAX : (
uintmax_t) (
x))
/* Extract the top bit of X as an uintmax_t value. */
#define EXTRACT_TOP_BIT(x) ((x) \
/* Extract the top bit of X as an uintmax_t value. */
#define EXTRACT_TOP_BIT(x) ((x) \
- & ((uintmax_t) 1 << (sizeof (x) * CHAR_BIT - 1)))
+
& ((uintmax_t) 1 << (sizeof (x) * CHAR_BIT - 1)))
/* If a value is negative, many space usage primitives store it into an
integer variable by assignment, even if the variable's type is unsigned.
/* If a value is negative, many space usage primitives store it into an
integer variable by assignment, even if the variable's type is unsigned.
@@
-96,7
+94,7
@@
int
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
{
int
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
{
-#if defined STAT_STATVFS /* POSIX */
+#if defined STAT_STATVFS
/* POSIX */
struct statvfs fsd;
struct statvfs fsd;
@@
-105,10
+103,10
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
/* f_frsize isn't guaranteed to be supported. */
fsp->fsu_blocksize = (fsd.f_frsize
/* f_frsize isn't guaranteed to be supported. */
fsp->fsu_blocksize = (fsd.f_frsize
- ? PROPAGATE_ALL_ONES (fsd.f_frsize)
- : PROPAGATE_ALL_ONES (fsd.f_bsize));
+
? PROPAGATE_ALL_ONES (fsd.f_frsize)
+
: PROPAGATE_ALL_ONES (fsd.f_bsize));
-#elif defined STAT_STATFS2_FS_DATA /* Ultrix */
+#elif defined STAT_STATFS2_FS_DATA
/* Ultrix */
struct fs_data fsd;
struct fs_data fsd;
@@
-123,7
+121,7
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.fd_req.gtot);
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.fd_req.gfree);
fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.fd_req.gtot);
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.fd_req.gfree);
-#elif defined STAT_READ_FILSYS /* SVR2 */
+#elif defined STAT_READ_FILSYS
/* SVR2 */
# ifndef SUPERBOFF
# define SUPERBOFF (SUPERB * 512)
# endif
# ifndef SUPERBOFF
# define SUPERBOFF (SUPERB * 512)
# endif
@@
-154,8
+152,8
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
fsp->fsu_files = (fsd.s_isize == -1
fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
fsp->fsu_files = (fsd.s_isize == -1
- ? UINTMAX_MAX
- : (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
+
? UINTMAX_MAX
+
: (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
#elif defined STAT_STATFS3_OSF1
fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
#elif defined STAT_STATFS3_OSF1
@@
-167,7
+165,7
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
-#elif defined STAT_STATFS2_BSIZE /* 4.3BSD, SunOS 4, HP-UX, AIX */
+#elif defined STAT_STATFS2_BSIZE
/* 4.3BSD, SunOS 4, HP-UX, AIX */
struct statfs fsd;
struct statfs fsd;
@@
-191,7
+189,7
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
}
# endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
}
# endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
-#elif defined STAT_STATFS2_FSIZE /* 4.4BSD */
+#elif defined STAT_STATFS2_FSIZE
/* 4.4BSD */
struct statfs fsd;
struct statfs fsd;
@@
-200,7
+198,7
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
-#elif defined STAT_STATFS4 /* SVR3, Dynix, Irix, AIX */
+#elif defined STAT_STATFS4
/* SVR3, Dynix, Irix, AIX */
# if !_AIX && !defined _SEQUENT_ && !defined DOLPHIN
# define f_bavail f_bfree
# if !_AIX && !defined _SEQUENT_ && !defined DOLPHIN
# define f_bavail f_bfree
@@
-234,6
+232,7
@@
get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
#endif
#endif
+ (void) disk; /* avoid argument-unused warning */
return 0;
}
return 0;
}