--- TODO ---

   * Continue to write regressions tests and try on 2.6 kernel  -- (high)
   * Fix timer progression calculation, according to the new
     caching code						-- (high)
   * write doc, website, ...					-- (high)
   * Check block allocation in linux 2.4 and remove
     compatibility code if possible				-- (high)
  
   * In hfs(plus)_btree_search , use a static variable to detect
     illegal recursion and abort in that case. (find the right
     number of recursion before reporting bug) -- easy		-- (medium)
   * Finish the HFS Extractor					-- (medium)
     (add mdb & vh extraction, and maybe journal)    

   * Write code to allow enlarging and moving HFS[+x]		-- (low)
   * Use a bitmap to internaly store the bad blocks		-- (low)
   * Less bitmap saves ?					-- (low)
   * Continue to change the relocation algorithm
     for a better one :)					-- (low)

--- NOT todo ---

   * debug HFS(+) Linux implementation (block allocation for HFS+,
     hard and sym links for HFS+, filename length for HFS, ...)	-- (dont)
	/// Linux 2.6 contains HFS(+) implementations with less bugs
	/// Linux 2.4 should not be used anymore to access HFS(+)
