Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 15, 2014
  1. @demonfoo
Commits on Jan 22, 2014
  1. @demonfoo
Commits on Sep 13, 2013
  1. @demonfoo

    Committing support for OpenBSD.

    demonfoo authored
    Yes, I am committing support for FUSE for OpenBSD. This is an actual,
    real, honest to (no-)god thing. If you want to know about it and try
    it, see here:
    Keep in mind that while this builds and runs, you should know a few
     * truncate() does not work. This is not my fault. The fuse kernel
       driver doesn't implement any support for truncate(), never mind
       libfuse. It literally doesn't do anything with it.
     * You can't make anything other than plain files, directories and
       symlinks right now. The kernel driver doesn't support it yet.
     * There is a bug if a file is created in the fuse filesystem and goes
       away, then you create another file of the same name via FUSE and
       try to do utime(). Not sure if it's just utime() or if other things
       trip it too, but I discovered that via playing around. I *THINK*
       it's a vnode caching problem.
     * There's a reason the rename() test doesn't run. IT WILL CRASH YOUR
       KERNEL. No joke. The rename() op in the kernel driver is busted.
     * The kernel code passes the trailing null character at the end of
       the read symlink path in readlink(). This causes all sorts of fun
       trouble. This needs to be fixed in the kernel driver.
     * fuse_get_context() returns an undef, because the reimplemented
       libfuse doesn't implement that. It also doesn't do any argument
       handling at all. Hence why it's all #ifndef'd out for OpenBSD.
     * mknod() will not get called to create a plain file. You need to
       implement create(), unless the OpenBSD devs fix libfuse to call
       mknod() for plain files.
     * You should probably implement release(); the kernel driver bitches
       a lot about the ENOSYS if you don't.
     * You should probably implement all of chown(), chmod() and
       utime() and/or utimens(). The kernel driver will mask out future
       setattr() requests if it gets ENOSYS from ANY of these. Oops.
    That said, 'make test' finishes, and with only... some failed tests!
Commits on Sep 11, 2013
  1. @demonfoo

    Only define out fuse_main_mt when librefuse is used.

    demonfoo authored
    Librefuse still doesn't have a fuse_main_mt() entry point, but libfuse
    when coupled with Perfuse does.
  2. @demonfoo
Commits on Sep 2, 2013
  1. @demonfoo

    Incorporate FUSE 2.9 feature support.

    demonfoo authored
    Since the FUSE includes don't have a define for the micro version number,
    and the 'fallocate' operation is new as of FUSE 2.9.1, add a bit to the
    Makefile.PL to split up the version number into major, minor and micro
    numbers and add -D defines for the build to pass them in.
    Altered fuse_version() to provide separate major/minor/micro version
    numbers if called in array context.
    Added support for fallocate() and flock(). Also stubbed out read_buf()
    and write_buf().
    Added support for the 'nopath' and 'utime_omit_ok' flags. Also, added
    implementations to access the UTIME_NOW and UTIME_OMIT constants.
    Added basic docs for fallocate() and flock().
    Added change note to Changes file.
Commits on Apr 4, 2012
  1. @demonfoo

    Add a word boundary match to MacFUSE compat hack.

    demonfoo authored
    This is to improve compatibility with Fuse4X. I'll be rolling in other
    changes in the near future to fix the ioctl implementation to work
    with Fuse4X as well.
Commits on Mar 14, 2012
  1. @demonfoo


    demonfoo authored
    Instead of recommending the use of MacFUSE, suggest the newer, actually
    maintained OSXFUSE. Keeping the MacFUSE compat hack for now, since it
    doesn't impact OSXFUSE (and I just tested it on a Mac OS 10.6 system
    in front of me; "make test" goes off with zero hitches).
Commits on Mar 3, 2012
  1. @demonfoo
  2. @demonfoo
Commits on Oct 24, 2011
  1. @ktdreyer

    set license metadata (LGPL)

    ktdreyer authored
Commits on Aug 10, 2011
  1. @demonfoo
Commits on Aug 2, 2011
  1. @demonfoo
  2. @demonfoo
Commits on Jul 29, 2011
  1. @demonfoo

    Replace all tests that require knowing syscall numbers.

    demonfoo authored
    Since tests that need or sys/, et al., always
    fail on the CPAN testing systems for one of several reasons (causing
    "make test" to fail because can't even create plain
    files without it), I'm adopting the *BSD arrangement for handling
    mknod() in, and using the Lchown module to do lchown()
    instead of trying to lookup a syscall number for it. Also changed
    the statfs test to do the same, as I'd already written code to
    use Filesys::Statvfs instead of trying to track down the
    statfs/statvfs/statvfs1 syscall number, and worry about packing
    the arguments the right way. Also changed Makefile.PL to provide
    per-platform explanations of what to install for FUSE support, and
    moved the "-g -ggdb" options into the OPTIMIZE parameter to
    WriteMakefile(). Also made a note of testing against CentOS 5.6,
    due to its use of Perl 5.8, as opposed to everything else I'd
    tested against prior.
Commits on Jul 3, 2011
  1. @demonfoo

    Various changes to tests and Makefile.

    demonfoo authored
    Merged all loopback scripts into a single variant; now threads are
    enabled by passing --use-threads to instead of having a
    separate script variant, and use of Filesys::Statvfs instead of
    bogus filler statfs() data is enabled with --use-real-statfs. Also,
    loopback now fork()s itself away into a daemon, rather than depending
    on external infrastructure to do it; --pidfile can be passed to create
    a PID file.
    Altered test/ and test/s/mount.t to use new semantics.
    Altered test/statfs.t to optionally use Filesys::Statvfs's statvfs()
    instead of raw syscalls and pack masks, if the option is available
    to us. If not available, it will try to use syscalls instead.
    Cleanups to Makefile to put different options where they belong,
    rather than e.g., abusing the 'OBJECT' list to specify libraries
    and such. Works with all platforms.
    Updates to README and MANIFEST.
Commits on Jun 24, 2011
  1. @demonfoo

    Multiple changes for better *BSD compatibility, including:

    demonfoo authored
    - For OS X/Darwin, use alternate function argument lists that add an
      extra parameter for the setxattr() and getxattr() call wrappers. This
      eliminates some compile-time warnings, and makes sure the call stack
      isn't getting unbalanced when those calls are made.
    - For OS X/Darwin, force the use of -lfuse_ino64 on OS X 10.6 (Snow
      Leopard); FUSE filesystems won't work at all otherwise due to changes
      in the inode structure definition, and the pkgconfig files don't check
      for this.
    - For OS X/Darwin, don't set the PERL_DL_NONLAZY=1 environment variable
      during "make test"; MacFuse builds their libfuse with a reference to
      _iconv, but doesn't link in -liconv at build time, and due to
      differences in their dynamic linker, linking -liconv into our library
      doesn't get that symbol into its namespace, so tests fail completely
      on OS X due to the unsatisfied link symbol when RTLD_NOW is passed to
    - Enabled alternate mknod handling for NetBSD and OS X/Darwin in
      addition to FreeBSD in the example code.
    - Synchronized all changes (except enabling threading) from
      examples/ to examples/
    - Reenabled threading use for OS X/Darwin in tests; testing on my
      MacBook running OS X 10.6.7 always passes with it enabled (though
      does not with threading disabled, which probably needs some
    - In the mknod() test, use a different major number shift value (24
      instead of 8) for OS X/Darwin.
    - In the statfs() test, use sys/ instead of (works
      on Linux and all *BSDs, though NetBSD and OS X/Darwin perls don't h2ph
      the system headers at install time).
    - In the statfs() test, altered the Linux pack mask for the statfs()
      syscall, added masks for FreeBSD and OS X/Darwin, and added statvfs1()
      call semantics for NetBSD, so this test will work on all supported
      platforms (though the FreeBSD pack mask may not work on non-64bit
      FreeBSDs, need to test that).
    - In the statfs() test, ignore f_namelen field for NetBSD and
      OS X/Darwin. OS X/Darwin doesn't even have such a field, and NetBSD
      seems to not handle it right for PUFFS filesystems.
    - In the symlink() test, use 'cp -R' on NetBSD instead of 'cp -a', since
      NetBSD's 'cp' doesn't know the '-a' option.
Commits on Dec 9, 2010
  1. @demonfoo

    64-bit support, 2.6 binding

    demonfoo authored committed
    I am (somewhat indirectly, now) using the Fuse package, which you maintain,
    as the basis for a set of Perl modules I've written to mount AFP filesystems
    via Fuse. I actually have made a few changes to the copy I run, to address
    the following issues:
    - On NetBSD, the Fuse package won't build out of the box against NetBSD's
    ReFUSE implementation; I have a few changes that make it work (all except
    extended attributes, which apparently PUFFS/ReFUSE doesn't yet handle).
    - On FreeBSD and NetBSD, the version 2.6 binding profile works better, so
    I've altered the code slightly to use it; it works on Linux and OS X as
    - On most 32-bit Linux distributions (and NetBSD/FreeBSD), Perl is not built
    with 64-bit integer support, thus breaking access to large files (> 2 ** 31
    - 1 bytes long). I've added a sort-of-hackish workaround for Perl builds
    without $Config{'use64bitint'} to get large files handled sanely.
    - Added a few extra option names that aren't included in the @validOpts list
    by default.
    If you're interested in my code, check out to see the repository, or for SVN checkout access.
    Derrik Pates
Commits on May 10, 2010
Commits on Mar 16, 2008
  1. cpan target to push latest verison out

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@122 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Nov 15, 2007
  1. patch from Chris Dolan via #30631

    This patch gets to half-work on MacOSX with the current release
    of MacFuse (v1.1.0).  By half-work, I mean that all of the directory
    actions and file read actions work, but anything that involves writing a
    file fails.  This appears to be because the latest MacFUSE implements
    FUSE 2.6, which prefers to call CREATE instead of MKNOD.  Nonetheless,
    recommend that something like this patch be included because it makes
    read-only filesystems usable on Darwin systems.  Some of my changes
    (like kill() instead of system("kill")) are improvements on any system.
    												    I've tested only on my PowerPC G5 iMac running 10.4.
    I intend to also try MacFUSE v0.4 via Fink, but that version is                                     
    reportedly less stable than the latest MacFUSE.                                                     
    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@112 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Jan 20, 2007
  1. one more define (_FILE_OFFSET_BITS=64) on darwin

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@110 6e4b0b00-1209-0410-87b2-b275959b5705
  2. support for MacFUSE implementation for Mac OS X from…

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@109 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Nov 9, 2006
  1. warn about required permissions also

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@104 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Oct 19, 2006
  1. make CPANPLUS happy and don't report errors if fuse isn't installed

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@103 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Aug 29, 2006
  1. fix path to local svn

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@102 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Jun 6, 2006
  1. use mount_fusefs on FreeBSD to get fuse version

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@94 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on May 23, 2006
  1. whitespace fixes

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@88 6e4b0b00-1209-0410-87b2-b275959b5705
  2. require at least fuse 2.5

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@86 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Jan 17, 2006
  1. update to API 25 changes by Csaba Henk <>

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@85 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Jan 3, 2006
  1. added -D_FILE_OFFSET_BITS=64 need for FreeBSD compilation

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@60 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Jan 2, 2006
  1. target sf to update SourceForge CVS repository of FUSE

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@59 6e4b0b00-1209-0410-87b2-b275959b5705
  2. fallback to defaults if pkg-config is not found

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@31 6e4b0b00-1209-0410-87b2-b275959b5705
  3. use pkg-config

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl-llin@29 6e4b0b00-1209-0410-87b2-b275959b5705
Commits on Nov 18, 2004
  1. fix compilation problems

    git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/fuse/perl/trunk@7 6e4b0b00-1209-0410-87b2-b275959b5705
Something went wrong with that request. Please try again.