TODO
* fill block tree
* replace grain table with block tree
* replace extent table with block tree

* vmdkmount empty array on close not on free

* add support for the change tracking file?
* make sure descriptor file data is cleaned on close - also if no data files were set!

* make libvmdk_handle_open_extent_data_files_file_io_pool work
* make libvmdk_handle_open_extent_data_files use libvmdk_handle_open_extent_data_files_file_io_pool

* update manuals
  - update vmdkinfo.1
  - add vmdkmount.1
* handle ZERO extents?
* extent file add windows support (encoding)
  - add codepage functions + tests
  - libvmdk_extent_descriptor.c:629
  - libvmdk_descriptor_file.c:852
* implement extent file current offset ?
* implement libvmdk_extent_file_read_grain_group_element_data
* get grain data by grain table
  - remove unused functions from libvmdk_extent_table after refactor
* implement libvmdk_handle_set_maximum_number_of_open_handles
* add support for zero-grain table entry support

* code clean up:
  - support and locale functions
* add glob functions?
* debug output
  - descriptor file: disk database

API
* add functions to access storage media data
* add functions to access extents
* add functions to access grains

Tools:
* vmdkinfo:
  - add flag to have test to check if all the extent files are there?
  - same for all the parent extent files?
  - add option to print descriptor file data?
  - print dirty status
  - add byte size string support

Tests:
* open close
  - add parent support
* read
  - add parent support
* seek
  - add parent support
* add integrity tests

* Test images
  - vmdk flat
  - vmdk flat split (done)
  - Monolithic sparse (done)
  - 2GB extent sparse (done)
  - cowd sparse
  - cowd sparse split
  - compressed (done)
  - (compressed) with parent (done)

20090912
* see `git log' for more recent change log
* initial version based on liblnk
* worked on implementing vmdk and cowd sparse data files

