Philipp Takacs [Fri, 27 Nov 2015 10:54:24 +0000 (11:54 +0100)]
fix segfault in prompter
This was necesary because m_getfld2() clears now f.value
if FILEEOF2 is reached
Philipp Takacs [Thu, 26 Nov 2015 22:24:18 +0000 (23:24 +0100)]
add free_field as standard for struct field
this is a easy way to initializ a struct field. ``{{0}}''
can lead to bugs, because NULL is not necesary ``((void *)0)''
Philipp Takacs [Thu, 26 Nov 2015 22:07:12 +0000 (23:07 +0100)]
m_getfld2 is more tranceparent on error
now all read content of the file is given to the caller,
so he can possible fix this error.
Philipp Takacs [Sat, 21 Nov 2015 11:20:36 +0000 (12:20 +0100)]
make m_getfld2() aware of CRLF lineendings
Philipp Takacs [Sat, 21 Nov 2015 11:16:01 +0000 (12:16 +0100)]
make m_getfld2() called with an error state a noop
This probduce some code dublication, but the will be
reduced, if we make m_getfld2() more transparent on errors.
markus schnalke [Thu, 12 Nov 2015 20:48:32 +0000 (21:48 +0100)]
Finally we get rid of the unmaintainable m_getfld()!
m_getfld() was about 700 lines, 300 of them being comments -- that's 42%!
m_getfld2() is 240 lines, 30 of them being comments. That's only half as
much code. Most important, however, is that this code is understandable
and thus maintainable. We escaped the dead end of the heavily optimized
m_getfld() be re-writing it from scratch. (Thanks to Philipp Tacaks!)
m_getfld2() is line-based and not character-based like m_getfld(). This
change spared us to keep digging into stdio internals or implementing
our own I/O buffering. We are now portable to any standard-conforming
stdio implementation.
markus schnalke [Thu, 12 Nov 2015 19:58:03 +0000 (20:58 +0100)]
Adjust tests to m_getfld2() and write some more
m_getfld2() is more strict than m_getfld() and does less guessing.
markus schnalke [Thu, 12 Nov 2015 19:12:02 +0000 (20:12 +0100)]
Only lines consisting of nothing but dashes are body separators
This is how the documentation specifies it, see mh-mail(5). The old
m_getfld(), however, was more relaxed and treated any header line that
starts with a dash as the body separator. We are more strict here,
because ``-foo: bar'' is a valid header line (according to RFC 2822),
that should thus not be treated as the body separator, whereas a line
``------'' in the header could only be a format error if we don't
take it as the body separator.
markus schnalke [Thu, 12 Nov 2015 16:52:22 +0000 (17:52 +0100)]
Convert inc and scan from m_getfld() to m_getfld2()
The main conversion was done in uip/scansbr.c.
Mbox handling is now completely outside of m_getfld2(), which does not
even know about From_ lines.
No more need to call thisisanmbox() (formerly m_unknown(), ``the magic
invocation'') before calling scan().
The newly introduced gotos should be eliminated ...
markus schnalke [Thu, 12 Nov 2015 16:05:53 +0000 (17:05 +0100)]
Convert rcvdist and repl from m_getfld() to m_getfld2()
markus schnalke [Thu, 12 Nov 2015 16:03:36 +0000 (17:03 +0100)]
m_getfld2: Return line for LENERR2, plus some documentation
markus schnalke [Thu, 12 Nov 2015 07:23:04 +0000 (08:23 +0100)]
m_getfld2: ERR2 means a read error, thus name it IOERR2
markus schnalke [Thu, 12 Nov 2015 07:14:59 +0000 (08:14 +0100)]
m_getfld2: Whitespace in component name is forbidden
Also on style: No function calls should be used to initialize
variables in definition statements. Use separate assignments in
this case.
markus schnalke [Wed, 11 Nov 2015 06:31:00 +0000 (07:31 +0100)]
Use continue instead of one long if for the whole loop body
Plus remove unnecessary comments. This improves the signal-noise ratio.
The identifiers are already telling us enough.
markus schnalke [Tue, 10 Nov 2015 19:58:31 +0000 (20:58 +0100)]
Return invalid line for FMTERR in m_getfld2()
This is necessary for mbox handling outside of m_getfld2().
markus schnalke [Tue, 10 Nov 2015 05:53:44 +0000 (06:53 +0100)]
No error-checking for error-checking alloc functions
The mh_x(m|c|re)alloc function always return successful
... or terminate the program on their own, otherwise.
Philipp Takacs [Fri, 6 Nov 2015 10:30:51 +0000 (11:30 +0100)]
check for (un)selection befor (un)set
If you select or unselect the same msgnum
numsel won't be increased/decreased twice.
Philipp Takacs [Thu, 5 Nov 2015 21:48:34 +0000 (22:48 +0100)]
handle hghsel lowsel and numsel in (un)set_selected
Now you can use this funkitions without taking care
of this values.
Thanks c_14 for reporting this bug.
markus schnalke [Mon, 9 Nov 2015 21:08:51 +0000 (22:08 +0100)]
Adjust the tests to less tolerant m_getfld2()
We require the header and body to be separated by an empty line.
We require header lines to end with a newline. m_getfld2() does
not try to guess as much as the old m_getfld() did.
markus schnalke [Mon, 9 Nov 2015 21:07:54 +0000 (22:07 +0100)]
Convert most of the tools from m_getfld() to m_getfld2()
markus schnalke [Mon, 9 Nov 2015 21:03:40 +0000 (22:03 +0100)]
Add new implementation m_getfld2()
This is mainly Philipp Takacs work.
markus schnalke [Mon, 9 Nov 2015 18:17:09 +0000 (19:17 +0100)]
Fix minor typo in man page
markus schnalke [Wed, 4 Nov 2015 16:31:50 +0000 (17:31 +0100)]
Better description of the Sender header in man page
Plus wording improvements and other minor stuff.
markus schnalke [Tue, 3 Nov 2015 07:47:26 +0000 (08:47 +0100)]
Re-add --with-lockdir=DIR configure option
At the same time eliminate acconfig.h (and thus the autoreconf
warning).
Include the lock dir string only if we use dot locking.
markus schnalke [Tue, 3 Nov 2015 07:37:57 +0000 (08:37 +0100)]
More sensible check for 7bit ASCII
Always true condition reported by -Wextra -pendatic.
markus schnalke [Tue, 3 Nov 2015 07:36:45 +0000 (08:36 +0100)]
Remove unused parameter
Reported by -Wextra -pedantic.
markus schnalke [Tue, 3 Nov 2015 09:57:07 +0000 (10:57 +0100)]
Remove dead code: FLDEOF and BODYEOF are never set
markus schnalke [Mon, 2 Nov 2015 16:51:32 +0000 (17:51 +0100)]
Bump version number
markus schnalke [Mon, 2 Nov 2015 16:38:44 +0000 (17:38 +0100)]
This is mmh-0.2
markus schnalke [Mon, 2 Nov 2015 16:37:13 +0000 (17:37 +0100)]
Decode address headers in replcomps
markus schnalke [Mon, 2 Nov 2015 16:17:40 +0000 (17:17 +0100)]
Update README and release howto to new NEWS file
Also reorder the release steps to first check the tarball and
then tag it as final.
markus schnalke [Mon, 2 Nov 2015 16:06:32 +0000 (17:06 +0100)]
Add NEWS file, which summarizes changes per release
markus schnalke [Mon, 2 Nov 2015 07:16:10 +0000 (08:16 +0100)]
Include a static copy of the CVS log in the dist tarball
Philipp Takacs [Sun, 1 Nov 2015 21:35:29 +0000 (22:35 +0100)]
Teach spost to handle address groups
Plus more tests for address groups.
Philipp Takacs [Fri, 30 Oct 2015 20:41:31 +0000 (21:41 +0100)]
test Group Addresses in spost
Philipp Takacs [Sat, 31 Oct 2015 15:40:20 +0000 (16:40 +0100)]
catch unparsable addresses
Now spost don't coredump if an address can't be parsed
Philipp Takacs [Sat, 31 Oct 2015 15:39:40 +0000 (16:39 +0100)]
test if spost catch bad addresses
Philipp Takacs [Sat, 31 Oct 2015 14:52:31 +0000 (15:52 +0100)]
test if aliasing work in spost
markus schnalke [Wed, 28 Oct 2015 22:43:02 +0000 (23:43 +0100)]
Fix configure.ac warning
markus schnalke [Wed, 28 Oct 2015 22:39:50 +0000 (23:39 +0100)]
Remove check for not used networking libraries in configure.ac
Mmh does no more contain networking code, hence we don't need this.
This way, we can also get rid of aclocal.m4.
markus schnalke [Wed, 28 Oct 2015 22:19:14 +0000 (23:19 +0100)]
Build the release tarball from git, not manually
Previously the Makefiles contained lists of files to distribute.
They built the release tarball manually. It's much easier to just
use git, which knows which files are the relevant files, because
it's the ones that are under version control. We just need to
add some additional, pre-generated files for convenience, so that
the user does not need to have auto* and lex installed.
The release tarball is now fully assembled in the top-level
Makefile. (The only tricky part is sbr/dtimep.c, because that
needs to be generated in the subdirectory.)
markus schnalke [Wed, 28 Oct 2015 18:02:13 +0000 (19:02 +0100)]
Merge
markus schnalke [Wed, 28 Oct 2015 16:50:24 +0000 (17:50 +0100)]
Include `test' dir in release tarball
The subdirectories `docs' and `test' are managed by the top-level
Makefile now, because there's nothing to do in them but to copy
them for the distribution tarball. (This way, we also don't have
to include each new file in these directories to the file list in
Makefile.in.)
markus schnalke [Wed, 28 Oct 2015 16:15:42 +0000 (17:15 +0100)]
Update lists of files to distribute
Also partly reordered the lists.
Philipp Takacs [Wed, 28 Oct 2015 11:19:05 +0000 (12:19 +0100)]
initialize mp in ismymbox
markus schnalke [Wed, 28 Oct 2015 06:55:10 +0000 (07:55 +0100)]
Drop the SYNOPSIS section from some man pages
For some man pages this section makes few sense.
Plus some minor formating stuff on the way ...
markus schnalke [Wed, 28 Oct 2015 06:47:15 +0000 (07:47 +0100)]
Minor clarification in mh-alias(5)
markus schnalke [Wed, 28 Oct 2015 05:59:03 +0000 (06:59 +0100)]
Silence the output of `cd -' in the tests
markus schnalke [Tue, 27 Oct 2015 22:11:51 +0000 (23:11 +0100)]
Use cksum(1) instead of md5sum(1) in the tests
cksum(1) is part of POSIX; md5sum(1) is not.
markus schnalke [Tue, 27 Oct 2015 21:30:30 +0000 (22:30 +0100)]
Run the tests in defined (i.e. sorted) order
markus schnalke [Tue, 27 Oct 2015 21:20:28 +0000 (22:20 +0100)]
Merge
Philipp Takacs [Sun, 25 Oct 2015 19:57:23 +0000 (20:57 +0100)]
consider Default-From as own address
markus schnalke [Tue, 27 Oct 2015 06:50:33 +0000 (07:50 +0100)]
Remove outcommented code (C99 comment)
Our code should be clean C89 (ANSI C). There's no reason to
keep this C99 comment.
markus schnalke [Tue, 27 Oct 2015 06:43:58 +0000 (07:43 +0100)]
Ensure $SHELL is set for the tests
Non-interactive shells might not set it (this is true for dash
and mksh, at least). Currently we use $SHELL in whatnow(1).
Although we likely remove this use, it's rather worthwhile to
have $SHELL available in the test scripts.
markus schnalke [Tue, 27 Oct 2015 06:30:14 +0000 (07:30 +0100)]
Update mmh-intro(7) man page
markus schnalke [Tue, 27 Oct 2015 06:29:34 +0000 (07:29 +0100)]
Remove mh-tailor(5) man page
markus schnalke [Tue, 27 Oct 2015 06:17:09 +0000 (07:17 +0100)]
Split the releasing instructions into own document
This makes them better visible.
markus schnalke [Tue, 27 Oct 2015 06:16:00 +0000 (07:16 +0100)]
Updates README, INSTALL, and docs/MACHINES
markus schnalke [Mon, 26 Oct 2015 07:04:55 +0000 (08:04 +0100)]
Update TODO list
Some comments on the removed items:
- Mmh's show does already invoke a pager
- The reverse action of `rmm' is: refile -src +trash l @
- Disjunct contexts are already possible (just set MMHC accordingly)
- We already generate the mh-chart man page
- Prompter can already be used to input the recipients. Use:
Editor: prompter
prompter: -nobody
prompter-next: vi
- Comp: -nowhatnowproc is obsolete; use `-whatnowproc true' instead.
(It puts an empty draft into the drafts folder.)
- Forw: Since we use MIME to forward messages, these todos are obsolete
- Mhmail is not considered to be a full-featured interface to MH
- We now do have RFC 2047 encoding of headers
Philipp Takacs [Sun, 25 Oct 2015 14:10:11 +0000 (15:10 +0100)]
add the mmh mailing list to the doc
Philipp Takacs [Sun, 25 Oct 2015 13:37:51 +0000 (14:37 +0100)]
remove docs/README.SASL
we don't need it, because smtp support is gone.
Philipp Takacs [Sun, 25 Oct 2015 13:36:51 +0000 (14:36 +0100)]
add mailsync description
Philipp Takacs [Sun, 25 Oct 2015 13:21:55 +0000 (14:21 +0100)]
remove TODOs for not supportet programms
markus schnalke [Sun, 25 Oct 2015 20:34:20 +0000 (21:34 +0100)]
send: MIMEify with non-ascii header and ascii body!
This code is not perfect, as it scans body lines twice. We might
want to rework it someday. But, ignoring the minor performance
issue, it ensures, that we MIMEify in the case when some headers
contain non-ASCII text but the body does not.
Philipp Takacs [Sun, 25 Oct 2015 20:27:58 +0000 (21:27 +0100)]
remove variable mp2 from spost in putadr
This variable is set but not used. Thanks gcc for the warning.
markus schnalke [Sun, 25 Oct 2015 19:42:52 +0000 (20:42 +0100)]
Add DCC support into whom
Plus a test for it.
markus schnalke [Sun, 25 Oct 2015 19:02:33 +0000 (20:02 +0100)]
Merge
markus schnalke [Sun, 25 Oct 2015 19:00:50 +0000 (20:00 +0100)]
DCC contains invisible (not visible) recipients
Added new test for BCC and DCC headers, which discovered the bug.
Philipp Takacs [Sun, 25 Oct 2015 12:45:42 +0000 (13:45 +0100)]
add config.o and version.o to libmh.a
Now you can easy link against libmh.a with -lmh
markus schnalke [Sun, 25 Oct 2015 18:38:33 +0000 (19:38 +0100)]
Add test for sender header in spost
(Fails currently, because default-from is not part of alternate-mailboxes.)
markus schnalke [Sun, 25 Oct 2015 17:54:23 +0000 (18:54 +0100)]
Adjust coding style from nmh to mmh
Philipp Takacs [Sun, 25 Oct 2015 16:25:16 +0000 (17:25 +0100)]
fix the prompter test
Philipp Takacs [Sat, 24 Oct 2015 10:16:58 +0000 (12:16 +0200)]
set psigint befor the setjmp in prompter
this mutes a Compielerwarning.
markus schnalke [Fri, 23 Oct 2015 13:30:10 +0000 (15:30 +0200)]
Rework in the test framework; updated and new tests
Many tests were ported from nmh.
Two tests fail at the moment:
- tests/ali/test-ali: needs porting the bugfix from nmh
- tests/prompter/test-prompter: needs further investigation
markus schnalke [Fri, 23 Oct 2015 12:26:49 +0000 (14:26 +0200)]
Merge branch 'master'
Eric Schnoebelen [Fri, 31 Aug 2012 13:49:37 +0000 (09:49 -0400)]
Move chdir() call so -recurse option works again
This commit is ported from nmh.
markus schnalke [Fri, 23 Oct 2015 07:52:55 +0000 (09:52 +0200)]
Fix off-by-one error (CPERLIN)
CPERLIN is the chars per line without the line break chars (\r\n),
at least would that match the description in RFC 2822. Actually,
however, the max SHOULD line length (excluding line break chars)
is 78 according to the RFC. Therefore it seems as if we should
set CPERLIN to 78. (This is open to decide and to do.)
markus schnalke [Wed, 21 Oct 2015 15:39:15 +0000 (17:39 +0200)]
Merge
markus schnalke [Wed, 21 Oct 2015 15:35:14 +0000 (17:35 +0200)]
Coding style adjustments for nmh-imported code
- No documentation in h/prototypes.h, but rather in the sbr/*.c files
- Convert coding style from nmh to mmh:
+ indent with tabs only not with a tab-spaces-mixture
+ no space between function name and opening parenthesis
+ no space on the inner side of parens
+ no trailing space
+ different comment style
- Variable definition at the beginning of the block only (ANSI C)
- Choose meaningful identifier name rather than add a comment to a
meaningless name
markus schnalke [Wed, 21 Oct 2015 15:13:35 +0000 (17:13 +0200)]
Don't remove the draft on SIGQUIT to allow debugging
Philipp Takacs [Sun, 18 Oct 2015 11:25:33 +0000 (13:25 +0200)]
export MM_CHARSET in mhbuild test
The test has some UTF-8 charracter to test the encoding.
Philipp Takacs [Wed, 23 Sep 2015 11:15:31 +0000 (13:15 +0200)]
use anno and mhparam in sendfiles
Philipp Takacs [Sat, 10 Oct 2015 12:19:07 +0000 (14:19 +0200)]
decode recipient-fields by default
Philipp Takacs [Fri, 25 Sep 2015 10:50:56 +0000 (12:50 +0200)]
add a test for mhbuild rfc2047-support
This is only the first test, more come later.
Philipp Takacs [Sat, 19 Sep 2015 21:25:57 +0000 (23:25 +0200)]
porte encode_rfc2047 from nmh
Now a user can add any nonascii in header-fields.
mhbuild now encode this acourding to rfc2047.
Thanks Ken Hornstein <kenh@pobox.com>
markus schnalke [Fri, 2 Oct 2015 17:49:38 +0000 (19:49 +0200)]
mhbuild: Avoid a dot on a line on its own
mhbuild's quoted-printable encoder breaks lines to have at most
CPERLIN chars. If the it happens that the last character on the
line is a dot (`.') and the line is broken just before it, then
the following line contains nothing but one single dot. This
currently leads to problems in mmh ... but it may cause problems
to other mail software as well. Hence we avoid it by encoding
any dot at the beginning of a line, just to be sure.
markus schnalke [Fri, 2 Oct 2015 17:24:28 +0000 (19:24 +0200)]
Sleep only 1 sec before retry to lock the file
The previous 5 seconds might have been appropriate on old, heavy
loaded systems, but they will hardly be necessary on modern ones.
markus schnalke [Fri, 2 Oct 2015 17:18:32 +0000 (19:18 +0200)]
Show the date hdr in local time in the default scan listing
markus schnalke [Fri, 2 Oct 2015 06:22:53 +0000 (08:22 +0200)]
Improve wording and more description in man page spost(8)
Ken Hornstein [Thu, 14 Nov 2013 16:43:33 +0000 (11:43 -0500)]
Break out the unquote functionality to a separate function.
David Levine [Sun, 25 Nov 2012 15:06:20 +0000 (09:06 -0600)]
pick(1) decode rfc2047-fields
Attempt to decode each header field as if it were
MIME encoded.
Philipp Takacs [Sun, 6 Sep 2015 21:29:21 +0000 (23:29 +0200)]
include h/utils.h
I forgot uip/ap.c and uip/burst.c, too
Philipp Takacs [Sun, 6 Sep 2015 21:11:15 +0000 (23:11 +0200)]
include h/utils.h
I forgot to add it in sbr/addrsbr.c sbr/fmt_compile.c
Philipp Takacs [Sat, 5 Sep 2015 23:09:15 +0000 (01:09 +0200)]
replaced calloc with mh_xcalloc
This finished the work of David Levine,
which was portet in the last commit.
David Levine [Sat, 11 Oct 2014 14:22:52 +0000 (09:22 -0500)]
Added mh_xcalloc().
Philipp Takacs [Sat, 29 Aug 2015 09:56:34 +0000 (11:56 +0200)]
fix open up to 4 times on mbox_open()
Befor this lkopen was only called ones.
Philipp Takacs [Thu, 27 Aug 2015 19:59:11 +0000 (21:59 +0200)]
reimplement Dcc-field
Dcc is like Bcc but don't send an extra message
with the orginal message attched. See FAQ for
more details.
Philipp Takacs [Sun, 28 Jun 2015 22:42:31 +0000 (00:42 +0200)]
find recipients for sendmail
Recipients are given as comandline arguments to sendmail.
Also do aliasing on every header which contain an address.
Philipp Takacs [Sat, 5 Sep 2015 11:10:33 +0000 (13:10 +0200)]
Revert "Remove stdio internals manipulation in sbr/m_getfld.c"
This only temporaly, to ensure mmh is working correct.
This reverts commit
976303d04d3bc2cad0afd5e3d364264783da56c2.
David Levine [Tue, 25 Dec 2012 17:57:31 +0000 (11:57 -0600)]
Remove stdio internals manipulation in sbr/m_getfld.c
Replaced all the stdio buffer access in sbr/m_getfld.c with a single call
to fread() and then some almost straightforward buffer manipulations.
This commit is ported to mmh.