This week’s third piece of software is xarfs, a proof-of-concept MacFUSE-based filesystem that mounts xar archive files as a read-only filesystem.
I wrote xarfs because I wanted an easy way to be able to inspect Mac OS X Installer package files, which as of Mac OS X 10.5, began to be xar archives. In particular, I wanted to be able to lsbom
the package manifest in order to see what files were being modified. (In retrospect, it probably would have been easier, though less satisfying, to have written a simple tool that extracts only the package manifest and lists its contents.)
Although xarfs provides easy access to view the contents of a xar archive, it has some pretty significant limitations. Besides having a rather clumsy user interface, and presenting only a read-only interface to xar files, it handles large files spectacularly poorly, decompressing them entirely into memory regardless of how much of the file is being accessed. (This is a limitation in the xar API.) It’s also written in Objective C using MacFUSE’s framework. This rather limits its portability; an implementation using the regular FUSE API would probably allow xarfs to work on Linux.
If anyone’s interested in this, it’s probably possible to resolve some of its deficiencies and make it a lot more useful. Let me know if you find it helpful.
xarfs is licensed under the three-clause BSD license. For more information, or to download, see the xarfs page.
Tags: fuse, mac os x, macfuse, objc, open source, xar, xarfs