TODO
libpff - clean up and refactoring

* refactor
** merge descriptors_index_tree and offsets_index_tree into index_tree?
** recover refactor libpff_recover_index_nodes to use index_node
** cache index nodes and/or index values
** cache local descriptors nodes and/or local descriptor values
** use or remove table->local_descriptors_cache

* libpff_table
  - move table header read functions into table header source file
  - move column definition read functions into column definition source file
  - cleaner reusable data structure? (libfdata)
  - create 7c table read entry definitions function
  - create ac table read entry definitions function
* have multi type work with data reference (in libpff_item) ?
* tree type implement use of initialize function (grep sizeof( libpff_tree_node_t ) )
* refactor direct use of array, list, and tree value attributes
* improve force decryption check
* refactor
  - create generic solution for data block handling for: individual blocks,
    array blocks, local descriptor blocks, table blocks
  - refactor libpff_local_descriptor_node_read to deal with compressed data
  blocks. read from data block?
    - fix libpff_local_descriptors_read_node_entry
  - item tree: wrap direct access to descriptors_index
  - recover: wrap direct access to descriptors and offsets_index
  - implement libfdata_list_set_element_by_index_with_mapped_size
  - 4k the back pointer of the array data block is the data identifier
    not the identifier?
    check for: "libpff_data_block_read: mismatch in data identifier:"
  - add a generic method to read data blocks from the file
  - local descriptors: cache local descriptor nodes ?
  - fix libfdata_list_set_element_data
  - table refactor entries into stand-alone multi set array ?
  - table read should empty the record_sets_array on read ?
  - record entry handle different data types on demand ?
  - what about table block?
  - use fvalue to store record entry data ?
  - libpff_item_values_get_record_entry_by_type add generic STRING TYPE ?
* code clean up
  - refactor table index into fdata list? with table blocks
  - does table index contain full copy of table data ? if so refactor
* refactor libpff_message_get_entry_value_utf8_string to match naming schema

* add threads RW lock to item
* remove libpff_data_block_clone
* pypff fix get_root_item

IOError: pypff_file_get_item_type_object: unable to retrieve item type.
libpff_table_read: invalid table: 0 - missing data identifier.
libpff_item_values_read: unable to read table.
libpff_item_values_get_record_entry_by_type: unable to read item values.
libpff_item_determine_type: unable to retrieve record entry: 0x001a.
libpff_item_get_type: unable to determine item type.

* add specific entry value flag for string types?
* add libpff_item_values_get_record_entry_by_type specific for string types?
* API add
  - libpff_multi_value_get_value_16bit
  - libpff_multi_value_get_value_floating_point
  - rename sub message to message ?
libpff
  - have libpff_record_entry_get_entry_multi_value use libfvalue data handle
    instead?
* pypff
  - create attachment item
  - make sure record set index and record entry index are uint32
  - add definitions
  - add record entry value functions
    pypff_record_entry_get_value_data_size
    get_value_data_as_boolean
    get_value_data_as_datetime
  - add multi value functions
  - add iterator objects (+/-)
  - add time as integer functions
  - add function to return offset of item
  - add more functions
  - add name to id map support
  - add message get_attachments_items function
  - add message get_recipients_items function

* local descriptor node caching
  - local descriptor node cache on top of data block cache ?
  - add cache timestamp
* add IPM.Post support (more1/Me.pst)
* corrupted
  - mark file with incorrect encryption as corrupted
* recovery
  - read data block size while scanning, ignore mismatches
  - check if local descriptors are read as block
  - handle corrupt file header and scan file?
* debug print
  - free map
  - densitiy list
* 64-bit 4k pages support
  - libpff_free_map.c
  - did the table value reference change?
* fix/check
  - check creation of .export when -t is a directory
  - remove copy file descriptors
  - Change most proxy pointers to const ?
  - check if libpff_item_get_entry_value_by_utf8_name works
  - Add function to easily map a named entry type to it's numeric value
  - add libpff_message_get_number_of_recipients() convenience function?
* add get entry id by name function
* add by_name functions (check corresponding TODO)
* fdata stream rewrite
  - array uses it as list
* clean up error path of libpff_item_tree_create_node

* libfdata update
  - improve stream, how deal with compressed data
  - fix libfdata_tree_initialize
* libpff IO handle
  - move index_nodes_vector and index_nodes_cache to file
* libfmapi
  - add debug output for PidTagFlagStatus
  - add debug output for PidLidSideEffects
- add debug output for PidLidTaskMode
- add debug output for PidLidAddressBookProviderArrayType
* implement libcdata support
  - refactor list
  - move tree node get value into libpff_item_initialize
* pffexport/export handle:
  - handle MIME attachments
  - protect against duplicate name clashes
  - dump attachment item values
  - add support for LIBPFF_ITEM_TYPE_COMMON (IPM)
  - separate item file into separate structure
  - move message specific funtionality into message file ?
  - allow to set output formatting utf8 or utf16
* item file:
  - create function to write enum values to the item file
  - create function to write flag values to the item file
* code clean up
  - what's the status of table block ?
  - unused and goto
* libpff: UTF8/UTF16
  - libpff_message_get_plain_text_body_size
  - libpff_message_get_rtf_body

* what about debug export and error notifications

Change item API into table API
* deprecrate and replace by copy data functions:
  - libpff_item_get_entry_value
  - libpff_item_get_entry_value_by_utf8_name
  - libpff_item_get_entry_value_by_utf16_name
* add table API ?
  - read data on demand like libesedb
  - move low-level item functions to table API
  - should table manage local descriptors and cache ?
  - separate item values code from table ?
  - expose record (entry) to API ?

* remove ascii codepage param from libpff_item_values_get_entry_value ?

* add const to export path in export handle
* replace internal_file by io_handle in item

* add item (descriptor identifier) type support
  - e.g. do not read a table if item does not contain a table

* cache local descriptor node (list element) in local descriptor value ?
  - reduces search for list element

libpff
* rename value (type) to table entry value (type)
* check node values ranges in index tree
* add abort support in long running function
  - make sure to return library to safe state
  - make sure to reset library abort value
* reduce impact of duplicate MAPI entry types
* validate table entry identifiers of level >= 1 with those of lower levels?
* codepage support
  - implement libuna-libpff codepage mapping function

libpff - check/test
* check support for multiple level 8c tables

libpff - API
* message store
  - add functions to retrieve special folder entry items
* add function to retrieve:
  - the file offset ranges used by an item ?
* name to id map
  - API access to entire name to id map ?
  - add libpff_file_get_name_to_id_map to include file?
* add a function to retrieve the total number of items?
  - maintain the total number of items?
  - maintain the total number of folder items?
* item
  - add read in buffers functions for entry values like message body?

libpff - error tollerance and recovery
* handle multiple descriptors in libpff_io_handle_get_descriptor_index_value_by_identifier
  and libpff_io_handle_get_offset_index_value_by_identifier
* analyze remaining/deleted content
* fragment recovery
  - add fragment support
  - allow fragments/partial items (add upper level reporting)
  - allow items without/with invalid local descriptors?
* item recovery
  - improve local descriptors read test - to read and check entire tree
  - improve performance of deleted offset index value duplicate check
  - handle duplicate offset index value identifiers
  - check fragment scan for correct looping of buffer
  - group recovered items with the same parent (do not link with allocated parent)
  - add support for recovered embedded items
* CRC error recovery
  - detect CRC32 corruption
  - detect data corruption
* automatically detect if allocation tables are useable ?

libpff - performance
* allocation tables
  - read allocation tables on demand ?
  - for large list support replace allocation offset list by tree variant
* optimized version of libpff_encryption_decrypt ?
* item hierarchy (tree)
  - build on demand ?
  - flag if sub nodes have been created ?
* item values
  - read directly into external buffer?
* attachment data
  - read directly into external buffer?
* does pre-reading item values of attachment improve performance ?

libpff - file format support
* add free maps support
* add support for cell existence
* add support for cc table type
* add support for the density list

pfftools
* pffinfo
  - add byte size string
* pffexport
  - add flag to overwrite export directory?
  - export the data in the pff file (embedded objects)
  - use identifier numbering for traceability?
  - add support for export to mbox, eml (ole2)
  - support control code in subject
  - provide export summary
  - allow to set date format
  - remove ftk output
  - create outlook html output
  - add support for setting recovery method
* export handle
  - try to export items without item type ?
  - handle duplicate attachment names (add suffix number)
  - export attachment to separate subdirectory
  - improve filename sanitation - do a sanity test
  - use close related character replacements to improve readability
  - check into unable to export attachment not being notified in export log
  - correctly handle skipping an item without class name
  - check if 0x0e1f (PidTagRtfInSync) is set and export alternating RTF body
  - move target path to common functions as much as possible
  - handle multi message body formats for non email items
    add function to handle prefered and available message body
    change text message body export of item types into prefered/available message body
  - item support
    - IPM.FAX
    - IPM.Post
    - IPM.StickyNote
    - IPM.Configuration.RssRule
    - IPM.Configuration.HomeTimeZone
    - IPM.Configuration.AvailabilityOptions
    - IPM.Configuration.Calendar
    - IPM.Configuration.CategoryList
    - IPM.Configuration.WorkHours
    - IPM.Configuration.RssRule
    - IPM.Sharing
    - IPM.Sharing.Binding.In
  - item support (also check library)
    - IPM.Recall.Report.Success
    - IPM.Microsoft.ScheduleData.FreeBusy
    - IPM.Microsoft.SniffData
    - IPM.Microsoft.FolderDesign.NamedView
    - IPM.MessageManager
* create pffcrack
  - implement password cracking
  - implement password reset (requires write)
* create pffconvert
  - convert pst into ost and vice versa (requires write functionality)
* create pffsearch/pfffind

* handle url as filename
  - improve sanitize filename function
* export attachment in small sized buffers
  - do not read entire item before its needed?
  - move item value debug to higher levels than table?
* contact
  - export rtf body

Multi language/locale support
* library data returns UTF-8 (done)
* input filenames remain system string (done)
* move character_t functionality to system_character_t (done)
* remove string conversion code (done)
* print output convert to system string
* to reduce conversions use as much as possible the system string type in
  the tools (have error use system string? or convert before print?)

Check/Validate
* parse code with slint

Debug
* check windows debug output
* do not error return on debug error?
  - do not fail item if debug print was unsuccessful
  - only fail on serious errors
* formatting problems in XP with "%s: %s index entry: %" PRIu8 " identifier: %" PRIu64 " is recoverable.\n","
  - identifier is off

Documentation:
* add 'getting started with programming libpff' document
* add C and Python, Java examples

Deployment:
* have configure set the default codepage ? also for debug
* create debian package files

Beta release
* remove deprecated functions in include/libpff.h
* remove deprecated definition in include/libpff/definitions.h
* remove deprecated definition in include/libpff/mapi.h
* remove deprecated functions in libpff_legacy.[ch]

Test:
* add autoconf/make test suite

File Format:
* handle missing message store (check)
* handle missing name to id map attributes (check)
* handle encryption type none, but data is still encrypted (check)
* what is the reason for empty (NULL) attachment data, however attachment has a size value !?
* Unknown reason for additional padding in external values array entries data
* What do some binary data item values contain?
* value '/' in (64-bit pst) UTF-16 eml filename is replaced by 0xff 0xf8 but not in subject
* PR_HTML seems to contain 7-bit ASCII with HTML encoding of extended characters
* Is there multiple level table entries support for bc, a5 and 9c tables?
* What is the relation between the 6c and 8c table and the secure id4

Notes:
* in the descriptor index a parent can have a child with a lower identifier value
* cannot create libpff_item_get_sub_item_by_utf8_name, only folders and messages have names

20141002
* see `git log' for more recent change log
* removed README.macosx
* changes for project site move

20140801
* bug fix in Python-bindings

20140624
* updated dependencies
* worked on record set/entry API
* worked on pypff

20140623
* updated dependencies
* worked on pypff

20140119
* 2014 update
* updated dependencies
* worked on pypff
* fixed bug in libpff_file_get_number_of_unallocated_blocks for compressed OST support

20131028
* worked on compressed OST support
  - local descriptors 
* worked on pypff

20131014
* worked on compressed OST support
  - local descriptors 

20131013
* worked on python bindings
* worked on compressed OST support
  - local descriptors 
* updated dependencies

20130929
* worked on setup.py, largely for MSI builds
* worked on compressed OST support
  - local descriptors 
* code clean up
* update msvscpp files

20130922
* code clean up
* worked on compressed OST support
  - local descriptors 

20130915
* worked on compressed OST support
  - local descriptors 

20130902
* worked on compressed OST support
  - local descriptors 

20130901
* added libcthreads build support

20130831
* worked tests

20130817
* refactored local descriptors
* worked on compressed OST support
  - local descriptors 

20130812
* worked on compressed OST support
  - local descriptors 

20130807
* worked on compressed OST support
  - table reference

20130806
* worked on compressed OST support
  - data array
  - table reference

20130805
* worked on recovery in compressed OST files

20130804
* updated dependencies
* worked on record entry values array number out of bounds issue
* refactored table index values to use libcdata array
* fixed invalid return code in error path
* worked on recovery in compressed OST files

20130731
* worked on fixing out of bounds read of name to id map string in an error
  toloreant way
* Added is corrupted function

20130730
* worked on name to id map string out of bounds issue
* worked on record entry values array number out of bounds issue

20130728
* Worked on 64-bit 4k pages support
* Worked on item recovery

20130722
* Worked on compressed OST support

20130721
* worked on major refactor
* updated msvscpp files
* worked on pypff

20130720
* worked on major refactor
* worked on pypff

20130719
* worked on major refactor

20130718
* worked on major refactor

20130713
* worked on major refactor
* worked on tests
* fix for handling floating point values in item file

20130718
* worked on major refactor

20130716
* worked on major refactor

20130714
* worked on major refactor

20130712
* worked on major refactor

20130704
* worked on major refactor

20130625
* worked on major refactor

20130620
* worked on major refactor

20130619
* worked on major refactor

20130618
* worked on major refactor

20130617
* worked on major refactor

20130616
* worked on major refactor

20130609
* updated dependencies

20130514
* updated dependencies

20130413
* updated dependencies

20130326
* worked on API by_utf8_name and by_utf16_name functions
* worked on libcdata rewrite

20130325
* worked on API by_utf8_name and by_utf16_name functions

20130224
* worked on compresses OST support
* worked on libfdata update

20130223
* worked on 64-bit 4k page file format support
* worked on compresses OST support
* code clean up
* bug fixes in error path
* improved debug output

20130220
* pffexport:
  - worked on IPM.DistList support
* changes to spec file

20130203
* libpff
  - fixes in error code paths
* libfmapi
  - improved debug output
  - fixes in error code paths

20130202
* pffexport:
  - added message flags
  - improved output of flag types
  - worked on IPM.DistList support
* tests:
  - added pffinfo test
* libfmapi
  - improved debug output
* updated macosx files

20130114
* 2013 update
* updated dependencies

20120113
* removed contrib in favor of sed conversion scripts

20121123
* pypff: code clean

20121108
* worked on libcdata integration
* code clean up

20121107
* worked on libcdata integration
* code clean up

20121105
* worked on libcdata integration

20121104
* updated dependencies
* pypff: bug fixes
* worked on libcdata integration

20120808
* renamed crc32 to checksum in libfmapi
* code clean up

20120802
* bug fix in pffexport

20120729
* applied updates
* changes for project move
* bug fix in export handle, address type and email address were swapped in the
  previous update
* Changed how duplicate attachments are named, attachment are now prefixed
  with their index number
* updated msvscpp files

20120611
* bug fix in item file hexdump function

20120610
* applied updates
* bug fixes in macros in include header
* worked on WINAPI UTF-16 output support

20120513
* applied updates
* worked on pypff
* disabled codegear files
* API
  - removed deprecated functions
  - added support for contact email adress 1, 2 and 3
* pffexport:
  - added support for contact email adress 1, 2 and 3
  - removed export_handle_make_directory
* updated msvscpp files

20120424
* applied updates

20120304
* moved LCID from libfmapi to libfwnt

20120213
* added dpkg files
* pypff: added -avoid-version to Makefile.am
* updated libnotify, libsystem, libbfio, libfvalue

20120127
* code clean up
* pffinfo: implemented info handle

20120103
* code clean up

20120102
* 2012 update
* code clean up

20111025
* updated m4 files
* code clean up

20111018
* updated configure.ac and m4 files
* updated README files
* updated spec and pc files
* updated common, libsystem, libuna, libbfio, libfdatetime, libfvalue
* pypff: code clean up

20110927
* updated libfmapi

20110904
* pypff: code clean up
* updated configure, common, array type, libcstring, log handle, libuna,
  libbfio, libfdata, libfdatetime, libfvalue

20110705
* updated libfmapi

20110523
* code clean up

20110508
* updated libfmapi

20110425
* updated libuna with codepage 932 and 936 support
* updated msvscpp and codegear files

20110413
* bug fix in libfdata regarding recovery

20110412
* bug fix in libfdata regarding attachment data read without initial seek
offset

20110320
* update libcstring, libsystem
* fix for INTLLIBS

20110317
* updated configure.ac, libcstring, libsystem, libuna, libbfio, libfdata,
  libfguid, libfwnt, 
* worked on restriction for sanitized filename and path

20110209
* updated libfmapi

20110201
* update libsystem, bug fix for split of empty string

20110120
* pfftools: code clean

20110119
* pfftools: code clean

20110118
* updated libcstring, libsystem, libuna, libbfio, libfdata
* API: worked on UTF-8 and UTF-16 macros
* pfftools: code clean
* updated libpff.3 man page

20110116
* updated libfmapi

20110114
* updated libcstring

20110113
* updated common, libsystem, libuna, libbfio, libfdata, libfvalue
* pfftools: code clean
* API: worked on UTF-8 and UTF-16 macros
* updated libpff.3 man page

20110107
* updated configure.ac
* updated libsystem, libuna, libbfio, libfdata, libfdatetime, libfguid,
  libfvalue, libfwnt, 
* 2011 update
* code clean up
* fixed typo changed unsuported => unsupported
* API: add conveniance macros for:
  - sent representing name
  - sent representing email address
  - postal address
  - primary phone number
  - home phone number
  - primary and secondary business phone number
  - mobile phone number
* pffexport: added value to (outlook) message header output
  - sent representing name
  - sent representing email address
* pffexport: fixed missing note and rss feed body text
* pffexport: added some values to contact output
* libfmapi: updated some property types

20101224
* code clean up
* updated libcstring

20101219
* updated array type
* updated libsystem, libbfio, libfvalue
* updated log_handle.[ch]
* code clean up libpff, pfftools

20101218
* code clean up pfftools

20101216
* updated configure, added gettext
* updated array type, list type, offset list
* updated libsystem, libbfio, libfvalue

20101203
* updated common, array type, list type, tree type, offset list, liberror,
  libnotify, libsystem, libuna, libbfio, libfdata, libfdatetime
* changes for libfdata update
* updated contrib
* code clean up
* fix for clone data array
* optimized libfdatetime filetime to date time values conversion

20101120
* updated configure, libcstring, liberror, libbfio, libfvalue
* updated offset list
* updated libpff.pc.in libpff.spec.in

20101113
* updated libfmapi
* updated pffinput.c

20101111
* updated libfvalue

20101110
* worked on fix for force decryption being set by recovered items
* updated libfvalue

20101106
* updated include/error.h, liberror, libbfio, libsystem
* fixed some 64-bit WINAPI compilation warnings

20101105
* added libpff.rc for DLL build, currently only supported in msvscpp build

20101028
* pffexport:
  - worked on code clean up
  - added dump item values (-d) option
    export mode debug no longer dumps item values and exports orphan/recovered
    items
  - added dump item values of recipients and attachments items
  - added quiet (-q) option
* fixed invalid cache issue for cloned items
* added support for: IPM.Conflict.Message
* fixes for pypff
* added contrib directory for msvscpp win64 build files

20101027
* updated configure.ac
* updated include/error.h
* updated include/types.h
* updated array type, offset list
* updated common, liberror, libsystem, libbfio, libfvalue
* worked on pypff error handling
* libfmapi added support for unknown one-off entryid flag
* libfmapi debug output fix
* default version info of pfftools is now short
* fix in Windows debug output
* pffexport: added export of recipients and attachments for activities
* fixed invalid cache issue for embedded attachments
* fixed rougue detach signal handler pffinfo

20101014
* corrections in examples

20101012
* added missing jpff files

20101008
* fixed bug in debug output
* fixed issue in libfdata reference

20101007
* fix for binary mode issue in export_handle
* fix for premature end of string issue in libpff_message_get_html_body
* pffexport: check for existing directories now based on export type
* pffexport: replaced sprintf due to cross platform inconsistencies
* updated liberror, libnotify, libsystem, libbfio, libfvalue

20100915
* changes for make dist

20100911
* updated array type
* updated libfdata, libfdatetime, libfwnt
* worked on Java binding (jpff)
* worked on examples

20100903
* code clean up of table and item values
* added support for recurring appointment: IPM.OLE.CLASS.{00061055-0000-0000-C000-000000000046}
* updated libfguid

20100902
* code clean up of table and item values

20100901
* code clean up of table and item values
* added cache timestamp to libfdata

20100831
* code clean up of table and item values
* worked on moving data reference to libfdata

20100830
* worked on moving data reference to libfdata

20100828
* worked on moving data reference to libfdata

20100825
* libfdata: protect against small tree node cache sizes < 4 entries

20100824
* small correction in debug output
* libfdata: fixed cache entry duplicate on insert

20100818
* updated libcstring, libsystem, libuna, libbfio, libfdatetime
* worked on Java binding (jpff)

20100725
* worked on pypff
* the folder functions now try to determine the item type if type is undefined
* added mingw compilation document
* updated libbfio
* changed add into append
* message body codepage is ignored, seems to be incorrect

20100724
* updated include/error.h and liberror
* updated array type
* update libuna, libbfio
* worked on pypff
* deprecated LIBPFF_FLAG_READ/WRITE in favor of LIBPFF_ACCESS_FLAG_READ/WRITE

20100722
* changes to libfdata
* updated libfvalue

20100717
* initial work on pypff
* pffexport added error tollerability for failed recipient export

20100716
* updated libuna, libbfio, libfdata, libfdatetime, libfguid, libfmapi, libfwnt, libsystem
* updatad include/codepage.h
* updated include/error.h and liberror
* updated array, list and tree types
* code clean up and refactoring
* added support for handling attachments with duplicate filenames

20100712
* changes to libpff_item_clone behaviour, a clone of NULL is now valid
* textual changes

20100711
* textual changes

20100710
* code clean up and refactoring
* bug fix in debug output of libfmapi
* worked on improving recovery
* worked on item type support
* add missing libfguid and libfwnt directories to configure.ac

20100709
* code clean up and refactoring
* worked on libfdata cache lookup performance
* removed libpff_item_values_get_sub_node_by_identifier

20100708
* code clean up and refactoring
* worked on libfdata version of local descriptors tree for faster cloning
* worked on libfdata cache lookup performance

20100707
* code clean up and refactoring
* worked on libfdata version of local descriptors tree for faster cloning

20100706
* worked on libfdata block full cache handling
* code clean up and refactoring
* updated libuna, libbfio, libfdatetime
* small fixes
* updated array, list and tree type
* worked on clone functions

20100705
* reverted to 20100704-6
* worked on recovery performance
* updated libbfio

20100704
* worked on tree recovered node support
* worked on improving recovery
* worked on recovery performance

20100703
* worked on improving recovery
* code clean up and refactoring
* worked on recovery performance

20100702
* worked on libfmapi
* code clean up and refactoring

20100701
* worked on file exists speed improvement based on idea by Björn Ganster
* worked on on-demand read of index nodes
* updated common, libbfio
* updated msvscpp files
* updated codegear files
* worked on libfmapi

20100629
* updated common, libcstring, liberror, libnotify, libsystem
* updated libuna, libbfio, libfdata, libfdatetime, libfmapi
* added libfguid, libfwnt
* clean up
* worked on on-demand read of index nodes

20100624
* updated libfmapi

20100619
* updated libbfio and libfdata
* updated array type

20100611
* worked on libfdata
* updated libbfio
* refactored index item to index entry

20100610
* worked on libfdata
* fixed memory leak in pffinfo

20100608
* updated msvscpp files
* updated libbfio
* worked on libfdata

20100607
* worked on libfdata
* moved buffer data reference into separate file

20100606
* worked on libfdata

20100604
* worked on libpff_data_block

20100603
* worked on libpff_data_block
* worked on libfdata_block
  - worked on cache hit handling
  - worked on set segment data

20100601
* added cache release to libfdata_block
* worked on libpff_data_block

20100531
* worked on integrating libfdata into data_reference
* worked on refactoring data_array

20100530
* worked on integrating libfdata into data_reference

20100529
* added initial version of libfdata
* removed attach/detach
* worked on integrating libfdata into data_reference

20100524
* some code refactoring

20100522
* some code refactoring

20100514
* added WINAPI heap allocation function support to common/memory.h
* small adjustment libpff_file.c

20100512
* small adjustment in liberror_error.c

20100510
* export handle: additional characters for sanitation
* bug report email change in manuals

20100506
* worked on configure.ac clean up

20100505
* updated configure.ac and added MAINTAINERCLEANFILES to Makefile.am files
* updated common, libcstring, liberror, libnotify, libsystem, libuna, libbfio,
  libfdatetime
* changed amount of in number of

20100504
* updated msvscpp and codegear files
* fix in debug output of local descriptors
* export handle added notification of unable to export sub folders and messages
* added error tollerance for table entry value reference outside of range of table index

20100503
* worked on improving libfmapi debug string codepage support
* refactored value type string handling code

20100501
* added mingw support to include type header
* updated common, libcstring, libbfio, libsystem
* worked on acinclude.m4 clean up

20100429
* libfmapi: added support for codepage 1200
* improved support for narrow string name-to-id map string (RIM)
  - support to handle trailing zero
  - removed trailing s in debug output
* added codepage 1200 support like in libesedb
* file content version check more tollernant <= 0x000f ANSI, >= 0x0015 Unicode
  other versions unknown
* updated libcstring
* fixed small leak cleaning up orphan items due to tree node change

20100427
* worked on data array caching

20100424
* worked on Windows extended filename support

20100419
* adjusted export handle error output
* fixed error in ignore data array cache flag

20100416
* updated libbfio, libuna, libfdatetime
* fixed bug in liberror
* removed restriction for recovering items with existing and duplicate identifiers

20100415
* worked on support for 'unencrypted' encrypted pst files
  added support for unencrypted values array entry
* worked on refactoring export handle to support writing
  prefered message body to stream

20100414
* worked on Windows extended filename support

20100412
* fixed 7c table 8 byte value issue
* worked on Windows extended filename support

20100411
* worked on Windows extended filename support

20100403
* worked on Windows extended filename support

20100330
* applied fix for non-linear values array

20100329
* fixed error in debug output
* added pffexport -m noatt option for testing export without attachments

20100328
* updated libstring, liberror, libuna, libbfio, libsystem, libfdatetime, libnotify
* updated pfftools for libcstring and libsystem update
* Email change
* updated msvscpp and codegear files
* updated macosx package files
* removed common/narrow_string.h common/wide_string.h
* updated common

20100327
* worked on libstring

20100324
* worked on libstring
* removed libpff_guid.[ch]
* updated libbfio

20100322
* improved debug/verbose output in data array

20100321
* fix in export handle for handling empty conversation indexes
* improved reading ac table
* added support for 64-bit local descriptor branch nodes
* updated libfdatetime

20100320
* fixed small memory leak in recovery functions, introduced by update
* fixed clean up issues in recovery functions, introduced by update
* refactored several memory allocate to initialize functions
* missing local descriptor values in recovered items are considered empty
* fixed recovery with no unallocated ranges
* added recovery sanity check: check if the local descriptors of a recoverable item are readable

20100319
* fix for stand-alone libfdatetime inclusion in pfftools
* fixed typo in acinclude.m4
* fixed error in handling LIBPFF_RECOVERY_FLAG_IGNORE_INDEX_DATA
* fixed error in handling table index introduced by MS-PST update for a5 table
* updated libuna, libbfio, libfdatetime

20100315
* updated libbfio
* small fixes in attached file io handle

20100304
* worked on support of unused table index values
* worked on support for 'unencrypted' encrypted pst files

20100221
* small changes

20100220
* worked on support for 'unencrypted' encrypted pst files

20100202
* worked on support for data blocks

20100130
* worked on support for data blocks

20100129
* worked on new file format findings from [MS-PST]
* API: changed index node blocks into page blocks
* removed deprecated libpff_email_get_internet_headers_size and libpff_email_get_internet_headers
* debug: added name-to-id-map identifiers
* libpfmapi: changed value type identifiers to newer definitions
* libpff not uses the sentinel to determine the file type of unknown PFF versions

20100128
* worked on error tollerabilty and recovery
  for PST file with invalid index and invalid allocation tables

20100127
* worked on error tollerabilty and recovery
  for PST file with invalid index and invalid allocation tables

20100126
* updated common, liberror, libbfio, libsystem
* worked on error tollerabilty and recovery
  for PST file with invalid index and invalid allocation tables

20100114
* small fixes
* updated common, libfmapi

20100111
* fixed typo

20100107
* added export of conversation index to separate file
* updated common, liberror, libsystem, libuna, libbfio, libfdatetime

20100106
* minor changes in libfmapi

20100105
* updated common, libbfio

20100103
* small changes
* updated common, liberror, libnotify, libuna, libbfio, libfdatetime
* 2010 update
* updated tree type
* updated include/types.h

20091225
* small changes
* removed unnecessary calls to libpff_item_detach

20091223
* worked on MAPI definitions

20091222
* worked on MAPI definitions
* renamed internet headers to message transport headers

20091220
* updated libuna

20091219
* changed default codepage
* updated manuals
* removed filetime from export handle using libfdatetime instead
* updated libuna
* worked on UTF-7 support

20091217
* updated libfdatetime

20091214
* updated libbfio, libfdatetime, libuna

20091211
* worked on accessing items by name
* updated libuna

20091210
* added local descriptors support for libpff_item_get_sub_item_by_identifier

20091209
* worked on libpff_file_get_item_by_identifier

20091208
* worked on libpff_file_get_item_by_identifier

20091207
* worked on libpff_name_to_id_map_entry_get_utf16_string

20091204
* updated libfdatetime
* worked on exporting IPM.Document
* added check for zero byte in HTML binary data
* worked on accessing items by name
* fix for 0 return in libpff_item_get_sub_item_by_identifier
* updated libuna, for compare functions

20091128
* fixed export of incorrect date and time values in OutlookHeaders.txt
  - bug in byte stream macros

20091122
* small changes

20091117
* worked on get value type function

20091115
* updated common
* removed item list element

20091114
* updated libbfio - open on demand
* added open on demand for cloned file io handles

20091113
* removed item_reference_list
* fix for cloning of file io handle for items
* removed handling of HTML body codepage because of possible conflict with html parser
* removed libpff_item_free_no_detach
* improved tree node clone function
* worked on moving data array file io handle to item layer
* updated libbfio, fix for file clone

20091112
* worked on moving io handle file io handle to item layer
* updated libbfio (fix for handle_clone)
* add cloning of file io handle for items
* fixed error in libpff_attached_file_io_handle_clone
* removed All rights reserved
* updated libsystem, liberror, libnotify

20091111
* worked on item clone function
* worked on improving asynchronous usage of sub items (attachment)
* moved stdout to notify_stream in export handle
* added definition for default export handle notify stream
* added support for LIBPFF_ITEM_TYPE_EMAIL_SMIME to export handle
* fixes for msvscpp and codegear compilation
* worked on moving file io handle to item layer

20091110
* worked on item clone function
* worked on local libpff and libfmapi

20091109
* worked on improving asynchronous usage of sub items (recipients, attachments)

20091029
* updated libbfio
* changed behavior of non-managed BFIO handle

20091028
* worked on attachment data libbfio object

20091026
* worked on refactoring endian.h into byte_stream.h
* updated libuna, libbfio, libfdatetime

20091024
* removed backwards compatibility macros from API
* added flags to get entry functions to ignore name to id map

20091023
* added multi value test code in export handle

20091022
* fixed typo in multiple error output string

20091019
* worked on API support for conversation index

20091016
* added missing set ascii codepage to pffexport
* refactored libpff handle out of extraction handle
* fixed error in set codepage function
* fixed 0 return in message string functions

20091014
* worked on ftk 'compatible' output of pffexport

20091013
* worked on ftk 'compatible' output of pffexport

20091008
* added failsave in libfmapi debug

20091003
* corrected license in list and array type and several of the pfftool handles
* updated libbfio
* updated acinclude

20091001
* updated array and list type
* code clean up for use of array and list type
* change function to libpff_list_get_value where better suited than libpff_list_get_element

20090930
* worked on generic b5 header indirection level support
* worked on code clean up
* added support for attachments with attachment method by reference
* fixed multiple memory leaks
* added a5 table array support, for this the a5 table gets a set per table array entry
  this is necessary because of table value references to the values in the a5 table

20090929
* Worked on CodeGear project files
  - disabled creation of precompiled headers
* Worked on MSVSCPP solution files
  - enabled DEP
  - enbled random base
* worked on UTF-7 support (libuna)
* worked on b5 header indirection level support for bc table
* worked on generic b5 header indirection level support
* worked on code clean up

20090928
* code clean up
* worked on reading attachment data buffer wise
* added support for incorrect message body codepage with missing message codepage
* updated libuna

20090927
* updated libbfio, libsystem
* worked on data array cache
* worked on reading attachment data buffer wise
* libpff_attachment_get_data is currently left in the code for backwards compatibility

20090921
* added LCID debug code
* moved codepage debug code to separate file

20090919
* worked on list and tree types

20090918
* added initial support for sticky notes
* remaining IPM.Note item classes are considered an e-mail e.g. IPM.Note.StorageQuotaWarning
* changed behavior of libpff_table_get_entry_value_by_entry_type to allow
  unmapped matching

20090917
* refactored creation of array out of libpff_table_read_index
* fixed name to id map boundary problem, also solves unnecessary rereads of
  name to identifier data from file
* worked on UTF-16 string support
* added support for handling invalid message body codepages
* fixed error in detection of encrypted data
* worked on multiple level array support

20090916
* worked on variating named properties
  - implemented support for IPM.Schedule.Meeting.Request
* pffexport now exports meetings, tasks and contacts to seperate directories

20090914
* added seek offset 0 when reading file header
* worked on functions to retreieve
  - the number of sub folders in a folder
  - a sub folder in a folder
  - the number of messages in a folder
  - a message in a folder
  - the number of associated items in a folder
  - an associated item in a folder
* fixed error in libpff_item_tree_get_child_node_by_identifier
* worked on exporting item values in debug mode
* pffexport now export the item values of unknown items in debug mode
* worked on export summary

20090911
* Added missing C++ closing statement in libsystem_support.h
* Fixed passing of incorrect size to data reference buffer initialize
* Worked on handling corrupt Exmerge pst files

20090910
* worked on implementation on reading data on demand
* pffexport no longer generates an error when e-mail does not contain a body text
* updated msvscpp solution
* worked on refactoring 7c table function
* worked on refactoring ac table function
* worked on handling attachment without attachment data

20090909
* worked on implementation on reading data on demand
* worked on refactoring 7c table function

20090907
* made corrections to configure.ac
* worked on libfdatetime integration
* changed libfmapi integration preperation for stand-alone version
* updated behavior of pffexport export mode to handle recover, debug and all
  export

20090905
* updated libpff Makefile.am
* updated pffinput codepage detection

20090904
* worked on orphan item support
* worked on integrating pffexport and pffrecover
* worked on exporting orphan items
* moved functionality of pffrecover into pffexport
* removed pffrecover
* updated common, libuna
* updated codpage definitions
* worked on removing notify stream, use functions instead
  necessary for integration of notify without stream (e.g. for glib)

20090903
* small fixes for BFIO API support
* small fixes in output of pfftools
* fixed error reading bc table due to behavior change of reading data on demand
* added support for ignoring item tree nodes with an invalid parent node

20090830
* small adjustment to configure.ac
* worked on data array read on demand
* worked on refactoring out some of the item_values functions
* worked on refactoring direct access to array type to use functions

20090829
* updated common, libnotify, libbfio, libuna
* update msvscpp and codegear files
* removed pffsignal deprecated by libsystem_signal
* worked in libbfio support
* added signature functions
* worked on detecting 'invalid' encrypted PFF's with encryption type none
* removed encryption key from library and API
* fixed incorrect addition to item hierarchy of related items for unknowns
  related items are now cached locally in item no longer globally in item hierarchy
* worked on local use of libpff
* fixed libbfio detection
* worked on generic support for 6c, 8c and 9c tables
* fixed leak in libfmapi_debug
* fixed error reading a5 table introduced by handling empty a5 table
* worked on data array read on demand

20090816
* implemented libsystem for pfftools

20090811
* fix in date and time

20090810
* fixed initial notify output to be verbose in pfftools
* fixed missing fclose in error handling in export handle 

20090808
* worked on handling empty a5 tables
* worked on multi values debug output
* multi value elements are now set to NULL if element has size of 0
* updated libbfio
* worked on Borland C++ compiler support
* removed deprecated API functions
* implemented libpff_message_get_string(_size) functions that handle
  message specific codepage handling
* refactored codepage handling code from libpff_message to libpff_value_type
* added debug support for 0x1013 (PidTagHtml)

20090807
* fixed error in debug of conversation index (error in MSDN documentation)
* fixed error in libpff_message_get_modification_time macro
* moved MAPI debug code to libfmapi
* added support for handling codepage 65001 (UTF-8) and 65000 (UTF-7)
* fixed several memory leaks in pfftools export handle
* fixed several memory leaks in libpff ac and 9c tables

20090803
* updated libbfio
* updated include/libpff/types.h.in
* small changes for MSVSCPP build

20090802
* updated libuna
* updated libbfio
* updated common code for Borland C++ compiler support
* added debug support for several definitions
* updated liberror
* updated libpff_error
* updated libbfio
* updated serveral of the code files in pfftools for Borland C++ compiler support
* added m4 directory support to autoconf/make files for libtool
* refactored plain text body macros to function to support message codepage
* fixed error in data array initialize, not resetting pointer to NULL on error
  (pointed out by B. Ganster)

20090801
* fixed missing error return in libpff_table
  (pointed out by Jim)
* small updates to configure.ac

20090724
* worked on runtime 6c, 8c and 9c table support

20090722
* worked on read data array entry on demand
* fixed incorrect addition to item hierarchy of related items
* fixed several memory leaks in pff tools export handle
  (in sub_folders, recipients and unknowns export functions)

20090721
* worked on read data array entry on demand

20090720
* worked on read data array entry on demand
  - added descriptor data layer
* fixed error regarding return value of message rtf and html body functions
* several small adjustments in libfmapi

20090719
* several small adjustments in libfmapi

20090718
* worked on read data array entry on demand

20090717
* worked on get sub item by identifier API function
* worked on read data array entry on demand

20090716
* several small adjustments in libfmapi
* added debug support for several definitions
* fixed error in debug output - the description of mapped numeric entries was
  not resolved correctly

20090715
* fixed in error in error output of export handle
* fixed error in retrieving mapped numeric entry types
* several small adjustments in libfmapi

20090711
* several small adjustments in libfmapi

20090710
* several small adjustments
* refactored class_identifier out of name to id map entry using GUID instead
* worked on sub messages support
* worked on sub associated contents support
* fixed missing mapping of named attributes in debug output

20090708
* applied table array aligment fix from earlier fixes on other platform

20090629
* small fixes to libpff_multi_value.h

20090628
* worked on sub folders support
* clone allows empty table
* implement fail safe for usupported table entries level
* export handle now handles duplicate folder names
* refactored attachments and recipients to libpff_message and unknowns to
  libpff_folder

20090627
* fixed Windows 64-bit ssize_t definition issue (pointerd out by Xavier Roche)
* fixed incorrect name of 32 and 64-bit in libpff_multi_value.h (pointed out
  by Warren Brown )
* fixed incorrect libpff_name_to_id_map_entry_get_name in
  libpff_name_to_id_map.h (pointed out by Warren Brown)
* worked on implementation of multi values
* fixed handling of multiple levels of local descriptors
* updated libbfio
* worked on 8c table support

20090625
* implemented multiple level table entries support for 7c and ac table
* fixed error table values array realignment
  no longer skips 0 value part of realignment value
* fixed typo in export handle
* fixed print of verbose data without verbose flag in libfmapi

20090624
* updated libbfio
* worked on multiple level table entries support

20090623
* worked on failure of handling embedded OLE attachment
* add missing C++ wrapped to libnotify
* worked on name to id map rewrite

20090622
* worked on libnotify
* small updated for liberror
* replaced libpff_notify by libnotify

20090621
* worked on libnotify it is the starting point of improved verbose and debug
  notification support
* added libfdatetime

20090620
* implemented the notification stream file (based on patch by wbrown)
* moved attachment and recipient functions from email to item
* added support exporting attachment and recipient in appointments

20090618
* added behavior to libpff_table_get_entry_value_by_entry_type to allow
  access to named properties using the entry_type value

20090617
* added support for ASCII Name-to-ID strings
* add named_property argument to libpff_item_get_entry_type
* removed libpff_item_get_item_type macro from include file

20090616
* fixed pffinfo not handling missing message store values
* fixed handling corrupted table index
  and correcting corrupted first table index
* the table definitions name to id map entry is now passed
  to prevent a second lookup

20090615
* worked on libfmapi and MAPI value debug output
* add GUID and multi value GUID support API functions

20090614
* worked on libfmapi and MAPI value debug output

20090613
* worked on libfmapi and MAPI value debug output

20090611
* worked on multi value support

20090528
* updated libbfio

20090527
* fixed 16-bit value reference to a 32-bit value in libpff_table_read
  this caused problems with table headers in table arrays entries other than
  the first
* fixed OLE attachment method in libpff_attachment_get_data_size
  - item now caches attachment embedded object data
* added embedded object debugging

20090526
* worked on multi value support
* refactored value type conversion to separate functions
* export handle now handles recipient type orginator and BCC
* fixed wide string issue regarding log handle output "Processing folder X in path Y"

20090525
* added libpff_item_get_entry_value_16bit to API based on patch of Warren Brown
* added libpff_item_get_entry_value_binary_data_size and
  libpff_item_get_entry_value_binary_data to API
* worked on multi value support

20090524
* fixed last offset inclusion in libpff_offset_list_range_is_present
* updated libbfio
* updated API for notify and error functions
* updated common/types.h to be generated by autoconf
* implemented libpff_table_initialize

20090522
* some minor changes
* worked on implementing support for local use of library
* updated libbfio
* updated array and list type with newer versions
* updated tree type
  - created initialize function
  - changed free node function
* updated item values
  - created initialize function
  - changed free function

20090521
* fixed typo in libpff.spec.in
* refactored libpff error functions into libpff_error.c

20090520
* worked on conversation index child blocks

20090519
* worked on conversation index child blocks

20090518
* worked on conversation index child blocks

20090517
* worked on debug output for X.400 object identifiers
* updated tree node value functions to have an error parameter
* implemented tree node clone function
* worked on local descriptor hierarchy support
* fixed issue in error handling in libpff_index_node_initialize
* removed remove list hierarchy quick hack (libpff_descriptor_read_local_descriptors_append)
* changed local descriptors node level into node type
* removed LIBPFF_CODEPAGE_WINDOWS_1250 in item values, codepage is now passed from handle

20090516
* worked on integrating the recipients patch by Krzysztof Mazur
* worked on clone functions
* updated list value functions to have an error parameter
* updated libbfio
* fixed error in libpff_list_insert_value and libpff_offset_list_add_offset
* the internet headers are now always exported to a separate file
* attachments are now stored in the subdirectory Attachments

20090514
* made libfmapi less dependent on libpff for libnk2
* worked on integrating the recipients patch by Krzysztof Mazur
* updated common/endian.h with libewf version

20090513
* worked on integrating the recipients patch by Krzysztof Mazur
* corrected fopen in export handle, on consideration only the attachment and
  e-mail files need to be opened in binary mode, not the contact and other
  output files

20090512
* updated liberror and libuna

20090509
* fixed missing C++ definition in log handle
* fixed fopen binary mode for WINAPI pointed out by krzysztofmazur (Krzysztof Mazur)
* fixed incorrect sizeof type in export handle pointed out by warrenthebrown (w brown)
* fixed missing default of system string ASCII codepage

20090427
* updated libuna for bug regarding UTF-16 <= 2

20090424
* several small updates

20090408
* updated libbfio
* added API functions to retrieve number of item values sets and entries (per set)
* added API function to retrieve the entry and value type of an item set/entry index
* changed API function libpff_item_get_entry_value to use value_type as input
  now matches the behavior of the MAPI properties, but still allows for any
  value type lookup
* fixed TODO in libpff_folder_get_content_type
* several MAPI definition changes
* libpff now remaps numbered entry types, this allows access to some of the
  mapi properties in the name to id map
* added float and double value type API functions
* renamed multiple API function to match MAPI
  - libpff_folder_get_content_type to libpff_folder_get_type
  - message_get_type_x to message_get_class_x
  - libpff_contact_get_file_as to libpff_address_get_file_under macro
  - email_get_x_body to message_get_x_body

20090404
* added static executable build

20090331
* Worked on initial version
* Updated WINAPI wide character support
* added wide character mkdir support
* moved class identifier debug code in name_to_id_map to libpff_debug
* added debug print of name to id map validation entries
* removed report item type, updated item type detection

20090330
* Worked on initial version
* Worked on support for UNICODE directive
* Updated libbfio with libewf 20090329 version
* Updated caseless compare functions with WINAPI support

20090328
* Worked on initial version
* Worked on security descriptor structure in libfmapi
* Worked on entry identifier structure in libfmapi
* Made libpff_debug_property_type_value_print item type aware

20090327
* Worked on initial version
* worked on libfmapi property type support
* added caseless compare functions to common string functions

20090326
* Worked on initial version
* Corrected Windows printf integer specifications
* implemented guid to class identifier conversion and class identifier compare functions in libfmapi
* Corrected some errors in debug output
* changed several unknowns to possible knowns

20090325
* Worked on initial version
* Fixed error in libpff_attachment_get_short_filename_size and libpff_attachment_get_short_filename
  pointed out by Igor Rogov
* Fixed strange issue in libfmapi_filetime_to_string
  sprintf_s crashes when string is too small - which is unexpected behavior
* implement class identifier aware property debug

20090322
* Worked on initial version
* working on MAPI type debugging
* worked on unknowns

20090321
* Worked on initial version
* Implemented libpff_attachment_get_data_size as a function due to attachment
  size mismatch with size of data and size in the attachment item table
* Changed comment in .pc .spec and library manual page
* update glob.[ch] with version of libewf - glob is currently not used, but
  will remain in the code for now
* refactored _allocate( to _initialize( - except for table entries allocation function
* added support for the 0x0f pst version type
* worked on renaming list to local_descriptors and change it into a tree
* working on MAPI type debugging

20090313
* Worked on initial version
* updates msvscpp files

20090312
* Worked on initial version
* added support for separate libbfio
* updated libbfio to 20090312 version

20090307
* Worked on initial version
* Updated libbfio - removed libbfio_interface

20090302
* Worked on initial version
* Fixed error creating recovery directory

20090224
* Worked on initial version
* Fixed error regarding export of small attachment names (introduced by export handle)

20090223
* Worked on initial version
* Fixed errors in path creation (introduced by export handle)
* Fixed error in log handle

20090222
* Worked on initial version
* Updated msvscpp files
* Worked on full locale support
  - removed character_t
  - updated charset detection

20090221
* Worked on initial version
* Worked on full locale support
* moved file_io_handle creation to libpff_file

20090220
* Worked on initial version
* Small fixes
* ascii codepage now passed to debug function
* fixed month 13 in filetime string
* worked on export handle

20090219
* Worked on initial version
* Update of error output

20090204
* Worked on initial version
* Updated msvcpp files

20090202
* Worked on initial version
* Worked on libfmapi (synced with msdn)

20090201
* Worked on initial version
* Worked on libfmapi (synced with libmapi 0.8 mapi-properties)

20090131
* Worked on initial version
* fixed codepage 1258 restriction in libpff_file_set_ascii_codepage
* moved MAPI and codepage definitions to separate header file
* moved MAPI code to libfmapi (file MAPI library) intended for local use only

20090128
* Worked on initial version
* fixed small bugs in distribution files

20090125
* Worked on initial version
* Worked on RTF uncompress buffer too small
* Worked on false HTML body export
* Worked on name to id map

20090124
* Worked on initial version
* Updated libuna and liberror
* Added support for libbfio
* Implemented crc check on 64 bit file header data
* Worked on named properties
* Implemented big endian GUID support
* Worked on RTF uncompress buffer 2 bytes off
  the uncompressed size does not equal the actual number of resulting rtf bytes
  the uncompressed size does not entail the 2 trailing zero bytes
* Worked on name to id map

20090118
* Worked on initial version
* Worked on HTML body functions
* Updated configure to conform to cache value naming schema
* Output format now allows txt and htm also as type definitions
* Worked on all output format type definition
* Moved html, rtf and plain text body export to separate functions

20090116
* Worked on initial version
* Fixed debug output of file header values to match other
* Created an unambiguous filetime string
* Added debug values for password and attachment descriptor item
* Worked on changing output format into preferred output format
* An non empty body is preferred above an empty

20090115
* Worked on initial version
* Updates headers
* Fixed missing debug definition for non debug compilation
* limited debug output to verbose output mode

20081221
* Worked on initial version
* Worked on filetime string error
* Worked on integrating basic file IO library (libbfio)

20081218
* Worked on initial version

20081217
* Worked on initial version
* Changed pst_file_signature to pff_file_signature
* Fixed potential segfault in array type

20081216
* Worked on initial version
* Fixed buffer size for file header data debug

20081213
* Worked on initial version
* Worked on property types
* Renamed extended attributes to name to id map
* Worked on name to id map
* Separated name to id map table debug function from (default) item debug function

20081212
* Worked on initial version
* Worked on property types

20081209
* Worked on initial version
* Worked on extended attributes
* Worked on file header
* Added support for data version (NDB version) 0x15

20081208
* Worked on initial version
* Worked on extended attributes
* Worked on file header

20081207
* Worked on initial version
* Worked on extended attributes
* Worked on file header
* Fix for GUID representation
* Updated item value types (property types) debug strings

20081206
* Worked on initial version
* Worked on extended attributes
* Worked on file header

20081202
* Worked on initial version
* Fixed error in usage output of pffexport

20081201
* Worked on initial version
* Fixed error in debug output of 64-bit list unknown1 value
* Changed 64-bit index unknown2 to hexadecimal output
* Fixed bug in recovery not cleaning items on missing data identifiers

20081128
* Worked on initial version
* Worked on recovery failure on ost file

20081127
* Worked on initial version
* Worked on extended attributes
* Changed list type into type and level

20081031
* Worked on initial version
* added print for item type

20081030
* Worked on initial version
* Fixed error in debug print of list type

20081029
* Worked on initial version
* worked on support on content type
* Fixed leak in pffcommon
* Fixed list element size calculation for 64bit list

20081028
* Worked on initial version
* added support for list type 0x0102
* added support for file content type

20081026
* Worked on initial version
* Worked on rtf export mode
* Fixed correct handling of string_snprintf return value
* Fixed error in pffexport_determine_export_mode
* Updated libpff header file
* Worked on extended attributes

20081024
* Worked on initial version
* Added more detailed error output for unsupported pff data
* Fixed error in sanitize filename
* Fixed 1 off in filetime_to_string
* Updated README
* Fixed leak on error in libpff_index_read_node
* Looked into index node type 0x85 0x85

20081023
* Worked on initial version
* added attachment method to libpff_attachment_get_type to detect embedded OLE2 attachments

20081022
* Worked on initial version
* pffcommon_export_attachment no longer export attachment for unknown type

20081021
* Worked on initial version
* Added basic support for value type 0x1048
* pfftools now sanitize \ and /
* fixed error in pffcommon_export_attachment

20081020
* Worked on initial version
* made pffexport more tollerant for missing transport headers and plain text body

20081019
* Worked on initial version
* Worked on embedded object in attachments
* Fixed missing list type in libpff_file_io_handle.h
* Multiple fixes regarding user output in pffcommon
* Made export tollerant of attachment without name
* Removed newline in error strings
* Fixed offset read list for debug

20081018
* Worked on initial version
* worked on adding error handling
* Worked on man pages
* Added description of functionality of tools in usage information
* Added flag to show allocation information to pffinfo
* Added target directory option to pffrecover
* Added logfile option to pffrecover
* Updated rpm spec file
* Updated AUTHORS
* Fixed leaks in libpff item recovery
* Added MSVS CPP solution files
* Changes for MSVS CPP compilation
* pffexport now tests if file exists before creating target directory

20081017
* Worked on initial version
* Fixed leaks in pffcommon
* Fixed missing liberror makefile for deployment
* worked on adding error handling

20081015
* Worked on initial version
* Worked on signal handling

20081014
* Worked on initial version
* worked on adding error handling

20081013
* Worked on initial version
* worked on adding error handling

20081011
* Worked on initial version
* worked on adding error handling
* Worked on refactoring common

20081009
* Worked on initial version
* worked on adding error handling

20081007
* Worked on initial version
* worked on adding error handling

20081005
* Worked on initial version
* worked on adding error handling
* worked on refactoring common

20080923
* Worked on initial version
* worked on adding error handling

20080922
* Worked on initial version
* replaced libuca by libuna
* added liberror
* worked on adding error handling
* separated Makefiles
* moved base64 to tools
* renamed HAVE_WINDOWS_API to WINAPI (in libpff)

20080905
* Worked on initial version
* added list type prepend

20080904
* Worked on initial version
* Updated libuca

20080831
* Worked on initial version
* Replaced unistring with libuca

20080830
* Worked on initial version
* Improved common and configure.ac

20080829
* Worked on initial version
* Now supports dynamic folder length in pffcommon_export_folder

20080828
* Worked on initial version
* Worked on improving Unicode conversion routines

20080827
* Worked on initial version
* Worked on improving Unicode conversion routines
* Moved unicode conversion routines into libunistring

20080826
* Worked on initial version
* Worked on improving Unicode conversion routines

20080825
* Worked on initial version
* Worked on improving Unicode conversion routines
* Added maximum allowed UTF 0x110000 in strict mode
* Worked on support for converting extended ASCII stream into UTF

20080824
* Worked on initial version
* Worked on improving Unicode conversion routines

20080823
* Worked on initial version
* Worked on improving Unicode conversion routines

20080821
* Worked on initial version
* Worked on export of appointment

20080819
* Worked on initial version
* Rewrote item specific function to be macros that use the generic item functions

20080818
* Worked on initial version
* Implemented 9c table entries (guid, item descriptor)

20080817
* Worked on initial version
* worked on ac and a5 table type support
* Added item entry values table instance to the table entry definition
* Handle empty table number of index items
* Added fix for non 4 bytes aligned padding in external values array entries data
* Changed libpff_notify_dump_data format

20080816
* Worked on initial version
* Removed libpff_item_tree_allocate
* Refactor item tree to use item descriptor instead of item tree values
* Made remaining descriptor list part of the item tree
* Added support for external values array entries data
* Added fix for additional padding in external values array entries data
* Worked on ac table type support, found additional a5 table type

20080815
* Worked on initial version
* removed item values from item tree
* Worked on libpff_file_get_message_store
* refactored item tree values to item descriptor
* Adjusted libpff_list_insert to return 0 if value exists

20080814
* Worked on initial version
* Fixed error in retrieve unallocated block function
* refactored item values to separate structure

20080813
* Worked on initial version
* Item functions can now handle recovered items
* Implemented print value on "last table index values end offset"
* Rewritten libpff_folder_get_content_type to use string compare for Unicode string support
* refactored common code in item and item tree
* fixed issue exporting recovered attachments
  recovery now only analyzes leaf index nodes

20080812
* Worked on initial version
* Worked on recovering deleted content and pffrecover
* Made parent identifier 32 bit
* Made item tree descriptor identifier 32 bit

20080811
* Worked on initial version
* Moved item export code from pffexport to pffcommon
* Worked on recovering deleted content and pffrecover

20080810
* Worked on initial version
* Worked on recovering deleted content
* Created pffrecover

20080809
* Worked on initial version
* Worked on high encryption

20080807
* Worked on initial version
* Worked on reducing memory usage
* Fixed strange output directory name
* refactored most table usage to item to reduce memory usage for large files

20080806
* Worked on initial version
* Fixed 0-byte set memory corruption in libpff_item_tree_get_entry_value_string

20080805
* Worked on initial version
* Worked on item API

20080804
* Worked on initial version
* Worked on item API

20080725
* Worked on initial version
* Worked on item API

20080724
* Worked on initial version
* refactored item and item reference

20080720
* Worked on initial version
* Worked on 64-bit pff and ost
* Worked on basic unicode conversion
* Fixed make dist

20080719
* Worked on initial version
* allow reading ahead index nodes before the a reading ahead index node
* Worked on 64-bit pff and ost
* Worked on basic unicode conversion

20080718
* Worked on initial version
* Found pst without message store and extended attributes
  The actual file could not be opened in Outlook, made libpff not dependent on both
* Worked on 64-bit pff and ost

20080717
* Worked on initial version
* Worked on recovering deleted content
* Worked on 64-bit pff and ost

20080716
* Worked on initial version
* Worked on recovering deleted content

20080715
* Worked on initial version
* Worked on recovering deleted content

20080714
* Worked on initial version
* Worked on recovering deleted content

20080713
* Worked on initial version
* Worked on recovering deleted content

20080711
* Worked on initial version
* Worked on recovering deleted content

20080710
* Worked on initial version
* Worked on recovering deleted content

20080709
* Worked on initial version
* Worked on recovering deleted content

20080708
* Worked on initial version
* Fixed error in encrypted flag for offset identifier
* Worked on stricter item entry value check and reduced memory finger print
  for values < 32-bit

20080707
* Worked on initial version

20080706
* Worked on initial version

20080705
* Worked on initial version
* Worked on pffexport
* fixed small memory leak
* removed dependency on zlib

20080704
* Worked on initial version
* Worked on attachments
* Worked on pffexport

20080703
* Worked on initial version
* Worked on attachments

20080702
* Worked on initial version
* Worked on attachments

20080701
* Worked on initial version
* Worked on attachments

20080630
* Worked on initial version
* Worked on attachments

20080628
* Worked on initial version
* Worked on attachments

20080627
* Worked on initial version
* Refactoring of io
* Worked on attachments

20080626
* Worked on initial version
* Moved libpff_io_handle_read_table_descriptor to libpff_item_values_read
* Refactoring of io_handle/table/item
* Removed libpff_array

20080625
* Worked on initial version
* Worked on attachments
* Fixed multiple memory leaks
* Refactoring of io_handle/table/item

20080624
* Worked on initial version
* Worked on email

20080623
* Worked on initial version
* Worked on item reference

20080619
* Worked on initial version

20080615
* Worked on initial version
* Worked on high encryption support
* Fixed index value offset for array tables

20080614
* Worked on initial version
* Worked on handling table in array

20080613
* Worked on initial version

20080612
* Worked on initial version
* Worked on io handle, fixed memory issue
* Worked on folder, fixed folder reference list issue

20080611
* Worked on initial version
* Worked on item values
* Worked on io handle

20080610
* Worked on initial version
* Worked on folder API

20080608
* Worked on initial version
* Worked on array handling
* Fixed 0 byte wrap around issue in LZFu
* renamed handle to file
* Worked on file API

20080607
* Worked on initial version
* Implemented LZFu uncompress function
* Implemented weak crc calculation for LZFu
* Implemented (file) offset no compression flag handling
* Worked on array handling

20080606
* Worked on initial version

20080605
* Worked on initial version

20080603
* Worked on initial version
* Worked on 7c table header and different b5 table headers

20080602
* Worked on initial version
* Worked on 7c table header and different b5 table headers

20080601
* Worked on initial version
* Worked on 7c table header and different b5 table headers

20080531
* Worked on initial version
* Worked on filetime conversion functions

20080529
* Worked on initial version
* Fixed 1-off error in ASCII values of hexdump

20080528
* Worked on initial version

20080527
* Worked on initial version

20080526
* Worked on initial version

20080522
* Worked on initial version

20080521
* Worked on initial version
* Worked on readable encode base64 function

20080520
* Worked on initial version
* rename descriptor to table

20080516
* Worked on initial version

20080515
* Worked on initial version

20080514
* Worked on initial version

20080513
* Worked on initial version
* implemented offset list

20080512
* Worked on initial version

20080511
* Created initial version based on libpst-0.6.8 to analyze the pst file format
  and libtableau for the library structure

