summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Jacke <bj@sernet.de>2012-06-28 21:17:28 +0200
committerBjoern Jacke <bj@sernet.de>2012-06-28 23:07:23 +0200
commit7560b1cea6d2c0b2962f5802f724525fc0ec9bf9 (patch)
treedeee65e10d44536627ecdf14c701ebd87d0e039b
parentf6ac6b8f3c40c99e7bc43d88ec5a2d95ecfc97a4 (diff)
downloadsamba-7560b1cea6d2c0b2962f5802f724525fc0ec9bf9.tar.gz
s3: fine tune and clean up statvfs tests
This should also fix the build on Tru64. Tru64 has a POSIX compliant statvfs() function while most *BSD systems ignore POSIX. Autobuild-User(master): Björn Jacke <bj@sernet.de> Autobuild-Date(master): Thu Jun 28 23:07:23 CEST 2012 on sn-devel-104
-rw-r--r--source3/configure.in13
-rw-r--r--source3/smbd/statvfs.c4
2 files changed, 8 insertions, 9 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 6e324a16a02..5df54cfff9d 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -6261,11 +6261,11 @@ fi
CFLAGS=$CFLAGS_SAVE
-# Checks for *BSD bsd_statvfs() function
+# Checks for POSIX ignorant BSD style statvfs() function
# Start
AC_CHECK_HEADERS(sys/param.h sys/mount.h)
-AC_MSG_CHECKING([bsd_statvfs: checking for statfs() and struct statfs.bsize])
+AC_MSG_CHECKING([checking for posix ignorant *bsd style statfs struct])
AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
AC_TRY_RUN([
#ifdef HAVE_SYS_PARAM_H
@@ -6278,7 +6278,8 @@ AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
{
struct statfs fsd;
fsd.f_bsize = 0;
- exit (statfs (".", &fsd));
+ fsd.f_iosize = 0;
+ return (statfs (".", &fsd));
}],
bsdstatvfs_cv_statfs=yes,
bsdstatvfs_cv_statfs=no,
@@ -6286,11 +6287,9 @@ AC_CACHE_VAL(bsdstatvfs_cv_statfs,[
AC_MSG_RESULT($bsdstatvfs_cv_statfs)
if test $bsdstatvfs_cv_statfs = yes; then
- AC_DEFINE(BSD_STATVFS_BSIZE,1,[Whether statfs exists and struct statfs has bsize property])
+ AC_DEFINE(BSD_STYLE_STATVFS,1,[Whether statfs struct is *bsd style])
fi
-
-# End
-# Checks for *BSD sys_statvfs() function
+# End of checks POSIX ignorant BSD style statvfs() function
# Checks for the vfs_fileid module
# Start
diff --git a/source3/smbd/statvfs.c b/source3/smbd/statvfs.c
index 5cefe2d4c23..918867f7aad 100644
--- a/source3/smbd/statvfs.c
+++ b/source3/smbd/statvfs.c
@@ -97,7 +97,7 @@ static int darwin_statvfs(const char *path, vfs_statvfs_struct *statbuf)
return 0;
}
-#elif defined(BSD) && defined(BSD_STATVFS_BSIZE)
+#elif defined(BSD_STYLE_STATVFS)
static int bsd_statvfs(const char *path, vfs_statvfs_struct *statbuf)
{
struct statfs statfs_buf;
@@ -177,7 +177,7 @@ int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf)
{
#if defined(DARWINOS)
return darwin_statvfs(path, statbuf);
-#elif defined(BSD) && defined(BSD_STATVFS_BSIZE)
+#elif defined(BSD_STYLE_STATVFS)
return bsd_statvfs(path, statbuf);
#elif defined(STAT_STATVFS) && defined(HAVE_FSID_INT)
return linux_statvfs(path, statbuf);