Thursday, December 24, 2009

jFUSE 0.2

jFUSE is a framework for developing cross-platform FUSE-based filesystems in Java. I quietly released the first version, 0.1, as a response to some messages in the MacFUSE Google Group (see here), but now as it has reached version 0.2 and matured somewhat, it's time to make a public announcement.

jFUSE allows you to develop FUSE 2.6 filesystems in Java (including the MacFUSE 2.0 extensions for Mac OS X). It also provides the programmer with access to relevant system constants and tools to make development a little easier.
The library consists of a native part (written in C++) and a Java part. Beginning with jFUSE 0.2, the native library has been tested on Mac OS X 10.4-10.6 and the latest versions of GNU/Linux (Debian,Ubuntu), OpenSolaris, FreeBSD and NetBSD (using librefuse).

Download:
  • jFUSE 0.2 (jar file with library and example file systems, Java sources and compiled native library for Mac OS X)
  • libjfuse 0.2 (JNI native library sources)
Two example filesystems are included. The first one is the mandatory HelloFS, the simplest filesystem you can find, and the other is a more complete in-memory filesystem called TestFS. They can be found in the org.catacombae.jfuse.examples package.

I have created two additional filesystems for jFUSE as separate projects (download links coming soon):
  • hfs-jfuse - A read only HFS/HFS+/HFSX filesystem driver.
  • rarfs-jfuse - A filesystem for mounting RAR files, displaying their contents and allowing direct access to uncompressed entries.
These two filesystems were trivially created by using libraries that I had written earier for HFSExplorer and RARMounter.
In fact, the inspiration for jFUSE as a more general Java-FUSE layer came when working on the older 'rarfs' code, that also consisted of Java code bound to FUSE callbacks, but in a less reusable way.

For developers that quickly want to start creating jFUSE filesystems, all that's needed is to extend the class org.catacombae.jfuse.FUSEFileSystemAdapter and override those methods that you want to implement (see org.catacombae.jfuse.FUSE26Operations for a description of the operations that can be overridden).

Developers that want to take advantage of the MacFUSE extended callbacks introduced in MacFUSE 2.0 can override org.catacombae.jfuse.MacFUSEFileSystemAdapter, which includes the FUSE 2.6 operations + the extended MacFUSE callbacks.
(Using the MacFUSE extended callbacks doesn't affect compatibility with non-MacFUSE platforms. They will simply not be invoked for those platforms.)

The Java API is not guaranteed to stay stable between releases, but it's also not likely to undergo any major changes.

Tuesday, November 4, 2008

HFSExplorer 0.20

HFSExplorer 0.20 was just released after some intensive testing sessions.

Some highlights:
  • Support for AES-128 encrypted disk images. Crypto implementation details were derived from studying the VileFault proof-of-concept created by Ralf-Philipp Weinmann, Jacob Appelbaum and Christian Fromme.

  • Support for the older HFS (Mac OS Original) file system. Nobody really uses it these days, but an application named "HFSExplorer" should be able to read HFS file systems. ;>

  • Support for file system links, both hard links and soft (symbolic) links to files and directories. This makes it possible to browse Time Machine backups, as they use hard directory links extensively to create the impression of snapshots, and adds a lot to the general perception of file system completeness.

  • Extracting files can now be done "quitely", without user interaction, by setting a few runtime extract variables represented as radio buttons. This is useful for doing "batch" transfers that take a long time to finish.

  • New summary panel in the "Information" dialog for files and directories. This panel sums up some of the most important information about a file system entry. For directories, the entire directory weight is now calculated.
The next focus point will be write support. Once write support is implemented, version number will probably jump to 1.0.

Saturday, September 8, 2007

Other apps

Please post your comments on DiskUsageAnalyzer/FindDuplicates/TypherTransfer here.

RARMounter / rarfs_fuse / JLink RAR extension

Please post your comments on the RAR related libraries and apps here.

DMGExtractor 0.60

Please post your comments on the current version of DMGExtractor here.

HFSExplorer 0.19.5

Please post your comments on the current version of HFSExplorer here.

Blog created.

This blog is supposed to a complement to my web page catacombae, containing open source software written by me (sometimes building upon the work of others). I'm hoping this blog will give me an opportunity to recieve feedback on my work, and get some hints of what the users wish to see in the future.
I'm starting off with one blog posting per major application, where you can post any initial comments, and we'll see where this leads. (Possibly nowhere, if nobody is intrested... ;>)