libferris is a virtual filesystem that exposes hierarchical data of all kinds through a common C++ interface. Access to data is performed using C++ IOStreams and metadata is available as key-value pairs through the Extended Attributes (EA) interface. Rich support for filesystem indexing is included to provide timely search results for well into millions of files. Ferris uses a plugin API to handle a large range of data sources, metadata, and index and search strategies. Filesystems include file:// with monitoring, XML (mount an XML file as a filesystem), relational databases, ISAM databases (Berkeley db, tdb, gdbm, eet et al), xmldb, LDAP, Applications (Evolution, Firefox, Emacs), HTTP, FTP, sockets, and RDF (from XML, binary, soprano). EA generators include image, audio, and animation decoders.
libferrisstreams is a collection of base classes for custom std::basic_streambuf subclasses, SigC signals fired when streambuf objects are about to be deleted, relative URL handling, easy reference counting on streambuf objects, a collection of IOStreams which complement the standard ones on offer (MakeMemoryIOStream(), MakeFdIOStream(), MakeHoleyOStream(), MakeLimitingIStream(), and MakeProxyStream()), and additions for UNIX semantics. For example a file stream can be created using o_mmap|o_mseq when one wants a memory mapped file to be used an madvise(2) that access to that area will be sequential.
libsixdof provides C and C++ interfaces to 6 degrees of freedom devices. The library is intended to be very unobtrusive to an application, allowing support to be implemented without great effort. For example, an application might only need to issue 3-4 API calls to tell libsixdof about Xwindow objects that it should monitor. Apart from those setup calls, functions that are useful for controllers should be registered with libsixdof. The configuration of the device (how its axis movements map to these registered functions) is then taken care of completely by libsixdof. The application doesn't really need to care what 6dof device is attached, where it is attached (USB, etc.), what its name is, or if there is more than one.
libstldb4 is a C++ wrapper for the sleepycat db4 database. It uses the STL in the API where sensible, allows standard IOStreams for data access where sensible, e.g. getting the value of a key should be able to use an istream interface to allow simple partial value retreival, and moves the transaction parameter to be the last optional parameter or provides two versions of the same method for trans/nontrans. The API has been modified to use more standard types. Operator overloading is used to allow quick and dirty coding (mydb[ "key" ] = "value";) to set and cerr.
petardfs is a FUSE filesystem designed to hoist your applications with errors. With no configuration, petardfs takes a base filesystem and exposes it through FUSE. An XML configuration file is used to tell petardfs which files to report errors for and what error code to use. For example, foo.txt can have an EIO error at bytes 34 to 37. There is explicit support for errors such as EAGAIN and EINTR, where petardfs will only report such transient errors a nominated number of times. This is handy for testing applications that support such I/O conditions gracefully.
Witme-fileutils is a version of GNU fileutils that builds as a shared library. If this gets merged into the main GNU fileutils, then this project will live on as the integration of libsigc++ and other glib based signal styles to complement the base callback functionality currently available. This version is a staging ground for new ideas and code to be implemented with the possible integration into GNU fileutils to be handled as time allows.