David Levine [Sat, 26 Jan 2013 14:52:50 +0000 (08:52 -0600)]
Enabled colorized test output (PASS/FAIL/summary) by default
via "color-tests" automake option. To disable at runtime,
either set your AM_COLOR_TESTS environment variable to "no",
or provide that on the make check command line.
Ken Hornstein [Thu, 24 Jan 2013 21:05:36 +0000 (16:05 -0500)]
Fix the format engine so it properly keeps track of multibyte characters
and column positions when processing components and other functions.
When working on this code I realized we have nothing that checks to make
sure right justification of format function output works properly, so a
test for right justification is also included.
Ken Hornstein [Mon, 21 Jan 2013 15:32:37 +0000 (10:32 -0500)]
Fix a bug leading to message corruption with inc when incorporation more
than one message at a time.
When I reworked the scan() code to remove the use of stdio internals,
two code paths were created. The inc code path consumed another buffer
from the nxtbuf list for processing the message body. At the end of
scan() there was code to push back all of the consumed buffers to the
nxtbuf list. The extra buffer consumed in the inc code path wasn't
being pushed back, and as a result the nxtbuf list would end up with
duplicate pointers in it. This would result in two components sharing
the same text buffer, which caused the message corruption.
When I looked at this closer, I realized that there was no reason to
push those buffers back to the list; nxtbuf gets reset to compbuffers
at the start of every call to scan(), and nxtbuf isn't used after the
buffers are pushed back. Some researched revealed that this was the
same back in the original MH code. I decided it was simplest to simply
delete the buffer recycling code.
David Levine [Sun, 6 Jan 2013 21:04:24 +0000 (15:04 -0600)]
Removed support for #ifdef LBL. It was broken anyways,
sometime between MH 6.8.5 and the Apr 1999 entry into CVS.
Also removed the addtoseq format function that could only be
accessed with it.
David Levine [Sun, 6 Jan 2013 15:38:21 +0000 (09:38 -0600)]
Fixed test-utf8-body to actually contain the UTF-8 character
instead of the single byte, 8-bit character. This was caught
using Heirloom shell with a UTF-8 locale: when it wrote the
test draft from a here document, it converted the single byte
character to UTF-8. This verifies that behavior:
David Levine [Fri, 4 Jan 2013 03:59:44 +0000 (21:59 -0600)]
In cpstripped() and cptrimmed(), if a multibyte character is
found, only count it as taking up one character in the
destination buffer (if it has enought room). This way,
scan(1)'s output won't be jagged if there are any subjects,
for example, that have multibyte characters.
Added a test for this to test-scan-multibyte, and moved the
test for an invalid multibyte sequence from test-scan to it.
David Levine [Thu, 3 Jan 2013 02:07:43 +0000 (20:07 -0600)]
Fixed decoding of header fields when they contain a character that
can't be converted. Added test case to test-scan. valgrind also
noticed that things went amiss.
Paul Fox [Thu, 29 Nov 2012 18:59:55 +0000 (13:59 -0500)]
show: remove unreachable code
the stanza in question has been impossible to reach for some time. i
believe its purpose was to give a non-mh display proc full pathname
arguments to work with. since we've chdir'd to the folder, giving it
message numbers (i.e., relative pathnames) is fine.
Paul Fox [Tue, 27 Nov 2012 02:00:28 +0000 (21:00 -0500)]
Artificial argv limits.
when i skimmed the code earlier, i was looking at all the uses of
MAXARGS -- many of which are used to size local arrays. converting
them all to be dynamically-sized might be a fair amount of work.
but looking at rmm.c, refile.c, and folder_delmsgs(), i don't think
that issue applies. the patch below fixes the problem, and makes
rmmproc and refile do the right thing (well, at least, the modern
thing). NB: i didn't test to the limit where execvp should return
E2BIG.
as for the rest of mh -- it's certainly possible to hit the MAXARGS
limit with other commands (show, for instance), but i suspect the
frequency is much lower, and those, too, can be fixed as needed.
paul
>From 9636bc0e1697829966f51d2c301cd5d730c38c0a Mon Sep 17 00:00:00 2001
From: Paul Fox <pgf@foxharp.boston.ma.us>
Date: Mon, 26 Nov 2012 20:49:55 -0500
Subject: [PATCH] rmm/refile: remove the MAXARGS limit when running rmmproc
David Levine [Fri, 23 Nov 2012 15:26:21 +0000 (09:26 -0600)]
slocal used to support two different formats for three of
its arguments:
[address info sender]
[-addr address] [-info data] [-sender sender]
But it hasn't properly supported the first form since at
least April 1999. So, I removed that first form from the
man page and the broken support from the code. Score
another for the test suite!