
alterMIME CHANGELOG:
--------------------------------------------------------------------------
-Abbreviations Used:
DEV = This update was released as a DEVELOPMENT release of alterMIME
		the change will be included in the next STABLE release as well.

STA = This update was released as a STABLE release of alterMIME
--------------------------------------------------------------------------
05 May 2010:
	PLD-DEV: Changed the way the pretext system works, now it's the
			same as the disclaimer system of specifying files 
			--pretext=<plaintext pretext file>
			--pretext-html=<html pretext file>
			--pretext-b64=<base64 pretext file>

			If you have BOTH pretext and disclaimer files specified then
			alterMIME will now insert both in the single run.

			PLEASE NOTE - due to the streaming requirements the PRETEXT
			HTML insertion routine -depends- on there being a BODY tag
			present else the insertion will not occur.


29 April 2010: 
	PLD-DEV: Added --pretext which positions the disclaimers to the 
		start of the MIME segments. Currently only works for;
			* plain text
			* no boundaries
			* HTML


12 Dec 2008:
	PLD-DEV:
		Fixed up occurances of strcpy, sprintf and strcat located in 
			mime_alter.c

24 Nov 2008:
	PLD-DEV:
		MIME_headers:MIME_headers_get() Added initialization code for
				the crlf/lf counts to read from the ffget module.  This
				allows us to handle situations where we have insufficient
				headers to make a good guess of the linebreak, because we
				simply read from the ffget structure what the previous one
				was (if any).

		Updated quoted-printable encoding module (qpe.[ch]).

16 Nov 2008:
	PLD-REL: 0.3.10

15 Nov 2008:
	PLD-DEV: 
		Storing line delimeter in the alterMIME global struct.  Saves
		having to redefine/locate/check it all the time.

		Added CR, CRLF and CRCR occurance counters in MIME_headers

		Fixed up problem with AM_adapt_linebreak which caused
		total stripping of delimeters

06 Nov 2008:
	PLD-DEV:
		Moved AM_globals structure to the mime_alter.h file so that
		we can prepare for 0.4.x series which will provide an API
		change forcing us to pass an AM_global struct into every
		AM_* function.  This will allow for multiple instances of
		the alterMIME engine in a given process without clashing
		issues of various global vars.  Should have done this 
		years ago.

	PLD-DEV:
		Added an output filter AM_adapt_linebreak() to feed disclaimers
		through so that their linebreaks match the last break type
		detected with the FFGET() reading.  


30 Oct 2008:
	PLD-REL:
		Cleaned up compile warnings (against Ubuntu's 8.10's gcc, 
				including fread/fwrite return values and the PLD_strlower()
				signed parameter issues.

14 Oct 2008:
	PLD-DEV:
		qpe.c updated to handle broken Outlook issue.

07 Oct 2008:
	-PLD:DEV:
		Added altermime_status_flags global to allow for easy inspection of
		the result of a disclaimer or xheader insertion run.

15 Aug 2008:
	-PLD:DEV:
		Extended the search depth of the segment-3+ insertion of disclaimers
		allowing it to find potential HTML/Text disclaimer segments that may
		have been burried deeper in a non-forwarded email. Insertion search
		will terminate immediately if a RFC822 forwarded email header is 
		located.

20 Jul 2007:
	-PLD:DEV:
		Added closing of open file handles in AM nullify. 
			(this would cause files to be zeroed if one performed
			 an operation after nullifying attachments).

		Fixed small memory leak from regex compilation in AM nullify.

13 Jul 2007:
	-PLD:REL:
		Release as 0.3.8

	-PLD:DEV:
		Updated ffget module.

		Corrected some code where hard-coded buffer sizes were present rather
		than properly referenced sizes.

09 Jun 2007:
	-PLD:DEV:
		Temporary file removal if insertion is aborted due to signed
			email - Carlos Velasco

	-PLD:DEV:
		Added text/calendar detection to prevent mutating outlook
		calendars (and others)

	-PLD:DEV:
		Preparing for STABLE release


09 Mar 2007:
	-PLD:DEV:
		Fixed bug that can cause crashing on QP decoding where the 
		charout size wasn't 1.  Thanks to Yossi Gottlieb for suppling
		the patch.

07 Mar 2007:
	-PLD:DEV:
		Added text/calendar detection, this allows us to implicitly
		avoid adding disclaimers into these bodies by virtue of the
		fact that alterMIME won't detect it as a "plain or HTML" 
		text body.

12 Feb 2007:
	-PLD:DEV:
		Patch applied for QP encoding problem of chars as hex.
	  (Patch provided by Julian Schneider)	

30 Jan 2007:
	-PLD:DEV:
		Fixed missing boundary situation after BASE64 encoded
		disclaimer insetion.

		Fixed non-MIME BASE64 disclaimer insertion routines
		(ie, for emails with only a single segment and no
		 boundary).

28 Jan 2007:
	-PLD:DEV:
		Added BASE64 _encoded_ disclaimer option so that
		it's possible to insert a BASE64 pre encoded dislciamer
		file into BASE64 bodies ONLY (ie, it won't be applied
				to plain or QP encoded bodies).

		--disclaimer-b64=

23 Jan 2007:
	-PLD:DEV:
		Added BASE64 disclaimer insertion routines (NAB)
		Requires the use of --force-into-b64 to activate

		Currently only works for text/plain and text/html
		content-type segments.  Using for other segment
		types may cause unpredictable results (as it is the
				results are not proven).


14 Jul 2006:
	-PLD:DEV:
		Rolled in new FFGET module with cleaner code.

		Implemented FFGET_ftell / FFGET_fseek in the FFGET routines to
		allow for better debugging and potential features in alterMIME

22 Jun 2006:
	-PLD:DEV:
		Fixed --help output to indicate that --remove=<filename regex>
		is the correct notion, as apposed to the non-existant
		"--remove-regex".  Thanks to Alex Samorukov for pointing this out.

29 Mar 2006:
	-PLD:REL:
		Released as 0.3.7

27 Mar 2006:
	-PLD:DEV:
		Added SEGMENT 3 disclaimer insertion attempt to handle emails that
		have both text and HTML representations of the email message.

02 Mar 2006:
	-PLD:DEV:
		Applied patch from Tim Jackson which solves a BASE64 induced
		mail truncation if disclaimer insertion fails.

01 Mar 2006:
	-PLD:DEV:
		Added Quoted-printable encoding to disclaimers if required by 
		the transfer-encoding header of the MIME segment.

14 Feb 2006:
	-PLD:DEV:
		Fixed disclaimer insertion issue in emails with both HTML 
		and attachment.

27 Mar 2005:
	-PLD:REL:
		Release as 0.3.6

	-PLD:DEV:
		-Added -O2 option to Makefile for optimised binary

		-Added --no-qmail-bounce parameter to alterMIME to allow people
			to disable the email body search for files/attachments during
			a remove/removeall operation.

		-Added filename searching for the name= header parameters for
			remove facility.

		-Added headers-longsearch (qmail bounce) type detection for
			remove facility.


24 Mar 2005:
	-PLD:DEV:
		-Fixed multipart[-insert] discrepency between help output and
			actual functionality.  --multipart-insert is the now correct
			parameter.

	-PLD:DEV:
		-Fixed incorrect parsing of body data when a header could not
			be inserted on the first segment, causing alterMIME to start
			reading the body text as if it was header data.  Thanks to
			Pieter Vanmeerbeek for pointing this out and providing a 
			set of data that reliably produced the problem.

	-PLD:DEV:
		-Fixed help output to display 'suffix' rather than 'postfix' for
			header alteration feature.

04 Feb 2005:
	-PLD:DEV:
		-Changed header insertion line from using a hard coded \r\n
			to using the contents of the 'true blank' separator line.
			(see AM_insert_Xheader)

20 Nov 2004:
	-PLD:DEV:
		-Fixed mistake in AM_add_disclaimer_cleanup(), where it 
			incorrectly tests the input file for stdin using
			strcmp() causing alterMIME to not rename the new file.

04 Nov 2004:
	-PLD:DEV:
		Changed \n to \r\n delimeter for the X-header insertion routine

19 Oct 2004
	-PLD:DEV:
		Fixed up \r\n issues with UNIX created disclaimers showing up
		fine in UNIX but as a single line in Windows.  This one was for
		Neil Wilson of ZA.

	-PLD:DEV:
		Added patch from Tim Bruylants to allow for forcing of 
		disclaimers in HTML MIME segments even if the segment doesn't
		terminate with /body /html.  The patch also permits the use of
		disclaimers from STDIN (to STDOUT).  Many thanks Tim.

		Fixed misspelling of 'filname' in alterMIME help/usage


18 Sep 2004
	-PLD:REL:
		Release 0.3.5

	-PLD:DEV:
		Rewrite the AM_add_disclaimer() function, breaking it down into
		smaller functions in an attempt to make it readable.  
		AM_add_disclaimer now calls;
			AM_load_disclaimers() - Load the disclaimers required to insert.
			AM_read_to_boundary() - read input file till a boundary is hit.
			AM_add_disclaimer_no_boudary() - Insert into a non-boundary email.
			AM_insert_disclaimer_into_segment() - Insert into a MIME segment



17 Sep 2004
	-PLD:DEV:
		Added content type and content transfer encoding types 
		to NOT insert disclaimers into.  See the function AM_read_headers() 
		where the switch hinfo.content_type and .content_transfer_encoding
		is listed.

		This prevents some potential infinite loops when alterMIME tried to
		read the data as headers, rather than as a MIME body.

		Added BS_set_hold_limit() to limit the number of boundaries
		held in the stack to a certain limit (in the case of alterMIME, 1).
		This is done so that alterMIME doesn't try to traverse into 
		nested segments.


16 Sep 2004
	-PLD:DEV:
		Changed boundary tests from strstr() to BS_cmp()
		Updated MIME_headers code to match the ripMIME engine
		Fixed bug where some infinite loops occured while trying to
			insert a HTML disclaimer

06 May 2004
	-PLD:DEV:
		Stopped alterMIME from inserting a disclaimer in a B64 encoded
		main body.

10 Mar 2004
	-PLD:REL:
		Release 0.3.4

09 Mar 2004
	-PLD:DEV: Fixed up header clobbering where the fields were ISO encoded
		and duly un-encoded when filtered via alterMIME. 
	  	Thanks to Viktoras Rynkevicius for persuing this one.

16 Jan 2003
	-PLD:DEV: Added initializers for some hinfo fields to pacify valgrind
	-PLD:DEV: Added AM_done() function to clear any remaining disclaimer
					malloc'd data produced from the strdup() call inside of
					AM_set_disclaimer_*()

30 Nov 2003
	-PLD:DEV: Implementing regex matching for attachment removal

14 Nov 2003
	-PLD:REL: Released alterMIME 0.3.3

30 Oct 2003
	26554
	-PLD:DEV: Added x-header string filtering to prevent dubious strings
			getting through, such as ones containing \n\r sequences or
			0 length strings.

21 Oct 2003
	-PLD:DEV: Reimplementing S/MIME detection (development)

26 Jun 2003
	-PLD:DEV: Applied patch from Ludwig Pummer to fix up stdin/out streaming
		for the --remove facility

11 Jun 2003
	-PLD:DEV: Applied fix from Jorge Jimenez to resolve issues with HTML
		disclaimer insertion in certain situations.

14 May 2003
	-PLD: Fixed attachment-replace path inclusion into the MIME-headers

	-PLD: Removed spurilous parameters off AM_add_disclaimer() call which
		caused some segfault behavior in other external applications which were
		using the alterMIME engine

04 May 2003
	-PLD: Release as 0.3.1
28 April 2003
	-PLD: replaced the attachment replacement code. Uses a very similar structure
		to the code as used by the nullification/remove system [ with some minor
		changes ].  There are still some outstanding issues, like how to cleanly
		deal with the 'main' headers of each MIME, mostly in regards to the fact 
		that unlike the per-attachment headers, the main headers typically contain
		a lot of other email-related information.

		Overall the code works a lot better than the old one, despite the current
		limitations.

		Now, if an attachment is replaced, its old headers are also replaced.
		The new headers are just Content-Type, Content-Disposition and 
		Content-Transfer-Encoding.  There may be more headers added later 
		depending on the needs encountered. 

		Additionally, we can currently only add attachments in BASE64 encoding
		format, I will extend this in the future to support QuotedPrintable
		and plain-text.

27 April 2003
	-PLD: Fixed header-alteration in Suffix mode problem where it would split
		a doubleCR or singleCR line incorrectly, because it was looking for a LF
	  but didn't find one.	

  -PLD: Changed the nullification logic slightly so that the first MIME 
		segment can be 'nullified'.  Rathern than being able to remove the
		actual headers which specify the file details, it's been currently 
		chosen to clobber the filename in the headers by prefixing with either
		a _ or X character and then proceeding to nullify the contents

	-PLD: Nullification specification via --nullify= can be a regex expression.
		This means that you can now remove multiple files, ie
			--remove='\.exe$' 

		--remove-all has been retained, despite the fact that the feature can be
		achived using --remove='.*'

26 April 2003
	- Changed/replaced the AM_section1() call into AM_read_headers() in which
		I then call MIMEH_parse_headers(), which does a vastly superior job of
		detecting the /right/ headers.

	- Replaced the AM_nullify_attachment() with a far more compact version
		which does a far cleaner job of nullifying, removing the entire 
		attachment and headers [ except for attachments which are the entire
		email body, in which case I have yet to still decide/workout how
		best to handle the situation ]

		

25 April 2003
	- Releasing as 0.2.2, this will be the last [ feature ] release for the
		0.2.2 series.  After this I will rip out a lot of the code dealing with
		the header parsing and replace it with that which is now being used in
		ripMIME - The new series will be 0.3.x


21 March 2003
	- Added generic header replacement tool:
		alterMIME now allows you to change headers [if they already exist] so
		that you can do things like change subject headers.

		A future extention will be to allow the modification of headers on all
		the MIME segments rather than just the main headers.

		To use:

			--alter-header="header-you-want-to-change" --alter-mode=prefix|suffix|replace --alter-with="text to use"

		--alter-mode= modes explanation:

			prefix: prefixes the text defined with --alter-with  before the current existing
				text for the header
			suffix: suffixes the text defined with --alter-with after the current existing
				text for the header
			replace: replaces all the currently existing header text with the text provided
				by --alter-with

16 March 2003
	- Released v0.2.1
	
23/02/2003
	- Unified logging output routines ( all logging now goes via LOGGER )
	- Added logging output mode option ( stdout / stderr / syslog )
	- Added description of available options for alterMIME in verbose/help
		mode
	- Cleaned up altermime.c source code, placing all loose global vars into
		single passed struct


22/02/2003
	- Replaced strlower, XAM_strtok and zstr with a single module 'pldstr'.
	- Added new modules filename-filter and libmimedecoders 
	- Added --disclaimer-html option which allows you to have a seperate 
		plaintext and HTML disclaimer
	- Added --multipart option to force alterMIME to insert disclaimers into
		the first level multipart block in an email, this means that you
		can effective insert disclaimers into forwarded emails.


12/11/2002
	- Released as 0.1.14
	- Corrected a FFGET module bug which caused terminating lines without a \n or \r to 
		contain data from the previous line ( ie, there was no terminating \0 at 
		the string ending, thus the previous data in the buffer simply filled up
		the rest of the buffer )

	- Corrected the insertion of disclaimers in situations where a file attachment
		ends without a boundary line.

	- Corrected the insertion of disclaimers in situations where a single file is 
		attached with no email bodies.


12/05/2002
	- Released as 0.1.13
	- Cleaned up disclaimer insertion routines so that disclaimers are not inserted into
		the incorrect MIME segment
	- Used ccmalloc to test the allocation of memory when running --xheader or --disclaimer
		, I'm pleased to say that both operations returned with no under or over use
		of memory :-) ccmalloc is a great program tool, I highly recommend it for when
		you're tracking down wierd bugs, often, just by cleaning up the memory spillages
		you fix you bugs. - ccmalloc is by  Armin Biere.  (biere at inf.ethz.ch)

26/04/2002
	- Released as 0.1.12
	- Corrected segfault issue with x-header insertion, would occur once every 1000 or so emails
		was caused by using snprintf() in alterMIME with one byte too high a buffer size value
		this in turn cased the FFGET_FILE variable to be overwritten with a \0 byte causing
		the program to crash on exit (which was rather interesting to watch).

	- Improved the disclaimer insertion routines.  Hopefully now it'll correctly put in the right
		style of disclaimer (HTML or Plain) based on header information.

19/04/2002
	- Corrected x-header insertion code, problem actually resided in the FFGET module
		which was returning NULL on FFGET_fgets() one call too early.

06/03/2002
	- Replaced AM_build_table() with a static decoding table at compile time
	- Added FFGET library for file input and correct \n\r detections in headers
	- Updated AM_insert_Xheader() routine.


22/10/2001
	- Release 0.1.10
	- Moved strlower() call into mime_alter codebase and
		renamed it to AM_strlower.  Also improved the speed
		of the strlower call by removing the testing for
		uppercase on each char.
	- Makefile: Added strip command to make install
	- mime_alter:AM_add_disclaimer: Added logic to deal with broken AOL emails [missing BODY tag]
	- Thanks to Sean Kelly for supplying the mailpack.

21/10/2001
	- Released 0.1.9
	- Corrected boundary quotation closure issue.

20/10/2001
	- Release 0.1.8
	- Changed location detection algorithm for disclaimer insertion,
		specifically to deal with emails which are [in effect] nested
		one level down despite being new emails.
	- No longer alters signed messages [for disclaimer addtion] without
		being forced via --altersigned option

	- Thanks to Raymond Bramwell for providing the assortment
		of mailpacks showing up these intersting issues


17/10/2001
	- Improved HTML disclaimer addition, prevented spurilous line addtion
		in emails which had no additional attachments

15/10/2001
	- Added ability to nullify all named attachments (feature Plead by Estaga)
	- Improved disclaimer insertion technique so as not to break files
		which didn't have </body> tag on a seperate line
	- Made disclaimer addition remove the temp file after completion

09/03/2001
	- Reworked replacement file section, making it buffer the headers before
		writing out, this allows us to then change the headers to suit the
		new file name without requiring two passes of the file.
	- Got rid of the spurilous alterMIME decoding messages (why did I leave
		them there in the first place!!#@$!!!

03/08/2001
	- Fixed up potential sig11 issues with files being read which
		didn't exist.

21/07/2001
	- Fixed up disclaimer intertion routine if file did not contain
		a boundary specifier.

01/07/2001
	- Added xheader insertion facility (from ripMIME)

17/06/2001
	- Added attachment replace ability
	- Fixed up disclaimer ability to enable both HTML and plaintext
		portions to be updated

05/06/2001-
	- Fixed up Makefile
	- Released as alterMIME 0.1.3

07/05/2001 -
	- Rewrote "unable to add disclaimer" message to make more sence in
		mime_alter.c

05/05/2001 -
	- Added Makefile to package.

02/05/2001 -
	- Initial development and release.
	- Features available are:
		disclaimer-addition
		attachment-nullification (rendering attachment to 0 bytes)

	---------------------------------------------
