Index: elm2.4.ME+.123e-cvs/hdrs/patchlevel.h Prereq: 1190000000 *** elm2.4.ME+.123d/hdrs/patchlevel.h 2006-10-31 19:58:25.000000000 +0200 --- elm2.4.ME+.123e-cvs/hdrs/patchlevel.h 2006-10-31 19:41:57.000000000 +0200 *************** *** 1,12 **** ! #define PATCHLEVEL "123d (25)" /* Used by Configure: SHAREDTAG: .1.0.123 */ ! #define LAST_REPORT_TIME 1190000000 #define BUG_REPORT_ADDR "Kari Hurtta " ! #define VERS_DATE "Sep 2006" /* for elm -v option */ #define WHAT_STRING \ ! "@(#) Version 2.4(ME+), USENET supported version, released Sep 2006" /* * Local Variables: --- 1,12 ---- ! #define PATCHLEVEL "123e (25)" /* Used by Configure: SHAREDTAG: .1.0.123 */ ! #define LAST_REPORT_TIME 1193000000 #define BUG_REPORT_ADDR "Kari Hurtta " ! #define VERS_DATE "Nov 2006" /* for elm -v option */ #define WHAT_STRING \ ! "@(#) Version 2.4(ME+), USENET supported version, released Nov 2006" /* * Local Variables: Index: elm2.4.ME+.123e-cvs/README.ME+ *** elm2.4.ME+.123d/README.ME+ 2006-10-31 19:58:25.000000000 +0200 --- elm2.4.ME+.123e-cvs/README.ME+ 2006-10-31 19:41:57.000000000 +0200 *************** *** 1,4 **** ! $Header: /home/users/hurtta/cvsroot/mail/elmme+/README.ME+,v 1.1151 2006/09/23 13:27:52 hurtta Exp $ Version Elm2.4ME+ PL0 (25) is based on version Elm2.4 PL24 ME8b+. Version Elm2.4 PL24 ME8b+ is based on version Elm2.4 PL24 ME8b. --- 1,4 ---- ! $Header: /home/users/hurtta/cvsroot/mail/elmme+/README.ME+,v 1.1157 2006/10/31 17:41:57 hurtta Exp $ Version Elm2.4ME+ PL0 (25) is based on version Elm2.4 PL24 ME8b+. Version Elm2.4 PL24 ME8b+ is based on version Elm2.4 PL24 ME8b. *************** *** 13,18 **** --- 13,42 ---- Version Elm2.4 PL24 ME8b is based on version Elm2.4 PL24. Version Elm2.4ME+ PLx (25) includes patch of version Elm2.4 PL25. + Changes on Elm 2.4ME+ PL123e (25) compared with Elm 2.4ME+ PL123d (25) + --------------------------------------------------------------------- + + [ This patch is branch from the main line. ] + + - Fix panic + STRING PANIC in cs_unknown.c:1991:cs_estimate_clip_unknown + >>>printable_len not supported + on some case when elmrc option locale-charsets is used. + + - Fixed some problems with Configure on ubuntu. + + - When + locale-charsets = UTF-8 + was effect, Elm ME+ was printing + [ Charset US-ASCII unsupported, converting... ] + > Be sure that cs_unknown gives flag CS_universal_set + for UTF-8 as cs_utf was giving. + + - Avoid error message + "Failed save message to folder XXXX" + when saving mail from V)iew digest -command + and embedded mail do not end to newline. + Changes on Elm 2.4ME+ PL123d (25) compared with Elm 2.4ME+ PL123c (25) --------------------------------------------------------------------- Index: elm2.4.ME+.123e-cvs/Configure *** elm2.4.ME+.123d/Configure 2006-07-05 20:21:50.000000000 +0300 --- elm2.4.ME+.123e-cvs/Configure 2006-10-23 15:11:34.000000000 +0300 *************** *** 8,14 **** # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # ! # $Header: /home/users/hurtta/cvsroot/mail/elmme+/Configure,v 1.180 2006/04/30 17:54:54 hurtta Exp $ # : sanity checks --- 8,14 ---- # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # ! # $Header: /home/users/hurtta/cvsroot/mail/elmme+/Configure,v 1.183 2006/10/23 12:11:34 hurtta Exp $ # : sanity checks *************** *** 2679,2684 **** --- 2679,2688 ---- $contains EWOULDBLOCK /usr/include/asm/errno.h > /dev/null 2>&1; then has_flock="$define" echo 'flock locking available.' + elif $test "$uname_os" = "Linux" && + $contains EWOULDBLOCK /usr/include/linux/errno.h > /dev/null 2>&1; then + has_flock="$define" + echo 'flock locking available.' else has_flock="$undef" echo 'flock locking not available.' *************** *** 2705,2710 **** --- 2709,2718 ---- $contains F_SETLK /usr/include/asm/fcntl.h > /dev/null 2>&1; then echo 'F_SETLK found, fcntl locking available' has_fcntl="$define" + elif $test "$uname_os" = "Linux" && + $contains F_SETLK /usr/include/bits/fcntl.h > /dev/null 2>&1; then + echo 'F_SETLK found, fcntl locking available' + has_fcntl="$define" else echo 'F_SETLK not found, fcntl locking not available' has_fcntl="$undef" Index: elm2.4.ME+.123e-cvs/lib/cs_unknown.c *** elm2.4.ME+.123d/lib/cs_unknown.c 2006-07-05 20:21:50.000000000 +0300 --- elm2.4.ME+.123e-cvs/lib/cs_unknown.c 2006-10-28 14:33:03.000000000 +0300 *************** *** 1,7 **** ! static char rcsid[] = "@(#)$Id: cs_unknown.c,v 1.15 2006/04/09 07:37:08 hurtta Exp $"; /****************************************************************************** ! * The Elm (ME+) Mail System - $Revision: 1.15 $ $State: Exp $ * * Author: Kari Hurtta *****************************************************************************/ --- 1,7 ---- ! static char rcsid[] = "@(#)$Id: cs_unknown.c,v 1.17 2006/10/28 11:33:03 hurtta Exp $"; /****************************************************************************** ! * The Elm (ME+) Mail System - $Revision: 1.17 $ $State: Exp $ * * Author: Kari Hurtta *****************************************************************************/ *************** *** 1873,1878 **** --- 1873,1883 ---- #endif #ifdef __STDC_ISO_10646__ prop |= CS_mapping; + + if (st->MIME_name && + 0 == istrcmp(st->MIME_name,"UTF-8")) + prop |= CS_universal_set; + #endif } *************** *** 1935,1940 **** --- 1940,1953 ---- printable_len->ret_len = 0; + if (0 == str->p->len) { + DPRINT(Debug,49,(&Debug, + "cs_estimate_clip_unknown: Empty string.\n")); + + return 0; + } + + if (str->p->private_flag) { /* Use wchars (locale) */ Index: elm2.4.ME+.123e-cvs/src/fileio.c *** elm2.4.ME+.123d/src/fileio.c 2006-07-05 20:21:50.000000000 +0300 --- elm2.4.ME+.123e-cvs/src/fileio.c 2006-10-30 20:01:09.000000000 +0200 *************** *** 1,7 **** ! static char rcsid[] = "@(#)$Id: fileio.c,v 1.64 2006/05/30 16:33:21 hurtta Exp $"; /****************************************************************************** ! * The Elm (ME+) Mail System - $Revision: 1.64 $ $State: Exp $ * * Modified by: Kari Hurtta * (was hurtta+elm@ozone.FMI.FI) --- 1,7 ---- ! static char rcsid[] = "@(#)$Id: fileio.c,v 1.65 2006/10/30 18:01:09 hurtta Exp $"; /****************************************************************************** ! * The Elm (ME+) Mail System - $Revision: 1.65 $ $State: Exp $ * * Modified by: Kari Hurtta * (was hurtta+elm@ozone.FMI.FI) *************** *** 459,464 **** --- 459,491 ---- if (! (buf_len = mail_gets(buffer, sizeof buffer, infile))) break; + + if (body_bytes + buf_len >= current_header->content_length) { + + DPRINT(Debug,5,(&Debug, + "copy_encrypted: Readed past of end of body\n")); + + if (buf_len > 0 && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -1 == current_header->content_length) { + DPRINT(Debug,5,(&Debug, + " ... ignoring NL\n")); + buf_len -= 1; + } else if (buf_len > 1 && + '\r' == buffer[buf_len-2] && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -2 == + current_header->content_length + ) { + + DPRINT(Debug,5,(&Debug, + " ... ignoring CR NL\n")); + buf_len -= 2; + } + } + + + body_bytes += buf_len; /* Take care of CRLF => LF conversion or *************** *** 547,552 **** --- 574,604 ---- while (body_bytes < current_header->content_length) { if (! (buf_len = mail_gets(buffer, VERY_LONG_STRING, infile))) break; + + if (body_bytes + buf_len >= current_header->content_length) { + + DPRINT(Debug,5,(&Debug, + "copy_plain: Readed past of end of body\n")); + + if (buf_len > 0 && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -1 == current_header->content_length) { + DPRINT(Debug,5,(&Debug, + " ... ignoring NL\n")); + buf_len -= 1; + } else if (buf_len > 1 && + '\r' == buffer[buf_len-2] && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -2 == + current_header->content_length + ) { + + DPRINT(Debug,5,(&Debug, + " ... ignoring CR NL\n")); + buf_len -= 2; + } + } + body_bytes += buf_len; *************** *** 607,612 **** --- 659,689 ---- if (! (buf_len = mail_gets(buffer, VERY_LONG_STRING, infile))) break; + if (body_bytes + buf_len >= current_header->content_length) { + + DPRINT(Debug,5,(&Debug, + "copy_binary: Readed past of end of body\n")); + + if (buf_len > 0 && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -1 == current_header->content_length) { + DPRINT(Debug,5,(&Debug, + " ... ignoring NL\n")); + buf_len -= 1; + } else if (buf_len > 1 && + '\r' == buffer[buf_len-2] && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -2 == + current_header->content_length + ) { + + DPRINT(Debug,5,(&Debug, + " ... ignoring CR NL\n")); + buf_len -= 2; + } + } + + body_bytes += buf_len; /* NO CONVERSIONS! */ *************** *** 670,675 **** --- 747,779 ---- if (! (buf_len = mail_gets(buffer, sizeof buffer, infile))) break; + + if (body_bytes + buf_len >= current_header->content_length) { + + DPRINT(Debug,5,(&Debug, + "copy_cooked: Readed past of end of body\n")); + + if (buf_len > 0 && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -1 == current_header->content_length) { + DPRINT(Debug,5,(&Debug, + " ... ignoring NL\n")); + buf_len -= 1; + } else if (buf_len > 1 && + '\r' == buffer[buf_len-2] && + '\n' == buffer[buf_len-1] && + body_bytes + buf_len -2 == + current_header->content_length + ) { + + DPRINT(Debug,5,(&Debug, + " ... ignoring CR NL\n")); + buf_len -= 2; + } + } + + + body_bytes += buf_len; DPRINT(Debug,15,(&Debug,