mirror of
https://git.freebsd.org/ports.git
synced 2025-05-20 19:13:27 -04:00
216 lines
6 KiB
Text
216 lines
6 KiB
Text
Allow use of either libfuse3 or libfuse...
|
|
|
|
-mi
|
|
|
|
--- src/event.c 2018-01-04 15:59:38 -0500
|
|
+++ src/event.c 2018-02-01 11:12:59 -0500
|
|
@@ -5,5 +5,5 @@
|
|
#include <pthread.h>
|
|
#include <libsmbclient.h>
|
|
-#include <fuse/fuse.h>
|
|
+#include <fuse.h>
|
|
#include <glib.h>
|
|
|
|
--- configure 2018-01-04 16:00:23 -0500
|
|
+++ configure 2018-02-01 11:16:43 -0500
|
|
@@ -4059,5 +4059,5 @@
|
|
fi
|
|
LIBS="$LIBS $FUSE_LIBS"
|
|
-CFLAGS="$CFLAGS -D_REENTRANT -D_GNU_SOURCE -DFUSE_USE_VERSION=26 $FUSE_CFLAGS"
|
|
+CFLAGS="$CFLAGS -D_REENTRANT -D_GNU_SOURCE $FUSE_CFLAGS"
|
|
|
|
|
|
--- src/event.h 2018-01-04 15:59:38.000000000 -0500
|
|
+++ src/event.h 2018-02-01 11:20:21.779895000 -0500
|
|
@@ -2,5 +2,5 @@
|
|
#define __EVENT_H__
|
|
|
|
-#include <fuse/fuse.h>
|
|
+#include <fuse.h>
|
|
|
|
int event_set_query_browser_flag(int flag);
|
|
--- src/function.h 2018-01-04 15:59:38.000000000 -0500
|
|
+++ src/function.h 2018-02-01 11:21:10.116105000 -0500
|
|
@@ -2,5 +2,5 @@
|
|
#define __FUNCTION_H__
|
|
|
|
-#include <fuse/fuse.h>
|
|
+#include <fuse.h>
|
|
|
|
extern struct fuse_operations smb_oper;
|
|
--- src/function.c 2018-01-04 20:59:38.000000000 +0000
|
|
+++ src/function.c 2018-02-01 18:28:01.664078000 +0000
|
|
@@ -149,5 +151,13 @@
|
|
}
|
|
|
|
-static int function_rename(const char *from, const char *to){
|
|
+static int function_rename(const char *from, const char *to
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , unsigned int flags __unused
|
|
+#endif
|
|
+){
|
|
+ /*
|
|
+ * XXX Maybe, we should check the flags-argument to better
|
|
+ * XXX manage the caller's expectations?
|
|
+ */
|
|
DPRINTF(5, "(%s, %s)\n", from, to);
|
|
if (smbitem_what_is(from) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL;
|
|
@@ -188,6 +198,15 @@
|
|
}
|
|
|
|
+
|
|
static int function_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
|
|
- off_t offset, struct fuse_file_info *fi){
|
|
+ off_t offset, struct fuse_file_info *fi
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , enum fuse_readdir_flags flags __unused
|
|
+#define CALL_FILLER(buf, path, st, offset) \
|
|
+ filler(buf, path, st, offset, 0)
|
|
+#else
|
|
+#define CALL_FILLER filler
|
|
+#endif
|
|
+){
|
|
samba_fd fd;
|
|
int error, rec_cnt;
|
|
@@ -208,6 +227,6 @@
|
|
error = EINVAL;
|
|
st.st_mode = S_IFDIR;
|
|
- if (filler(buf, ".", &st, 0)) goto error0;
|
|
- if (filler(buf, "..", &st, 0)) goto error0;
|
|
+ if (CALL_FILLER(buf, ".", &st, 0)) goto error0;
|
|
+ if (CALL_FILLER(buf, "..", &st, 0)) goto error0;
|
|
|
|
show_hidden_hosts = function_get_hidden_hosts_visibility();
|
|
@@ -227,5 +246,5 @@
|
|
goto error0;
|
|
}
|
|
- if (filler(buf, dir->childs[i]->name, &st, 0)) goto end;
|
|
+ if (CALL_FILLER(buf, dir->childs[i]->name, &st, 0)) goto end;
|
|
}
|
|
error = 0;
|
|
@@ -299,9 +318,9 @@
|
|
memset(&st, 0, sizeof(st));
|
|
st.st_mode = S_IFDIR;
|
|
- if (filler(buf, ".", &st, 0)) goto end;
|
|
- if (filler(buf, "..", &st, 0)) goto end;
|
|
+ if (CALL_FILLER(buf, ".", &st, 0)) goto end;
|
|
+ if (CALL_FILLER(buf, "..", &st, 0)) goto end;
|
|
rec_cnt += 2;
|
|
}
|
|
- if (filler(buf, rec->d_name, &st, 0)){
|
|
+ if (CALL_FILLER(buf, rec->d_name, &st, 0)){
|
|
error = EINVAL;
|
|
goto end;
|
|
@@ -317,6 +336,6 @@
|
|
error = EINVAL;
|
|
st.st_mode = S_IFDIR;
|
|
- if (filler(buf, ".", &st, 0)) goto end;
|
|
- if (filler(buf, "..", &st, 0)) goto end;
|
|
+ if (CALL_FILLER(buf, ".", &st, 0)) goto end;
|
|
+ if (CALL_FILLER(buf, "..", &st, 0)) goto end;
|
|
rec_cnt += 2;
|
|
}
|
|
@@ -341,5 +360,11 @@
|
|
}
|
|
|
|
-static int function_stat(const char *path, struct stat *stbuf){
|
|
+static int function_fstat(const char *path, struct stat *stbuf,
|
|
+ struct fuse_file_info *fi);
|
|
+static int function_stat(const char *path, struct stat *stbuf
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , struct fuse_file_info *fi
|
|
+#endif
|
|
+){
|
|
int i, count;
|
|
size_t len;
|
|
@@ -347,4 +372,8 @@
|
|
char buf[2048];
|
|
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ if (fi != NULL)
|
|
+ return function_fstat(path, stbuf, fi);
|
|
+#endif
|
|
DPRINTF(5, "(%s)\n", path);
|
|
if (stat_workaround_is_name_ignored(path)) return -ENOENT;
|
|
@@ -462,5 +491,9 @@
|
|
}
|
|
|
|
-static int function_chmod(const char *path, mode_t mode){
|
|
+static int function_chmod(const char *path, mode_t mode
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , struct fuse_file_info *fi __unused /* XXX make some use of it? */
|
|
+#endif
|
|
+){
|
|
DPRINTF(5, "(%s, %o)\n", path, mode);
|
|
if (smbitem_what_is(path) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL;
|
|
@@ -469,4 +502,5 @@
|
|
}
|
|
|
|
+#if FUSE_USE_VERSION < 30
|
|
static int function_utimes(const char *path, struct utimbuf *buffer){
|
|
struct timeval tbuf[2];
|
|
@@ -483,4 +517,21 @@
|
|
return 0;
|
|
}
|
|
+#else
|
|
+static int function_utimens(const char *path, const struct timespec tv[2],
|
|
+ struct fuse_file_info *fi __unused)
|
|
+{
|
|
+ struct timeval tbuf[2];
|
|
+
|
|
+ DPRINTF(5, "(%s, %lu)\n", path, (unsigned long)tv[0].tv_sec);
|
|
+ if (smbitem_what_is(path) != SMBITEM_SMB_SHARE_ITEM) return -EINVAL;
|
|
+
|
|
+ tbuf[0].tv_sec = tv[0].tv_sec;
|
|
+ tbuf[0].tv_usec = tv[0].tv_nsec / 1000;
|
|
+ tbuf[1].tv_sec = tv[1].tv_sec;
|
|
+ tbuf[1].tv_usec = tv[1].tv_nsec / 1000;
|
|
+ if (samba_utimes(path, tbuf) != 0) return -errno;
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
|
|
/* libfuse does not support lsetxattr() and fsetxattr(), but samba does */
|
|
@@ -542,5 +593,9 @@
|
|
}
|
|
|
|
-static int function_chown(const char *path, uid_t uid, gid_t gid){
|
|
+static int function_chown(const char *path, uid_t uid, gid_t gid
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , struct fuse_file_info *fi __unused
|
|
+#endif
|
|
+){
|
|
(void) path;
|
|
(void) uid;
|
|
@@ -552,7 +607,15 @@
|
|
}
|
|
|
|
-static int function_truncate(const char *path, off_t size){
|
|
+static int function_truncate(const char *path, off_t size
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ , struct fuse_file_info *fi
|
|
+#endif
|
|
+){
|
|
samba_fd fd;
|
|
|
|
+#if FUSE_USE_VERSION > 29
|
|
+ if (fi != NULL)
|
|
+ return function_ftruncate(path, size, fi);
|
|
+#endif
|
|
DPRINTF(5, "(%s, %lld)\n", path, (long long) size);
|
|
if (size < 0) return -EINVAL;
|
|
@@ -602,8 +665,14 @@
|
|
.rmdir = function_rmdir,
|
|
.getattr = function_stat,
|
|
+#if FUSE_USE_VERSION < 30
|
|
.fgetattr = function_fstat,
|
|
.ftruncate = function_ftruncate,
|
|
+#endif
|
|
.chmod = function_chmod,
|
|
+#if FUSE_USE_VERSION < 30
|
|
.utime = function_utimes,
|
|
+#else
|
|
+ .utimens = function_utimens,
|
|
+#endif
|
|
.setxattr = function_setxattr,
|
|
.getxattr = function_getxattr,
|