[Box Backup-dev] COMMIT r486 - in box/trunk: bin/bbackupd infrastructure/m4
boxbackup-dev at fluffy.co.uk
boxbackup-dev at fluffy.co.uk
Thu Feb 23 01:56:04 GMT 2006
Author: martin
Date: 2006-02-23 01:56:02 +0000 (Thu, 23 Feb 2006)
New Revision: 486
Modified:
box/trunk/bin/bbackupd/BackupDaemon.cpp
box/trunk/infrastructure/m4/ax_check_mount_point.m4
Log:
Patch from Per Thomsen to detect statvfs. This is used by recent versions of NetBSD in preference to statfs.
Modified: box/trunk/bin/bbackupd/BackupDaemon.cpp
===================================================================
--- box/trunk/bin/bbackupd/BackupDaemon.cpp 2006-02-22 23:37:11 UTC (rev 485)
+++ box/trunk/bin/bbackupd/BackupDaemon.cpp 2006-02-23 01:56:02 UTC (rev 486)
@@ -1170,7 +1170,7 @@
-#ifndef HAVE_STRUCT_STATFS_F_MNTONNAME
+#if !defined(HAVE_STRUCT_STATFS_F_MNTONNAME) && !defined(HAVE_STRUCT_STATVFS_F_NMTONNAME)
// string comparison ordering for when mount points are handled
// by code, rather than the OS.
typedef struct
@@ -1234,7 +1234,7 @@
int numIDMaps = 0;
#ifdef HAVE_MOUNTS
-#ifndef HAVE_STRUCT_STATFS_F_MNTONNAME
+#if !defined(HAVE_STRUCT_STATFS_F_MNTONNAME) && !defined(HAVE_STRUCT_STATVFS_F_MNTONNAME)
// Linux and others can't tell you where a directory is mounted. So we
// have to read the mount entries from /etc/mtab! Bizarre that the OS
// itself can't tell you, but there you go.
@@ -1308,7 +1308,7 @@
ASSERT(*i == "/");
}
#endif // n NDEBUG
-#endif // n HAVE_STRUCT_STATFS_F_MNTONNAME
+#endif // n HAVE_STRUCT_STATFS_F_MNTONNAME || n HAVE_STRUCT_STATVFS_F_MNTONNAME
#endif // HAVE_MOUNTS
// Then... go through each of the entries in the configuration,
@@ -1332,11 +1332,16 @@
// Do a fsstat on the pathname to find out which mount it's on
{
-#if defined HAVE_STRUCT_STATFS_F_MNTONNAME || defined WIN32
+#if defined HAVE_STRUCT_STATFS_F_MNTONNAME || defined HAVE_STRUCT_STATVFS_F_MNTONNAME || defined WIN32
// BSD style statfs -- includes mount point, which is nice.
+#ifdef HAVE_STRUCT_STATVFS_F_MNTONNAME
+ struct statvfs s;
+ if(::statvfs(ploc->mPath.c_str(), &s) != 0)
+#else // HAVE_STRUCT_STATVFS_F_MNTONNAME
struct statfs s;
if(::statfs(ploc->mPath.c_str(), &s) != 0)
+#endif // HAVE_STRUCT_STATVFS_F_MNTONNAME
{
THROW_EXCEPTION(CommonException, OSFileError)
}
Modified: box/trunk/infrastructure/m4/ax_check_mount_point.m4
===================================================================
--- box/trunk/infrastructure/m4/ax_check_mount_point.m4 2006-02-22 23:37:11 UTC (rev 485)
+++ box/trunk/infrastructure/m4/ax_check_mount_point.m4 2006-02-23 01:56:02 UTC (rev 486)
@@ -10,6 +10,7 @@
dnl HAVE_STRUCT_MNTENT_MNT_DIR
dnl HAVE_STRUCT_MNTTAB_MNT_MOUNTP
dnl HAVE_STRUCT_STATFS_F_MNTONNAME
+dnl HAVE_STRUCT_STATVFS_F_MNTONNAME
dnl Also ACTION-IF-TRUE and ACTION-IF-FALSE are run as appropriate
dnl
dnl @category C
@@ -33,6 +34,13 @@
#endif
#include <sys/mount.h>
]])
+ # NetBSD
+ AC_CHECK_MEMBERS([struct statvfs.f_mntonname],,, [[
+ #ifdef HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+ #include <sys/mount.h>
+ ]])
# Linux
AC_CHECK_MEMBERS([struct mntent.mnt_dir],,, [[#include <mntent.h>]])
# Solaris
@@ -41,6 +49,7 @@
#include <sys/mnttab.h>
]])
if test "x$ac_cv_member_struct_statfs_f_mntonname" = "xyes" || \
+ test "x$ac_cv_member_struct_statvfs_f_mntonname" = "xyes" || \
test "x$ac_cv_member_struct_mntent_mnt_dir" = "xyes" || \
test "x$ac_cv_member_struct_mnttab_mnt_mountp" = "xyes"
then
More information about the Boxbackup-dev
mailing list