Remove old, commented out compile directive.
Go back to MD5, leaving SHA-1 as an easy switch.
Extract file checksum into separate function.
Use ifstream() instead of fopen() etc.
Use vector instead of C array.
Use std::array instead of vector.
Add a tiny bit of error checking.
Use foreach loop now that we have std::array base.
Change file_checksum_test() to file_checksum() returning string.
Add make test that builds and runs project.
Do not report create-dir error when error is file_exists.
Implement status().
Give more informative error messages in file_checksum().
Open with in-flag to avoid truncating existing files.

Also extract downloading into separate, private function do_fetch().
Add better info messages.
Remove redundant comparison.
Give better names to variables.
Remove some dead code, comment out some unused code.
More clearly indicate targets in listings.
Make checksums const.