AFFLIB Buglist and roadmap.


PERFORMANCE IMPROVEMENTS:
* afconvert should calculate MD5, SHA256 and SHA1
* Store TOC sorted and find entries with binary search.
  (A 1TB TOC has 62,500 pages or 100K segments; with fixed size records that would be 8,000,000, which is not much.)
* aff_write_seg() shouldn't be calling af_rewind_seg after every call
* af_write() shouldn't be calling lseek() and write() so many times.
  - move to scatter/gather writing.
  - look at the TOC to know how much space is available. 
  - Make the TOC always used. Trust the TOC.

BUGS:
* Test all programs with file://-style URLs. You can't test for existence of a file with
  access(). This is an issue for -z in afcopy.
* image_size not set for AFM files; does it need to be set, or is it generated on the fly?
* afcrypto should note if a file can't be decrypted.
* library doesn't automatically write SHA1s and SHA256s; need to be selectable.
* combine affix and afrecover into a single executable.
* combine afconvert and afcopy into a single executable.
* better error handling in aimage?
* Graacefully handle expat not installed?
* improve performance of 
   - cache memory selection size - * Automatically increase cache to use 1/2 of physical RAM?
   - cache algorithm

FEATURES:

library:
* Add support for http://mingw.org/
* badflag needs to be reimplemented as a bitfield.
* Since we have the TOC, is there EVER a case in which we need to scan the whole file?
  If not, perhaps we can take out those scan routines.
* Keep track of sectors that have been touched and output.
* Some kind of sector map array. (Bit array? Byte array?)  
* A 1TB disk has 2 billion sectors and 62,500 AFF pages; do we need to store this in a better
  data structure than an unsorted linear list?

aimage:
 * Have aimage update more often
 * Final report on bytes written is wrong.
 * Fix imaging over the network
 * Keep a log of everything imaged, # of bad blocks, MD5, etc.
 * Image from an SSL tcp connection.
 * notify user of kernel error messages; write them to segment
 * Report if drive is wiped
 * -A mode needs some work; it sometimes compresses too much.
 * Digitally sign the AFFs

afcat:
 * option - BADFLAG or BLANK errors
 * Option to output a specific sector or a range of sectors
 * Multiple ranges of bytes

afcompare:
 * Make SIGINFO work
 * -d - just compare data
 * -s3 - just check to see if the named segments got written.
       - Just compare MD5s!

afcopy:
 * don't copy the file if it won't fit.
 * preserve timestamps
 * have the file names .aff.new, and rename to .aff after complete.
 * if there are _md5/_sha1/_sha256 segments, read all of those segments first and verify them.
 * if AFFLIB_PASSPHRASE is set and a file is copied, the resultant file is broken.

afconvert:
 * This didn't work: afconvert -q -o /project3/1028.raw /project2/p3/1028.aff  

afupload:
 * Uploading shouldn't decrypt first.


