|
|
65f3b0e |
--- mc-4.6.1a/src/mountlist.c.64bit 2005-02-08 23:33:52.000000000 +0100
|
|
|
65f3b0e |
+++ mc-4.6.1a/src/mountlist.c 2005-05-10 17:09:24.122853504 +0200
|
|
|
65f3b0e |
@@ -131,11 +131,19 @@ struct mount_entry
|
|
|
dd50618 |
|
|
|
dd50618 |
struct fs_usage
|
|
|
dd50618 |
{
|
|
|
dd50618 |
+#ifndef HAVE_SYS_STATVFS_H
|
|
|
dd50618 |
long fsu_blocks; /* Total blocks. */
|
|
|
dd50618 |
long fsu_bfree; /* Free blocks available to superuser. */
|
|
|
dd50618 |
long fsu_bavail; /* Free blocks available to non-superuser. */
|
|
|
dd50618 |
long fsu_files; /* Total file nodes. */
|
|
|
dd50618 |
long fsu_ffree; /* Free file nodes. */
|
|
|
dd50618 |
+#else /* We have sys/statvfs.h, use proper data types when _FILE_OFFSET_BITS=64 */
|
|
|
dd50618 |
+ fsblkcnt_t fsu_blocks;
|
|
|
dd50618 |
+ fsblkcnt_t fsu_bfree;
|
|
|
dd50618 |
+ fsblkcnt_t fsu_bavail;
|
|
|
dd50618 |
+ fsblkcnt_t fsu_files;
|
|
|
dd50618 |
+ fsblkcnt_t fsu_ffree;
|
|
|
dd50618 |
+#endif /* HAVE_SYS_STATVFS_H */
|
|
|
dd50618 |
};
|
|
|
dd50618 |
|
|
|
dd50618 |
static int get_fs_usage (char *path, struct fs_usage *fsp);
|
|
|
65f3b0e |
@@ -665,6 +673,7 @@ my_statfs (struct my_statfs *myfs_stats,
|
|
|
dd50618 |
BLOCKS FROMSIZE-byte blocks, rounding away from zero.
|
|
|
dd50618 |
TOSIZE must be positive. Return -1 if FROMSIZE is not positive. */
|
|
|
dd50618 |
|
|
|
dd50618 |
+#if !defined(HAVE_SYS_STATFS_H) || !defined(STAT_STATVFS)
|
|
|
dd50618 |
static long
|
|
|
dd50618 |
fs_adjust_blocks (long blocks, int fromsize, int tosize)
|
|
|
dd50618 |
{
|
|
|
65f3b0e |
@@ -672,13 +681,21 @@ fs_adjust_blocks (long blocks, int froms
|
|
|
dd50618 |
abort ();
|
|
|
dd50618 |
if (fromsize <= 0)
|
|
|
dd50618 |
return -1;
|
|
|
dd50618 |
-
|
|
|
dd50618 |
+#else
|
|
|
dd50618 |
+static fsblkcnt_t
|
|
|
dd50618 |
+fs_adjust_blocks (fsblkcnt_t blocks, unsigned long fromsize, unsigned long tosize)
|
|
|
dd50618 |
+{
|
|
|
dd50618 |
+ if (!tosize)
|
|
|
dd50618 |
+ abort ();
|
|
|
dd50618 |
+ if (!fromsize)
|
|
|
dd50618 |
+ return -1;
|
|
|
dd50618 |
+#endif
|
|
|
dd50618 |
if (fromsize == tosize) /* E.g., from 512 to 512. */
|
|
|
dd50618 |
return blocks;
|
|
|
dd50618 |
else if (fromsize > tosize) /* E.g., from 2048 to 512. */
|
|
|
dd50618 |
return blocks * (fromsize / tosize);
|
|
|
dd50618 |
else /* E.g., from 256 to 512. */
|
|
|
dd50618 |
- return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
|
|
|
dd50618 |
+ return (blocks + 1) / (tosize / fromsize);
|
|
|
dd50618 |
}
|
|
|
dd50618 |
|
|
|
dd50618 |
#if defined(_AIX) && defined(_I386)
|