Introduction
Introduction Statistics Contact Development Disclaimer Help
Critical fixes for Samba 3.0 and 3.2. - susmb - mounting of SMB/CIFS shares via…
git clone git://git.codemadness.org/susmb
Log
Files
Refs
README
LICENSE
---
commit 4d264f7c2b0312f4c3b80ce77d957b3fac55ac24
parent a31e37f5b54869feccc5e2337d240a942221afe4
Author: Geoff Johnstone <[email protected]>
Date: Fri, 10 Apr 2009 20:22:31 +0100
Critical fixes for Samba 3.0 and 3.2.
Diffstat:
M Makefile.in | 6 +++---
M configure.ac | 2 +-
M samba30_compat.c | 8 +++++++-
M samba32_compat.c | 51 +++--------------------------…
M samba3x-compat.h | 11 +++++++++++
5 files changed, 27 insertions(+), 51 deletions(-)
---
diff --git a/Makefile.in b/Makefile.in
@@ -55,11 +55,11 @@ clean:
distclean: clean
$(RM) -r core usmb-*.tar.bz2 usmb-*.tar.gz doc/*.mdzip.bak config.rng.…
- autom4te.cache config.h.in~ config.status config.log
-
+ autom4te.cache config.h.in~ config.status config.log config.h…
+ Makefile
allclean: distclean
- $(RM) Makefile configure config.h config.h.in autom4te.cache
+ $(RM) configure config.h.in autom4te.cache
install-strip: STRIPFLAGS = -s
diff --git a/configure.ac b/configure.ac
@@ -44,7 +44,7 @@ AC_DEFINE([MUSTCHECK], [MUSTCHECK_],
AC_CHECK_LIB([smbclient], [smbc_init], [],
[AC_MSG_ERROR(Cannot find libsmbclient.)])
-AC_CHECK_LIB([smbclient], [smbc_getFunctionFtruncate],
+AC_CHECK_LIB([smbclient], [smbc_getFunctionStatVFS],
[AC_DEFINE([HAVE_SAMBA33], [],
[Whether we have Samba 3.3 o…
SAMBA_VERSION=33])
diff --git a/samba30_compat.c b/samba30_compat.c
@@ -15,8 +15,14 @@
*/
#include "config.h"
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include "samba3x-compat.h"
+#include "usmb.h"
#include "usmb_file.h"
+#include "utils.h"
int usmb_statfs (const char *path UNUSED, struct statvfs *vfs UNUSED)
@@ -27,7 +33,7 @@ int usmb_statfs (const char *path UNUSED, struct statvfs *vfs…
}
-int compat_truncate (const char *path UNUSED, SMBCFILE *file, off_t size)
+int compat_truncate (const char *path UNUSED, SMBCFILE *file UNUSED, off_t siz…
{
/* Windows doesn't support truncation so we implement a limited version:
* 0 == size => create a new file for writing.
diff --git a/samba32_compat.c b/samba32_compat.c
@@ -26,56 +26,15 @@
int usmb_statfs (const char *path, struct statvfs *vfs)
{
- if ((NULL == path) || (NULL == vfs))
- return -EINVAL;
-
- char *url = make_url (path);
- if (NULL == url)
- return -ENOMEM;
-
- DEBUG (fprintf (stderr, "statfs (%s, %p)\n", url, (void *)vfs));
- memset (vfs, 0, sizeof (*vfs));
-
- int ret = (0 > smbc_getFunctionStatVFS (ctx) (ctx, url, vfs)) ? -errno : 0;
- free (url);
- return ret;
+ (void)path;
+ (void)vfs;
+ return -ENOSYS;
}
+
int compat_truncate (const char *path UNUSED, SMBCFILE *file, off_t size)
{
- /* Windows doesn't support truncation so we implement a limited version:
- * 0 == size => create a new file for writing.
- * current size == size => succeed.
- * else return -ENOSYS.
- */
-
- if (0 == size)
- {
- char *url = make_url (path);
- if (NULL == url)
- return -ENOMEM;
-
- SMBCFILE *file_ = smbc_getFunctionOpen (ctx) (ctx, url,
- O_WRONLY | O_TRUNC, 0);
- if (NULL == file_)
- {
- free_errno (url);
- return -errno;
- }
-
- smbc_getFunctionClose (ctx) (ctx, file_);
- free (url);
-
- return 0;
- }
-
- struct stat st;
- int ret = usmb_getattr (path, &st);
-
- if (0 != ret)
- return ret;
-
- return (size == st.st_size) ? 0 : -ENOSYS;
+ return (0 > smbc_getFunctionFtruncate (ctx) (ctx, file, size)) ? -errno : 0;
}
diff --git a/samba3x-compat.h b/samba3x-compat.h
@@ -27,6 +27,7 @@
#include "config.h"
#include <libsmbclient.h>
+ #include <sys/statvfs.h>
int usmb_statfs (const char *path UNUSED, struct statvfs *vfs UNUSED);
@@ -186,6 +187,16 @@
}
+ typedef int (*smbc_lseekdir_fn)(SMBCCTX *c,
+ SMBCFILE *dir,
+ off_t offset);
+
+ static inline smbc_lseekdir_fn smbc_getFunctionLseekdir (SMBCCTX *c)
+ {
+ return c->lseekdir;
+ }
+
+
typedef int (*smbc_setxattr_fn) (SMBCCTX *context,
const char *fname,
const char *name,
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.