It happens that tsearch seems to not return a pointer to the inserted element,
but a pointer to a pointer to the inserted element (that makes sense, as we
are inserted pointers...). This bug, thus, was related to a wrong
understanding of the tsearch API!
Ecma119Image, defined for first time in this commit, is the context for image
written. It keeps the low level objects needed during image written.
IsoFileSrc is the low level object that takes care about the info needed to
write file contents to image. It takes care about reading from Stream in 2K
block chunks. To prevent the same file be written twice to image, we keep in
Ecma119Image a search tree, indexed by the triple key (fs, device, inode) that
uniquelly identifies a source.
This commit also to the following changes:
- create_node() on builder never frees the IsoFileSource, it is responsability
of the caller to free it.
- Recursive addition options added to IsoImage (not exposed to public API yet)
- create_node() takes care about follow_symlinks
- Added little demo program to test it.