ports/net/samba3/files/patch-smbd_statvfs.c
Sergey Matveychuk 982ae47319 - Update to 3.0.21a
Common bugs fixed in 3.0.21 include:

  o Missing groups in a user's token when logging in via kerberos
  o Incompatibilities with newer MS Windows hotfixes and
    embedded OS platforms
  o Portability and crash bugs.
  o Performance issues in winbindd.

New features introduced in Samba 3.0.21 include:

  o Complete NTLMv2 support by consolidating authentication
    mechanism used at the CIFS and RPC layers.
  o The capability to manage Unix services using the Win32
    Service Control API.
  o The capability to view external Unix log files via the
    Microsoft Event Viewer.
  o New libmsrpc share library for application developers.
  o Rewrite of CIFS oplock implementation.
  o Performance Counter external daemon.
  o Winbindd auto-detection query methods when communicating with
    a domain controller.
  o The ability to enumerate long share names in libsmbclient
    applications.

PR:		ports/91528
Submitted by:	Timur I. Bakeyev (maintainer)
2006-01-09 16:45:33 +00:00

47 lines
1.4 KiB
C

--- smbd/statvfs.c.orig Wed Nov 9 19:28:55 2005
+++ smbd/statvfs.c Thu Jan 5 04:26:54 2006
@@ -3,6 +3,7 @@
VFS API's statvfs abstraction
Copyright (C) Alexander Bokovoy 2005
Copyright (C) Steve French 2005
+ Copyright (C) Timur I. Bakeyev 2005
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -41,6 +42,27 @@
}
return result;
}
+#elif defined(FREEBSD)
+static int bsd_statvfs(const char *path, vfs_statvfs_struct *statbuf)
+{
+ struct statfs statfs_buf;
+ int result;
+
+ result = statfs(path, &statfs_buf);
+
+ if (!result) {
+ statbuf->OptimalTransferSize = statfs_buf.f_iosize;
+ statbuf->BlockSize = statfs_buf.f_bsize;
+ statbuf->TotalBlocks = statfs_buf.f_blocks;
+ statbuf->BlocksAvail = statfs_buf.f_bfree;
+ statbuf->UserBlocksAvail = statfs_buf.f_bavail;
+ statbuf->TotalFileNodes = statfs_buf.f_files;
+ statbuf->FreeFileNodes = statfs_buf.f_ffree;
+ statbuf->FsIdentifier =
+ (((SMB_BIG_UINT)statfs_buf.f_fsid.val[0]<<32) & 0xffffffff00000000LL) | (SMB_BIG_UINT)statfs_buf.f_fsid.val[1];
+ }
+ return result;
+}
#endif
/*
@@ -53,6 +75,8 @@
{
#if defined(LINUX)
return linux_statvfs(path, statbuf);
+#elif defined(FREEBSD)
+ return bsd_statvfs(path, statbuf);
#else
/* BB change this to return invalid level */
#ifdef EOPNOTSUPP