X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=Fuse.xs;h=5c19b92bf74408efb8ce7a5ca228f6f3e68e7622;hb=59be515b2d0d982c08816ec8c9c6d67aa674c194;hp=5be011a40445884ec9d9427c501adfee3e650481;hpb=8ac7788ce64454586f49f896f3bfe9dcecb6cfca;p=perl-fuse.git diff --git a/Fuse.xs b/Fuse.xs index 5be011a..5c19b92 100755 --- a/Fuse.xs +++ b/Fuse.xs @@ -5,7 +5,7 @@ #include -#if (defined(__FreeBSD__) && __FreeBSD__ < 10) || defined(__NetBSD__) +#if (defined(__FreeBSD__) && !defined(__APPLE__)) || defined(__NetBSD__) # define XATTR_CREATE 1 # define XATTR_REPLACE 2 #else @@ -773,7 +773,7 @@ int _PLfuse_fsync (const char *file, int datasync, struct fuse_file_info *fi) { return rv; } -#if __FreeBSD__ >= 10 +#ifdef __APPLE__ int _PLfuse_setxattr (const char *file, const char *name, const char *buf, size_t buflen, int flags, uint32_t position) { #else int _PLfuse_setxattr (const char *file, const char *name, const char *buf, size_t buflen, int flags) { @@ -800,7 +800,7 @@ int _PLfuse_setxattr (const char *file, const char *name, const char *buf, size_ return rv; } -#if __FreeBSD__ >= 10 +#ifdef __APPLE__ int _PLfuse_getxattr (const char *file, const char *name, char *buf, size_t buflen, uint32_t position) { #else int _PLfuse_getxattr (const char *file, const char *name, char *buf, size_t buflen) { @@ -1456,6 +1456,11 @@ int _PLfuse_bmap(const char *file, size_t blocksize, uint64_t *idx) { } #if FUSE_VERSION >= 28 + +# ifndef __linux__ +# define _IOC_SIZE(n) IOCPARM_LEN(n) +# endif + int _PLfuse_ioctl(const char *file, int cmd, void *arg, struct fuse_file_info *fi, unsigned int flags, void *data) { int rv; @@ -1471,7 +1476,7 @@ int _PLfuse_ioctl(const char *file, int cmd, void *arg, * the perl side */ XPUSHs(sv_2mortal(newSVuv((unsigned int)cmd))); XPUSHs(sv_2mortal(newSViv(flags))); - if (_IOC_DIR(cmd) & _IOC_WRITE) + if (cmd & IOC_IN) XPUSHs(sv_2mortal(newSVpvn(data, _IOC_SIZE(cmd)))); else XPUSHs(&PL_sv_undef); @@ -1479,7 +1484,7 @@ int _PLfuse_ioctl(const char *file, int cmd, void *arg, PUTBACK; rv = call_sv(MY_CXT.callback[39],G_ARRAY); SPAGAIN; - if ((_IOC_DIR(cmd) & _IOC_READ) && (rv == 2)) { + if ((cmd & IOC_OUT) && (rv == 2)) { sv = POPs; rv--; } @@ -1487,7 +1492,7 @@ int _PLfuse_ioctl(const char *file, int cmd, void *arg, if (rv > 0) rv = POPi; - if ((_IOC_DIR(cmd) & _IOC_READ) && !rv) { + if ((cmd & IOC_OUT) && !rv) { if (sv) { size_t len; char *rdata = SvPV(sv, len); @@ -1553,47 +1558,47 @@ int _PLfuse_poll(const char *file, struct fuse_file_info *fi, #endif /* FUSE_VERSION >= 28 */ struct fuse_operations _available_ops = { -getattr: _PLfuse_getattr, -readlink: _PLfuse_readlink, -getdir: _PLfuse_getdir, -mknod: _PLfuse_mknod, -mkdir: _PLfuse_mkdir, -unlink: _PLfuse_unlink, -rmdir: _PLfuse_rmdir, -symlink: _PLfuse_symlink, -rename: _PLfuse_rename, -link: _PLfuse_link, -chmod: _PLfuse_chmod, -chown: _PLfuse_chown, -truncate: _PLfuse_truncate, -utime: _PLfuse_utime, -open: _PLfuse_open, -read: _PLfuse_read, -write: _PLfuse_write, -statfs: _PLfuse_statfs, -flush: _PLfuse_flush, -release: _PLfuse_release, -fsync: _PLfuse_fsync, -setxattr: _PLfuse_setxattr, -getxattr: _PLfuse_getxattr, -listxattr: _PLfuse_listxattr, -removexattr: _PLfuse_removexattr, -opendir: _PLfuse_opendir, -readdir: _PLfuse_readdir, -releasedir: _PLfuse_releasedir, -fsyncdir: _PLfuse_fsyncdir, -init: _PLfuse_init, -destroy: _PLfuse_destroy, -access: _PLfuse_access, -create: _PLfuse_create, -ftruncate: _PLfuse_ftruncate, -fgetattr: _PLfuse_fgetattr, -lock: _PLfuse_lock, -utimens: _PLfuse_utimens, -bmap: _PLfuse_bmap, +.getattr = _PLfuse_getattr, +.readlink = _PLfuse_readlink, +.getdir = _PLfuse_getdir, +.mknod = _PLfuse_mknod, +.mkdir = _PLfuse_mkdir, +.unlink = _PLfuse_unlink, +.rmdir = _PLfuse_rmdir, +.symlink = _PLfuse_symlink, +.rename = _PLfuse_rename, +.link = _PLfuse_link, +.chmod = _PLfuse_chmod, +.chown = _PLfuse_chown, +.truncate = _PLfuse_truncate, +.utime = _PLfuse_utime, +.open = _PLfuse_open, +.read = _PLfuse_read, +.write = _PLfuse_write, +.statfs = _PLfuse_statfs, +.flush = _PLfuse_flush, +.release = _PLfuse_release, +.fsync = _PLfuse_fsync, +.setxattr = _PLfuse_setxattr, +.getxattr = _PLfuse_getxattr, +.listxattr = _PLfuse_listxattr, +.removexattr = _PLfuse_removexattr, +.opendir = _PLfuse_opendir, +.readdir = _PLfuse_readdir, +.releasedir = _PLfuse_releasedir, +.fsyncdir = _PLfuse_fsyncdir, +.init = _PLfuse_init, +.destroy = _PLfuse_destroy, +.access = _PLfuse_access, +.create = _PLfuse_create, +.ftruncate = _PLfuse_ftruncate, +.fgetattr = _PLfuse_fgetattr, +.lock = _PLfuse_lock, +.utimens = _PLfuse_utimens, +.bmap = _PLfuse_bmap, #if FUSE_VERSION >= 28 -ioctl: _PLfuse_ioctl, -poll: _PLfuse_poll, +.ioctl = _PLfuse_ioctl, +.poll = _PLfuse_poll, #endif /* FUSE_VERSION >= 28 */ };