The requirements for this project stemmed from my desire to just cd into a .tar file. I presented a similar, but much more basic, version of the .tar filesystem when I wrote the Writing a Resource Manager course for QNX Software Systems. In that course, students were asked to parse a .tar file (with lots of helper code already in place), and write a tiny virtual filesystem that would work like the resource manager presented in this chapter. Unfortunately, due to the limitations on class time, the resource manager presented in that class was very basic—it handled only one type of .tar file (the POSIX standard one, not the GNU one, which has a slightly different format), it mounted only one .tar at a time, and—the most severe limitation—the .tar file could have files only in the current directory (i.e., it didn't support subdirectories).
This resource manager remedies all that.