---------------------------
A history of updates in EPS
<vol@inter7.com>
---------------------------

Jul 2 2001 v0.0
  * Planning phase

Jul 9 2001 v0.0  
  * Development begins
  * vol@inter7.com gets a coffee

Jul 17 2001 v0.1
  * vol@inter7.com gets frustrated

Jul 18 2001 v0.1
  * Major re-write of most of the code
    for efficiency and functionality
  * Added extreme memory debugging (MEM_DEBUG)
  * Created TECHS file with list of API functions

Aug 6 2001 v0.2
  * Header and atom parsing completed
  * Internal header data storage begins
  * Found that I needed to strip WSP on both
    sides of strings.  Added functionality.
  * Internal header processing completed
  * Added processing time debugging (COUNT_DEBUG)
  * Added multipart recognition

Aug 7 2001 v0.2
  * Removed header_strip_wsp function
  * Stripped WSP on either end of atoms in header_parse_atom
    Somehow these changes made time shoot up from 0.12 seconds
    on a 240k email to 2.4 seconds.

Aug 14 2001 v0.2
  * Began work on FILE_BUFFER buffer scheme (for stable release)
  * Began designing filtering language
  * Removed header_internal stuff.  Should be higher-level.
  * Added email_content_type for multipart processing (PROCESS_MULTIPART)

Aug 16 2001 v0.2
  * Added email_mime_version for multipart processing
  * Fixed up email_header_internal
  * Began higher-level API functions in eps.c

Aug 27 2001 v0.2
  * Created a tools directory with a sample code
  * Began archiving tool to store email messages by ID

Aug 29 2001 v0.2
  * Began etrack tool
  * Updated header.c to remove that annoying space
    from the front of the original header data

Aug 30 2001 v0.2
  * Created email address evaluation code
  * Added INTERFACE_NONE

Sept 13 2001 v0.2
  * Havent updated CHANGELOG in a while
  * Added address_evalute and address_evaluate_one
  * Created eps calls for address functions
  * Upgraded EPS to v0.3
 
Sept 16 2001 v0.3
  * Updated rfc2822_remove_comments for escaped comment characters

Oct 08 2001 v0.3
  * Sillyness with STORE_ORIGINAL definition which caused mismatching
    of memory objects fixed.  

Oct 09 2001 v0.3
  * Created eFilter tool.  Fixed some memory deallocation problems
    with address evaluation functions.
  * Added eps_mime_kill() call

Oct 10 2001 v0.3
  * Updated eps_rewind() again
    Wasn't fixing EOF and BRK status
  * Created eps_dup() and eps_dup2() for duplicating the temporary
    file descriptors

Oct 12 2001 v0.3
  * Made doc directory
  * Began doc/HOWTO
  * Renamed TECHS to doc/API 
  * Upgraded to v0.4

Oct 12 2001 v0.4
  * Added eps_reset()

Jan 5 2002 v0.4
  * Moved some definitions over to rfc2822.h
  * Created structure.c for creation of email content
  * Added structure_message_id() for unique message-id creation
    Generates based on a string prefix, unix time, and pid

Jan 6 2002 v0.4
  * Added eps_message_id() which calls structure_message_id()

Jan 8 2002 v0.4
  * Created qmail.c for outgoing mail via qmail-inject

Jan 15 2002 v0.4
  * More MIME attachment work, will need to add memory mapping

Jan 16 2002 v0.4
  * Got the bulk of MIME attachment stuff working.  Again, allocating memory
    for attachments is an ugly idea.

Jan 17 2002 v0.4
  * Ran tests with autoresponder code MIME code.  Looks good.
  * Packaged EPS v0.4
  * Began work on memory mapping

Feb 25 2002 v0.4
  * Began work on thread-safe EPS
  * Discovered bug in address.c handling of addresses. Fixed.

Mar 27 2002 v0.5
  * EPS is now thread-safe
  * Packaged EPS v0.5
  * Released EPS v0.5
  * Upgraded to v0.6

Mar 29 2002 v0.6
  * Created sample multipart types in mess directory
  * Added INTERFACE_STREAM

Apr 2 2002 v0.6
  * Update int_stdin to accept pointer to a file descriptor for INTERFACE_STREAM

Apr 4 2002 v0.6
  * Added INTERFACE_MIME_STREAM (not yet implemented)
  * Added INTERFACE_MIME_ALLOC (not yet implemented as a flag)
  * Added INTERFACE_MMAP (not yet implemented)

Apr 18 2002 v0.6
  * Updated eps.c eps_next_mime() not to allow for streamed MIME
  * Added mime_init_stream (for streaming)
  * Added mime_next_header (for streaming)
  * Added mime_next_line   (for streaming)
  * Created interface.h containing interface flags
  * Added break handling flags to interface.h
  * Created content.h containing content-type flags

Apr 20 2002 v0.6
  * Added some more DEBUG define lines
  * Updated email_is_boundary to recognize MIME ending boundary
  * Found small problem with address resolution to fix later
  * Updated doc/API a bit for new MIME handlers

Jun 18 2002 v0.6
  * Updated content type tables in content.h and content.c
  * Added content_parse function to content.c
  * Updated various source files using old CONTENT_* structure
    to the new content structure
  * Packaged v0.6
  * Upgraded source to version v0.7

Jun 18 2002 v0.7
  * Mistake in content.c/content.h for multipart processing fixed
  * mime_init_stream called mfree() instead of mime_free() --woops!

Jun 26 2002 v0.7
  * Started work on encoding/decoding of transfer-encodings functions

Jul 2 2002 v0.7
  * ONE YEAR ANNIVERSARY -- Started EPS on Jul 2 2001!
  * Fixed email_content_type memcpy bug

Jul 23 2002 v0.7
  * BASE64 decoding functions added

Jul 26 2002 v0.7
  * Updated eps_dealloc() to call mime_kill() to fix potential memory leak
  * Updated eps_header_free() not to deallocate NO_HEADER

Aug 13 2002 v0.7
  * Updated mime_new_instance() to set default encoding, and disposition

Aug 20 2002 v0.7
  * Updated email_content_type for header NULL checking to fix segfaults
  * Updated content_parse for data NULL checking to fix segfaults
  * Upgraded source to version v0.8

Aug 20 2002 v0.8
  * Updated mime.c internal header checking for header NULL checking to fix segfaults
  * Updated source to remove PROCESS_MULTIPART
  * Updated source to remove HEADER_INTERNAL

Aug 27 2002 v0.8
  * Fixed rfc2822* functions to do proper pointer checking to
    fix crashes
  * Updated header.c for some crashes where atom structure isnt
    allocated.
  * Moved some documentation files such as LICENSE, to the doc directory
  * Packaged v0.8  
  * Upgraded source to version v0.9

Aug 29 2002 v0.9
  * Made a few removals of old definitions in content.h
  * Added INTERFACE_FAST_BUFFER using new buffering system (16 times faster!)
  * Packaged v0.9
  * Upgraded source to version v1.0

Aug 30 2002 v1.0
  * Started v1.0 off of the v0.9 source code with new buffering, unrolling,
    and interface code.
  * Fixed rfc2822_remove_comments for some extra syntax checking
  * Updated variable sizes from int to unsigned long to avoid value overflows
    with new line buffering code.
  * Updated header.c for new functionality and no eps structure passing
  * Added boundary code for multiple boundaries
  * Updated mime code to support multiple boundries
  * Tested new code for speed changes with 10.1 meg email file:
    EPS v0.9 - ~8-9 seconds
    EPS v1.0 - ~0.5 seconds

Sep 03 2002 v1.0
  * Added new address_evaluate_one code
  * Added new address_evaluate code with group address parsing
  * Added eps_restart
  * Added eps_is_eof
  * Made many changes to doc directory file contents
  * Added boundary_fetch
  * Added boundary member to mime_t
  * Added base64 decoding and encoding functions

Sep 05 2002 v1.0
  * Updated mess/mime_digest

Sep 13 2002 v1.0
  * Updated content.c for i = 0 bug; should have been i = 1
    to skip NULL default entry

Sep 18 2002 v1.0
  * Added orig member to mime_t structure which will contain
    latest boundary line directly from email.

Sep 19 2002 v1.0
  * Made a few changes to the rolling code

Sep 20 2002 v1.0
  * Packaged v1.0
  * Upgraded source to version v1.1

Sep 20 2002 v1.1
  * Updated buffer.c for -1 fd (no reading, just buffer reads)
  * Finished INTERFACE_BUFFER
  
Sep 21 2002 v1.1
  * Fixed boundary bug in rewrite.c
  * Updated restart code for INTERFACE_BUFFER
  * Updated doc/license (duh)

Sep 22 2002 v1.1
  * Modified INTERFACE_BUFFER to take dbuffer structure

Sep 29 2002 v1.1
  * Modified line code for no memsets

Oct 01 2002 v1.1
  * Modified Makefile to install to normal EPS directories
  * Packaged v1.1  
  * Upgraded source to version v1.2

Oct 01 2002 v1.2
  * Moved encode/decode/rewrite to epstools package where they belong
  * Packaged v1.2
  * Upgraded source to version v1.3

Oct 02 2002 v1.3
  * Added 'last buffer pointer' to buffer structure
  
Oct 04 2002 v1.4
  * Packaged v1.3
  * Upgraded source to version v1.4  

Nov 02 2002 v1.4
  * rolling functions added (roll.c; not sure when this code was created,
    so Im adding it here) to re-write structured headers per RFC2822.

Nov 05 2002 v1.4
  * Updated memory debugging code to use external library (not packaged with EPS)
  * Updated Makefile to remove some of the old test programs no longer included

Nov 07 2002 v1.4
  * Updated doc/howto a bit
  * Updated rfc2822.c for rfc2822_is_sep indicating (partially)
    a list of characters we use as seperators
  * Updated roll_fd() to use rfc2822_is_sep instead of rfc2822_is_wsp

Nov 09 2002 v1.4
  * Removed content-type 'raw' (thanks to the guys at bogofilter)
  * Added 'binary' encoding identification (handlers not yet made)
  * Apparently no handlers needed for binary content-type media type
  * Removed some ugly debugging code from buffer.c

Nov 11 2002 v1.4
  * Added quoted-printable decoder code
  * Updated Makefile for easier updates
  * Removed BINS variable from Makefile

Jan 23 2003 v1.4
  * Updated mess/mime_alternative for invalid boundary line in MIME data
  * Added mess/text_plain
  * Added mess/text_html

Jan 27 2003 v1.4
  * Updated header_parse to allow for whitespace in header names

Feb 27 2003 v1.4
  * Updated MIME default disposition to not include DIS_INLINE

Apr 07 2003 v1.4
  * Added 'grow' member to line_t structure for variable reallocation size
  * Added 'h_content_type' member to eps_t structure for content-type string

May 12 2003 v1.4
  * Updated header files with include idefs
  * Updated qp decoder (so it actually worked :)

May 14 2003 v1.4
  * Updated base64_encode to send CRLF instead of just LF

May 15 2003 v1.4
  * Fixed memory leak in eps_next_header()
  * Renamed occurances of unroll to unfold
  * Renamed occurances of roll to fold
  * Packaged EPS v1.4

May 15 2003 v1.5
  * Renamed all 'struct name_t' to 'typedef struct'
  * Removed all external memory debugging function support
  * Removed 'COUNT_DEBUG' functions
  * Cleaned up some function declarations for non-existant functions
  * Made a few of the rfc2822 functions inline

May 21 2003 v1.5
  * Added mime_is_eof macro for determining last MIME part or EOF
    during MIME processing
  * Updated mime_next_header to use eps->h for automatic deallocation
  * Updated a few memcpy() to be memmove()

May 29 2003 v1.5
  * Added h_content_type to mime header
