summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Oudompheng <remyoudompheng@gmail.com>2011-04-05 01:37:09 +0200
committerDan McGee <dan@archlinux.org>2011-04-06 15:56:21 -0500
commitf8882839103442787c49b8021cfd8ae2784211ad (patch)
treec325dfa7f6806aeb6a78451da0fa62e9b602dd8c
parent272e9b355b17ab663ac4a0d9515d381dcf6f03ec (diff)
downloadpacman-f8882839103442787c49b8021cfd8ae2784211ad.tar.xz
diskspace: add the actually used statfs type in ifdefs
Some systems, like FreeBSD might define both statfs and statvfs: however if statvfs exists whereas getmntinfo() uses a statfs struct, the current ifdefs would select the wrong line of code. Signed-off-by: Rémy Oudompheng <remy@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--acinclude.m47
-rw-r--r--lib/libalpm/diskspace.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 7309d731..df4f83a4 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -123,6 +123,13 @@ extern int getmntinfo (struct statfs **, int);
)
AC_DEFINE_UNQUOTED(FSSTATSTYPE, [$fs_stats_cv_type],
[Defined as the filesystem stats type ('statvfs' or 'statfs')])
+ if test $ac_cv_func_getmntinfo = yes; then
+ if test "$fs_stats_cv_type" = "struct statvfs"; then
+ AC_DEFINE([HAVE_GETMNTINFO_STATVFS], 1, [Define if getmntinfo() uses statvfs.])
+ else
+ AC_DEFINE([HAVE_GETMNTINFO_STATFS], 1, [Define if getmntinfo() uses statfs.])
+ fi
+ fi
])
dnl Checks for PATH_MAX and defines it if not present
diff --git a/lib/libalpm/diskspace.c b/lib/libalpm/diskspace.c
index 281173a2..066107d7 100644
--- a/lib/libalpm/diskspace.c
+++ b/lib/libalpm/diskspace.c
@@ -112,9 +112,9 @@ static alpm_list_t *mount_point_list(void)
mp->mount_dir = strdup(fsp->f_mntonname);
mp->mount_dir_len = strlen(mp->mount_dir);
memcpy(&(mp->fsp), fsp, sizeof(FSSTATSTYPE));
-#if defined HAVE_STRUCT_STATVFS_F_FLAG
+#if defined(HAVE_GETMNTINFO_STATVFS) && defined(HAVE_STRUCT_STATVFS_F_FLAG)
mp->read_only = fsp->f_flag & ST_RDONLY;
-#elif defined HAVE_STRUCT_STATFS_F_FLAGS
+#elif defined(HAVE_GETMNTINFO_STATFS) && defined(HAVE_STRUCT_STATFS_F_FLAGS)
mp->read_only = fsp->f_flags & MNT_RDONLY;
#endif