Nemo Mess822 - Changes

Changes of the second generation of the Mess822 package.

v2.3 - UNRELEASED

This release contains new code, code optimisations, changes and fixes. Particular emphasis is on cross platform compatibility.

Version Notes
• New Defined MESS822_TIME initialiser for mess822_time structure.
• Changed Various code improvements.
(formerly it was simply asserted)
• Changed Additional annotations/comments - source code files.
• Changed The mess822_header field flag is incremented each time its corresponding header is encountered.
(formerly it was simply asserted)
• Changed All mdoc files - change text substitution literals (inspired by GNU Autoconf Makefile.in syntax).
• Changed Removed executable bit from all files.
• Fixed 822print - reverted to original DJB header field order.
• Fixed 822print - restore deleted code from DJB distribution.
• Fixed 822address(1) - fixed description field.
• Requires Nemo DJB Library v3.0 or later.
• Requires Nemo BufIO Library v3.0 or later.
• Requires Nemo CalDateTime Library v3.0 or later.

v2.2.1 - December 28, 2017

This release contains minor enhancements and changes.

Version Notes
• New mess822_key_value_pairs() - based on previous version of mess822_content_field() with fixes.
• Changed mess822_content_field() - implemented using mess822_key_value_pairs().
• Changed Minor changes to build system.
• Changed Replaced all comparison instances of '== -1' to '< 0'.
• Changed Implement #include <nemo/macro_noreturn.h> from Nemo DJB Library.
• Changed Implement #include <nemo/macro_unused.h> from Nemo DJB Library.
• Changed All programs - removed global initialisation of PROGRAM.
Inserted PROGRAM = *argv; into main().
• Changed All programs - removed program name from USAGE[] string.
• Changed All programs - centralised fatal error messages.
• Requires Nemo DJB Library v2.10 or later.
• Requires Nemo DJBIO Library v2.2.3 or later.
• Requires Nemo DJBCAL Library v2.1.8 or later.

v2.2 - August 18, 2017

This release contains optimisations and fixes. Particular emphasis has been on cross platform compatibility.

Tested on Linux raspberrypi 4.9.35-v7+ #1014 SMP, armv7l GNU/Linux - Raspbian with Desktop, 32 bit platform.

Version Notes
• New mess822_multipart_line() - create a Content-Type header field customised for a multipart content type with a boundary declaration (includes field caption and end of line).
• Changed 822address.c - reorganised includes.
• Changed 822print.c - reorganised includes.
• Changed 822received.c - reorganised includes.
• Changed 822date.c - reorganised includes.
• Fixed 822attach - proper handling of mess822_content_field() return values.
• Fixed Minor changes to build system.
• Requires Nemo DJB Library v2.8.3 or later.
• Requires Nemo DJBIO Library v2.2.2 or later.
• Requires Nemo DJBCAL Library v2.1.7 or later.

v2.1 - February 12, 2017

Version Notes
• API change mess822_make_mime_delimiter() - renamed to mess822_mime_delimiter().
• API change mess822_header - new struct member unsigned int (*exclude)(const stralloc *sa) replaces const sa_vector *exclude_list - reduce code footprint in default case.
• API change mess822_header_excludes() - each entry of the list must be null terminated.
• New 822address - extract addresses from mail message.
• New mess822_message_id_line() - create a unique Message-Id header field (includes field caption and end of line).
• New mess822_encode_stralloc() - same functionality as mess822_encode_data() - convenience routine for stralloc data structures.
• Changed MESS822_ADDRDATA - initialiser for mess822_addrdata.
• Changed 822attach.c - removed readwrite.h header.
• Changed mess822_date() - minor code optimisation.
• Changed mess822_date() - returns +0000 for UTC time zone.
• Changed mess822_quote.c - split into smaller modules.
• Changed Accommodate changes in Nemo DJBIO Library v2.2.1.
• Fixed Formatting changes to mdoc files.
• Fixed 822attach - proper handling of djbio_get() return values.
• Fixed Minor changes to build system.
• Removed FILES - unused and high maintenance.
• Requires Nemo DJB Library v2.7 or later.
• Requires Nemo DJBIO Library v2.2.1 or later.

v2.0 - June 20, 2016 - Major Changes from Original Distribution

Version Notes
• New 822attach - add attachment to a mail message.
• New mess822_addrlist_scan() - extract addresses from an RFC 822 field.
• New mess822_header_excludes() - add list of header keys to be excluded from processing.
• New mess822_make_mime_delimiter() - create a unique MIME separator string.
• New mess822_slurp_headers() - parse all headers of a message.
• New Makefile target: "clean".
• New Imported manual pages from third party sources.
• Changed hier.c - implemented unsigned int install_manuid from Nemo DJB Library v2.5.2.
• Changed Changed many signed return values into unsigned return values.
• Changed Changed many prototypes to use data types in Nemo DJB Library.
• Changed Many routines replaced by those found in Nemo DJB Library.
• Changed Routines that used the 1st generation of buffered I/O are now using Nemo DJBIO Library based buffered I/O.
• Changed Many routines replaced by those found in Nemo DJBCAL Library.
• Changed Build/installation framework provided by Nemo DJB Library.
• Changed Converted K&R prototypes to ANSI.
• Changed All manual pages have been converted to mdoc(7) format.
• Changed Additional annotations/comments - source code files.
• Changed Using some of the standard integer types in the POSIX standard.
• Changed Changed many signed integers into unsigned integers.
• Changed Source code formatting is now "Compact Control Readability Style" - variant of K&R, similar to the Stroustrup variant.
One exception: single line conditional returns are on same line as the conditional.
Long lines are rarely wrapped.
Indent size is two spaces.
• Fixed mess822_when() - now handles optional leading day of week.
• Fixed Renamed internal routines that had names clashing with standard library functions.
• Fixed Patched source code to use #include <errno.h>.
• Fixed Resolved all compile errors and warnings from the GNU C compiler (-W -Wall -Werror).
• Fixed In scripts and the Makefile, all references to "head -1" have been changed to "head -n 1".
• Removed "systype" processing.
• Removed ofmipd - transferred to nemo-qmail package (unreleased).
• Removed ofmipname - transferred to nemo-qmail package (unreleased).
• Removed new-inject - transferred to nemo-qmail package (unreleased).