Andreas Krennmair:
authorak1 <ak1@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Tue, 1 Feb 2005 13:10:54 +0000 (13:10 +0000)
committerak1 <ak1@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Tue, 1 Feb 2005 13:10:54 +0000 (13:10 +0000)
warning, HUGE diff: I merged the 1.5.6 -> 1.5.7 changes into mutt-ng. Report problems if you encounter any.

git-svn-id: svn://svn.berlios.de/mutt-ng/trunk@42 e385b8ad-14ed-0310-8656-cc95a2468c6d

150 files changed:
ChangeLog
Makefile.am
Makefile.in
Muttrc
VERSION
addrbook.c
attach.c
browser.c
buffy.c
charset.c
color.c
commands.c
compose.c
config.h.in
configure
configure.in
contrib/gpg.rc
contrib/sample.muttrc
copy.c
copy.h
crypt-mod-pgp-classic.c [new file with mode: 0644]
crypt-mod-smime-classic.c [new file with mode: 0644]
crypt-mod.c [new file with mode: 0644]
crypt-mod.h [new file with mode: 0644]
crypt.c
cryptglue.c
crypthash.h [new file with mode: 0644]
curs_lib.c
curs_main.c
cvslog2changelog.pl
doc/Makefile.in
doc/manual.sgml.head
doc/manual.sgml.tail
doc/manual.txt
doc/mbox.man
doc/mutt.man
doc/muttbug.man
doc/muttrc.man.head
edit.c
globals.h
handler.c
hdrline.c
headers.c
hook.c
imap/auth_cram.c
imap/auth_gss.c
imap/auth_sasl.c
imap/command.c
imap/imap.c
imap/imap.h
imap/imap_private.h
imap/message.c
imap/utf7.c
imap/util.c
init.c
init.h
keymap.c
keymap.h
lib.c
lib.h
main.c
mbox.c
md5.h
menu.c
mh.c
mutt.h
mutt_crypt.h
mutt_curses.h
mutt_sasl.c
mutt_ssl.c
muttbug.sh.in
muttlib.c
pager.c
parse.c
pattern.c
pgp.c
pgp.h
pgpinvoke.c
po/bg.gmo
po/bg.po
po/ca.gmo
po/ca.po
po/cs.gmo
po/cs.po
po/da.gmo
po/da.po
po/de.gmo
po/de.po
po/el.gmo
po/el.po
po/eo.gmo
po/eo.po
po/es.gmo
po/es.po
po/et.gmo
po/et.po
po/fr.gmo
po/fr.po
po/gl.gmo
po/gl.po
po/hu.gmo
po/hu.po
po/id.gmo
po/id.po
po/it.gmo
po/it.po
po/ja.gmo
po/ja.po
po/ko.gmo
po/ko.po
po/lt.gmo
po/lt.po
po/mutt.pot
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/pt_BR.gmo
po/pt_BR.po
po/ru.gmo
po/ru.po
po/sk.gmo
po/sk.po
po/sv.gmo
po/sv.po
po/tr.gmo
po/tr.po
po/uk.gmo
po/uk.po
po/zh_CN.gmo
po/zh_CN.po
po/zh_TW.gmo
po/zh_TW.po
postpone.c
prepare
protos.h
recvattach.c
recvcmd.c
reldate.h
send.c
sendlib.c
sha1.h
smime.c
smime.h
smime_keys.pl
sort.c
sort.h
status.c
thread.c
url.c

index 1423066..00a8ecb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,703 @@
+2005-01-27 20:52:13  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * main.c: Add USE_INODESORT to main.c's option dump.
+
+2005-01-27 20:38:02  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * commands.c: 0. In compose mode, press Ctrl-t to change
+       Content-Type.  1. Type "application/octet-stream" for example.
+       2. Press Ctrl-t again.  3. Type "text/plain; charset=us-ascii"
+       4. You will be asked "Convert to us-ascii upon sending?"
+       5. Press y or n.  6. You will see a strange message:
+        "Content-Type changed to Convert to us-ascii upon sending?."
+
+2005-01-27 20:26:52  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * pgp.c: Return an error in pgp_decrypt_part when the PGP output
+       file is empty.
+
+2005-01-27 20:17:46  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * curs_main.c: this patch doesn't raise an error if you try
+       to sync an empty mailbox which makes it possible to use such a
+       macro as this on an empty mailbox:
+
+       macro index y "<sync-mailbox><change-folder>?"  macro pager y
+       "<sync-mailbox><change-folder>?"
+
+2005-01-27 19:34:50  David Shaw  <dshaw@jabberwocky.com>  (roessler)
+
+       * pgp.c: Detect end of PGP armor header when a line is
+       whitespace-only.
+
+2005-01-27 19:18:15  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * smime.c: Void the S/MIME passphrase before prompting
+       the user to re-enter it.  Noted by TAKAHASHI Tamotsu
+       <ttakah@lapis.plala.or.jp>, but with memset replaced by
+       smime_void_passphrase().
+
+2005-01-27 19:00:59  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * curs_lib.c: Add terminal newline when it lacks after editing
+       a message.  Originally from TAKIZAWA Takashi.
+
+2005-01-27 18:58:14  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * Makefile.am: Include mutt_ssl_gnutls.c with the distribution.
+
+2005-01-27 18:54:24  Marco d'Itri  <md@Linux.IT>  (roessler)
+
+       * globals.h, imap/imap.c, imap/util.c, init.c, init.h, main.c,
+       mutt.h, mutt_sasl.c, mutt_socket.c, mutt_ssl.h, mutt_ssl_gnutls.c,
+       pop_lib.c: GNUTLS support.  Used in Debian since Nov. 2001.
+
+2005-01-27 18:48:41  Bill Nottingham  <notting@redhat.com>  (roessler)
+
+       * mutt_sasl.c: With SASL, expect the server to prompt for
+       additional auth data if we have some to send (#129961, upstream
+       #1845)
+
+       * contrib/sample.muttrc: Changes the sample.muttrc highlight to
+       catch https URLs as well.
+
+       * color.c, main.c: Support for the "default" color in Slang.
+
+2005-01-27 18:45:37  Florian Weimer   <fw@deneb.enyo.de>  (roessler)
+
+       * mh.c, configure.in: Read files in maildir folders in inode
+       order; this seems to reduce seek overhead on Linux.  Enabled by
+       default; to disable, run configure with --disable-inodesort.
+       (By way of Marco d'Itri.)
+
+2005-01-27 18:28:42  Marco d'Itri  <md@Linux.IT>  (roessler)
+
+       * pgp.c: Improved good signature check.
+
+       * contrib/gpg.rc, pgpinvoke.c: Make the default Muttrc work
+       out the box for people using gnupg-agent.  Wrote and applied a
+       one-line patch to make the %?p? conditional escape work correctly,
+       patch forwarded upstream. (Closes: #277646)
+
+       * pgpewrap.c: Don't segfault when invoked without any arguments.
+
+       * contrib/gpg.rc, pgp.c: Evaluate gpg's machine-parseable status
+       messages.
+
+       * smime_keys.pl: Add some sanity checks to smime_keys.pl.
+
+       * contrib/gpg.rc: A gpg command line contains both --verbose
+       and --no-verbose, remove the first.
+
+2005-01-26 14:33:08  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * status.c: And, thinking about it further, this should just be
+       an empty string, not "(null)".
+
+       * status.c: The last Context->pattern fix was still crap.
+       Ooooops. (Thanks Ralf.)
+
+2005-01-26 13:36:44  Thomas Glanzmann <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * Makefile.am, configure.in, globals.h, hcache.c, imap/imap.c,
+       imap/imap_private.h, imap/message.c, init.h, main.c, protos.h:
+       IMAP header cache.
+
+2005-01-26 12:37:38  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de> (roessler)
+
+       * addrbook.c, browser.c, commands.c, compose.c, imap/utf7.c:
+       Make some functions static.
+
+2005-01-26 12:36:36  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (roessler)
+
+       * imap/command.c, imap/message.c: Fix some printf arguments.
+
+2005-01-26 12:21:46  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * status.c: Really fix it.  Thanks to Ralf for noting the
+       typo in my earlier commit.
+       
+       * status.c: A variant of
+       <http://marc.theaimsgroup.com/?l=mutt-dev&m=110053165002362&w=2>.
+       Spotted by Ralf Wildenhues <wildenhues@ins.uni-bonn.de>.
+
+2005-01-17 02:24:49  Brendan Cully  <brendan@kublai.com>  (brendan)
+
+       * cvslog2changelog.pl: cvs log emits a timezone after the
+       hour, at least here. Adjust date regexp to handle that case.
+                                 
+2005-01-15 09:52:44  Adeodato Simó  <asp16@alu.ua.es>  (brendan)
+
+       * po/cs.po: Major translation updates forgotten in mutt-po.
+
+2005-01-15 08:01:35  Brendan Cully  <brendan@kublai.com>  (brendan)
+
+       * Makefile.am: Update commit targets to work when
+       builddir != srcdir.
+
+2005-01-15 07:36:37  Adeodato Simó  <asp16@alu.ua.es>  (brendan)
+
+       * init.h: Document the interaction between $reverse_name and
+       the alternates. Debian #210679.
+
+       * doc/manual.sgml.head, doc/muttrc.man.head: Include reply-hook
+       in the reference section of the manual.
+       Debian 254294.
+
+       * doc/mutt.man: Small typo in the mutt.1 manpage: Qeury -> Query.
+       Debian #258621.
+
+       * doc/muttrc.man.head: Minor formatting issue in the muttrc.5
+       manpage.
+       Debian #272579.
+
+       * po/ca.po, po/sv.po: Minor corrections in these translations,
+       checked with their authors.
+
+       * po/de.po, po/it.po: Major translation updates forgotten in
+       mutt-po.
+
+2005-01-11 12:15:13  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * doc/manual.sgml.head, doc/muttrc.man.head: Document send2-hook.
+
+       * send.c: send2-hook should also be executed after the first
+       time the message is edited by the user.
+
+2005-01-09 15:35:51  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * doc/muttbug.man, muttbug.sh.in: Replace muttbug and its
+       documentation by a note that acknowledges the shut down of the
+       bug tracking system.
+
+2004-12-21 09:46:24  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * pgp.c: Fix Debian #275188.
+
+2004-12-07 19:50:04  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * compose.c, hook.c, init.c, init.h, mutt.h, send.c: Add
+       send2-hook and fix alternates handling.
+
+2004-11-19 16:16:51  René Clerc  <rene@clerc.nl>  (roessler)
+
+       * doc/manual.sgml.tail, doc/manual.sgml.head: Document
+       tag-prefix-cond.
+
+2004-11-08 08:43:17  Ralf Wildenhues  <wildenhues@ins.uni-bonn.de>  (roessler)
+
+       * imap/imap_private.h: Having a signed one-bit bitfield is quite
+       odd -- its value is either 0 or -1.  Although the current code
+       is not broken because it doesn't test equality to 1, IMHO it's
+       better not to use that.
+
+       * imap/message.c: There's a size_t in imap_append_message not
+       printed out portably.
+
+2004-11-02 13:30:58  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * copy.h: Fix flag confusion.  Noted by Vincent Lefevre.
+
+2004-10-30 21:59:00  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * browser.c, buffy.c, check_sec.sh, commands.c, edit.c,
+       imap/auth_cram.c, imap/auth_gss.c, imap/imap.c, imap/message.c,
+       lib.c, lib.h, mutt_ssl.c, muttlib.c, recvcmd.c, url.c:
+       safe_strcat, safe_strncat.  Thanks to Ulf H. for noting the
+       wrong use of strncat in part of the mutt code base.
+
+       * smime.c: Fix bad code in smime_get_field_from_db.  Problem noted
+       by Ulf Härnhammar <Ulf.Harnhammar.9485@student.uu.se>.
+
+2004-09-29 11:27:33  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * lib.c: Fix mutt_unlink race condition for systems without
+       O_NOFOLLOW.  Noted by Jarno Huuskonen <Jarno.Huuskonen@uku.fi>.
+
+2004-09-07 08:09:39  Matthias Andree  <matthias.andree@gmx.de>  (roessler)
+
+       * prepare: Fix parameter passing.
+
+2004-08-31 15:41:03  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * configure.in: Add AC_GNU_SOURCE.
+
+       * recvattach.c: Remove *two* layers of S/MIME from messages
+       before building the attachment tree.  A generic solution would
+       remove intransparent encodings all the way down the tree.
+
+2004-08-30 20:10:10  Moritz Schulte  <mo@g10code.com>  (roessler)
+
+       * compose.c: Only print additional information related to PGP
+       in case the current message is indeed to be encrypted/signed
+       with PGP.
+       
+       (This change is misattributed to Brendan Cully in the CVS.)
+
+2004-08-30 20:05:40  Brendan Cully  <brendan@kublai.com>  (roessler)
+
+       * globals.h, init.h, mutt_sasl.c, mutt_ssl.c: Here's a patch
+       to allow mutt to use SSL client certificates to authenticate
+       itself. To use, set ssl_client_cert to the path to your
+       certificate file (containing both the certificate and the private
+       key). It works with the SASL EXTERNAL authentication mechanism,
+       so you'll need to have SASL enabled as well.
+
+2004-08-30 20:03:35  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * init.c: Fix a memory leak in the generic spam detection code.
+
+       * muttlib.c, protos.h: This wipes duplicated code, which I
+       introduced a while ago.
+
+2004-08-30 19:47:47  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * po/ja.po: update
+
+2004-08-21 07:35:16  Ivan Vilata i Balaguer  <ivan@selidor.net>  (roessler)
+
+       * po/ca.po: update
+
+2004-08-17 16:06:48  René Clerc  <rene@clerc.nl>  (roessler)
+
+       * po/nl.po: update
+
+2004-08-17 15:56:23  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * configure.in: Check for ssize_t, really.
+
+       * configure.in: Check for ssize_t.
+
+2004-08-17 15:25:31  Ronny Haryanto  <ronnylist@haryan.to>  (roessler)
+
+       * po/id.po: Corrected update.
+
+       * po/id.po: update
+
+2004-08-17 15:22:25  Vincent Lefevre  <vincent@vinc17.org>  (roessler)
+
+       * po/fr.po: update
+
+2004-08-17 13:42:01  Johan Svedberg  <johan@svedberg.pp.se>  (roessler)
+
+       * po/sv.po: update
+
+2004-08-16 21:37:43  Adeodato Simó  <asp16@alu.ua.es>  (roessler)
+
+       * headers.c: as of current cvs, setting "PGP: E" (or similar)
+       when header-editing a message does not work. the OP is set
+       (ENCRYPT, SIGN, whatever) but APPLICATION_PGP is missing.
+
+2004-08-16 21:36:38  Brendan Cully  <brendan@kublai.com>  (roessler)
+
+       * imap/imap.c: If STARTTLS fails to complete the SSL handshake,
+       the error is not propagated and mutt will attempt to log in
+       anyway, probably causing an infinite block on read. The attached
+       patch closes the socket in this case, and propagates the error
+       properly.
+
+       * imap/auth_sasl.c: The attached patch causes mutt to attempt
+       the next method in imap_authenticators if the previous method
+       failed, even if the server reported that the method was
+       available. Previously mutt would give up if any authentication
+       method failed.
+
+2004-08-16 21:34:22  Moritz Schulte   <moritz@g10code.com>  (roessler)
+
+       * compose.c: Only print "Encrypt with" field in case the used
+       S/MIME modules supports this feature.
+
+2004-08-16 21:33:35  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)
+
+       * po/pl.po: update
+
+2004-08-11 12:31:21  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * imap/imap.c: Fix two IMAP memory leaks.
+
+       * imap/imap.c, imap/imap.h: Remove imap_close_connection.
+
+       * menu.c: Fix a memory leak in mutt_menuDestroy.
+
+2004-08-08 16:20:37  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * muttlib.c, protos.h: Fix a memory leak.
+
+2004-08-08 16:19:15  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * pgp.c, smime.c: Fix the PGP and S/MIME menus. Complaints
+       and suggestions of many lead to these changes.  See mutt-dev
+       discussions around this time for details.
+
+       * Makefile.am, crypthash.h, md5.h, sha1.h: Fix uint32_t
+       portability problem. Reported by Steve Kennedy.
+
+2004-08-07 05:23:33  Johan Svedberg  <johan@svedberg.pp.se>  (roessler)
+
+       * po/sv.po: update
+
+2004-08-02 08:03:46  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>  (roessler)
+
+       * imap/command.c: Fix the improvement to address #1655.
+
+2004-07-22 01:10:55  Brendan Cully  <brendan@kublai.com>  (roessler)
+
+       * imap/message.c: Quick fix for IMAP breakage.
+
+2004-07-21 22:15:40  Nathan Dushman  <nhd+mutt@andrew.cmu.edu>  (roessler)
+
+       * imap/command.c: This is a one-line patch that increases the
+       speed at which mutt opens IMAP mailboxes, and addresses bug #1655.
+
+2004-07-20 09:00:50  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)
+
+       * po/pl.po: update
+
+2004-07-20 08:17:21  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * imap/message.c, mutt.h, parse.c, send.c, url.c: Use List-Post
+       headers when doing list-reply.
+
+2004-07-19 21:44:23  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * globals.h, imap/message.c, init.h: Fix #1548.  (The first
+       variant, with $imap_headers specifying headers that are downloaded
+       in addition to the set required for mutt to work properly.)
+
+2004-07-19 21:41:43  David Champion  <dgc@uchicago.edu>  (roessler)
+
+       * mbox.c, mh.c, pgp.c, sendlib.c: Fix some compiler warnings.
+
+2004-07-19 21:39:28  Adeodato Simó  <asp16@alu.ua.es>  (roessler)
+
+       * doc/manual.sgml.head: Fixing a missing newline.
+
+2004-07-19 21:36:46  Thomas Glanzmann  <sithglan@stud.uni-erlangen.de>  (roessler)
+
+       * Makefile.am: Fix IMAP breakage.
+
+2004-07-15 08:08:32  David Champion  <dgc@uchicago.edu>  (roessler)
+
+       * doc/manual.sgml.head, init.c, init.h, mutt.h: v3 of the generic
+       spam detection patch.
+
+2004-07-14 05:58:30  Moritz Schulte   <moritz@g10code.com>  (roessler)
+
+       * pgp.c: Do not forget to handle special-case for gpg-agent.
+
+2004-07-14 05:55:40  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * ChangeLog: Fix an earlier commit message.
+
+2004-07-14 05:45:18  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * browser.c: Fix Debian#237426.  (Experimental.)
+
+2004-07-14 05:39:23  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * compose.c: Don't invoke "builtin" as an external editor.  Note:
+       It's not clear to me that this is really the right approach.
+       Revisit Editor/Visual some time.
+
+2004-07-14 05:19:15  Elmar Hoffmann  <mutt-dev-ml@elho.net>  (roessler)
+
+       * init.h, mutt.h, thread.c: By default Mutt hides the subject
+       of messages in the thread tree that have the same subject as
+       their parent or closest previously displayed sibling. This patch
+       makes this optional, introducing the hide_thread_subject boolean
+       setting which defaults to the old behaviour.
+
+2004-07-14 05:07:18  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * mh.c: Some eye-candy during the delayed parsing of maildir
+       folders.
+
+2004-07-14 04:50:19  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * init.h, sort.h: Hack to fix $sort_browser documentation.
+
+       * copy.c, copy.h, handler.c, init.h, mutt.h, send.c:
+       $include_onlyfirst, again.
+
+2004-07-14 04:34:07  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * copy.c, copy.h, handler.c, init.h, mutt.h, send.c: Fix a cvs
+       commit SNAFU: This commit undoes the include_onlyfirst patch,
+       but leaves the generic spam detection by David Champion in place
+       (which, erroneously, hadn't been committed separately).
+
+2004-07-14 04:16:58  ttakah@lapis.plala.or.jp  (roessler)
+
+       * commands.c, copy.c, copy.h, doc/manual.sgml.head,
+       doc/muttrc.man.head, globals.h, handler.c, hdrline.c, init.c,
+       init.h, mutt.h, muttlib.c, parse.c, pattern.c, protos.h, send.c,
+       sort.c, sort.h: Introduce $include_onlyfirst.
+
+2004-07-12 13:35:27  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * pager.c: The limitations for OP_MAIL and OP_RECALL should
+       be identical.
+
+2004-07-12 13:22:24  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * init.c, sendlib.c: Add some debugging code, and rewrite the
+       previously-ununderstandable mutt_remove_duplicates.  (All this
+       done on the search for a problem that ultimately turned out to
+       be a configuration issue. Still, the changed code could come in
+       handy some day.)
+
+2004-07-11 16:25:00  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * pager.c: Fix #1882.
+
+2004-06-27 13:54:51  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * postpone.c: Experimental code for #1910.
+
+2004-06-26 08:45:29  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * commands.c: Fix #1909.
+
+2004-06-23 08:09:43  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * pgp.c: Zero out the PGP passphrase before asking for a new one.
+
+2004-06-17 20:39:20  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * smime.c: Change S/MIME send menu behavior to xor instead of or,
+       so it behaves the same way as the PGP send menu.
+
+2004-06-17 20:36:13  Moritz Schulte  <moritz@g10code.com>  (roessler)
+
+       * Makefile.am, compose.c, configure.in, crypt-mod-pgp-classic.c,
+       crypt-mod-smime-classic.c, crypt-mod.c, crypt-mod.h, crypt.c,
+       cryptglue.c, curs_lib.c, init.h, keymap.c, keymap.h, main.c,
+       mutt.h, mutt_crypt.h, mutt_curses.h, pgp.c, pgp.h, smime.c,
+       smime.h: This is the sequel to the crypto modularization changes
+       I did on 2003-01-21.  Moritz added another abstraction layer
+       which cleans up the code and allows the crypto modules to use
+       their own option menu.  Everything should work as it used to
+       but is now in a really good shape for part III, the Return of
+       the GnuPG Easy Makers. -wk
+
+       * crypt-mod-pgp-classic.c, crypt-mod-smime-classic.c, crypt-mod.c,
+       crypt-mod.h: New files.
+
+       * smime.c (smime_valid_passphrase, smime_send_menu): New
+       functions.  * smime.h: Removed macro: smime_valid_passphrase.
+       Declared: smime_valid_passphrase, smime_send_menu.  * pgp.c:
+       Include "mutt_menu.h".  (pgp_valid_passphrase, pgp_send_menu):
+       New functions.  * pgp.h: Removed macro: pgp_valid_passphrase.
+       Declared: pgp_valid_passphrase, pgp_send_menu.  *
+       mutt_curses.h: Declare: mutt_need_hard_redraw.  * mutt_crypt.h:
+       Declare: crypt_pgp_valid_passphrase, crypt_pgp_send_menu,
+       crypt_smime_valid_passphrase, crypt_smime_send_menu, crypt_init.
+       Adjust WithCrypto definition since the GPGME backend does not
+       exclude anymore the other `classic' backends.  (KEYFLAG_ISX509):
+       New symbol.  * mutt.h (enum): New symbol: OPTCRYPTUSEGPGME.
+       (struct body): New member: is_signed_data, warnsig.  * main.c
+       (main): Call crypt_init.  * keymap.c (km_get_table): Support for
+       MENU_KEY_SELECT_PGP and MENU_KEY_SELECT_SMIME.  (Menus): Added
+       entries fuer MENU_KEY_SELECT_PGP and MENU_KEY_SELECT_SMIME.
+       (km_init): Create bindings for MENU_KEY_SELECT_PGP and
+       MENU_KEY_SELECT_SMIME.  * keymap.h (enum): New enum symbols:
+       MENU_KEY_SELECT_PGP, MENU_KEY_SELECT_SMIME.  * init.h:
+       New configuration variable: crypt_use_gpgme.  * compose.c
+       (pgp_send_menu, smime_send_menu): Removed functions, they are now
+       contained in the crypto backend modules.  (mutt_compose_menu):
+       Use crypt_pgp_send_menu and crypt_smime_send_menu instead
+       pgp_send_menu and smime_send_menu.  * cryptglue.c: Slightly
+       rewritten in order to make use of the module mechanism used to
+       access crypto backends.  * curs_lib.c (mutt_need_hard_redraw):
+       New function.  * crypt.c (crypt_forget_passphrase): Adjust
+       for new crypto backend interface.  (crypt_valid_passphrase):
+       Stripped, use calls to crypt_pgp_valid_passphrase and
+       crypt_smime_valid_passphrase.
+
+2004-06-02 17:55:34  Alain Bench  <veronatif@free.fr>  (roessler)
+
+       * parse.c: Fix #1759.
+
+2004-04-30 06:49:37  Urs Janßen  <urs@tin.org> (roessler)
+
+       * doc/Makefile.in, doc/mbox.man, doc/mmdf.man: mmdf(5), new mbox
+       (5).  (These changes have been sitting in my inbox for ages, tlr.)
+
+2004-04-13 15:10:38  Brendan Cully  <brendan@kublai.com>  (roessler)
+
+       * imap/message.c: Fix #1795
+
+2004-04-13 08:02:12  David Shaw  <dshaw@jabberwocky.com>  (roessler)
+
+       * crypt.c, init.h, mutt.h: Rename pgp_mime_ask to pgp_mime_auto;
+       change the default; change the error message given if that
+       variable is set to "no."
+
+2004-04-12 21:43:33  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * lib.c, attach.c: Don't open a file for writing that we have
+       unlinked before. Reported embarassingly long ago by Jarno
+       Huuskonen <Jarno.Huuskonen@uku.fi>.
+
+2004-04-12 21:19:31  Dale Woolridge  <dale-list-mutt-dev-2@woolridge.org>  (roessler)
+
+       * po/uk.po, po/zh_CN.po, po/zh_TW.po, po/pt_BR.po, po/ru.po,
+       po/sk.po, po/sv.po, po/tr.po, po/gl.po, po/hu.po, po/id.po,
+       po/it.po, po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po,
+       po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po,
+       po/et.po, po/fr.po, compose.c, crypt.c, init.h, mutt.h,
+       mutt_crypt.h, po/ca.po, postpone.c, send.c, sendlib.c: See:
+       http://does-not-exist.org/mail-archives/mutt-dev/msg00843.html
+
+2004-04-12 20:37:19  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * copy.c: Fix #1804.  (From vincent@vinc17.org)
+
+       * commands.c, curs_main.c, mutt.h, mutt_crypt.h, pager.c,
+       recvattach.c: A belated fix for #1808 (Debian #233106): Make
+       sure check-traditional-pgp doesn't leave the pager context
+       unnecessarily.  This makes message-hooks like this one safe:
+
+         message-hook '!(~g|~G) ~b"^-----BEGIN\ PGP\ (SIGNED\ )?MESSAGE"'
+               \ "exec check-traditional-pgp"
+
+2004-04-12 19:53:29  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * doc/manual.sgml.head, init.h: Various documentation fixes,
+       #1790.
+
+2004-04-12 19:47:59  Alain Bench  <veronatif@free.fr>  (roessler)
+
+       * doc/mbox.man, doc/muttbug.man: Fix #1831, Debian#237827.
+
+2004-04-12 19:42:10  Joël Riou  <joel.riou@normalesup.org>  (roessler)
+
+       * globals.h, init.c, init.h: Introduce config_charset.
+
+2004-04-12 19:37:59  Vsevolod Volkov  <vvv@mutt.org.ua>  (roessler)
+
+       * po/ru.po: update
+
+2004-04-12 19:37:23  Im Eunjea  <eunjea@koru.org>  (roessler)
+
+       * po/ko.po: update
+
+2004-04-12 19:34:45  Holger Weiss  <lists@jhweiss.de>  (roessler)
+
+       * doc/manual.sgml.head, doc/muttrc.man.head, mutt.h, pattern.c:
+       Unreferenced messages pattern: ~$
+
+2004-04-12 19:20:13  Paul WALKER  <paul.walker@st.com>  (roessler)
+
+       * mutt_sasl.c: SASL2 needs errno.h.
+
+2004-04-12 19:17:32  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * muttlib.c: Include the user ID with temporary file names.
+       Suggested by eravin@panix.com in #1833.
+
+       * doc/Makefile.in: Fix #1708 the brutal way, by installing
+       multiple copies of the muttbug (pardon, flea) manual page.
+
+2004-04-12 18:56:18  Neil Brown  <neilb@cse.unsw.edu.au>  (roessler)
+
+       * imap/auth_sasl.c: Fix Debian #206078, #214758; patch submitted
+       by Artur Czechowski as #1845.
+
+2004-03-21 16:02:10  Ivan Vilata i Balaguer  <ivan@selidor.net>  (roessler)
+
+       * po/ca.po: update
+
+2004-02-12 08:51:07  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * po/uk.po, po/zh_CN.po, po/zh_TW.po, po/sk.po, po/sv.po,
+       po/tr.po, po/pt_BR.po, po/ru.po, po/nl.po, po/pl.po, po/ja.po,
+       po/ko.po, po/lt.po, po/id.po, po/it.po, po/gl.po, po/hu.po,
+       po/es.po, po/et.po, po/fr.po, po/el.po, po/eo.po, po/da.po,
+       po/de.po, VERSION, po/bg.po, po/ca.po, po/cs.po, reldate.h,
+       ChangeLog: automatic post-release commit for mutt-1.4.2.1
+
+       * Makefile.am: (stable) Include regex.c and snprintf.c with
+       the distribution.
+
+2004-02-11 14:03:38  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * po/zh_TW.po, po/uk.po, po/zh_CN.po, po/tr.po, po/sv.po,
+       po/ru.po, po/sk.po, po/pt_BR.po, po/pl.po, po/nl.po, po/ko.po,
+       po/lt.po, po/ja.po, po/it.po, po/id.po, po/hu.po, po/gl.po,
+       po/et.po, po/fr.po, po/eo.po, po/es.po, po/el.po, po/de.po,
+       po/cs.po, po/da.po, po/ca.po, VERSION, po/bg.po, reldate.h,
+       ChangeLog: automatic post-release commit for mutt-1.4.2
+
+       * configure.in, menu.c: Backport an old bug fix, and make sure
+       configure can be created on recent systems.
+
+2004-02-11 08:20:25  Mads Martin Joergensen  <mmj@suse.de>  (roessler)
+
+       * init.c: Fix some warnings.
+
+2004-02-08 11:41:31  Edmund GRIMLEY EVANS  <edmundo@rano.org>  (roessler)
+
+       * charset.c: Fix a CP1255/8-related problem that's caused by a
+       glibc/iconv bug.
+
+2004-02-08 09:38:38  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * muttlib.c: Change the logic in mutt_open_read to only
+       catch directories -- mutt may legitimately read devices (think
+       /dev/null) or named pipes. Also delegate error reporting to the
+       calling function by setting errno.
+
+2004-02-07 21:40:11  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (roessler)
+
+       * po/ja.po: update
+
+2004-02-07 21:38:32  Juan Altmayer Pizzorno  <juan@altmayer.com>  (roessler)
+
+       * mbox.c: Hi, off_t is a 64-bit number (like on Mac OS X/darwin),
+       the percentages don't show right while mutt is reading/parsing
+       a mailbox.  Here's a patch (against 1.5.6i) to fix that.
+
+2004-02-07 21:36:41  David Yitzchak Cohen  <lists+mutt_devs@bigfatdave.com>  (roessler)
+
+       * init.c, muttlib.c: Looking at the code, the problem is pretty
+       obvious.  A recent patch to init.c (the one that was supposed
+       to prevent Mutt from silently failing to read nonexistant RC
+       files, IIRC) changed source_rc() to stat(2) the RC "file" before
+       trying to mutt_open_read() it.  There's only one problem here:
+       source_rc() has no way of knowing whether or not its "file"
+       is a file or a command.  I'm attaching a patch that fixes the
+       problem in what I believe is the right way.
+
+2004-02-05 14:17:25  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * menu.c: Back out the patch for #1697.
+
+2004-02-02 18:17:46  Roland Rosenfeld  <roland@spinnaker.de>  (roessler)
+
+       * po/de.po: update
+
+2004-02-02 10:26:14  Pawel Dziekonski  <dzieko@pwr.wroc.pl>  (roessler)
+
+       * po/pl.po: update
+
+2004-02-02 10:24:32  Im Eunjea  <eunjea@koru.org>  (roessler)
+
+       * po/ko.po: update
+
+2004-02-02 10:22:56  Vincent Lefevre  <vincent@vinc17.org>  (roessler)
+
+       * po/fr.po: update
+
+2004-02-01 18:26:13  Thomas Roessler  <roessler@does-not-exist.org>  (roessler)
+
+       * po/pt_BR.po, po/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po,
+       po/zh_CN.po, po/zh_TW.po, po/id.po, po/it.po, po/ja.po, po/ko.po,
+       po/lt.po, po/nl.po, po/pl.po, VERSION, po/bg.po, po/ca.po,
+       po/cs.po, po/da.po, po/de.po, po/el.po, po/eo.po, po/es.po,
+       po/et.po, po/fr.po, po/gl.po, po/hu.po, reldate.h: automatic
+       post-release commit for mutt-1.5.6
+
 2004-02-01 18:00:16  Mike Schiraldi  <1074468571@schiraldi.org>  (roessler)
 
        * init.c: As you all know, running "mutt -F foo.rc" will have
index ca0d2dc..62b0092 100644 (file)
@@ -27,8 +27,8 @@ muttng_SOURCES = $(BUILT_SOURCES) \
        rfc822.c rfc1524.c rfc2047.c rfc2231.c \
        score.c send.c sendlib.c signal.c sort.c \
        status.c system.c thread.c charset.c history.c lib.c \
-       muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c \
-       url.c ascii.c mutt_idna.c sidebar.c hcache.c
+       muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c md5c.c \
+       url.c ascii.c mutt_idna.c sidebar.c hcache.c crypt-mod.c crypt-mod.h
 
 muttng_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \
        $(INTLLIBS) $(LIBICONV)
@@ -63,12 +63,12 @@ EXTRA_muttng_SOURCES = account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c \
        pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c \
        browser.h mbyte.h remailer.h url.h mutt_ssl_nss.c \
        pgppacket.c mutt_idna.h nntp.c newsrc.c mutt_libesmtp.c \
-       sidebar.h
+       sidebar.h crypt-mod-pgp-classic.c crypt-mod-smime-classic.c
 
 EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO \
        configure acconfig.h account.h \
        compress.h \
-       attach.h buffy.h charset.h copy.h dotlock.h functions.h gen_defs \
+       attach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs \
        globals.h hash.h history.h init.h keymap.h mutt_crypt.h \
        mailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h \
        mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
@@ -155,23 +155,24 @@ install-data-local: Muttngrc
 # used manually.
 
 pclean:
-       cat /dev/null > PATCHES
+       cat /dev/null > $(top_srcdir)/PATCHES
 
 check-security:
-       ./check_sec.sh
+       (cd $(top_srcdir) && ./check_sec.sh)
 
 commit-real:
-       cvs commit
+       (cd $(top_srcdir) && cvs commit)
 
 commit-changelog:
-       cvs commit -m "# changelog commit" ChangeLog
+       (cd $(top_srcdir) && cvs commit -m "# changelog commit" ChangeLog)
 
 commit: pclean check-security commit-real changelog commit-changelog
 
 changelog:
-       cvs update ChangeLog
-       sh ./mkchangelog.sh | fmt -c | cat  - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog
-       $${VISUAL:-vi} ChangeLog
+       (cd $(top_srcdir); \
+       cvs update ChangeLog; \
+       sh ./mkchangelog.sh | fmt -c | cat  - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \
+       $${VISUAL:-vi} ChangeLog)
 
 ChangeLog: changelog
 
index aaef27c..70b58a1 100644 (file)
@@ -119,7 +119,7 @@ bin_SCRIPTS = muttngbug fleang
 BUILT_SOURCES = keymap_defs.h patchlist.c
 
 bin_PROGRAMS = muttng @DOTLOCK_TARGET@ @PGPAUX_TARGET@ @SMIMEAUX_TARGET@
-muttng_SOURCES = $(BUILT_SOURCES)      addrbook.c alias.c attach.c base64.c browser.c buffy.c color.c  compress.c crypt.c cryptglue.c  commands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c    edit.c enter.c flags.c init.c filter.c from.c getdomain.c       handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c     main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c        postpone.c query.c recvattach.c recvcmd.c       rfc822.c rfc1524.c rfc2047.c rfc2231.c  score.c send.c sendlib.c signal.c sort.c        status.c system.c thread.c charset.c history.c lib.c    muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c    url.c ascii.c mutt_idna.c sidebar.c hcache.c
+muttng_SOURCES = $(BUILT_SOURCES)      addrbook.c alias.c attach.c base64.c browser.c buffy.c color.c  compress.c crypt.c cryptglue.c  commands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c    edit.c enter.c flags.c init.c filter.c from.c getdomain.c       handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c     main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c        postpone.c query.c recvattach.c recvcmd.c       rfc822.c rfc1524.c rfc2047.c rfc2231.c  score.c send.c sendlib.c signal.c sort.c        status.c system.c thread.c charset.c history.c lib.c    muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c md5c.c     url.c ascii.c mutt_idna.c sidebar.c hcache.c crypt-mod.c crypt-mod.h
 
 
 muttng_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS)     $(INTLLIBS) $(LIBICONV)
@@ -148,10 +148,10 @@ INCLUDES = -I. -I$(top_srcdir) $(IMAP_INCLUDES) -Iintl
 
 CPPFLAGS = @CPPFLAGS@ -I$(includedir)
 
-EXTRA_muttng_SOURCES = account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c   mutt_tunnel.c pop.c pop_auth.c pop_lib.c smime.c pgp.c pgpinvoke.c pgpkey.c     pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c  browser.h mbyte.h remailer.h url.h mutt_ssl_nss.c       pgppacket.c mutt_idna.h nntp.c newsrc.c mutt_libesmtp.c         sidebar.h
+EXTRA_muttng_SOURCES = account.c md5c.c mutt_sasl.c mutt_socket.c mutt_ssl.c   mutt_tunnel.c pop.c pop_auth.c pop_lib.c smime.c pgp.c pgpinvoke.c pgpkey.c     pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c  browser.h mbyte.h remailer.h url.h mutt_ssl_nss.c       pgppacket.c mutt_idna.h nntp.c newsrc.c mutt_libesmtp.c         sidebar.h crypt-mod-pgp-classic.c crypt-mod-smime-classic.c
 
 
-EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO        configure acconfig.h account.h  compress.h      attach.h buffy.h charset.h copy.h dotlock.h functions.h gen_defs        globals.h hash.h history.h init.h keymap.h mutt_crypt.h         mailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h       mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h         mx.h pager.h pgp.h pop.h protos.h reldate.h rfc1524.h rfc2047.h         rfc2231.h rfc822.h sha1.h sort.h mime.types VERSION prepare     nntp.h ChangeLog.nntp   _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h        mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc         makedoc.c stamp-doc-rc README.SSL smime.h       muttngbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh               ChangeLog.old mkchangelog.sh cvslog2changelog.pl mutt_idna.h    snprintf.c regex.c mutt_libesmtp.h
+EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO        configure acconfig.h account.h  compress.h      attach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs    globals.h hash.h history.h init.h keymap.h mutt_crypt.h         mailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h       mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h         mx.h pager.h pgp.h pop.h protos.h reldate.h rfc1524.h rfc2047.h         rfc2231.h rfc822.h sha1.h sort.h mime.types VERSION prepare     nntp.h ChangeLog.nntp   _regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h        mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h Muttngrc.head Muttngrc         makedoc.c stamp-doc-rc README.SSL smime.h       muttngbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh               ChangeLog.old mkchangelog.sh cvslog2changelog.pl mutt_idna.h    snprintf.c regex.c mutt_libesmtp.h
 
 
 muttng_dotlock_SOURCES = mutt_dotlock.c
@@ -193,8 +193,8 @@ hdrline.o headers.o help.o hook.o keymap.o main.o mbox.o menu.o mh.o \
 mx.o pager.o parse.o pattern.o postpone.o query.o recvattach.o \
 recvcmd.o rfc822.o rfc1524.o rfc2047.o rfc2231.o score.o send.o \
 sendlib.o signal.o sort.o status.o system.o thread.o charset.o \
-history.o lib.o muttlib.o editmsg.o utf8.o mbyte.o wcwidth.o url.o \
-ascii.o mutt_idna.o sidebar.o hcache.o
+history.o lib.o muttlib.o editmsg.o utf8.o mbyte.o wcwidth.o md5c.o \
+url.o ascii.o mutt_idna.o sidebar.o hcache.o crypt-mod.o
 muttng_LDFLAGS = 
 SCRIPTS =  $(bin_SCRIPTS)
 
@@ -638,23 +638,24 @@ install-data-local: Muttngrc
 # used manually.
 
 pclean:
-       cat /dev/null > PATCHES
+       cat /dev/null > $(top_srcdir)/PATCHES
 
 check-security:
-       ./check_sec.sh
+       (cd $(top_srcdir) && ./check_sec.sh)
 
 commit-real:
-       cvs commit
+       (cd $(top_srcdir) && cvs commit)
 
 commit-changelog:
-       cvs commit -m "# changelog commit" ChangeLog
+       (cd $(top_srcdir) && cvs commit -m "# changelog commit" ChangeLog)
 
 commit: pclean check-security commit-real changelog commit-changelog
 
 changelog:
-       cvs update ChangeLog
-       sh ./mkchangelog.sh | fmt -c | cat  - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog
-       $${VISUAL:-vi} ChangeLog
+       (cd $(top_srcdir); \
+       cvs update ChangeLog; \
+       sh ./mkchangelog.sh | fmt -c | cat  - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \
+       $${VISUAL:-vi} ChangeLog)
 
 ChangeLog: changelog
 
diff --git a/Muttrc b/Muttrc
index 7666cf5..996088c 100644 (file)
--- a/Muttrc
+++ b/Muttrc
@@ -197,7 +197,7 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # following printf-style sequences are understood:
 # 
 # %C      charset
-# %c      reqiures charset conversion (n or c)
+# %c      requires charset conversion (n or c)
 # %D      deleted flag
 # %d      description
 # %e      MIME content-transfer-encoding
@@ -393,7 +393,7 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # Default: "-- Mutt: Compose  [Approx. msg size: %l   Atts: %a]%>-"
 # 
 # 
-# Controls the format of the status line displayed in the \fCompose
+# Controls the format of the status line displayed in the Compose
 # menu.  This string is similar to ``$status_format'', but has its own
 # set of printf()-like sequences:
 # 
@@ -407,6 +407,17 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # information on how to set ``$compose_format''.
 # 
 # 
+# set config_charset=""
+#
+# Name: config_charset
+# Type: string
+# Default: ""
+# 
+# 
+# When defined, Mutt will recode commands in rc files from this
+# encoding.
+# 
+# 
 # set confirmappend=yes
 #
 # Name: confirmappend
@@ -463,6 +474,20 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # ``$save_name'', ``$force_name'' and ``fcc-hook''.
 # 
 # 
+# set crypt_use_gpgme=no
+#
+# Name: crypt_use_gpgme
+# Type: boolean
+# Default: no
+# 
+# 
+# This variable controls the use the GPGME enabled crypto backends.
+# If it is set and Mutt was build with gpgme support, the gpgme code for
+# S/MIME and PGP will be used instead of the classic code.  Note, that
+# you need to use this option in .muttrc as it won't have any effect when 
+# used interactively.
+# 
+# 
 # set crypt_autopgp=yes
 #
 # Name: crypt_autopgp
@@ -560,8 +585,8 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # Default: yes
 # 
 # 
-# If this option is set, mutt's revattach menu will not show the subparts of
-# individual messages in a digest.  To see these subparts, press 'v' on that menu.
+# If this option is set, mutt's received-attachments menu will not show the subparts of
+# individual messages in a multipart/digest.  To see these subparts, press 'v' on that menu.
 # 
 # 
 # set display_filter=""
@@ -1010,6 +1035,18 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # thread tree.
 # 
 # 
+# set hide_thread_subject=yes
+#
+# Name: hide_thread_subject
+# Type: boolean
+# Default: yes
+# 
+# 
+# When set, mutt will not show the subject of messages in the thread
+# tree that have the same subject as their parent or closest previously
+# displayed sibling.
+# 
+# 
 # set hide_top_limited=no
 #
 # Name: hide_top_limited
@@ -1096,8 +1133,8 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # This is a colon-delimited list of authentication methods mutt may
 # attempt to use to log in to an IMAP server, in the order mutt should
 # try them.  Authentication methods are either 'login' or the right
-# side of an IMAP 'AUTH=xxx' capability string, eg 'digest-md5',
-# 'gssapi' or 'cram-md5'. This parameter is case-insensitive. If this
+# side of an IMAP 'AUTH=xxx' capability string, eg 'digest-md5', 'gssapi'
+# or 'cram-md5'. This parameter is case-insensitive. If this
 # parameter is unset (the default) mutt will try all available methods,
 # in order from most-secure to least-secure.
 # 
@@ -1131,6 +1168,20 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # connecting to IMAP servers.
 # 
 # 
+# set imap_headers=""
+#
+# Name: imap_headers
+# Type: string
+# Default: ""
+# 
+# 
+# Mutt requests these header fields in addition to the default headers
+# ("DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE
+# CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES X-LABEL") from IMAP
+# servers before displaying the index menu. You may want to add more
+# headers for spam detection. Note: This is a space separated list.
+# 
+# 
 # set imap_home_namespace=""
 #
 # Name: imap_home_namespace
@@ -1263,6 +1314,17 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # is included in your reply.
 # 
 # 
+# set include_onlyfirst=no
+#
+# Name: include_onlyfirst
+# Type: boolean
+# Default: no
+# 
+# 
+# Controls whether or not Mutt includes only the first attachment
+# of the message you are replying.
+# 
+# 
 # set indent_string="> "
 #
 # Name: indent_string
@@ -2161,6 +2223,55 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # (PGP only)
 # 
 # 
+# set pgp_autoinline=no
+#
+# Name: pgp_autoinline
+# Type: boolean
+# Default: no
+# 
+# 
+# This option controls whether Mutt generates old-style inline
+# (traditional) PGP encrypted or signed messages under certain
+# circumstances.  This can be overridden by use of the pgp-menu,
+# when inline is not required.
+# 
+# Note that Mutt might automatically use PGP/MIME for messages
+# which consist of more than a single MIME part.  Mutt can be
+# configured to ask before sending PGP/MIME messages when inline
+# (traditional) would not work.
+# See also: ``$pgp_mime_auto''.
+# 
+# Also note that using the old-style PGP message format is strongly
+# deprecated.
+# (PGP only)
+# 
+# 
+# set pgp_replyinline=no
+#
+# Name: pgp_replyinline
+# Type: boolean
+# Default: no
+# 
+# 
+# Setting this variable will cause Mutt to always attempt to
+# create an inline (traditional) message when replying to a
+# message which is PGP encrypted/signed inline.  This can be
+# overridden by use of the pgp-menu, when inline is not
+# required.  This option does not automatically detect if the
+# (replied-to) message is inline; instead it relies on Mutt
+# internals for previously checked/flagged messages.
+# 
+# Note that Mutt might automatically use PGP/MIME for messages
+# which consist of more than a single MIME part.  Mutt can be
+# configured to ask before sending PGP/MIME messages when inline
+# (traditional) would not work.
+# See also: ``$pgp_mime_auto''.
+# 
+# Also note that using the old-style PGP message format is strongly
+# deprecated.
+# (PGP only)
+# 
+# 
 # set pgp_show_unusable=yes
 #
 # Name: pgp_show_unusable
@@ -2234,47 +2345,22 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # (PGP only)
 # 
 # 
-# set pgp_create_traditional=no
+# set pgp_mime_auto=ask-yes
 #
-# Name: pgp_create_traditional
+# Name: pgp_mime_auto
 # Type: quadoption
-# Default: no
-# 
+# Default: ask-yes
 # 
-# This option controls whether Mutt generates old-style inline PGP
-# encrypted or signed messages.
 # 
-# Note that PGP/MIME will be used automatically for messages which have
-# a character set different from us-ascii, or which consist of more than
-# a single MIME part.
+# This option controls whether Mutt will prompt you for
+# automatically sending a (signed/encrypted) message using
+# PGP/MIME when inline (traditional) fails (for any reason).
 # 
 # Also note that using the old-style PGP message format is strongly
 # deprecated.
 # (PGP only)
 # 
 # 
-# set pgp_auto_traditional=no
-#
-# Name: pgp_auto_traditional
-# Type: boolean
-# Default: no
-# 
-# 
-# This option causes Mutt to generate an old-style inline PGP
-# encrypted or signed message when replying to an old-style
-# message, and a PGP/MIME message when replying to a PGP/MIME
-# message.  Note that this option is only meaningful when using
-# ``$crypt_replyencrypt'', ``$crypt_replysign'', or
-# ``$crypt_replysignencrypted''.
-# 
-# Also note that PGP/MIME will be used automatically for messages
-# which have a character set different from us-ascii, or which
-# consist of more than a single MIME part.
-# 
-# This option overrides ``$pgp_create_traditional''
-# (PGP only)
-# 
-# 
 # set pgp_decode_command=""
 #
 # Name: pgp_decode_command
@@ -2656,8 +2742,8 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # 
 # 
 # This command is used to extract only the signers X509 certificate from a S/MIME
-# signature, so that the certificate's owner may get compared to the email's 
-# 'From'-field.
+# signature, so that the certificate's owner may get compared to the
+# email's 'From'-field.
 # (S/MIME only)
 # 
 # 
@@ -2709,11 +2795,11 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # use STARTTLS regardless of the server's capabilities.
 # 
 # 
-# set certificate_file=""
+# set certificate_file="~/.mutt_certificates"
 #
 # Name: certificate_file
 # Type: path
-# Default: ""
+# Default: "~/.mutt_certificates"
 # 
 # 
 # This variable specifies the file where the certificates you trust
@@ -2785,6 +2871,17 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # SSL authentication process.
 # 
 # 
+# set ssl_client_cert=""
+#
+# Name: ssl_client_cert
+# Type: path
+# Default: ""
+# 
+# 
+# The file containing a client certificate and its associated private
+# key.
+# 
+# 
 # set pipe_split=no
 #
 # Name: pipe_split
@@ -3279,8 +3376,10 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # move the messages to another machine, and reply to some the messages
 # from there.  If this variable is set, the default From: line of
 # the reply messages is built using the address where you received the
-# messages you are replying to.  If the variable is unset, the
-# From: line will use your address on the current machine.
+# messages you are replying to if that address matches your
+# alternates.  If the variable is unset, or the address that would be
+# used doesn't match your alternates, the From: line will use
+# your address on the current machine.
 # 
 # 
 # set reverse_realname=yes
@@ -3621,6 +3720,7 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 #    mailbox-order (unsorted)
 #    score
 #    size
+#    spam
 #    subject
 #    threads
 #    to
@@ -3666,11 +3766,11 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # but kept to not break any existing configuration setting).
 # 
 # 
-# set sort_browser=subject
+# set sort_browser=alpha
 #
 # Name: sort_browser
 # Type: sort order
-# Default: subject
+# Default: alpha
 # 
 # 
 # Specifies how to sort entries in the file browser.  By default, the
@@ -3702,6 +3802,20 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # non-``$reply_regexp'' parts of both messages are identical.
 # 
 # 
+# set spam_separator=","
+#
+# Name: spam_separator
+# Type: string
+# Default: ","
+# 
+# 
+# ``spam_separator'' controls what happens when multiple spam headers
+# are matched: if unset, each successive header will overwrite any
+# previous matches value for the spam label. If set, each successive
+# match will append to the previous, using ``spam_separator'' as a
+# separator.
+# 
+# 
 # set spoolfile=""
 #
 # Name: spoolfile
@@ -4009,18 +4123,6 @@ macro pager   <f1> "!less /usr/local/doc/mutt/manual.txt\n" "Show Mutt documenta
 # Normally, the default should work.
 # 
 # 
-# set use_ipv6=yes
-#
-# Name: use_ipv6
-# Type: boolean
-# Default: yes
-# 
-# 
-# When set, Mutt will look for IPv6 addresses of hosts it tries to
-# contact.  If this option is unset, Mutt will restrict itself to IPv4 addresses.
-# Normally, the default should work.
-# 
-# 
 # set user_agent=yes
 #
 # Name: user_agent
diff --git a/VERSION b/VERSION
index eac1e0a..f01291b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.5.6
+1.5.7
index 08bed17..fb20f2f 100644 (file)
@@ -74,12 +74,12 @@ alias_format_str (char *dest, size_t destlen, char op, const char *src,
   return (src);
 }
 
-void alias_entry (char *s, size_t slen, MUTTMENU *m, int num)
+static void alias_entry (char *s, size_t slen, MUTTMENU *m, int num)
 {
   mutt_FormatString (s, slen, NONULL (AliasFmt), alias_format_str, (unsigned long) ((ALIAS **) m->data)[num], M_FORMAT_ARROWCURSOR);
 }
 
-int alias_tag (MUTTMENU *menu, int n, int m)
+static int alias_tag (MUTTMENU *menu, int n, int m)
 {
   ALIAS *cur = ((ALIAS **) menu->data)[n];
   int ot = cur->tagged;
index 2179a49..a49749b 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -108,7 +108,8 @@ int mutt_compose_attachment (BODY *a)
          if (mutt_yesorno (_("Can't match nametemplate, continue?"), M_YES) != M_YES)
            goto bailout;
        }
-       unlink_newfile = 1;
+       else
+         unlink_newfile = 1;
       }
       else
        strfcpy(newfile, a->filename, sizeof(newfile));
@@ -173,7 +174,11 @@ int mutt_compose_attachment (BODY *a)
            fclose (fp);
            fclose (tfp);
            mutt_unlink (a->filename);  
-           mutt_rename_file (tempfile, a->filename); 
+           if (mutt_rename_file (tempfile, a->filename) != 0) 
+           {
+             mutt_perror _("Failure to rename file.");
+             goto bailout;
+           }
 
            mutt_free_body (&b);
          }
@@ -235,7 +240,8 @@ int mutt_edit_attachment (BODY *a)
          if (mutt_yesorno (_("Can't match nametemplate, continue?"), M_YES) != M_YES)
            goto bailout;
        }
-       unlink_newfile = 1;
+       else
+         unlink_newfile = 1;
       }
       else
        strfcpy(newfile, a->filename, sizeof(newfile));
@@ -607,6 +613,7 @@ int mutt_view_attachment (FILE *fp, BODY *a, int flag, HEADER *hdr,
 
     rc = mutt_do_pager (descrip, pagerfile,
                        M_PAGER_ATTACHMENT | (is_message ? M_PAGER_MESSAGE : 0), &info);
+    *pagerfile = '\0';
   }
   else
     rc = 0;
index 61bf178..2012ec8 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -644,7 +644,7 @@ static int examine_mailboxes (MUTTMENU *menu, struct browser_state *state)
   return 0;
 }
 
-int select_file_search (MUTTMENU *menu, regex_t *re, int n)
+static int select_file_search (MUTTMENU *menu, regex_t *re, int n)
 {
 #ifdef USE_NNTP
   if (option (OPTNEWS))
@@ -653,7 +653,7 @@ int select_file_search (MUTTMENU *menu, regex_t *re, int n)
   return (regexec (re, ((struct folder_file *) menu->data)[n].name, 0, NULL, 0));
 }
 
-void folder_entry (char *s, size_t slen, MUTTMENU *menu, int num)
+static void folder_entry (char *s, size_t slen, MUTTMENU *menu, int num)
 {
   FOLDER folder;
 
@@ -715,7 +715,7 @@ static void init_menu (struct browser_state *state, MUTTMENU *menu, char *title,
   menu->redraw = REDRAW_FULL;
 }
 
-int file_tag (MUTTMENU *menu, int n, int m)
+static int file_tag (MUTTMENU *menu, int n, int m)
 {
   struct folder_file *ff = &(((struct folder_file *)menu->data)[n]);
   int ot;
@@ -803,8 +803,8 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
       else
       {
        getcwd (LastDir, sizeof (LastDir));
-       strcat (LastDir, "/");  /* __STRCAT_CHECKED__ */
-       strncat (LastDir, f, i);
+       safe_strcat (LastDir, sizeof (LastDir), "/");
+       safe_strncat (LastDir, sizeof (LastDir), f, i);
       }
     }
     else
@@ -1177,21 +1177,21 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
          {
            if (S_ISDIR (st.st_mode))
            {
-             strfcpy (LastDir, buf, sizeof (LastDir));
              destroy_state (&state);
-             if (examine_directory (menu, &state, LastDir, prefix) == 0)
-             {
-               menu->current = 0; 
-               menu->top = 0; 
-               init_menu (&state, menu, title, sizeof (title), buffy);
-             }
+             if (examine_directory (menu, &state, buf, prefix) == 0)
+               strfcpy (LastDir, buf, sizeof (LastDir));
              else
              {
                mutt_error _("Error scanning directory.");
-               destroy_state (&state);
-               mutt_menuDestroy (&menu);
-               goto bail;
+               if (examine_directory (menu, &state, LastDir, prefix) == -1)
+               {
+                 mutt_menuDestroy (&menu);
+                 goto bail;
+               }
              }
+             menu->current = 0; 
+             menu->top = 0; 
+             init_menu (&state, menu, title, sizeof (title), buffy);
            }
            else
              mutt_error (_("%s is not a directory."), buf);
diff --git a/buffy.c b/buffy.c
index 4234a4e..88e1cbd 100644 (file)
--- a/buffy.c
+++ b/buffy.c
@@ -508,7 +508,7 @@ int mutt_buffy_list (void)
   pos = 0;
   first = 1;
   buffylist[0] = 0;
-  pos += strlen (strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos));
+  pos += strlen (strncat (buffylist, _("New mail in "), sizeof (buffylist) - 1 - pos)); /* __STRNCAT_CHECKED__ */
   for (tmp = Incoming; tmp; tmp = tmp->next)
   {
     /* Is there new mail in this mailbox? */
@@ -522,21 +522,21 @@ int mutt_buffy_list (void)
       break;
     
     if (!first)
-      pos += strlen (strncat(buffylist + pos, ", ", sizeof(buffylist)-1-pos));
+      pos += strlen (strncat(buffylist + pos, ", ", sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */
 
     /* Prepend an asterisk to mailboxes not already notified */
     if (!tmp->notified)
     {
-      /* pos += strlen (strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos)); */
+      /* pos += strlen (strncat(buffylist + pos, "*", sizeof(buffylist)-1-pos));  __STRNCAT_CHECKED__ */
       tmp->notified = 1;
       BuffyNotify--;
     }
-    pos += strlen (strncat(buffylist + pos, path, sizeof(buffylist)-1-pos));
+    pos += strlen (strncat(buffylist + pos, path, sizeof(buffylist)-1-pos)); /* __STRNCAT_CHECKED__ */
     first = 0;
   }
   if (!first && tmp)
   {
-    strncat (buffylist + pos, ", ...", sizeof (buffylist) - 1 - pos);
+    strncat (buffylist + pos, ", ...", sizeof (buffylist) - 1 - pos); /* __STRNCAT_CHECKED__ */
   }
   if (!first)
   {
index 19c3a2b..18e9cdc 100644 (file)
--- a/charset.c
+++ b/charset.c
@@ -379,18 +379,24 @@ size_t mutt_iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t *inbytesleft,
        if (*t)
          continue;
       }
-      if (outrepl)
+      /* Replace the output */
+      if (!outrepl)
+       outrepl = "?";
+      iconv (cd, 0, 0, &ob, &obl);
+      if (obl)
       {
-       /* Try replacing the output */
        int n = strlen (outrepl);
-       if (n <= obl)
+       if (n > obl)
        {
-         memcpy (ob, outrepl, n);
-         ++ib, --ibl;
-         ob += n, obl -= n;
-         ++ret;
-         continue;
+         outrepl = "?";
+         n = 1;
        }
+       memcpy (ob, outrepl, n);
+       ++ib, --ibl;
+       ob += n, obl -= n;
+       ++ret;
+       iconv (cd, 0, 0, 0, 0); /* for good measure */
+       continue;
       }
     }
     *inbuf = ib, *inbytesleft = ibl;
diff --git a/color.c b/color.c
index b322060..152b308 100644 (file)
--- a/color.c
+++ b/color.c
@@ -156,7 +156,7 @@ void ci_start_color (void)
 #ifdef USE_SLANG_CURSES
 static char *get_color_name (char *dest, size_t destlen, int val)
 {
-  static char * missing[3] = {"brown", "lightgray", ""};
+  static char * missing[3] = {"brown", "lightgray", "default"};
   int i;
 
   switch (val)
index 29e5d4c..a765de9 100644 (file)
@@ -283,10 +283,10 @@ void ci_bounce_message (HEADER *h, int *redraw)
     mutt_format_string (prompt, sizeof (prompt),
                        0, COLS-extra_space, 0, 0,
                        prompt, sizeof (prompt), 0);
-    strncat (prompt, "...?", sizeof (prompt));
+    safe_strcat (prompt, sizeof (prompt), "...?");
   }
   else
-    strncat (prompt, "?", sizeof (prompt));
+    safe_strcat (prompt, sizeof (prompt), "?");
 
   if (query_quadoption (OPT_BOUNCE, prompt) != M_YES)
   {
@@ -324,7 +324,7 @@ static void pipe_set_flags (int decode, int print, int *cmflags, int *chflags)
   
 }
 
-void pipe_msg (HEADER *h, FILE *fp, int decode, int print)
+static void pipe_msg (HEADER *h, FILE *fp, int decode, int print)
 {
   int cmflags = 0;
   int chflags = CH_FROM;
@@ -502,9 +502,9 @@ int mutt_select_sort (int reverse)
   int method = Sort; /* save the current method in case of abort */
 
   switch (mutt_multi_choice (reverse ?
-                            _("Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: ") :
-                            _("Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore?: "),
-                            _("dfrsotuzc")))
+                            _("Rev-Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: ") :
+                            _("Sort (d)ate/(f)rm/(r)ecv/(s)ubj/t(o)/(t)hread/(u)nsort/si(z)e/s(c)ore/s(p)am?: "),
+                            _("dfrsotuzcp")))
   {
   case -1: /* abort - don't resort */
     return -1;
@@ -544,6 +544,10 @@ int mutt_select_sort (int reverse)
   case 9: /* s(c)ore */ 
     Sort = SORT_SCORE;
     break;
+
+  case 10: /* s(p)am */
+    Sort = SORT_SPAM;
+    break;
   }
   if (reverse)
     Sort |= SORT_REVERSE;
@@ -1036,12 +1040,17 @@ void mutt_edit_content_type (HEADER *h, BODY *b, FILE *fp)
 
   /* inform the user */
   
+  snprintf (tmp, sizeof (tmp), "%s/%s", TYPE (b), NONULL (b->subtype));
   if (type_changed)
     mutt_message (_("Content-Type changed to %s."), tmp);
-  else if (b->type == TYPETEXT && charset_changed)
+  if (b->type == TYPETEXT && charset_changed)
+  {
+    if (type_changed)
+      mutt_sleep (1);
     mutt_message (_("Character set changed to %s; %s."),
                  mutt_get_parameter ("charset", b->parameter),
                  b->noconv ? _("not converting") : _("converting"));
+  }
 
   b->force_charset |= charset_changed ? 1 : 0;
 
@@ -1071,6 +1080,8 @@ static int _mutt_check_traditional_pgp (HEADER *h, int *redraw)
   MESSAGE *msg;
   int rv = 0;
   
+  h->security |= PGP_TRADITIONAL_CHECKED;
+  
   mutt_parse_mime_message (Context, h);
   if ((msg = mx_open_message (Context, h->msgno)) == NULL)
     return 0;
@@ -1089,12 +1100,13 @@ int mutt_check_traditional_pgp (HEADER *h, int *redraw)
 {
   int i;
   int rv = 0;
-  if (h)
+  if (h && !(h->security & PGP_TRADITIONAL_CHECKED))
     rv = _mutt_check_traditional_pgp (h, redraw);
   else
   {
     for (i = 0; i < Context->vcount; i++)
-      if (Context->hdrs[Context->v2r[i]]->tagged)
+      if (Context->hdrs[Context->v2r[i]]->tagged && 
+         !(Context->hdrs[Context->v2r[i]]->security & PGP_TRADITIONAL_CHECKED))
        rv = _mutt_check_traditional_pgp (Context->hdrs[Context->v2r[i]], redraw)
          || rv;
   }
index cc4d784..ef7ee18 100644 (file)
--- a/compose.c
+++ b/compose.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2004 g10 Code GmbH
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -162,6 +163,16 @@ static void redraw_crypt_lines (HEADER *msg)
     addstr (_("Sign"));
   else
     addstr (_("Clear"));
+
+  if ((WithCrypto & APPLICATION_PGP))
+    if ((msg->security & APPLICATION_PGP) 
+       && (msg->security & (ENCRYPT | SIGN)))
+    {
+      if ((msg->security & INLINE))
+       addstr (_(" (inline)"));
+      else
+       addstr (_(" (PGP/MIME)"));
+    }
   clrtoeol ();
 
   move (HDR_CRYPTINFO, SidebarWidth);
@@ -171,12 +182,15 @@ static void redraw_crypt_lines (HEADER *msg)
     printw ("%s%s", _(" sign as: "), PgpSignAs ? PgpSignAs : _("<default>"));
 
   if ((WithCrypto & APPLICATION_SMIME)
-      && msg->security & APPLICATION_SMIME  && msg->security & SIGN) {
+     && msg->security & APPLICATION_SMIME  && msg->security & SIGN) {
       printw ("%s%s", _(" sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
   }
 
   if ((WithCrypto & APPLICATION_SMIME)
-       && msg->security & APPLICATION_SMIME  && (msg->security & ENCRYPT)) {
+       && (msg->security & APPLICATION_SMIME)
+       && (msg->security & ENCRYPT)
+       && SmimeCryptAlg
+       && *SmimeCryptAlg) {
       mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "),
                NONULL(SmimeCryptAlg));
       off = 20;
@@ -184,154 +198,6 @@ static void redraw_crypt_lines (HEADER *msg)
 }
 
 
-
-static int pgp_send_menu (HEADER *msg, int *redraw)
-{
-  pgp_key_t p;
-  char input_signas[SHORT_STRING];
-
-  if (!(WithCrypto & APPLICATION_PGP))
-    return msg->security;
-
-  switch (mutt_multi_choice (_("PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "),
-                            _("esabf")))
-  {
-  case 1: /* (e)ncrypt */
-    msg->security |= ENCRYPT;
-    break;
-
-  case 2: /* (s)ign */
-    msg->security |= SIGN;
-    break;
-
-  case 3: /* sign (a)s */
-    unset_option(OPTPGPCHECKTRUST);
-
-    if ((p = crypt_pgp_ask_for_key (_("Sign as: "), NULL,
-                                    KEYFLAG_CANSIGN, PGP_PUBRING)))
-    {
-      snprintf (input_signas, sizeof (input_signas), "0x%s",
-                crypt_pgp_keyid (p));
-      mutt_str_replace (&PgpSignAs, input_signas);
-      crypt_pgp_free_key (&p);
-      
-      msg->security |= SIGN;
-       
-      crypt_pgp_void_passphrase ();  /* probably need a different passphrase */
-    }
-    else
-    {
-      msg->security &= ~SIGN;
-    }
-
-    *redraw = REDRAW_FULL;
-    break;
-
-  case 4: /* (b)oth */
-    msg->security = ENCRYPT | SIGN;
-    break;
-
-  case 5: /* (f)orget it */
-    msg->security = 0;
-    break;
-  }
-
-  if (msg->security && msg->security != APPLICATION_PGP)
-    msg->security |= APPLICATION_PGP;
-  else
-    msg->security = 0;
-
-  if(*redraw)
-      redraw_crypt_lines (msg);
-  return (msg->security);
-}
-
-
-
-static int smime_send_menu (HEADER *msg, int *redraw)
-{
-  char *p;
-
-  if (!(WithCrypto & APPLICATION_SMIME))
-    return msg->security;
-
-  switch (mutt_multi_choice (_("S/MIME (e)ncrypt, (s)ign, encrypt (w)ith, sign (a)s, (b)oth, or (f)orget it? "),
-                            _("eswabf")))
-  {
-  case 1: /* (e)ncrypt */
-    msg->security |= ENCRYPT;
-    break;
-
-  case 3: /* encrypt (w)ith */
-    msg->security |= ENCRYPT;
-    switch (mutt_multi_choice (_("1: DES, 2: Triple-DES, 3: RC2-40,"
-                                " 4: RC2-64, 5: RC2-128, or (f)orget it? "),
-                              _("12345f"))) {
-    case 1:
-       mutt_str_replace (&SmimeCryptAlg, "des");
-       break;
-    case 2:
-       mutt_str_replace (&SmimeCryptAlg, "des3");
-       break;
-    case 3:
-       mutt_str_replace (&SmimeCryptAlg, "rc2-40");
-       break;
-    case 4:
-       mutt_str_replace (&SmimeCryptAlg, "rc2-64");
-       break;
-    case 5:
-       mutt_str_replace (&SmimeCryptAlg, "rc2-128");
-       break;
-    case 6: /* forget it */
-       break;
-    }
-    break;
-
-  case 2: /* (s)ign */
-      
-    if(!SmimeDefaultKey)
-       mutt_message("Can\'t sign: No key specified. use sign(as).");
-    else
-       msg->security |= SIGN;
-    break;
-
-  case 4: /* sign (a)s */
-
-    if ((p = crypt_smime_ask_for_key (_("Sign as: "), NULL, 0))) {
-      p[mutt_strlen (p)-1] = '\0';
-      mutt_str_replace (&SmimeDefaultKey, p);
-       
-      msg->security |= SIGN;
-
-      /* probably need a different passphrase */
-      crypt_smime_void_passphrase ();
-    }
-    else
-      msg->security &= ~SIGN;
-
-    *redraw = REDRAW_FULL;
-    break;
-
-  case 5: /* (b)oth */
-    msg->security = ENCRYPT | SIGN;
-    break;
-
-  case 6: /* (f)orget it */
-    msg->security = 0;
-    break;
-  }
-
-  if (msg->security && msg->security != APPLICATION_SMIME)
-    msg->security |= APPLICATION_SMIME;
-  else
-    msg->security = 0;
-
-  if(*redraw)
-      redraw_crypt_lines (msg);
-  return (msg->security);
-}
-
-
 #ifdef MIXMASTER
 
 static void redraw_mix_line (LIST *chain)
@@ -586,7 +452,7 @@ static unsigned long cum_attachs_size (MUTTMENU *menu)
 }
 
 /* prototype for use below */
-void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu, 
+static void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu, 
       const char *p);
 
 /*
@@ -652,7 +518,7 @@ compose_format_str (char *buf, size_t buflen, char op, const char *src,
   return (src);
 }
 
-void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu, 
+static void compose_status_line (char *buf, size_t buflen, MUTTMENU *menu, 
       const char *p)
 {
   mutt_FormatString (buf, buflen, p, compose_format_str, 
@@ -725,24 +591,37 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
        break;
       case OP_COMPOSE_EDIT_FROM:
        menu->redraw = edit_address_list (HDR_FROM, &msg->env->from);
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
        break;
       case OP_COMPOSE_EDIT_TO:
 #ifdef USE_NNTP
-       if (!news)
+       if (!news) {
 #endif
          menu->redraw = edit_address_list (HDR_TO, &msg->env->to);
+          mutt_message_hook (NULL, msg, M_SEND2HOOK);
+#ifdef USE_NNTP
+       }
+#endif
        break;
       case OP_COMPOSE_EDIT_BCC:
 #ifdef USE_NNTP
-       if (!news)
+       if (!news) {
 #endif
          menu->redraw = edit_address_list (HDR_BCC, &msg->env->bcc);
+          mutt_message_hook (NULL, msg, M_SEND2HOOK);
+#ifdef USE_NNTP
+       }
+#endif
        break;
       case OP_COMPOSE_EDIT_CC:
 #ifdef USE_NNTP
-       if (!news)
+       if (!news) {
 #endif
          menu->redraw = edit_address_list (HDR_CC, &msg->env->cc);
+          mutt_message_hook (NULL, msg, M_SEND2HOOK);  
+#ifdef USE_NNTP
+       }
+#endif
        break;
 #ifdef USE_NNTP
       case OP_COMPOSE_EDIT_NEWSGROUPS:
@@ -815,9 +694,11 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          if (msg->env->subject)
            mutt_paddstr (W, msg->env->subject);
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
       case OP_COMPOSE_EDIT_REPLY_TO:
        menu->redraw = edit_address_list (HDR_REPLYTO, &msg->env->reply_to);
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
        break;
       case OP_COMPOSE_EDIT_FCC:
        strfcpy (buf, fcc, sizeof (buf));
@@ -830,19 +711,22 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          fccSet = 1;
        }
        MAYBE_REDRAW (menu->redraw);
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
       case OP_COMPOSE_EDIT_MESSAGE:
        if (Editor && (mutt_strcmp ("builtin", Editor) != 0) && !option (OPTEDITHDRS))
        {
          mutt_edit_file (Editor, msg->content->filename);
          mutt_update_encoding (msg->content);
          menu->redraw = REDRAW_CURRENT | REDRAW_STATUS;
+         mutt_message_hook (NULL, msg, M_SEND2HOOK);
          break;
        }
        /* fall through */
       case OP_COMPOSE_EDIT_HEADERS:
-       if (op == OP_COMPOSE_EDIT_HEADERS ||
-           (op == OP_COMPOSE_EDIT_MESSAGE && option (OPTEDITHDRS)))
+       if (mutt_strcmp ("builtin", Editor) != 0 &&
+           (op == OP_COMPOSE_EDIT_HEADERS ||
+           (op == OP_COMPOSE_EDIT_MESSAGE && option (OPTEDITHDRS))))
        {
          char *tag = NULL, *err = NULL;
          mutt_env_to_local (msg->env);
@@ -875,7 +759,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          menu->max = idxlen;
        }
 
-       menu->redraw = REDRAW_FULL;
+        menu->redraw = REDRAW_FULL;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
        break;
 
 
@@ -906,7 +791,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          unset_option(OPTNEEDREDRAW);
        }
        
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
 
       case OP_COMPOSE_ATTACH_FILE:
@@ -952,7 +838,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
 
          menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_COMPOSE_ATTACH_MESSAGE:
 #ifdef USE_NNTP
@@ -1084,7 +971,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          Sort = oldSort;
          SortAux = oldSortAux;
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_DELETE:
        CHECK_COUNT;
@@ -1103,7 +991,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          msg->content = idx[0]->content;
 
         menu->redraw |= REDRAW_STATUS;
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
 #define CURRENT idx[menu->current]->content
       
@@ -1121,6 +1010,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
         else
          mutt_message (_("The current attachment will be converted."));
        menu->redraw = REDRAW_CURRENT;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
         break;
       }
 #undef CURRENT
@@ -1137,7 +1027,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          mutt_str_replace (&idx[menu->current]->content->description, buf);
          menu->redraw = REDRAW_CURRENT;
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_COMPOSE_UPDATE_ENCODING:
         CHECK_COUNT;
@@ -1156,6 +1047,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
           mutt_update_encoding(idx[menu->current]->content);
          menu->redraw = REDRAW_CURRENT | REDRAW_STATUS;
        }
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
         break;
       
       case OP_COMPOSE_TOGGLE_DISPOSITION:
@@ -1174,7 +1066,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
 
          menu->redraw = REDRAW_CURRENT;
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_COMPOSE_EDIT_ENCODING:
        CHECK_COUNT;
@@ -1192,9 +1085,14 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          else
            mutt_error _("Invalid encoding.");
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_COMPOSE_SEND_MESSAGE:
+
+        /* Note: We don't invoke send2-hook here, since we want to leave
+        * users an opportunity to change settings from the ":" prompt.
+        */
       
         if(check_attachments(idx, idxlen) != 0)
         {
@@ -1226,6 +1124,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
        mutt_edit_file (NONULL(Editor), idx[menu->current]->content->filename);
        mutt_update_encoding (idx[menu->current]->content);
        menu->redraw = REDRAW_CURRENT | REDRAW_STATUS;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
        break;
 
       case OP_COMPOSE_TOGGLE_UNLINK:
@@ -1241,6 +1140,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          menu->current++;
 # endif
        menu->redraw = REDRAW_INDEX;
+        /* No send2hook since this doesn't change the message. */
        break;
 
       case OP_COMPOSE_GET_ATTACHMENT:
@@ -1258,6 +1158,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
         else if (mutt_get_tmp_attachment(idx[menu->current]->content) == 0)
          menu->redraw = REDRAW_CURRENT;
 
+        /* No send2hook since this doesn't change the message. */
         break;
       
       case OP_COMPOSE_RENAME_FILE:
@@ -1284,7 +1185,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
            mutt_stamp_attachment(idx[menu->current]->content);
          
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_COMPOSE_NEW_MIME:
        {
@@ -1351,7 +1253,8 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
            menu->redraw = REDRAW_FULL;
          }
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);    
+        break;
 
       case OP_COMPOSE_EDIT_MIME:
        CHECK_COUNT;
@@ -1360,24 +1263,28 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          mutt_update_encoding (idx[menu->current]->content);
          menu->redraw = REDRAW_FULL;
        }
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
       case OP_VIEW_ATTACH:
       case OP_DISPLAY_HEADERS:
        CHECK_COUNT;
        mutt_attach_display_loop (menu, op, NULL, NULL, NULL, &idx, &idxlen, NULL, 0);
        menu->redraw = REDRAW_FULL;
+        /* no send2hook, since this doesn't modify the message */
        break;
 
       case OP_SAVE:
        CHECK_COUNT;
        mutt_save_attachment_list (NULL, menu->tagprefix, menu->tagprefix ?  msg->content : idx[menu->current]->content, NULL, menu);
        MAYBE_REDRAW (menu->redraw);
+        /* no send2hook, since this doesn't modify the message */
        break;
 
       case OP_PRINT:
        CHECK_COUNT;
        mutt_print_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content);
+        /* no send2hook, since this doesn't modify the message */
        break;
 
       case OP_PIPE:
@@ -1385,8 +1292,9 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
         CHECK_COUNT;
        mutt_pipe_attachment_list (NULL, menu->tagprefix, menu->tagprefix ? msg->content : idx[menu->current]->content, op == OP_FILTER);
        if (op == OP_FILTER) /* cte might have changed */
-         menu->redraw = menu->tagprefix ? REDRAW_FULL : REDRAW_CURRENT; 
+         menu->redraw = menu->tagprefix ? REDRAW_FULL : REDRAW_CURRENT;
         menu->redraw |= REDRAW_STATUS;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
        break;
 
       case OP_EXIT:
@@ -1479,9 +1387,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          }
          msg->security = 0;
        }
-       msg->security = pgp_send_menu (msg, &menu->redraw);
+       msg->security = crypt_pgp_send_menu (msg, &menu->redraw);
        redraw_crypt_lines (msg);
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
 
       case OP_FORGET_PASSPHRASE:
@@ -1504,15 +1413,17 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          }
          msg->security = 0;
        }
-       msg->security = smime_send_menu(msg, &menu->redraw);
+       msg->security = crypt_smime_send_menu(msg, &menu->redraw);
        redraw_crypt_lines (msg);
-       break;
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
+        break;
 
 
 #ifdef MIXMASTER
       case OP_COMPOSE_MIX:
       
        mix_make_chain (&msg->chain, &menu->redraw);
+        mutt_message_hook (NULL, msg, M_SEND2HOOK);
         break;
 #endif
 
index 4d51f94..810dd71 100644 (file)
 /*  Define to use fcntl() to lock folders.  */
 #undef USE_FCNTL
 
+/*  Define to sort files in a  maildir by inode number.  */
+#undef USE_INODESORT
+
 /* Define if you have problems with mutt not detecting
                    new/old mailboxes over NFS.  Some NFS implementations
                    incorrectly cache the attributes of small files. */
 /* Sleepycat DB4 Support */
 #undef HAVE_DB4
 
+/* Enable header caching */
+#undef USE_HCACHE
+
+/* GDBM Support */
+#undef HAVE_GDBM
+
+/* Sleepycat DB4 Support */
+#undef HAVE_DB4
+
 /* Define if you have the iconv() function. */
 #undef HAVE_ICONV
 
index 3561ac9..b53d42e 100755 (executable)
--- a/configure
+++ b/configure
@@ -59,6 +59,8 @@ ac_help="$ac_help
   --enable-flock             Use flock() to lock files"
 ac_help="$ac_help
   --disable-fcntl            Do NOT use fcntl() to lock files "
+ac_help="$ac_help
+   --disable-inodesort Do NOT read files in maildir folders sorted by inode. "
 ac_help="$ac_help
   --disable-warnings         Turn off compiler warnings (not recommended)"
 ac_help="$ac_help
@@ -81,6 +83,12 @@ ac_help="$ac_help
   --without-gdbm             Get rid of gdbm even if it is available "
 ac_help="$ac_help
   --with-bdb[=DIR]          Use BerkeleyDB4 if gdbm is not available "
+ac_help="$ac_help
+  --enable-hcache            Enable header caching"
+ac_help="$ac_help
+  --without-gdbm             Get rid of gdbm even if it is available "
+ac_help="$ac_help
+  --with-bdb[=DIR]          Use BerkeleyDB4 if gdbm is not available "
 ac_help="$ac_help
   --disable-iconv            Disable iconv support"
 ac_help="$ac_help
@@ -641,7 +649,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:645: checking for a BSD compatible install" >&5
+echo "configure:653: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -694,7 +702,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:698: checking whether build environment is sane" >&5
+echo "configure:706: checking whether build environment is sane" >&5
 # Just in case
 sleep 1
 echo timestamp > conftestfile
@@ -751,7 +759,7 @@ test "$program_suffix" != NONE &&
 test "$program_transform_name" = "" && program_transform_name="s,x,x,"
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:755: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:763: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -797,7 +805,7 @@ EOF
 
 missing_dir=`cd $ac_aux_dir && pwd`
 echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:801: checking for working aclocal" >&5
+echo "configure:809: checking for working aclocal" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -810,7 +818,7 @@ else
 fi
 
 echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:814: checking for working autoconf" >&5
+echo "configure:822: checking for working autoconf" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -823,7 +831,7 @@ else
 fi
 
 echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:827: checking for working automake" >&5
+echo "configure:835: checking for working automake" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -836,7 +844,7 @@ else
 fi
 
 echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:840: checking for working autoheader" >&5
+echo "configure:848: checking for working autoheader" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -849,7 +857,7 @@ else
 fi
 
 echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:853: checking for working makeinfo" >&5
+echo "configure:861: checking for working makeinfo" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -874,7 +882,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:878: checking host system type" >&5
+echo "configure:886: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -896,7 +904,7 @@ echo "$ac_t""$host" 1>&6
 
 
 echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:900: checking for prefix" >&5
+echo "configure:908: checking for prefix" >&5
 if test x$prefix = xNONE; then
         mutt_cv_prefix=$ac_default_prefix
 else
@@ -907,7 +915,7 @@ echo "$ac_t""$mutt_cv_prefix" 1>&6
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:911: checking for $ac_word" >&5
+echo "configure:919: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -937,7 +945,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:941: checking for $ac_word" >&5
+echo "configure:949: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -988,7 +996,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:992: checking for $ac_word" >&5
+echo "configure:1000: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1020,7 +1028,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1024: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1032: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1031,12 +1039,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1035 "configure"
+#line 1043 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1062,12 +1070,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1066: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1074: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1071: checking whether we are using GNU C" >&5
+echo "configure:1079: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1076,7 +1084,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1095,7 +1103,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1099: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1107: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1128,7 +1136,7 @@ fi
 
 
         echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
-echo "configure:1132: checking for strerror in -lcposix" >&5
+echo "configure:1140: checking for strerror in -lcposix" >&5
 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1136,7 +1144,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1140 "configure"
+#line 1148 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1147,7 +1155,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:1151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1173,7 +1181,7 @@ fi
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1177: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:1185: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1189,7 +1197,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__
 do
   CC="$ac_save_CC $ac_arg"
   cat > conftest.$ac_ext <<EOF
-#line 1193 "configure"
+#line 1201 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -1226,7 +1234,7 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
 
 ; return 0; }
 EOF
-if { (eval echo configure:1230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1238: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_prog_cc_stdc="$ac_arg"; break
 else
@@ -1250,7 +1258,7 @@ case "x$am_cv_prog_cc_stdc" in
 esac
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1254: checking how to run the C preprocessor" >&5
+echo "configure:1262: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1265,13 +1273,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1269 "configure"
+#line 1277 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1282,13 +1290,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1286 "configure"
+#line 1294 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1292: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1299,13 +1307,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1303 "configure"
+#line 1311 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1332,7 +1340,7 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for function prototypes""... $ac_c" 1>&6
-echo "configure:1336: checking for function prototypes" >&5
+echo "configure:1344: checking for function prototypes" >&5
 if test "$am_cv_prog_cc_stdc" != no; then
   echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
@@ -1345,12 +1353,12 @@ else
   U=_ ANSI2KNR=./ansi2knr
   # Ensure some checks needed by ansi2knr itself.
   echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1349: checking for ANSI C header files" >&5
+echo "configure:1357: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1354 "configure"
+#line 1362 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1358,7 +1366,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1375,7 +1383,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1379 "configure"
+#line 1387 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1393,7 +1401,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1397 "configure"
+#line 1405 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1414,7 +1422,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1418 "configure"
+#line 1426 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1425,7 +1433,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1452,17 +1460,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1456: checking for $ac_hdr" >&5
+echo "configure:1464: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1461 "configure"
+#line 1469 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1494,7 +1502,7 @@ if test "x$U" != "x"; then
   { echo "configure: error: Compiler not ANSI compliant" 1>&2; exit 1; }
 fi
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1498: checking how to run the C preprocessor" >&5
+echo "configure:1506: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1509,13 +1517,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1513 "configure"
+#line 1521 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1526,13 +1534,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1530 "configure"
+#line 1538 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1536: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1543,13 +1551,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1547 "configure"
+#line 1555 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1574,7 +1582,7 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1578: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1586: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1612,7 +1620,7 @@ fi
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1616: checking for a BSD compatible install" >&5
+echo "configure:1624: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1667,7 +1675,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1671: checking for $ac_word" >&5
+echo "configure:1679: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1695,7 +1703,7 @@ else
 fi
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1699: checking build system type" >&5
+echo "configure:1707: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1721,7 +1729,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1725: checking for $ac_word" >&5
+echo "configure:1733: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1753,7 +1761,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1757: checking for $ac_word" >&5
+echo "configure:1765: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1787,21 +1795,21 @@ fi
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1791: checking for inline" >&5
+echo "configure:1799: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 1798 "configure"
+#line 1806 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:1805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -1827,12 +1835,12 @@ EOF
 esac
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1831: checking for working const" >&5
+echo "configure:1839: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1836 "configure"
+#line 1844 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1881,7 +1889,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:1885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1905,7 +1913,7 @@ fi
 # Extract the first word of "dbx", so it can be a program name with args.
 set dummy dbx; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1909: checking for $ac_word" >&5
+echo "configure:1917: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_DBX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1941,7 +1949,7 @@ fi
 # Extract the first word of "gdb", so it can be a program name with args.
 set dummy gdb; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1945: checking for $ac_word" >&5
+echo "configure:1953: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GDB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1977,7 +1985,7 @@ fi
 # Extract the first word of "sdb", so it can be a program name with args.
 set dummy sdb; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1981: checking for $ac_word" >&5
+echo "configure:1989: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2055,7 +2063,7 @@ ac_aux_path_sendmail=/usr/sbin:/usr/lib
 # Extract the first word of "sendmail", so it can be a program name with args.
 set dummy sendmail; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2059: checking for $ac_word" >&5
+echo "configure:2067: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SENDMAIL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2115,7 +2123,7 @@ fi
 EOF
 
                 PGPAUX_TARGET="pgpring pgpewrap"
-                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o"
+                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o crypt-mod-pgp-classic.o"
         fi
 
        # Check whether --enable-smime or --disable-smime was given.
@@ -2133,7 +2141,7 @@ fi
 #define CRYPT_BACKEND_CLASSIC_SMIME 1
 EOF
 
-               MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o "
+               MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o crypt-mod-smime-classic.o"
                SMIMEAUX_TARGET="smime_keys"
        fi
   
@@ -2173,7 +2181,7 @@ EOF
 # Extract the first word of "ispell", so it can be a program name with args.
 set dummy ispell; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2177: checking for $ac_word" >&5
+echo "configure:2185: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ISPELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2217,7 +2225,7 @@ fi
 if test "${with_slang+set}" = set; then
   withval="$with_slang"
   echo $ac_n "checking if this is a BSD system""... $ac_c" 1>&6
-echo "configure:2221: checking if this is a BSD system" >&5
+echo "configure:2229: checking if this is a BSD system" >&5
 if eval "test \"`echo '$''{'mutt_cv_bsdish'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2225,7 +2233,7 @@ else
   mutt_cv_bsdish=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2229 "configure"
+#line 2237 "configure"
 #include "confdefs.h"
 #include <sys/param.h>
 
@@ -2238,7 +2246,7 @@ main ()
 #endif
 }
 EOF
-if { (eval echo configure:2242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_bsdish=yes
 else
@@ -2255,7 +2263,7 @@ fi
 echo "$ac_t""$mutt_cv_bsdish" 1>&6
 
         echo $ac_n "checking for S-Lang""... $ac_c" 1>&6
-echo "configure:2259: checking for S-Lang" >&5
+echo "configure:2267: checking for S-Lang" >&5
         if test $withval = yes; then
                 if test -d $srcdir/../slang; then
                         mutt_cv_slang=$srcdir/../slang/src
@@ -2287,7 +2295,7 @@ echo "configure:2259: checking for S-Lang" >&5
         echo "$ac_t""$mutt_cv_slang" 1>&6
         if test $mutt_cv_bsdish = yes; then
                 echo $ac_n "checking for main in -ltermlib""... $ac_c" 1>&6
-echo "configure:2291: checking for main in -ltermlib" >&5
+echo "configure:2299: checking for main in -ltermlib" >&5
 ac_lib_var=`echo termlib'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2295,14 +2303,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermlib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2299 "configure"
+#line 2307 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2342,7 +2350,7 @@ EOF
 
         
         echo $ac_n "checking for SLtt_get_terminfo in -lslang""... $ac_c" 1>&6
-echo "configure:2346: checking for SLtt_get_terminfo in -lslang" >&5
+echo "configure:2354: checking for SLtt_get_terminfo in -lslang" >&5
 ac_lib_var=`echo slang'_'SLtt_get_terminfo | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2350,7 +2358,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lslang -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2354 "configure"
+#line 2362 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2361,7 +2369,7 @@ int main() {
 SLtt_get_terminfo()
 ; return 0; }
 EOF
-if { (eval echo configure:2365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2400,12 +2408,12 @@ fi
 
 
        echo $ac_n "checking for initscr""... $ac_c" 1>&6
-echo "configure:2404: checking for initscr" >&5
+echo "configure:2412: checking for initscr" >&5
 if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2409 "configure"
+#line 2417 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char initscr(); below.  */
@@ -2428,7 +2436,7 @@ initscr();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_initscr=yes"
 else
@@ -2450,7 +2458,7 @@ else
        for lib in ncurses ncursesw
        do
                echo $ac_n "checking for waddnwstr in -l$lib""... $ac_c" 1>&6
-echo "configure:2454: checking for waddnwstr in -l$lib" >&5
+echo "configure:2462: checking for waddnwstr in -l$lib" >&5
 ac_lib_var=`echo $lib'_'waddnwstr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2458,7 +2466,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2462 "configure"
+#line 2470 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2469,7 +2477,7 @@ int main() {
 waddnwstr()
 ; return 0; }
 EOF
-if { (eval echo configure:2473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2491,7 +2499,7 @@ fi
 
        done
         echo $ac_n "checking for initscr in -l$cf_ncurses""... $ac_c" 1>&6
-echo "configure:2495: checking for initscr in -l$cf_ncurses" >&5
+echo "configure:2503: checking for initscr in -l$cf_ncurses" >&5
 ac_lib_var=`echo $cf_ncurses'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2499,7 +2507,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_ncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2503 "configure"
+#line 2511 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2510,7 +2518,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:2514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2535,17 +2543,17 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2539: checking for $ac_hdr" >&5
+echo "configure:2547: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2544 "configure"
+#line 2552 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2576,17 +2584,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2580: checking for $ac_hdr" >&5
+echo "configure:2588: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2585 "configure"
+#line 2593 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2617,12 +2625,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for initscr""... $ac_c" 1>&6
-echo "configure:2621: checking for initscr" >&5
+echo "configure:2629: checking for initscr" >&5
 if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2626 "configure"
+#line 2634 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char initscr(); below.  */
@@ -2645,7 +2653,7 @@ initscr();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_initscr=yes"
 else
@@ -2666,7 +2674,7 @@ else
 case $host_os in #(vi
 freebsd*) #(vi
        echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
-echo "configure:2670: checking for tgoto in -lmytinfo" >&5
+echo "configure:2678: checking for tgoto in -lmytinfo" >&5
 ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2674,7 +2682,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmytinfo  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2678 "configure"
+#line 2686 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2685,7 +2693,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:2689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2708,7 +2716,7 @@ fi
        ;;
 hpux10.*|hpux11.*)
        echo $ac_n "checking for initscr in -lcur_colr""... $ac_c" 1>&6
-echo "configure:2712: checking for initscr in -lcur_colr" >&5
+echo "configure:2720: checking for initscr in -lcur_colr" >&5
 ac_lib_var=`echo cur_colr'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2716,7 +2724,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcur_colr  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2720 "configure"
+#line 2728 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2727,7 +2735,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:2731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2751,7 +2759,7 @@ else
   echo "$ac_t""no" 1>&6
 
        echo $ac_n "checking for initscr in -lHcurses""... $ac_c" 1>&6
-echo "configure:2755: checking for initscr in -lHcurses" >&5
+echo "configure:2763: checking for initscr in -lHcurses" >&5
 ac_lib_var=`echo Hcurses'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2759,7 +2767,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lHcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2763 "configure"
+#line 2771 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2770,7 +2778,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2819,12 +2827,12 @@ if test ".$ac_cv_func_initscr" != .yes ; then
        # Check for library containing tgoto.  Do this before curses library
        # because it may be needed to link the test-case for initscr.
        echo $ac_n "checking for tgoto""... $ac_c" 1>&6
-echo "configure:2823: checking for tgoto" >&5
+echo "configure:2831: checking for tgoto" >&5
 if eval "test \"`echo '$''{'ac_cv_func_tgoto'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2828 "configure"
+#line 2836 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char tgoto(); below.  */
@@ -2847,7 +2855,7 @@ tgoto();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_tgoto=yes"
 else
@@ -2868,7 +2876,7 @@ else
                for cf_term_lib in termcap termlib unknown
                do
                        echo $ac_n "checking for tgoto in -l$cf_term_lib""... $ac_c" 1>&6
-echo "configure:2872: checking for tgoto in -l$cf_term_lib" >&5
+echo "configure:2880: checking for tgoto in -l$cf_term_lib" >&5
 ac_lib_var=`echo $cf_term_lib'_'tgoto | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2876,7 +2884,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_term_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2880 "configure"
+#line 2888 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2887,7 +2895,7 @@ int main() {
 tgoto()
 ; return 0; }
 EOF
-if { (eval echo configure:2891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2917,7 +2925,7 @@ fi
        for cf_curs_lib in cursesX curses ncurses xcurses jcurses unknown
        do
                echo $ac_n "checking for initscr in -l$cf_curs_lib""... $ac_c" 1>&6
-echo "configure:2921: checking for initscr in -l$cf_curs_lib" >&5
+echo "configure:2929: checking for initscr in -l$cf_curs_lib" >&5
 ac_lib_var=`echo $cf_curs_lib'_'initscr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2925,7 +2933,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$cf_curs_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2929 "configure"
+#line 2937 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2936,7 +2944,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:2940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2962,16 +2970,16 @@ fi
        LIBS="-l$cf_curs_lib $cf_save_LIBS"
        if test "$cf_term_lib" = unknown ; then
                echo $ac_n "checking if we can link with $cf_curs_lib library""... $ac_c" 1>&6
-echo "configure:2966: checking if we can link with $cf_curs_lib library" >&5
+echo "configure:2974: checking if we can link with $cf_curs_lib library" >&5
                cat > conftest.$ac_ext <<EOF
-#line 2968 "configure"
+#line 2976 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:2975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -2985,16 +2993,16 @@ rm -f conftest*
                test $cf_result = no && { echo "configure: error: Cannot link curses library" 1>&2; exit 1; }
        elif test "$cf_term_lib" != predefined ; then
                echo $ac_n "checking if we need both $cf_curs_lib and $cf_term_lib libraries""... $ac_c" 1>&6
-echo "configure:2989: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
+echo "configure:2997: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
                cat > conftest.$ac_ext <<EOF
-#line 2991 "configure"
+#line 2999 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr(); tgoto((char *)0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:2998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_result=no
 else
@@ -3004,14 +3012,14 @@ else
   
                        LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
                        cat > conftest.$ac_ext <<EOF
-#line 3008 "configure"
+#line 3016 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:3015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_result=yes
 else
@@ -3043,12 +3051,12 @@ fi
 do
 
 echo $ac_n "checking for $ac_func declaration""... $ac_c" 1>&6
-echo "configure:3047: checking for $ac_func declaration" >&5
+echo "configure:3055: checking for $ac_func declaration" >&5
 if eval "test \"`echo '$''{'ac_cv_func_decl_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3052 "configure"
+#line 3060 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
@@ -3057,11 +3065,11 @@ extern  int     ${ac_func}();
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 3065 "configure"
+#line 3073 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header-curses.h}>
 int main() {
@@ -3070,7 +3078,7 @@ int       (*p)() = ${ac_func};
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
 eval "ac_cv_func_decl_$ac_func=yes"
@@ -3122,12 +3130,12 @@ fi
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3126: checking for ANSI C header files" >&5
+echo "configure:3134: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3131 "configure"
+#line 3139 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3135,7 +3143,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3147: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3152,7 +3160,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3156 "configure"
+#line 3164 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3170,7 +3178,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3174 "configure"
+#line 3182 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3191,7 +3199,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3195 "configure"
+#line 3203 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3202,7 +3210,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -3230,17 +3238,17 @@ for ac_hdr in stdarg.h sys/ioctl.h ioctl.h sysexits.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3234: checking for $ac_hdr" >&5
+echo "configure:3242: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3239 "configure"
+#line 3247 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3270,17 +3278,17 @@ for ac_hdr in sys/time.h sys/resource.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3274: checking for $ac_hdr" >&5
+echo "configure:3282: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3279 "configure"
+#line 3287 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3292: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3310,17 +3318,17 @@ for ac_hdr in unix.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3314: checking for $ac_hdr" >&5
+echo "configure:3322: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3319 "configure"
+#line 3327 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3350,12 +3358,12 @@ done
 for ac_func in setrlimit getsid isctype
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3354: checking for $ac_func" >&5
+echo "configure:3362: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3359 "configure"
+#line 3367 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3378,7 +3386,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3404,12 +3412,12 @@ done
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3408: checking return type of signal handlers" >&5
+echo "configure:3416: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3413 "configure"
+#line 3421 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3426,7 +3434,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3446,9 +3454,9 @@ EOF
 
 
 echo $ac_n "checking for sig_atomic_t in signal.h""... $ac_c" 1>&6
-echo "configure:3450: checking for sig_atomic_t in signal.h" >&5
+echo "configure:3458: checking for sig_atomic_t in signal.h" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3452 "configure"
+#line 3460 "configure"
 #include "confdefs.h"
 #include <signal.h>
 EOF
@@ -3458,7 +3466,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   
     ac_cv_type_sig_atomic_t=yes;
     cat > conftest.$ac_ext <<EOF
-#line 3462 "configure"
+#line 3470 "configure"
 #include "confdefs.h"
 #include <signal.h>
 EOF
@@ -3484,12 +3492,12 @@ else
   
     echo "$ac_t""no" 1>&6
     echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6
-echo "configure:3488: checking for sig_atomic_t" >&5
+echo "configure:3496: checking for sig_atomic_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_sig_atomic_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3493 "configure"
+#line 3501 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3535,12 +3543,12 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3539: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3547: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3544 "configure"
+#line 3552 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3552,7 +3560,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3574,14 +3582,14 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3578: checking whether byte ordering is bigendian" >&5
+echo "configure:3586: checking whether byte ordering is bigendian" >&5
 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 3585 "configure"
+#line 3593 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3592,11 +3600,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3596: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 3600 "configure"
+#line 3608 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -3607,7 +3615,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:3611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -3627,7 +3635,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3631 "configure"
+#line 3639 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -3640,7 +3648,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:3644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
@@ -3667,17 +3675,17 @@ for ac_hdr in inttypes.h stdint.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3671: checking for $ac_hdr" >&5
+echo "configure:3679: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3676 "configure"
+#line 3684 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3704,9 +3712,9 @@ fi
 done
 
 echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
-echo "configure:3708: checking for uint32_t" >&5
+echo "configure:3716: checking for uint32_t" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3710 "configure"
+#line 3718 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3725,7 +3733,7 @@ if (sizeof (uint32_t))
 
 ; return 0; }
 EOF
-if { (eval echo configure:3729: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
     cat >> confdefs.h <<\EOF
@@ -3743,7 +3751,7 @@ else
 fi
 rm -f conftest*
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:3747: checking size of int" >&5
+echo "configure:3755: checking size of int" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3751,7 +3759,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3755 "configure"
+#line 3763 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -3763,7 +3771,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:3767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -3783,7 +3791,7 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:3787: checking size of long" >&5
+echo "configure:3795: checking size of long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3791,7 +3799,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 3795 "configure"
+#line 3803 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <sys/types.h>
@@ -3803,7 +3811,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:3807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -3824,12 +3832,12 @@ EOF
 
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3828: checking for pid_t" >&5
+echo "configure:3836: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3833 "configure"
+#line 3841 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3860,12 +3868,12 @@ fi
 for ac_func in fgetpos memmove setegid srand48 strerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3864: checking for $ac_func" >&5
+echo "configure:3872: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3869 "configure"
+#line 3877 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3888,7 +3896,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3916,12 +3924,12 @@ done
 for ac_func in strcasecmp strdup
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3920: checking for $ac_func" >&5
+echo "configure:3928: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3925 "configure"
+#line 3933 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3944,7 +3952,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3972,12 +3980,12 @@ done
 
 
 echo $ac_n "checking for getopt""... $ac_c" 1>&6
-echo "configure:3976: checking for getopt" >&5
+echo "configure:3984: checking for getopt" >&5
 if eval "test \"`echo '$''{'ac_cv_func_getopt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3981 "configure"
+#line 3989 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char getopt(); below.  */
@@ -4000,7 +4008,7 @@ getopt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_getopt=yes"
 else
@@ -4024,17 +4032,17 @@ if test $ac_cv_func_getopt = yes; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4028: checking for $ac_hdr" >&5
+echo "configure:4036: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4033 "configure"
+#line 4041 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4067,12 +4075,12 @@ SNPRINTFOBJS=""
 for ac_func in snprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4071: checking for $ac_func" >&5
+echo "configure:4079: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4076 "configure"
+#line 4084 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4095,7 +4103,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4123,12 +4131,12 @@ done
 for ac_func in vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4127: checking for $ac_func" >&5
+echo "configure:4135: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4132 "configure"
+#line 4140 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4151,7 +4159,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4183,12 +4191,12 @@ fi
 for ac_func in ftruncate
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4187: checking for $ac_func" >&5
+echo "configure:4195: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4192 "configure"
+#line 4200 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4211,7 +4219,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4233,7 +4241,7 @@ EOF
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for chsize in -lx""... $ac_c" 1>&6
-echo "configure:4237: checking for chsize in -lx" >&5
+echo "configure:4245: checking for chsize in -lx" >&5
 ac_lib_var=`echo x'_'chsize | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4241,7 +4249,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4245 "configure"
+#line 4253 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4252,7 +4260,7 @@ int main() {
 chsize()
 ; return 0; }
 EOF
-if { (eval echo configure:4256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4286,12 +4294,12 @@ done
 for ac_func in strftime
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4290: checking for $ac_func" >&5
+echo "configure:4298: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4295 "configure"
+#line 4303 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4314,7 +4322,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4336,7 +4344,7 @@ EOF
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:4340: checking for strftime in -lintl" >&5
+echo "configure:4348: checking for strftime in -lintl" >&5
 ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4344,7 +4352,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4348 "configure"
+#line 4356 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4355,7 +4363,7 @@ int main() {
 strftime()
 ; return 0; }
 EOF
-if { (eval echo configure:4359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4389,12 +4397,12 @@ done
 for ac_func in fchdir
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4393: checking for $ac_func" >&5
+echo "configure:4401: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4398 "configure"
+#line 4406 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4417,7 +4425,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4451,12 +4459,12 @@ else
   for ac_func in regcomp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4455: checking for $ac_func" >&5
+echo "configure:4463: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4460 "configure"
+#line 4468 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4479,7 +4487,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4509,7 +4517,7 @@ fi
 
 if test $mutt_cv_regex = no ; then
 echo $ac_n "checking whether your system's regexp library is completely broken""... $ac_c" 1>&6
-echo "configure:4513: checking whether your system's regexp library is completely broken" >&5
+echo "configure:4521: checking whether your system's regexp library is completely broken" >&5
 if eval "test \"`echo '$''{'mutt_cv_regex_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4517,14 +4525,14 @@ else
   mutt_cv_regex_broken=yes
 else
   cat > conftest.$ac_ext <<EOF
-#line 4521 "configure"
+#line 4529 "configure"
 #include "confdefs.h"
 
 #include <unistd.h>
 #include <regex.h>
 main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }
 EOF
-if { (eval echo configure:4528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_regex_broken=no
 else
@@ -4584,7 +4592,7 @@ if test "${with_mailpath+set}" = set; then
   mutt_cv_mailpath=$withval
 else
    echo $ac_n "checking where new mail is stored""... $ac_c" 1>&6
-echo "configure:4588: checking where new mail is stored" >&5
+echo "configure:4596: checking where new mail is stored" >&5
 if eval "test \"`echo '$''{'mutt_cv_mailpath'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4613,7 +4621,7 @@ EOF
 
 
         echo $ac_n "checking if $mutt_cv_mailpath is world writable""... $ac_c" 1>&6
-echo "configure:4617: checking if $mutt_cv_mailpath is world writable" >&5
+echo "configure:4625: checking if $mutt_cv_mailpath is world writable" >&5
 if eval "test \"`echo '$''{'mutt_cv_worldwrite'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4621,7 +4629,7 @@ else
   mutt_cv_worldwrite=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 4625 "configure"
+#line 4633 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -4635,7 +4643,7 @@ int main (int argc, char **argv)
         exit (1);
 }
 EOF
-if { (eval echo configure:4639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_worldwrite=yes
 else
@@ -4660,7 +4668,7 @@ EOF
         else
 
                 echo $ac_n "checking if $mutt_cv_mailpath is group writable""... $ac_c" 1>&6
-echo "configure:4664: checking if $mutt_cv_mailpath is group writable" >&5
+echo "configure:4672: checking if $mutt_cv_mailpath is group writable" >&5
 if eval "test \"`echo '$''{'mutt_cv_groupwrite'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4668,7 +4676,7 @@ else
   mutt_cv_groupwrite=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 4672 "configure"
+#line 4680 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -4682,7 +4690,7 @@ int main (int argc, char **argv)
         exit (1);
 }
 EOF
-if { (eval echo configure:4686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_groupwrite=yes
 else
@@ -4735,7 +4743,7 @@ fi
 
 
 echo $ac_n "checking where to put the documentation""... $ac_c" 1>&6
-echo "configure:4739: checking where to put the documentation" >&5
+echo "configure:4747: checking where to put the documentation" >&5
 # Check whether --with-docdir or --without-docdir was given.
 if test "${with_docdir+set}" = set; then
   withval="$with_docdir"
@@ -4837,9 +4845,9 @@ fi
 if test "$need_socket" = "yes"
 then
         echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:4841: checking for socklen_t" >&5
+echo "configure:4849: checking for socklen_t" >&5
         cat > conftest.$ac_ext <<EOF
-#line 4843 "configure"
+#line 4851 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
 EOF
@@ -4858,12 +4866,12 @@ fi
 rm -f conftest*
 
         echo $ac_n "checking for gethostent""... $ac_c" 1>&6
-echo "configure:4862: checking for gethostent" >&5
+echo "configure:4870: checking for gethostent" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gethostent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4867 "configure"
+#line 4875 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostent(); below.  */
@@ -4886,7 +4894,7 @@ gethostent();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostent=yes"
 else
@@ -4904,7 +4912,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostent`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for gethostent in -lnsl""... $ac_c" 1>&6
-echo "configure:4908: checking for gethostent in -lnsl" >&5
+echo "configure:4916: checking for gethostent in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4912,7 +4920,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4916 "configure"
+#line 4924 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4923,7 +4931,7 @@ int main() {
 gethostent()
 ; return 0; }
 EOF
-if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4953,12 +4961,12 @@ fi
 fi
 
         echo $ac_n "checking for setsockopt""... $ac_c" 1>&6
-echo "configure:4957: checking for setsockopt" >&5
+echo "configure:4965: checking for setsockopt" >&5
 if eval "test \"`echo '$''{'ac_cv_func_setsockopt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4962 "configure"
+#line 4970 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char setsockopt(); below.  */
@@ -4981,7 +4989,7 @@ setsockopt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_setsockopt=yes"
 else
@@ -4999,7 +5007,7 @@ if eval "test \"`echo '$ac_cv_func_'setsockopt`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for setsockopt in -lsocket""... $ac_c" 1>&6
-echo "configure:5003: checking for setsockopt in -lsocket" >&5
+echo "configure:5011: checking for setsockopt in -lsocket" >&5
 ac_lib_var=`echo socket'_'setsockopt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5007,7 +5015,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5011 "configure"
+#line 5019 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5018,7 +5026,7 @@ int main() {
 setsockopt()
 ; return 0; }
 EOF
-if { (eval echo configure:5022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5050,12 +5058,12 @@ fi
         for ac_func in getaddrinfo
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5054: checking for $ac_func" >&5
+echo "configure:5062: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5059 "configure"
+#line 5067 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5078,7 +5086,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5137,7 +5145,7 @@ then
   # Extract the first word of "krb5-config", so it can be a program name with args.
 set dummy krb5-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5141: checking for $ac_word" >&5
+echo "configure:5149: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_KRB5CFGPATH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5189,7 +5197,7 @@ fi
     fi
 
         echo $ac_n "checking for gss_init_sec_context in -lgssapi_krb5""... $ac_c" 1>&6
-echo "configure:5193: checking for gss_init_sec_context in -lgssapi_krb5" >&5
+echo "configure:5201: checking for gss_init_sec_context in -lgssapi_krb5" >&5
 ac_lib_var=`echo gssapi_krb5'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5197,7 +5205,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5201 "configure"
+#line 5209 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5208,7 +5216,7 @@ int main() {
 gss_init_sec_context()
 ; return 0; }
 EOF
-if { (eval echo configure:5212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5235,7 +5243,7 @@ fi
         if test "$GSSAPI_IMPL" = "none"
     then
       echo $ac_n "checking for gss_init_sec_context in -lgssapi""... $ac_c" 1>&6
-echo "configure:5239: checking for gss_init_sec_context in -lgssapi" >&5
+echo "configure:5247: checking for gss_init_sec_context in -lgssapi" >&5
 ac_lib_var=`echo gssapi'_'gss_init_sec_context | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5243,7 +5251,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgssapi -lkrb5 -ldes -lasn1 -lroken -lcrypt -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5247 "configure"
+#line 5255 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5254,7 +5262,7 @@ int main() {
 gss_init_sec_context()
 ; return 0; }
 EOF
-if { (eval echo configure:5258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5283,7 +5291,7 @@ fi
                             if test "$GSSAPI_IMPL" = "none"
     then
       echo $ac_n "checking for g_order_init in -lgssapi_krb5""... $ac_c" 1>&6
-echo "configure:5287: checking for g_order_init in -lgssapi_krb5" >&5
+echo "configure:5295: checking for g_order_init in -lgssapi_krb5" >&5
 ac_lib_var=`echo gssapi_krb5'_'g_order_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5291,7 +5299,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgssapi_krb5 -lkrb5 -lcrypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5295 "configure"
+#line 5303 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5302,7 +5310,7 @@ int main() {
 g_order_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5333,7 +5341,7 @@ fi
   LIBS="$saved_LIBS"
 
     echo $ac_n "checking GSSAPI implementation""... $ac_c" 1>&6
-echo "configure:5337: checking GSSAPI implementation" >&5
+echo "configure:5345: checking GSSAPI implementation" >&5
     echo "$ac_t""$GSSAPI_IMPL" 1>&6
     if test "$GSSAPI_IMPL" = "none"
     then
@@ -5432,7 +5440,7 @@ if test "${with_ssl+set}" = set; then
           saved_LIBS="$LIBS"
 
           echo $ac_n "checking for X509_new in -lcrypto""... $ac_c" 1>&6
-echo "configure:5436: checking for X509_new in -lcrypto" >&5
+echo "configure:5444: checking for X509_new in -lcrypto" >&5
 ac_lib_var=`echo crypto'_'X509_new | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5440,7 +5448,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypto  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5444 "configure"
+#line 5452 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5451,7 +5459,7 @@ int main() {
 X509_new()
 ; return 0; }
 EOF
-if { (eval echo configure:5455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5480,7 +5488,7 @@ else
 fi
 
           echo $ac_n "checking for SSL_new in -lssl""... $ac_c" 1>&6
-echo "configure:5484: checking for SSL_new in -lssl" >&5
+echo "configure:5492: checking for SSL_new in -lssl" >&5
 ac_lib_var=`echo ssl'_'SSL_new | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5488,7 +5496,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5492 "configure"
+#line 5500 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5499,7 +5507,7 @@ int main() {
 SSL_new()
 ; return 0; }
 EOF
-if { (eval echo configure:5503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5531,12 +5539,12 @@ fi
           for ac_func in RAND_status RAND_egd
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5535: checking for $ac_func" >&5
+echo "configure:5543: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5540 "configure"
+#line 5548 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5559,7 +5567,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5627,7 +5635,7 @@ if test "${with_gnutls+set}" = set; then
 #saved_LIBS="$LIBS"
 
       echo $ac_n "checking for gnutls_init in -lgnutls""... $ac_c" 1>&6
-echo "configure:5631: checking for gnutls_init in -lgnutls" >&5
+echo "configure:5639: checking for gnutls_init in -lgnutls" >&5
 ac_lib_var=`echo gnutls'_'gnutls_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5635,7 +5643,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgnutls  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5639 "configure"
+#line 5647 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5646,7 +5654,7 @@ int main() {
 gnutls_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5747,7 +5755,7 @@ if test "${with_sasl+set}" = set; then
           saved_LIBS="$LIBS"
 
           echo $ac_n "checking for sasl_client_init in -lsasl""... $ac_c" 1>&6
-echo "configure:5751: checking for sasl_client_init in -lsasl" >&5
+echo "configure:5759: checking for sasl_client_init in -lsasl" >&5
 ac_lib_var=`echo sasl'_'sasl_client_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5755,7 +5763,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5759 "configure"
+#line 5767 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5766,7 +5774,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5837,7 +5845,7 @@ if test "${with_sasl2+set}" = set; then
           saved_LIBS="$LIBS"
 
           echo $ac_n "checking for sasl_client_init in -lsasl2""... $ac_c" 1>&6
-echo "configure:5841: checking for sasl_client_init in -lsasl2" >&5
+echo "configure:5849: checking for sasl_client_init in -lsasl2" >&5
 ac_lib_var=`echo sasl2'_'sasl_client_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5845,7 +5853,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl2  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5849 "configure"
+#line 5857 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5856,7 +5864,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:5860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5928,7 +5936,7 @@ fi
 
 if test "x$with_idn" != "xno"; then
    echo $ac_n "checking for stringprep_check_version in -lidn""... $ac_c" 1>&6
-echo "configure:5932: checking for stringprep_check_version in -lidn" >&5
+echo "configure:5940: checking for stringprep_check_version in -lidn" >&5
 ac_lib_var=`echo idn'_'stringprep_check_version | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5936,7 +5944,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lidn  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5940 "configure"
+#line 5948 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5947,7 +5955,7 @@ int main() {
 stringprep_check_version()
 ; return 0; }
 EOF
-if { (eval echo configure:5951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5977,12 +5985,12 @@ fi
    for ac_func in idna_to_unicode_utf8_from_utf8 idna_to_unicode_8z8z
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5981: checking for $ac_func" >&5
+echo "configure:5989: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5986 "configure"
+#line 5994 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6005,7 +6013,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6032,12 +6040,12 @@ done
    for ac_func in idna_to_ascii_from_utf8 idna_to_ascii_8z
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6036: checking for $ac_func" >&5
+echo "configure:6044: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6041 "configure"
+#line 6049 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6060,7 +6068,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6087,12 +6095,12 @@ done
    for ac_func in idna_to_ascii_lz idna_to_ascii_from_locale
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6091: checking for $ac_func" >&5
+echo "configure:6099: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6096 "configure"
+#line 6104 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6115,7 +6123,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6182,6 +6190,21 @@ EOF
 
 fi
 
+mutt_cv_inodesort=yes
+# Check whether --enable-inodesort or --disable-inodesort was given.
+if test "${enable_inodesort+set}" = set; then
+  enableval="$enable_inodesort"
+  if test $enableval = no ; then mutt_cv_inodesort=no; fi
+fi
+
+
+if test $mutt_cv_inodesort = yes; then
+       cat >> confdefs.h <<\EOF
+#define USE_INODESORT 1
+EOF
+
+fi
+
 mutt_cv_warnings=yes
 # Check whether --enable-warnings or --disable-warnings was given.
 if test "${enable_warnings+set}" = set; then
@@ -6315,21 +6338,21 @@ fi
         CPPFLAGS="$OLDCPPFLAGS"
         LIBS="$OLDLIBS -lgdbm";
         echo $ac_n "checking for gdbm_open""... $ac_c" 1>&6
-echo "configure:6319: checking for gdbm_open" >&5
+echo "configure:6342: checking for gdbm_open" >&5
 if eval "test \"`echo '$''{'ac_cv_gdbmopen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
             ac_cv_gdbmopen=no
             cat > conftest.$ac_ext <<EOF
-#line 6326 "configure"
+#line 6349 "configure"
 #include "confdefs.h"
 #include <gdbm.h>
 int main() {
 gdbm_open(0,0,0,0,0);
 ; return 0; }
 EOF
-if { (eval echo configure:6333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_gdbmopen=yes
 else
@@ -6360,7 +6383,7 @@ fi
         done
         BDB_VERSIONS="db-4 db4 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db ''"
         echo $ac_n "checking for BerkeleyDB > 4.0""... $ac_c" 1>&6
-echo "configure:6364: checking for BerkeleyDB > 4.0" >&5
+echo "configure:6387: checking for BerkeleyDB > 4.0" >&5
         for d in $bdbpfx; do
             BDB_INCLUDE_DIR=""
             BDB_LIB_DIR=""
@@ -6373,7 +6396,7 @@ echo "configure:6364: checking for BerkeleyDB > 4.0" >&5
                             CPPFLAGS="-I$BDB_INCLUDE_DIR $OLDCPPFLAGS"
                             LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$l"
                             cat > conftest.$ac_ext <<EOF
-#line 6377 "configure"
+#line 6400 "configure"
 #include "confdefs.h"
 
                                 #include <stdlib.h>
@@ -6386,7 +6409,7 @@ int main() {
                             
 ; return 0; }
 EOF
-if { (eval echo configure:6390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   
                                 ac_cv_dbcreate=yes
 fi
 
 
-if test "$need_md5" = "yes"
-then
-        MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS md5c.o"
+# Check whether --enable-hcache or --disable-hcache was given.
+if test "${enable_hcache+set}" = set; then
+  enableval="$enable_hcache"
+  if test x$enableval = xyes; then
+    cat >> confdefs.h <<\EOF
+#define USE_HCACHE 1
+EOF
+
+
+    OLDCPPFLAGS="$CPPFLAGS"
+    OLDLIBS="$LIBS"
+
+    need_md5="yes"
+    ac_prefer_gdbm=yes
+    # Check whether --with-gdbm or --without-gdbm was given.
+if test "${with_gdbm+set}" = set; then
+  withval="$with_gdbm"
+  ac_prefer_gdbm=$withval
 fi
 
+    if test x$ac_prefer_gdbm != xno; then
+        CPPFLAGS="$OLDCPPFLAGS"
+        LIBS="$OLDLIBS -lgdbm";
+        echo $ac_n "checking for gdbm_open""... $ac_c" 1>&6
+echo "configure:6484: checking for gdbm_open" >&5
+if eval "test \"`echo '$''{'ac_cv_gdbmopen'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+            ac_cv_gdbmopen=no
+            cat > conftest.$ac_ext <<EOF
+#line 6491 "configure"
+#include "confdefs.h"
+#include <gdbm.h>
+int main() {
+gdbm_open(0,0,0,0,0);
+; return 0; }
+EOF
+if { (eval echo configure:6498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_gdbmopen=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+        
+fi
+
+echo "$ac_t""$ac_cv_gdbmopen" 1>&6
+    fi
+
+    ac_bdb_prefix=yes
+    # Check whether --with-bdb or --without-bdb was given.
+if test "${with_bdb+set}" = set; then
+  withval="$with_bdb"
+  ac_bdb_prefix=$withval
+fi
+
+    if test x$ac_bdb_prefix != xno -a x$ac_cv_gdbmopen != xyes; then
+        test x$ac_bdb_prefix = xyes && ac_bdb_prefix="$mutt_cv_prefix /opt/csw/bdb4 /opt /usr/local /usr"
+        for d in $ac_bdb_prefix; do
+            bdbpfx="$bdbpfx $d"
+            for v in BerkeleyDB.4.3 BerkeleyDB.4.2 BerkeleyDB.4.1; do
+                bdbpfx="$bdbpfx $d/$v"
+            done
+        done
+        BDB_VERSIONS="db-4 db4 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db ''"
+        echo $ac_n "checking for BerkeleyDB > 4.0""... $ac_c" 1>&6
+echo "configure:6529: checking for BerkeleyDB > 4.0" >&5
+        for d in $bdbpfx; do
+            BDB_INCLUDE_DIR=""
+            BDB_LIB_DIR=""
+            for v in / $BDB_VERSIONS; do
+                if test -r "$d/include/$v/db.h"; then
+                    BDB_INCLUDE_DIR="$d/include/$v"
+                    if test -d "$d/lib/$v"; then
+                        BDB_LIB_DIR="$d/lib/$v"
+                        for l in `echo $BDB_VERSIONS`; do
+                            CPPFLAGS="-I$BDB_INCLUDE_DIR $OLDCPPFLAGS"
+                            LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$l"
+                            cat > conftest.$ac_ext <<EOF
+#line 6542 "configure"
+#include "confdefs.h"
+
+                                #include <stdlib.h>
+                                #include <db.h>
+                            
+int main() {
+
+                                DB *db = NULL;
+                                db->open(db,NULL,NULL,NULL,0,0,0);
+                            
+; return 0; }
+EOF
+if { (eval echo configure:6555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  
+                                ac_cv_dbcreate=yes
+                                BDB_LIB="$l"
+                                break
+                            
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+                        done
+                        test x$ac_dbcreate = xyes && break
+                    fi
+                fi
+            done
+            test x$BDB_LIB != x && break
+        done
+        if test x$ac_cv_dbcreate = xyes; then
+            echo "$ac_t""yes" 1>&6
+        else
+            echo "$ac_t""no" 1>&6
+        fi
+    fi
+
+    if test x$ac_cv_gdbmopen = xyes; then
+        CPPFLAGS="$OLDCPPFLAGS"
+        LIBS="$OLDLIBS -lgdbm";
+        cat >> confdefs.h <<\EOF
+#define HAVE_GDBM 1
+EOF
+
+    elif test x$ac_cv_dbcreate = xyes; then
+        CPPFLAGS="-I$BDB_INCLUDE_DIR $OLDCPPFLAGS"
+        LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB"
+        cat >> confdefs.h <<\EOF
+#define HAVE_DB4 1
+EOF
+
+    else
+        { echo "configure: error: You need Sleepycat DB4 or GDBM for --enable-hcache" 1>&2; exit 1; }
+    fi
+fi
+fi
+
+
 
 
 
@@ -6455,12 +6615,12 @@ fi
 
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:6459: checking for off_t" >&5
+echo "configure:6619: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6464 "configure"
+#line 6624 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6488,12 +6648,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:6492: checking for size_t" >&5
+echo "configure:6652: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6497 "configure"
+#line 6657 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6523,19 +6683,19 @@ fi
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:6527: checking for working alloca.h" >&5
+echo "configure:6687: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6532 "configure"
+#line 6692 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:6539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -6556,12 +6716,12 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:6560: checking for alloca" >&5
+echo "configure:6720: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6565 "configure"
+#line 6725 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -6589,7 +6749,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:6593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -6621,12 +6781,12 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:6625: checking whether alloca needs Cray hooks" >&5
+echo "configure:6785: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6630 "configure"
+#line 6790 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -6651,12 +6811,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6655: checking for $ac_func" >&5
+echo "configure:6815: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6660 "configure"
+#line 6820 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6679,7 +6839,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6706,7 +6866,7 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:6710: checking stack direction for C alloca" >&5
+echo "configure:6870: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6714,7 +6874,7 @@ else
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 6718 "configure"
+#line 6878 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -6733,7 +6893,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:6737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -6758,17 +6918,17 @@ for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6762: checking for $ac_hdr" >&5
+echo "configure:6922: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6767 "configure"
+#line 6927 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6932: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6797,12 +6957,12 @@ done
 for ac_func in getpagesize
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6801: checking for $ac_func" >&5
+echo "configure:6961: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6806 "configure"
+#line 6966 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6825,7 +6985,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6850,7 +7010,7 @@ fi
 done
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6854: checking for working mmap" >&5
+echo "configure:7014: checking for working mmap" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6858,7 +7018,7 @@ else
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 6862 "configure"
+#line 7022 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6998,7 +7158,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:7002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -7022,12 +7182,12 @@ fi
 
 
     echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:7026: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:7186: checking whether we are using the GNU C Library 2.1 or newer" >&5
 if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7031 "configure"
+#line 7191 "configure"
 #include "confdefs.h"
 
 #include <features.h>
@@ -7063,17 +7223,17 @@ stdlib.h string.h unistd.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7067: checking for $ac_hdr" >&5
+echo "configure:7227: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7072 "configure"
+#line 7232 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7237: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7104,12 +7264,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
 strdup strtoul tsearch __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7108: checking for $ac_func" >&5
+echo "configure:7268: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7113 "configure"
+#line 7273 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7132,7 +7292,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7172,7 +7332,7 @@ fi
 
 
   echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:7176: checking for iconv" >&5
+echo "configure:7336: checking for iconv" >&5
 if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7180,7 +7340,7 @@ else
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
     cat > conftest.$ac_ext <<EOF
-#line 7184 "configure"
+#line 7344 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <iconv.h>
@@ -7190,7 +7350,7 @@ iconv_t cd = iconv_open("","");
        iconv_close(cd);
 ; return 0; }
 EOF
-if { (eval echo configure:7194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_func_iconv=yes
 else
@@ -7202,7 +7362,7 @@ rm -f conftest*
       am_save_LIBS="$LIBS"
       LIBS="$LIBS -liconv"
       cat > conftest.$ac_ext <<EOF
-#line 7206 "configure"
+#line 7366 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <iconv.h>
@@ -7212,7 +7372,7 @@ iconv_t cd = iconv_open("","");
          iconv_close(cd);
 ; return 0; }
 EOF
-if { (eval echo configure:7216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_lib_iconv=yes
         am_cv_func_iconv=yes
@@ -7233,13 +7393,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
 EOF
 
     echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:7237: checking for iconv declaration" >&5
+echo "configure:7397: checking for iconv declaration" >&5
     if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
       cat > conftest.$ac_ext <<EOF
-#line 7243 "configure"
+#line 7403 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -7258,7 +7418,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:7262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_proto_iconv_arg1=""
 else
@@ -7287,19 +7447,19 @@ EOF
 
    
   echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:7291: checking for nl_langinfo and CODESET" >&5
+echo "configure:7451: checking for nl_langinfo and CODESET" >&5
 if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7296 "configure"
+#line 7456 "configure"
 #include "confdefs.h"
 #include <langinfo.h>
 int main() {
 char* cs = nl_langinfo(CODESET);
 ; return 0; }
 EOF
-if { (eval echo configure:7303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_langinfo_codeset=yes
 else
@@ -7322,19 +7482,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:7326: checking for LC_MESSAGES" >&5
+echo "configure:7486: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7331 "configure"
+#line 7491 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:7338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -7355,7 +7515,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:7359: checking whether NLS is requested" >&5
+echo "configure:7519: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -7377,7 +7537,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:7381: checking whether included gettext is requested" >&5
+echo "configure:7541: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -7397,17 +7557,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:7401: checking for libintl.h" >&5
+echo "configure:7561: checking for libintl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7406 "configure"
+#line 7566 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7424,12 +7584,12 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:7428: checking for GNU gettext in libc" >&5
+echo "configure:7588: checking for GNU gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7433 "configure"
+#line 7593 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -7438,7 +7598,7 @@ bindtextdomain ("", "");
 return (int) gettext ("") + _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:7442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gnugettext1_libc=yes
 else
@@ -7454,14 +7614,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
 
           if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
             echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:7458: checking for GNU gettext in libintl" >&5
+echo "configure:7618: checking for GNU gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   gt_save_LIBS="$LIBS"
                LIBS="$LIBS -lintl $LIBICONV"
                cat > conftest.$ac_ext <<EOF
-#line 7465 "configure"
+#line 7625 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -7470,7 +7630,7 @@ bindtextdomain ("", "");
 return (int) gettext ("") + _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:7474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gnugettext1_libintl=yes
 else
@@ -7503,12 +7663,12 @@ EOF
             for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7507: checking for $ac_func" >&5
+echo "configure:7667: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7512 "configure"
+#line 7672 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7531,7 +7691,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7560,7 +7720,7 @@ done
                     # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7564: checking for $ac_word" >&5
+echo "configure:7724: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7594,7 +7754,7 @@ fi
             # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7598: checking for $ac_word" >&5
+echo "configure:7758: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7631,7 +7791,7 @@ fi
                     # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7635: checking for $ac_word" >&5
+echo "configure:7795: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7681,7 +7841,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7685: checking for $ac_word" >&5
+echo "configure:7845: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7715,7 +7875,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7719: checking for $ac_word" >&5
+echo "configure:7879: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7751,7 +7911,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7755: checking for $ac_word" >&5
+echo "configure:7915: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7822,7 +7982,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7826: checking for $ac_word" >&5
+echo "configure:7986: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7855,7 +8015,7 @@ done
       ac_verc_fail=yes
     else
             echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:7859: checking version of bison" >&5
+echo "configure:8019: checking version of bison" >&5
       ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
       case $ac_prog_version in
         '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -7902,7 +8062,7 @@ echo "configure:7859: checking version of bison" >&5
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:7906: checking for catalogs to be installed" >&5
+echo "configure:8066: checking for catalogs to be installed" >&5
        NEW_LINGUAS=
        for presentlang in $ALL_LINGUAS; do
          useit=no
@@ -7951,17 +8111,17 @@ for ac_hdr in iconv.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7955: checking for $ac_hdr" >&5
+echo "configure:8115: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7960 "configure"
+#line 8120 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7965: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8125: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7982,9 +8142,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 #define $ac_tr_hdr 1
 EOF
  echo $ac_n "checking whether iconv.h defines iconv_t""... $ac_c" 1>&6
-echo "configure:7986: checking whether iconv.h defines iconv_t" >&5
+echo "configure:8146: checking whether iconv.h defines iconv_t" >&5
          cat > conftest.$ac_ext <<EOF
-#line 7988 "configure"
+#line 8148 "configure"
 #include "confdefs.h"
 #include <iconv.h>
 EOF
@@ -8009,7 +8169,7 @@ done
 
 
 echo $ac_n "checking whether this iconv is good enough""... $ac_c" 1>&6
-echo "configure:8013: checking whether this iconv is good enough" >&5
+echo "configure:8173: checking whether this iconv is good enough" >&5
 if eval "test \"`echo '$''{'mutt_cv_iconv_good'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8019,7 +8179,7 @@ else
   mutt_cv_iconv_good=yes
 else
   cat > conftest.$ac_ext <<EOF
-#line 8023 "configure"
+#line 8183 "configure"
 #include "confdefs.h"
 
 #include <iconv.h>
@@ -8037,7 +8197,7 @@ int main()
 }
                 
 EOF
-if { (eval echo configure:8041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_iconv_good=yes
 else
@@ -8058,7 +8218,7 @@ if test "$mutt_cv_iconv_good" = no; then
 fi
 
 echo $ac_n "checking whether iconv is non-transcribing""... $ac_c" 1>&6
-echo "configure:8062: checking whether iconv is non-transcribing" >&5
+echo "configure:8222: checking whether iconv is non-transcribing" >&5
 if eval "test \"`echo '$''{'mutt_cv_iconv_nontrans'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8068,7 +8228,7 @@ else
   mutt_cv_iconv_nontrans=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 8072 "configure"
+#line 8232 "configure"
 #include "confdefs.h"
 
 #include <iconv.h>
@@ -8087,7 +8247,7 @@ int main()
 }
                 
 EOF
-if { (eval echo configure:8091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   mutt_cv_iconv_nontrans=no
 else
@@ -8126,12 +8286,12 @@ else
   for ac_func in bind_textdomain_codeset
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8130: checking for $ac_func" >&5
+echo "configure:8290: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8135 "configure"
+#line 8295 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8154,7 +8314,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8187,17 +8347,17 @@ for ac_hdr in wchar.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8191: checking for $ac_hdr" >&5
+echo "configure:8351: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8196 "configure"
+#line 8356 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8361: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8225,12 +8385,12 @@ done
 
 
 echo $ac_n "checking for wchar_t""... $ac_c" 1>&6
-echo "configure:8229: checking for wchar_t" >&5
+echo "configure:8389: checking for wchar_t" >&5
 if eval "test \"`echo '$''{'mutt_cv_wchar_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8234 "configure"
+#line 8394 "configure"
 #include "confdefs.h"
 
 #include <stddef.h>
@@ -8243,7 +8403,7 @@ int main() {
  wchar_t wc; return 0; 
 ; return 0; }
 EOF
-if { (eval echo configure:8247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   mutt_cv_wchar_t=yes
 else
@@ -8265,12 +8425,12 @@ EOF
 fi
 
 echo $ac_n "checking for wint_t""... $ac_c" 1>&6
-echo "configure:8269: checking for wint_t" >&5
+echo "configure:8429: checking for wint_t" >&5
 if eval "test \"`echo '$''{'mutt_cv_wint_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8274 "configure"
+#line 8434 "configure"
 #include "confdefs.h"
 
 #include <stddef.h>
@@ -8283,7 +8443,7 @@ int main() {
  wint_t wc; return 0; 
 ; return 0; }
 EOF
-if { (eval echo configure:8287: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   mutt_cv_wint_t=yes
 else
@@ -8308,17 +8468,17 @@ for ac_hdr in wctype.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8312: checking for $ac_hdr" >&5
+echo "configure:8472: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8317 "configure"
+#line 8477 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8482: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8347,12 +8507,12 @@ done
 for ac_func in iswalnum iswalpha  iswcntrl iswdigit
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8351: checking for $ac_func" >&5
+echo "configure:8511: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8356 "configure"
+#line 8516 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8375,7 +8535,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8402,12 +8562,12 @@ done
 for ac_func in iswgraph iswlower iswprint iswpunct iswspace iswupper
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8406: checking for $ac_func" >&5
+echo "configure:8566: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8411 "configure"
+#line 8571 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8430,7 +8590,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8457,12 +8617,12 @@ done
 for ac_func in iswxdigit towupper towlower
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8461: checking for $ac_func" >&5
+echo "configure:8621: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8466 "configure"
+#line 8626 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8485,7 +8645,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8511,12 +8671,12 @@ done
 
 
 echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6
-echo "configure:8515: checking for mbstate_t" >&5
+echo "configure:8675: checking for mbstate_t" >&5
 if eval "test \"`echo '$''{'mutt_cv_mbstate_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8520 "configure"
+#line 8680 "configure"
 #include "confdefs.h"
 
 #include <stddef.h>
@@ -8529,7 +8689,7 @@ int main() {
  mbstate_t s; return 0; 
 ; return 0; }
 EOF
-if { (eval echo configure:8533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   mutt_cv_mbstate_t=yes
 else
@@ -8560,13 +8720,13 @@ fi
 
 if test "$wc_funcs" != yes -a "$wc_funcs" != no; then
         echo $ac_n "checking for wchar_t functions""... $ac_c" 1>&6
-echo "configure:8564: checking for wchar_t functions" >&5
+echo "configure:8724: checking for wchar_t functions" >&5
 if eval "test \"`echo '$''{'mutt_cv_wc_funcs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   mutt_cv_wc_funcs=no
                 cat > conftest.$ac_ext <<EOF
-#line 8570 "configure"
+#line 8730 "configure"
 #include "confdefs.h"
 
 #define _XOPEN_SOURCE 1
@@ -8583,7 +8743,7 @@ mbrtowc(0, 0, 0, 0); wctomb(0, 0); wcwidth(0);
         iswprint(0); iswspace(0); towlower(0); towupper(0); iswalnum(0)
 ; return 0; }
 EOF
-if { (eval echo configure:8587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   mutt_cv_wc_funcs=yes
 else
@@ -8605,19 +8765,19 @@ EOF
 fi
 
 echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:8609: checking for nl_langinfo and CODESET" >&5
+echo "configure:8769: checking for nl_langinfo and CODESET" >&5
 if eval "test \"`echo '$''{'mutt_cv_langinfo_codeset'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8614 "configure"
+#line 8774 "configure"
 #include "confdefs.h"
 #include <langinfo.h>
 int main() {
 char* cs = nl_langinfo(CODESET);
 ; return 0; }
 EOF
-if { (eval echo configure:8621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   mutt_cv_langinfo_codeset=yes
 else
@@ -8638,19 +8798,19 @@ EOF
 fi
 
 echo $ac_n "checking for nl_langinfo and YESEXPR""... $ac_c" 1>&6
-echo "configure:8642: checking for nl_langinfo and YESEXPR" >&5
+echo "configure:8802: checking for nl_langinfo and YESEXPR" >&5
 if eval "test \"`echo '$''{'mutt_cv_langinfo_yesexpr'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8647 "configure"
+#line 8807 "configure"
 #include "confdefs.h"
 #include <langinfo.h>
 int main() {
 char* cs = nl_langinfo(YESEXPR);
 ; return 0; }
 EOF
-if { (eval echo configure:8654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   mutt_cv_langinfo_yesexpr=yes
 else
@@ -8686,7 +8846,7 @@ if test "${with_libesmtp+set}" = set; then
                 # Extract the first word of "libesmtp-config", so it can be a program name with args.
 set dummy libesmtp-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8690: checking for $ac_word" >&5
+echo "configure:8850: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_mutt_libesmtp_config_path'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8732,17 +8892,17 @@ fi
         CFLAGS="$CFLAGS $mutt_libesmtp_cflags"
         ac_safe=`echo "libesmtp.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libesmtp.h""... $ac_c" 1>&6
-echo "configure:8736: checking for libesmtp.h" >&5
+echo "configure:8896: checking for libesmtp.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8741 "configure"
+#line 8901 "configure"
 #include "confdefs.h"
 #include <libesmtp.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8771,7 +8931,7 @@ fi
         CFLAGS="$CFLAGS $mutt_libesmtp_cflags"
         LIBS="$LIBS $mutt_libesmtp_libs"
         echo $ac_n "checking for smtp_create_session in -lesmtp""... $ac_c" 1>&6
-echo "configure:8775: checking for smtp_create_session in -lesmtp" >&5
+echo "configure:8935: checking for smtp_create_session in -lesmtp" >&5
 ac_lib_var=`echo esmtp'_'smtp_create_session | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8779,7 +8939,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lesmtp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8783 "configure"
+#line 8943 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8790,7 +8950,7 @@ int main() {
 smtp_create_session()
 ; return 0; }
 EOF
-if { (eval echo configure:8794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
index f37a389..b70d554 100644 (file)
@@ -11,6 +11,7 @@ mutt_cv_version=`cat $srcdir/VERSION`
 
 
 AM_INIT_AUTOMAKE(muttng, $mutt_cv_version)
+dnl AC_GNU_SOURCE
 
 ifdef([AC_LIBOBJ], , [define([AC_LIBOBJ], [LIB[]OBJS="$LIBOBJS $1.o"])])
 
@@ -105,7 +106,7 @@ else
                 AC_DEFINE(CRYPT_BACKEND_CLASSIC_PGP,1,
                     [ Define if you want classic PGP support. ])
                 PGPAUX_TARGET="pgpring pgpewrap"
-                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o"
+                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o crypt-mod-pgp-classic.o"
         fi
 
        AC_ARG_ENABLE(smime, [  --disable-smime            Disable SMIME support],
@@ -117,7 +118,7 @@ else
        if test x$have_smime != xno ; then
                AC_DEFINE(CRYPT_BACKEND_CLASSIC_SMIME,1,
                   [ Define if you want clasic S/MIME support. ])
-               MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o "
+               MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o crypt-mod-smime-classic.o"
                SMIMEAUX_TARGET="smime_keys"
        fi
   
@@ -325,6 +326,7 @@ AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(long)
 
 AC_TYPE_PID_T
+dnl AC_CHECK_TYPE(ssize_t, int)
 
 AC_CHECK_FUNCS(fgetpos memmove setegid srand48 strerror)
 
@@ -750,6 +752,14 @@ if test $mutt_cv_fcntl = yes; then
         AC_DEFINE(USE_FCNTL,1, [ Define to use fcntl() to lock folders. ])
 fi
 
+mutt_cv_inodesort=yes
+AC_ARG_ENABLE(inodesort,  [   --disable-inodesort      Do NOT read files in maildir folders sorted by inode. ],
+       [if test $enableval = no ; then mutt_cv_inodesort=no; fi])
+
+if test $mutt_cv_inodesort = yes; then
+       AC_DEFINE(USE_INODESORT, 1, [ Define to sort files in a maildir by inode number. ])
+fi
+
 mutt_cv_warnings=yes
 AC_ARG_ENABLE(warnings, [  --disable-warnings         Turn off compiler warnings (not recommended)],
 [if test $enableval = no; then
@@ -889,10 +899,89 @@ AC_ARG_ENABLE(hcache, [  --enable-hcache            Enable header caching],
 fi])
 dnl -- end cache --
 
-if test "$need_md5" = "yes"
-then
-        MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS md5c.o"
-fi
+dnl -- start cache --
+AC_ARG_ENABLE(hcache, [  --enable-hcache            Enable header caching],
+[if test x$enableval = xyes; then
+    AC_DEFINE(USE_HCACHE, 1, [Enable header caching])
+
+    OLDCPPFLAGS="$CPPFLAGS"
+    OLDLIBS="$LIBS"
+
+    need_md5="yes"
+    ac_prefer_gdbm=yes
+    AC_ARG_WITH(gdbm, [  --without-gdbm             Get rid of gdbm even if it is available ],
+        ac_prefer_gdbm=$withval)
+    if test x$ac_prefer_gdbm != xno; then
+        CPPFLAGS="$OLDCPPFLAGS"
+        LIBS="$OLDLIBS -lgdbm";
+        AC_CACHE_CHECK(for gdbm_open, ac_cv_gdbmopen,[
+            ac_cv_gdbmopen=no
+            AC_TRY_LINK([#include <gdbm.h>],[gdbm_open(0,0,0,0,0);],[ac_cv_gdbmopen=yes])
+        ])
+    fi
+
+    ac_bdb_prefix=yes
+    AC_ARG_WITH(bdb, [  --with-bdb[=DIR]          Use BerkeleyDB4 if gdbm is not available ],
+        ac_bdb_prefix=$withval)
+    if test x$ac_bdb_prefix != xno -a x$ac_cv_gdbmopen != xyes; then
+        test x$ac_bdb_prefix = xyes && ac_bdb_prefix="$mutt_cv_prefix /opt/csw/bdb4 /opt /usr/local /usr"
+        for d in $ac_bdb_prefix; do
+            bdbpfx="$bdbpfx $d"
+            for v in BerkeleyDB.4.3 BerkeleyDB.4.2 BerkeleyDB.4.1; do
+                bdbpfx="$bdbpfx $d/$v"
+            done
+        done
+        BDB_VERSIONS="db-4 db4 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db ''"
+        AC_MSG_CHECKING([for BerkeleyDB > 4.0])
+        for d in $bdbpfx; do
+            BDB_INCLUDE_DIR=""
+            BDB_LIB_DIR=""
+            for v in / $BDB_VERSIONS; do
+                if test -r "$d/include/$v/db.h"; then
+                    BDB_INCLUDE_DIR="$d/include/$v"
+                    if test -d "$d/lib/$v"; then
+                        BDB_LIB_DIR="$d/lib/$v"
+                        for l in `echo $BDB_VERSIONS`; do
+                            CPPFLAGS="-I$BDB_INCLUDE_DIR $OLDCPPFLAGS"
+                            LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$l"
+                            AC_TRY_LINK([
+                                #include <stdlib.h>
+                                #include <db.h>
+                            ],[
+                                DB *db = NULL;
+                                db->open(db,NULL,NULL,NULL,0,0,0);
+                            ],[
+                                ac_cv_dbcreate=yes
+                                BDB_LIB="$l"
+                                break
+                            ])
+                        done
+                        test x$ac_dbcreate = xyes && break
+                    fi
+                fi
+            done
+            test x$BDB_LIB != x && break
+        done
+        if test x$ac_cv_dbcreate = xyes; then
+            AC_MSG_RESULT(yes)
+        else
+            AC_MSG_RESULT(no)
+        fi
+    fi
+
+    if test x$ac_cv_gdbmopen = xyes; then
+        CPPFLAGS="$OLDCPPFLAGS"
+        LIBS="$OLDLIBS -lgdbm";
+        AC_DEFINE(HAVE_GDBM, 1, [GDBM Support])
+    elif test x$ac_cv_dbcreate = xyes; then
+        CPPFLAGS="-I$BDB_INCLUDE_DIR $OLDCPPFLAGS"
+        LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB"
+        AC_DEFINE(HAVE_DB4, 1, [Sleepycat DB4 Support])
+    else
+        AC_MSG_ERROR(You need Sleepycat DB4 or GDBM for --enable-hcache)
+    fi
+fi])
+dnl -- end cache --
 
 AC_SUBST(MUTTLIBS)
 AC_SUBST(MUTT_LIB_OBJECTS)
index 8b567ef..41e9ab3 100644 (file)
@@ -5,7 +5,7 @@
 # This version uses gpg-2comp from 
 #   http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp.tar.gz
 #
-# $Id: gpg.rc,v 3.1 2002/03/26 22:23:58 roessler Exp $
+# $Id: gpg.rc,v 3.4 2005/01/27 18:27:36 roessler Exp $
 #
 # %p    The empty string when no passphrase is needed,
 #       the string "PGPPASSFD=0" if one is needed.
 # breaking PGP/MIME.
 
 # decode application/pgp
-set pgp_decode_command="/usr/bin/gpg  --charset utf-8   %?p?--passphrase-fd 0? --no-verbose --quiet  --batch  --output - %f"
+set pgp_decode_command="/usr/bin/gpg  --charset utf-8   --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet  --batch  --output - %f"
 
 # verify a pgp/mime signature
-set pgp_verify_command="/usr/bin/gpg   --no-verbose --quiet  --batch  --output - --verify %s %f"
+set pgp_verify_command="/usr/bin/gpg   --status-fd=2 --no-verbose --quiet  --batch  --output - --verify %s %f"
 
 # decrypt a pgp/mime attachment
-set pgp_decrypt_command="/usr/bin/gpg   --passphrase-fd 0 --no-verbose --quiet  --batch  --output - %f"
+set pgp_decrypt_command="/usr/bin/gpg   --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet  --batch  --output - %f"
 
 # create a pgp/mime signed attachment
 # set pgp_sign_command="/usr/bin/gpg-2comp --comment '' --no-verbose --batch  --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
-set pgp_sign_command="/usr/bin/gpg    --no-verbose --batch --quiet   --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
+set pgp_sign_command="/usr/bin/gpg    --no-verbose --batch --quiet   --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
 
 # create a application/pgp signed (old-style) message
 # set pgp_clearsign_command="/usr/bin/gpg-2comp --comment ''  --no-verbose --batch  --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
-set pgp_clearsign_command="/usr/bin/gpg   --charset utf-8 --no-verbose --batch --quiet   --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
+set pgp_clearsign_command="/usr/bin/gpg   --charset utf-8 --no-verbose --batch --quiet   --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
 
 # create a pgp/mime encrypted attachment
 # set pgp_encrypt_only_command="pgpewrap gpg-2comp  -v --batch  --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
@@ -53,10 +53,10 @@ set pgp_encrypt_only_command="pgpewrap /usr/bin/gpg  --charset utf-8    --batch
 
 # create a pgp/mime encrypted and signed attachment
 # set pgp_encrypt_sign_command="pgpewrap gpg-2comp  --passphrase-fd 0 -v --batch  --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
-set pgp_encrypt_sign_command="pgpewrap /usr/bin/gpg  --charset utf-8 --passphrase-fd 0  --batch --quiet  --no-verbose  --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
+set pgp_encrypt_sign_command="pgpewrap /usr/bin/gpg  --charset utf-8 %?p?--passphrase-fd 0?  --batch --quiet  --no-verbose  --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
 
 # import a key into the public key ring
-set pgp_import_command="/usr/bin/gpg  --no-verbose --import -v %f"
+set pgp_import_command="/usr/bin/gpg  --no-verbose --import %f"
 
 # export a key from the public key ring
 set pgp_export_command="/usr/bin/gpg   --no-verbose --export --armor %r"
@@ -78,5 +78,8 @@ set pgp_list_secring_command="/usr/bin/gpg   --no-verbose --batch --quiet   --wi
 # set pgp_good_sign="^gpg: Good signature from"
 
 # OK, here's a version which uses gnupg's message catalog:
-set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
+# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
+
+# This version uses --status-fd messages
+set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
 
index 88f9b33..f2799a8 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: sample.muttrc,v 3.3 2003/04/02 08:43:24 roessler Exp $
+# $Id: sample.muttrc,v 3.4 2005/01/27 18:47:57 roessler Exp $
 
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 #
@@ -145,7 +145,7 @@ color attachment brightmagenta default
 color search default green     # how to hilite search patterns in the pager
 
 color header brightred default ^(From|Subject):
-color body magenta default "(ftp|http)://[^ ]+"        # point out URLs
+color body magenta default "(ftp|http|https)://[^ ]+"  # point out URLs
 color body magenta default [-a-z_0-9.]+@[-a-z_0-9.]+   # e-mail addresses
 color underline brightgreen default
 
diff --git a/copy.c b/copy.c
index 2b76350..f564054 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -652,6 +652,8 @@ _mutt_copy_message (FILE *fpout, FILE *fpin, HEADER *hdr, BODY *body,
       s.flags |= M_WEED;
     if (flags & M_CM_CHARCONV)
       s.flags |= M_CHARCONV;
+    if (flags & M_CM_REPLYING)
+      s.flags |= M_REPLYING;
     
     if (WithCrypto && flags & M_CM_VERIFY)
       s.flags |= M_VERIFY;
@@ -972,7 +974,7 @@ static int address_header_decode (char **h)
     default: return 0;    
   }
 
-  if ((a = rfc822_parse_adrlist (a, s + l + 1)) == NULL)
+  if ((a = rfc822_parse_adrlist (a, s + l)) == NULL)
     return 0;
   
   mutt_addrlist_to_local (a);
diff --git a/copy.h b/copy.h
index c03d5f8..f0a9b86 100644 (file)
--- a/copy.h
+++ b/copy.h
 #define M_CM_WEED      (1<<5)  /* weed message/rfc822 attachment headers */
 #define M_CM_CHARCONV  (1<<6)  /* perform character set conversions */
 #define M_CM_PRINTING  (1<<7)  /* printing the message - display light */
+#define M_CM_REPLYING  (1<<8)  /* replying the message */
 
 
-#define M_CM_DECODE_PGP          (1<<8) /* used for decoding PGP messages */
-#define M_CM_DECODE_SMIME (1<<9) /* used for decoding S/MIME messages */
+#define M_CM_DECODE_PGP          (1<<9) /* used for decoding PGP messages */
+#define M_CM_DECODE_SMIME (1<<10) /* used for decoding S/MIME messages */
 #define M_CM_DECODE_CRYPT  (M_CM_DECODE_PGP | M_CM_DECODE_SMIME)
 
 
-#define M_CM_VERIFY    (1<<10) /* do signature verification */
+#define M_CM_VERIFY    (1<<11) /* do signature verification */
 
 
 
diff --git a/crypt-mod-pgp-classic.c b/crypt-mod-pgp-classic.c
new file mode 100644 (file)
index 0000000..083a82f
--- /dev/null
@@ -0,0 +1,132 @@
+/* 
+ * Copyright (C) 2004 g10 Code GmbH
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */
+
+/* 
+    This is a crytpo module wrapping the classic pgp code.
+ */
+
+#include "crypt-mod.h"
+#include "pgp.h"
+
+static void crypt_mod_pgp_void_passphrase (void)
+{
+  pgp_void_passphrase ();
+}
+
+static int crypt_mod_pgp_valid_passphrase (void)
+{
+  return pgp_valid_passphrase ();
+}
+
+static int crypt_mod_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)
+{
+  return pgp_decrypt_mime (a, b, c, d);
+}
+static void crypt_mod_pgp_application_handler (BODY *m, STATE *s)
+{
+  pgp_application_pgp_handler (m, s);
+}
+
+static char *crypt_mod_pgp_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc)
+{
+  return pgp_findKeys (to, cc, bcc);
+}
+
+static BODY *crypt_mod_pgp_sign_message (BODY *a)
+{
+  return pgp_sign_message (a);
+}
+
+static int crypt_mod_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf)
+{
+  return pgp_verify_one (sigbdy, s, tempf);
+}
+
+static int crypt_mod_pgp_send_menu (HEADER *msg, int *redraw)
+{
+  return pgp_send_menu (msg, redraw);
+}
+
+static BODY *crypt_mod_pgp_encrypt_message (BODY *a, char *keylist, int sign)
+{
+  return pgp_encrypt_message (a, keylist, sign);
+}
+
+static BODY *crypt_mod_pgp_make_key_attachment (char *tempf)
+{
+  return pgp_make_key_attachment (tempf);
+}
+
+static int crypt_mod_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)
+{
+  return pgp_check_traditional (fp, b, tagged_only);
+}
+
+static BODY *crypt_mod_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
+{
+  return pgp_traditional_encryptsign (a, flags, keylist);
+}
+
+static void crypt_mod_pgp_encrypted_handler (BODY *m, STATE *s)
+{
+  pgp_encrypted_handler (m, s);
+}
+
+static void crypt_mod_pgp_invoke_getkeys (ADDRESS *addr)
+{
+  pgp_invoke_getkeys (addr);
+}
+
+static void crypt_mod_pgp_invoke_import (const char *fname)
+{
+  pgp_invoke_import (fname);
+}
+
+static void crypt_mod_pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)
+{
+  pgp_extract_keys_from_attachment_list (fp, tag, top);
+}
+
+struct crypt_module_specs crypt_mod_pgp_classic =
+  { APPLICATION_PGP,
+    {
+      NULL,                    /* init */
+      crypt_mod_pgp_void_passphrase,
+      crypt_mod_pgp_valid_passphrase,
+      crypt_mod_pgp_decrypt_mime,
+      crypt_mod_pgp_application_handler,
+      crypt_mod_pgp_encrypted_handler,
+      crypt_mod_pgp_findkeys,
+      crypt_mod_pgp_sign_message,
+      crypt_mod_pgp_verify_one,
+      crypt_mod_pgp_send_menu,
+
+      crypt_mod_pgp_encrypt_message,
+      crypt_mod_pgp_make_key_attachment,
+      crypt_mod_pgp_check_traditional,
+      crypt_mod_pgp_traditional_encryptsign,
+      crypt_mod_pgp_invoke_getkeys,
+      crypt_mod_pgp_invoke_import,
+      crypt_mod_pgp_extract_keys_from_attachment_list,
+
+      NULL,                    /* smime_getkeys */
+      NULL,                    /* smime_verify_sender */
+      NULL,                    /* smime_build_smime_entity */
+      NULL,                    /* smime_invoke_import */
+    }
+  };
diff --git a/crypt-mod-smime-classic.c b/crypt-mod-smime-classic.c
new file mode 100644 (file)
index 0000000..e6ab753
--- /dev/null
@@ -0,0 +1,113 @@
+/* 
+ * Copyright (C) 2004 g10 Code GmbH
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */
+
+/* 
+    This is a crytpo module wrapping the classic smime code.
+ */
+
+#include "crypt-mod.h"
+#include "smime.h"
+
+static void crypt_mod_smime_void_passphrase (void)
+{
+  smime_void_passphrase ();
+}
+
+static int crypt_mod_smime_valid_passphrase (void)
+{
+  return smime_valid_passphrase ();
+}
+
+static int crypt_mod_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)
+{
+  return smime_decrypt_mime (a, b, c, d);
+}
+static void crypt_mod_smime_application_handler (BODY *m, STATE *s)
+{
+  smime_application_smime_handler (m, s);
+}
+
+static char *crypt_mod_smime_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc)
+{
+  return smime_findKeys (to, cc, bcc);
+}
+
+static BODY *crypt_mod_smime_sign_message (BODY *a)
+{
+  return smime_sign_message (a);
+}
+
+static int crypt_mod_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf)
+{
+  return smime_verify_one (sigbdy, s, tempf);
+}
+
+static int crypt_mod_smime_send_menu (HEADER *msg, int *redraw)
+{
+  return smime_send_menu (msg, redraw);
+}
+
+static void crypt_mod_smime_getkeys (ENVELOPE *env)
+{
+  smime_getkeys (env);
+}
+
+static int crypt_mod_smime_verify_sender (HEADER *h)
+{
+  return smime_verify_sender (h);
+}
+
+static BODY *crypt_mod_smime_build_smime_entity (BODY *a, char *certlist)
+{
+  return smime_build_smime_entity (a, certlist);
+}
+
+static void crypt_mod_smime_invoke_import (char *infile, char *mailbox)
+{
+  smime_invoke_import (infile, mailbox);
+}
+
+
+struct crypt_module_specs crypt_mod_smime_classic =
+  { APPLICATION_SMIME,
+    {
+      NULL,                    /* init */
+      crypt_mod_smime_void_passphrase,
+      crypt_mod_smime_valid_passphrase,
+      crypt_mod_smime_decrypt_mime,
+      crypt_mod_smime_application_handler,
+      NULL,                    /* encrypted_handler */
+      crypt_mod_smime_findkeys,
+      crypt_mod_smime_sign_message,
+      crypt_mod_smime_verify_one,
+      crypt_mod_smime_send_menu,
+
+      NULL,                    /* pgp_encrypt_message */
+      NULL,                    /* pgp_make_key_attachment */
+      NULL,                    /* pgp_check_traditional */
+      NULL,                    /* pgp_traditional_encryptsign */
+      NULL,                    /* pgp_invoke_getkeys */
+      NULL,                    /* pgp_invoke_import */
+      NULL,                    /* pgp_extract_keys_from_attachment_list */
+      
+      crypt_mod_smime_getkeys,
+      crypt_mod_smime_verify_sender,
+      crypt_mod_smime_build_smime_entity,
+      crypt_mod_smime_invoke_import,
+    }
+  };
diff --git a/crypt-mod.c b/crypt-mod.c
new file mode 100644 (file)
index 0000000..356e3e9
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2004 g10 Code GmbH
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */
+
+#include "crypt-mod.h"
+
+/* A type an a variable to keep track of registered crypto modules. */
+typedef struct crypt_module *crypt_module_t;
+
+struct crypt_module
+{
+  crypt_module_specs_t specs;
+  crypt_module_t next, *prevp;
+};
+
+static crypt_module_t modules;
+
+/* Register a new crypto module. */
+void crypto_module_register (crypt_module_specs_t specs)
+{
+  crypt_module_t module_new = safe_malloc (sizeof (*module_new));
+
+  module_new->specs = specs;
+  module_new->next = modules;
+  if (modules)
+    modules->prevp = &module_new->next;
+  modules = module_new;
+}
+
+/* Return the crypto module specs for IDENTIFIER.  This function is
+   usually used via the CRYPT_MOD_CALL[_CHECK] macros. */
+crypt_module_specs_t crypto_module_lookup (int identifier)
+{
+  crypt_module_t module = modules;
+
+  while (module && (module->specs->identifier != identifier))
+    module = module->next;
+
+  return module ? module->specs : NULL;
+}
diff --git a/crypt-mod.h b/crypt-mod.h
new file mode 100644 (file)
index 0000000..4f69c3e
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2004 g10 Code GmbH
+ *
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */
+
+#ifndef CRYPTOGRAPHY_H
+#define CRYPTOGRAPHY_H
+
+#include "mutt.h"
+#include "mutt_crypt.h"
+
+#define CRYPTO_SUPPORT(identifier) (WithCrypto & APPLICATION_ ## identifier)
+
+
+/* 
+    Type defintions for crypto module functions.
+ */
+typedef void (*crypt_func_void_passphrase_t) (void);
+typedef int (*crypt_func_valid_passphrase_t)  (void);
+
+typedef int (*crypt_func_decrypt_mime_t) (FILE *a, FILE **b,
+                                          BODY *c, BODY **d);
+
+typedef void (*crypt_func_application_handler_t) (BODY *m, STATE *s);
+typedef void (*crypt_func_encrypted_handler_t) (BODY *m, STATE *s);
+
+typedef void (*crypt_func_pgp_invoke_getkeys_t) (ADDRESS *addr);
+typedef int (*crypt_func_pgp_check_traditional_t) (FILE *fp, BODY *b,
+                                                   int tagged_only);
+typedef BODY *(*crypt_func_pgp_traditional_encryptsign_t) (BODY *a, int flags,
+                                                           char *keylist);
+typedef BODY *(*crypt_func_pgp_make_key_attachment_t) (char *tempf);
+typedef char *(*crypt_func_findkeys_t) (ADDRESS *to,
+                                        ADDRESS *cc, ADDRESS *bcc);
+typedef BODY *(*crypt_func_sign_message_t) (BODY *a);
+typedef BODY *(*crypt_func_pgp_encrypt_message_t) (BODY *a, char *keylist,
+                                                   int sign);
+typedef void (*crypt_func_pgp_invoke_import_t) (const char *fname);
+typedef int (*crypt_func_verify_one_t) (BODY *sigbdy, STATE *s,
+                                        const char *tempf);
+typedef void (*crypt_func_pgp_extract_keys_from_attachment_list_t) 
+                                           (FILE *fp, int tag, BODY *top);
+
+typedef int (*crypt_func_send_menu_t) (HEADER *msg, int *redraw);
+
+ /* (SMIME) */
+typedef void (*crypt_func_smime_getkeys_t) (ENVELOPE *env);
+typedef int (*crypt_func_smime_verify_sender_t) (HEADER *h);
+
+typedef BODY *(*crypt_func_smime_build_smime_entity_t) (BODY *a,
+                                                        char *certlist);
+
+typedef void (*crypt_func_smime_invoke_import_t) (char *infile, char *mailbox);
+
+typedef void (*crypt_func_init_t) (void);
+
+
+/*
+   A structure to keep all crypto module fucntions together.
+ */
+typedef struct crypt_module_functions
+{
+  /* Common/General functions.  */
+  crypt_func_init_t init;
+  crypt_func_void_passphrase_t void_passphrase;
+  crypt_func_valid_passphrase_t valid_passphrase;
+  crypt_func_decrypt_mime_t decrypt_mime;
+  crypt_func_application_handler_t application_handler;
+  crypt_func_encrypted_handler_t encrypted_handler;
+  crypt_func_findkeys_t findkeys;
+  crypt_func_sign_message_t sign_message;
+  crypt_func_verify_one_t verify_one;
+  crypt_func_send_menu_t send_menu;
+
+  /* PGP specific functions.  */
+  crypt_func_pgp_encrypt_message_t pgp_encrypt_message;
+  crypt_func_pgp_make_key_attachment_t pgp_make_key_attachment;
+  crypt_func_pgp_check_traditional_t pgp_check_traditional;
+  crypt_func_pgp_traditional_encryptsign_t pgp_traditional_encryptsign;
+  crypt_func_pgp_invoke_getkeys_t pgp_invoke_getkeys;
+  crypt_func_pgp_invoke_import_t pgp_invoke_import;
+  crypt_func_pgp_extract_keys_from_attachment_list_t
+                                 pgp_extract_keys_from_attachment_list;
+
+  /* S/MIME specific functions.  */
+
+  crypt_func_smime_getkeys_t smime_getkeys;
+  crypt_func_smime_verify_sender_t smime_verify_sender;
+  crypt_func_smime_build_smime_entity_t smime_build_smime_entity;
+  crypt_func_smime_invoke_import_t smime_invoke_import;
+} crypt_module_functions_t;
+
+
+/*
+   A structure to decribe a crypto module. 
+ */
+typedef struct crypt_module_specs
+{
+  int identifier;                      /* Identifying bit.  */
+  crypt_module_functions_t functions;
+} *crypt_module_specs_t;
+
+
+
+/* 
+   High Level crypto module interface. 
+ */
+
+void crypto_module_register (crypt_module_specs_t specs);
+crypt_module_specs_t crypto_module_lookup (int identifier);
+
+/* If the crypto module identifier by IDENTIFIER has been registered,
+   call its function FUNC.  Do nothing else.  This may be used as an
+   expression. */
+#define CRYPT_MOD_CALL_CHECK(identifier, func) \
+  (crypto_module_lookup (APPLICATION_ ## identifier) \
+   && (crypto_module_lookup (APPLICATION_ ## identifier))->functions.func)
+
+/* Call the function FUNC in the crypto module identified by
+   IDENTIFIER. This may be used as an expression. */
+#define CRYPT_MOD_CALL(identifier, func) \
+  *(crypto_module_lookup (APPLICATION_ ## identifier))->functions.func
+
+#endif
diff --git a/crypt.c b/crypt.c
index 5cc2cd8..dfb0974 100644 (file)
--- a/crypt.c
+++ b/crypt.c
@@ -4,6 +4,7 @@
  * Copyright (C) 2001  Thomas Roessler <roessler@does-not-exist.org>
  *                     Oliver Ehli <elmy@acm.org>
  * Copyright (C) 2003  Werner Koch <wk@gnupg.org>
+ * Copyright (C) 2004 g10code GmbH
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -107,64 +108,28 @@ static void disable_coredumps (void)
 int crypt_valid_passphrase(int flags)
 {
   time_t now = time (NULL);
+  int ret = 0;
 
 # if defined(HAVE_SETRLIMIT) &&(!defined(DEBUG))
   disable_coredumps ();
 # endif
 
   if ((WithCrypto & APPLICATION_PGP) && (flags & APPLICATION_PGP))
-  {
-    extern char PgpPass[STRING];
-    extern time_t PgpExptime;
-
-    if (pgp_use_gpg_agent())
-    {
-      *PgpPass = 0;
-      return 1; /* handled by gpg-agent */
-    }
-
-    if (now < PgpExptime) return 1; /* just use the cached copy. */
-    crypt_pgp_void_passphrase ();
-      
-    if (mutt_get_password (_("Enter PGP passphrase:"),
-                           PgpPass, sizeof (PgpPass)) == 0)
-    {
-      PgpExptime = time (NULL) + PgpTimeout;
-      return (1);
-    }
-    else
-      PgpExptime = 0;
-    }
+    ret = crypt_pgp_valid_passphrase ();
 
   if ((WithCrypto & APPLICATION_SMIME) && (flags & APPLICATION_SMIME))
-  {
-    extern char SmimePass[STRING];
-    extern time_t SmimeExptime;
+    ret = crypt_smime_valid_passphrase ();
 
-    if (now < SmimeExptime) return (1);
-    crypt_smime_void_passphrase ();
-      
-    if (mutt_get_password (_("Enter SMIME passphrase:"), SmimePass,
-                          sizeof (SmimePass)) == 0)
-    {
-      SmimeExptime = time (NULL) + SmimeTimeout;
-      return (1);
-    }
-    else
-      SmimeExptime = 0;
-  }
-
-  return (0);
+  return ret;
 }
 
 
 
-int mutt_protect (HEADER *msg, HEADER *cur, char *keylist)
+int mutt_protect (HEADER *msg, char *keylist)
 {
   BODY *pbody = NULL, *tmp_pbody = NULL;
   BODY *tmp_smime_pbody = NULL;
   BODY *tmp_pgp_pbody = NULL;
-  int traditional = 0;
   int flags = (WithCrypto & APPLICATION_PGP)? msg->security: 0;
   int i;
 
@@ -174,36 +139,25 @@ int mutt_protect (HEADER *msg, HEADER *cur, char *keylist)
   if ((msg->security & SIGN) && !crypt_valid_passphrase (msg->security))
     return (-1);
 
-  if ((WithCrypto & APPLICATION_PGP) && (msg->security & APPLICATION_PGP))
+  if ((WithCrypto & APPLICATION_PGP) && ((msg->security & PGPINLINE) == PGPINLINE))
   {
-    if ((msg->content->type == TYPETEXT) &&
-       !ascii_strcasecmp (msg->content->subtype, "plain"))
+    /* they really want to send it inline... go for it */
+    if (!isendwin ()) mutt_endwin _("Invoking PGP...");
+    pbody = crypt_pgp_traditional_encryptsign (msg->content, flags, keylist);
+    if (pbody)
     {
-      if (cur && cur->security && option (OPTPGPAUTOTRAD)
-         && (option (OPTCRYPTREPLYENCRYPT)
-             || option (OPTCRYPTREPLYSIGN)
-             || option (OPTCRYPTREPLYSIGNENCRYPTED)))
-       {
-         if(mutt_is_application_pgp(cur->content))
-           traditional = 1;
-       }
-      else
-       {
-         if ((i = query_quadoption (OPT_PGPTRADITIONAL, _("Create a traditional (inline) PGP message?"))) == -1)
-           return -1;
-         else if (i == M_YES)
-           traditional = 1;
-       }
-    }
-    if (traditional)
-    {
-      if (!isendwin ()) mutt_endwin _("Invoking PGP...");
-      if (!(pbody = crypt_pgp_traditional_encryptsign (msg->content, flags, keylist)))
-       return -1;
-
       msg->content = pbody;
       return 0;
     }
+
+    /* otherwise inline won't work...ask for revert */
+    if ((i = query_quadoption (OPT_PGPMIMEAUTO, _("Message can't be sent inline.  Revert to using PGP/MIME?"))) != M_YES)
+      {
+       mutt_error _("Mail not sent.");
+       return -1;
+      }
+
+    /* go ahead with PGP/MIME */
   }
 
   if (!isendwin ()) mutt_endwin (NULL);
@@ -287,6 +241,7 @@ int mutt_protect (HEADER *msg, HEADER *cur, char *keylist)
 
       /* destroy temporary signature envelope when doing retainable 
        * signatures.
+
        */
       if (flags != msg->security)
       {
@@ -391,6 +346,9 @@ int mutt_is_application_pgp (BODY *m)
     else if (p && !ascii_strncasecmp ("pgp-keys", p, 7))
       t |= PGPKEY;
   }
+  if (t)
+    t |= PGPINLINE;
+
   return t;
 }
 
index ce81860..f8ff479 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2003  Werner Koch <wk@gnupg.org>
+ * Copyright (C) 2004 g10 Code GmbH
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
  */
 
 /*
-   This file dispatches the generic crytpo functions to the implemented
-   backend or provides dummy stubs.  Note, that some generic functions are
-   handled in crypt.c.
+   This file dispatches the generic crypto functions to the
+   implemented backend or provides dummy stubs.  Note, that some
+   generic functions are handled in crypt.c.
 */
 
+/* Note: This file has been changed to make use of the new module
+   system.  Consequently there's a 1:1 mapping between the functions
+   contained in this file and the functions implemented by the crypto
+   modules.  */
+
 #include "mutt.h"
 #include "mutt_crypt.h"
 
-/* Make sure those macros are not defined. */
-#undef BFNC_PGP_VOID_PASSPHRASE     
-#undef BFNC_PGP_DECRYPT_MIME           
-#undef BFNC_PGP_APPLICATION_PGP_HANDLER
-#undef BFNC_PGP_ENCRYPTED_HANDLER
-#undef BFNC_PGP_INVOKE_GETKEYS
-#undef BFNC_PGP_ASK_FOR_KEY
-#undef BNFC_PGP_CHECK_TRADITIONAL
-#undef BFNC_PGP_TRADITIONAL_ENCRYPTSIGN  
-#undef BFNC_PGP_FREE_KEY
-#undef BFNC_PGP_MAKE_KEY_ATTACHMENT 
-#undef BFNC_PGP_FINDKEYS
-#undef BFNC_PGP_SIGN_MESSAGE
-#undef BFNC_PGP_ENCRYPT_MESSAGE
-#undef BFNC_PGP_INVOKE_IMPORT
-#undef BFNC_PGP_VERIFY_ONE
-#undef BFNC_PGP_KEYID
-#undef BFNC_PGP_EXTRACT_KEYS_FROM_ATTACHMENT_LIST
-
-#undef BFNC_SMIME_VOID_PASSPHRASE 
-#undef BFNC_SMIME_DECRYPT_MIME    
-#undef BFNC_SMIME_APPLICATION_SMIME_HANDLER 
-#undef BFNC_SMIME_GETKEYS  
-#undef BFNC_SMIME_VERIFY_SENDER
-#undef BFNC_SMIME_ASK_FOR_KEY
-#undef BFNC_SMIME_FINDKEYS
-#undef BFNC_SMIME_SIGN_MESSAGE
-#undef BFNC_SMIME_BUILD_SMIME_ENTITY
-#undef BFNC_SMIME_INVOKE_IMPORT
-#undef BFNC_SMIME_VERIFY_ONE
-
-
-/* The PGP backend */
-#if defined (CRYPT_BACKEND_CLASSIC_PGP)
-# include "pgp.h"
-# define BFNC_PGP_VOID_PASSPHRASE         pgp_void_passphrase
-# define BFNC_PGP_DECRYPT_MIME            pgp_decrypt_mime
-# define BFNC_PGP_APPLICATION_PGP_HANDLER pgp_application_pgp_handler
-# define BFNC_PGP_ENCRYPTED_HANDLER       pgp_encrypted_handler
-# define BFNC_PGP_INVOKE_GETKEYS          pgp_invoke_getkeys
-# define BFNC_PGP_ASK_FOR_KEY             pgp_ask_for_key
-# define BNFC_PGP_CHECK_TRADITIONAL       pgp_check_traditional
-# define BFNC_PGP_TRADITIONAL_ENCRYPTSIGN pgp_traditional_encryptsign 
-# define BFNC_PGP_FREE_KEY                pgp_free_key
-# define BFNC_PGP_MAKE_KEY_ATTACHMENT     pgp_make_key_attachment
-# define BFNC_PGP_FINDKEYS                pgp_findKeys
-# define BFNC_PGP_SIGN_MESSAGE            pgp_sign_message
-# define BFNC_PGP_ENCRYPT_MESSAGE         pgp_encrypt_message
-# define BFNC_PGP_INVOKE_IMPORT           pgp_invoke_import
-# define BFNC_PGP_VERIFY_ONE              pgp_verify_one
-# define BFNC_PGP_KEYID                   pgp_keyid
-# define BFNC_PGP_EXTRACT_KEYS_FROM_ATTACHMENT_LIST \
-                                       pgp_extract_keys_from_attachment_list
-
-
-#elif defined (CRYPT_BACKEND_GPGME)
-# include "crypt-gpgme.h"
-# define BFNC_PGP_VOID_PASSPHRASE NULL /* not required */
-# define BFNC_PGP_DECRYPT_MIME     gpg_pgp_decrypt_mime
-
-#endif /* PGP backend */
-
-
-/* The SMIME backend */
-#ifdef CRYPT_BACKEND_CLASSIC_SMIME
-# include "smime.h"
-# define BFNC_SMIME_VOID_PASSPHRASE           smime_void_passphrase
-# define BFNC_SMIME_DECRYPT_MIME              smime_decrypt_mime
-# define BFNC_SMIME_APPLICATION_SMIME_HANDLER smime_application_smime_handler
-# define BFNC_SMIME_GETKEYS                   smime_getkeys
-# define BFNC_SMIME_VERIFY_SENDER             smime_verify_sender
-# define BFNC_SMIME_ASK_FOR_KEY               smime_ask_for_key
-# define BFNC_SMIME_FINDKEYS                  smime_findKeys
-# define BFNC_SMIME_SIGN_MESSAGE              smime_sign_message
-# define BFNC_SMIME_BUILD_SMIME_ENTITY        smime_build_smime_entity
-# define BFNC_SMIME_INVOKE_IMPORT             smime_invoke_import
-# define BFNC_SMIME_VERIFY_ONE            smime_verify_one
-
-#elif defined (CRYPT_BACKEND_GPGME)
-  /* Already included above (gpgme supports both). */ 
-# define BFNC_SMIME_VOID_PASSPHRASE NULL /* not required */
-
-#endif /* SMIME backend */
+#include "crypt-mod.h"
 
-\f
 /*
     
     Generic
 
 */
 
+#ifdef CRYPT_BACKEND_CLASSIC_PGP
+extern struct crypt_module_specs crypt_mod_pgp_classic;
+#endif
+
+#ifdef CRYPT_BACKEND_CLASSIC_SMIME
+extern struct crypt_module_specs crypt_mod_smime_classic;
+#endif
+
+#ifdef CRYPT_BACKEND_GPGME
+extern struct crypt_module_specs crypt_mod_pgp_gpgme;
+extern struct crypt_module_specs crypt_mod_smime_gpgme;
+#endif
+
+void crypt_init (void)
+{
+#ifdef CRYPT_BACKEND_CLASSIC_PGP
+  if (
+#ifdef CRYPT_BACKEND_GPGME
+      (! option (OPTCRYPTUSEGPGME))
+#else
+       1
+#endif
+      )
+    crypto_module_register (&crypt_mod_pgp_classic);
+#endif
+
+#ifdef CRYPT_BACKEND_CLASSIC_SMIME
+  if (
+#ifdef CRYPT_BACKEND_GPGME
+      (! option (OPTCRYPTUSEGPGME))
+#else
+       1
+#endif
+      )
+    crypto_module_register (&crypt_mod_smime_classic);
+#endif
+
+  if (option (OPTCRYPTUSEGPGME))
+    {
+#ifdef CRYPT_BACKEND_GPGME
+      crypto_module_register (&crypt_mod_pgp_gpgme);
+      crypto_module_register (&crypt_mod_smime_gpgme);
+#else
+      mutt_message (_("\"crypt_use_gpgme\" set"
+                      " but not build with GPGME support."));
+#endif
+    }
+
+#if defined CRYPT_BACKEND_CLASSIG_PGP || defined CRYPT_BACKEND_CLASSIG_SMIME || defined CRYPT_BACKEND_GPGME
+  if (CRYPT_MOD_CALL_CHECK (PGP, init))
+    (CRYPT_MOD_CALL (PGP, init)) ();
+
+  if (CRYPT_MOD_CALL_CHECK (SMIME, init))
+    (CRYPT_MOD_CALL (SMIME, init)) ();
+#endif
+}
+
+
 /* Show a message that a backend will be invoked. */
 void crypt_invoke_message (int type)
 {
-#if defined (CRYPT_BACKEND_CLASSIC_PGP) || defined(CRYPT_BACKEND_CLASSIC_SMIME)
-  if ((type & APPLICATION_PGP))
+  if ((WithCrypto & APPLICATION_PGP) && (type & APPLICATION_PGP))
     mutt_message _("Invoking PGP...");
-  if ((type & APPLICATION_SMIME))
-    mutt_message _("Invoking OpenSSL...");
-#elif defined (CRYPT_BACKEND_GPGME)
-  if ((type & APPLICATION_PGP) || (type & APPLICATION_SMIME) )
-    mutt_message _("Invoking GnuPG...");
-#endif
+  else if ((WithCrypto & APPLICATION_SMIME) && (type & APPLICATION_SMIME))
+    mutt_message _("Invoking SMIME...");
 }
 
 
@@ -142,163 +118,136 @@ void crypt_invoke_message (int type)
 /* Reset a PGP passphrase */
 void crypt_pgp_void_passphrase (void)
 {
-#ifdef BFNC_PGP_VOID_PASSPHRASE
-  BFNC_PGP_VOID_PASSPHRASE ();
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, void_passphrase))
+    (CRYPT_MOD_CALL (PGP, void_passphrase)) ();
 }
 
+int crypt_pgp_valid_passphrase (void)
+{
+  if (CRYPT_MOD_CALL_CHECK (PGP, valid_passphrase))
+    return (CRYPT_MOD_CALL (PGP, valid_passphrase)) ();
+
+  return 0;
+}
+
+
 /* Decrypt a PGP/MIME message. */
 int crypt_pgp_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)
 {
-#ifdef BFNC_PGP_DECRYPT_MIME
-  return BFNC_PGP_DECRYPT_MIME (a, b, c, d);
-#else
-  return -1; /* error */
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, decrypt_mime))
+    return (CRYPT_MOD_CALL (PGP, decrypt_mime)) (a, b, c, d);
+
+  return -1;
 }
 
 /* MIME handler for the application/pgp content-type. */
 void crypt_pgp_application_pgp_handler (BODY *m, STATE *s)
 {
-#ifdef BFNC_PGP_APPLICATION_PGP_HANDLER
-  BFNC_PGP_APPLICATION_PGP_HANDLER (m, s);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, application_handler))
+    (CRYPT_MOD_CALL (PGP, application_handler)) (m, s);
 }
 
 /* MIME handler for an PGP/MIME encrypted message. */
 void crypt_pgp_encrypted_handler (BODY *a, STATE *s)
 {
-#ifdef BFNC_PGP_ENCRYPTED_HANDLER
-  BFNC_PGP_ENCRYPTED_HANDLER (a, s);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, encrypted_handler))
+    (CRYPT_MOD_CALL (PGP, encrypted_handler)) (a, s);
 }
 
 /* fixme: needs documentation. */
 void crypt_pgp_invoke_getkeys (ADDRESS *addr)
 {
-#ifdef BFNC_PGP_INVOKE_GETKEYS
-  BFNC_PGP_INVOKE_GETKEYS (addr);
-#endif
-}
-
-/* Ask for a PGP key. */
-pgp_key_t crypt_pgp_ask_for_key (char *tag, char *whatfor,
-                                 short abilities, pgp_ring_t keyring)
-{
-#ifdef BFNC_PGP_ASK_FOR_KEY
-  return BFNC_PGP_ASK_FOR_KEY (tag, whatfor, abilities, keyring);
-#else
-  return NULL;
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_invoke_getkeys))
+    (CRYPT_MOD_CALL (PGP, pgp_invoke_getkeys)) (addr);
 }
 
-
 /* Check for a traditional PGP message in body B. */
 int crypt_pgp_check_traditional (FILE *fp, BODY *b, int tagged_only)
 {
-#ifdef BNFC_PGP_CHECK_TRADITIONAL
-  return BNFC_PGP_CHECK_TRADITIONAL (fp, b, tagged_only);
-#else
-  return 0; /* no */
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_check_traditional))
+    return (CRYPT_MOD_CALL (PGP, pgp_check_traditional)) (fp, b, tagged_only);
+
+  return 0;
 }
 
 /* fixme: needs documentation. */
 BODY *crypt_pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
 {
-#ifdef BFNC_PGP_TRADITIONAL_ENCRYPTSIGN  
-  return BFNC_PGP_TRADITIONAL_ENCRYPTSIGN (a, flags, keylist);
-#else
-  return NULL;
-#endif
-}
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_traditional_encryptsign))
+    return (CRYPT_MOD_CALL (PGP, pgp_traditional_encryptsign)) (a, flags, keylist);
 
-/* Release pgp key KPP. */
-void crypt_pgp_free_key (pgp_key_t *kpp)
-{
-#ifdef BFNC_PGP_FREE_KEY
-  BFNC_PGP_FREE_KEY (kpp);
-#endif
+  return NULL;
 }
 
-
 /* Generate a PGP public key attachment. */
 BODY *crypt_pgp_make_key_attachment (char *tempf)
 {
-#ifdef BFNC_PGP_MAKE_KEY_ATTACHMENT 
-  return BFNC_PGP_MAKE_KEY_ATTACHMENT (tempf);
-#else
-  return NULL; /* error */ 
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_make_key_attachment))
+    return (CRYPT_MOD_CALL (PGP, pgp_make_key_attachment)) (tempf);
+
+  return NULL;
 }
 
 /* This routine attempts to find the keyids of the recipients of a
    message.  It returns NULL if any of the keys can not be found.  */
 char *crypt_pgp_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc)
 {
-#ifdef BFNC_PGP_FINDKEYS
-  return BFNC_PGP_FINDKEYS (to, cc, bcc);
-#else
+  if (CRYPT_MOD_CALL_CHECK (PGP, findkeys))
+    return (CRYPT_MOD_CALL (PGP, findkeys)) (to, cc, bcc);
+
   return NULL;
-#endif
 }
 
 /* Create a new body with a PGP signed message from A. */
 BODY *crypt_pgp_sign_message (BODY *a)
 {
-#ifdef BFNC_PGP_SIGN_MESSAGE
-  return BFNC_PGP_SIGN_MESSAGE (a);
-#else
+  if (CRYPT_MOD_CALL_CHECK (PGP, sign_message))
+    return (CRYPT_MOD_CALL (PGP, sign_message)) (a);
+
   return NULL;
-#endif
 }
 
 /* Warning: A is no longer freed in this routine, you need to free it
    later.  This is necessary for $fcc_attach. */
 BODY *crypt_pgp_encrypt_message (BODY *a, char *keylist, int sign)
 {
-#ifdef BFNC_PGP_ENCRYPT_MESSAGE
-  return BFNC_PGP_ENCRYPT_MESSAGE (a, keylist, sign);
-#else
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_encrypt_message))
+    return (CRYPT_MOD_CALL (PGP, pgp_encrypt_message)) (a, keylist, sign);
+
   return NULL;
-#endif
 }
 
 /* Invoke the PGP command to import a key. */
 void crypt_pgp_invoke_import (const char *fname)
 {
-#ifdef BFNC_PGP_INVOKE_IMPORT
-  BFNC_PGP_INVOKE_IMPORT (fname);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_invoke_import))
+    (CRYPT_MOD_CALL (PGP, pgp_invoke_import)) (fname);
 }
 
 /* fixme: needs documentation */
 int crypt_pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempf)
 {
-#ifdef BFNC_PGP_VERIFY_ONE
-  return BFNC_PGP_VERIFY_ONE (sigbdy, s, tempf);
-#else
+  if (CRYPT_MOD_CALL_CHECK (PGP, verify_one))
+    return (CRYPT_MOD_CALL (PGP, verify_one)) (sigbdy, s, tempf);
+
   return -1;
-#endif
 }
 
 
-/* Access the keyID in K. */
-char *crypt_pgp_keyid (pgp_key_t k)
+int crypt_pgp_send_menu (HEADER *msg, int *redraw)
 {
-#ifdef BFNC_PGP_KEYID
-  return pgp_keyid (k);
-#else
-  return "?";
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, send_menu))
+    return (CRYPT_MOD_CALL (PGP, send_menu)) (msg, redraw);
+
+  return 0;
 }
 
+
 /* fixme: needs documentation */
 void crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)
 {
-#ifdef BFNC_PGP_EXTRACT_KEYS_FROM_ATTACHMENT_LIST
-  BFNC_PGP_EXTRACT_KEYS_FROM_ATTACHMENT_LIST (fp, tag, top);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (PGP, pgp_extract_keys_from_attachment_list))
+    (CRYPT_MOD_CALL (PGP, pgp_extract_keys_from_attachment_list)) (fp, tag, top);
 }
 
 
@@ -313,104 +262,105 @@ void crypt_pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top)
 /* Reset an SMIME passphrase */
 void crypt_smime_void_passphrase (void)
 {
-#ifdef BFNC_SMIME_VOID_PASSPHRASE
-  BFNC_SMIME_VOID_PASSPHRASE ();
-#endif
+  if (CRYPT_MOD_CALL_CHECK (SMIME, void_passphrase))
+    (CRYPT_MOD_CALL (SMIME, void_passphrase)) ();
 }
 
+int crypt_smime_valid_passphrase (void)
+{
+  if (CRYPT_MOD_CALL_CHECK (SMIME, valid_passphrase))
+    return (CRYPT_MOD_CALL (SMIME, valid_passphrase)) ();
+
+  return 0;
+}
 
 /* Decrypt am S/MIME message. */
 int crypt_smime_decrypt_mime (FILE *a, FILE **b, BODY *c, BODY **d)
 {
-#ifdef BFNC_SMIME_DECRYPT_MIME
-  return BFNC_SMIME_DECRYPT_MIME (a, b, c, d);
-#else
-  return -1; /* error */
-#endif
+  if (CRYPT_MOD_CALL_CHECK (SMIME, decrypt_mime))
+    return (CRYPT_MOD_CALL (SMIME, decrypt_mime)) (a, b, c, d);
+
+  return -1;
 }
 
 /* MIME handler for the application/smime content-type. */
 void crypt_smime_application_smime_handler (BODY *m, STATE *s)
 {
-#ifdef BFNC_SMIME_APPLICATION_SMIME_HANDLER
-  BFNC_SMIME_APPLICATION_SMIME_HANDLER (m, s);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (SMIME, application_handler))
+    (CRYPT_MOD_CALL (SMIME, application_handler)) (m, s);
+}
+
+/* MIME handler for an PGP/MIME encrypted message. */
+void crypt_smime_encrypted_handler (BODY *a, STATE *s)
+{
+  if (CRYPT_MOD_CALL_CHECK (SMIME, encrypted_handler))
+    (CRYPT_MOD_CALL (SMIME, encrypted_handler)) (a, s);
 }
 
 /* fixme: Needs documentation. */
 void crypt_smime_getkeys (ENVELOPE *env)
 {
-#ifdef BFNC_SMIME_GETKEYS  
-  BFNC_SMIME_GETKEYS (env);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_getkeys))
+    (CRYPT_MOD_CALL (SMIME, smime_getkeys)) (env);
 }
 
 /* Check that the sender matches. */
 int crypt_smime_verify_sender(HEADER *h)
 {
-#ifdef BFNC_SMIME_VERIFY_SENDER
-  return BFNC_SMIME_VERIFY_SENDER (h);
-#else
-  return 1; /* yes */
-#endif
-}
+  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_verify_sender))
+    return (CRYPT_MOD_CALL (SMIME, smime_verify_sender)) (h);
 
-/* Ask for an SMIME key. */
-char *crypt_smime_ask_for_key (char *prompt, char *mailbox, short public)
-{
-#ifdef BFNC_SMIME_ASK_FOR_KEY
-  return BFNC_SMIME_ASK_FOR_KEY (prompt, mailbox, public);
-#else
-  return NULL; /* error */
-#endif
+  return 1;
 }
 
-
 /* This routine attempts to find the keyids of the recipients of a
    message.  It returns NULL if any of the keys can not be found.  */
 char *crypt_smime_findkeys (ADDRESS *to, ADDRESS *cc, ADDRESS *bcc)
 {
-#ifdef BFNC_SMIME_FINDKEYS
-  return BFNC_SMIME_FINDKEYS (to, cc, bcc);
-#else
+  if (CRYPT_MOD_CALL_CHECK (SMIME, findkeys))
+    return (CRYPT_MOD_CALL (SMIME, findkeys)) (to, cc, bcc);
+
   return NULL;
-#endif
 }
 
 /* fixme: Needs documentation. */
 BODY *crypt_smime_sign_message (BODY *a)
 {
-#ifdef BFNC_SMIME_SIGN_MESSAGE
-  return BFNC_SMIME_SIGN_MESSAGE (a);
-#else
+  if (CRYPT_MOD_CALL_CHECK (SMIME, sign_message))
+    return (CRYPT_MOD_CALL (SMIME, sign_message)) (a);
+
   return NULL;
-#endif
 }
 
 /* fixme: needs documentation. */
 BODY *crypt_smime_build_smime_entity (BODY *a, char *certlist)
 {
-#ifdef BFNC_SMIME_BUILD_SMIME_ENTITY
-  return BFNC_SMIME_BUILD_SMIME_ENTITY (a, certlist);
-#else
+  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_build_smime_entity))
+    return (CRYPT_MOD_CALL (SMIME, smime_build_smime_entity)) (a, certlist);
+
   return NULL;
-#endif
 }
 
 /* Add a certificate and update index file (externally). */
 void crypt_smime_invoke_import (char *infile, char *mailbox)
 {
-#ifdef BFNC_SMIME_INVOKE_IMPORT
-  BFNC_SMIME_INVOKE_IMPORT (infile, mailbox);
-#endif
+  if (CRYPT_MOD_CALL_CHECK (SMIME, smime_invoke_import))
+    (CRYPT_MOD_CALL (SMIME, smime_invoke_import)) (infile, mailbox);
 }
 
 /* fixme: needs documentation */
 int crypt_smime_verify_one (BODY *sigbdy, STATE *s, const char *tempf)
 {
-#ifdef BFNC_SMIME_VERIFY_ONE
-  return BFNC_SMIME_VERIFY_ONE (sigbdy, s, tempf);
-#else
+  if (CRYPT_MOD_CALL_CHECK (SMIME, verify_one))
+    return (CRYPT_MOD_CALL (SMIME, verify_one)) (sigbdy, s, tempf);
+
   return -1;
-#endif
+}
+
+int crypt_smime_send_menu (HEADER *msg, int *redraw)
+{
+  if (CRYPT_MOD_CALL_CHECK (SMIME, send_menu))
+    return (CRYPT_MOD_CALL (SMIME, send_menu)) (msg, redraw);
+
+  return 0;
 }
diff --git a/crypthash.h b/crypthash.h
new file mode 100644 (file)
index 0000000..a2545b8
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _CRYPTHASH_H
+# define _CRYPTHASH_H
+
+# include "config.h"
+
+
+# include <sys/types.h>
+# if HAVE_INTTYPES_H
+#  include <inttypes.h>
+# else
+#  if HAVE_STDINT_H
+#   include <stdint.h>
+#  endif
+# endif
+
+/* POINTER defines a generic pointer type */
+typedef unsigned char *POINTER;
+
+# ifndef HAVE_UINT32_T
+#  if SIZEOF_INT == 4
+typedef unsigned int uint32_t;
+#  elif SIZEOF_LONG == 4
+typedef unsigned long uint32_t;
+#  endif
+# endif
+
+#endif
index a764b6a..9c0567a 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2004 g10 Code GmbH
  * 
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
@@ -57,6 +58,20 @@ void mutt_refresh (void)
   refresh ();
 }
 
+/* Make sure that the next refresh does a full refresh.  This could be
+   optmized by not doing it at all if DISPLAY is set as this might
+   indicate that a GUI based pinentry was used.  Having an option to
+   customize this is of course the Mutt way.  */
+void mutt_need_hard_redraw (void)
+{
+  if (!getenv ("DISPLAY"))
+  {
+    keypad (stdscr, TRUE);
+    clearok (stdscr, TRUE);
+    set_option (OPTNEEDREDRAW);
+  }
+}
+
 event_t mutt_getch (void)
 {
   int ch;
@@ -162,6 +177,19 @@ void mutt_clear_error (void)
     CLEARLINE (LINES-1);
 }
 
+static void fix_end_of_file (const char *data)
+{
+  FILE *fp;
+  int c;
+  
+  if ((fp = safe_fopen (data, "a+")) == NULL)
+    return;
+  fseek (fp,-1,SEEK_END);
+  if ((c = fgetc(fp)) != '\n')
+    fputc ('\n', fp);
+  safe_fclose (&fp);
+}
+
 void mutt_edit_file (const char *editor, const char *data)
 {
   char cmd[LONG_STRING];
@@ -170,6 +198,7 @@ void mutt_edit_file (const char *editor, const char *data)
   mutt_expand_file_fmt (cmd, sizeof (cmd), editor, data);
   if (mutt_system (cmd) == -1)
     mutt_error (_("Error running \"%s\"!"), cmd);
+  fix_end_of_file (data);
   keypad (stdscr, TRUE);
   clearok (stdscr, TRUE);
 }
index c58b71a..4982c73 100644 (file)
@@ -1178,6 +1178,9 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
       
       case OP_MAIN_SYNC_FOLDER:
 
+       if (Context && !Context->msgcount)
+         break;
+
         CHECK_MSGCOUNT;
         CHECK_VISIBLE;
         CHECK_READONLY;
@@ -2148,7 +2151,9 @@ CHECK_IMAP_ACL(IMAP_ACL_INSERT);
           break;
         CHECK_MSGCOUNT; 
         CHECK_VISIBLE;
-        mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
+        if (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)) 
+         mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
+      
         if (menu->menu == MENU_PAGER)
         {
           op = OP_DISPLAY_MESSAGE;
index 6f083ef..1f8b3be 100644 (file)
@@ -38,11 +38,11 @@ while (<>) {
        }
     } elsif ($_ =~ /^revision ([0-9.]*)/) {
        $change->{revision} = $1;
-    } elsif ($_ =~ /^date: ([^; ]*) ([^; ]*);  author: ([^;]*);/) {
+    } elsif ($_ =~ /^date: ([^; ]*) ([^; ]*)( \+[0-9]+)?;  author: ([^;]*);/) {
        $change->{date} = $1;
        $change->{hour} = $2;
-       $change->{author} = $Authors{$3} ? $Authors{$3} : $3;
-       $change->{committed} = $3;
+       $change->{author} = $Authors{$3} ? $Authors{$3} : $4;
+       $change->{committed} = $4;
     } elsif ($_ =~ /^From: (.*)$/) {
        $change->{author} = $1;
     } elsif ($change->{revision}) {
index 9f85854..d3b54e7 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 3.2 2002/12/07 14:15:01 roessler Exp $
+# $Id: Makefile.in,v 3.4 2004/04/30 06:49:37 roessler Exp $
 
 SHELL = /bin/sh
 
@@ -44,6 +44,7 @@ DISTFILES = Makefile.in dotlock.man   \
        muttrc.man.tail                 \
        muttrc.man                      \
        mbox.man                        \
+       mmdf.man                        \
        manual.sgml.head                \
        manual.sgml.tail                \
        manual.sgml                     \
index 90a7329..4cf19a1 100644 (file)
@@ -568,7 +568,7 @@ Also see <ref id="edit_headers" name="edit&lowbar;headers">.
 <p>
 If you want to use PGP, you can specify 
 
-<tt/Pgp:/ &lsqb; <tt/E/ | <tt/S/ | <tt/S&lt;id/&gt; &rsqb; <newline>
+<tt/Pgp:/ &lsqb; <tt/E/ | <tt/S/ | <tt/S/<em/&lt;id&gt;/ &rsqb; <newline>
 
 ``E'' encrypts, ``S'' signs and
 ``S&lt;id&gt;'' signs with the given key, setting <ref
@@ -892,9 +892,11 @@ Usage: <tt/bind/ <em/map/ <em/key/ <em/function/
 This command allows you to change the default key bindings (operation
 invoked when pressing a key).
 
-<em/map/ specifies in which menu the binding belongs.  The currently
-defined maps are:
+<em/map/ specifies in which menu the binding belongs.  Multiple maps may
+be specified by separating them with commas (no additional whitespace is
+allowed). The currently defined maps are:
 
+<label id="maps">
 <descrip>
 <tag/generic/
 This is not a real menu, but is used as a fallback for all of the other
@@ -932,7 +934,7 @@ recalling a message the user was composing, but saved until later.
 control character, use the sequence <em/&bsol;Cx/, where <em/x/ is the
 letter of the control character (for example, to specify control-A use
 ``&bsol;Ca'').  Note that the case of <em/x/ as well as <em/&bsol;C/ is
-ignored, so that <em/&bsol;CA, &bsol;Ca, &bsol;cA/ and <em/&bsol;ca/ are all
+ignored, so that <em/&bsol;CA/, <em/&bsol;Ca/, <em/&bsol;cA/ and <em/&bsol;ca/ are all
 equivalent.  An alternative form is to specify the key as a three digit
 octal number prefixed with a ``&bsol;'' (for example <em/&bsol;177/ is
 equivalent to <em/&bsol;c?/).
@@ -1030,6 +1032,11 @@ you had typed <em/sequence/.  So if you have a common sequence of commands
 you type, you can create a macro to execute those commands with a single
 key.
 
+<em/menu/ is the <ref id="maps" name="map"> which the macro will be bound.
+Multiple maps may be specified by separating multiple menu arguments by
+commas. Whitespace may not be used in between the menu arguments and the
+commas separating them.
+
 <em/key/ and <em/sequence/ are expanded by the same rules as the <ref
 id="bind" name="key bindings">.  There are some additions however.  The
 first is that control characters in <em/sequence/ can also be specified
@@ -1393,10 +1400,11 @@ Usage: <tt/fcc-save-hook/ &lsqb;!&rsqb;<em/pattern/ <em/mailbox/
 This command is a shortcut, equivalent to doing both a <ref id="fcc-hook" name="fcc-hook">
 and a <ref id="save-hook" name="save-hook"> with its arguments.
 
-<sect1>Change settings based upon message recipients<label id="send-hook"><label id="reply-hook">
+<sect1>Change settings based upon message recipients<label id="send-hook"><label id="reply-hook"><label id="send2-hook">
 <p>
 Usage: <tt/reply-hook/ &lsqb;!&rsqb;<em/pattern/ <em/command/<newline>
-Usage: <tt/send-hook/ &lsqb;!&rsqb;<em/pattern/ <em/command/
+Usage: <tt/send-hook/ &lsqb;!&rsqb;<em/pattern/ <em/command/<newline>
+Usage: <tt/send2-hook/ &lsqb;!&rsqb;<em/pattern/ <em/command/
 
 These commands can be used to execute arbitrary configuration commands based
 upon recipients of the message.  <em/pattern/ is a regular expression
@@ -1409,7 +1417,14 @@ matched against all messages, both <em/new/ and <em/replies/.  <bf/Note:/
 <tt/reply-hook/s are matched <bf/before/ the <tt/send-hook/, <bf/regardless/
 of the order specified in the users's configuration file.
 
-For each type of <tt/send-hook/ or <tt/reply-hook/, When multiple matches
+<tt/send2-hook/ is matched every time a message is changed, either
+by editing it, or by using the compose menu to change its recipients
+or subject.  <tt/send2-hook/ is executed after <tt/send-hook/, and
+can, e.g., be used to set parameters such as the <ref id="sendmail"
+name="&dollar;sendmail"> variable depending on the message's sender
+address.
+
+For each type of <tt/send-hook/ or <tt/reply-hook/, when multiple matches
 occur, commands are executed in the order they are specified in the muttrc
 (for that type of hook).
 
@@ -1503,6 +1518,106 @@ specify the same pattern specified in the <tt/score/ command for it to be
 removed.  The pattern ``*'' is a special token which means to clear the list
 of all score entries.
 
+<sect1>Spam detection<label id="spam">
+<p>
+Usage: <tt/spam/ <em/pattern/ <em/format/<newline>
+Usage: <tt/nospam/ <em/pattern/
+
+Mutt has generalized support for external spam-scoring filters.
+By defining your spam patterns with the <tt/spam/ and <tt/nospam/
+commands, you can <em/limit/, <em/search/, and <em/sort/ your