A shadowed directory structure is a list of directories
which are searched for files. Each request for openeing
a file for reading always proceeds from the top to
bottom, even and especially for file relative file
lookups. Requests to open files for writing always bind
to the first directory.
A typical use is to have a base directory B with read
only sources in it, a directory P containing modified
versions of some of the files, and a directory W which
is used to cache temporaries. The directory is then
specified as a list W:P:B.
The ideal implemention on Linux would use fuse.
However, not all OS provide it so we probably have to
implement our own.
A special variant is that P contains patch files rather
than shadow files.
Shadowing is essential for flxg to use pre-compiled
headers since they're generated on the fly whilst
compiling and reside next to the file they're generated
from. Unfortunately, the client may not have write
permission for the directory containing the source,
which results in the precompiled headers not being saved.
Support for shadowing is required in flxg, but probably
needs to be extended to other components. In particular
the Felix library itself should support it.