X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Ffsusage.c;h=7f7a4a7cd8b90bb1d4ba4bee80d3bc3591d81285;hb=8cb2dc320be13ef5873d8dce5706a3fabcf8de5a;hp=c9ed26c878c23618f565367c8ba70a8bf85ffc1a;hpb=3773b1ccbcdc3c84226a0321bcd2891325e1c329;p=gnulib.git diff --git a/lib/fsusage.c b/lib/fsusage.c index c9ed26c87..7f7a4a7cd 100644 --- a/lib/fsusage.c +++ b/lib/fsusage.c @@ -15,12 +15,23 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifdef HAVE_CONFIG_H +#if defined (CONFIG_BROKETS) +/* We use instead of "config.h" so that a compilation + using -I. -I will use ./config.h rather than /config.h + (which it would do because it found this file in ). */ +#include +#else +#include "config.h" +#endif +#endif + #include #include "fsusage.h" int statfs (); -#if defined (STATFS_OSF1) /* DEC Alpha running OSF/1 */ +#if defined (STAT_STATFS3_OSF1) /* DEC Alpha running OSF/1 */ # include #endif @@ -58,7 +69,7 @@ int statvfs (); #endif /* Return the number of TOSIZE-byte blocks used by - BLOCKS FROMSIZE-byte blocks, rounding up. */ + BLOCKS FROMSIZE-byte blocks, rounding away from zero. */ static long adjust_blocks (blocks, fromsize, tosize) @@ -70,7 +81,7 @@ adjust_blocks (blocks, fromsize, tosize) else if (fromsize > tosize) /* E.g., from 2048 to 512. */ return blocks * (fromsize / tosize); else /* E.g., from 256 to 512. */ - return (blocks + 1) / (tosize / fromsize); + return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize); } /* Fill in the fields of FSP with information about space usage for @@ -84,13 +95,13 @@ get_fs_usage (path, disk, fsp) char *path, *disk; struct fs_usage *fsp; { -#if defined (STATFS_OSF1) +#if defined (STAT_STATFS3_OSF1) struct statfs fsd; if (statfs (path, &fsd, sizeof (struct statfs)) != 0) return (-1); #define convert_blocks(b) adjust_blocks ((b),fsd.f_fsize, 512) -#endif /* STATFS_OSF1 */ +#endif /* STAT_STATFS3_OSF1 */ #ifdef STAT_STATFS2_FS_DATA /* Ultrix. */ struct fs_data fsd;