[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-4958-g3b12ab7
Derrell Lipman
derrell at samba.org
Sat Feb 14 21:12:28 GMT 2009
The branch, v3-3-test has been updated
via 3b12ab74252c850348c2d15adf930aa01e0652ff (commit)
from 3b7e35a54f1aa7d31df60b0264cc171cf5d97954 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
- Log -----------------------------------------------------------------
commit 3b12ab74252c850348c2d15adf930aa01e0652ff
Author: Derrell Lipman <derrell.lipman at unwireduniverse.com>
Date: Sat Feb 14 16:11:50 2009 -0500
It seems some systems use f_flags instead of f_flag. Use the appropriate one.
-----------------------------------------------------------------------
Summary of changes:
source/configure.in | 18 ++++++++++++++++++
source/libsmb/libsmb_stat.c | 24 ++++++++++++++++++++----
2 files changed, 38 insertions(+), 4 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/configure.in b/source/configure.in
index c518921..cfb97b5 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -5047,6 +5047,24 @@ if test x"$samba_cv_frsize" = x"yes"; then
AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
fi
+# Some systems use f_flag in struct statvfs while others use f_flags
+AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
+ AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
+ samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
+if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
+ AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
+fi
+
+AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
+ AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
+ samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
+if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
+ AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
+fi
+
+
if test $space = no; then
# DEC Alpha running OSF/1
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
diff --git a/source/libsmb/libsmb_stat.c b/source/libsmb/libsmb_stat.c
index 38a4441..b09afac 100644
--- a/source/libsmb/libsmb_stat.c
+++ b/source/libsmb/libsmb_stat.c
@@ -363,6 +363,7 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
SMBCFILE *file,
struct statvfs *st)
{
+ unsigned long flags = 0;
uint32 fs_attrs = 0;
struct cli_state *cli = file->srv->cli;
@@ -398,15 +399,19 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
/* ... then provide it */
st->f_bsize =
(unsigned long) bytes_per_sector;
+#if HAVE_FRSIZE
st->f_frsize =
(unsigned long) sectors_per_allocation_unit;
+#else
+#warning "f_frsize field is not available"
+#endif
st->f_blocks =
(fsblkcnt_t) total_allocation_units;
st->f_bfree =
(fsblkcnt_t) actual_allocation_units;
}
- st->f_flag |= SMBC_VFS_FEATURE_NO_UNIXCIFS;
+ flags |= SMBC_VFS_FEATURE_NO_UNIXCIFS;
} else {
uint32 optimal_transfer_size;
uint32 block_size;
@@ -441,8 +446,13 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
(fsfilcnt_t) total_file_nodes;
st->f_ffree =
(fsfilcnt_t) free_file_nodes;
+#if HAVE_FSID_INT
st->f_fsid =
(unsigned long) fs_identifier;
+#else
+#warning "f_fsid is not an integer type so is not available"
+ /* We don't know the type, so don't try to set it */
+#endif
}
}
@@ -455,18 +465,24 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
* user-specified case sensitivity setting.
*/
if (! smbc_getOptionCaseSensitive(context)) {
- st->f_flag |= SMBC_VFS_FEATURE_CASE_INSENSITIVE;
+ flags |= SMBC_VFS_FEATURE_CASE_INSENSITIVE;
}
} else {
if (! (fs_attrs & FILE_CASE_SENSITIVE_SEARCH)) {
- st->f_flag |= SMBC_VFS_FEATURE_CASE_INSENSITIVE;
+ flags |= SMBC_VFS_FEATURE_CASE_INSENSITIVE;
}
}
/* See if DFS is supported */
if ((cli->capabilities & CAP_DFS) && cli->dfsroot) {
- st->f_flag |= SMBC_VFS_FEATURE_DFS;
+ flags |= SMBC_VFS_FEATURE_DFS;
}
+#if HAVE_STATVFS_F_FLAG
+ st->f_flag = flags;
+#elif HAVE_STATVFS_F_FLAGS
+ st->f_flags = flags;
+#endif
+
return 0;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list