Improved IWAD Support
Currently, we allow mixing of iwads (example: Freedoom2 and Doom2) so that users that wish to use alternatives can join a server that uses pwads to replace the level. This allows flexibility with users that do not own a copy of retail Doom to not miss any of the action.
However this is currently limited to only iwad exceptions in the current source code. While this is seemingly enough, now we have run into the issue of having to constantly update the list of hashes every time an iwad is modified. FreeDoom 0.9 is the latest version but since our current release was before FreeDoom 0.9 was released, we have no way of allowing FreeDoom to join a Doom 2 server unless we either update Odamex or tell servers to modify the source code and rebuild.
My attempt to resolve this is to allow Odamex to look at an external list of iwad hashes that tells the server what is allowed as a substitute. My solution is to have odasrv look for a file called "hashes.cfg" and use a simple format that tells odasrv what hash to allow as a substitute for another.
This way hosts can easily tell Odasrv what is allowed as an iwad substitute even if the hash does not exist in the source. If hashes.cfg does not exist, odasrv ignores it and continues to rely on the list internally. Not only does this benefit FreeDoom, it also allows future iwads that may be released to be used as a substitute.