PhysicsFS is a library to provide abstract access to various archives. It is
intended for use in video games, and the design was somewhat inspired by Quake
3's file subsystem. The programmer defines a "write directory" on the physical
filesystem. No file writing done through the PhysicsFS API can leave that
write directory, for security. For example, an embedded scripting language
cannot write outside of this path if it uses PhysFS for all of its I/O, which
means that untrusted scripts can run more safely. Symbolic links can be
disabled as well, for added safety. For file reading, the programmer lists
directories and archives that form a "search path". Once the search path is
defined, it becomes a single, transparent hierarchical filesystem. This makes
for easy access to ZIP files in the same way as you access a file directly on
the disk, and it makes it easy to ship a new archive that will override a
previous archive on a per-file basis. Finally, PhysicsFS gives you
platform-abstracted means to determine if CD-ROMs are available, the user's
home directory, where in the real filesystem your program is running, etc.
-- stuff in the stable-1.0 branch, backported from 2.0.0 dev branch, etc ---
07232005 - Fixed bug in zip archiver (thanks, J�rg Walter!). Updated zlib to
1.2.3, which properly includes the security fix. Fixed "make dist"
to handle .svn dirs and other file changes. Removed "debian"
directory. Fixed warning in physfs.c. Updated CWProjects.sit.
Stuff that needs to be done and wishlist:
These are in no particular order.
Some might be dupes, some might be done already.
- Other archivers: perhaps tar(.gz|.bz2), RPM, ARJ, etc. These are less
important, since streaming archives aren't of much value to games (which
is why zipfiles are king: random access), but it could have uses for, say,
- Stack allocate in strip
Copyright (c) 2003 Ryan C. Gordon and others.
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from
the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it