Lightning Rose
Multi-Fork File System
An API for Software Developers
The Multi-Fork File System is a powerful
POSIX compliant
Application Programming Interface for C/C++
built on standard file I/O functions such as
open(), close(), read(), write(),
and lseek().
The MFFS API allows software developers to easily add any number of
forks
to any file, including executable files (O/S permitting). Unlike the
data and resource
forks used by the
Apple Macintosh O/S,
MFFS forks have no predefined uses or formats.
Among the unique features in the Multi-Fork File System is the ability
to convert an existing file to a fork within a MFFS file and
to edit fork data with multiple restore points. With the MFFS it's easy to delete
and insert data anywhere in a fork without rewriting the entire file.
These features make the
MFFS nothing less than a new
paradigm
in file
I/O.
- Works with both 32 and 64 bit file systems.
- Small runtime footprint - less than 20KB on x86 Linux.
- Virtually unlimited number of independent forks per file.
- The ability to edit fork data
in situ
with multiple restore points.
- POSIX Compliant Source Code is easily ported to any platform.
- Forks have no pre-defined format and may be used for any purpose.
- The ability to insert and delete data anywhere in a fork without rewriting the entire file.
- A MFFS file contains a single MFFS Header (located at the end of the file)
with a link list of one or more Fork Descriptors and a pointer to the
previous MFFS Header in the file (provided such a header exists).
- Each Fork Descriptor contains a link list of Chunk Descriptors.
- Each Chunk Descriptor contains the file offset, the fork offset,
and the number of bytes in the chunk.
- When data is written to a fork, that data is always appended to the file
and the Chunk Descriptors are modified appropriately.
- Data within a file is never over written. This is what allows multiple
Restore Points.
- Each MFFS Header embedded in the file defines a Restore Point.
- Adding
metadata
to existing files.
- Creating binary file editors.
- Creating archival software
Items marked by strike through will be available in the next release.
Once released, completed items will be removed from this list.
- Optimization
- Check error returns and BUGOUT()'s.
- mffsInsert() & mffsDelete() should merge contiguous chunk descriptors.
- mffsOpenFork(), mffsInsert(), mffsRead() & mffsWrite() should check mode.
- Portability
- Conditional compilation for typedefs.
- Replace embedded binary offsets with ascii strings.
- Conditional compilation to support big/little endian systems?
- Enhancements
- Expand & improve errCode's.
- Allow forks to span files.
- Add thread-safe wrapper functions.
- Source is distributed as a
zipped
tar file
for 'nix based systems, or as a zip file for MS-WIN systems.
- Build requirements are:
- A POSIX compliant C compiler.
- POSIX compliant runtime system.
Since the MFFS source code was written to be POSIX compliant,
it should easily port to any O/S with a compiler that supports
the Unix standard I/O functions
open(), close(), read(), write(),
lseek(), and ftruncate().
The MFFS has been tested with the following operating systems, modes, and compilers:
- Linux
- 32 bit kernel version 2.6.9 with gcc version 3.4.2
- 32 bit file mode with files less than 2GB in size.
- 64 bit file mode with files up to 8GB in size.
If you have ported this package to another O/S, please let me know so I can
include the information here.
PLEASE! report bugs using the bug tracker instead of email. It is extremely
simple, quick and easy to use, you don't even have to have a SourceForge
account, and it allows me to track issues and desired features, as well as keep
a history and dates. Please do not send the author email about bugs.
Thank you.
L. N. Reed
Lightning Rose Software
Copyright © 1985-2005 L. N. Reed. All Rights Reserved.
This code is distributed under the
GNU Lesser General Public License
BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
♦ ♦ ♦
Lightning Rose Home
Contact Me