From f8882839103442787c49b8021cfd8ae2784211ad Mon Sep 17 00:00:00 2001 From: Rémy Oudompheng Date: Tue, 5 Apr 2011 01:37:09 +0200 Subject: diskspace: add the actually used statfs type in ifdefs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Dan McGee --- acinclude.m4 | 7 +++++++ lib/libalpm/diskspace.c | 4 ++-- 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 -- cgit v1.2.3-55-g3dc8