Index: QUICK/hdrs/patchlevel.h *** elm2.4.ME+.31/hdrs/patchlevel.h Thu Jan 9 18:17:32 1997 --- QUICK/hdrs/patchlevel.h Thu Apr 10 21:39:29 1997 *************** *** 1,2 **** ! #define PATCHLEVEL "31 (25)" --- 1,2 ---- ! #define PATCHLEVEL "31H (25)" Index: QUICK/README.ME+ *** elm2.4.ME+.31/README.ME+ Thu Jan 9 18:17:32 1997 --- QUICK/README.ME+ Thu Apr 10 22:00:41 1997 *************** *** 11,16 **** --- 11,30 ---- Version Elm2.4 PL24 ME8b is based to version Elm2.4 PL24. Version Elm2.4ME+ PLx (25) includes patch of version Elm2.4 PL25. + Changes of Elm2.4ME+ PL31H (25) compared to Elm2.4ME+ PL31 (25) + --------------------------------------------------------------- + + [ This is out of branch patch. ] + + - Incorrect Content-length: -header was causing corruption + of folders. + From: Guy Harris + + - argv_from_to was not handled ',' in comments correctly. + Detected from report of Gary Casterline + + > Use rfc822_toklen instead of len_next_part + Changes of Elm2.4ME+ PL31 (25) compared to Elm2.4ME+ PL30 (25) -------------------------------------------------------------- Index: QUICK/hdrs/defs.h *** elm2.4.ME+.31/hdrs/defs.h Thu Jan 9 18:17:32 1997 --- QUICK/hdrs/defs.h Thu Apr 10 21:56:18 1997 *************** *** 195,203 **** # define VERSION "2.4ME+" /* Version number... */ ! # define VERS_DATE "Jan, 1997" /* for elm -v option */ # define WHAT_STRING \ ! "@(#) Version 2.4(ME+), USENET supported version, released Jan, 1997" #if defined(__STDC__) || defined(_AIX) # define ANSI_C 1 --- 195,203 ---- # define VERSION "2.4ME+" /* Version number... */ ! # define VERS_DATE "Apr, 1997" /* for elm -v option */ # define WHAT_STRING \ ! "@(#) Version 2.4(ME+), USENET supported version, released Apr, 1997" #if defined(__STDC__) || defined(_AIX) # define ANSI_C 1 Index: QUICK/src/newmbox.c *** elm2.4.ME+.31/src/newmbox.c Thu Jan 9 18:16:24 1997 --- QUICK/src/newmbox.c Thu Apr 10 21:38:11 1997 *************** *** 1105,1131 **** error_description(err), "reset - read_headers")); emergency_exit(); } ! } ! if (copyit && content_start >= 0) { ! if (fseek(temp, content_start, 0) == -1) { ! err = errno; ! MoveCursor(elm_LINES, 0); ! Raw(OFF); ! printf(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoTempFile, ! "\nCouldn't seek %ld bytes into temp file.\n"), ! mailfile_size); ! printf("** %s. **\n", error_description(err)); ! dprint(1, (debugfile, "Error: Couldn't seek temp file %s: (offset %ld) Errno %s (%s)\n", cur_tempfolder, mailfile_size, error_description(err), "reset - read_headers")); ! emergency_exit(); } fbytes = content_start; } - line = lines_start; - content_length_found = FALSE; - current_header->content_length = -1; /* mark as if not found yet */ - line_bytes = 0; } } --- 1105,1131 ---- error_description(err), "reset - read_headers")); emergency_exit(); } ! if (copyit) { ! if (fseek(temp, content_start, 0) == -1) { ! err = errno; ! MoveCursor(elm_LINES, 0); ! Raw(OFF); ! printf(catgets(elm_msg_cat, ElmSet, ElmCouldntSeekBytesIntoTempFile, ! "\nCouldn't seek %ld bytes into temp file.\n"), ! mailfile_size); ! printf("** %s. **\n", error_description(err)); ! dprint(1, (debugfile, "Error: Couldn't seek temp file %s: (offset %ld) Errno %s (%s)\n", cur_tempfolder, mailfile_size, error_description(err), "reset - read_headers")); ! emergency_exit(); ! } } fbytes = content_start; + line = lines_start; + content_length_found = FALSE; + current_header->content_length = -1; /* mark as if not found yet */ + line_bytes = 0; } } } Index: QUICK/src/strings.c *** elm2.4.ME+.31/src/strings.c Thu Jan 9 18:16:25 1997 --- QUICK/src/strings.c Thu Apr 10 21:42:32 1997 *************** *** 6,65 **** * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990, 1991 USENET Community Trust ! ******************************************************************************* ! * Bug reports, patches, comments, suggestions should be sent to: ! * ! * Syd Weinstein, Elm Coordinator ! * elm@DSI.COM dsinc!elm ! * ! ******************************************************************************* ! * $Log: strings.c,v $ ! * Revision 5.8 1993/08/03 19:28:39 syd ! * Elm tries to replace the system toupper() and tolower() on current ! * BSD systems, which is unnecessary. Even worse, the replacements ! * collide during linking with routines in isctype.o. This patch adds ! * a Configure test to determine whether replacements are really needed ! * (BROKE_CTYPE definition). The header file is now included ! * globally through hdrs/defs.h and the BROKE_CTYPE patchup is handled ! * there. Inclusion of was removed from *all* the individual ! * files, and the toupper() and tolower() routines in lib/opt_utils.c ! * were dropped. ! * From: chip@chinacat.unicom.com (Chip Rosenthal) ! * ! * Revision 5.7 1993/07/20 02:26:58 syd ! * Fix copy_sans_escape handling of tabs ! * From: Syd via code from G A Smant ! * ! * Revision 5.6 1993/01/20 03:02:19 syd ! * Move string declarations to defs.h ! * From: Syd ! * ! * Revision 5.5 1993/01/19 05:07:05 syd ! * Trim erroreous extra log entry ! * From: Syd ! * ! * Significant changes to provide consistent Date and From_ header ! * cracking. Overhauled date utilities and moved into library. Moved ! * real_from() into library. Modified frm, newmail, and readmsg utilities ! * to use library version of real_from(). Moved get_word() from Elm ! * source into library. Added new library routines atonum() and strfcpy(). ! * Fixed trailing backslash bug in len_next(). ! * From: chip@chinacat.unicom.com (Chip Rosenthal) ! * ! * Revision 5.3 1992/12/24 22:16:06 syd ! * Make copy_sans_escape expand tabs to prevent subject displays from getting messed up ! * From: Syd via request from pgf@Cayman.COM (Paul Fox) ! * ! * Revision 5.2 1992/10/17 22:30:43 syd ! * Force text arithimetic into unsigned for those systems ! * with signed chars ! * From: Marius Olafsson ! * ! * Revision 5.1 1992/10/03 22:58:40 syd ! * Initial checkin as of 2.4 Release at PL0 ! * ! * ! ******************************************************************************/ /** This file contains all the string oriented functions for the ELM Mailer, and lots of other generally useful string functions! --- 6,12 ---- * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990, 1991 USENET Community Trust ! *****************************************************************************/ /** This file contains all the string oriented functions for the ELM Mailer, and lots of other generally useful string functions! *************** *** 180,186 **** char *to; { int count=1; ! int idx = 0, q = 0,i; char *ptr=to; char *last; char **res; --- 127,133 ---- char *to; { int count=1; ! int idx = 0, q = 0, i; char *ptr=to; char *last; char **res; *************** *** 188,194 **** dprint(8, (debugfile, "argv_from_to: to=%s\n",to)); while (*ptr) { ! int len = len_next_part(ptr); if (len == 1 && *ptr == COMMA) count++; --- 135,141 ---- dprint(8, (debugfile, "argv_from_to: to=%s\n",to)); while (*ptr) { ! int len = rfc822_toklen(ptr); if (len == 1 && *ptr == COMMA) count++; *************** *** 202,208 **** ptr = to; last = ptr; while (*ptr) { ! int len = len_next_part(ptr); if (len == 1 && *ptr == ',' && last && !q) { int k; *ptr = '\0'; --- 149,156 ---- ptr = to; last = ptr; while (*ptr) { ! int len = rfc822_toklen(ptr); ! dprint(20, (debugfile, " token: %.*s\n",len,ptr)); if (len == 1 && *ptr == ',' && last && !q) { int k; *ptr = '\0'; *************** *** 212,223 **** k--; last[k] = '\0'; res[idx++] = last; last = NULL; } else if (len == 1 && *ptr == '<') q = 1; else if (len == 1 && *ptr == '>') q = 0; ! if (*ptr && !last && *ptr != ' ') last = ptr; --- 160,172 ---- k--; last[k] = '\0'; res[idx++] = last; + dprint(20, (debugfile, " addr: %.*s\n",last)); last = NULL; } else if (len == 1 && *ptr == '<') q = 1; else if (len == 1 && *ptr == '>') q = 0; ! if (*ptr && !last && *ptr != ' ') last = ptr; *************** *** 233,238 **** --- 182,188 ---- k--; last[k] = '\0'; res[idx++] = last; + dprint(20, (debugfile, " addr: %.*s\n",last)); last = NULL; } res[idx] = 0;