LibPST 0.6.76 (2021-03-27)
===============================
    *  Stuart C. Naifeh - fix rfc2231 encoding when saving messages
       to both .eml and .msg formats.

LibPST 0.6.75 (2020-03-22)
===============================
    *  Markus Schnalke - fix from Debian for vcard version format.

LibPST 0.6.74 (2020-01-12)
===============================
    *  Paul Wise - many changes for Debian.

LibPST 0.6.73 (2019-07-25)
===============================
    * Tim Dufrane - fix segfault in pst_close()

LibPST 0.6.72 (2018-08-01)
===============================
    * Alfredo Esteban - add -l and -f options to lspst.
    * fix bydays recurring appointment, allow all 7 days
    * update for Fedora Python packaging

LibPST 0.6.71 (2017-07-21)
===============================
    * Zachary Travis - Add support for the OST 2013 format, and
      Content-Disposition filename key fix for outlook compatibility

LibPST 0.6.70 (2017-02-08)
===============================
    * Jeffrey Morlan - pst_getID2 must not recurse into children

LibPST 0.6.69 (2016-10-29)
===============================
    * fix bugs in code allowing folders containing multiple item types

LibPST 0.6.68 (2016-08-29)
===============================
    * allow folders containing multiple item types, e.g. email and calendar
    * better detection of valid internet headers

LibPST 0.6.67 (2016-07-06)
===============================
    * Jeffrey Morlan - multiple bug fixes and an optimization
      see 'hg log -v' for details

LibPST 0.6.66 (2015-12-21)
===============================
    * Igor Stroh  - Added Content-ID header support

LibPST 0.6.65 (2015-09-11)
===============================
    * Jeffrey Morlan - fix multiple Content-Type headers
    * Hans Liss - debug level output

LibPST 0.6.64 (2015-03-09)
===============================
    * AJ Shankar fixes for attachment processing and body
      encodings that contain embedded null chars

LibPST 0.6.63 (2013-12-27)
===============================
    * Daniel Gryniewicz found buffer overrun in LIST_COPY_TIME

LibPST 0.6.62 (2013-09-22)
===============================
    * 983596 - Old dependency filter breaks file coloring

LibPST 0.6.61 (2013-08-06)
===============================
    * move documentation to unversioned directory

LibPST 0.6.60 (2013-06-12)
===============================
    * patch from Dominique Leuenberger to add AC_USE_SYSTEM_EXTENSIONS
    * add readpst -a option for attachment stripping

LibPST 0.6.59 (2013-05-17)
===============================
    * add autoconf checking for libgsf

LibPST 0.6.58 (2012-12-28)
===============================
    * fix From quoting on embedded rfc/822 messages

LibPST 0.6.57 (2012-12-27)
===============================
    * remove useless dependencies

LibPST 0.6.56 (2012-12-24)
===============================
    * merge -m .msg files code into main branch

LibPST 0.6.55 (2012-05-08)
===============================
    * preserve bcc headers
    * document -C switch to set default character set
    * space after colon is not required in header fields

LibPST 0.6.54 (2011-11-04)
===============================
    * embedded rfc822 messages might contain rtf encoded bodies

LibPST 0.6.53 (2011-07-10)
===============================
    * add Status: header in output
    * allow fork for parallel processing of individual email folders
      in separate mode
    * proper handling of --with-boost-python option

LibPST 0.6.52 (2011-05-22)
===============================
    * fix dangling freed pointer in embedded rfc822 message processing
    * allow broken outlook internet header field - it sometimes contains
      fragments of the message body rather than headers

LibPST 0.6.51 (2011-04-17)
===============================
    * fix for buffer overrun; attachment size from the secondary
      list of mapi elements overwrote proper size from the primary
      list of mapi elements.
      Fedora bugzilla 696263

LibPST 0.6.50 (2010-12-24)
===============================
    * rfc2047 and rfc2231 encoding for non-ascii headers and attachment filenames

LibPST 0.6.49 (2010-09-13)
===============================
    * fix to ignore embedded objects that are not email messages

LibPST 0.6.48 (2010-09-02)
===============================
    * fix for broken internet headers from Outlook.
    * fix ax_python.m4 to look for python2.7
    * Subpackage Licensing, add COPYING to -libs.
    * use mboxrd from quoting for output formats with multiple messages per file
    * use no from quoting for output formats with single message per file

LibPST 0.6.47 (2010-05-07)
===============================
    * patches from Kenneth Berland for solaris.
    * fix output file name numbering to start at 1 rather than 2.

LibPST 0.6.46 (2010-02-13)
===============================
    * prefer libpthread over librt for finding sem_init function.
    * rebuild for Fedora 13 change in implicit dso linking semantics.

LibPST 0.6.45 (2009-11-18)
===============================
    * patch from Hugo DesRosiers to export categories and notes into vcards.
    * extend that patch to export categories into vcalendar appointments also.

LibPST 0.6.44 (2009-09-20)
===============================
    * fix --help usage; readpstlog is gone, debug files are now ascii text.
    * patch from Lee Ayres to add file name extensions in separate mode.
    * allow mixed items types in a folder in separate mode.

LibPST 0.6.43 (2009-09-12)
===============================
    * patches from Justin Greer.
    add code pages 1200 and 1201 to the list for iconv
        add support for 0x0201 indirect blocks that point to 0x0101 blocks
    add readpst -t option to select output item types
    fix (remove) extra new line inside headers
    * cleanup base64 encoding to remove duplicate code.
    * patch from Chris White to avoid segfault with embedded appointments.
    * patch from Roberto Polli to add creation of some Thunderbird specific meta files.
    * patch from Justin Greer to ignore b5 tables at offset zero.
    * output type filtering can now be used to handle folders with multiple item types.
    * better decoding of rfc822 embedded message attachments.
    * better detection of dsn delivery reports

LibPST 0.6.42 (2009-09-03)
===============================
    * patch from Fridrich Strba to build with DJGPP DOS cross-compiler.

LibPST 0.6.41 (2009-06-23)
===============================
    * fix ax_python detection - should not use locate command
    * checking for Fedora versions is not needed

LibPST 0.6.40 (2009-06-23)
===============================
    * Fedora 11 has python2.6
    * remove pdf version of the man pages

LibPST 0.6.39 (2009-06-21)
===============================
    * Fedora > 10 moved to boost-python-devel

LibPST 0.6.38 (2009-06-21)
===============================
    * add Python module interface to the shared library for easy scripting.
    * the shared library must never write to stdout or stderr.
    * fix pst_attach_to_mem so the caller does not need to initialize
      the buffer pointer.
    * remove readpst -C switch, obsolete debugging code.
    * update version to 4:0:0 since we made many changes to the interface.
    * removed contact->access_method since we don't have a mapi element for it.
    * changed pst_attach_to_mem to return pst_binary structure.
    * decode more recurrence mapi elements.
    * readpst changes for parallel operation on multi processor machines.
    * remove readpstlog - the debug log files are now plain ascii. Add locking
      if needed so parallel jobs can produce debug logs.
    * more cleanup of the shared library interface, but still not fully
      thread safe.
    * make nested mime multipart/alternative to hold the text/html parts
      so the topmost level is almost always multipart/mixed.
    * the shared library interface should now be thread safe.
    * patch from Fridrich Strba to build on win32.
    * remove unreferenced code.

LibPST 0.6.37 (2009-04-17)
===============================
    * add pst_attach_to_mem() back into the shared library interface.
    * improve developer documentation.
    * fix memory leak caught by valgrind.

LibPST 0.6.36 (2009-04-14)
===============================
    * spec file cleanup with multiple sub packages.
    * add doxygen devel-doc documentation for the shared library.
    * switch back to fully versioned subpackage dependencies.
    * more cleanup on external names in the shared object file.

LibPST 0.6.35 (2009-04-08)
===============================
    * fix bug where we failed to pickup the last extended attribute.
    * patch from Emmanuel Andry to fix potential security bug in
      pst2dii with printf(err).
    * properly add trailing mime boundary in all modes.
    * move version-info into main configure.in, and set it properly
    * prefix all external symbols in the shared library with pst_ to
      avoid symbol clashes with other shared libraries.
    * new Debianization from hggdh.
    * build separate libpst, libpst-libs, libpst-devel rpms.
    * remove many functions from the interface by making them static.

LibPST 0.6.34 (2009-03-19)
===============================
    * improve consistency checking when fetching items from the pst file.
    * avoid putting mixed item types into the same output folder.

LibPST 0.6.33 (2009-03-17)
===============================

    * fix Fedora 11 type mismatch warning (actually an error in this case).
    * fix large file support, some systems require config.h to be included
      earlier in the compilation.
    * compensate for iconv conversion to utf-7 that produces strings that
      are not null terminated.
    * don't produce empty attachment files in separate mode.

LibPST 0.6.32 (2009-03-14)
===============================

    * fix ppc64 compile error.

LibPST 0.6.31 (2009-03-14)
===============================

    * bump version for Fedora cvs tagging mistake.

LibPST 0.6.30 (2009-03-14)
===============================

    * improve documentation of .pst format.
    * remove decrypt option from getidblock - we always decrypt.
    * rename some structure fields to reflect our better understanding
      of the pst format.
    * track character set individually for each mapi element, since
      some could be unicode (therefore utf8) and others sbcs with
      character set specified by the mapi object. remove charset option
      from pst2ldif since we get that from each object now.
    * more code cleanup.
    * use AM_ICONV for better portability of the library location.
    * structure renaming to be more specific.
    * improve internal doxygen documentation.
    * avoid emitting bogus empty email messages into contacts and
      calendar files.

LibPST 0.6.29 (2009-02-24)
===============================
    * fix for 64bit on Fedora 11

LibPST 0.6.28 (2009-02-24)
===============================
    * add X-libpst-forensic-* headers to capture items of interest
      that are not used by normal mail clients.
    * improve decoding of multipart/report and message/rfc822 mime
      types.
    * improve character set handling - don't try to convert utf-8
      to single byte for fields that were not originally unicode.
      if the conversion fails, leave the data in utf-8.
    * fix embedded rfc822 messages with attachments.

LibPST 0.6.27 (2009-02-07)
===============================
    * fix for const correctness on Fedora 11

LibPST 0.6.26 (2009-02-07)
===============================
    * patch from Fridrich Strba for building on mingw and
      general cleanup of autoconf files
    * add processing for pst files of type 0x0f
    * start adding support for properly building and installing
      libpst.so and the header files required to use it.
    * remove version.h since the version number is now in config.h
    * more const correctness issues regarding getopt()
    * consistent ordering of our include files. all system includes
      protected by ifdef HAVE_ from autoconf.
    * strip and regenerate all MIME headers to avoid duplicates.
      problem found by Michael Watson on Mac OSX.
    * do a better job of making unique MIME boundaries.
    * only use base64 coding when strictly necessary.
    * more cleanup of #include files. common.h is the only file
      allowed to include system .h files unprotected by autoconf
      HAVE_ symbols. define.h is the only other file allowed to
      include system .h files. define.h is never installed; common.h
      is installed if we are building the shared library.
    * recover dropped pragma pack line, use int64_t rather than off_t
      to avoid forcing users of the shared library to enable large
      file support.
    * add pragma packing support for sun compilers.
    * fix initial from header in mbox format.
    * start moving to PST_LE_GET* rather than LE*_CPU macros so we
      can eventually remove the pragma packing.
    * patch from Fridrich Strba, some systems need extra library for regex.

LibPST 0.6.25 (2009-01-16)
===============================
    * improve handling of content-type charset values in mime parts

LibPST 0.6.24 (2008-12-11)
===============================
    * patch from Chris Eagle to build on cygwin

LibPST 0.6.23 (2008-12-04)
===============================
    * bump version to avoid cvs tagging mistake in Fedora

LibPST 0.6.22 (2008-11-28)
===============================
    * patch from David Cuadrado to process emails with type PST_TYPE_OTHER
    * base64_encode_multiple() may insert newline, needs larger malloc
    * subject lines shorter than 2 bytes could segfault

LibPST 0.6.21 (2008-10-21)
===============================
    * fix title bug with old schema in pst2ldif.
    * also escape commas in distinguished names per rfc4514.

LibPST 0.6.20 (2008-10-09)
===============================
    * add configure option --enable-dii=no to remove dependency on libgd.
    * many fixes in pst2ldif by Robert Harris.
    * add -D option to include deleted items, from Justin Greer
    * fix from Justin Greer to add missing email headers
    * fix from Justin Greer for my_stristr()
    * fix for orphan children when building descriptor tree
    * avoid writing uninitialized data to debug log file
    * remove unreachable code
    * create dummy top-of-folder descriptor if needed for corrupt pst files

LibPST 0.6.19 (2008-09-14)
===============================
    * Fix base64 encoding that could create long lines
    * Initial work on a .so shared library from Bharath Acharya.

LibPST 0.6.18 (2008-08-28)
===============================
    * Fixes for iconv on Mac from Justin Greer.

LibPST 0.6.17 (2008-08-05)
===============================
    * More fixes for 32/64 bit portability on big endian ppc.

LibPST 0.6.16 (2008-08-05)
===============================
    * Use inttypes.h for portable printing of 64 bit items.

LibPST 0.6.15 (2008-07-30)
===============================
    * Patch from Robert Simpson for file handle leak in error case.
    * Fix for missing length on lz decompression, bug found by Chris White.

LibPST 0.6.14 (2008-06-15)
===============================
    * Fix my mistake in Debian packaging.

LibPST 0.6.13 (2008-06-13)
===============================
    * Patch from Robert Simpson for encryption type 2.
    * Fix the order of testing item types to avoid claiming
    there are multiple message stores.

LibPST 0.6.12 (2008-06-10)
===============================
    * Patch from Joachim Metz for Debian packaging, and fix
    for incorrect length on lz decompression.

LibPST 0.6.11 (2008-06-03)
===============================
    * Use ftello/fseeko to properly handle large files.
    * Document and properly use datasize field in b5 blocks.
    * Fix some MSVC compile issues and collect MSVC dependencies into one place.

LibPST 0.6.10 (2008-05-29)
===============================
    * Patch from Robert Simpson <rsimpson@idiscoverglobal.com>
    fix doubly-linked list in the cache_ptr code, and allow
    arrays of unicode strings (without converting them).
    * More changes for Fedora packaging (#434727)
    * Fixes for const correctness.

LibPST 0.6.9 (2008-05-16)
===============================
    * Patch from Joachim Metz <joachim.metz@gmail.com> for 64 bit
      compile.
    * Signed/unsigned cleanup from 'CFLAGS=-Wextra ./configure'.
    * Reindent vbuf.c to make it readable.
    * Fix pst format documentation for 8 byte backpointers.

LibPST 0.6.8 (2008-03-05)
===============================
    * Initial version of pst2dii to convert to Summation dii load file format.
    * Changes for Fedora packaging (#434727)

LibPST 0.6.7 (2008-02-16)
===============================
    * Work around bogus 7c.b5 blocks in some messages that have been
      read. They appear to have attachments, but of some unknown format.
      Before the message was read, it did not have any attachments.
    * Use autoscan to cleanup our autoconf system.
    * Use autoconf to detect when we need to use our XGetopt files
      and other header files.
    * More fields, including BCC.
    * Fix missing LE32_CPU byte swapping for FILETIME types.

LibPST 0.6.6 (2008-01-31)
===============================
    * More code cleanup, removing unnecessary null terminations on
      binary buffers. All pst file reads now go through one function.
      Logging all pst reads to detect cases where we read the same data
      multiple times - discovers node sizes are actually 512 bytes.
    * Switch from cvs to mercurial source control.

LibPST 0.6.5 (2008-01-22)
===============================
    * More code cleanup, removing obsolete code. All the boolean flags
      of type 0xb have length 4, so these are all 32 bits in the file.
      Libpst treats them all as 16 bits, but at least we are consistent.
    * More fields decoded - for example, see
      <http://msdn2.microsoft.com/en-us/library/aa454925.aspx>
      We should be able to use that data for much more complete decoding.
    * Move the rpm group to Applications/Productivity consistent with
      Evolution.

LibPST 0.6.4 (2008-01-19)
===============================
    * More fixes for Outlook 2003 64 bit parsing. We observed cases of
      compressed RTF bodies (type 0x1009) with zero length.
    * Document type 0x0101 descriptor blocks and process them.
    * Fix large file support - we need to include config.h before any
      standard headers.
    * Merge following changes from svn snapshot from Alioth:
        * Add new fields to appointment for recurring events
          (SourceForge #304198)
        * Map IPM.Task items to PST_TYPE_TASK.
        * Applied patch to remove compiler warnings, thanks!
          (SourceForge #304314)
        * Fix crash with unknown reference type
        * Fix more memory issues detected by valgrind
        * lspst - add usage message and option parsing using getopt
            (SourceForge #304199)
        * Fix crash caused by invalid free calls
        * Fix crash when email subject is empty
        * Fix memory and information leak in hex debug dump

LibPST 0.6.3 (2008-01-13)
===============================
    * More type consistency issues found by splint.

LibPST 0.6.2 (2008-01-12)
===============================
    * More fixes for Outlook 2003 64 bit parsing.
    * All buffer sizes changed to size_t, all file offsets changed to off_t,
      all function names start with pst_, many other type consistency issues
      found by splint. Many changes to #llx in debug printing for 64 bit items.
      All id values are now uint64_t.

LibPST 0.6.1 (2008-01-06)
===============================
    * Outlook 2003 64 bit parsing. Some documentation from Alexander Grau
      <alexandergrau@gmx.de> and patches from Sean Loaring <sloaring@tec-man.com>.
    * fix from Antonio Palama <palama@inwind.it> for email items
      that happen to have item->contact non null, and were being processed
      as contacts.
    * Add large file support so we can read .pst files larger than 2gb.
    * Change lspst to be similar to readpst, properly using recursion to walk
      the tree, and testing item types. Add a man page for lspst.

LibPST 0.5.12 (2007-10-02)
===============================
    * security fix from Brad Hards <bradh@frogmouth.net> for buffer
      overruns in liv-zemple decoding for corrupted or malicious pst files.

LibPST 0.5.11 (2007-08-24)
===============================
    * fix from Stevens Miller <smiller@novadatalabs.com>
      for uninitialized variable.

LibPST 0.5.10 (2007-08-20)
===============================
    * fix yet more valgrind errors - finally have a clean memory check.
    * restructure readpst.c for proper recursive tree walk.
    * buffer overrun test was backwards, introduced at 0.5.6
    * fix broken email attachments, introduced at 0.5.6

LibPST 0.5.9 (2007-08-12)
===============================
    * fix more valgrind errors.

LibPST 0.5.8 (2007-08-10)
===============================
    * fix more valgrind errors. lzfu_decompress needs to return the
      actual buffer size, since the lz header overestimates the size.
      This caused base64_encode to encode undefined bytes into the
      email attachment.

LibPST 0.5.7 (2007-08-09)
===============================
    * fix valgrind errors, using uninitialized data.
    * improve debug logging and readpstlog for indented listings.
    * cleanup documentation.

LibPST 0.5.6 (2007-07-15)
===============================
    * Fix to allow very small pst files with only one node in the
      tree. We were mixing signed/unsigned types in comparisons.
    * More progress decoding the basic structure 7c blocks. Many
      four byte values may be ID2 indices with data outside the buffer.
    * Start using doxygen to generate internal documentation.

LibPST 0.5.5 (2007-07-10)
===============================
    * merge the following changes from Joe Nahmias version:
    * Lots of memory fixes.  Thanks to Nigel Horne for his assistance
      tracking these down!
    * Fixed creation of vCards from contacts, thanks to Nigel Horne for
      his help with this!
    * fix for MIME multipart/alternative attachments.
    * added -c options to readpst manpage.
    * use 8.3 attachment filename if long filename isn't available.
    * new -b option to skip rtf-body.rtf attachments.
    * fix format of From header lines in mbox files.
    * Add more appointment fields, thanks to Chris Halls for tracking
      them down!

LibPST 0.5.4 (2006-02-25)
===============================
    * patches from Arne, adding MH mode, remove leading zeros
      from the generated numbered filenames starting with one
      rather than zero. Miscellaneous code cleanup.
    * document the "7c" descriptor block format.

LibPST 0.5.3 (2006-02-20)
===============================
    * switch to GNU autoconf/automake. This breaks the MS VC++ projects
      since the source code is now in the src subdirectory.
    * documentation switched to xml, building man pages and html
      from the master xml copy.
    * include rpm .spec file for building src and binary rpms.

LibPST 0.5.2 (2006-02-18)
===============================
    * Added pst2ldif to convert the contacts to ldif format for import
      into ldap databases.
    * Major changes to libpst.c to properly use the node depth values
      from the b-tree nodes. We also use the item count values in the nodes
      rather than trying to guess how many items are active.
    * Cleanup whitespace - using tabs for every four columns.

LibPST 0.5.1 (17 November 2004)
===============================

Well, a lot has happened since the last release of libpst.

Release / Management:

        * The project has forked! The new maintainer is Joseph Nahmias.
        * We have changed hosting sites, thanks to sourceforge for hosting
        to this point.  From this point forward we will be using
        alioth.debian.org.
        * The project is now using SubVersioN for source control.  You can
        get the latest code by running:
                svn co svn://svn.debian.org/svn/libpst/trunk .
        * See
        <http://lists.alioth.debian.org/pipermail/libpst-devel/2004-November/000000.html>
        for more information.

Code Changes:

        * Added lspst program to list items in a PST.  Still incomplete.
        * Added vim folding markers to readpst.c
        * avoid the pseudo-prologue that MS prepends to the email headers
        * fix build on msvc, since it doesn't have sys/param.h
        * Re-vamped Makefile:
                * Only define CFLAGS in Makefileif missing
                * fixed {un,}install targets in Makefile
                * Fixed up build process in Makefile
        * Added mozilla conversion script from David Binard
        * Fixed bogus creation of readpst.log on every invocation
        * escaped dashes and apostrophe in manpages
        * Updated TODO
        * added manpages from Debian pkg
        * fix escaped-string length count to consider '\n',
                thanks to Paul Bakker <bakker@fox-it.com>.
        * ensure there's a blank line between header and body
                patch from <johnh@aproposretail.com> (SourceForge #890745).
        * Apply accumulated endian-related patches
        * Removed unused files, upstream's debian/ dir

-- Joe Nahmias <joe@nahmias.net>

LibPST v0.5
===========

It is with GREAT relief that I bring you version 0.5 of the LibPST tools!

Through great difficulties, this tool has survived and expanded to become even
better.

The changes are as follows:
  * RTF support. We can now decompress RTF bodies in emails, and are saved as attachments
  * Better support in reading the indexes. Fixed many bugs with them
  * Improved reliability. "Now we are getting somewhere!"
  * Improved compiling. Hopefully we won't be hitting too many compile errors now.
  * vCard handling. Contacts are now exported as vCard entries.
  * vEvent handling. Support has begun on exporting Calendar entries as events
  * Support for Journal entries has also begun

If you have any problems with this release, don't hesitate to contact me.

These changes come to you, as always, free under the GPL license!! What a wonderful
thing it is. It does mean that you can write your own program off of this library
and distribute it also for free. However, anyone with commercial interests for
developing applications they will be charging for are encouraged to get in touch
with me, as I am sure we can come to some arrangement.

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.4.3
=============

Bug fix release. No extra functionality

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.4.2
=============

The debug system has had an overhaul. The debug messages are no longer
printed to the screen when they are enabled. They are dumped to a
binary file. There is another utility called "readlog" that I have
written to handle these log files. It should make it easier to
selectively view bits of a log file. It also shows the position that
the log message was printed from.

There is a new switch in readpst. It is -d. It enables the user to
specify the log file which the binary log is written to. If the switch
isn't used, the default file of "readpst.log" is used.

The code is now Visual C++ compatible. It has compiled on Visual C++
.net Standard edition, and produces the readpst.exe file. Use the project
file included in this distribution.

There have been minor improvements elsewhere too.


LibPST v0.4.1
=============

Fixed a couple more bugs. Is it me or do bugs just insert themselves
in random, hard to find places!

Cured a few problems with regard to emails with multiple embedded
items. They are not fully re-created using Mime-types, but are
accessible with the -S switch (which saves everything as separate
items)

Fixed a problem reading the first index. Back sliders are now
detected. (ie when the value following the current one is smaller, not
bigger!)

Added some error messages when we try and read outside of the PST
file, this was causing a few problems before, cause the return value
wasn't always checked, so it was possible to be reading random data,
and trying to make sense of it!

Anyway, if you find any problems, don't hesitate to mail me

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.4
===========

Fixed a nasty bug that occasionally corrupted attachments. Another bug
with regard to reading of indexes (also occasional).

Another output method has been added which is called "Separate". It is
activated with the -S switch. It operates in the following manor:

  |--Inbox-->000000
  |          000001
  |          000002
  |--Sentmail-->0000000
  |             0000001
  |             0000002

All the emails are stored in separate files counting from 0 upwards,
in a folder named as the PST folder.

When an email has an attachment, it is saved as a separate file. The
filename for the attachment is made up of 2 parts, the first is the
email number to which it belongs, the second is its filename.

The should now be runnable on big-endian machines, if the define.h
file is first modified. The #define LITTLE_ENDIAN must be commented
out, and the #define BIG_ENDIAN must be uncommented.

More verbose error messages have been added. Apparently people got
confused when the program stopped for no visible reason. This has now
been resolved.

Thanks for the continued support of all people involved.

Dave Smith
<dave.s@earthcorp.com>

Libpst v0.3.4
=============

Several more fixes. An Infinite loop and incorrect interpreting of
item index attributes. Work has started on making the code executable
on big endian CPUs. At present it should work with Linux on these
CPUs, but I would appreciate it if you could provide feedback with
regard to it's performance. I am also working with some other people
at make it operate on Solaris.

A whole load more items are now recognized by the Item records. With
more items in Emails and Folders. I haven't got to the Contacts yet.

Anyway, this is what I would call a minor feature enhancement and
bugfix release.

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.3.3
=============

Fixed several items. Mainly memory leaks. Loads of them! oops..

I have added a new program, mainly of debugging, which when passed
an ID value and a pst file, will extract and decrypt that ID from
the pst file. I don't see it being a huge attraction, or of much use
to most people, but it is another example of writing an application
to use the libpst interface.

Another fix was in the reading of the item index. This has hopefully
now been corrected. The result of this bug was that not all the emails
in a folder were converted. Hopefully you should have more luck now.

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.3.2
=============

Quick bugfix release. There was a bug in the decryption of the basic
encryption that outlook uses. One byte, 0x6c, was incorrectly decrypted
to 0x6c instead of 0xcd. This release fixes this bug. Sorry...


LibPST v0.3.1
=============

Minor improvements. Fixed bug when linking multiple blocks together,
so now the linking blocks are not "encrypted" when trying to read
them.


LibPST v0.3
===========

A lot of bug fixing has been done for this release. Testing has been
done on the creation of the files by readpst.  Better handling of
large binaries being extracted from the PST file has been implemented.

Quite a few reports have come in about not being able to compile on
Darwin. This could be down to using macros with variable parameter
lists. This has now been changed to use C functions with variable
parameters. I hope this fixes a lot of problems.

Added support for recreating the folder structure into normal
directories. For Instance:

Personal Folders
  |-Inbox
  |   |-Jokes
  |   |-Meetings
  |-Send Items

each folder containing an mbox file with the correct emails for that
folder.

Dave Smith
<dave.s@earthcorp.com>


LibPST v0.3 beta1
=================

Again, a shed load of enhancements. More work has been done on the
mime creation. A bug has been fixed that was letting part of the
attachments that were created disappear.

A major enhancement is that "compressible encryption" support has been
added. This was an incredibly simple method to use. It is basically a
caesar cipher. It has been noted by several users already that the PST
password that Outlook uses, serves *no purpose*. It is not used to
encrypt the PST, it is merely stored there. This means that the
readpst application is able to convert PST files without knowing the
password. Microsoft have some explaining to do!

Output files are now not overwritten if they already exist. This means
that if you have two folders in your PST file named "fred", the first
one encountered will be named "fred" and the second one will be named
"fred00000001". As you can see, there is enough room there for many
duplicate names!

Output filenames are now restricted. Any "/" or "\" characters in the
name are replaced with "_". If you find that there are any other
characters that need to be changed, could you please make me aware!

Thanks to Berry Wizard for help with supporting the encryption.

Thanks to Auke Kok, Carolus Walraven and Yogesh Kumar Guatam for providing debugging
information and testing.

Dave Smith
<dave.s@earthcorp.com>


LibPST v0.2 beta1
=================

Hello once more...

Attachments are now re-created in mime format. The method is very
crude and could be prone to over generalisation. Please test this
version, and if attachments are not recreated correctly, please send
me the email (complete message source) of the original and
converted. Cheers.

I hope this will work for everyone who uses this program, but reality
can be very different!

Let us see how it goes...

Dave Smith
<dave.s@earthcorp.com>

LibPST v0.2 alpha1
===========

Hello!

Some improvements. The internal code has been changed so that
attachments are now processed and loaded into the structures. The
readpst program is not finished yet. It needs to convert these binary
structs into mime data. At present it just saves them to the current
directory, overwriting any previous files with the attachment name.

Improvements over previous version:
* KMail output is supported - if the "-k" flag is specified, all the
  directory hierarchy is created using the KMail standard
* Lots of bugs and memory leaks fixed


Usage:

ReadPST v0.2alpha1 implementing LibPST v0.2alpha1
Usage: ./readpst [OPTIONS] {PST FILENAME}
OPTIONS:
        -h      - Help. This screen
        -k      - KMail. Output in kmail format
        -o      - Output Dir. Directory to write files to. CWD is changed *after* opening pst file
        -V      - Version. Display program version

If you want to view lots of debug output, modify a line in "define.h"
from "//#define DEBUG_ALL" to "#define DEBUG_ALL". It would then be
advisable to pipe all output to a log file:

./readpst -o out pst_file &> logfile

Dave Smith

LibPST v0.1
===========

Hi Folks!

This has been a long, hard slog, but I now feel that I have got
somewhere useful. The included program "main" is able to read an
Outlook PST file and dump the emails into mbox files, separating each
folder into a different mbox file. All the mbox files are stored in
the current directory and no attempt is yet made to organise these
files into a directory hierarchy. This would not be too difficult to
achieve though.

Email attachments are not yet handled, neither are Contacts.

There is no pretty interface yet, but you can convert a PST file in
the following manner

./main {path to PST file}

This is very much a work in progress, but I thought I should release
this code so that people can lose their conception that outlook files
will never be converted to Linux.

I am intending that the code I am writing will be developed into
greater applications to provide USEFUL tools for accessing and
converting PST files into a variety of formats.

One point I feel I should make is that Outlook, by default, creates
"Compressible Encryption" PST files. I have not, as yet, attempted to
write any decryption routines, so you will not be able to convert
these files. However, if you create a new PST file and choose not to
make an encrypted one, you can copy all your emails into this new one
and then convert the unencrypted one.

I hope you enjoy,

Dave Smith

