TODO:
 * Fix bugs related to by_index family of functions
 * add a itar_config.h file having some #define ...etc 
 * have utility functions and macros (str_skipblank, strnchr2chr, xxalloc ..etc) in a separate inlined file
 * have a macro called gnu_basename to remove ambiguity
 * add xxstrndup,..etc and only use xxalloc/xxfree for small fast amounts, then make alloca as its default
	I used to love alloca and over use it, it was used for loading entire compressed files which is wrong as there is a limited stack size, it should only be used for temporary processing of file names or alike.
 * Remove redundancy (duplicated variables) and unused variables
 * Have a flag have_file_ls
 * Make sure it works fine if file list is not available (not a priority)
 * Make sure that popping non-existing files or arbitrary seeking  won't affect later operations (recover from bad using)
 * Make sure that it's bullet proof (recover from bad input)
 * Formalize and unify terminology used (index/chunk/...etc)
 * Having a make target for shared object .so
 * MS-Windows port
 * support  reference counting, duplicating (itar*) and referencing (not a priority)
 * support links (not a priority)
 * support GNU extention for long filenames (not a priority)
