2025-12-11  Automatically generated  <bug-mailutils@gnu.org>

	HEAD b6254c496de66346cd4e7c5a9ced188d86adee2a.

2025-12-11  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.21.

2025-10-27  Sergey Poznyakoff  <gray@gnu.org>

	New commands for string expansion: localuser and detail.

2025-10-12  Sergey Poznyakoff  <gray@gnu.org>

	Fix algorithm of reading recipient addresses from the message
	headers.

	* doc/texinfo/mailutils.texi: Document changes.
	* libproto/mailer/mailbox.c (remote_mbox_append_message):
	Remove parameter handling. This is done by the mailer. This way
	it closely corresponds to the documentation. In the long run it
	will be reimplemented in mailbox, so it can be extended on
	other mailer types as well.
	* libproto/mailer/smtp.c: Handle additional URL parameters:
	ehlo, domain, strip-domain, read-recipients, and
	recipient-headers.
	* libproto/mailer/tests/.gitignore: Update.
	* libproto/mailer/tests/Makefile.am: Add new tests.
	* libproto/mailer/tests/mboxapnd.at: New file.
	* libproto/mailer/tests/mboxapnd.c: New file.
	* libproto/mailer/tests/smtp-url.at: New file.
	* libproto/mailer/tests/sends.c: Recipient names in command
	line are optional.
	* libproto/mailer/tests/seqsend.at: New tests.
	* libproto/mailer/tests/testsuite.at (SEND_CHECK): New macro.
	Include the smtp-url.at test.

2025-10-11  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.20.93.

2025-10-11  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_sieve/extensions/Makefile.am: Build uidnew only if
	MU_COND_DBM condition is set.

2025-10-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix bug in mu_address_dup.

	* libmailutils/address/address.c (mu_address_dup): Duplicate
	entire address structure.

2025-10-08  Sergey Poznyakoff  <gray@gnu.org>

	Make sure help output uses the correct translation domain.

	When outputting help (both for command line usage and for
	configuration file syntax), care should be taken to use proper
	translation domain: "mailutils" for entities defined in
	libmailutils and associated libraries (so called "canned
	entries"), and application domain for the entries defined in
	the application.

	This fixes a long-standing bug, originally reported by Rafael
	Fontenelle in:
	https://mail.gnu.org.ua/mailman/listarchive/bug-mailfromd/2018-
	04/msg00027.html

	* include/mailutils/cfg.h (struct mu_cfg_section): New field:
	domain.
	(struct mu_cfg_cont): Likewise.
	(mu_cfg_section_add_params_ext): New proto.
	(mu_cfg_section_add_params): Rewrite as alternative entrypoint
	to the above.
	(mu_create_canned_section_ext,mu_create_canned_param_ext): New
	proto.
	(mu_create_canned_section,mu_create_canned_param): Rewrite as
	alternative entrypoints to the above.
	(mu_config_container_register_section)
	(mu_config_root_register_section)
	(mu_config_register_plain_section): Change prototype; add new
	argument: domain.
	* include/mailutils/cli.h (struct mu_cli_capa): New field:
	domain.
	(struct mu_cli_setup): Likewise.
	* include/mailutils/opt.h (struct mu_option): New field:
	opt_domain.
	(MU_OPTION_GROUP_EXT): New macro. 
	* libmailutils/cfg/driver.c (mu_create_canned_section_ext): New
	function. Creates a canned section and assigns it a translation
	domain.
	(mu_create_canned_param_ext): New function. Same for canned
	parameter.
	(dup_container): Preserve domain.
	(mu_cfg_section_add_params_ext): New function. Adds parameters
	with the given translation domain.
	(mu_config_container_register_section): Change signature; take
	translation domain as additional argument.
	(mu_config_root_register_section): Likewise.
	(mu_config_register_plain_section): Likewise.
	* libmailutils/cfg/format.c (format_param,format_section): Take
	translation domain as arugment.
	(format_container): Pass container translation domain as
	argument to underlying functions. 
	* libmailutils/cli/capa.c (mu_cli_capa_register): Pass on the
	domain.
	(capa_extend): Pass domain to mu_config_root_register_section.
	* libmailutils/cli/cli.c: Explicitly initialize the opt_domain
	field in canned options.
	* libmailutils/opt/opt.c: Likewise.
	* libmailutils/cli/stdcapa.c: Explicitly initialize the
	opt_domain field in canned options and domain in
	mu_cli_std_capa entries.
	* libmailutils/opt/help.c: Use correct translation domain when
	outputting help. 
	* libmailutils/auth/mu_auth.c: Use
	mu_config_root_register_section to ensure correct translation
	domain.
	* libmu_auth/radius.c (mu_cli_capa_radius): Explicitly
	initialize domain.
	* lib/manlock.c: Use mu_create_canned_section_ext and
	mu_cfg_section_add_params_ext to ensure correct translation
	domain.
	* lib/tcpwrap.c: Likewise.
	* libmailutils/cli/acl.c: Likewise.
	* libmailutils/server/msrv.c: Likewise.
	* libmu_auth/tlsconf.c: Likewise.
	* libmu_sieve/conf.c: Explicitly initialize the opt_domain
	field in canned options and domain in mu_cli_std_capa entries. 
	* NEWS: Document the change.

2025-10-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix stupid typo.

2025-10-08  Sergey Poznyakoff  <gray@gnu.org>

	Mark translatable strings.

2025-10-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix commit de6f346600.

	The change in quote handling in mu_str_expand caused grief in
	SQL authentication: the SQL queries in getpwnam or getpass
	statements could contain SQL expressions involving quoted
	strings, and these quotes would have been removed during
	variable expansion. To prevent this, introduce new expansion
	functions which allow the caller to specify whether unquoting
	is necessary.

	* include/mailutils/cstr.h (mu_str_expand_unquote)
	(mu_str_vexpand_unquote): New protos.
	(mu_str_expand): Rewrite as an inline wrapper over
	mu_str_expand_unquote.
	* libmailutils/string/expvar.c (mu_str_expand_unquote)
	(mu_str_vexpand_unquote): New functions.
	(mu_str_vexpand): Rewrite as an entry point to
	mu_str_vexpand_unquote.
	* libmu_auth/ldap.c (fill_auth_data): Use mu_str_expand_unquote
	and request unquoting.

2025-10-04  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks in sieve library.

	* libmu_sieve/environment.c (mu_sieve_set_environ): Set the
	destroy_item function.
	* libmu_sieve/registry.c (regunload): Free the argument.
	(mu_i_sv_registry_add): Use malloc instead of mu_sieve_malloc.
	* libmu_sieve/sieve-gram.y: Free identifiers returned by the
	lexer.
	(node_replace): Handle mu_sieve_node_allof and
	mu_sieve_node_anyof. Free repl. Fix freeing copy.
	(mu_sieve_machine_destroy): Free exenv.
	* libmu_sieve/sieve-lex.l (TAG): Allocate in sieve machine
	memory pool.
	* libproto/maildir/folder.c (subdir_exists): Free allocated
	memory.

2025-10-03  Sergey Poznyakoff  <gray@gnu.org>

	Fix some diagnostic messages.

2025-10-01  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.20.92.

2025-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Remove unsupported gnulib module.

2025-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Remove unsupported file.

	* mu-aux/mailutils.spec.in: Remove.
	* configure.ac: Likewise.
	* mu-aux/Makefile.am: Likewise.

2025-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite mu_umaxtostr interface.

	* lib/mu_umaxtostr.c: Use fixed-size buffer space.
	(mu_umaxtostr_n): New function.
	* lib/mu_umaxtostr.h (MU_UMAXTOSTR_IDX_MAX): New constant.
	(mu_umaxtostr_n): New proto.
	(mu_umaxtostr): Remove. Add an inline declaration with that
	name. Notice, that both the return type and signature change. 
	* imap4d/fetch.c: Fix/replace calls to mu_umaxtostr.
	* imap4d/preauth.c: Likewise.
	* imap4d/search.c: Likewise.
	* mail/from.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/compcommon.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/mboxprop.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/send.c: Likewise.
	* mh/show.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnowenv.c: Likewise.
	* pop3d/bulletin.c: Likewise.
	* pop3d/capa.c: Likewise.
	* pop3d/dele.c: Likewise.
	* pop3d/list.c: Likewise.
	* pop3d/stat.c: Likewise.
	* pop3d/uidl.c: Likewise.
	* pop3d/user.c: Likewise.

2025-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/string/quotename.c (mu_quotename_n): Fix range
	checking.

2025-09-26  Sergey Poznyakoff  <gray@gnu.org>

	Further cleanup in diagnostics.

	Use mu_quotename to include file names and similar strings into
	diagnostic messages. Consistently use single-quotes wherever
	applicable.

2025-09-26  Sergey Poznyakoff  <gray@gnu.org>

	New functions: mu_quotename_n and mu_quotename.

	* include/mailutils/cstr.h (mu_c_str_escape_length)
	(mu_c_str_escape_buf, mu_c_str_escape_mem)
	(mu_quotename_n): New protos.
	(mu_quotename_n): New function. (MU_QUOTENAME_IDX_MAX)
	(MU_QUOTENAME_SIZE_MAX): New macros.
	* libmailutils/string/cstrescape.c (mu_c_str_escape_length)
	(mu_c_str_escape_buf,mu_c_str_escape_mem): New functions.
	(mu_c_str_escape): Rewrite.
	* libmailutils/string/quotename.c: New file.
	* libmailutils/string/Makefile.am: Add new file.

2025-09-25  Sergey Poznyakoff  <gray@gnu.org>

	Prefer mu_diag_funcall to diagnose unqualified system failures.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in mda.

	* mda/lib/script.c (mda_filter_message): Create homedir first,
	then switch to user privileges.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Reword some diagnostics; more translators' comments.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix some messages; add comments to translators.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix in mda testsuite.

	* mda/tests/mda.inc (MDA_OPTIONS): Always use --no-config.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	One more fix.

2025-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_sieve/actions.c (sieve_action_fileinto): Bail out if
	unable to create output mailbox.

2025-09-23  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.20.91.

2025-09-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix some typos; update POTFILES.in.

2025-09-23  Sergey Poznyakoff  <gray@gnu.org>

	Introduce homedir configuration statement.

	The new statement is used by imap4d and mda family.

	* libmailutils/cli/stdcapa.c (mu_homedir_assert): New function.
	(mu_cli_std_capa): Declare new capability: "homedir".
	* include/mailutils/util.h (mu_homedir_create)
	(mu_homedir_mode): New externs.
	(mu_homedir_assert): New proto.
	* libmailutils/base/interdir.c (mkinterdir): Qualify as static. 
	* imap4d/imap4d.c (capa): Add "homedir". Rewrite handlers for
	create-home-dir and home-dir-mode statements. Mark both as
	deprecated.
	(imap4d_session_setup0): Use mu_homedir_assert.
	(imap4d_check_home_dir): Remove.
	* imap4d/imap4d.h (imap4d_check_home_dir): Remove.
	* mda/lib/script.c (mda_filter_message): Use mu_homedir_assert.
	* mda/lmtpd/lmtpd.c (capa): Use "homedir".
	* mda/mda/mda.c: Likewise.
	* mda/putmail/putmail.c: Likewise. 
	* doc/texinfo/programs.texi: Document changes.
	* doc/texinfo/programs/imap4d.texi: Likewise.
	* doc/texinfo/programs/lmtpd.texi: Likewise.
	* doc/texinfo/programs/mda.texi: Likewise.
	* doc/texinfo/programs/putmail.texi: Likewise.
	* NEWS: Likewise.

2025-09-23  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

	* libmailutils/cfg/driver.c (mu_cfg_field_map): Emit a
	deprecation warning if string is used as an argument.
	* libmailutils/string/strlst.c (mu_string_split): Escape all
	delimiter characters.

2025-09-23  Sergey Poznyakoff  <gray@gnu.org>

	Document changes in de6f346600.

2025-09-19  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libmu_sieve/util.c (mu_sieve_error): Turn on MU_LOGMODE_LOCUS
	mode.

2025-09-19  Sergey Poznyakoff  <gray@gnu.org>

	sieve: fix sigsegv on referencing ${0}

	* libmu_sieve/variables.c (mu_i_sv_expand_variables): Fix NULL
	dereference.

2025-09-19  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_sieve/sieve-gram.y (mu_sieve_machine_destroy): Unload
	registry after destroying memory_pool. This fixes possible
	coredumps in cases when loaded modules have registered cleanup
	routines in the pool.

2025-09-18  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* include/mailutils/wordsplit.h: Rename new symbols (follow-up
	to b8604cd3a5).
	* libmailutils/mailbox/folder.c (mu_folder_enumerate):
	Initialize scn with zeros.
	* libmailutils/string/strlst.c (mu_string_split): \ escapes
	itself and double quote.

2025-09-18  Sergey Poznyakoff  <gray@gnu.org>

	ldap auth: allow for non-attribute data in field map.

	* libmailutils/string/expvar.c (mu_str_expand): Handle single
	and double quotes in the input.
	* libmu_auth/ldap.c (_construct_attr_array): Select as
	attribute names only those values that start with a letter.
	Don't strdup returned values.
	(_mu_entry_to_auth_data): Rename to
	_mu_ldap_entry_to_auth_data. Rewrite, to allow field map to
	contain non-attribute data.
	* NEWS: Document changes.

2025-09-18  Sergey Poznyakoff  <gray@gnu.org>

	Cleanup.

	* include/mailutils/util.h (mutil_parse_field_map): Remove.
	* libmailutils/base/mutil.c (mutil_parse_field_map): Remove
	unused function.
	* libmailutils/mimetypes/grammar.y (yyprint): Remove unused
	function.

2025-09-18  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix * libmailutils/base/amd.c (amd_open): Check for
	directory only if stat succeeded.

2025-09-17  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.20.90.

2025-09-17  Sergey Poznyakoff  <gray@gnu.org>

	Upgrade wordsplit to 29cebfb4df.

2025-09-17  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* libmailutils/string/strlst.c (mu_string_split): Allow for
	escaped delimiters.

2025-09-17  Sergey Poznyakoff  <gray@gnu.org>

	Follow-up to 017aea889b.

	* libmailutils/base/amd.c (amd_open): Create intermediate
	directories, if required.

2025-09-17  Sergey Poznyakoff  <gray@gnu.org>

	Optionally create intermediate directories when creating fs
	objects.

	* include/mailutils/stream.h (MU_STREAM_INTERDIR): New flag.
	* include/mailutils/util.h (mu_mkinterdir)
	(mu_filename_split): New proto.
	(mu_file_basename): New function.
	* libmailutils/base/filename.c (mu_filename_split): New
	function.
	* libmailutils/base/Makefile.am: Add interdir.c
	* libmailutils/base/interdir.c: New file.
	* libmailutils/base/amd.c (amd_open): Reset umask to 0 when
	creating directory.
	* libmailutils/base/permstr.c (mu_parse_stream_perm_string):
	Bugfix.
	* libmailutils/mailbox/fsfolder.c (_fsfolder_open): Create
	intermediate directories if MU_STREAM_INTERDIR is specified.
	* libmailutils/stream/file_stream.c (fd_open): Reset umask to 0
	when opening/creating file. Try mu_mkinterdir to fix ENOENT
	error, if MU_STREAM_INTERDIR flag is set.
	* libmu_sieve/actions.c (fileinto): New tag ":interdir" enables
	creating intermediate directories when opening mailbox.
	(perms_tag_checker): Bugfix: resolve string value.
	* sieve/tests/Makefile.am: Add new tests.
	* sieve/tests/action.at: Remove fileinto: tested separately.
	* sieve/tests/fileinto.at: New testcase.
	* sieve/tests/testsuite.at: Include new test.
	* testsuite/spool/sieve.mbox: Remove extra space.

2025-09-16  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix (testsuite)

2025-09-16  Sergey Poznyakoff  <gray@gnu.org>

	libmu_sieve: bugfixes.

	* include/mailutils/sieve.h (mu_sieve_registry_clone): New
	proto.
	* libmu_sieve/registry.c (mu_sieve_registry_clone): New
	function.
	* libmu_sieve/sieve-gram.y (optimize_x_of): Handle case of
	single argument.
	(dump_node_x_of): Fix output.
	(node_replace): Preserve next nodes.
	(regdup): Use mu_sieve_registry_clone.
	(mu_sieve_machine_clone): Correctly initialize clone's state.
	(mu_sieve_machine_reset): Reset idspace and its counters.
	* libmu_sieve/sieve-priv.h (mu_i_sv_registry_add): New proto.
	* libproto/maildir/tests/isynccreat.at: Don't rely on GNU find
	features.
	* libproto/maildir/tests/isyncwrite.at: Likewise.

2025-07-30  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.20.

2025-07-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix in IMAP SEARCH.

	The UID SEARCH command incorrectly treated message range
	argument as UIDs instead of as message sequence numbers.

	* imap4d/search.c (parse_simple_key): The UID prefix does not
	affect the handling of sequence numbers.
	* imap4d/tests/search.at: Check if UID SEARCH handles sequence
	argument properly.

2025-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.19.90.

	* configure.ac: Raise version number.
	* NEWS: Document the uidnew test.
	* doc/texinfo/sieve.texi: Likewise.

2025-06-14  Sergey Poznyakoff  <gray@gnu.org>

	New sieve test: uidnew.

	* libmu_sieve/extensions/uidnew.c: New file.
	* libmu_sieve/extensions/Makefile.am: Build uidnew.la 
	* libmailutils/tests/url.at: Test handling of "~" when
	MU_URL_PARSE_LOCAL flag is set.
	* libmailutils/url/create.c (_mu_url_ctx_parse_path) If
	MU_URL_PARSE_LOCAL flag is set, expand tilde in the pathname.
	(_mu_url_ctx_parse_host): Tilde pertains to path, not to the
	host.

2025-06-12  Sergey Poznyakoff  <gray@gnu.org>

	maildir: add compatibility tests.

	* libproto/maildir/maildir.c (isync_meta_update): Handle
	unexistent .uidvalidity file.
	* libproto/maildir/tests/Makefile.am: Add new tests.
	* libproto/maildir/tests/testsuite.at: Likewsise.
	* libproto/maildir/tests/isynccreat.at: New file.
	* libproto/maildir/tests/isyncread.at: New file.
	* libproto/maildir/tests/isyncwrite.at: New file.
	* libproto/maildir/tests/attfixup.at: Add copyleft header.
	* libproto/maildir/tests/uidfixup.at: Likewise.
	* libproto/maildir/tests/autodetect.at: Add autotest mode
	marker.
	* libproto/maildir/tests/notify.at: Likewise.

2025-06-12  Sergey Poznyakoff  <gray@gnu.org>

	maildir: create old-fashion delivery IDs in comparibility mode.

	Use URL parameters to explicitly set compatibility mode:

	 detect - detect the mode automatically (default);
	 none, mu - mailutils mode (modern delivery ids);
	 isync - isync mode (old-fashioned delivery ids). 
	* libmailutils/url/expand.c (mu_url_expand_path): Silently
	ignore unrecognized parameters.
	* libproto/maildir/maildir.c (maildir_open): Check URL
	parameters for compatibility mode settings.
	(maildir_scan_unlocked): Set compatibility mode to none, if not
	determined after mailbox scanning (that means an empty
	mailbox).
	(maildir_uniq_create): Rewrite. Create old-fashion delivery
	ids, if in isync compatibility mode. Insert random part id (R)
	when in normal mode.

2025-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Improve maildir compatibility mode.

	* libproto/maildir/maildir.c (maildir_scan_unlocked)
	(maildir_msg_finish_delivery): Update isync .uidvalidity file.
	* include/mailutils/sys/amd.h (amd_get_uidvalidity): New proto.
	* libmailutils/base/amd.c (amd_get_uidvalidity): Make external.

2025-06-09  Sergey Poznyakoff  <gray@gnu.org>

	imap: recognize MU_ATTRIBUTE_SEEN.

	* libproto/imap/select.c (_mu_imap_collect_flags): Unless
	MU_ATTRIBUTE_RECENT is set, raise MU_ATTRIBUTE_SEEN.

2025-06-09  Sergey Poznyakoff  <gray@gnu.org>

	imap: avoid needless rescanning of mailboxes.

	* libproto/imap/mailbox.c (_imap_mbx_scan): Return immediately
	if the mailbox is up to date. All uses updated.
	(_imap_mbx_open): Don't scan the mailbox.

2025-06-09  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libproto/imap/mailbox.c (_imap_mbx_scan): Do notification
	loop only if observable is defined.

2025-06-08  Sergey Poznyakoff  <gray@gnu.org>

	movemail: support uidnext synchronization mode.

	* doc/texinfo/programs/movemail.texi: Document changes.
	* NEWS: Likewise. 
	* movemail/movemail.c: Remove the --reverse option. The
	--max-messages option counts latest messages. New options:
	 --sync=mode sets the synchronization mode (all, uidnext,
	uidl).
	 --sync-dir=dir sets the directory for storing synchronization
	metadata.
	 --uidl now a synonim for --sync=uidl 
	* include/mailutils/mailbox.h (mu_mailbox_get_iterator_at): New
	proto.
	(mu_mailbox_get_iterator): Rewrite as inline function.
	* include/mailutils/sys/imap.h
	(_mu_imap_list_nth_element_is_string)
	(_mu_imap_list_nth_element_is_string_ci)
	(_mu_imap_list_at): Change the type of the position argument to
	size_t.
	* libmailutils/mailbox/mbxitr.c (struct mailbox_iterator): New
	fields: start, stop.
	(mbx_first): Start from itr->start.
	(mbx_finished_p): If stop is set, stop after returning the
	corresponding message.
	(mu_mailbox_get_iterator_at): New function. Returns iterator
	between two given message numbers or UIDs.
	* libproto/imap/mailbox.c (_imap_mbx_get_message): Initialize
	the _get_uid method.
	* libproto/imap/resplist.c (_mu_imap_list_at): Change the type
	of the position argument to size_t. If negative, count position
	from the end of the list. (_mu_imap_list_nth_element_is_string)
	(_mu_imap_list_nth_element_is_string_ci): Change the type of
	the position argument to size_t.
	* libproto/imap/resproc.c (parse_response_code): Fix list
	parsing.
	* libproto/maildir/maildir.c (maildir_create): Reset uidnext.
	(maildir_create): Reset uidnext.
	(maildir_scan0): Scan mailboxes opened for appends as well.
	* libproto/pop/mailbox.c (pop_get_message): Implement the
	_get_uidl method.

2025-06-07  Sergey Poznyakoff  <gray@gnu.org>

	maildir: compatibility mode with old-fashioned delivery
	identifiers.

	In particular, this provides compatibility with mailboxes
	created by isync.

	* include/mailutils/sys/amd.h (amd_update_uidvalidity): New
	proto.
	(MU_AMD_F_SCANNING): New flag.
	* libmailutils/base/amd.c (_amd_prop_create): Set the ro field
	in accordance with the mailbox open flags.
	(_amd_scan0): Avoid recursion. Set MU_AMD_F_INIT_SCAN bit on
	return.
	(amd_update_uidvalidity): New function.
	(amd_update_uidnext): Do nothing if current and proposed values
	are equal.
	* libproto/maildir/maildir.c (MAILDIR_COMPAT_DETECT)
	(MAILDIR_COMPAT_NONE, MAILDIR_COMPAT_ISYNC): New constants.
	(_maildir_data): New fields: compat and cur_uid. Replace
	needs_uid_fixup with update_uidvalidity.
	(struct _maildir_message): New fields: tv, pid, ndlv, flags.
	(reset_uid): Initialize cur_uid.
	(parse_delivery_id): New function.
	(maildir_open): Early attempt to determine MAILDIR_COMPAT_ISYNC
	maildir: if the .uidvalidity exists and its first two lines are
	unsigned integers (uidvalidity and last used uid).
	(maildir_message_alloc): Parse the delivery identifier and
	determine compatibility mode (unless already set), based on
	whether uppercase "U" is used to store the UID.
	(maildir_subdir_scan): Take additional argument indicating
	whether it is the initial mailbox scan. If so, check for
	duplicates (message names that compare equal).
	(maildir_message_fixup): Take the update flag as argument.
	Rewrite the UID fixup logic.
	(maildir_scan_unlocked): Change message incorporation logic.
	Messages in new are assigned explicit UIDs now.
	(string_buffer_format_message_name): Depending on compatibility
	mode, use lower or uppercase "u" attribute.
	(maildir_new_message_name): Store UID in the message name both
	in cur and new.
	(maildir_msg_finish_delivery): Ditto.
	(maildir_message_cmp): Rewrite using parsed out delivery ids.
	(maildir_chattr_msg,maildir_msg_init): Parse delivery id. 
	* mh/sortm.c (sort): Reset uidvalidity after reopening the
	mailbox in read-write mode (see the change to _amd_prop_create,
	above).
	* testsuite/mbop.c: New operation: echo.

2025-06-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix possible NULL pointer dereference.

	* libmailutils/base/assoc.c (mu_assoc_shift): Fix typo in
	conditional.

2025-05-28  Sergey Poznyakoff  <gray@gnu.org>

	Fix coredump in mail.

	* mail/alias.c (alias_expand): Handle NULL argument.

2025-03-24  Jordi Mallach  <jordi@mallach.net>

	Fix missing format arguments for builds with -Wformat-security.

	libmailutils/diag/debug.c (mu_debug_format_spec): Add missing
	"%s" to printf to avoid triggering -Wformat-security.

2025-03-24  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2025-03-22  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.19.

2025-02-26  Sergey Poznyakoff  <gray@gnu.org>

	filters: revise buffer requirements on returning
	mu_filter_more(in|out)put.

2025-02-22  Sergey Poznyakoff  <gray@gnu.org>

	mail: allow for part spec after any message designator (., ^,
	etc).

	* mail/msgset.y (DELIM): New token.
	(yylex): Generate DELIM token when advancing to the next
	argument.
	(msgset production): change syntax using delim nonterminal.
	(msgexpr): Allow for optional delimiter after ! and { and
	before }.
	(msgspec): Allow for leading dot: "dec .2.1" meaning the same
	as "dec ..2.1", i.e. decode subpart 2.1 of the current message.
	(msg): Accept part specifiers after ^ (-), and $ (+).

2025-01-23  orbea  <orbea@riseup.net>

	libproto tests: link using the libtool archives.

	When using slibtool the build fails when it doesn't find
	-lmu_tesh. This can be solved by linking internal dependencies
	with the generated libtool archive (.la) file.

2025-01-07  Sergey Poznyakoff  <gray@gnu.org>

	Fix testsuite (mda & mail) to work with arbitrary default
	mailbox type.

	* mail/testsuite/lib/mail.exp (default_mail_start): Force mbox
	mailbox type.
	* mda/mda/tests/forward.at: Likewise.
	* mda/mda/tests/mda.at: Likewise.
	* mda/tests/mda.sh (dumpmail): Handle only mbox.

2025-01-03  Sergey Poznyakoff  <gray@gnu.org>

	Update doc/texinfo/html.init for use with Texinfo > 6.8.

2025-01-03  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.18.

2025-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Update copyleft statements.

2024-12-31  Sergey Poznyakoff  <gray@gnu.org>

	Require the latest libtool; fix a distcheck failure.

	* configure.ac (AM_INIT_AUTOMAKE): Switch strictness from gnits
	to gnu. Gnits is equivalent to "gnu readme-alpha check-news
	std-options". Among these, std-options causes grief when make
	distcheck is run on a system with a previous mailutils version
	installed, if one of the shared libraries of that version (most
	often, libmuaux.so) are not entirely compatible with those of
	the version being checked. Std-options inserts a Makefile goal
	that runs each installed binary with --help and --version
	option. During make distcheck, that binary will be the one
	installed to the _inst subdirectory. It will expect shared
	libraries from the version of Mailutils it comes from, but the
	runtime loader will link it to the ones installed on the system
	(this is somewhat similar to the effects described in
	https://gray.gnu.org.ua/public/ltbug, although not directly
	related to libtool). Thus, the binary might fail to start, e.g.
	if it doesn't encounter a symbol in the library. To avoid this,
	the "gnits" strictness is replaced with "gnu readme-alpha
	check-news".
	(LT_PREREQ): Require version 2.5.4, which fixes bugs described
	in the link above.
	* bootstrap.conf (bootstrap_epilogue): Remove.
	* patches/ltmain.sh-2.4.6.patch: Remove.
	* patches/ltmain.sh-2.4.7.patch: Remove.

2024-10-30  Sergey Poznyakoff  <gray@gnu.org>

	Various bugfixes.

	* imap4d/namespace.c (namespace_translate_name): Fix use after
	free.
	* imap4d/tests/testclient.c: Increase static buffer size.
	* libmailutils/base/removefile.c (check_parent_access): Fix use
	after free.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_destroy):
	Likewise.
	* libmailutils/mailer/mailer.c (mu_mailer_destroy): Likewise.
	* libmailutils/server/acl.c (mu_acl_destroy): Assign NULL to
	the argument location.
	* mh/mh_format.c (mh_fvm_destroy): Likewise.
	* libmailutils/wordsplit: Pull new version.
	* libmailutils/tests/Makefile.am: Fix rules for building wsp.
	* libmailutils/tests/mailcap.at: Change expected strings.
	* libmu_auth/virtual.c: Remove unused variables.
	* mh/mh_init.c (mh_find_file): Fix argument to mu_diag_output.
	* pop3d/apop.c: Remove unused variables.

2024-10-30  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_scm/mu_scm.c (format_table): Fix typo. Patch by Timothy
	Sample.

2024-10-10  Don Stokes  <don@nz.net>

	Bugfix in mu_utc_offset.

	This fixes incorrect handling of time zones with the offset of
	more than 12 hours out from UTC, e.g. NZ daylight time.

	* libmailutils/datetime/utcoff.c: Use the day of the month to
	account for day changes.

2024-09-02  Sergey Poznyakoff  <gray@gnu.org>

	Update FSF address.

2024-09-01  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in stream ioctl.

	* libmailutils/stream/memory_stream.c (_memory_ioctl): Fix
	improperly used parameter.
	* libmailutils/stream/tcp.c (_tcp_ioctl): Handle
	MU_IOCTL_TRANSPORT_BUFFER.

2024-08-26  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libmailutils/cidr/fromstr.c (mu_cidr_from_string): Mask out
	extra address bits to obtain first IP of the range.
	* libmailutils/tests/strtoc.c: Test this.

2024-07-17  Sergey Poznyakoff  <gray@gnu.org>

	Complement 5380651f84a1e00c5b8ffa27f27851c3cd97981c.

	* libmu_sieve/tests.c (retrieve_envelope): Apply same error
	translation as in retrieve_address.

2024-06-26  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_sieve/load.c (load_module): Produce correct diagnostics
	if "init" not found".

2024-06-26  Sergey Poznyakoff  <gray@gnu.org>

	sieve pipe action: handle error return from mu_stream_close.

2024-06-23  Sergey Poznyakoff  <gray@gnu.org>

	sieve: don't bail out on malformed email addresses.

	* libmu_sieve/tests.c: Handle MU_ERR_EMPTY_ADDRESS as missing
	email address (MU_ERR_NOENT).

2024-06-17  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.17.90.

	* NEWS: Update version numger.
	* configure.ac: Likewise.
	* gnulib.modules: Use gettext-h instead of gettext.
	* libmailutils/filter/Makefile.am: Remove unneeded -I option.

2024-06-17  Sergey Poznyakoff  <gray@gnu.org>

	Makefile.am's: Remove erroneous -I options.

2024-06-13  Sergey Poznyakoff  <gray@gnu.org>

	manual: discuss configuration files used by the mail utility.

2024-06-13  Sergey Poznyakoff  <gray@gnu.org>

	mail: several improvements in the variables interface.

	* include/mailutils/filter.h (mu_iconv_fallback_name): New
	proto.
	* libmailutils/filter/decode.c (mu_iconv_fallback_name): New
	function.
	* mail/mail.c: Use mailvar_init_variables to initialize
	variables that depend on mailutils settings and/or current
	environment.
	* mail/mail.h (mailvar_init_variables): New proto.
	* mail/mailvar.c (mailvar_symbol): New field: init. Provide
	initialization functions for variables that need it.
	(mailvar_init_variables): New function.
	(mail_variable): Sort output lexicographically.

2024-06-13  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mu_get_host_name.

	* libmailutils/base/hostname.c (mu_get_host_name): Initialize
	hints.

2024-06-13  Sergey Poznyakoff  <gray@gnu.org>

	mail: use the mailer capability.

2024-06-12  Sergey Poznyakoff  <gray@gnu.org>

	Provide a debugging category shortcut "all".

	* doc/texinfo/programs.texi: Document the "all"
	pseudo-category.
	* include/mailutils/debug.h (mu_debug_category_match): New
	proto.
	(mu_debug_level_p): Rewrite as inline function.
	(MU_DEBUG_FORMAT_DEFAULT,MU_DEBUG_FORMAT_SHOWUNSET)
	(MU_DEBUG_FORMAT_COMPRESS,MU_DEBUG_FORMAT_SORT): New macros.
	(mu_debug_category_from_string)
	(mu_debug_level_from_string): New protos.
	* libmailutils/diag/debug.c: Change handling of the isset
	field.
	(mu_debug_category_match): Don't check isset.
	(mu_debug_get_category_level): Likewise.
	(mu_debug_enable_category)
	(mu_debug_disable_category): Apply to all categories if
	catn==0.
	(mu_debug_category_from_string): New function.
	(mu_debug_level_from_string): Remove static qualifier.
	(mu_debug_format_spec): Change semantics of the last argument.
	It is a bitmask of:
	 - MU_DEBUG_FORMAT_SHOWUNSET include unset categories;
	 - MU_DEBUG_FORMAT_COMPRESS try to compress output by using the
	"all"
	 shortcut;
	 - MU_DEBUG_FORMAT_SORT sort categories alphabetically;
	* libmailutils/tests/debugspec.at: Add new tests.
	* libmailutils/tests/debugspec.c: New options: -compress,
	-sort, -quiet. Take an optional list of category.level pairs.
	Print enable status (true/false) for each of them.

2024-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in mhn and related tests.

	* mh/mhn.c (store_handler): When piping the output, make sure
	to flush stdout beforhand.
	* mh/tests/mhed: Don't create file named "-".
	* mh/tests/mhn.at: Fix expected output.

2024-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Change handling of libtool bugs.

	* bootstrap.conf (bootstrap_epilogue): Patch installed version
	of ltmain.sh.
	* mu-aux/ltmain.sh: Remove.
	* patches/README: New file.
	* patches/ltmain.sh-2.4.6.patch: New file.
	* patches/ltmain.sh-2.4.7.patch: New file.

2024-03-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo in mailutils dbm dump example.

2024-03-22  Sergey Poznyakoff  <gray@gnu.org>

	Mention nmh scan -file option when discussing MH implementation
	differences.

2024-03-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix ehlo command in the smtp client.

	The bug spotted by Christophe Deleuze in
	https://savannah.gnu.org/patch/?10439

	* libproto/mailer/smtp_capa.c (mu_smtp_capa_test): Issue ehlo
	only when in the corresponding state. Return MU_ERR_NOENT if
	the requested capability is not found, including the case when
	the capability array is null because of one-line ehlo response
	or because plain SMTP is in use.
	* libproto/mailer/smtp_capa_itr.c (mu_smtp_capa_iterator):
	Likewise.
	* libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): Fail if not in
	the MU_SMTP_EHLO state. Set MU_SMTP_MAIL on success.
	* libproto/mailer/smtp_gsasl.c (_mu_smtp_gsasl_auth): Reset
	stat to MU_SMTP_EHLO.
	* libproto/mailer/smtp_starttls.c (mu_smtp_starttls): Likewise.

2024-01-06  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.17.

2024-01-06  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years.

2024-01-06  Sergey Poznyakoff  <gray@gnu.org>

	New dbm function: mu_dbm_break.

	This function deallocates resources allocated by
	mu_dbm_firstkey function. It should be used when breaking from
	a loop iterating over all keys in the database.

	* include/mailutils/dbm.h (mu_dbm_impl): New field: _dbm_break
	(mu_dbm_break): New function.
	* libmu_dbm/break.c: New file.
	* libmu_dbm/Makefile.am (libmu_dbm_la_SOURCES): Add break.c
	* libmu_dbm/berkeley.c (_bdb_close): Close cursor, if
	available.
	(_bdb_break): New method.
	* libmu_dbm/gdbm.c (_gdbm_break): New method.

2023-06-09  Sergey Poznyakoff  <gray@gnu.org>

	Add missing includes.

2023-05-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix definition of -P option in movemail.

2023-05-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix global timeout and transcript statements in pop3d and
	imap4d.

	* include/mailutils/server.h (mu_m_server_config_default_fp):
	New data type.
	(mu_m_server_set_config_default): New prototype.
	* libmailutils/server/msrv.c (_mu_m_server): New field:
	config_default.
	(mu_m_server_set_config_default): New function.
	(mu_m_server_listen): If config_default is initialized, call it
	to initialize the pconf structure. 
	* imap4d/imap4d.c (imap4d_connection): Don't reset idle_timeout
	and imap4d_transcript.
	(imap4d_config_default): New function.
	(main): Initialize the server's config_default function. 
	* pop3d/apop.c (apop_ok): New function.
	* pop3d/pop3d.c (pop3d_mainloop): Don't include timestamp in
	the banner greeting if APOP database is not available.
	(pop3d_config_default): New function.
	(main): Initialize the server's config_default function.
	* pop3d/pop3d.h (apop_ok): New prototype.

2023-05-07  Sergey Poznyakoff  <gray@gnu.org>

	Improve file safety checking routine.

	* libmailutils/base/filesafety.c (mu_file_safety_check): Accept
	symbolic links. Fix memory leak.

2023-05-07  Sergey Poznyakoff  <gray@gnu.org>

	pop3d, imap4d: global tls-mode is used only when the mode to
	use cannot be determined otherwise.

2023-05-04  Sergey Poznyakoff  <gray@gnu.org>

	pop3d, imap4d: if not set explicitly, derive tls mode from the
	port used.

	* NEWS: Version 3.16.90
	* configure.ac: Likewise.
	* imap4d/imap4d.c (main): Use PORT_IMAP4 constant.
	* imap4d/imap4d.h (PORT_IMAP4,PORT_IMAP4S): New defines.
	* imap4d/starttls.c (starttls_server_check): Derive the tls
	mode from the port used or from the global tls mode.
	* include/mailutils/sockaddr.h (mu_sockaddr_get_port): New
	proto.
	* libmailutils/sockaddr/Makefile.am: Add port.c
	* libmailutils/sockaddr/port.c: New file.
	* mu/libexec/shell.c (readline): Minor change.
	* pop3d/cmd.c (stls_server_check): Derive the tls mode from the
	port used or from the global tls mode.
	* pop3d/pop3d.c (main): Use PORT_POP3 constant.
	* pop3d/pop3d.h (PORT_POP3, PORT_POP3S): New defines.

2023-05-03  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mu tool.

	* mu/libexec/shell.c [!WITH_READLINE] (readline): Remove static
	qualifiers.

2023-05-01  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.16.

2023-05-01  Sergey Poznyakoff  <gray@gnu.org>

	Remove leftover uses of gethostby* functions.

	* configure.ac: Remove check for gethostbyname
	* include/mailutils/util.h: Fix comment.
	* imap4d/util.c: Use getaddrinfo.
	* libmailutils/base/hostname.c: Likewise.
	* libmailutils/sockaddr/fromnode.c: Likewise.
	* libmu_auth/virtual.c: Use getnameinfo.

2023-05-01  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

	* NEWS: Update.
	* libmu_scm/tests/testsuite.at: Fix improper use of AT_TESTED.
	* maint/release.mk (GNUPLOAD): New variable.
	* configure.ac: New maintainer option --with-gnupload.

2023-04-30  Sergey Poznyakoff  <gray@gnu.org>

	Switch to newer autotools.

	* configure.ac: Require autoconf 2.71, automake 1.16.2 Don't
	use obsolete macros. Drop support for Berkeley DB 2.
	* gint: Upgrade.
	* gnulib: Upgrade.
	* am/db2.m4: Remove. Support for bdb2 withdrawn.
	* libmu_dbm/berkeley.c: Drop support for bdb2.
	* am/config_paths.m4: Don't use obsolete autoconf macros.
	* am/debug.m4: Likewise.
	* am/enable.m4: Likewise.
	* am/gsasl.m4: Likewise.
	* am/gssapi.m4: Likewise.
	* am/ipv6.m4: Likewise.
	* am/tls.m4: Likewise.
	* mail/mail.h (mailvar_value): Rename bool to boolean to avoid
	eventual conflicts. All uses changed.
	* comsat/comsat.c: Remove the uses of RETSIGTYPE.
	* examples/echosrv.c: Likewise.
	* imap4d/bye.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* imap4d/imap4d.h: Likewise.
	* imap4d/signal.c: Likewise.
	* lib/muaux.h: Likewise.
	* lib/signal.c: Likewise.
	* libmailutils/mailer/progmailer.c: Likewise.
	* libmailutils/server/msrv.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/prompter-tty.c: Likewise.
	* mh/sortm.c: Likewise.
	* pop3d/pop3d.h: Likewise.
	* pop3d/signal.c: Likewise.

2023-02-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix coredump in mail.

	Patch proposed by Dave Love <Dave.Love@manchester.ac.uk>

	* mail/util.c (util_get_charset): Check if charset is not NULL
	before strdup'ing it.

2023-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years.

2022-12-27  Sergey Poznyakoff  <gray@gnu.org>

	Various fixes.

	* NEWS: Document changes.
	* configure.ac: Version 3.15.90
	* libmailutils/stdstream/strerr.c (mu_stdstream_strerr_setup):
	Don't destroy mu_strerr unconditionally, use mu_stream_unref.
	* frm/common.c (format_field_align): Initialize local variable.
	* lib/mailcap.c (mime_context_get_temp_file): Issue diagnostics
	on error.
	(expand_string): Return -1 if the temp file creation fails.
	(create_filter,run_test,run_mailcap): Improve error checking.
	* libmailutils/base/fgetpwent.c (mu_fgetpwent_r): Fix use of
	uninitialized variables.
	* libmailutils/mailbox/msgqlines.c (mu_message_quick_lines):
	Likewise.
	* libmailutils/mime/mimeitr.c (itrdup): Initialize the
	allocated value with zeroes.
	* libmailutils/stream/prog_stream.c (start_program_filter):
	Improve error checking.
	* libmailutils/tests/t-streamshift.c: Use typecasts when
	printing mu_off_t values.
	* libmailutils/url/set-service.c (mu_url_set_service):
	Initialize port.
	* libproto/imap/fetch.c (_fill_response): Fix possible use of
	uninitialized variable.
	* libproto/maildir/maildir.c (maildir_message_name_parse):
	Initialize endval.
	* libproto/mailer/prog.c (url_to_argv): Translate wordsplit
	error code to the mailutils one.
	* libproto/mbox/message.c (env_to_stream): Make sure ref->date
	is null-terminated.
	* libproto/pop/pop3_response.c (mu_pop3_get_response): Don't
	check for non-null receiver before calling mu_cpystr: it copes
	with the case by itself.
	* libproto/pop/pop3_top.c (mu_pop3_top): Always initialize
	status.
	* mail/escape.c (escape_help): Likewise.
	* mail/util.c (util_do_command): Remove unnecessaty
	conditional. Upon successful return from mu_vasnprintf cmd is
	guaranteed to have a non- null value.
	* mda/lib/script.c (mda_filter_message): Bail out if changing
	to the user dir fails.
	* mh/mhn.c (com_send): Fix allowed user responses.
	* mu/libexec/smtp.c (next_name_from_file): Fix the use of
	uninitialized variables.

2022-09-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of overflowing lines in wordwrap streams.

	* libmailutils/stream/wordwrap.c (mu_wordwrap_stream): New
	field: overflow.
	(line_not_empty): New auxiliary function.
	(_wordwrap_flush_line,_wordwrap_write)
	(_wordwrap_flush): Handle line overflow.
	* libmailutils/tests/wordwrap03.at: More tests.

2022-09-14  Sergey Poznyakoff  <gray@gnu.org>

	tlsfdstr: fix error handling.

	* libmu_auth/tlsfdstr.c (_tlsfd_done): Don't close borrowed
	descriptors.
	(mu_tlsfd_stream_create): Avoid both fds being closed on error.

2022-07-18  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/base/mutil.c (mutil_parse_field_map): Fix an
	attempt to free a memory area that hasn't been allocated. Not
	so critical: the bug would be hit only if mu_assoc_install
	failed (which means out of memory condition).

2022-07-03  Sergey Poznyakoff  <gray@gnu.org>

	Fix mh/folder -pack=1 on an empty mailbox.

	* mh/folder.c (action_pack): Return immediately if the mailbox
	is empty.

2022-05-08  Sergey Poznyakoff  <gray@gnu.org>

	Modify .gitignore.

2022-05-08  Sergey Poznyakoff  <gray@gnu.org>

	rdcache_size: return MU_ERR_INFO_UNAVAILABLE if unable to get
	transport stream size.

	This addresses the problem mentioned in the previous commit.

	* libmailutils/stream/rdcache_stream.c (rdcache_size): Return
	MU_ERR_INFO_UNAVAILABLE if mu_stream_size returns EAGAIN,
	EINTR, ENOSYS, or EINPROGRESS.
	* libmailutils/stream/stream.c (mu_stream_seterr): Handle
	MU_ERR_INFO_UNAVAILABLE same way as ENOSYS et al.
	* libmailutils/stream/streamcpy.c (mu_stream_copy_wcb): Same
	handling for: EAGAIN, EINTR, ENOSYS, EINPROGRESS, and
	MU_ERR_INFO_UNAVAILABLE.
	* mh/msgchk.c (checkmail): Likewise.

2022-05-08  Sergey Poznyakoff  <gray@gnu.org>

	rdcache: fix stream size computation.

	Until now, read cache stream incorrectly updated its size when
	it should not. This happened when the stream had cached some
	data, then had been rewound and a read operation performed on
	it.

	* libmailutils/stream/rdcache_stream.c
	(mu_rdcache_stream_max_memory_size): Remove unused global.
	(rdcache_read): Fix stream size computation.
	(rdcache_size): Return cached size only if EOF was hit on
	transport stream, otherwise return its size. This means that
	depending on whether the stream was already cached or not, the
	call to mu_stream_size on rdcache stream may return ENOSYS or
	success.
	* libmailutils/tests/t-rdcache.c: New test program.
	* libmailutils/tests/Makefile.am: Build t-rdcache.
	* libmailutils/tests/testsuite.at: Run t-rdcache.

2022-05-02  Sergey Poznyakoff  <gray@gnu.org>

	Accomodate tests for differences in wc outputs on various
	systems.

	* libproto/mbox/tests/append.at: Strip leading whitespace from
	the wc output.
	* libproto/mbox/tests/lastmsg.at: Likewise.
	* mda/mda/tests/forward.at: Likewise.

2022-04-17  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.15.

	* NEWS: Raise version number
	* configure.ac: Raise version number. Increase shared library
	current interface number.

2022-04-13  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix (imap4d)

	* imap4d/imap4d.c (namespace_section_parser): Return error on
	invalid or empty namespace name.

2022-04-06  Sergey Poznyakoff  <gray@gnu.org>

	Document message part syntax for the mail command.

2022-04-06  Sergey Poznyakoff  <gray@gnu.org>

	mail: error out if a message part is given to the command that
	doesn't support parts.

	* mail/mail.h (MSG_ALLOWPART): New flag.
	* mail/msgset.y: Allow message parts only if MSG_ALLOWPART is
	set. Rewrite as a reentrant parser.
	* mail/decode.c: Allow message parts in sets.
	* mail/write.c: Likewise.

2022-02-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix GSASL stream initialization in imap4d.

	* imap4d/auth_gsasl.c (auth_gsasl): Initialize stream[1],
	unless set after return from ioctl.
	* libmailutils/stream/fltstream.c (filter_ctl): If both streams
	are supplied for MU_IOCTL_OP_SET, combine them into an iostream
	prior to setting the transport pointer.

2022-02-18  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: fix test mode detection.

	* imap4d/imap4d.c (test_mode): Three-state. Initialize to
	"undef".
	(imap4d_mainloop): Don't alter test_mode here.
	(main): Detect test_mode value unless already set earlier.

2022-02-18  Sergey Poznyakoff  <gray@gnu.org>

	Minor change in msrv signal handling.

	* libmailutils/server/msrv.c (set_signal): Catch errors.
	(_mu_m_server.sigtab): Increase size by one. Slot 0 is not
	used.
	(mu_m_server_begin,mu_m_server_restore_signals): Enumerate
	signals starting from 1.

2022-02-12  Sergey Poznyakoff  <gray@gnu.org>

	Minor change in MH testcase.

	* mh/tests/fmtcomp.at (unclosed control): Reflect changed
	wording in parsers produced by bison 3.8.2

2022-02-09  Sergey Poznyakoff  <gray@gnu.org>

	mbox format: preserve trailing newlines in body.

	* libmailutils/stream/streamcpy.c (mu_stream_copy_nl): Append
	an extra \n only unless the last character in stream is a
	newline. Always append an empty line at the end.
	* libproto/mbox/message.c (mboxrd_message_copy_with_uid): use
	regular mu_stream_copy, instead of mu_stream_copy_nl. 
	* mda/tests/input.msg: Remove empty line at the end.
	* mda/lmtpd/tests/lmtpd.at: Ensure expout ends with an empty
	line.
	* mda/mda/tests/forward.at: Likewise.
	* mda/mda/tests/mda.at: Likewise.
	* mda/putmail/tests/putmail.at: Likewise.

2022-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Document changes.

2022-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in _fromrd_encoder.

	See 451ca485. Patch by Kurt Hackenberg.

2022-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Normalize test mbox mailboxes.

2022-02-08  Sergey Poznyakoff  <gray@gnu.org>

	mbox format: don't count terminating empty line as part of
	message.

	* configure.ac: Version 3.14.90
	* NEWS: Version 3.14.90 
	* libproto/mbox/mboxrd.c (scan_message_finalize): Take
	decrement value (n) without additional corrections. All uses
	changed.
	(mailbox_append_message): Fix padding.
	* libproto/mbox/message.c (_msg_stream_setup)
	(mboxrd_message_body_scan,_msg_body_setup): Don't count
	terminating empty line as part of the message body. 
	* libproto/mbox/tests/lastmsg.at: New test.
	* libproto/mbox/tests/Makefile.am: Add new files.
	* libproto/mbox/tests/testsuite.at: Likewise.
	* libproto/mbox/tests/append.at: Test appending to partially
	terminated mailboxes. 
	* libproto/mbox/tests/body.at: Fix expected octet and line
	counts.
	* libproto/mbox/tests/attr.at: Likewise.
	* libproto/mbox/tests/autodetect.at: Likewise.
	* libproto/mbox/tests/count.at: Likewise.
	* libproto/mbox/tests/env.at: Likewise.
	* libproto/mbox/tests/notify.at: Likewise.
	* libproto/mbox/tests/qget.at: Likewise.
	* comsat/tests/testsuite.at: Likewise.
	* imap4d/tests/IDEF0956.at: Likewise.
	* imap4d/tests/fetch.at: Likewise.
	* libmu_scm/tests/mailbox-append-message.at: Likewise.
	* libmu_scm/tests/mailbox-expunge.at: Likewise.
	* libmu_scm/tests/mailbox-get-message.at: Likewise.
	* libmu_scm/tests/mailbox-iterate.at: Likewise.
	* libtests/mime.at: Likewise.
	* mail/tests/align.at: Likewise.
	* mail/tests/hold.at: Likewise.
	* mail/tests/nohome.at: Likewise.
	* mail/testsuite/mail/Followup.exp
	* mail/testsuite/mail/Reply.exp
	* mail/testsuite/mail/folder.exp
	* mail/testsuite/mail/followup.exp
	* mail/testsuite/mail/read.exp
	* mail/testsuite/mail/reply.exp
	* mail/testsuite/mail/tag.exp
	* mail/testsuite/mail/z.exp
	* pop3d/testsuite/pop3d/read.exp
	* readmsg/tests/all.at: Likewise.
	* readmsg/tests/hdr.at: Likewise.
	* readmsg/tests/nohdr.at: Likewise.
	* readmsg/tests/twomsg.at: Likewise.
	* readmsg/tests/weed.at: Likewise.
	* sieve/tests/redirect.at: Likewise.
	* sieve/tests/reject.at: Likewise.

2022-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix mu_stream_read with NULL as 4th argument.

	If called with NULL as its fourth argument (size_t *pread), the
	function should return error if unable to read the requested
	number of bytes.

	* libmailutils/stream/stream.c (mu_stream_read): If pread is
	NULL and less than the requested number of bytes has been read,
	return MU_ERR_READ.
	* libmailutils/tests/t-streamshift.c (stream_verify): Fix size
	calculation.

2022-01-28  Sergey Poznyakoff  <gray@gnu.org>

	Improve performance of the Sieve fileinto action.

	* include/mailutils/assoc.h (MU_ASSOC_LRU): New flag.
	(mu_assoc_pop, mu_assoc_shift): Change signature: second
	argument is char **.
	* libmailutils/base/assoc.c (mu_assoc_install_ref2): Maintain
	LRU ordering, if so requested. mu_assoc_pop, mu_assoc_shift):
	Change type of the second argument to char **. Unless it is
	NULL, store there a copy of the key. 
	* libmu_sieve/sieve-priv.h (mu_sieve_machine): New member:
	mailboxes.
	* libmu_sieve/actions.c (sieve_action_fileinto): Maintain a
	table of output mailboxes. Keep each mailbox open for as long
	as possible. If running out of open files, close the least
	recently used mailbox and retry.
	* libmu_sieve/sieve-gram.y (mu_sieve_machine_destroy): Destroy
	the mailbox table.

2022-01-28  Sergey Poznyakoff  <gray@gnu.org>

	Improve efficiency of operations on flat mailboxes in append
	mode.

	Until now both mboxrd and dotmail preferred mmap over
	unistd-based I/O. This improved performance when reading and
	updating mailboxes, but deteriorated it when operating in
	append mode. To improve performance in append mode, a new
	function (mu_mailbox_stream_create) is introduced, which
	selects the underlying stream for the mailbox file based on the
	requested open mode and the currentstatus of the file itself.
	Both mboxrd and dotmail use this function to initialize mailbox
	stream.

	* include/mailutils/stream.h (mu_mailbox_stream_create): New
	proto.
	* libmailutils/stream/Makefile.am (libstream_la_SOURCES): Add
	mailbox_stream.c
	* libmailutils/stream/mailbox_stream.c: New file.
	* libproto/dotmail/dotmail.c (dotmail_mailbox_init_stream): Use
	mu_mailbox_stream_create.
	* libproto/mbox/mboxrd.c (mboxrd_mailbox_init_stream):
	Likewise.

2022-01-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mboxrd decoder.

	* libmailutils/filter/fromrd.c (_fromrd_decoder): Don't switch
	state if '\n' is received while in S_BOL state.

2022-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in quoted-printable decoder.

	Bug reported by Kurt Hackenberg, see:
	https://lists.gnu.org/archive/html/bug-mailutils/2022-01/msg000
	01.html

	* libmailutils/filter/qpflt.c (_qp_decoder): Fix calculation of
	the number of consumed input characters.

2022-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mboxrd library.

	* libproto/mbox/mboxrd.c (mboxrd_tracker_sync): If mailbox
	becomes empty, reset all uid-related fields. It is especially
	important to reset x_imapbase_len, otherwise expunging all
	messages in the mailbox followed by appending a new message
	would cause mboxrd_flush_unlocked in line 1670 to overwrite a
	random fragment of the newly created message.

2022-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in dotmail.

	* libproto/dotmail/dotmail.c (dotmail_mailbox_init_stream):
	Don't retry opening the file if it mu_mapfile_stream_create
	returned ENOENT, i.e. file does not exist and MU_STREAM_CREAT
	was not specified. Use same flags in both attempts.
	(dotmail_open): Check return from dotmail_mailbox_init_stream.
	(dotmail_tracker_sync): If mailbox becomes empty, reset all
	uid-related fields to 0.

2022-01-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix EOF check with flex >= 2.6.1.

2022-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.14.

2022-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright year.

2021-12-07  Sergey Poznyakoff  <gray@gnu.org>

	amd: Rewrite message scanner.

	* include/mailutils/sys/amd.h (_amd_message) <header_size>: New
	member.
	(MU_AMD_DASHDELIM): New flag.
	* libmailutils/base/amd.c (_amd_message_save): Optionally save
	dash delimiter line (useful for MH).
	(_amd_message_save): Initialize header_size.
	(amd_scan_message): Rewrite as a state mashine. Support
	MH-style dash-line delimiters between header and body.
	(amd_message_stream_open): Close stream on failure.
	(amd_header_fill): Use header_size instead of body_start.
	* libproto/mh/mh.c (_mailbox_mh_init): Set MU_AMD_DASHDELIM
	capability.

2021-12-05  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2021-12-05  Sergey Poznyakoff  <gray@gnu.org>

	amd: use Return-Path and Received headers to save envelope
	information.

	* libmailutils/base/amd.c (_amd_tempstream): New function.
	(_amd_tempfile, _amd_delim): Removed.
	(_amd_message_save): Rewrite using mailutils stream functions.
	Use mu_stream_stat_buffer to count octets and lines. Use
	Return-Path and Received headers to save envelope information.
	* libproto/maildir/tests/append.at: Update expected headers.
	* libproto/mh/tests/append.at: Likewise.
	* mh/tests/pick.at (pick-component, pick-component-or): Use
	mbox2dir -e to create the mailstore. Use --Return-Path option
	for tests.
	* testsuite/mbox2dir.c: New option -e. Rewrite message copying
	routines.

2021-12-05  Sergey Poznyakoff  <gray@gnu.org>

	Improve message append API.

	The new API allows for specifying envelope and attributes
	(status) for the message being appended.

	* include/mailutils/attribute.h (MU_STATUS_BUF_SIZE): Order
	flags lexicographically.
	* include/mailutils/imap.h (mu_imap_append_stream_size)
	(mu_imap_append_stream)
	(mu_imap_append_message): Take envelope and attribute as
	arguments, instead of struct tm, mu_timezone, and flags.
	* include/mailutils/mailbox.h (mu_mailbox_append_message_ext):
	New proto.
	* include/mailutils/sys/amd.h (_amd_data): Change prototype of
	msg_finish_delivery: take additional mu_attribute_t argument.
	* include/mailutils/sys/mailbox.h (_mu_mailbox): Change
	prototype of _append_message: take mu_envelope_t and
	mu_attribute_t as additional arguments.
	* libmailutils/base/amd.c (_amd_message_save): Take
	mu_envelope_t argument.
	(amd_append_message): Take mu_envelope_t and mu_attribute_t
	arguments. Use them to alter message envelope and status.
	* libmailutils/mailbox/attribute.c (mu_attribute_unset_flags):
	Check return from mu_attribute_get_flags.
	(flagtrans): Order alphabetically.
	* libmailutils/mailbox/mailbox.c
	(mu_mailbox_append_message_ext): New function.
	(mu_mailbox_append_message): Rewrite as an alternative entry
	point to mu_mailbox_append_message_ext.
	* libmailutils/mailbox/msgenv.c (message_envelope_date): Give
	MU_HEADER_ENV_DATE higher priority than MU_HEADER_RECEIVED.
	(message_envelope_sender): Give X-Envelope-Sender higher
	priority than Return-Path.
	* libmailutils/stream/message_stream.c
	(mu_message_from_stream_with_envelope): Initialize attribute
	from MU_HEADER_STATUS. 
	* testsuite/mbop.c (mbop_append): Options -attr, -sender, and
	-date can be used to alter message attributes and envelope. 
	* libproto/dotmail/dotmail.c (mailbox_append_message)
	(dotmail_append_message): Take mu_envelope_t and mu_attribute_t
	arguments. Use them to alter message envelope and status.
	* libproto/dotmail/tests/append.at: Test modifying envelope and
	attributes during append.
	* libproto/dotmail/tests/testsuite.at: Force TZ=0. 
	* libproto/imap/appmsg.c (mu_imap_append_message): Take
	mu_envelope_t and mu_attribute_t as arguments.
	* libproto/imap/appstr.c (mu_imap_append_stream): Likewise.
	* libproto/imap/appstrsiz.c (mu_imap_append_stream_size):
	Likewise. Use mu_attribute_t to set message flags and
	mu_envelope_t to set its delivery date. Note, that sender is
	not yet affected.
	* libproto/imap/mailbox.c (_imap_mbx_append_message): Take
	mu_envelope_t and mu_attribute_t as arguments. Use them to
	alter message envelope and status, via mu_imap_append_message.
	Altering envelope is done by amd.c 
	* libproto/maildir/maildir.c (maildir_msg_finish_delivery):
	Take additional mu_attribute_t argument. Use it to alter
	message flags. Change msg->file_name if needed.
	* libproto/maildir/tests/append.at: Test modifying envelope and
	attributes during append. 
	* libproto/mailer/mailbox.c (remote_mbox_append_message): Take
	mu_envelope_t and mu_attribute_t as arguments. Use
	mu_envelope_t to set sender address. mu_attribute_t is ignored,
	as SMTP does not transfer message attributes. 
	* libproto/mbox/mboxrd.c (mailbox_append_message)
	(mboxrd_append_message): Take mu_envelope_t and mu_attribute_t
	as arguments. Use them to alter message envelope and status.
	* libproto/mbox/tests/append.at: Test modifying envelope and
	attributes during append. 
	* libproto/mh/tests/append.at: Test modifying envelope and
	attributes during append. 
	* mail/copy.c (append_to_mailbox): Preserve message status when
	appending.
	* mail/quit.c (mail_mbox_commit): Preserve message status when
	storing it to MBOX.
	* mail/tests/hold.at: Test whether message status is preserved.
	* mu/libexec/imap.c (com_append): Rewrite using the new
	mu_imap_append_stream call.

2021-11-25  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.13.91.

2021-11-25  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* imap4d/idle.c (imap4d_idle): Catch eof
	* libmu_auth/tlsfdstr.c: Add missing include.

2021-11-20  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos.

2021-11-19  Sergey Poznyakoff  <gray@gnu.org>

	Fix a corner case in mu_make_file_name_suf.

	If dir is '/' (optionally followed by another '/'), copy it
	verbatim.

	* libmailutils/string/mkfilename.c (mu_make_file_name_suf):

2021-11-19  Sergey Poznyakoff  <gray@gnu.org>

	Forgotten to add with 22ceaddfb8.

2021-11-19  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory and fd leak in maildir and amd.

	* libmailutils/base/amd.c (amd_expunge): Close and destroy the
	associated message stream.
	* libproto/maildir/maildir.c (maildir_close): Fix erroneously
	reverted condition.

2021-11-13  Sergey Poznyakoff  <gray@gnu.org>

	mail: implement the unread command.

	* mail/unread.c: New file.
	* mail/Makefile.am: Add unread.c
	* mail/mail.h (mail_unread): New proto.
	* mail/table.c: New command "unread" ("U"). 
	* doc/texinfo/programs/mail.texi: Document the unread command.
	* NEWS: Likewise.

2021-11-03  Sergey Poznyakoff  <gray@gnu.org>

	Free allocated memory on exit.

	See also 91d35ab2ee.

	* include/mailutils/cfg.h (mu_cfg_section): New members:
	ident_storage and label_storage.
	* libmailutils/cfg/driver.c (mu_config_destroy_container): Free
	the storage allocated for ident and label. Do this onlyw if the
	decreased refcount hits zero.
	(mu_config_container_register_section): Assign allocated
	strings to ident_storage and label_storage.
	(mu_config_root_register_section): Register an onexit routine
	for freeing the allocated memory.
	* libmailutils/cli/capa.c (capa_free): Register an onexit
	routine for freeing the allocated memory.
	* libmailutils/opt/progname.c (mu_set_program_name): Likewise.

2021-11-03  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libmailutils/stdstream/basestr.c (std_log_bootstrap): Mark
	stream as open.

2021-11-03  Sergey Poznyakoff  <gray@gnu.org>

	Free some allocated memory on exit.

	This eliminates certain "memory leaks", that have little (if
	any) practical importance, bu make leak detection tools overly
	vociferous.

	* libmailutils/base/monitor.c (static_monitor_dealloc): New
	function.
	(mu_monitor_rdlock, mu_monitor_wrlock): Install
	static_monitor_dealloc as onexit handler.
	* libmailutils/filter/filter.c (filter_dealloc): New function:
	deallocate filter_list.
	(mu_filter_get_list): Install filter_dealloc as onexit handler.
	* libmailutils/locus/ident.c (nametab_dealloc): New function.
	(mu_ident_ref): Install nametab_dealloc as onexit handler.
	* libmailutils/stdstream/basestr.c (std_log_bootstrap): Unref
	transport after setting it up to log stream.
	(stdstream_flushall): Call mu_stream_destroy instead of
	mu_stream_flush.

2021-11-03  Sergey Poznyakoff  <gray@gnu.org>

	Move mimetypes support into the library.

	* configure.ac: Build libmailutils/mimetypes/Makefile
	* include/mailutils/Makefile.am: New header mimetypes.h
	* mimeview/mimeview.h: moved from include/mailutils/mimetypes.h
	* include/mailutils/sys/Makefile.am: Add mimetypes.h
	* include/mailutils/sys/mimetypes.h: New file.
	* include/mailutils.h: Include mailutils/mimetypes.h
	* libmailutils/Makefile.am: Build mimetypes.
	* libmailutils/mimetypes/.gitignore: New file.
	* libmailutils/mimetypes/eval.c: New file.
	* libmailutils/mimetypes/grammar.y: Moved from
	mimeview/grammar.y
	* libmailutils/mimetypes/lexer.l: Moved from mimeview/lexer.l.
	* libmailutils/diag/debcat: Add mimetypes.
	* mimeview/Makefile.am: Update.
	* mimeview/tests/testsuite.at: Change debug level. 
	* include/mailutils/stream.h (mu_fd_stream_create): filename is
	const.
	* libmailutils/stream/file_stream.c: Likewise.

2021-11-02  Sergey Poznyakoff  <gray@gnu.org>

	Mimeview: redo the API; rewrite as reentrant scanner/parser.

	* include/mailutils/yyloc.h: Formatting change.
	* mimeview/grammar.y: Rewrite as a reentrant parser.
	* mimeview/lexer.l: Rewrite as a reentrant scanner. Use flex
	interface to bison.
	* mimeview/mimeview.c: Use new API.
	* mimeview/mimeview.h: Remove most prototypes. (mimetypes_open,
	mu_mimetypes_close) (mu_mimetypes_stream_type,
	mu_mimetypes_file_type)
	(mu_mimetypes_fd_type): New API.
	* mimeview/tests/testsuite.at (multiple error recovery): Fix
	expected location of error recovery.

2021-11-01  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in mimeview/grammar.y.

2021-11-01  Sergey Poznyakoff  <gray@gnu.org>

	Require GNU bison and flex.

	* am/bison.m4: Use AC_PATH_PROG.
	* am/flex.m4: Likewise.
	* configure.ac: Remove MU_YLWRAP.
	* include/mailutils/yyloc.h (YYLTYPE): Remove. This needs be
	defined in each grammar source individually.
	* mu-aux/Makefile.am: Remove gylwrap.
	* mu-aux/gylwrap: Remove. 
	* libmailutils/cfg/Makefile.am: Rewrite rules for building
	grammars and lexers.
	* libmailutils/datetime/Makefile.am: Likewise.
	* libmu_sieve/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* mimeview/Makefile.am: Likewise. 
	* libmailutils/cfg/gylwrap.conf: Remove.
	* libmailutils/datetime/gylwrap.conf: Remove.
	* libmu_sieve/gylwrap.conf: Remove.
	* mh/gylwrap.conf: Remove.
	* mimeview/gylwrap.conf: Remove. 
	* libmailutils/cfg/lexer.l: Use %option prefix
	* libmu_sieve/sieve-lex.l: Likewise.
	* mh/mh_alias_lex.l: Likewise.
	* mimeview/lexer.l: Likewise. 
	* libmailutils/cfg/parser.y: Use api.prefix and %code requires.
	* libmailutils/datetime/parsedate.y: Likewise.
	* mh/mh_alias_gram.y: Likewise.
	* mh/mh_fmtgram.y: Likewise.
	* mh/pick-gram.y: Likewise.
	* libmu_sieve/sieve-gram.y: Likewise.
	* mimeview/grammar.y: Likewise. 
	* testsuite/lib/mailutils.exp (mu_create_config): Fix source
	location.

2021-09-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix timezone calculation (see
	https://savannah.gnu.org/bugs/?61239)

	* libmailutils/datetime/utcoff.c (mu_utc_offset): Fix the
	timezone correction.

2021-08-27  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/stream/stream.c (mu_stream_timed_getdelim): If
	buffer points to NULL, assume size = 0.

2021-08-27  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* imap4d/io.c (imap4d_init_tls_server): Fix inverted condition.
	* pop3d/extra.c (pop3d_init_tls_server): Likewise.

2021-08-26  Sergey Poznyakoff  <gray@gnu.org>

	Test TLS streams.

	* configure.ac: Configure test directory in libmu_auth
	* libmu_auth/Makefile.am: Likewise.
	* libmu_auth/tests/.gitignore: New file.
	* libmu_auth/tests/Makefile.am: New file.
	* libmu_auth/tests/atlocal.in: New file.
	* libmu_auth/tests/genfile.c: New file.
	* libmu_auth/tests/testsuite.at: New file.
	* libmu_auth/tests/tls.at: New file.
	* libmu_auth/tests/tlscpy.c: New file. 
	* pop3d/cmd.c: Fix typo.

2021-08-25  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.13.90.

2021-08-25  Sergey Poznyakoff  <gray@gnu.org>

	New function: mu_starttls.

	* libmu_auth/tlsfdstr.c (mu_tlsfd_stream_create): Accept
	conf==NULL.
	(mu_starttls): New function.
	* include/mailutils/tls.h (mu_starttls): New proto. 
	* include/mailutils/imapio.h (mu_imapio_get_transport)
	(mu_imapio_set_transport): New functions.
	* libmailutils/imapio/transport.c (mu_imapio_get_transport)
	(mu_imapio_set_transport): New functions.
	* libmailutils/stream/iostream.c (mu_iostream_create): Accept
	NULL out stream.
	* libmailutils/stream/tcp.c: Support MU_IOCTL_FD
	(_tcp_instance): New member fd_borrowed.
	(_tcp_close): Don't close fd if fd_borrowed is set.
	(_tcp_ioctl): Handle MU_IOCTL_FD.
	* libmailutils/stream/xscript-stream.c (_xscript_ctl): Accept
	pstr[1] == NULL.
	* libmu_auth/notls.c (mu_tlsfd_stream_create)
	(mu_tlsfd_stream2_convert)
	(mu_starttls): New placeholders. 
	* libproto/imap/folder.c (_mu_imap_folder_open): Use
	mu_tlsfd_stream_convert. Fix stream leak.
	* libproto/imap/starttls.c (mu_imap_starttls): Use mu_starttls.
	* libproto/mailer/smtp.c (smtp_open): Use
	mu_tlsfd_stream_convert.
	* libproto/mailer/smtp_starttls.c (mu_smtp_starttls): Use
	mu_starttls.
	* libproto/pop/pop3_stls.c (mu_pop3_stls): Likewise.
	* libproto/pop/mailbox.c (pop_open): Use
	mu_tlsfd_stream_convert. Fix stream leak.
	* mu/libexec/imap.c (com_connect): Use mu_tlsfd_stream_convert.
	Fix stream leak.
	* mu/libexec/pop.c: Likewise.
	* mu/libexec/smtp.c: Likewise. 
	* imap4d/io.c (imap4d_init_tls_server): Use mu_starttls.
	* pop3d/extra.c: Likewise.

2021-08-25  Sergey Poznyakoff  <gray@gnu.org>

	New function mu_tlsfd_stream2_convert.

	* libmu_auth/tlsfdstr.c (mu_tlsfd_stream_create): Remove last
	argument. All uses changed.
	(mu_tlsfd_stream2_convert): New function.
	* include/mailutils/tls.h (mu_tlsfd_stream_create): Change
	signature (flags removed).
	(mu_tlsfd_stream2_convert): New proto.
	(mu_tlsfd_stream_convert): New inline function.
	* libmailutils/diag/errors (MU_ERR_TRANSPORT_GET)
	(MU_ERR_TRANSPORT_SET): New error codes.
	* imap4d/io.c (imap4d_init_tls_server): Use
	mu_tlsfd_stream2_convert.
	* pop3d/extra.c (pop3d_init_tls_server): Use
	mu_tlsfd_stream2_convert.

2021-08-25  Sergey Poznyakoff  <gray@gnu.org>

	Use timed I/O and fd-based TLS for pop3d.

2021-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Intermediate streams: propagate _MU_STR_EVENT_CLRFLAG to the
	underlying transport.

	* libmailutils/stream/fltstream.c: Propagate mu_stream_clearerr
	to the transport stream.
	* libmailutils/stream/iostream.c: Likewise.
	* libmu_auth/tls.c: Likewise.
	* libmu_auth/tlsiostr.c: Likewise.
	* libmu_auth/tlsfdstr.c (_tlsfd_read, _tlsfd_write): Translate
	GNUTLS_E_TIMEDOUT to MU_ERR_TIMEOUT.
	* imap4d/bye.c (imap4d_bye_command): Clear stream error on
	ERR_TIMEOUT. ---

2021-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Attempt to simplify TLS streams.

	* libmu_auth/tlsfdstr.c: New TLS stream implementation.
	* include/mailutils/tls.h (mu_tls_config): New field:
	handshake_timeout.
	(mu_tlsfd_stream_create): New proto.
	* libmu_auth/Makefile.am: Compile tlsfdstr.c
	* libmu_auth/tlsconf.c (tls_canned_param): New configuration
	statement: tls.handshake_timeout
	* doc/texinfo/programs.texi: Document the tls.handshake-timeout
	statement.
	* imap4d/io.c (io_setio, imap4d_init_tls_server): Use
	mu_tlsfd_stream_create.
	* imap4d/starttls.c (global_tls_conf): Initialize
	handshake_timeout.

2021-08-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of MU_IOCTL_SUBSTREAM in iostream.

	* libmailutils/stream/iostream.c (_iostream_ctl): Fix handling
	of MU_IOCTL_SUBSTREAM (get/set) requests.
	* imap4d/io.c (io_setio): Unreference the source stream.
	(imap4d_init_tls_server): Fix reference decrement for
	tlsstream.
	* pop3d/extra.c (pop3d_setio): Unreference the source stream.
	(pop3d_init_tls_server): Fix reference decrement for tlsstream.

2021-08-21  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: Set timeouts for I/O operations during handshake.

	* imap4d/io.c (io_setio): Set I/O timeout for pull functions
	during the handshake.
	* libmu_auth/tls.c: Fix debugging output.
	* libmu_auth/tlsiostr.c (_tls_io_read): Improve error
	diagnostics.

2021-08-21  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: switch to timed stream I/O.

	* imap4d/idle.c (imap4d_idle): Use mu_stream_timed_getline.
	* imap4d/imap4d.c (imap4d_mainloop): Remove use of
	io_wait_input.
	* imap4d/imap4d.h (io_wait_input): Remove.
	* imap4d/io.c (io_wait_input): Remove.
	(io_getline): Rewrite using mu_stream_timed_getline.
	(imap4d_tokbuf_getline): Likewise.
	(check_input_err): Handle MU_ERR_TIMEOUT.

2021-08-21  Sergey Poznyakoff  <gray@gnu.org>

	Implement "timed" versions of the stream read-up-to-delimiter
	operations.

	* include/mailutils/stream.h (MU_IOCTL_TIMEOUT): New ioctl
	code.
	(mu_stream_timed_readdelim,mu_stream_timed_readline): New
	protos.
	(mu_stream_readdelim,mu_stream_readline,mu_stream_getdelim)
	(mu_stream_getline): Rewrite as inline functions.
	* include/mailutils/datetime.h (mu_timeval_cmp, mu_timeval_add)
	(mu_timeval_sub): New inline functions for operations over
	struct timeval.
	* include/mailutils/sys/file_stream.h (_mu_file_stream): New
	member: io_timeout.
	* libmailutils/diag/errors (MU_ERR_TIMEOUT, MU_ERR_SET_TIMEOUT)
	(MU_ERR_WRITE, MU_ERR_TLS): New error codes.
	* libmailutils/stream/file_stream.c (fd_read,fd_write): Take
	into account I/O timeout.
	(fd_ioctl): Handle MU_IOCTL_TIMEOUT.
	* libmailutils/stream/stream.c (mu_stream_timed_readdelim)
	(mu_stream_timed_readline): New functions.
	* libmu_auth/tls.c (_tls_open): Special handling for time-out
	errors.
	* libmailutils/stream/iostream.c (_iostream_ctl): Pass
	MU_IOCTL_TIMEOUT to the transport stream.

2021-08-19  Sergey Poznyakoff  <gray@gnu.org>

	Provide program name for mu shell utilities.

	* mu/libexec/imap.c (main): Set program name.
	* mu/libexec/pop.c: Likewise.
	* mu/libexec/smtp.c: Likewise.

2021-08-05  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.13.

2021-07-27  Sergey Poznyakoff  <gray@gnu.org>

	Prefer User-Agent header over X-Mailer.

	* NEWS: Update.
	* doc/texinfo/programs/mail.texi: Update.
	* include/mailutils/header.h (MU_HEADER_USER_AGENT): New
	define.
	* mail/mail.c (default_setup): Set useragent
	* mail/mail.h (mailvar_name_useragent): New define.
	* mail/mailline.c (header_generator): Add MU_HEADER_USER_AGENT.
	* mail/mailvar.c: Mew variable: "useragent". Retain "xmailer"
	as an alias.
	* mail/send.c (mail_compose_send): Add the User-Agent header if
	the "useragent" variable is set.
	* libmailutils/tests/hdrcpy.at: Use User-Agent instead of
	X-Mailer.
	* mail/tests/send.at: Likewise.
	* mail/tests/sendbyname.at: Likewise.
	* mail/tests/sendrec.at: Likewise.
	* mail/testsuite/mail/Followup.exp: Likewise.
	* mail/testsuite/mail/Reply.exp: Likewise.
	* mail/testsuite/mail/reply.exp: Likewise.
	* mail/testsuite/mail/send.exp: Likewise.
	* mh/repl.c: Likewise.
	* mh/send.c: New .mtstailor vareiable "user-agent".

2021-07-27  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite tests for interactive mail features in expect.

	After 4befcfd015 interpolation escapes can't be tested using
	autotest. Move them to DejaGNU testsuite.

	* mail/tests/Followup.at: Remove.
	* mail/tests/Reply.at: Remove.
	* mail/tests/followup.at: Remove.
	* mail/tests/reply.at: Remove.
	* mail/tests/Makefile.am: Remove these tests.
	* mail/tests/testsuite.at: Likewise.
	* mail/.gitignore: Fix the entry for mail. 
	* mail/testsuite/mail/Followup.exp: New test.
	* mail/testsuite/mail/Reply.exp: New test.
	* mail/testsuite/mail/followup.exp: New test.
	* mail/testsuite/mail/reply.exp: New test.
	* mail/testsuite/mail/DISTFILES: Add these files.
	* mail/testsuite/lib/mail.exp (mail_version): Don't print the
	version number.
	* mail/testsuite/mail/write.exp: Preserve current working
	directory.

2021-07-19  Sergey Poznyakoff  <gray@gnu.org>

	Fix in quoted-printable decoder.

	* libmailutils/filter/qpflt.c (_qp_decoder): Accept soft line
	breaks (RFC 2045, 6.7, page 19)

2021-07-19  Sergey Poznyakoff  <gray@gnu.org>

	mail: disable compose escapes in non-interctive mode.

	* NEWS: Document changes.
	* doc/texinfo/programs/mail.texi: Document changes.
	* mail/send.c (mail_compose_send): Recognize escapes only in
	interactive mode.

2021-07-16  Sergey Poznyakoff  <gray@gnu.org>

	Rename the FROMRB filter to FROMRD.

	Old name is retained as an alias.

2021-07-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix stream reference bug in mu_filter_stream_create.

	If the mu_filter_xcode_t function failed in mu_filter_init
	request, mu_filter_stream_create would leave the transport
	reference counter incremented by one.

	* libmailutils/stream/fltstream.c (mu_filter_stream_create): On
	failure, decrement reference counter of transport stream.
	* libmailutils/tests/fltcnt.c: Test for the above bug as well.

2021-07-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix stream reference bug in mu_filter_chain_create family
	functions.

	This change affects the following two functions:
	mu_filter_chain_create, mu_filter_chain_create_pred. In
	previous versions, if these functions failed to create the
	requested filter chain, they decremented reference counter of
	their transport (input stream) argument.

	This change restores the proper behavior:

	 - On success, reference counter is incremented by 1.
	 - On error, reference counter doesn't change. 
	* libmailutils/filter/fltchain.c (_add_next_link): Make sure
	the transport reference counter does not change.
	* libmailutils/tests/Makefile.am: Add new auxiliary program and
	test case.
	* libmailutils/tests/fltcnt.at: New file.
	* libmailutils/tests/fltcnt.c: New file.
	* libmailutils/tests/testsuite.at: Include new test.

2021-07-14  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libmailutils/stream/streamref.c
	(mu_streamref_create_abridged):Don't reposition the underlying
	stream to beginning.

2021-07-13  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libproto/imap/fetch.c (_fill_response): Tolerate NIL date
	field.
	* libproto/imap/mailbox.c (__imap_msg_get_stream): Seek to the
	end, instead of computing stream size.
	* libproto/mbox/mboxrd.c (mailbox_append_message): If all
	methods of determining envelope size fail, assume epoch instead
	of bailing out.

2021-06-11  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix descriptions of command arguments in help output.

2021-06-11  Sergey Poznyakoff  <gray@gnu.org>

	fix mail '| cat >/tmp/save'

	* mail/send.c (msg_to_pipe): Run command via shell.

2021-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of MIME messages that have only one part.

	* libmailutils/mime/mime.c (_mime_part_size): Fix handling of
	one part MIME messages. Don't touch psize memory in case of
	error.
	(_mime_body_stream_read): Fix handling of one part MIME
	messages. Previous implementation used to add an extra newline
	at the end.
	* mh/tests/mhn.at: Reflect the above changes.
	* sieve/tests/vacation.at: Reflect the above changes.

2021-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo.

	* mail/util.c (util_outfilename): Remove extra closing
	parenthesis.

2021-06-10  Sergey Poznyakoff  <gray@gnu.org>

	Update docs; improve mailx compatibility mode.

	* doc/texinfo/programs/mail.texi (Saving and Recording): New
	section.
	* mail/mailvar.c: Make sure escape is a single character.
	* mail/util.c (util_outfilename): In mailx compatibility mode,
	assume outfilename_local.

2021-06-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks (mboxrd and mail)

	* libproto/mbox/mboxrd.c (mboxrd_rescan_unlocked): Free buf.
	(mboxrd_detect): Destroy str when no longer needed.
	* mail/copy.c (mail_copy0): Free allocated memory. Create file
	in cwd if util_outfolder_name return NULL.
	* mail/exit.c (mail_exit): Destroy mbox.
	* mail/util.c (util_range_msg): Use msgset_free instead of
	plain free.

2021-06-10  Sergey Poznyakoff  <gray@gnu.org>

	Provide several ways of creating the outgoing file name.

	Several mail commands store message in a file named by its
	recipient (or sender) in the "folder" directory (these commands
	are: Copy, Save, Mail, followup, Followup). As per POSIX, the
	local part of the email address serves as the file name. There
	may be cases, however, when using the entire email would be
	preferable.

	This commit introduces new mail variable "outfilename" that
	controls how the file name is generated. Its default value is
	"local", which means use the email local part. Other possible
	values are: "email", to save messages in a file named by entire
	email, and "domain", to save them in a file named by domain
	part of the email.

	* NEWS: Document changes.
	* doc/texinfo/programs/mail.texi: Document changes.
	* mail/mail.c (default_setup): Set outfilename=local.
	* mail/mail.h (mailvar_name_outfilename): New define.
	(outfilename_mode): New extern.
	(util_outfilename): New proto.
	* mail/mailvar.c: New variable: "outfilename".
	* mail/send.c (mail_compose_send): Use util_outfilename to form
	outgoing file name.
	* mail/util.c (outfilename_mode): New global.
	(util_outfilename): New function.
	(util_message_sender): Use util_outfilename.

2021-06-09  Sergey Poznyakoff  <gray@gnu.org>

	mail: implement the fullnames variable.

	* NEWS: Document changes.
	* doc/texinfo/programs/mail.texi: Likewise.
	* mail/mail.c (default_setup): Set fullnames.
	* mail/mail.h (mailvar_name_fullnames): New define.
	* mail/mailvar.c (fullnames): New variable.
	* mail/reply.c (compose_remove_personal): New function.
	(respond_msg,respond_all): Call compose_remove_personal if
	fullnames is not set.

2021-06-09  Sergey Poznyakoff  <gray@gnu.org>

	Add tests for mail send/reply/followup commands.

	* mail/mail.c (main): Fix exit status in send mode.
	* mail/tests/Makefile.am: Add new tests.
	* mail/tests/testsuite.at: Likewise.
	* mail/tests/atlocal.in (MAILER): New variable.
	* mail/tests/Followup.at: New file.
	* mail/tests/Reply.at: New file.
	* mail/tests/followup.at: New file.
	* mail/tests/reply.at: New file.
	* mail/tests/send.at: New file.
	* mail/tests/sendbyname.at: New file.
	* mail/tests/sendrec.at: New file.

2021-06-09  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix semantics of mail sending and saving commands.

	* NEWS: Document changes.
	* doc/texinfo/programs/mail.texi: Document changes.
	* mail/Makefile.am (mail_SOURCES): Remove followup.c
	* mail/followup.c: Remove.
	* mail/mail.c: Fix the -F option. Rewrite send mode by calling
	mail_send directly.
	* mail/mail.h (mailvar_name_byname): Remove.
	(mail_send0): Rename to mail_compose_send. All uses changed.
	(util_message_sender): New function.
	* mail/mailvar.c (mailvar_tab): Remove the "byname" variable.
	"outfolder": Accept string and boolean values.
	(print_descr): Handle hard newlines.
	(mailvar_get): Use mailvar_type_whatever to test whether a
	variable is set, regardless of its type.
	* mail/reply.c: Rewrite to match POSIX standard. This affects
	the following commands: "reply", "Reply", "followup",
	"Followup".
	* mail/send.c (compose_header_set): Use util_merge_addresses
	when operating on address headers.
	(send_message): In mailx compatibility mode, assume the
	sendmail:// scheme.
	(mail_send0): Rename to mail_compose_send. Add Date header
	before saving the message, to make sure
	mu_mailbox_append_message won't bail out.
	* mail/table.c: New command: "Mail".
	* mail/testsuite/mail/send.exp: Fix expected output.
	* mail/testsuite/mail/write.exp: Likewise.
	* mail/util.c (util_message_sender): New function.
	(util_get_sender): Rewrite using util_message_sender.
	(util_outfolder_name,util_save_outgoing): Rewrite from scratch,
	Ensure mailx compatibility,
	* mail/write.c (mail_write): Don't use outfolder. 
	* testsuite/mockmail.c: Support -i and -v options.
	* testsuite/mockmail.at: Unset MAIL_DUMP when testing.

2021-06-08  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libproto/mbox/mboxrd.c (mailbox_append_message): Don't
	overwrite the error code.

2021-06-07  Sergey Poznyakoff  <gray@gnu.org>

	mail: Add a Date: header before sending the message.

	* mail/send.c (message_add_date): New function.
	(mail_send0): Call message_add_date before sending the message.

2021-06-06  Sergey Poznyakoff  <gray@gnu.org>

	mail: revamp parsing of adresses in send mode.

	In particular, this fixes parsing of addresses with comma in
	the local part.

	* include/mailutils/address.h (MU_ADDRESS_HINT_INITIALIZER):
	New define.
	* libmailutils/address/addrstream.c (mu_stream_format_address):
	Format local user names without surrounding angle quotes.
	* mail/mail.h (util_header_expand): Rename to
	util_header_expand_aliases. All uses changed.
	(util_address_expand_aliases): New function.
	* mail/send.c (compose_header_set): Expand aliases if
	inplacealiases is set. Avoid useless recursion.
	* mail/util.c (send_message): Create addresses via
	mu_address_create_hint to avoid appending local domain to the
	unqualified user names.
	(mail_send0): Likewise.
	(util_address_expand_aliases): New function.
	(util_header_expand): Rename to util_header_expand_aliases. Use
	util_address_expand_aliases and regular address parsing
	functions instead of wordsplit. Unwrap header values.

2021-05-25  Sergey Poznyakoff  <gray@gnu.org>

	Test IMAP folder scanning.

	* imap4d/imap4d.c (prefix_section_parser): Use
	namespace_encode_delim.
	* imap4d/imap4d.h (namespace_decode_delim)
	(namespace_encode_delim): New protos.
	* imap4d/list.c (list_ref): Convert delimiters in the wcard to
	/.
	* imap4d/namespace.c (namespace_decode_delim)
	(namespace_encode_delim): New functions. 
	* imap4d/tests/testclient.c: New auxiliary program.
	* imap4d/tests/.gitignore: Add testclient.
	* imap4d/tests/Makefile.am: Add new tests
	* imap4d/tests/atlocal.in: Include libproto/imap/tests in the
	PATH.
	* imap4d/tests/clt_list.at: New file.
	* imap4d/tests/list.at: Test delimiter translation.
	* imap4d/tests/testsuite.at: Add new tests. 
	* libproto/imap/tests/imapfolder.c: Sort the resulting lists.
	Use quoting on output.

2021-05-25  Sergey Poznyakoff  <gray@gnu.org>

	imap4d LIST: discern between implementation-defined and
	required behavior.

	* imap4d/list.c (match_pfx): Return true if ref is "pfx/",
	where / stands for a namespace delimiter.
	* imap4d/namespace.c (prefix_translate_name): namespace prefix
	is required to end with a delimiter.
	* imap4d/tests/list.at: Make sure all reference arguments that
	refer to directories end in a hierarchy delimiter.

2021-05-23  Sergey Poznyakoff  <gray@gnu.org>

	fix memory leak in folder scanner.

	* libmailutils/mailbox/folder.c (mu_folder_enumerate): Set the
	destroy_item function on the created list.
	* libmailutils/mailbox/fsfolder.c (list_helper): Free the resp
	structure when it is no longer needed.

2021-05-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix the previous commit: take into account "" mailbox names.

	* libproto/imap/folder.c (_mu_imap_folder_separator): Use empty
	mailbox name to get the hierarchy delimiter.
	* libproto/imap/genlist.c: Take into account eventual hierarchy
	delimiter queries.

2021-05-22  Sergey Poznyakoff  <gray@gnu.org>

	folder scan returns mailbox names without the leading directory
	prefix.

	For example, suppose folder /foo/bar contains mailboxes a, b,
	and c. Then scanning the mu_folder_t object for '/foo' will
	return 'bar/a', 'bar/b', and 'bar/c'. Scanning the mu_folder_t
	for '/foo/bar'

	 will return 'a', 'b', and 'c', and so on. 
	* libmailutils/string/mkfilename.c (mu_make_file_name_suf):
	Reasonable handling of corner cases. Document its behavior. 
	* libmailutils/mailbox/fsfolder.c (struct folder_scan_data):
	New member: prefix_len
	(list_helper): Return the portion of the file name after the
	base directory prefix.
	(_fsfolder_list): Initialize sdata.prefix_len.
	* libmailutils/tests/fsfolder.c: Remove prefix handling code.
	* libmailutils/tests/fsfolder00.at: Change expectations.
	* libmailutils/tests/fsfolder02.at: Likewise.
	* libmailutils/tests/fsfolder03.at: Likewise.
	* libmailutils/tests/fsfolder04.at: Likewise. 
	* include/mailutils/sys/imap.h (struct _mu_imap): New members:
	separator and prefix_len.
	* libproto/imap/folder.c (_mu_imap_folder_separator): New
	function.
	(_mu_imap_folder_pathname): New function.
	(_mu_imap_folder_list): Prefix the original refname with the
	base directory of the folder.
	(_mu_imap_folder_lsub,_mu_imap_folder_subscribe)
	(_mu_imap_folder_unsubscribe,_mu_imap_folder_delete)
	(_mu_imap_folder_rename): Adjust input mailbox names.
	* libproto/imap/genlist.c (list_untagged_handler): Return the
	portion of the file name after the base directory prefix.
	* libproto/imap/tests/imapfolder.c: Minor change.

	Update for changed folder behavior 
	* imap4d/list.c (struct refinfo): Replace dirlen with delim - a
	character to be inserted between the original reference and
	mailbox name.
	(list_fun): Insert delimiter, if required.
	(list_ref): Set refinfo.delim, unless the reference prefix
	already ends with a delimiter or is the same as the namespace
	prefix.

	Mail 'folders' command: add support for remote folders. 
	* mail/folders.c: Handle remote folders correctly.
	* mail/mail.h (util_get_folder): New proto.
	* mail/mailline.c (struct filegen): Remove path_len.
	(new_folder): Rename to util_get_folder and move to util.c
	(filegen_init): Initialize prefix_len from the argument.
	* mail/util.c (util_get_folder): New function.

2021-05-21  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mu_list_clear.

	The bug affected imap client code, in particular.

	* libmailutils/list/clear.c (mu_list_clear): Reset list item
	count.

2021-05-01  Sergey Poznyakoff  <gray@gnu.org>

	Revise the mailbox locking functions.

	The locker is created by the following call:

	 mu_locker_create_ext(&locker, filename, &hints);

	The last arguments points to a structure mu_locker_hints_t,
	which defines the settings for the locker. NULL value implies
	default. Settings of an existing locker can be modified using
	the following call: 
	 mu_locker_modify(locker, &hints);

	Current settings can be examined using mu_locker_get_hints.

	The functions mu_locker_destroy, mu_locker_lock_mode,
	mu_locker_lock, mu_locker_touchlock, mu_locker_unlock, and
	mu_locker_remove_lock remained unchanged. Rest of functions is
	deprecated, but retained for a couple of releases for the sake
	of backward compatibility.

	Constants (locker types, flags, etc) are also revisited.

	This commit also fixes a bug in mu_spawnvp function, which was
	discovered when testing external lockers. 
	* include/mailutils/locker.h: Major rewrite.
	(MU_LOCKER_DEFAULT_EXPIRE_TIME) (MU_LOCKER_DEFAULT_RETRY_COUNT)
	(MU_LOCKER_DEFAULT_RETRY_SLEEP)
	(MU_LOCKER_DEFAULT_EXT_LOCKER): New defines.
	(mu_locker_hints_t): New data type. (MU_LOCKER_FLAG_RETRY)
	(MU_LOCKER_FLAG_EXPIRE_TIME) (MU_LOCKER_FLAG_CHECK_PID)
	(MU_LOCKER_FLAG_TYPE,MU_LOCKER_FLAGS_ALL): New defines.
	(mu_locker_create_ext, mu_locker_modify)
	(mu_locker_get_hints): New functions.
	(mu_locker_create,mu_locker_set_default_flags)
	(mu_locker_set_default_retry_timeout)
	(mu_locker_set_default_retry_count)
	(mu_locker_set_default_expire_timeout)
	(mu_locker_set_default_external_program)
	(mu_locker_set_flags,mu_locker_mod_flags)
	(mu_locker_set_expire_time,mu_locker_set_retries)
	(mu_locker_set_retry_sleep,mu_locker_set_external)
	(mu_locker_get_flags,mu_locker_get_expire_time)
	(mu_locker_get_retries,mu_locker_get_retry_sleep): Mark as
	deprecated.
	* libmailutils/base/locker.c: Rewrite.
	* libmailutils/cli/stdcapa.c: New locking statements: type and
	retry-sleep. retry-timeout is deprecated. 
	* libmailutils/tests/lck.c: Use new locker functions.
	* libmailutils/tests/lock.at: Test the external locker. 
	* libmailutils/base/spawnvp.c (mu_spawnvp): Restore the default
	SIGCHLD handler while waiting for the process to terminate. 
	* dotlock/dotlock.c: Use new locker functions.
	* lib/manlock.c: Likewise.
	* libmailutils/base/amd.c: Likewise.
	* libmu_dbm/berkeley.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libproto/dotmail/dotmail.c: Likewise.
	* libproto/mbox/mboxrd.c: Likewise.
	* mail/copy.c: Likewise. 
	* mda/lmtpd/lmtpd.c: Modify mu_locker_defaults instead of using
	deprecated functions.
	* mda/mda/mda.c: Likewise.
	* mda/putmail/putmail.c: Likewise. 
	* NEWS: Document changes.
	* configure.ac: Version 3.12.90.
	* doc/texinfo/Makefile.am: Add programs/dotlock.texi
	* doc/texinfo/programs.texi: Rewrite the locking section. New
	section: dotlock.
	* doc/texinfo/programs/dotlock.texi: New file.

2021-04-29  Sergey Poznyakoff  <gray@gnu.org>

	mail: accept attachments from FIFOs.

	* mail/send.c: Use mu_file_stream_create for FIFOs.

2021-04-29  Sergey Poznyakoff  <gray@gnu.org>

	mh: fix extra doc formatting.

	* mh/mh_getopt.c (mh_extra_help_hook): Use number of leading
	whitespace as left margin for output.

2021-04-29  Sergey Poznyakoff  <gray@gnu.org>

	libopt: don't show hidden options in the --usage output.

	* libmailutils/opt/help.c (option_summary): Skip options with
	MU_OPTION_HIDDEN bit set.
	(mu_option_describe_options): Reset margin to 0 so that
	eventual extra_doc is formatted correctly.

2021-04-29  Sergey Poznyakoff  <gray@gnu.org>

	Further improvements of the locker interface.

	This fixes a bug that prevented previous versions of mailutils
	to retry aquiring the lock.

	Locking configuration (the "locking" section) is improved.

	* dotlock/dotlock.c: New options: --retry (-r), --delay (-t),
	--pid-check (-p). Use the "locking" capability.
	* libmailutils/base/locker.c: Remove the uses of assert().
	(mu_locker_lock_mode): Fix the retry loop.
	(lock_dotlock): Use mu_asprintf to create temporary lock name.
	Return EAGAIN on temporary error conditions.
	(lock_kernel): Fix typo (EACCES).
	* libmailutils/cli/stdcapa.c (cb_locker_flags): Locker flags
	are deprecated.
	(cb_locker_retry_timeout,cb_locker_retry_count): Clear the
	MU_LOCKER_RETRY flag, if supplied a zero value.
	(cb_locker_external): Clear the MU_LOCKER_EXTERNAL flag (revert
	to the dotlock locker type) if the value is a false boolean
	value.
	* libmailutils/tests/Makefile.am: Add new test.
	* libmailutils/tests/testsuite.at: Include new test,
	* libmailutils/tests/lck.c: New test program.
	* libmailutils/tests/lock.at: New test.

2021-04-27  Sergey Poznyakoff  <gray@gnu.org>

	Fix misattributed locker flags.

	* libmailutils/cli/stdcapa.c (cb_locker_expire_timeout)
	(cb_locker_external): Pass proper first argument to
	mu_locker_set_default_flags.

2021-04-18  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in the configuration file lexer.

	String values like the following caused failure:

	 "foo \
	 bar \
	 baz \
	 qux"

	The second and third physical lines would not be recognized by
	the scanner. The bug was due to a long-standing copy-paste
	error.

2021-04-18  Sergey Poznyakoff  <gray@gnu.org>

	SQL auth: supply backend-specific parameters via the "param"
	statement.

	For MySQL, backend-specific parameter is a list of
	keuword=value pairs delimited by semicolons. Valid keywords
	are:

	defaults_file - read configuration from the supplied file;
	group - if default_file is supplied, read configuration from
	this named group (default - "client"); ca - name of the
	certificate authority file;

	* include/mailutils/sql.h (mu_sql_module_config)<param>: New
	member.
	(mu_sql_connection)<param>: New member.
	(mu_sql_connection_init): Take additional argument (param). All
	uses changed.
	* libmu_auth/sql.c: New keyword: "param".
	* sql/mysql.c (mu_mysql_connect): Parse backend-specific
	parameters: defaults_file, group, and ca.
	* sql/sql.c (mu_sql_connection_init): Take additional argument.
	Initialize the connection param member.

2021-04-18  Sergey Poznyakoff  <gray@gnu.org>

	mbox,dotmail: fix the _message_unseen method.

	* libproto/dotmail/dotmail.c (dotmail_message_unseen): Set
	return value to 0 and return success if there are no unseen
	messages.
	* libproto/mbox/mboxrd.c (mboxrd_message_unseen): Likewise.

2021-04-15  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mimeview testsuite.

	* mimeview/tests/bf.c (write_byte): Fix type of the character
	buffer.

2021-04-15  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* include/mailutils/sys/streamtrans.h: Add missing #endif

2021-02-13  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.12.

2021-02-13  Sergey Poznyakoff  <gray@gnu.org>

	Skip imap4d tests if home directory does not exist.

	* imap4d/tests/testsuite.at (IMAP4D_RUN): Skip test if home
	directory does not exist.

2021-02-10  Sergey Poznyakoff  <gray@gnu.org>

	inc: when updating the unseen sequence, translate message
	numbers to uids.

	* mh/inc.c (main): Ensure translation from ordinal to sequence
	numbers (uid).

2021-02-09  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: synchronize with the recent changes to mbox.

	* libproto/dotmail/dotmail.c: Synchronize with the recent
	changes to mbox.
	* libproto/dotmail/tests/rospool.at: New test.
	* libproto/dotmail/tests/Makefile.am: Add new test.
	* libproto/dotmail/tests/testsuite.at: Add new test.

2021-02-09  Sergey Poznyakoff  <gray@gnu.org>

	mbox: use fstat etc. instead of stat etc.

	* libproto/mbox/mboxrd.c (mboxrd_stat,mboxrd_set_priv): New
	functions.
	(mboxrd_get_atime): Use mboxrd_stat instead of stat(2). Fix the
	return value.
	(mboxrd_flush_unlocked): Use mboxrd_stat to stat the mailbox
	and mboxrd_set_priv to set mode and ownership.
	* libproto/mbox/tests/rospool.at: Remove extra newline (typo).

2021-02-09  Sergey Poznyakoff  <gray@gnu.org>

	mbox: fix expunging in a read-only directory.

	This fixes debian bug 980042. Re:
	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980042#16

	* libproto/mbox/mboxrd.c (mboxrd_flush_unlocked): If temporary
	file cannot be created in the directory of the mailbox because
	of EACCES, create it elsewhere and copy back to the mailbox
	when ready. Also, make sure that the mode and ownership of the
	mailbox are preserved, no matter what temporary file was used.
	* libproto/mbox/tests/rospool.at: New test.
	* libproto/mbox/tests/Makefile.am: Add new test.
	* libproto/mbox/tests/testsuite.at: Add new test.

2021-01-12  Sergey Poznyakoff  <gray@gnu.org>

	Fix libmu_scm testsuite.

	This is a follow-up to a3bd653315.

	* libmu_scm/tests/testsuite.at (MU_GUILE_OUTPUT_FILTER): New
	macro.
	(MU_GUILE_CHECK): If MU_GUILE_OUTPUT_FILTER is not empty,
	filter the stdout through it.
	* libmu_scm/tests/mailbox-append-message.at: Filter out line
	and byte counts.
	* libmu_scm/tests/mailbox-expunge.at: Fix line and byte counts.
	* libmu_scm/tests/mailbox-get-message.at: Likewise.
	* libmu_scm/tests/mailbox-iterate.at: Likewise.

2021-01-12  Sergey Poznyakoff  <gray@gnu.org>

	Remove left-over mailutils.rc support.

	* libmailutils/cli/cli.c (MU_LEGACY_CONFIG_FILE): Remove.
	(mu_cli_ext): No handling for the pre-3.0 configuration file.

2021-01-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix building mda utilities with mailbox quotas off.

2021-01-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix architecture-dependent test failures.

	* configure.ac (MU_COND_MAILBOX_QUOTA): Fix test condition.
	* libproto/dotmail/tests/atlocal.in (x_imapbase_normalize): New
	function.
	* libproto/mbox/tests/atlocal.in: Likewise.
	* libproto/dotmail/tests/delete.at: Filter output through
	x_imapbase_normalize to avoid triggering false negative due to
	padding differences.
	* libproto/mbox/tests/delete.at: Likewise.

2021-01-11  Sergey Poznyakoff  <gray@gnu.org>

	Force character signedness in strout test.

2021-01-11  Sergey Poznyakoff  <gray@gnu.org>

	SMTP mailer: fix selection of the default port.

	* libproto/mailer/smtp.c (smtp_open): Use MU_SMTPS_PORT only if
	MAILER_TLS_ALWAYS is required.

2021-01-11  Sergey Poznyakoff  <gray@gnu.org>

	strout test: don't wait for the input forever.

	* libmailutils/tests/strout.c: Run no longer than 30 seconds.
	Standardize exit codes.

2021-01-05  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

2021-01-05  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.11.1.

2021-01-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix version output.

	* include/mailutils/cli.h (mu_copyright_year): New extern.
	(mu_version_print): New proto.
	* libmailutils/cli/cli.c (mu_copyright_year): New variable.
	Should be updated once a year.
	(mu_version_print): New function.
	(mu_version_hook): Use mu_version_print.
	* mail/mail.c (mail_warranty): Use mu_version_print.

2021-01-05  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years.

2020-12-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix coredump on NULL input to mu_url_create_hint.

	In particular, this caused inc to coredump when called without
	explicit -file option.

	* libmailutils/url/create.c (mu_url_create_hint): Return EINVAL
	if str is NULL.
	* mh/tests/inc.at: Add new test.

2020-12-30  Sergey Poznyakoff  <gray@gnu.org>

	Use well-known mboxrd format name everywhere.

2020-12-23  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.11.

2020-12-21  Sergey Poznyakoff  <gray@gnu.org>

	MH: provide a mh_profile setting to control assignment of
	sequence numbers.

	The "Volatile-uidnext" setting controls how sequence numbers
	are allocated. By default they increase monotonically. If
	Volatile-uidnext is set to "true", each new incorporated
	message is assigned the sequence number equal to that of the
	last message increased by one. When the last message in the
	mailbox is deleted, the value of UIDNEXT is recalculated and
	UIDVALIDITY is increased. This follows the behavior of
	traditional MH implementations.

	* doc/texinfo/mu-mh.texi: Document chnges.
	* include/mailutils/sys/amd.h (MU_AMD_VOLATILE_UIDNEXT): New
	constant.
	* libmailutils/base/amd.c (amd_expunge): Reset uidvalidity and
	uidnext if MU_AMD_VOLATILE_UIDNEXT capability is set and the
	last message was removed.
	* libproto/mh/mh.c (_mailbox_mh_init): New mh_profile setting
	"Volatile-uidnext". If set to true, it instructs mailutils to
	mimic the traditional MH behavior when assigning sequence
	number to the new message. 
	* testsuite/mbop.c (main): Use MBOP_PRE_OPEN_HOOK (if defined)
	as the name of the function to call before opening the mailbox.
	* libproto/mh/tests/mbop.c (mbop_pre_open_hook): New function.
	If the MH environment variable is set, take its value as the
	name of the mh_profile and read settings from it. 
	* libproto/mh/tests/Makefile.am: Add uidvol.at
	* libproto/mh/tests/atlocal.in: Unset MH.
	* libproto/mh/tests/testsuite.at: Include uidvol.at
	* libproto/mh/tests/uidvol.at: New file.

2020-12-04  Sergey Poznyakoff  <gray@gnu.org>

	amd: reset the UIDNEXT after resetting the uidvalidity.

	This happens automatically for plaintext mailboxes, but needs
	to be done explicitly for directory-based ones.

	* libmailutils/base/amd.c (amd_set_uidvalidity): Reset the
	UIDNEXT
	* testsuite/mbop.c: New command: uidvalidity_reset

2020-12-04  Sergey Poznyakoff  <gray@gnu.org>

	Explicitly reset uidvalidity after folder -pick.

	(See also 6e0fb32ec8)

2020-11-30  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.10.91.

2020-11-30  Sergey Poznyakoff  <gray@gnu.org>

	New functions for closing all fds and daemonizing.

	* configure.ac: Select a suitable interface for closing all
	file descriptors greater than or equal to a chosen one.
	* include/mailutils/daemon.h (mu_daemon): New proto.
	* include/mailutils/util.h (mu_close_fds): New proto. 
	* lib/daemon.c: Removed.
	* lib/Makefile.am: Remove daemon.c 
	* libmailutils/base/Makefile.am: Add closefds.c
	* libmailutils/base/closefds.c: New file.
	* libmailutils/base/daemon.c: Rename to
	libmailutils/base/pidfile.c
	* libmailutils/base/daemon.c: New file. 
	* libmailutils/diag/bt.c: Use mu_close_fds.
	* libmailutils/server/acl.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* libmailutils/stream/prog_stream.c: Likewise. 
	* libmailutils/server/msrv.c: Use mu_daemon.
	* mh/send.c: Likewise. 
	* mda/lib/util.c (mda_close_fds): Remove.

2020-11-29  Sergey Poznyakoff  <gray@gnu.org>

	Optimize the observable interface.

	A bitmask of all requested event types is stored in the
	observable structure. When an event is reported,
	mu_observable_notify first check if the event type bit is set
	in that bitmap. If so, it starts iterating over observers. That
	should allow us to avoid the loop in most cases.

	* include/mailutils/observer.h (mu_observable_wants): New
	proto.
	* include/mailutils/sys/observer.h (_mu_observable): New
	member: types.
	* libmailutils/base/observer.c (mu_observable_attach): Compute
	bitmask of all types requested by attached observers.
	(mu_observable_detach): Likewise.
	(mu_observable_notify): Check if the event type is marked in
	the bitmap, skip iteration if it is not.
	(mu_observable_wants): New function.

2020-11-29  Sergey Poznyakoff  <gray@gnu.org>

	Avoid using VPATH in libproto testsuites.

	* libproto/dotmail/tests/Makefile.am: Build mbop from local
	source.
	* libproto/maildir/tests/Makefile.am: Likewise.
	* libproto/mbox/tests/Makefile.am: Likewise.
	* libproto/mh/tests/Makefile.am: Likewise. 
	* libproto/dotmail/tests/mbop.c: New file.
	* libproto/maildir/tests/mbop.c: New file.
	* libproto/mbox/tests/mbop.c: New file.
	* libproto/mh/tests/mbop.c: New file.

	Rename mbox.c files in libproto libraries to avoid confusion
	with the eponymous format. 
	* libproto/imap/mbox.c: Rename to mailbox.c.
	* libproto/imap/Makefile.am: Update.
	* libproto/maildir/mbox.c: Rename to maildir.c
	* libproto/maildir/Makefile.am: Update.
	* libproto/mailer/mbox.c: Rename to mailbox.c
	* libproto/mailer/Makefile.am: Update.
	* libproto/mh/mbox.c: Rename to mh.c.
	* libproto/mh/Makefile.am: Update.
	* libproto/pop/mbox.c: Rename to mailbox.c
	* libproto/pop/Makefile.am: Update.

2020-11-27  Sergey Poznyakoff  <gray@gnu.org>

	Improve mbox data/time handling.

	* libproto/mbox/mboxrb.c (scan_message_begin): Use a single
	scan format for parsing all possible variants of the date/time.

2020-11-27  Sergey Poznyakoff  <gray@gnu.org>

	Don't use __FILE__ and __LINE__ in mu_debug.

	This is spurious as it can be enabled by the debug.line-info
	configuration directive.

2020-11-27  Sergey Poznyakoff  <gray@gnu.org>

	mu_scan_datetime: Fix error recovery.  %Z handles both
	time-zone forms.

	The value stored in the memory location pointed to by the endp
	argument has changed. On the MU_ERR_PARSE error, it is (as
	earlier) the position in input where conversion stopped. On the
	MU_ERR_FORMAT, however, it is the character in fmt where the
	format error was detected.

	* libmailutils/datetime/scantime.c (peek_state): Return
	MU_ERR_FORMAT if mu_list_tail fails (the list is empty). This
	reflects unbalanced closing parenthesis or bracket.
	(scan_recovery): fix algorithm.
	(mu_scan_datetime): %Z handles both abbreviated time-zones and
	time-zones as hour offset from GMT. Improve error handling. On
	MU_ERR_PARSE error, point *endp to the character in input where
	conversion stopped. On MU_ERR_FORMAT error, point it to the
	character in fmt, where the format error was detected.
	* libmailutils/tests/scantime.c: Improve error handling.
	* libmailutils/tests/scantime.at: More testcases.

2020-11-26  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: re-implement tracker along the lines of mboxrb.

	* include/mailutils/sys/dotmail.h (mu_dotmail_message): New
	member: mark.
	(mu_dotmail_message_reconstruct): Change signature.
	* libproto/dotmail/dotmail.c (mu_dotmail_flush_tracker): Change
	type of the ref member.
	(tracker_next_ref): Rewrite.
	(dotmail_tracker_sync): Rewrite.
	(dotmail_mailbox_copy_unchanged): Rewrite.
	* libproto/dotmail/message.c (dotmail_message_copy_with_uid)
	(mu_dotmail_message_reconstruct): Rewrite.
	* libproto/dotmail/tests/delete.at: Rewrite.

2020-11-26  Sergey Poznyakoff  <gray@gnu.org>

	mboxrb: Keep timestamps in normalized form.

	* include/mailutils/datetime.h (mu_timezone_offset): New proto.
	* libmailutils/datetime/scantime.c: New conversion: %Z
	(timezone abbreviation).
	* libmailutils/datetime/parsedate.y (mu_timezone_offset): New
	function. Returns time offset in seconds corresponding to the
	given timezone abbreviation. 
	* include/mailutils/sys/mboxrb.h (mu_mboxrb_hdr): Remove
	unneeded enum.
	(mu_mboxrb_message): Remove env_date_start, New member "date"
	holds the string representation of the envelope timestamp in
	normalized form - ctime(3), UTC.
	* libproto/mbox/mboxrb.c (scan_message_finalize): New function.
	(scan_message_begin): New function. When initializing the
	message, timestamps in obsolete forms are converted to
	normalized representation.
	(mboxrb_rescan_unlocked): Use scan_message_finalize and
	scan_message_begin.
	* libproto/mbox/message.c (mboxrb_envelope_date): Get
	normalized timestamp from the date member,
	* libproto/mbox/tests/env.at: Reflect the above changes.

2020-11-25  Sergey Poznyakoff  <gray@gnu.org>

	Improve mboxrb scanner.

	* libproto/mbox/mboxrb.c: Request that the From_line be
	preceded by an empty line.

2020-11-25  Sergey Poznyakoff  <gray@gnu.org>

	Replace mbox format driver with mboxrb.

	* NEWS: update 
	* configure.ac: Revert 9763fd4a.
	* include/mailutils/registrar.h: Likewise.
	* libproto/Makefile.am: Likewise. 
	* libmailutils/stream/stream.c (mu_stream_size): Fix size
	calculation in case of line and full buffering scheme.
	* libmailutils/stream/streamcpy.c (mu_stream_copy_nl): Change
	semantics. Ensure that the copied data ends with two newline
	characters. Append them if necessary. 
	* testsuite/mbop.c: New commands: message_lines and
	message_size. 
	* libproto/mbox/mboxrb.c (mboxrb_mailbox_init_stream): Always
	add MU_STREAM_READ permission. Use the same flags for
	mu_mapfile_stream_create and mu_file_stream_create.
	(mboxrb_rescan_unlocked): Count terminating newline as part of
	the message.
	(mailbox_append_message): Make sure each message ends with an
	empty line.
	(mboxrb_tracker_sync): Update mailbox mesg_count.
	(mboxrb_flush_temp): Truncate the temporary stream to the new
	size.
	(mboxrb_flush_unlocked): Clear all modifications only in
	FLUSH_UIDVALIDITY mode.
	(mboxrb_message_copy_with_uid): Fix message_end computation.
	Use mu_stream_copy_nl to copy message body.
	(mu_mboxrb_message_reconstruct): Update ref on return.
	* po/POTFILES.in: Update. 
	* mail/copy.c (append_to_file): Use mu_stream_stat_buffer to
	compute statistics.
	* mail/mail.c: Allow for opening read-only mailboxes. 
	* libproto/mbox/tests/body.at: Fix the expected byte count.
	* libproto/mbox/tests/qget.at: Likewise.
	* libproto/mbox/tests/delete.at: Add more tests. 
	* mail/tests/align.at: Fix the expected byte and line count.
	* mail/tests/hold.at: Likewise.
	* mail/testsuite/mail/read.exp: Likewise.
	* mail/testsuite/mail/tag.exp: Likewise.
	* mail/testsuite/mail/z.exp: Likewise.
	* mail/tests/copy04.at: Don't use line count and size in
	comparison.
	* mail/testsuite/mail/write.exp: Use regexps instead of exact
	strings for the same reason. 
	* pop3d/testsuite/pop3d/read.exp: Fix the expected byte count. 
	* readmsg/tests/all.at: Expect extra newline in output.
	* readmsg/tests/hdr.at: Likewise.
	* readmsg/tests/nohdr.at: Likewise.
	* readmsg/tests/twomsg.at: Likewise.
	* readmsg/tests/weed.at: Likewise. 
	* sieve/tests/redirect.at: Fix the expected byte count.
	* sieve/tests/reject.at: Expect extra newline in output. 
	* mh/inc.c (incmbx): Parse truncate and nomoveto URL parameters
	prior to opening the mailbox. If notruncate is requested, open
	the mailbox read-only.
	* mh/mh_format.c (str_compress_ws): Fix copying between
	overlapping memory regions. 
	* libtests/Makefile.am: Remove lstuid tests.
	* libtests/testsuite.at: Likewise.
	* libtests/lstuid.c: Remove.
	* libtests/lstuid00.at: Remove.
	* libtests/lstuid01.at: Remove.
	* libtests/lstuid02.at: Remove.
	* libtests/mime.at: Fix the expected byte count. 
	* imap4d/tests/IDEF0956.at: Fix the expected byte count.
	* map4d/tests/fetch.at: Likewise.
	* imap4d/tests/append00.at: Remove X-* headers and Status from
	the mbox prior to comparison.
	* imap4d/tests/append01.at: Likewise. 
	* libproto/mbox: Remove old code. Replace it with mboxrb.
	* mail/tests/nohome.at: Update lines/sizes.
	* mail/testsuite/mail/folder.exp: Likewise.
	* mail/testsuite/mail/tag.exp: Likewise.
	* mail/testsuite/mail/z.exp: Likewise. 
	* mda/mda/tests/mda.at: Fix shell quoting.
	* mda/putmail/tests/putmail.at: Remove extra newline from the
	expectation. Eliminate X-IMAPbase and X-UID from the resulting
	mailbox.
	* mda/tests/mda.sh: Eliminate X-IMAPbase and X-UID from the
	output. 
	* pop3d/testsuite/pop3d/read.exp: Fix expected lines/sizes
	* readmsg/tests/hdr.at: Fix extra whitespace. 
	* sieve/tests/action.at: Eliminate X-IMAPbase and X-UID. Fix
	extra whitespace in the expected From_ line.
	* sieve/tests/addheader.at: Likewise.
	* sieve/tests/pipeact.at: Likewise.

2020-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Two bugfixes.

	* libproto/mboxrb/mboxrb.c (mboxrb_open): Propagate failure to
	open the stream to the return code.
	* libproto/mboxrb/tests/notify.at: Use cat to create test inbox

2020-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Add two more mboxrb tests.

2020-11-23  Sergey Poznyakoff  <gray@gnu.org>

	mboxrb: rewrite tracker.

	* include/mailutils/sys/mboxrb.h (mu_mboxrb_message_ref):
	Remove.
	(mu_mboxrb_message_reconstruct): Change prototype.
	* libproto/mboxrb/mboxrb.c (mu_mboxrb_flush_tracker) <ref>:
	Change type to size_t *.
	(tracker_next_ref): Return the refereced message.
	(mboxrb_tracker_sync): Rewrite.
	(mboxrb_mailbox_copy_unchanged): Update.
	(mailbox_append_message): Place exactly one empty line between
	two messages.
	* libproto/mboxrb/message.c (mboxrb_message_copy_with_uid): Ref
	argument is struct mu_mboxrb_message *.
	(mu_mboxrb_message_reconstruct): Likewise.
	* libproto/mboxrb/tests/delete.at: Check number of messages
	after deletion.
	* libproto/mboxrb/tests/append.at: Expect extra newline.

2020-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix deletes.  Add new tests.

	* include/mailutils/sys/mboxrb.h (mu_mboxrb_message): New
	member: mark
	* libproto/mboxrb/mboxrb.c (mu_mboxrb_message_ref): New
	members: from_length, env_sender_len, env_date_start.
	* libproto/mboxrb/message.c (mboxrb_rescan_unlocked): Update
	dmp->scan. Fix NULL dereference.
	(mboxrb_rescan): Don't update dmp->scan, see above.
	(mailbox_append_message): Write out envelope; use FROMRB
	filter.
	(mboxrb_tracker_sync): Rewrite using mark/sweep technique. 
	* libproto/mboxrb/tests/Makefile.am: Add new tests.
	* libproto/mboxrb/tests/testsuite.at: Include new tests.
	* libproto/mboxrb/tests/append.at: New test.
	* libproto/mboxrb/tests/delete.at: New test.
	* libproto/mboxrb/tests/qget.at: New test.
	* libproto/mboxrb/tests/uidnext.at: New test.
	* libproto/mboxrb/tests/uidvalidity.at: New test.

2020-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Implement mboxrb format (a replacement for the mbox used
	currently)

	* configure.ac: New format: mboxrb
	* include/mailutils/filter.h (mu_fromrb_filter): New extern.
	* include/mailutils/registrar.h (mu_mboxrb_record): New extern.
	(mu_register_all_mbox_formats)
	(mu_register_local_mbox_formats): Add mu_mboxrb_record.
	* libmailutils/filter/filter.c (mu_filter_get_list): Add
	mu_fromrb_filter
	* libproto/Makefile.am [MU_COND_SUPPORT_MBOXRB]: Add mboxrb 
	* bootstrap.conf: Remove special handling for testsuite/maildir
	(fixes 1d846d2d92).
	* testsuite/mbop.c: Implement the -r (--read-only) option.
	* include/mailutils/sys/Makefile.am: Add mboxrb.h
	* include/mailutils/sys/mboxrb.h: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	fromrb.c
	* libmailutils/filter/fromrb.c: New file.
	* libmailutils/tests/Makefile.am: New file.
	* libmailutils/tests/fromrb.at: New file.
	* libmailutils/tests/testsuite.at: New file.
	* libproto/mboxrb/Makefile.am: New file.
	* libproto/mboxrb/mboxrb.c: New file.
	* libproto/mboxrb/message.c: New file.
	* libproto/mboxrb/tests/.gitignore: New file.
	* libproto/mboxrb/tests/Makefile.am: New file.
	* libproto/mboxrb/tests/atlocal.in: New file.
	* libproto/mboxrb/tests/attr.at: New file.
	* libproto/mboxrb/tests/autodetect.at: New file.
	* libproto/mboxrb/tests/body.at: New file.
	* libproto/mboxrb/tests/count.at: New file.
	* libproto/mboxrb/tests/env.at: New file.
	* libproto/mboxrb/tests/header.at: New file.
	* libproto/mboxrb/tests/testsuite.at: New file.

2020-11-20  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: update uids in append mode as well.

	* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox): New
	member stream_flags.
	* libproto/dotmail/dotmail.c (dotmail_mailbox_init_stream):
	Translate MU_STREAM_APPEND to MU_STREAM_RDWR.
	(dotmail_rescan_unlocked,dotmail_rescan): Check actual stream
	flags, not the mailbox ones.
	(dotmail_flush_unlocked): Remove check for MU_STREAM_APPEND.
	* libproto/dotmail/tests/append.at: Test appends in append
	mode. 
	* testsuite/mbop.c: New option -a (--append).

2020-11-20  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: optimize appends.

	* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox): New
	members: x_imapbase_off and x_imapbase_len.
	* libproto/dotmail/dotmail.c: Format X-IMAPbase header with
	fixed width to avoid rewriting entire mailbox only to make the
	new header fit to its place in the first message.

2020-11-19  Sergey Poznyakoff  <gray@gnu.org>

	Make sure UIDs are monotonically increased in dotmail, mh, and
	maildir.

	* include/mailutils/sys/amd.h (_MU_AMD_PROP_UIDNEXT): New
	define.
	(MU_AMD_PROP): Remove.
	(MU_AMD_F_PROP): New flag.
	(_amd_data): New member: flags. Remove next_uid
	(amd_reset_uidvalidity): Change return type.
	(amd_update_uidnext,amd_alloc_uid): New protos.
	* include/mailutils/sys/dotmail.h (mu_dotmail_mailbox): New
	member uidvalidity_changed.
	* libmailutils/base/amd.c (_amd_prop_create): Set MU_AMD_F_PROP
	flag if the prop file exists.
	(amd_initial_scan): New function. (amd_get_uidvalidity,
	amd_set_uidvalidity)
	(amd_uidnext): Rewrite using amd_initial_scan.
	(amd_reset_uidvalidity): Return int.
	(amd_update_uidnext,amd_alloc_uid): New functions. 
	* libproto/dotmail/dotmail.c (dotmail_close): Flush UID
	parameters if uidvalidity_changed is set.
	(dotmail_flush): Take three-state mode as its third argument.
	(dotmail_flush_unlocked): Likewise. If operating in
	FLUSH_UIDVALIDITY mode, clear all other modifications to the
	messages in the mailbox. Clear uidvalidity_changed on success.
	(dotmail_expunge, dotmail_sync): Update call to dotmail_flush.
	(dotmail_alloc_next_uid): Set uidvalidity_changed.
	(dotmail_rescan_unlocked): Check if the assigned UID is greater
	than the previously assigned one and less than the UIDNEXT
	value. Raise uidvalidity_changed if UIDs were re-allocated.
	(mu_dotmail_mailbox_uid_setup): Set uidvalidity_scanned.
	* libproto/dotmail/tests/Makefile.am: Add new test.
	* libproto/dotmail/tests/testsuite.at: Likewise.
	* libproto/dotmail/tests/uidnext.at: New test.
	* libproto/maildir/mbox.c: Use amd_update_uidnext to
	synchronize the computed and predicted uidnext value.
	(maildir_next_uid): Remove. 
	* libproto/maildir/tests/Makefile.am: Add new test.
	* libproto/maildir/tests/testsuite.at: Likewise.
	* libproto/maildir/tests/uidnext.at: New test. 
	* libproto/mh/mbox.c (_mh_next_seq): Remove function.
	(mh_scan0): Use amd_update_uidnext to synchronize the computed
	and predicted uidnext value.
	* libproto/mh/tests/Makefile.am: Add new test.
	* libproto/mh/tests/testsuite.at: Likewise.
	* libproto/mh/tests/uidnext.at: New test.

2020-11-18  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: SEARCH: don't bail out if unexistent UID is given as
	criterion.

	* imap4d/search.c (node_false): New constant.
	(parse_simple_key): Report error only if mu_msgset_parse_imap
	returns MU_ERR_PARSE. Otherwise, add node_false to the tree.
	(evaluate_node): Handle node_false.

2020-11-18  Sergey Poznyakoff  <gray@gnu.org>

	maildir: assign UID to the message file before moving it from
	new to cur.

	* libproto/maildir/mbox.c (maildir_scan_unlocked): Assign next
	UID to the message before moving it from new to cur.
	* libproto/maildir/tests/new.at: New test.
	* libproto/maildir/tests/Makefile.am: Add nre test.
	* libproto/maildir/tests/testsuite.at: Likewise.

2020-11-17  Sergey Poznyakoff  <gray@gnu.org>

	maildir_fixup: don't bail out if unable to open the mailbox.

2020-11-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix mda (lmtpd) testsuite: don't assume mbox as the default
	format.

2020-11-17  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

	* libproto/mh/mbox.c: Include limits.h
	* testsuite/mbox2dir.c (next_name_from_file): *scanf %m
	modifier isn't common enough yet. Rewrite using fgets +
	realloc.

2020-11-17  Sergey Poznyakoff  <gray@gnu.org>

	New mailutils subcommand: maildir_fixup.

	The subcommand converts names in maildirs created by earlier
	versions of mailutils to the new format.

	* NEWS: Update.
	* doc/texinfo/programs/mailutils.texi: Document maildir_fixup
	* mu/libexec/Makefile.am: Build maildir_fixup subcommand.
	* mu/libexec/maildir_fixup.c: New file.
	* mu/libexec/mu.h (common_options): New extern. 
	* include/mailutils/cli.h (MU_CLI_OPTION_CONF_PROGNAME): New
	constant.
	* libmailutils/cli/simple.c (MU_CLI_OPTION_PROG_NAME)
	(MU_CLI_OPTION_PROG_NAME) (MU_CLI_OPTION_PROG_DOC)
	(MU_CLI_OPTION_BUG_ADDRESS) (MU_CLI_OPTION_PACKAGE_URL)
	(MU_CLI_OPTION_EXTRA_INFO) (MU_CLI_OPTION_HELP_HOOK)
	(MU_CLI_OPTION_VERSION_HOOK) (MU_CLI_OPTION_PROG_DOC_HOOK)
	(MU_CLI_OPTION_NEGATION)
	(MU_CLI_OPTION_SPECIAL_ARGS): Allow for NULL argument.
	(MU_CLI_OPTION_CONF_PROGNAME): New code

2020-11-17  Sergey Poznyakoff  <gray@gnu.org>

	sortm: reset the uidvalidity of the modified mailbox.

	* include/mailutils/mailbox.h (mu_mailbox_uidvalidity_reset):
	New proto.
	* include/mailutils/sys/mailbox.h (_mu_mailbox): Replace the
	_uidvalidity member with two function pointers:
	_get_uidvalidity and _set_uidvalidity.
	* libmailutils/mailbox/mailbox.c
	(mu_mailbox_uidvalidity_reset): New function. 
	* libmailutils/base/amd.c: Initialize the two methods.
	* libproto/dotmail/dotmail.c: Likewise.
	* libproto/mbox/mbox.c: Likewise.
	* libproto/imap/mbox.c: Initialize the _get_uidvalidity field. 
	* mh/sortm.c: Reset the uidvalidity on success.
	* mh/tests/sortm.at: Check that the uidvalidity changed after
	sorting

2020-11-16  Sergey Poznyakoff  <gray@gnu.org>

	Remove mh and maildir sample mailboxes from the distribution.

	Testsuites use mbox2dir to create the requested directory-based
	mailbox from the mbox source.

2020-11-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix message append notifications for maildir, mh, and dotmail.

	* testsuite/mbop.c: Implement notification mode.
	* comsat/tests/testsuite.at: Fix mh qid. 
	* libproto/dotmail/dotmail.c (dotmail_append_message): Lock the
	monitor before and unlock it after the operation.
	* libproto/dotmail/tests/notify.at: New file.
	* libproto/dotmail/tests/Makefile.am: Add notify.at
	* libproto/dotmail/tests/testsuite.at: Include notify.at. 
	* include/mailutils/sys/amd.h (cur_msg_file_name): Change
	signature.
	* libmailutils/base/amd.c: Use amd->cur_msg_file_name with 0 as
	its second argument to get qid. 
	* libproto/maildir/mbox.c (maildir_cur_message_name): Take
	three argument, second one specifying whether an absolute or
	relative filename is requested. All uses changed.
	* libproto/maildir/tests/notify.at: New file.
	* libproto/maildir/tests/Makefile.am: Add notify.at
	* libproto/maildir/tests/testsuite.at: Include notify.at 
	* libproto/mh/mbox.c (_mh_cur_message_name): Take three
	argument, second one specifying whether an absolute or relative
	filename is requested. All uses changed.
	* libproto/mh/tests/notify.at: New file.
	* libproto/mh/tests/Makefile.am: Add notify.at
	* libproto/mh/tests/testsuite.at: Include notify.at

2020-11-16  Sergey Poznyakoff  <gray@gnu.org>

	Write testsuite for mh mailbox library.

	* libmailutils/base/amd.c (amd_get_attr_flags): Scan the
	message if AMD does not report MU_AMD_STATUS capability.
	* libproto/mh/mbox.c (mh_qfetch): Fix, 
	* libproto/mh/Makefile.am (SUBDIRS): Add tests.
	* libproto/mh/tests/.gitignore: New file.
	* libproto/mh/tests/Makefile.am: New file.
	* libproto/mh/tests/append.at: New file.
	* libproto/mh/tests/atlocal.in: New file.
	* libproto/mh/tests/attr.at: New file.
	* libproto/mh/tests/autodetect.at: New file.
	* libproto/mh/tests/body.at: New file.
	* libproto/mh/tests/count.at: New file.
	* libproto/mh/tests/delete.at: New file.
	* libproto/mh/tests/envelope.at: New file.
	* libproto/mh/tests/header.at: New file.
	* libproto/mh/tests/qget.at: New file.
	* libproto/mh/tests/testsuite.at: New file.
	* libproto/mh/tests/uid.at: New file.
	* libproto/mh/tests/uidvalidity.at: New file.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Encode all Mailutils attributes in maildir file names.

	The attributes that have no corresponding info letters are
	encoded in the 'a' name attribute as a string of mailutils
	status flags, e.g.:

	 1284628225.M17468P3883Q0.localhost,a=FO,u=1:2,S

	Meaning: MU_ATTRIBUTE_READ (from the info letter 'S'),
	MU_ATTRIBUTE_FLAGGED (attr. 'F') and MU_ATTRIBUTE_SEEN (attr.
	'O'). 
	* libproto/maildir/mbox.c (maildir_message_alloc): Parse the
	'a' attribute.
	(maildir_subdir_scan): Don't force MU_ATTRIBUTE_SEEN on
	existing messages.
	(maildir_message_fixup): Fixup the (original) MU_ATTRIBUTE_SEEN
	attribute.
	* libproto/maildir/tests/attfixup.at: Update.
	* libproto/maildir/tests/attr.at: Update.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Rename mu_string_to_flags to mu_attribute_string_to_flags.

	* include/mailutils/attribute.h (mu_attribute_string_to_flags):
	New proto.
	(mu_string_to_flags): Mark as deprecated.
	(mu_attribute_flags_to_string): New proto. 
	* libmailutils/mailbox/attribute.c (mu_string_to_flags): Rename
	to mu_attribute_string_to_flags.
	(mu_attribute_flags_to_string): New function.
	* libmailutils/base/amd.c: Use mu_attribute_string_to_flags
	instead of mu_string_to_flags.
	* libmailutils/mailbox/msgscan.c: Likewise. *
	libproto/dotmail/message.c: Likewise.
	* libproto/pop/mbox.c: Likewise.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Add maildir format detection test.

	* libproto/maildir/tests/Makefile.am: Add autodetect.at.
	* libproto/maildir/tests/testsuite.at: Include autodetect.at.
	* libproto/maildir/tests/autodetect.at: New file.
	* testsuite/mbop.c: Fix exit code for --detect.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Convert dotmail testsuite to mbop.

	* libproto/dotmail/tests/.gitignore: Update.
	* libproto/dotmail/tests/Makefile.am: Remove dm_detect, dm_mesg
	and dm_qget, build mbop instead.
	* testsuite/mbop.c: Implement the detect mode.
	* libproto/dotmail/tests/dm_detect.c: Remove.
	* libproto/dotmail/tests/dm_mesg.c: Remove.
	* libproto/dotmail/tests/dm_qget.c: Remove.
	* libproto/dotmail/tests/append.at: Use mbop.
	* libproto/dotmail/tests/autodetect.at: Use mbop.
	* libproto/dotmail/tests/count.at: Use mbop.
	* libproto/dotmail/tests/delete.at: Use mbop.
	* libproto/dotmail/tests/qget.at: Use mbop.
	* libproto/dotmail/tests/recent.at: Use mbop.
	* libproto/dotmail/tests/testsuite.at: Use mbop.
	* libproto/dotmail/tests/uidvalidity.at: Use mbop.
	* libproto/dotmail/tests/unseen.at: Use mbop.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Implement the MU_ATTRIBUTE_FORWARDED attribute flag.

	* include/mailutils/attribute.h (MU_ATTRIBUTE_FORWARDED): New
	constant. (mu_attribute_is_forwarded,
	mu_attribute_set_forwarded)
	(mu_attribute_unset_forwarded): New prototypes.
	(MU_STATUS_BUF_SIZE): Update definition.
	* libmailutils/mailbox/attribute.c (mu_attribute_is_forwarded)
	(mu_attribute_set_forwarded)
	(mu_attribute_unset_forwarded): New functions.
	* libproto/maildir/mbox.c (info_map): Implement the 'P' flag.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	AMD API: provide function for resetting the uidvalidity value.

	* include/mailutils/sys/amd.h (amd_reset_uidvalidity): New
	proto.
	* libmailutils/base/amd.c (amd_reset_uidvalidity): New
	function.
	* libproto/maildir/mbox.c (maildir_scan_unlocked): Use
	amd_reset_uidvalidity.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	Improve mbop interface.

	* testsuite/mbop.c: Use mu_cli_simple for option handling. Use
	the -m option to pass the mailbox file name (or URL). Mark qget
	as not requiring message selection.

2020-11-15  Sergey Poznyakoff  <gray@gnu.org>

	More maildir tests.

	* .gitignore: Update.
	* include/mailutils/sys/amd.h (MU_AMD_IMAPBASE): Remove.
	* libmailutils/base/amd.c (amd_scan_message): Remove obsolete
	code.
	* libproto/maildir/mbox.c (maildir_message_cmp): Bugfixes.
	* testsuite/Makefile.am: Add mbop.c to distribution.
	* testsuite/mbop.c: Implement qget.
	* testsuite/mbox2dir.c (maildir_generate_name): Fix typo.
	(main): Skip From_ line before copying. 
	* libmailutils/tests/Makefile.am (wsp_SOURCES): Remove.
	* libproto/maildir/tests/Makefile.am: Add new tests.
	* libproto/maildir/tests/append.at: New file.
	* libproto/maildir/tests/attr.at: New file.
	* libproto/maildir/tests/body.at: New file.
	* libproto/maildir/tests/count.at: Update.
	* libproto/maildir/tests/delete.at: New file.
	* libproto/maildir/tests/envelope.at: New file.
	* libproto/maildir/tests/header.at: New file.
	* libproto/maildir/tests/qget.at: New file.
	* libproto/maildir/tests/testsuite.at: Include new tests.
	* libproto/maildir/tests/uid.at: New file.
	* libproto/maildir/tests/uidvalidity.at: New file.

2020-11-14  Sergey Poznyakoff  <gray@gnu.org>

	Maildir testsuite core.

	* libmailutils/tests/tesh.c (mu_tesh_read_and_eval): Print
	fixed prompt if attached to a terminal.
	* libproto/maildir/Makefile.am (SUBDIRS): Add tests.
	* libproto/maildir/mbox.c (flags_to_info): Be sure to format
	each flag only once.
	(maildir_scan_unlocked): Save updated properties. 
	* testsuite/.gitignore: Add mbox2dir.
	* testsuite/Makefile.am: Build mbox2dir.
	* testsuite/mbop.c: New file.
	* testsuite/mbox2dir.c: New file. 
	* libproto/maildir/tests/.gitignore: New file.
	* libproto/maildir/tests/Makefile.am: New file.
	* libproto/maildir/tests/atlocal.in: New file.
	* libproto/maildir/tests/attfixup.at: New file.
	* libproto/maildir/tests/count.at: New file.
	* libproto/maildir/tests/testsuite.at: New file.
	* libproto/maildir/tests/uidfixup.at: New file.

2020-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Full rewrite of maildir support.

	This rewrite aims to speed up maildir manipulations and to fix
	the problem with storing the uids and uidvalidity attributes.

	Uidvalidity value is stored in the .mu-prop file, as it was
	done previously. UID of each message is encoded in its file
	name between the unique prefix and the info part. Overall
	structure of the message file name is:

	 uniq [ ',' attrs ] ':2,' info

	where uniq is the unique prefix, info is the attribute flags,
	and attrs is a comma-delimited list of attribute=value pairs.
	The 'u' attribute holds the UID. Unrecognized attributes are
	ignored.

	To speed up the access and avoid unnecessary memory
	allocations, maildir access is reimplemented using the *at()
	function calls (openat instead of open, etc). 
	* libproto/maildir/folder.c: Rewrite.
	* libproto/maildir/maildir.h: Rewrite.
	* libproto/maildir/mbox.c: Rewrite.

2020-11-12  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: reset uidvalidity if UIDs are reinitialized.

	* libproto/dotmail/dotmail.c (dotmail_rescan_unlocked): Reset
	uidvalidity if the UIDs are to be reinitialized.

2020-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Don't assume any special meaning of the X-Imapbase header in
	the library.

	This starts a series of commits whose purpose is to clean up
	the mess with the uid and uidvalidity attributes.

	The way these attributes are stored depends on the mailbox
	type. The libmailutils library contained some historical
	left-overs that assumed that the X-Imapbase header of the first
	message in the mailbox contained the value of the uidvalidity
	and next uid. These left-overs are removed.

	* include/mailutils/message.h (mu_message_scan): Remove
	uidvalidity.
	* libmailutils/mailbox/msgscan.c: Remove special handling for
	the X-Imapbase header.
	* libmailutils/base/amd.c (_amd_message_save)
	(amd_scan_message): Remove special handling for X-Imapbase.

2020-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix Savane bug #56428.

	* NEWS: Update.
	* configure.ac: Version 3.10.90 
	* include/mailutils/cstr.h (mu_version_string_parse)
	(mu_version_string_cmp): New protos.
	* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
	version.c.
	* libmailutils/string/version.c: New file. 
	* include/mailutils/sys/amd.h (_amd_message): Remove the
	orig_flags member. All uses changed.
	(MU_AMD_PROP): New capability.
	* include/mailutils/url.h (MU_AUTODETECT_ACCURACY_MAX): New
	constant.
	* libmailutils/base/amd.c (_amd_prop_create): Raise MU_AMD_PROP
	if the prop file exists.
	* libmailutils/base/schemeauto.c: New values for the
	MU_AUTODETECT_ACCURACY environment variable: default, fast, and
	max.
	* libmailutils/property/mhprop.c (_mh_prop_fill): Fix
	diagnostic message.
	* libproto/maildir/mbox.c: Fix incorrect letter to attribute
	mapping.
	* libproto/mh/mbox.c: Remove uses of orig_flags. 
	* libmailutils/base/registrar.c (mu_registrar_lookup_url): Fall
	back to the default registrar if the url doesn't contain
	explicit scheme, the file it references does not exist, and the
	default record is a local one.

2020-11-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix mapping of the \Seen IMAP attribute.

	* include/mailutils/attribute.h: Document message attributes.
	* libmailutils/imapio/flags.c (_imap4_attrlist): \Seen
	corresponds to MU_ATTRIBUTE_READ.

2020-10-01  Sergey Poznyakoff  <gray@gnu.org>

	Improve message comparison routine for maildir.

	* libproto/maildir/mbox.c (maildir_message_cmp): Compare
	seconds, microseconds and number of deliveries, in that order.
	If all match (shouldn't happen), resort to lexicographical
	comparison.

2020-10-01  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite amd_msg_bsearch without recursion.

2020-10-01  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/base/amd.c (amd_msg_lookup): Always store the
	index of the memory slot, as described in the comment. This was
	broken in 1274d937 in a fit of overcorrectness.

2020-09-28  Sergey Poznyakoff  <gray@gnu.org>

	Fix last resort return for message_envelope_sender.

	* libmailutils/mailbox/msgenv.c (message_envelope_sender): Fix
	conditional. Use mu_get_user_email instead of tinkering with
	mu_auth_data.
	* sieve/tests/moderator.at: Fix expected output.

2020-09-13  Sergey Poznyakoff  <gray@gnu.org>

	Fix uninitialized variable in readmsg.

	* readmsg/readmsg.c (main): Initialize weedc.

2020-09-07  Sergey Poznyakoff  <gray@gnu.org>

	Include libtests/mbdel.at to the dist.

2020-09-06  Sergey Poznyakoff  <gray@gnu.org>

	Honor idle timeout settings in inetd mode.

	* imap4d/imap4d.c (main): For inetd mode, initialize
	idle_timeout from the server settings.
	* pop3d/pop3d.c: Likewise.

2020-09-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix parsing of IMAP ranges with the lower value less than the
	actual message set minimum.

	* libmailutils/msgset/parse.c (get_msgnum): Make sure the
	returned is in the [minval,maxval] interval.

2020-08-19  Sergey Poznyakoff  <gray@gnu.org>

	libmailutils/tests: Use MU_CHECK for simple tests.

	* testsuite/testsuite.inc (MU_CHECK): Remove superfluous
	quoting.
	* libmailutils/tests/modmesg.at: New file.
	* libmailutils/tests/streams.at: New file.
	* libmailutils/tests/strin.at: Minor change. 
	* libmailutils/tests/modmesg02.at: Remove.
	* libmailutils/tests/streamshift.at: Remove.
	* libmailutils/tests/strtoc.at: Remove.
	* libmailutils/tests/t0-stream.at: Remove.
	* libmailutils/tests/t1-stream.at: Remove.
	* libmailutils/tests/getdelim.at: Remove.
	* libmailutils/tests/modmesg00.at: Remove.
	* libmailutils/tests/modmesg01.at: Remove.
	* libmailutils/tests/modmesg03.at: Remove. 
	* libmailutils/tests/testsuite.at: Update.
	* libmailutils/tests/Makefile.am: Update.

2020-08-18  Sergey Poznyakoff  <gray@gnu.org>

	libmailutils/tests tools: use mu_cli_simple for option
	handling.

2020-08-17  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix (complements fd9a86d37b)

	* mda/lib/mailquota.c (sql_retrieve_quota): Fix a leftover use
	of get_size.

2020-08-14  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.10.

	* NEWS: Update.
	* configure.ac: Raise version number and VI_CURRENT.

2020-08-14  Sergey Poznyakoff  <gray@gnu.org>

	Reorganize testsuite.

	The testsuite directory contains only data and programs that
	are used by other tests in the mailutils hierarchy. As such, it
	is moved to the top of the SUBDIRS list, so that the utilities
	on which another tests depend are tested first.

	The tests that depend on both libmailutils and libraries from
	libproto are moved to a separate directory libtests. These
	tests are run after tests in testsuite, libmailutils and
	libproto.

	* Makefile.am (SUBDIR): Move the testsuite directory before
	libmailutils.
	* configure.ac (libtests): New test directory.
	* libtests/.gitignore: New file.
	* libtests/Makefile.am: New file.
	* libtests/atlocal.in: New file.
	* testsuite/fldel.at: Move to libtests/
	* testsuite/fldel.c: Likewise.
	* testsuite/lstuid.c: Likewise.
	* testsuite/lstuid00.at: Likewise.
	* testsuite/lstuid01.at: Likewise.
	* testsuite/lstuid02.at: Likewise.
	* testsuite/mbdel.at: Likewise.
	* testsuite/mbdel.c: Likewise.
	* testsuite/mime.at: Likewise.
	* testsuite/mime01.at: Likewise.
	* testsuite/mimetest.c: Likewise.
	* libtests/testsuite.at: New file.
	* testsuite/Makefile.am: Remove all files that depend on
	mailutils components.
	* testsuite/testsuite.at: Likewise.
	* testsuite/bs.c: Remove.
	* testsuite/msgset.c: Remove.

2020-08-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix race condition in mockmta.

	* testsuite/mockmta.c (mta_open): Call to listen before
	printing the port number. This ensures that the client will
	find port listening to its requests.

2020-08-14  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/stream/mapfile_stream.c (_mapfile_open): For
	MU_STREAM_WRITE set open flags to O_RDWR. This is required for
	the remapping code to work. Without it mmap with MAP_SHARED
	falls with EACCESS.
	* libmailutils/stream/stream.c (mu_stream_close): Improve error
	checking.

2020-08-11  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: use append mode to reduce memory requirements.

	* decodemail/decodemail.c (main): Open output mailbox in append
	mode. If truncate is requested, open it rw for truncating, then
	close and reopen for appending. This speeds up operation
	considerably.
	* libproto/mbox/mbox.c (mbox_open): Change rules for selecting
	mmap vs file open.
	(mbox_close): Destroy the stream.
	(append_message_to_stream): Minor fix.
	(mbox_append_message): Unlock the stream on failure as well as
	on success.

2020-08-11  Sergey Poznyakoff  <gray@gnu.org>

	Allow the caller to unref messages obtained from the mailbox.

	* include/mailutils/sys/message.h (struct _mu_message): New
	member: _detach.
	* libmailutils/mailbox/msgref.c (_mu_message_free): Detach
	message from the owning object.
	* libmailutils/base/amd.c (_amd_attach_message): Provide the
	_detach method.
	* libproto/dotmail/message.c (mu_dotmail_message_get):
	Initialize the _detach member.
	* libproto/imap/mbox.c (_imap_mbx_get_message): Likewise.
	* libproto/mbox/mbox.c (new_message): Likewise.
	* libproto/pop/mbox.c (pop_create_message): Likewise. 
	* libmailutils/stream/temp_stream.c (temp_stream_write):
	Tempfile stream is created fully buffered. Free the buffer
	before reinitializing. 
	* lib/mdecode.c (message_body_stream): Change error message for
	MU_ERR_NOENT.
	* decodemail/decodemail.c (main): Unref the original message to
	decrease memory usage.

2020-08-10  Sergey Poznyakoff  <gray@gnu.org>

	Use mu_temp_stream_create instead of mu_temp_file_stream_create
	everywhere.

2020-08-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix compilation without TLS.

	* testsuite/mockmta.c: Fix preprocessor conditionals regarding
	TLS.

2020-08-09  Sergey Poznyakoff  <gray@gnu.org>

	Implement temporary streams.

	A temporary stream functions as a memory stream until its size
	reaches a preconfigured threshold value. Once it is reached,
	the stream storage is automatically converted to a temporary
	file, and all data written so far are transferred to the new
	storage. If the temporary file cannot be created, the stream
	continues to operate in memory-based mode.

	This stream type is intended to decrease the number of used
	file descriptors.

	* include/mailutils/sys/Makefile.am: Add temp_stream.h
	* include/mailutils/sys/temp_stream.h: New file.
	* include/mailutils/stream.h (mu_temp_file_threshold_size): New
	extern.
	(mu_temp_stream_create): New proto.
	* libmailutils/stream/Makefile.am: Add temp_stream.c.
	* libmailutils/stream/temp_stream.c: New file.
	* libmailutils/string/Makefile.am: Add strtosize.c 
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am
	* libmailutils/tests/strtoc.c: Add tests for mu_c_hsize.
	* libmailutils/tests/temp_stream.c: New test program.
	* libmailutils/tests/testsuite.at: Test the temp_stream
	functionality.
	* testsuite/testsuite.inc (MU_CHECK): New macro. 
	* libmailutils/mailbox/body.c (body_get_transport): Use
	mu_temp_stream_create.

2020-08-08  Sergey Poznyakoff  <gray@gnu.org>

	New function: mu_strtosize.

	* include/mailutils/cstr.h (mu_strtosize): New proto.
	* libmailutils/string/strtosize.c: New file.
	* libmailutils/string/Makefile.am: Add strtosize.c
	* libmailutils/string/str_to_c.c: Implement conversions for
	mu_c_hsize.
	* include/mailutils/util.h (mu_c_hsize): New mu_c_type,
	* libmailutils/tests/strtoc.c: Add tests for mu_c_hsize. 
	* libmu_auth/ldap.c: Use mu_strtosize to parse quota.
	* mda/lib/mailquota.c: Likewise.

2020-08-08  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in MIME parser.

	* libmailutils/mime/mime.c: Rewrite boundary matcher as a
	separate function.

2020-08-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix referencing uninitialized value.

	* decodemail/decodemail.c (message_decode_mime): Don't
	dereference newmsg prior to creating it.

2020-08-07  Sergey Poznyakoff  <gray@gnu.org>

	stream API: remove the readdelim method.

	The method is superfluous as the API itself provides the
	necessary functionality. Besides, it interacted poorly with
	positioning in buffered streams.

	* include/mailutils/sys/stream.h (struct _mu_stream): Remove
	the readdelim method.
	* libmailutils/stream/stream.c (mu_stream_readdelim)
	(mu_stream_getdelim): Remove uses of the readdelim method. 
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Add new test.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/getdelim.at: New test.
	* libmailutils/tests/stream-getdelim.c: New test program. 
	* libmailutils/base/amd.c: Remove readdelim implementation.
	* libmailutils/mailbox/msgstream.c: Likewise.
	* libmailutils/stream/iostream.c: Likewise.
	* libmailutils/stream/streamref.c: Likewise.
	* libmailutils/stream/xscript-stream.c: Likewise.
	* libproto/pop/pop3_stream.c: Likewise. 
	* mail/decode.c (mime_descend): Handle errors from
	mu_message_unencapsulate graciously. On failure, treat
	message/rfc822 as text/plain.

2020-08-07  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: if run out of fds report the number of fds needed.

	* decodemail/decodemail.c: Special handling for EMFILE.

2020-08-07  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/stream/temp_file_stream.c
	(mu_temp_file_stream_create): Fix return value.
	* decodemail/decodemail.c (message_decode): Split to two
	subfunctions to improve error recovery.
	* include/mailutils/sys/body.h: Fix typo.

2020-08-06  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: make sure each message has the final newline on its
	own.

	* include/mailutils/stream.h (mu_stream_copy_wcb)
	(mu_stream_copy_nl): New protos.
	* libmailutils/stream/streamcpy.c (mu_stream_copy_wcb)
	(mu_stream_copy_nl): New functions.
	* libproto/mbox/mbox.c (append_message_to_stream): Use
	mu_stream_copy_nl.
	* decodemail/decodemail.c (hdr_print, body_print): Remove.
	(message_store_stdout): Use message stream instead of piping
	header and body separately. Use mu_stream_copy_nl to ensure the
	message has a final newline.

2020-08-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix in scm testsuite.

	* libmu_scm/tests/message-get-envelope-date.at: Expected time
	zone is UTC (compensates for the change introduced in
	50d7ea1d1b).

2020-08-05  Sergey Poznyakoff  <gray@gnu.org>

	logstream: introduce optional prefix.

	The prefix, if set, is output at the beginning of each line,
	after the location and before the severity. It can be used to
	provide additional information about the diagnostics, such as,
	e.g. the number or UID of the message.

	The decodemail utility makes use of the new feature.

	* include/mailutils/log.h (MU_LOGMODE_PREFIX): New define.
	* include/mailutils/stream.h
	(MU_IOCTL_LOGSTREAM_SET_LOCUS_RANGE)
	(MU_IOCTL_LOGSTREAM_SET_PREFIX): New defines.
	* include/mailutils/sys/logstream.h (_mu_log_stream): New
	member: prefix.
	* libmailutils/stream/logstream.c (_log_write): Output the
	prefix.
	(_log_done): Dereference the prefix.
	(_log_ctl): Handle MU_IOCTL_LOGSTREAM_SET_LOCUS_RANGE and
	MU_IOCTL_LOGSTREAM_SET_PREFIX. 
	* libmailutils/tests/logstr.c: New test: prefix.
	* libmailutils/tests/logstr.at: Test log prefix functionality. 
	* decodemail/decodemail.c: Remove crd_error. Use logstream
	prefix to display message part locations.

2020-08-05  Sergey Poznyakoff  <gray@gnu.org>

	Add two manpages.

2020-08-05  Sergey Poznyakoff  <gray@gnu.org>

	Assorted fixes.

	* libmailutils/mailbox/body.c (mu_body_size): Don't unref the
	transport stream. This fixes a bug introduced in 45d54031f4.
	* decodemail/decodemail.c (message_decode): Additional
	error-checking.
	* libmailutils/cfg/parser.y (split_cfg_path): Free the
	mu_wordsplit object on error.
	* libmu_sieve/extensions/spamd.c (spamd_read_line): Fix the
	argument to free. 
	* doc/texinfo/programs/decodemail.texi: Remove a techically
	incorrect passage.
	* examples/sa.c: Initialize the urlstr variable.
	* libmailutils/base/amd.c (amd_msg_lookup): Store the value in
	*pret only if returning success.
	(amd_body_stream_seek): Check the return value from
	amd_body_size.
	* libmailutils/base/permstr.c (mu_readlink): Fix the
	uninitialized variable.
	* libmailutils/base/symlink.c (mu_readlink) Store the value in
	*plen only on success.

2020-08-03  Sergey Poznyakoff  <gray@gnu.org>

	Housekeeping.

2020-08-02  Sergey Poznyakoff  <gray@gnu.org>

	Provide fallback methods for restoring the envelope date.

	* libmailutils/mailbox/msgenv.c (message_envelope_date): Try
	Received, X-Envelope-Date, and Date headers, in that order.
	* libmailutils/datetime/scantime.c (mu_scan_datetime): Timezone
	defaults to UTC.

2020-08-01  Sergey Poznyakoff  <gray@gnu.org>

	New function to reconstruct message envelope from the headers.

	* include/mailutils/sys/message_stream.h (_mu_message_stream):
	Reorganize structure.
	* libmailutils/base/amd.c: Use mu_message_reconstruct_envelope
	instead of the amd-specific envelope functions.
	* libmailutils/stream/message_stream.c: Likewise.
	* libmailutils/tests/readmesg.at: New test case.
	* libmailutils/tests/readmesg.c: New test program.
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/testsuite.at: Likewise.
	* mh/tests/mhl.at: Update expected output.
	* mh/tests/mhn.at: Likewise.
	* testsuite/mh/mbox1/: Fix timestamps in X-Envelope-Date
	* testsuite/mh/teaparty/: Likewise.

2020-08-01  Sergey Poznyakoff  <gray@gnu.org>

	New function for reconstructing the message envelope from its
	headers.

	* libmailutils/address/parse822.c (mu_parse822_route_addr):
	Accept <local-part-only> if the default domain is set. 
	* include/mailutils/message.h
	(mu_message_reconstruct_envelope): New prototype.
	* libmailutils/mailbox/msgenv.c (message_envelope_sender): Try
	each candidate header in turn until a valid email is extracted
	or run out of headers. In the latter case, use the current user
	login name as the email.
	(mu_message_reconstruct_envelope): New function. 
	* libmailutils/tests/Makefile.am: Add new test.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/recenv.c: Test program for the
	mu_message_reconstruct_envelope function
	* libmailutils/tests/recenv.at: New test.

2020-08-01  Sergey Poznyakoff  <gray@gnu.org>

	MIME-related fices in decodemail.

	* decodemail/decodemail.c (message_decode): Initialize ismime
	to 0.
	* libmailutils/mime/mimehdr.c (parse_param): Silently ignore
	duplicated parameters.

2020-07-31  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: Fix storing the envelope.

	Copying the envelope was broken in f111a7ad. This fixes it and
	improves the diagnostics in message_store_mbox.

	* decodemail/decodemail.c (message_store_mbox)
	(message_store_stdout): Take mu_coord_t as 3rd argument.
	Improve diagnostics.
	(message_store_mbox): Don't exit on address family errors.
	(message_decode): Decrement dim.

2020-07-30  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/base/ctparse.c (content_type_parse): Initialize
	rc.
	* decodemail/decodemail.c (message_decode): Use the
	MU_CONTENT_TYPE_PARAM flag.
	* lib/mdecode.c: Likewise.

2020-07-29  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* mda/lib/script.c: Restore the message-id-header configuration
	statement.

2020-07-29  Sergey Poznyakoff  <gray@gnu.org>

	Relax syntax rules for parsing Content-Type headers.

	* decodemail/decodemail.c (qstring_format): Account for s==NULL
	(message_decode): Use MU_CONTENT_TYPE_RELAXED when parsing
	content types.
	* doc/texinfo/programs/decodemail.texi: Document handling of
	partial content types.
	* include/mailutils/util.h (MU_CONTENT_TYPE_STRICT)
	(MU_CONTENT_TYPE_RELAXED)
	(MU_CONTENT_TYPE_PARAM): New constants.
	(mu_content_type_parse_ext): New function.
	* lib/mdecode.c (text_mime_cmp): Implement comparison of
	partial content types (missing subtype).
	(message_body_stream): Use MU_CONTENT_TYPE_RELAXED.
	* libmailutils/base/ctparse.c (content_type_parse): Take
	additional argument (flags). Modify parsing algorithm depending
	on its value.
	(mu_content_type_parse_ext): New function.
	(mu_content_type_parse): Rewrite as a wrapper over
	mu_content_type_parse_ext.
	(mu_content_type_destroy): Account for subtype==NULL.

2020-07-27  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: quote personal part of an address header only if
	necessary.

	* decodemail/decodemail.c (is_address_header): Add "From:".
	(qstring_format): Format as a quoted string only if really
	necessary.
	(message_decode): Fix improper use of address_decode.

2020-07-27  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* imap4d/namespace.c (prefix_translate_name): The name "INBOX"
	is special only without prefix.

2020-07-25  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: double-quote decoded personal parts of email
	addresses.

	* decodemail/decodemail.c: Take care to double-quote decoded
	personal parts of email addresses.
	* libmailutils/address/parse822.c (mu_parse822_quoted_string):
	Don't skip 8-bit characters.

2020-07-25  Sergey Poznyakoff  <gray@gnu.org>

	Improve error tolerance when parsing MIME structured headers.

	* include/mailutils/assoc.h (mu_assoc_set_mark)
	(mu_assoc_head_set_mark, mu_assoc_tail_set_mark) (mu_assoc_pop,
	mu_assoc_shift)
	(mu_assoc_sweep_unset, mu_assoc_pull): New protos.
	* libmailutils/base/assoc.c: New functions (see above).
	* libmailutils/mime/mimehdr.c (parse_param): Mark last
	installed element for sweeping. When seeing a semicolon, unmark
	it. Return MU_ERR_PARSE on errors. On success, install the
	created parameter in the assoc array.
	(_mime_header_parse): Change type of the subset parameter.
	Attempt error recovery on parse errors. If it succeeds, sweep
	out the last installed parameter. If subset is specified, use
	mu_assoc_pull to populate it from the created assoc.
	(mu_mime_header_parse_subset)
	(mu_mime_param_assoc_create): Update invocations of
	_mime_header_parse.
	* libmailutils/tests/mimehdr.at: Test error tolerance.
	* libmailutils/tests/mimehdr.c: Use mu_cli_simple to parse
	command line. Treat positional arguments as names of the
	parameters to retain on output.

2020-07-24  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: print error location (message.part) with
	diagnostics.

	* decodemail/decodemail.c (message_decode): Take three
	arguments: the message(part), its location as a pointer to
	mu_coord_t object and dimension, meaning number of slots used
	in the latter. Use crd_error for diagnostics.
	(crd_error): New function. Display error message prefixed with
	the location of the message part it belongs to.
	* libmailutils/base/coord.c (mu_coord_realloc): Update the
	stored dimension.

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	* decodemail/decodemail.c (message_decode): Don't stop on copy
	errors.  Instead, issue an error message and mark the part in
	the output message where copying failed with an explicit error
	statement.

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in base64 and inline-comment filters.

	* libmailutils/diag/errors (MU_ERR_BASE64): New error code.
	* libmailutils/filter/base64.c (_base64_decoder): Stop decoding
	and return failure if padding length gets greater than 3
	* libmailutils/filter/inline-comment.c (_ilcmt_decoder): Make
	sure proper error code is set.

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: better error tolerance.

	* decodemail/decodemail.c (message_decode): Don't bail out if
	unable to get the Content-Type header or copy the message
	envelope.

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Relax sytnax requirements for MIME structured headers.

	* libmailutils/base/ctparse.c (content_type_parse): Rewrite the
	value splitting on type and subtype. Allow for optional
	whitespace at both sides of "/". Both type and subtype can
	contain arbitrary characters (except for "/"). This is not
	right according to RFC 2045, but reportedly such cases exist in
	old mails.
	* libmailutils/mailbox/bodystruct.c (bodystructure_fill): Fix
	parsing of the Content-Type header. Fix storing the pointer to
	an automatic variable in assoc object. Unfold the
	Content-Disposition value.
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Return in
	pvalue entire prefix part up to the first semicolon, with
	leading and trailing whitespace removed. Allow for both output
	parameters to be NULL.
	* libmailutils/tests/content-type.at: Add new test case.
	* libmailutils/tests/conttype.c: ignore empty lines in input.
	* libmailutils/tests/mimehdr.at: Change mimehdr16 and mimehdr17
	tests: this syntax is accepted by the relaxed rules of the
	modified parser.

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Fixes in MIME structured header parser.

	* libmailutils/mime/mimehdr.c (parse_param): Allow for
	whitespace surrounding =.
	* libmailutils/tests/mimehdr.at: More tests

2020-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Add missing file.

	* libmailutils/tests/listsort.c: New file.

2020-07-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix list sort.

	* include/mailutils/sys/list.h (_mu_list_null)
	(_mu_list_init): New functions.
	* libmailutils/list/sort.c (_list_qsort): Fix pivot selection
	and list merging.
	* libmailutils/tests/.gitignore: Add listsort.
	* libmailutils/tests/Makefile.am: Likewise.
	* libmailutils/tests/list.at: Check sorting large lists.

2020-07-22  Sergey Poznyakoff  <gray@gnu.org>

	Stricter parsing of structured MIME headers.

	The mu_content_type_parse function allowed for missing
	/subtype, which caused grief in case of blatantly invalid
	inputs.

	* decodemail/decodemail.c (message_decode): Handle
	mu_content_type_parse failures racefully: return a reference to
	the input message. Improve diagnostics.
	* lib/mdecode.c (message_body_stream): Improve diagnostics.
	* libmailutils/base/assoc.c (merge_sort): Bugfix: accept empty
	input list.
	* libmailutils/base/ctparse.c (content_type_parse): Require
	that both type and subtype be present.
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Move
	parameter parsing to a separate function. Do better syntax
	checking. 
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/content-type.at: New tests.
	* libmailutils/tests/conttype.c: Return 1 if at least one parse
	fails.
	* libmailutils/tests/mimehdr.at: Add tests for invalid inputs.
	* libmailutils/tests/mimehdr.c: Better diagnostics.

2020-07-21  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: always copy the envelope.

	* decodemail/decodemail.c (message_decode): When processing the
	top-level message, always copy the original envelope to it.

2020-07-20  Sergey Poznyakoff  <gray@gnu.org>

	New simplified interface to command line option parser.

	* include/mailutils/cli.h (MU_CLI_OPTION_): New constants.
	(mu_cli_simple): New proto.
	* libmailutils/cli/simple.c: New file.
	* libmailutils/cli/Makefile.am: Add new source.
	* libmailutils/cli/cli.c (mu_cli_ext): Take into account
	po_special_flags in hints. Honor MU_PARSEOPT_HELP_HOOK and
	MU_PARSEOPT_EXIT_ERROR set in hints.
	* libmailutils/opt/opt.c (parseopt_init): Fix improper use of
	MU_PARSEOPT_PACKAGE_URL instead of MU_PARSEOPT_DATA.

2020-07-20  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leak in property code.

	The property API contains a serious flaw that leads to memory
	leaks. The property initialization function (set by
	mu_property_set_init or similiar functions) is supposed to
	initialize the supported methods in mu_property_t, in
	particular _prop_done, which is responsible for releasing the
	resources allocated for the initdata object upon invocation of
	mu_property_destroy.

	However, the initialization function gets called only upon a
	read/write manipulation on the property. This means that unless
	at least one such operation is performed the _prop_done method
	will not be initialized and the resources (if any) allocated
	for the initial data object will never be released. This is
	true, in particular for the MH properties and assoc properties
	with I/O stream.

	Until the API is revamped, the following solution is
	implemented. The function mu_property_create_init calls the
	mu_property_init function if called with a non-NULL third
	argument (initdata). This ensures that it will be properly
	freed upon destroying the object.

	The use of low-level functions mu_property_set_init and
	mu_property_set_init_data requires the caller to call
	mu_property_init explicitly, if needed.

	* include/mailutils/property.h (mu_property_init): New proto.
	* libmailutils/property/create.c (_mu_property_init): Rename to
	mu_property_init.
	(mu_property_create_init): Call mu_property_init if initdata is
	not NULL.
	* libmailutils/property/propinv.c: Update call to
	mu_property_init.

2020-07-20  Sergey Poznyakoff  <gray@gnu.org>

	Provide tests for auxiliary test utilities.

	* configure.ac: Initialize testsuite in libproto/mbox
	* libproto/mbox/Makefile.am (SUBDIRS): Declare.
	* libproto/mbox/tests/Makefile.am: New file.
	* libproto/mbox/tests/atlocal.in: New file.
	* libproto/mbox/tests/testsuite.at: New file.
	* testsuite/ufms.at: Rename to libproto/mbox/tests/ufms.at
	* testsuite/ufms.c: Rename to libproto/mbox/tests/ufms.c
	* testsuite/.gitignore: Update.
	* testsuite/mockmail.at: New file.
	* testsuite/mockmail.c (main): Fix the state machine.
	* testsuite/mockmta.at: New file.
	* testsuite/mockmta.c: Fix typo in the comment.
	* testsuite/testsuite.at: Add new tests
	* testsuite/Makefile.am: Add new tests

2020-07-19  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

	* testsuite/Makefile.am (cwdrepl_LDADD): Remove mailutils
	dependencies
	* testsuite/cwdrepl.c: Replace with a mu-independent version
	from wydawca. (http://git.gnu.org.ua/cgit/wydawca.git)
	* testsuite/mockmail.c: Fix indentation
	* mh/tests/comp.at: Remove trailing whitespace from the output.
	* mh/tests/forw.at: Likewise.
	* mh/tests/repl.at: Likewise.

2020-07-17  Sergey Poznyakoff  <gray@gnu.org>

	New test tool: mockmail.

	* testsuite/mockmail.c: New auxiliary tool.
	* testsuite/.gitignore: Add mockmail.
	* testsuite/Makefile.am: Build mockmail.
	* testsuite/mockmta.c: Change docs. 
	* mail/testsuite/mail/send.exp: Use testsuite/mockmail to
	emulate Sendmail.
	* mda/mda/tests/forward.at: Likewise.
	* mh/tests/send.at: Likewise.
	* mh/tests/testsuite.at: Likewise.
	* sieve/tests/moderator.at: Likewise.
	* sieve/tests/redirect.at: Likewise.
	* sieve/tests/reject.at: Likewise.
	* sieve/tests/testsuite.at: Likewise.
	* sieve/tests/vacation.at: Likewise.

2020-07-17  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite test suite for smtp mailer.

	* libproto/mailer/smtp.c: Fix mailer initialization (bug
	introduced in a0f754eb81). Initialization based on mailer URL
	cannot be run from _mailer_smtp_init, since at that stage URL
	is not yet known. Move it to smtp_open and make sure it is run
	only once. 
	* am/tls.m4: Make TLS_LIBS a subst variable. 
	* testsuite/mockmta.c: New test tool.
	* testsuite/.gitignore: Update.
	* testsuite/Makefile.am: Update.
	* libproto/mailer/tests/.gitignore: Update.
	* libproto/mailer/tests/Makefile.am: Add new tests.
	* libproto/mailer/tests/testsuite.at: Include new tests.
	* libproto/mailer/tests/seqsend.at: New test case.
	* libproto/mailer/tests/smtp-msg.at: New test case. Moved from
	testsuite/smtp-msg.at. Uses mockmta.
	* libproto/mailer/tests/smtp-str.at: New test case. Moved from
	testsuite/smtp-str.at. Uses mockmta.
	* libproto/mailer/tests/smtpsend.c: New program. Moved from
	testsuite/smtpsend.c.

2020-07-15  Sergey Poznyakoff  <gray@gnu.org>

	Test multiple transmissions over a single SMTP mailer.

	* configure.ac: Configure testsuite in libproto/mailer/tests.
	* examples/mta.c: New option -c (continuous reception).
	(mta_smtp): Continue accepting connections if -c is given.
	* libproto/mailer/Makefile.am: Add tests.
	* libproto/mailer/tests/.gitignore: New file.
	* libproto/mailer/tests/Makefile.am: New file.
	* libproto/mailer/tests/atlocal.in: New file.
	* libproto/mailer/tests/sendm.c: New file.
	* libproto/mailer/tests/sends.c: New file.
	* libproto/mailer/tests/seqsend.at: New file.
	* libproto/mailer/tests/testsuite.at: New file.

2020-07-15  Sergey Poznyakoff  <gray@gnu.org>

	smtp mailer: fix multiple open/close on the same mailer.

	This fixes the operation of the smtp(s) mailer in the following
	context

	 while (cond)
	 {
	 mu_mailer_open (mailer, ...);
	 mu_mailer_send_message (mailer, msg, ...);
	 mu_mailer_close (mailer);
	 } 
	* include/mailutils/mailer.h (mu_mailer_get_streamref)
	(mu_mailer_set_stream): Remove.
	* include/mailutils/sys/mailer.h (struct _mu_mailer): Remove
	stream.
	* libmailutils/mailer/mailer.c (mu_mailer_create): Don't
	reference stream.
	(mu_mailer_set_stream,mu_mailer_get_streamref): Remove.
	* libproto/mailer/smtp.c (struct _smtp_mailer): New members:
	tls and auth.
	(smtp_open): Open the stream and assign it.
	(_mailer_smtp_init): Create the struct _smtp_mailer object and
	save it in the mailer.
	(smtp_close): Close and destroy the carrier.
	* libproto/mailer/smtp_carrier.c (mu_smtp_set_carrier): Accept
	NULL as the carrier argument.

2020-07-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks.

	* libmailutils/sockaddr/free.c (mu_sockaddr_free): Free the
	address itself.
	* libmailutils/stream/message_stream.c
	(mu_message_from_stream_with_envelope): Envelope must be owned
	by the message. Change mu_envelope_create accordingly.
	(_env_msg_date, _env_msg_sender): Likewise.
	* libmailutils/url/destroy.c: Free url->portstr.

2020-07-15  Sergey Poznyakoff  <gray@gnu.org>

	Update decodemail.texi.

	Improved version from Karl Berry.

2020-07-14  Sergey Poznyakoff  <gray@gnu.org>

	Document the decodemail tool.

	* THANKS: Add Karl Berry
	* doc/texinfo/programs/decodemail.texi: New file.
	* doc/texinfo/Makefile.am (programs_TEXINFOS): Add new file.
	* doc/texinfo/mailutils.texi: Document the decodemail tool.
	* doc/texinfo/programs.texi: Document the mime configuration
	statement.
	* doc/texinfo/programs/readmsg.texi: Document new options.

2020-07-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix https://savannah.gnu.org/bugs/index.php?57787.

2020-07-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks.

	* libmailutils/diag/debug.c (mu_debug_log): Free buf.
	* libmailutils/mailer/progmailer.c (mu_progmailer_send): Call
	mu_stream_destroy (fix copy-paste error).
	* libmailutils/string/expvar.c (mu_str_expand): Save word[0],
	free the rest.
	* mail/mail.c (main): Free the result of mu_argcv_string.
	* mail/mail.h (compose_header_get): Return const ptr.
	* mail/mailline.c (ml_readline_internal): Free the buffer on
	EOF.
	* mail/reply.c (reply0): compose_header_get returns const
	char*.
	* mail/send.c (add_body): Don't increase stream reference count
	(follow-up to 45d54031).
	(compose_header_get): Return const char* (use
	mu_header_sget_value).
	(mail_send0): Always free buf.
	* mail/source.c (source_readline): Free buf on EOF.
	* mail/util.c (util_header_expand): Free mu_wordsplit.

2020-07-07  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/stream/stream.c (_stream_read_unbuffered):
	Update pnread only on success.
	* libmailutils/string/muctype.c: Mark underscore as
	MU_CTYPE_HEADR

2020-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix assoc operation in case-insensitive mode.

	* libmailutils/base/assoc.c (_mu_assoc): New member: hash.
	(mu_assoc_create): Set proper hashing function for
	case-insensitive operation.

2020-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Implement mu_stream_shift function.

	* include/mailutils/stream.h (mu_stream_shift): New proto.
	* libmailutils/stream/Makefile.am: Add new source.
	* libmailutils/stream/streamshift.c: New file.
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/streamshift.at: New file.
	* libmailutils/tests/t-streamshift.c: New file.
	* libmailutils/tests/testsuite.at: Include new test.

2020-07-05  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/imapio/getline.c (mu_imapio_getline): Don't
	unquote literals.

2020-06-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix static builds with libldap.

2020-06-29  Sergey Poznyakoff  <gray@gnu.org>

	Improve default content types for message_body_stream.

2020-06-27  Sergey Poznyakoff  <gray@gnu.org>

	sieve: quoted strings may span several lines.

	As per RFC 5228, quoted strings may span several lines and are
	allowed to contain special characters. Backslash and
	double-quotes appearing within a quoted string must be escaped
	by a backslash. A backslash followed by any other character is
	silently removed.

	* libmu_sieve/sieve-lex.l (line_addz, str_unescape): Remove.
	Allow for \n in quoted strings. Escape only " and \ with
	backslash. Replace unrecognized escapes with the character
	after \.
	* sieve/examples/exn-5.4.sv: envelope should not be required.
	* sieve/tests/compile.at: Add more tests.

2020-06-27  Sergey Poznyakoff  <gray@gnu.org>

	Replace AM_LEXFLAGS in Makefile.ams with AM_LFLAGS.

2020-06-26  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in configure.

	* configure.ac (check_bdb): Add library to DBMLIBS when it is
	confirmed that the header and library versions match.

2020-06-26  Sergey Poznyakoff  <gray@gnu.org>

	Use mailutils instead of mailutils-config in AM_GNU_MAILUTILS.

	* mu-aux/mailutils.m4: Rewrite using the mailutils tool.

2020-06-26  Sergey Poznyakoff  <gray@gnu.org>

	Restore mailutils-config (partial revert of e1e7e02cf932)

	It was premature to remove that script, since some existing
	packages still rely on it.

	* mu/mailutils-config: Restore. Put installation directory
	before other PATH components, not after them.

2020-06-25  Sergey Poznyakoff  <gray@gnu.org>

	configure: make sure python-config version matches that of
	python.

2020-06-23  Sergey Poznyakoff  <gray@gnu.org>

	Specify additional content-type parameters when creating
	multipart MIME objects.

	Preserve original parameters (excepting boundary) when
	processing multipart messages by decodemail.

	* decodemail/decodemail.c (message_decode): copy parameters
	from the original Content-Type.
	* include/mailutils/mime.h (mu_mime_create_multipart): Add
	third parameter: an assoc table of additional content-type
	parameters.
	(mu_mime_content_type_param): Rename to
	mu_mime_content_type_get_param.
	(mu_mime_content_type_set_param): New proto.
	* libmailutils/mime/mime.c: See above.
	(_mime_set_content_type): Preserve all parameters.

2020-06-22  Sergey Poznyakoff  <gray@gnu.org>

	decodemain: set 7bit or 8bit transfer encoding on decoded
	parts.

	* decodemail/decodemail.c (message_decode): Set 8bit or 7bit
	transfer encoding, depending on the character of the decoded
	stream.
	* include/mailutils/cstr.h (mu_mem_8bit_count): New proto.
	* include/mailutils/stream.h (MU_STREAM_STAT_IN8BIT)
	(MU_STREAM_STAT_OUT8BIT): New constants.
	* libmailutils/stream/stream.c (_stream_read,_stream_write):
	Set MU_STREAM_STAT_IN8BIT (MU_STREAM_STAT_OUT8BIT) if requested
	* libmailutils/string/strcount.c (mu_mem_8bit_count): New
	function.

2020-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix default text mime types.

2020-06-21  Sergey Poznyakoff  <gray@gnu.org>

	Make the list of textual mime types configurable.

	* decodemail/decodemail.c: Request the "mime" configuration
	capability.
	* lib/mdecode.c: Make the list of textual mime types
	configurable via the mime.text-type configuration statement.
	* lib/muaux.h (mu_cli_capa_mime): New extern.

2020-06-17  Sergey Poznyakoff  <gray@gnu.org>

	Improve MIME parser and mime object creation.  Preserve
	original content-type in decodemail.

	* decodemail/decodemail.c: Preserve the content subtype of each
	message.
	* include/mailutils/mime.h (MU_MIME_CONTENT_TYPE_MULTIPART)
	(MU_MIME_CONTENT_SUBTYPE_MIXED)
	(MU_MIME_CONTENT_SUBTYPE_ALTERNATIVE)
	(MU_MIME_CONTENT_SUBTYPE_DIGEST): New defines.
	(mu_mime_create_multipart): New proto.
	(mu_mime_sget_content_type,mu_mime_aget_content_type)
	(mu_mime_sget_content_subtype,mu_mime_aget_content_subtype)
	(mu_mime_content_type_param): New protos.
	* include/mailutils/sys/mime.h (content_type): Change type.
	(boundary): Const now. Points to a string in
	content_type->param.
	* libmailutils/base/ctparse.c (format_param): Fix quoting.
	Insert additonal whitespace after each semicolon.
	* libmailutils/mime/mime.c: Use mu_content_type_t to represent
	the Content-Type header.
	(mu_mime_create_multipart): New function.
	(mu_mime_create): Use mu_mime_create_multipart to create new
	mime object.
	(mu_mime_sget_content_type,mu_mime_aget_content_type)
	(mu_mime_sget_content_subtype,mu_mime_aget_content_subtype)
	(mu_mime_content_type_param): New functions.

2020-06-16  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2020-06-16  Sergey Poznyakoff  <gray@gnu.org>

	Drop support for Python 2.x.

2020-06-16  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: don't recode charsets unless explicitly requested.

	* decodemail/decodemail.c: New options --charset and --recode
	(main): Recode messages only if requested from the command
	line. Don't add the Content-Disposition header.
	* include/mailutils/util.h (mu_content_type_format): New proto.
	* lib/mdecode.c (charset_setup): Return immediately if charset
	is NULL.
	* libmailutils/base/ctparse.c (mu_content_type_format): New
	function.

2020-06-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix long-standing memory leak in body.c.

	* include/mailutils/body.h (mu_body_ref, mu_body_unref): New
	functions.
	* include/mailutils/sys/body.h (_mu_body): New member
	ref_count.
	* libmailutils/mailbox/body.c: Keep body and body stream
	objects alive for as long as their reference counters are not
	zero. Rewrite transport stream code.
	* libmailutils/tests/modmesg.c: Use MU_ASSERT.

2020-06-15  Sergey Poznyakoff  <gray@gnu.org>

	decodemail: copy original message envelope.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Add missing files.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Move decodemail to a separate directory and make it
	installable.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Upgrade wordsplit.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	New utility: decodemail.

	* examples/decodemail.c: New source.
	* examples/.gitignore: Add decodemail.
	* examples/Makefile.am: Build decodemail.
	* lib/mdecode.c: New file.
	* lib/Makefile.am: Add mdecode.c
	* lib/muaux.h (message_body_stream): New proto.
	* readmsg/msglist.c (message_body_stream): Move to a separate
	source in lib.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite mime message parser.

	* include/mailutils/sys/mime.h (MIME_STATE_BEGIN_LINE)
	(MIME_PARSER_HAVE_CR): Remove constants.
	(struct _mu_mime): Remove cur_buf and buf_size.
	* libmailutils/mime/mime.c (_mime_parse_mpart_message): Use
	mu_stream_getline instead of the handcrafted dual buffering
	scheme.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix message list parser.

	* mail/msgset.y: Throw range error only if message number is
	greater than the number of available messages.

2020-06-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks.

	* libmailutils/base/amd.c (amd_message_stream_close): Use
	mu_stream_destroy instead of mu_stream_close.
	* libmailutils/base/ctparse.c (content_type_parse): Free value.
	* libmailutils/base/tilde.c (mu_tilde_expansion): Free proto.
	* libmailutils/cfg/driver.c (mu_config_destroy_container): Free
	refcount.
	* libmailutils/cfg/parser.y (mu_cfg_tree_postprocess): Destroy
	iterator.
	(mu_cfg_destroy_tree): Free the tree itself.
	* libmailutils/datetime/scantime.c (pop_input): Free the popped
	element.
	* libmailutils/mailer/mailer.c (send_fragments): Destroy mime
	after converting it to message.
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Free ws
	after errors.

2020-06-06  Sergey Poznyakoff  <gray@gnu.org>

	Use mu_coord_t in mail.

	* include/mailutils/message.h (mu_coord_part_string): New
	proto.
	* libmailutils/base/coord.c (mu_coord_part_string): New
	function.
	* mail/mail.h (message_set): Remove npart and msg_part.
	Introduce mu_coord_t crd instead. All uses updated.

2020-06-05  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/base/coord.c (mu_coord_alloc): Return the
	allocated memory.

2020-06-04  Sergey Poznyakoff  <gray@gnu.org>

	Remove placeholder (mapi) and dead (nntp) code.

2020-06-04  Sergey Poznyakoff  <gray@gnu.org>

	Fix compilation without libunistring.

	* lib/unistr_c.c (unistr_is_substring_dn): Add missing function

2020-06-02  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

2020-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/coord.c (mu_coord_string): Reverse the
	partially built coordinate string.
	* mail/msgset.y (msgset_part_str): Likewise.

2020-06-02  Sergey Poznyakoff  <gray@gnu.org>

	Improve message part iterator and readmsg output.

	* include/mailutils/message.h (mu_coord_t): New data type.
	(mu_coord_alloc, mu_coord_realloc)
	(mu_coord_dup, mu_coord_string): New protos.
	(mu_coord_length): New function.
	* libmailutils/base/Makefile.am: Add coord.c
	* libmailutils/base/coord.c: New file.
	* libmailutils/mime/mimeitr.c: Key returned by
	mu_iterator_current_kv is allocated in the struct mimeitr.
	Caller may not free it.
	(struct mimeitr): New member: coord.
	(getitem): Reallocate coord.
	(mimeitr_free): New function.
	(destroy): Use mimeitr_free.
	(itrdup): Duplicate coord
	(mu_message_get_iterator): Initialize coord.
	* libmailutils/tests/mimeitr.c: Use mu_coord_string to print
	the part coordinates.
	* readmsg/msglist.c (message_body_stream): New argument:
	unix_header. Install additional "FROM" encoding filter if it is
	set.
	(print_header): Special handling for "*" in the weedlist.
	(msgpart_str): Remove. Use mu_coord_string instead.
	(main): In mime decode mode, if -h (display all headers) is
	requested, ignore MIME headers, since after decoding they are
	no longer relevant.

2020-06-01  Sergey Poznyakoff  <gray@gnu.org>

	readmsg: Implement searches in MIME messages. Decode MIME on
	output.

	* configure.ac: Add UNISTRING_LIBS to MU_APP_LIBRARIES.
	* examples/Makefile.am: Link with $MU_APP_LIBRARIES instead of
	plain libmuaux.la.
	* mh/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* imap4d/imap4d.h (unistr_downcase)
	(unistr_is_substring): Move prototypes to lib/muaux.h
	* imap4d/search.c (_scan_header): Use unistr_is_substring_dn
	instead of unistr_is_substring.
	* include/mailutils/message.h (mu_message_get_iterator): New
	prototype.
	* lib/Makefile.am: Add unistr_u8.c or unistr_c.c, depending on
	MU_COND_UNISTRING.
	* lib/muaux.h (unistr_downcase)
	(unistr_is_substring,unistr_is_substring_dn): New functions.
	* lib/unistr_c.c: New file (moved from /imap4d).
	* lib/unistr_u8.c: Likewise.
	* libmailutils/mime/Makefile.am: Add mimeitr.c
	* libmailutils/mime/mimeitr.c: New file.
	* libmailutils/tests/Makefile.am: Add mimeitr.c
	* libmailutils/tests/mimeitr.c: New file. 
	* readmsg/msglist.c: Rewrite search in messages.
	* readmsg/readmsg.c: New options --glob, --regex, --ignorecase
	control message matching.
	* readmsg/readmsg.h (pattern_init,pattern_match)
	(pattern_free): New protos.

2020-05-29  Sergey Poznyakoff  <gray@gnu.org>

	Fix stream buffer parameters on truncate.

	* configure.ac: Version 3.9.90
	* libmailutils/stream/stream.c (mu_stream_truncate): Update
	stream->offset, stream->level, and stream->pos, if needed.

2020-05-29  Sergey Poznyakoff  <gray@gnu.org>

	mail: write command operates on message parts as well as on
	messages.

	Messages or message parts are decoded before being written to a
	disk file.

	* include/mailutils/cstr.h (mu_mem_c_count): New proto.
	* include/mailutils/stream.h (MU_STREAM_STAT_INLN)
	(MU_STREAM_STAT_OUTLN): New constants.
	* libmailutils/stream/stream.c (_stream_stat_incr)
	(_stream_seek): Rewrite as inline functions.
	(_stream_read, _stream_write): Rewrite as inline functions.
	Optionally count number of lines read/written.
	* libmailutils/string/strcount.c (mu_mem_c_count): New
	function.
	* libmailutils/tests/fltst.c: Update. 
	* mail/decode.c (format_msgset): Remove. Use msgset_str
	instead.
	(print_message_body): New function.
	* mail/mail.h (msgset_part_str)
	(util_get_message_part): New protos.
	(msgset_str): New function.
	* mail/msgset.y: Change the message part syntax. Components are
	separated by dots, instead of being enclosed in brackets. Old
	syntax is still supported for compatibility.
	* mail/struct.c (show_part): Use msgset_str.
	* mail/testsuite/mail/read.exp: Fix expected strings.
	* mail/util.c (util_get_message_part): New function.
	* mail/write.c (mail_write): Write message part if requested.
	Decode the body if the Content-Transfer-Encoding header is set.

2020-05-29  Sergey Poznyakoff  <gray@gnu.org>

	libmailutils: fix error in full and line buffer mode.

	* libmailutils/stream/stream.c (_stream_buffer_full_p): Fix
	conditions for buffered streams. The buffer is full if current
	pointer (not level) equals the size. For line buffering, any
	newline appearing in the written portion of the buffer causes
	flushing.
	(mu_stream_write): Fix the free space calculation.
	* libmailutils/tests/t0-stream.at: New file.
	* libmailutils/tests/t0-stream.c: New file.
	* libmailutils/tests/t1-stream.at: New file.
	* libmailutils/tests/t1-stream.c: New file.
	* libmailutils/tests/Makefile.am: Add new testcase.
	* libmailutils/tests/testsuite.at: Likewise.

2020-05-28  Sergey Poznyakoff  <gray@gnu.org>

	Amend b8664765e1.

	The body_end member holds the offset of the first character
	that follows the message body. In a well-formed mailbox, it is
	the newline character of a blank line that delimits the
	message. However, there are mailboxes that lack this blank
	line. In such cases body_end points to the ^F of the next
	envelope line.

	When saving the mailbox, delimiting blank lines are always
	emitted.

	* libproto/mbox/mbox.c (mbox_expunge_unlocked): Revert size
	calculation. Always emit a blank line after the message.

2020-05-27  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix INTR handling.

	The mail's signal handler is not called when using readline 6.0
	or newer. As a result pressing INTR no longer works as
	expected. To fix this, this change prevents libreadline from
	setting its own signal handlers.

	* mail/mailline.c (sig_handler): Call readline-specific signal
	handler.
	(ml_readline_init): Disable readline signal handling.

2020-04-28  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/datetime/utcoff.c (mu_utc_offset): Fix a typo.

2020-04-20  Sergey Poznyakoff  <gray@gnu.org>

	Fix uid->seqno translation.

	* libmailutils/msgset/trans.c (_mu_msgset_translate_pair):
	Don't exclude end point of the range.

2020-03-31  Sergey Poznyakoff  <gray@gnu.org>

	mbox: fix a bug in expunge routine.

	The bug will manifest itself by removal of the trailing newline
	in the last message in a block of unchanged messages when
	expunging the mailbox after removal of one or more messages
	before that block.

	Bug reported by Ken Olum.

	* libproto/mbox/mbox.c (mbox_expunge_unlocked): Fix an
	off-by-one error in computation of the file chunk size.

2020-03-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix improper handling of [TRYCREATE] and similar imap
	responses.

	* libproto/imap/resproc.c (parse_response_code): Fix an
	off-by-one index.

2020-03-27  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

	* imap4d/io.c (io_setio): Unref subordinate streams.
	* pop3d/extra.c: Likewise.

2020-03-22  Jordi Mallach  <jordi@debian.org>

	Call $PYTHON_CONFIG instead of pyhon-config.

2020-03-22  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: implement TLS in inetd mode.

	This is a follow-up to commit ddfa689bff. It also fixes
	possible bug in daemon mode: calls to auth_gssapi_init and
	auth_gsasl_init should appear after eventual demonization
	(mu_m_server_begin), since the latter may close file
	descriptors opened by them.

2020-03-18  Sergey Poznyakoff  <gray@gnu.org>

	Remove deprecated mailutils-config.  Other minor changes.

	* libmu_sieve/extensions/Makefile.am: Remove superfluous
	variables.
	* libmu_sieve/extensions/vacation.c: Remove unneeded include.
	* mu/mailutils-config: Remove.
	* mu/Makefile.am: Likewise.

2020-03-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix a typo.

2020-03-13  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.9.

2020-03-13  Sergey Poznyakoff  <gray@gnu.org>

	Distribute testsuite/package.m4.

2020-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years.

2020-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Remove include/mailutils/sys/wordsplit.h.

	The file is a symlink created by configure. It was
	inadvertently added by 2ad00905.

2019-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix build with Python 3.8
	(https://savannah.gnu.org/bugs/index.php?57318)

	* configure.ac: When setting PYTHON_LIBS, use the approach
	suggested in
	https://docs.python.org/dev/whatsnew/3.8.html#debug-build-uses-
	the-same-abi-as-release-build.

2019-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix https://savannah.gnu.org/bugs/index.php?57431.

	* libmailutils/mime/attachment.c (at_hdr): Always use base file
	name without directory components for both filename and name.
	(mu_message_create_attachment): Update accordingly.
	* NEWS: Update.

2019-12-15  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2019-12-15  Sergey Poznyakoff  <gray@gnu.org>

	mail: enforce inline disposition for message body.

	* mail/send.c (atchinfo) <disp_inline>: New member.
	(attlist_add): New argument: disp_inline.
	(saveatt): Split into two functions: saveatt and
	save_attachment. Make sure memory allocated for the MIME part
	is always freed. If disp_inline is set, enforce
	Content-Disposition: inline.
	(add_body): Set prominent identifier and request inline
	disposition.

2019-12-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix several linking issues.

	* configure.ac: Require libtool version 2.4.6
	(MU_LINK_POSTFLAGS): Remove. Not needed with the patched
	version of ltmain.sh. Detect the presencecof GSSAPI. Fix
	displaying the status of GSSAPI support. Remove the hack
	introduced on 2010-02-19 (commit 35ac66f056).
	(MU_AUTHLIBS,SQLLIB)
	(SQL_LOADABLE_MODULES,SQL_LIBOBJS): Insert spaces only when
	needed. 
	* mu-aux/ltmain.sh: ltmain.sh from libtool 2.4.6 with fixes
	from http://gray.gnu.org.ua/public/ltbug installed.
	* bootstrap.conf (bootstrap_epilogue): Install the fixed
	ltmain.sh version. 
	* am/gssapi.m4: Allow for "yes" and "probe" argument values.

	Improve makefile style consistency 
	 . Uniformly use parentheses instead of curly braces in
	variable
	 referencing;
	 . Prefer to use Make variables over substitution variables,
	for
	 variables prefixed with MU_; 
	* comsat/Makefile.am
	* dotlock/Makefile.am
	* examples/Makefile.am
	* examples/cpp/Makefile.am
	* frm/Makefile.am
	* imap4d/Makefile.am
	* imap4d/tests/Makefile.am
	* lib/Makefile.am
	* libmailutils/Makefile.am
	* libmailutils/address/Makefile.am
	* libmailutils/auth/Makefile.am
	* libmailutils/base/Makefile.am
	* libmailutils/cfg/Makefile.am
	* libmailutils/cidr/Makefile.am
	* libmailutils/cli/Makefile.am
	* libmailutils/datetime/Makefile.am
	* libmailutils/diag/Makefile.am
	* libmailutils/filter/Makefile.am
	* libmailutils/imapio/Makefile.am
	* libmailutils/list/Makefile.am
	* libmailutils/locus/Makefile.am
	* libmailutils/mailbox/Makefile.am
	* libmailutils/mailcap/Makefile.am
	* libmailutils/mailer/Makefile.am
	* libmailutils/mime/Makefile.am
	* libmailutils/msgset/Makefile.am
	* libmailutils/opt/Makefile.am
	* libmailutils/property/Makefile.am
	* libmailutils/server/Makefile.am
	* libmailutils/sockaddr/Makefile.am
	* libmailutils/stdstream/Makefile.am
	* libmailutils/stream/Makefile.am
	* libmailutils/string/Makefile.am
	* libmailutils/tests/Makefile.am
	* libmailutils/url/Makefile.am
	* libmailutils/wicket/Makefile.am
	* libmu_auth/Makefile.am
	* libmu_cpp/Makefile.am
	* libmu_dbm/Makefile.am
	* libmu_scm/Makefile.am
	* libmu_scm/mailutils/Makefile.am
	* libmu_sieve/Makefile.am
	* libmu_sieve/extensions/Makefile.am
	* libproto/dotmail/Makefile.am
	* libproto/dotmail/tests/Makefile.am
	* libproto/imap/Makefile.am
	* libproto/imap/tests/Makefile.am
	* libproto/maildir/Makefile.am
	* libproto/mailer/Makefile.am
	* libproto/mbox/Makefile.am
	* libproto/mh/Makefile.am
	* libproto/nntp/Makefile.am
	* libproto/pop/Makefile.am
	* mail/Makefile.am
	* mapi/Makefile.am
	* mda/lib/Makefile.am
	* mda/lmtpd/Makefile.am
	* mda/mda/Makefile.am
	* mda/mda/tests/Makefile.am
	* mda/putmail/Makefile.am
	* messages/Makefile.am
	* mh/Makefile.am
	* mh/tests/Makefile.am
	* mimeview/Makefile.am
	* movemail/Makefile.am
	* mu/Makefile.am
	* mu/libexec/Makefile.am
	* pop3d/Makefile.am
	* python/2/libmu_py/Makefile.am
	* python/2/mailutils/Makefile.am
	* python/3/libmu_py/Makefile.am
	* python/3/mailutils/Makefile.am
	* readmsg/Makefile.am
	* sieve/Makefile.am
	* sql/Makefile.am
	* testsuite/Makefile.am

2019-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure LD_LIBRARY_PATH overrides the DT_RPATH tag on
	FreeBSD.

	* testsuite/testsuite.inc: Set LD_LIBRARY_PATH_RPATH variable
	to "y" before running tests.

2019-12-14  Sergey Poznyakoff  <gray@gnu.org>

	Build package.m4 in Makefile.

	The decision to build package.m4 in config.status makes proper
	maintenance of the file problematic. It is reverted.

	This patch also uses colon-separated VPATH for compatibility
	with other make implementations.

	* configure.ac: Don't build package.m4
	* testsuite/Makefile.am: Do it here.
	* libmailutils/tests/Makefile.am: Use colon-separated VPATH for
	compatibility with BSD make.
	* testsuite/package.m4.in: Remove.

2019-11-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix the cwdrepl auxiliary tool.

	Make sure the longest possible match is replaced.

	* testsuite/cwdrepl.c: Sort the translist by directory length,
	in descending order.
	* mail/tests/atlocal.in: Add $testsuitedir to $PATH
	* mail/tests/hold.at (MAIL_TEST): Use cwdrepl instead of sed
	rules. Correct expected outputs accordingly.

2019-11-29  Sergey Poznyakoff  <gray@gnu.org>

	Fix missing Makefile variables.

	* readmsg/tests/Makefile.am: Augment TESTSUITE_AT.
	Inadvertently broken in b666b297.

2019-11-26  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* comsat/action.c (run_user_action): Fill env.locus.end with
	0s.

2019-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in libmailutils testsuite.

	* libmailutils/tests/decode2047.at: Deduce charset from the
	input.

2019-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Restore two accidentally deleted lines.

2019-11-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix uses of uninitialized variables.

	* libproto/mailer/smtp.c (_smtp_set_rcpt): Initialize header
	count to zero if no such header is provided.
	* mail/decode.c: Fix the util_get_hdr_value usage.
	* mail/mail.h (util_get_content_type)
	(util_get_hdr_value): Change return type.
	* mail/util.c (util_get_content_type): Change return to void.
	(util_get_hdr_value): Report error if necessary. Always
	initialize
	*value before return. Change return to void.

2019-11-17  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/mailbox/msgenv.c (get_received_date): Fix
	possible NULL dereference.

2019-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Follow-up to the previous commit.

2019-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Get rid of the deprecated functions.

	Below I list the removed functions along with the recipes on
	how to replace them.

	. mu_body_get_stream . mu_message_get_stream .
	mu_mailer_get_stream . mu_header_get_stream

	 These functions should not be used at all.
	 They will reappear within a couple of releases as synonyms
	 for the corresponding _get_streamref functions, after which
	 the latter will be gradually removed. Thus, at the end of
	 the transition perion _get_streamref's will be replaced by
	 _get_stream.

	. mu_sieve_compile_buffer
	 Replaced by mu_sieve_compile_text.
	 Old code:
	 rc = mu_sieve_compile_buffer (mach, buf, bufsize, fname,
	line);
	 New code:
	 struct mu_locus_point loc = MU_LOCUS_POINT_INITIALIZER;
	 mu_locus_point_set_file (&loc, fname);
	 loc.mu_line = line;
	 rc = mu_sieve_compile_text (mach, buf, bufsize, &loc);
	 mu_locus_point_deinit (&loc);

	. mu_address_to_string
	 Use mu_address_get_printable instead.

	. mu_address_format_string
	 Use mu_stream_format_address instead. E.g. to print to a
	string: 
	 char buf[100];
	 stream_t str;
	 mu_fixed_memory_stream_create (&str, buf, sizeof(buf),
	MU_STREAM_WRITE);
	 rc = mu_stream_format_address (str, addr);

	. mu_registrar_get_list
	 Should not be used. Use mu_registrar_get_iterator if you need
	to
	 iterate over the list.

	. mu_mailbox_save_attributes
	 Replaced by mu_mailbox_sync.

	. mu_msgset_print
	 Use mu_stream_msgset_format.
	 Old code:
	 rc = mu_msgset_print (mu_stream_t str, mu_msgset_t mset);
	 New code:
	 rc = mu_stream_msgset_format (str, mu_msgset_fmt_imap, mset);

2019-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Create types.h when configuring.

2019-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Remove deprecated MU_IOCTL_LOGSTREAM_GET_LOCUS and
	MU_IOCTL_LOGSTREAM_SET_LOCUS.

2019-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* include/mailutils/Makefile.am: Don't distribute types.h
	* mda/tests/mda.sh: New file.
	* mda/Makefile.am: Distribute mda.sh
	* mda/lmtpd/tests/atlocal.in: Set MU_DEFAULT_SCHEME and source
	mda.sh
	* mda/mda/tests/atlocal.in: Likewise.
	* mda/putmail/tests/atlocal.in: Likewise.
	* mda/lmtpd/tests/lmtpd.at: Use dumpmail
	* mda/tests/mda.inc (MDA_OPTIONS): Remove MUT_DEFAULT_OPTIONS.
	(dumpmail): Remove macro.
	* testsuite/package.m4.in (MU_DEFAULT_SCHEME): Remove macro. 
	* maint/fullcheck.mk (fullcheck_tmpl): Make the source dir
	read-only.

2019-11-09  Sergey Poznyakoff  <gray@gnu.org>

	Reorganize testsuite.

	Simplify Makefile.am's in tests subdirectories by moving the
	common part in a separate file and including it where
	necessary. Build only one copy of package.m4. Both package.m4
	and include file testsuite.am reside in the testsuite
	directory.

	Also provide configure options for selecting mda components to
	build:

	 --disable-build-mda do not build mda
	 --disable-build-lmtpd do not build lmtpd
	 --disable-build-putmail do not build putmail 
	* .gitignore: Update.
	* Makefile.am [MU_COND_MDA]: Change to MU_COND_MDA_TOOLS
	* configure.ac: Provide a way to enable/disable building of
	mda, lmtpd and putmail separately. Build testsuite/package.m4 
	* testsuite/testsuite.am
	* testsuite/Makefile.am: Distribute both package.m4.in and
	package.m4. Include main part from testsuite.am
	* testsuite/package.m4.in: New file. 
	* comsat/tests/Makefile.am: Include main part from testsuite.am
	* frm/tests/Makefile.am: Likewise.
	* imap4d/tests/Makefile.am: Likewise.
	* libmailutils/tests/Makefile.am: Likewise.
	* libmu_scm/tests/Makefile.am: Likewise.
	* libproto/dotmail/tests/Makefile.am: Likewise.
	* mail/tests/Makefile.am: Likewise.
	* messages/tests/Makefile.am: Likewise.
	* mh/tests/Makefile.am: Likewise.
	* mimeview/tests/Makefile.am: Likewise.
	* readmsg/tests/Makefile.am: Likewise.
	* sieve/tests/Makefile.am: Likewise. 
	* mda/.gitignore: Remove.
	* mda/tests/Makefile.am: Remove.
	* mda/tests/testsuite.at: Remove.
	* mda/tests/.gitignore: Remove.
	* mda/tests/atlocal.in: Remove.
	* mda/tests/mda.inc: New file. 
	* mda/Makefile.am: Add extra directory level. Add subdirs
	depending on whether the corresponding component is selected
	for building.
	* mda/lmtpd/.gitignore: New file.
	* mda/lmtpd/Makefile.am: New file.
	* mda/lmtpd.c: Move to mda/lmtpd/lmtpd.c 
	* mda/lmtpd/tests/.gitignore: New file.
	* mda/lmtpd/tests/Makefile.am: New file.
	* mda/lmtpd/tests/atlocal.in: New file.
	* mda/tests/lmtpd.at: Move to mda/lmtpd/tests/lmtpd.at
	* mda/lmtpd/tests/testsuite.at: New file. 
	* mda/mda/.gitignore: New file.
	* mda/mda/Makefile.am: New file.
	* mda/mda.c: Move to mda/mda/mda.c
	* mda/mda/tests/.gitignore: New file.
	* mda/mda/tests/Makefile.am: New file.
	* mda/mda/tests/atlocal.in: New file.
	* mda/tests/forward.at: Move to mda/mda/tests/forward.at
	* mda/tests/mda.at: Move to mda/mda/tests/mda.at
	* mda/mda/tests/testsuite.at: New file. 
	* mda/putmail/.gitignore: New file.
	* mda/putmail/Makefile.am: New file.
	* mda/putmail.c: Move to mda/putmail/putmail.c
	* mda/putmail/tests/.gitignore: New file.
	* mda/putmail/tests/Makefile.am: New file.
	* mda/putmail/tests/atlocal.in: New file.
	* mda/tests/putmail.at: Move to mda/putmail/tests/putmail.at
	* mda/putmail/tests/testsuite.at: New file 
	* po/POTFILES.in: Update pathnames 
	* maint/fullcheck.mk: Minor fixes.

2019-11-09  Sergey Poznyakoff  <gray@gnu.org>

	New maintainer makefile for running tests for all default
	mailbox formats.

	* maint/fullcheck.mk: New file. Runs make check for all
	possible default mailbox formats.
	* GNUmakefile: Include new file. 
	* NEWS: Update.
	* configure.ac: Version 3.8.90

2019-11-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix mda testsuite.

	The testsuite should work no matter what the selected default
	mailbox format.

	* mda/tests/atlocal.in (dumpmail): New function.
	* mda/tests/forward.at: Use dumpmail to read the mailbox.
	* mda/tests/mda.at: Likewise.

2019-11-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix SUBDIRS ordering in Makefile.am's.

	* imap4d/Makefile.am: Build in source dir before tests.
	* mimeview/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.

2019-11-09  Sergey Poznyakoff  <gray@gnu.org>

	dotmail: fix opening in append-only mode.

	* libproto/dotmail/dotmail.c (dotmail_rescan_unlocked)
	(dotmail_rescan): Skip if mailbox is not opened for reading.

2019-11-07  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos in help strings.

	* imap4d/imap4d.c: Fix typo in help string for tls-mode.
	* pop3d/pop3d.c: Likewise.

2019-11-06  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.8.

	* configure.ac: Version 3.8
	* NEWS: Document changes.
	* THANKS: Update.

2019-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Restore MDA debug flags.

2019-10-14  Sergey Poznyakoff  <gray@gnu.org>

	Restore mda tests.

	* mda/mda.c: Instrument for compilation for the testsuite.
	* mda/tests/.gitignore: Add testmda
	* mda/tests/Makefile.am: Build testmda. Add new tests.
	* mda/tests/forward.at: New test.
	* mda/tests/mda.at: New test.
	* mda/tests/testsuite.at: Include new tests.

2019-10-13  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

2019-10-13  Sergey Poznyakoff  <gray@gnu.org>

	Fix distcheck.

2019-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Split maidag into three single-purpose tools.

	Maidag operated in three modes: mda, url and lmtp. In mda mode
	it is normally started by sendmail with non-root privileges. In
	order to be able to write to other users' mailboxes, the binary
	must be setuid, which creates certain security threats. As
	these appear to be impossible to avoid in a single
	multi-purpose program, it has been decided to replace maidag
	with three single-purpose tools: mda, putmail, and lmtpd. The
	mda tool is a local mail delivery agent. It is the only one for
	which the setuid bit is required, so special measures have been
	taken to secure it. In particular, to avoid unverified user
	inputs it disallows to override any configuration settings from
	the command line.

	The two other tools provide the functionality of the url and
	lmtp mode.

	* Makefile.am (MAIDAG_DIR): Replace with MDA_DIR
	* configure.ac (MU_COND_MAILBOX_QUOTA): New conditional. Use
	names relative to ${top_builddir} instead of ".".
	* maidag: Remove.
	* mda/.gitignore: New file.
	* mda/Makefile.am: New file.
	* mda/lib/Makefile.am: New file.
	* mda/lib/deliver.c: New file.
	* mda/lib/forward.c: New file.
	* mda/lib/libmda.h: New file.
	* mda/lib/mailquota.c: New file.
	* mda/lib/script.c: New file.
	* mda/lib/util.c: New file.
	* mda/lmtpd.c: New file.
	* mda/mda.c: New file.
	* mda/putmail.c: New file.
	* mda/tests/.gitignore: New file.
	* mda/tests/Makefile.am: New file.
	* mda/tests/atlocal.in: New file.
	* mda/tests/input.msg: New file.
	* mda/tests/lmtpd.at: New file.
	* mda/tests/putmail.at: New file.
	* mda/tests/testsuite.at: New file. 
	* doc/texinfo/programs/maidag.texi: Remove.
	* doc/texinfo/programs/mda.texi: New file.
	* doc/texinfo/programs/lmtpd.texi: New file.

2019-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	cli: implement a hint that disallows overriding configuration
	from the command line * include/mailutils/cfg.h
	(MU_CFHINT_NO_CONFIG_OVERRIDE): New hint. *
	libmailutils/cli/cli.c (init_options): Omit configuration
	override options if MU_CFHINT_NO_CONFIG_OVERRIDE is set.

2019-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typo.

2019-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: revamp message type specification handling.

	* mail/mail.h (msgtype_generator): New proto.
	* mail/mailline.c (msgtype_generator): Remove.
	* mail/msgset.y (TYPE rule): Use find_type_selector to find the
	right selector.
	(select_type): Remove. Replaced with separate functions for
	each message type (select_type_n, select_type_d, etc.)
	(find_type_selector): New static function.
	(msgtype_generator): New function.

2019-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: new message specification :s.

	* NEWS: Update.
	* doc/texinfo/programs/mail.texi: Update.
	* mail/mailline.c (msgtype_generator): Recogize 's'
	* mail/msgset.y (select_type): Recognize 's'

2019-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document how to set body content-type and encoding in multipart
	messages.

	This closes https://savannah.gnu.org/support/?109866

2019-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document yesterday's changes.

2019-09-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the semantics of the hold and keepsave variables in mail.

	* mail/delete.c (mail_delete_msg): Set
	MAIL_ATTRIBUTE_PRESERVED. This is not necessary, stricto sensu,
	because mail_mbox_close skips messages marked for deletion
	anyway. But it's good for clarity.
	* mail/quit.c (mailbox_classify): New function.
	(mail_mbox_commit): Rewrite 
	* mail/tests/Makefile.am: Add new test
	* mail/tests/testsuite.at: Include new tests.
	* mail/tests/atlocal.in (catmbox): New function.
	* mail/tests/hold.at: New test.

2019-09-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix guimb help message.

	* scheme/guimb.scmi: Format the usage and description lines
	consistently with other mailutils programs.

2019-09-03  Sergey Poznyakoff  <gray@gnu.org>

	comsatd: optional argument to the --test option supplies the
	name of the tty to use.

	* NEWS: Document changes.
	* comsat/action.c (open_default_tty): Remove.
	(open_tty): Examine the tty device (or file) and construct a
	suitable filter chain. Use append mode when opening it.
	* comsat/comsat.c: The --test option takes optional argument.
	* comsat/tests/testsuite.at: Use local file instead of the tty.
	* doc/texinfo/programs/comsatd.texi: Document changes.

2019-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: implement TLS in inetd mode.

	New global configuration statement "tls-mode" configures the
	TLS for use in inetd mode.

	The certificate and key files are configured by the global
	"tls" compound statement.

	Example configuration (pop3s server):

	 mode inetd;
	 tls-mode connection;
	 tls {
	 ssl-key-file /etc/ssl/key.pem;
	 ssl-certificate-file /etc/ssl/cert.pem;
	 }

	In daemon mode, global "tls-mode" sets the type of TLS
	encryption to use in all server blocks that lack the "tls-mode"
	statement. 
	* pop3d/cmd.c (global_tls_mode)
	(global_conf_status): New globals.
	(stls_server_check): New function.
	(stls_preflight): Use stls_server_check.
	* pop3d/pop3d.c (pop3d_cfg_param): New global statement:
	tls-mode
	(main): Set up TLS connection in inetd mode, if requested.
	* pop3d/pop3d.h (global_tls_mode): New global.
	(stls_server_check): New proto. 
	* NEWS: Document changes.
	* doc/texinfo/programs/pop3d.texi: Likewise.

2019-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix mandatory locking.

	* lib/manlock.c (mailbox_open_and_lock): Force proper locker if
	a null locker is associated with the mailbox.

2019-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	Check return from mu_message_get_num_parts

2019-07-13  Sergey Poznyakoff  <gray@gnu.org>

	Fixes in the mail testsute.

	* mail/tests/copy00.at: Fix description. Skip test if
	/dev/stdout cannot be locked.
	* mail/tests/copy03.at: Rename MBOX to avoid name clashes on
	case-insensitive file systems.

2019-07-11  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* include/mailutils/sys/dotmail.h: Remove stray variable
	declaration.

2019-07-11  Sergey Poznyakoff  <gray@gnu.org>

	Pull wordsplit from submodule.

	* .gitmodules: Add wordsplit.
	* configure.ac: Version 3.7.90
	* NEWS: Raise version number.
	* include/mailutils/sys/Makefile.am: Include wordsplit.h from
	the submodule.
	* include/mailutils/sys/wordsplit.h: New file.
	* include/mailutils/wordsplit.h: Rewrite as a wrapper over
	mailutils/sys/wordsplit.h
	* libmailutils/Makefile.am: Distribute files from wordsplit.
	* libmailutils/string/Makefile.am: Add libmailutils/wordsplit
	to the include path.
	* libmailutils/string/wordsplit.c: Replace with a wrapper over
	wordsplit/wordsplit.c
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Pull wordsplit testsuite from
	the submodule.
	* libmailutils/tests/wordsplit.at: Remove.
	* libmailutils/tests/wsp.c: Remove.

2019-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Use defines for internal mail variable names.

2019-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos and wording in some diagnostic messages.

2019-06-21  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.7.

2019-06-21  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2019-05-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix conditional compilation; add dotmail support to libmu_scm.

	* configure.ac: Accept dotmail as a value for
	MU_DEFAULT_SCHEME. Display dotmail support status at the end of
	the run.
	* libmailutils/base/nullrec.c: Provide placeholder for disabled
	dotmail.
	* libmu_scm/mu_scm.c (format_table): Add dotmail.
	* libmu_scm/tests/testsuite.at: Don't assume mbox as the
	default. Load it explicitly.

2019-05-30  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* maint/flowgraph.mk: Pass --all to cflow.

2019-05-29  Sergey Poznyakoff  <gray@gnu.org>

	mh: fix folder +/absolute/name.

	* mh/folder.c (name_prefix_len): Remove global.
	(install_folder_info,_scan): Take additional argument: length
	of the name prefix to skip.
	(folder_scan): New function.
	(action_print): Don't impose name prefix unconditionally. Call
	folder_scan to set it up as necessary.

2019-05-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix a bug in TLS read.

	This complements afda9ba4. Thanks to Rafael Fontenelle for
	helping locate the bug.

	* libmu_auth/tlsiostr.c (_tls_io_read): Handle GNUTLS_E_AGAIN
	and GNUTLS_E_INTERRUPTED.
	* libmailutils/stream/stream.c (mu_stream_seterr): EINTR is a
	transient error condition.
	* THANKS: Update.

2019-05-22  Sergey Poznyakoff  <gray@gnu.org>

	URL parser: use case-insensitive comparison for auth and host
	parts.

	* libmailutils/url/accessor.h: (URL_PART_CMP_ICASE)
	(URL_PART_CMP_ICASE): New defines.
	* libmailutils/url/get-auth.c: Request case-insensitive
	comparison.
	* libmailutils/url/get-host.c: Likewise.

2019-05-21  Sergey Poznyakoff  <gray@gnu.org>

	Describe maidag delivery-mode configuration variable.

2019-05-09  Sergey Poznyakoff  <gray@gnu.org>

	Maidag: fix coredump in daemon mode.

	* maidag/maidag.c (main): Pass pointer to the server as data
	parameter to mu_cli.

2019-05-03  Sergey Poznyakoff  <gray@gnu.org>

	movemail: make sure UIDLs are properly stored.

	* movemail/movemail.c (main): When using POP3 UIDLs for message
	identification, be sure to store them in the X-UIDL header.

2019-04-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/diag/diag.c (mu_diag_vprintf): Fix debug level
	formatting. It missed 's' after the escape character.
	* mu/libexec/ldflags.c (lib_descr): Add dotmail.

2019-03-29  Sergey Poznyakoff  <gray@gnu.org>

	Remove explicit _DEPENDENCIES variables from Makefiles.

	These might be needed only in rare cases during the development
	cycle. There is no use keeping them around.

	* configure.ac (MU_AUTHLIBS_DEPENDENCY)
	(DBMLIB_DEPENDENCY,SQLLIB_DEPENDENCY): Remove.
	* imap4d/Makefile.am: Remove explicit _DEPENDENCIES.
	* pop3d/Makefile.am: Likewise.
	* libmu_auth/Makefile.am: Likewise.
	* libmu_dbm/Makefile.am: Likewise.

2019-03-27  Sergey Poznyakoff  <gray@gnu.org>

	Use <prog>_LDADD to link in libmu_test.

	This helps automake discover dependency on this library.

2019-03-27  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix (follow-up to 60c5545ba)

2019-03-27  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in dot filters.

	The DOT decoder accepts input consisting of two characters
	".\n" and decodes it to empty output. When encoding empty
	input, ".\n" is produced

	Similarly, CRLFDOT handles ".\r\n" the same way.

	* libmailutils/filter/crlfdot.c (_crlfdot_encoder): Accept
	".\r\n" as input.
	* libmailutils/filter/dot.c: Accept ".\n" as input.
	* libmailutils/tests/crlfdot.at: Add new test.
	* libmailutils/tests/dot.at: Likewise.

2019-03-26  Sergey Poznyakoff  <gray@gnu.org>

	Use mu_folder_scan in imap4d.

	* imap4d/list.c (list_fun): Don't check if the returned record
	matches refinfo->pfx->record. This is done by mu_folder_scan.
	(list_ref): Use mu_folder_scan.

2019-03-26  Sergey Poznyakoff  <gray@gnu.org>

	Consistently use the term 'depth' when referring to directory
	nesting depth.

	* include/mailutils/folder.h (mu_list_response): Rename 'level'
	to 'depth'. All uses updated.

2019-03-26  Sergey Poznyakoff  <gray@gnu.org>

	Implement selection of requested mailbox formats in scanning
	the local file system folders.

	* include/mailutils/registrar.h (mu_record_match): New struct.
	(mu_registrar_match_records): New proto.
	* libmailutils/base/registrar.c (mu_registrar_match_records):
	New function.
	* libmailutils/mailbox/fsfolder.c (list_helper): Actually
	select the matching record from scn->records (if supplied).
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/fsfolder.c: Minor changes.
	* libmailutils/tests/testsuite.at: Add new tests.
	* libmailutils/tests/fsfolder03.at: New file.
	* libmailutils/tests/fsfolder04.at: New file.

2019-03-25  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes in fsfolder.

	* libmailutils/mailbox/fsfolder.c (list_helper): Fix depth cut
	off. Fix the lookup in scn->records.
	* libmailutils/tests/fsfolder.c: Implement two test records.
	New command: "scan".

2019-03-25  Sergey Poznyakoff  <gray@gnu.org>

	Implement test shell framework.

	* libmailutils/tests/tesh.c: New file.
	* libmailutils/tests/tesh.h: New file.
	* libmailutils/tests/Makefile.am: Add new files.
	* libmailutils/tests/fsfolder.c: Rewrite using test shell
	framework.
	* libmailutils/tests/fsfolder00.at: Use semicolons to delimit
	commands.
	* libmailutils/tests/fsfolder01.at: Likewise.
	* libmailutils/tests/linetrack.c: Rewrite using test shell
	framework.
	* libmailutils/tests/linetrack.at: Change command initial
	character to dot.
	* libmailutils/tests/listop.c: Rewrite using test shell
	framework.
	* libmailutils/tests/list.at: Minor changes.
	* libproto/dotmail/tests/dm_mesg.c: Rewrite using test shell
	framework.
	* libproto/dotmail/tests/Makefile.am: Link dm_mesg with
	libmu_tesh
	* libproto/dotmail/dotmail.c: Fix typo.

2019-03-23  Sergey Poznyakoff  <gray@gnu.org>

	Two new string functions.

	mu_string_prefix(A, B) returns true if B is the prefix of A.
	mu_string_suffix(A, B) returns true if B is the suffix of A.

	* include/mailutils/cstr.h (mu_string_prefix)
	(mu_string_suffix): protos.
	* libmailutils/string/Makefile.am: Add new files.
	* libmailutils/string/strpref.c: New file.
	* libmailutils/string/strsuf.c: New file.

2019-03-23  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite folder listing interface.

	New function mu_folder_scan provides an improved scanning
	interface. In particular, it allows the user to abridge the
	scan to mailboxes of certain type (or types).

	Existing listing API functions are rewritten as alternative
	entry points to mu_folder_scan.

	* include/mailutils/folder.h (mu_folder_scanner): New struct.
	(mu_folder_scan): New function.
	* include/mailutils/registrar.h (mu_registrar_list_p): New
	function.
	* include/mailutils/sys/folder.h (_mu_folder._list): Change
	signature.
	* libmailutils/base/registrar.c (mu_registrar_list_p): New
	function.
	* libmailutils/mailbox/folder.c (mu_folder_scan): New function.
	(mu_folder_enumerate): Rewrite as entry point to
	mu_folder_scan.
	* libmailutils/mailbox/fsfolder.c: Use new API,
	* libmailutils/tests/fsfolder.c: Rewrite scheme matcher.
	* libmailutils/tests/fsfolder00.at: Fix test output.
	* libmailutils/tests/fsfolder02.at: Likewise.
	* libproto/imap/folder.c: Use new API.

2019-03-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix MH format detection.

	* libproto/mh/folder.c (mh_dir_p): Check only regular files.
	(_mh_list_p): Ditto. All directories are eligible for listing.
	* libmailutils/base/registrar.c (mu_record_list_p): Remove
	useless check.

2019-03-13  Sergey Poznyakoff  <gray@gnu.org>

	mail: force mime mode if at least one attachment was given.

	This fixes
	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806

	* mail/mail.c (cli_attach): Set mime_option.

2019-03-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix encoding of empty input by DOT filter.

	* libmailutils/filter/dot.c (_dot_encoder): Don't emit
	additional empty line on empty input (i.e. if mu_filter_lastbuf
	arrives when dfa is in dot_encode_init state).
	* libmailutils/tests/dot.at: Test empty input.

2019-03-06  Sergey Poznyakoff  <gray@gnu.org>

	Simplify dotmail test environment.

	The dm_mbox tool is not needed after ff847bb1. Remove it.
	Modify dm_mesg to optionally take commands from the command
	line. Use it instead of dm_mbox in testcases.

2019-03-06  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* NEWS: Document the recent changes.
	* THANKS: Add Kurt Hackenberg.

2019-03-06  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libproto/mbox/mbox.c (restore_date): Fix possible
	uninitialized memory access.

2019-03-06  Sergey Poznyakoff  <gray@gnu.org>

	Revamp UID support in dotmail.

	* include/mailutils/stream.h (mu_stream_header_copy): New
	proto.
	* libmailutils/stream/hdrcpy.c: New file.
	* libmailutils/stream/Makefile.am: Add hdrcpy.c
	* libmailutils/tests/hdrcpy.c: New test program.
	* libmailutils/tests/hdrcpy.at: New testcase.
	* libmailutils/tests/Makefile.am: Add new test program and
	testcase.
	* libmailutils/tests/testsuite.at: Add new testcase.
	* libproto/dotmail/tests/append.at: Add new tests.
	* libmailutils/tests/.gitignore: Update. 
	* include/mailutils/sys/dotmail.h (mu_dotmail_message): Remove
	headers_scanned. New field: uid_modified.
	(mu_dotmail_mailbox): Change type for uidnext to unsigned long.
	Remove scanned_uids_count. (mu_dotmail_message_headers_prescan)
	(mu_dotmail_mailbox_scan_uids): Remove.
	(mu_dotmail_mailbox_uid_setup): New proto.
	* libproto/dotmail/dotmail.c: Revamp UID support. See "Notes"
	on line 251 for description.
	* libproto/dotmail/message.c (mu_dotmail_message_reconstruct):
	Optimize for the case where the message remains unchanged
	except for the UID information.
	* libproto/dotmail/tests/dm_mesg.c: Add mailbox inspection
	commands from dm_mbox. Perhaps the latter can be removed.

2019-03-03  Sergey Poznyakoff  <gray@gnu.org>

	Implement automatic dot-unstuffing in dotmail mailboxes.

	* include/mailutils/sys/dotmail.h (mu_dotmail_message): New
	members: body_size and body_dot_stuffed.
	* libproto/dotmail/dotmail.c (dotmail_rescan_unlocked): Count
	dot-unstuffed octets in the body. Set dmsg->body_dot_stuffed to
	1 if at least one byte was dot-stuffed.
	* libproto/dotmail/message.c (dotmail_body_size): Return
	unstuffed size.
	(_msg_body_setup): If the body was dot-stuffed, return rdcache
	stream built over the "DOT" decoder.
	* libproto/dotmail/tests/body.at: Check dot-unstuffing.

2019-03-02  Sergey Poznyakoff  <gray@gnu.org>

	Fix the dot filter decoding.

	* libmailutils/filter/dot.c (_dot_decoder): Don't emit extra
	newline at the "\n.\n" marker.
	* libmailutils/stream/stream.c (mu_stream_seterr): Don't treat
	ENOSYS as fatal error.
	* libmailutils/tests/dot.at: New file.
	* libmailutils/tests/testsuite.at: Include dot.at.
	* libmailutils/tests/Makefile.am: Add dot.at
	* testsuite/smtp-msg.at: Remove extra newline from the expected
	output.
	* testsuite/smtp-str.at: Likewise.

2019-03-02  Sergey Poznyakoff  <gray@gnu.org>

	Improve the dotmail testsuite.

	* libproto/dotmail/tests/dm_mesg.c: Rewrite to take commands
	from stdin.
	* libproto/dotmail/tests/Makefile.am: Add setattr.at
	* libproto/dotmail/tests/testsuite.at (DM_MESG): New macro.
	* libproto/dotmail/tests/setattr.at: New file.
	* libproto/dotmail/tests/append.at: Use DM_MESG.
	* libproto/dotmail/tests/attr.at: Likewise.
	* libproto/dotmail/tests/body.at: Likewise.
	* libproto/dotmail/tests/delete.at: Likewise.
	* libproto/dotmail/tests/env.at: Likewise.
	* libproto/dotmail/tests/header.at: Likewise.
	* libproto/dotmail/tests/uid.at: Likewise.

2019-03-02  Sergey Poznyakoff  <gray@gnu.org>

	Implement different accuracy levels for the mailbox format
	detection.

	Selecting the accuracy level allows the user to achieve the
	desired balance between the speed of the folder scan and
	accuracy of mailbox format detection.

	The accuracy level can be set either from the configuration
	file, using the mailbox.accuracy-level statement, or from the
	environment, using the MU_AUTODETECT_ACCURACY variable.

	The default accuracy level 1 discerns valid mbox and dotmail
	mailboxes providing reasonable scan speed. Level 0 (previous
	default) does not discern them, but provides maximal speed.
	Level 2 and higher provide better accuracy at the price of
	speed.

	* include/mailutils/url.h (MU_AUTODETECT_ACCURACY_AUTO)
	(MU_AUTODETECT_ACCURACY_FAST)
	(MU_AUTODETECT_ACCURACY_DEFAULT): New constants.
	(mu_scheme_autodetect_p): New proto, moved here from util.h
	(mu_set_autodetect_accuracy)
	(mu_autodetect_accuracy): New protos.
	* libmailutils/base/schemeauto.c (mu_set_autodetect_accuracy)
	mu_autodetect_accuracy): New functions.
	* libmailutils/cli/stdcapa.c: New configuration statement:
	mailbox.autodetect-accuracy.
	* libmailutils/url/create.c (_mu_url_create_internal): Assume
	the "file" scheme if the MU_URL_PARSE_LOCAL flag is set.
	* libproto/dotmail/folder.c: Implement format detection. Three
	accuracy levels: 0, 1, and >1
	* libproto/mbox/folder.c (_mbox_is_scheme): Implement default
	format detection.
	* libproto/dotmail/tests/Makefile.am: Add new test.
	* libproto/dotmail/tests/autodetect.at: New test.
	* libproto/dotmail/tests/dm_detect.c: New file.
	* libproto/dotmail/tests/testsuite.at: Add new test.

2019-03-01  Sergey Poznyakoff  <gray@gnu.org>

	Initial implementation of the dotfile format.

	* configure.ac: Enable new local format.
	* include/mailutils/registrar.h (mu_dotmail_record): New
	extern. (mu_register_all_mbox_formats)
	(mu_register_local_mbox_formats): Add mu_dotmail_record
	* include/mailutils/sys/dotmail.h: New file.
	* libproto/dotmail/Makefile.am: New file.
	* libproto/dotmail/dotmail.c: New file.
	* libproto/dotmail/message.c: New file.
	* libproto/dotmail/folder.c: New file.
	* libproto/dotmail/tests/.gitignore: New file.
	* libproto/dotmail/tests/Makefile.am: New file.
	* libproto/dotmail/tests/atlocal.in: New file.
	* libproto/dotmail/tests/count.at: New file.
	* libproto/dotmail/tests/dm_mbox.c: New file.
	* libproto/dotmail/tests/dm_mesg.c: New file.
	* libproto/dotmail/tests/env.at: New file.
	* libproto/dotmail/tests/header.at: New file.
	* libproto/dotmail/tests/recent.at: New file.
	* libproto/dotmail/tests/testsuite.at: New file.
	* libproto/dotmail/tests/attr.at: New file.
	* libproto/dotmail/tests/body.at: New file.
	* libproto/dotmail/tests/uid.at: New file.
	* libproto/dotmail/tests/dm_qget.c: New file.
	* libproto/dotmail/tests/qget.at: New file.
	* libproto/dotmail/tests/append.at: New file.
	* libproto/dotmail/tests/delete.at: New file. 
	* libmu_scm/mailutils/ancilla.scm: Fix regular expression to
	take into account changes introduced by 4bdc41ff90.

2019-02-26  Sergey Poznyakoff  <gray@gnu.org>

	Provide fallback mechanism for mu_mailbox_messages_recent and
	mu_mailbox_message_unseen.

	* libmailutils/mailbox/mailbox.c (mu_mailbox_messages_recent)
	(mu_mailbox_message_unseen): Fall back to iteration if no
	backend-specific method is provided.

2019-02-26  Sergey Poznyakoff  <gray@gnu.org>

	envelope: attempt to recover from trace information if not
	available otherwise.

	* libmailutils/mailbox/msgenv.c (message_envelope_date): Use
	timestamp from Received header.
	(message_envelope_sender): Give preference to Return-Path
	header

2019-02-26  Sergey Poznyakoff  <gray@gnu.org>

	New autoconf macro for activating mailbox format support.

	* am/enable.m4 (MU_ENABLE_SUPPORT)
	(MU_ENABLE_BUILD): Use m4_-prefixed directives.
	(MU_ENABLE_MAILBOX_FORMAT) (MU_ENABLE_LOCAL_MAILBOX_FORMAT_
	(MU_ENABLE_REMOTE_MAILBOX_FORMAT): New macros. (MU_LIB_MAILBOX)
	(MU_LIB_LOCAL_MAILBOX)
	(MU_LIB_REMOTE_MAILBOX): New substitution variables.
	* configure.ac: Use new macros to enable mailbox formats
	* libproto/Makefile.am: Augment SUBDIRS instead of using
	Makefile variables.
	* comsat/Makefile.am: Use MU_LIB_.*MAILBOX macros to link in
	the necessary libraries.
	* examples/Makefile.am: Likewise.
	* examples/cpp/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* include/mailutils/sys/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* libproto/Makefile.am: Likewise.
	* maidag/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* movemail/Makefile.am: Likewise.
	* mu/libexec/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* python/2/libmu_py/Makefile.am: Likewise.
	* python/3/libmu_py/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.
	* testsuite/Makefile.am: Likewise.

2019-02-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* python/3/libmu_py/mailcap.c: Fix leftover uses of
	PyString_FromString and PyInt_FromLong.

2019-02-23  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.6.

	* NEWS: Update.
	* configure.ac: Raise version number Raise VI_CURRENT and clear
	VI_REVISION (due to 18e23d6e).
	* libproto/imap/close.c: Add missing include.

2019-02-03  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2019-02-03  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite the mailcap support.

	* configure.ac: Build libmailutils/mailcap/Makefile 
	* include/mailutils/mailcap.h: Rewrite
	* include/mailutils/sys/Makefile.am: Add mailcap.h
	* include/mailutils/sys/mailcap.h: New file.
	* include/mailutils/util.h: Add missing include.
	* lib/mailcap.c: Rewrite using new API.
	* libmailutils/Makefile.am: Build in mailcap
	* libmailutils/base/Makefile.am: Remove mailcap.c
	* libmailutils/base/mailcap.c: Remove. 
	* libmailutils/mailcap/Makefile.am: New file.
	* libmailutils/mailcap/ctmatch.c: New file.
	* libmailutils/mailcap/deferrclos.c: New file.
	* libmailutils/mailcap/mcp_creat.c: New file.
	* libmailutils/mailcap/mcp_destr.c: New file.
	* libmailutils/mailcap/mcp_err.c: New file.
	* libmailutils/mailcap/mcp_flags.c: New file.
	* libmailutils/mailcap/mcp_get.c: New file.
	* libmailutils/mailcap/mcp_sel.c: New file.
	* libmailutils/mailcap/mcp_count.c: New file.
	* libmailutils/mailcap/mcp_find.c: New file.
	* libmailutils/mailcap/ent_cmd.c: New file.
	* libmailutils/mailcap/ent_creat.c: New file.
	* libmailutils/mailcap/ent_destr.c: New file.
	* libmailutils/mailcap/ent_locus.c: New file.
	* libmailutils/mailcap/ent_type.c: New file.
	* libmailutils/mailcap/fieldacc.c: New file.
	* libmailutils/mailcap/fields.c: New file.
	* libmailutils/mailcap/finder.c: New file.
	* libmailutils/mailcap/parse.c: New file.
	* libmailutils/mailcap/parsefile.c: New file. 
	* libmailutils/tests/mailcap.c: Rewrite using new API. Improve
	cli
	* libmailutils/tests/mcf.c: New file.
	* libmailutils/tests/ctm.c: New file.
	* libmailutils/tests/ctm.at: New file.
	* libmu_cpp/mailcap.cc: Rewrite using new API.
	* python/2/libmu_py/mailcap.c: Rewrite using new API.
	* python/3/libmu_py/mailcap.c: Rewrite using new API.
	* examples/python/2/mailcap.py: Minor change. This example is
	broken with the new API. Should be fixed.
	* include/mailutils/cpp/mailcap.h: Update
	* include/mailutils/cpp/pop3.h: Update

2019-02-02  Sergey Poznyakoff  <gray@gnu.org>

	New iterator functions: mu_iterator_skip_while and
	mu_iterator_skip_until.

	The mu_iterator_skip_while function continues iteration while
	the supplied predicate function returns true. The
	mu_iterator_skip_until function continues iteration until the
	supplied predicate function returns true.

	* include/mailutils/iterator.h: Add new prototypes.
	* libmailutils/base/iterator.c: Implement new functions.

2019-01-31  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite the transcript stream.

	The new implementation consists of two independent state
	machines for each transcript channel (input and output). The
	MU_XSCRIPT_PAYLOAD state can be turned on for a predefined
	number of bytes on each channel. After that many bytes pass
	through, the state will return back to MU_XSCRIPT_NUMBER. This
	allows, in particular, to improve logging of client commands
	containing literals in imap4d.

	* include/mailutils/stream.h (MU_IOCTL_XSCRIPTSTREAM_CHANNEL):
	New ioctl subcode.
	(mu_xscript_channel): New struct. (MU_XSCRIPT_LEVEL_IS_PACKED)
	(MU_XSCRIPT_LEVEL_MASK,MU_XSCRIPT_LEVEL_UNMASK)
	(MU_XSCRIPT_LEVEL_PACK): New macros.
	* include/mailutils/sys/xscript-stream.h (_mu_xscript_channel):
	New struct.
	(_mu_xscript_stream): Keep independent state for each channel.
	* libmailutils/stream/xscript-stream.c: Rewrite as a state
	machine with independent states for input and output channels.
	* libmailutils/tests/xscript.at: Test packed channel levels and
	MU_IOCTL_XSCRIPTSTREAM_CHANNEL ioctl.
	* libmailutils/tests/xscript.c: Rewrite command parser. 
	* imap4d/imap4d.h (xscript_declare_client_payload): New proto.
	* imap4d/util.c (xscript_declare_client_payload): New function.
	* imap4d/io.c (imap4d_readline): Use
	xscript_declare_client_payload after literals.

2019-01-29  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: Proper case-insensitive searches over multibyte
	strings.

	This requires libunistring.

	* NEWS: Update.
	* README: Update.
	* configure.ac: Check for libunistring.
	* libmailutils/base/version.c: Reflect libunistring usage.
	* imap4d/Makefile.am: Link with libunistring, if available.
	* imap4d/imap4d.h (unistr_downcase)
	(unistr_is_substring): New protos.
	* imap4d/search.c (_scan_header)
	(_scan_header_all,_match_text): Use unistr_is_substring for
	searches.
	* imap4d/unistr_c.c: New file.
	* imap4d/unistr_u8.c: New file.
	* imap4d/tests/search.at: Add new test.

2019-01-28  Sergey Poznyakoff  <gray@gnu.org>

	Revert 3aeec0dcc151b836cb09d756ad41598c95201446.

	Adding 1 to the buffer size is necessary, because
	_stream_scandelim requires buffer to provide enough space to
	accomodate the trailing 0. Consequently, the minimal acceptable
	buffer size is 2.

2019-01-27  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* search.c (_match_multipart): Initialize result.

2019-01-26  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* imap4d/search.c (parse_search_key): Fix eventual NULL pointer
	dereference.

2019-01-26  Sergey Poznyakoff  <gray@gnu.org>

	Add tests for imap4d SEARCH BODY, TEXT, and CHARSET.

	* imap4d/tests/.gitignore: New file.
	* imap4d/tests/ckiconv.c: New file.
	* imap4d/tests/Makefile.am: Build ckiconv.c
	* imap4d/tests/search.at: Add tests for BODY, TEXT and CHARSET
	* imap4d/tests/testsuite.at (IMAP4D_WITH_PREREQ): New macro
	(IMAP4D_CHECK): Skip test if the supplied prerequisite is not
	satisfied. 
	* testsuite/spool/search2.mbox: New file.
	* testsuite/spool/DISTFILES: Add search2.mbox. 
	* mail/decode.c (mime_descend): Fix handling of message/rfc822.

2019-01-26  Sergey Poznyakoff  <gray@gnu.org>

	Remove misguiding comment.

2019-01-26  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: implement SEARCH CHARSET; fix BODY and TEXT searches.

	* imap4d/search.c: Implement proper BODY searches. Implement
	CHARSET.
	* imap4d/util.c (util_strcasestr): Remove. Use mu_c_strcasestr
	instead.
	* imap4d/imap4d.h: Likewise.
	* NEWS: Document changes.

2019-01-25  Sergey Poznyakoff  <gray@gnu.org>

	Improve error checking in stream writing functions.

	* libmailutils/stream/stream.c (mu_stream_write): Return EIO on
	short writes if pnwritten is NULL.
	* libmailutils/stream/streamcpy.c (mu_stream_copy): Likewise
	(if source stream size is known.

2019-01-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix stream reference implementation.

	Do not propagate streamref's error and eof state upstream.

	* libmailutils/stream/streamref.c (streamref_return): Remove
	function. All uses updated.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix completion of set, unset, and variable.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	mail: implement variable and command expansion in echo command.

	* mail/echo.c: Implement variable and command expansion.
	* mail/mail.c (main): Set PID mailvar.
	* mail/mailvar.c (mailvar_tab): New variable PID (to help in
	debugging).
	(set_folder): Expand initial ~
	* mail/set.c: Remove misguiding comment.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix in IMAP wildcard matcher.

	* libmailutils/imapio/wildmatch.c (_wild_match): Handle % at
	the end of input same way as *.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	mail: fixes in completion routines.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	mail: improve message set parser.

	* mail/from.c (sender_string): New function.
	* mail/mail.h: Likewise.
	* mail/msgset.y: Fix memory management and error reporting.
	Implement sender address matching.
	* mail/util.c (util_outfolder_name): Always return allocated
	value.
	* mail/copy.c (mail_copy0): Add typecast.

2019-01-23  Sergey Poznyakoff  <gray@gnu.org>

	mail: new notation @, for the mailbox given with the -f option.

	* doc/texinfo/programs/mail.texi: Document the @ notation.
	* NEWS: Likewise.
	* mail/copy.c (mail_copy0): Rewrite. Use mailbox URLs instead
	of filenames.
	* mail/file.c (mail_expand_name): Return integer code. On
	success, convert the expanded name to URL and return it in the
	memory location supplied by the second argument. Use new
	shorthand notation @, for the name of the file given with the
	-f option. All uses changed.
	* mail/mail.c (secondary_url): New global.
	(main): Save the URL of the file given with the -f option in
	secondary_url. Use it, instead of the file variable, to decide
	what kind of summary message to display for empty mailbox (see
	commit 99b6b6f02c3cf94ebe1daf7233a702c743d6a2b5).
	* mail/mail.h (secondary_url): New global.
	(mail_expand_name): Change prototype.
	* mail/mailline.c: Minor changes. 
	* libmailutils/wicket/noauth.c (noauth_ticket_get_cred): Return
	MU_ERR_AUTH_NO_CRED.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Summarize recent changes in NEWS.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Improve mail folder completion.

	* mail/mailline.c (filegen_init): Check if the mail folder is
	the same as the one used by the current mailbox, and reuse it
	if so.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Add missing prototype.

	* include/mailutils/url.h (mu_url_is_same_portstr): New proto.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Remove central registry of created folders.

	The way it is implemented now, it creates more problems than
	offers solutions. In particular, it makes it impossible to open
	two mailboxes in the same IMAP account.

	* libmailutils/mailbox/folder.c (known_folder_list)
	(folder_lock): Remove variable.
	(is_known_folder): Remove function.
	(mu_folder_create_from_record): Don't use static folder list.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	fix in mail completion.

	* mail/mailline.c (filegen_init): Append tailing delimiter to
	folders only on exact match.

2019-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in imap client.

	* libproto/imap/close.c (_mu_close_handler): Free mbox_name.

2019-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Fixes in imap client: handle EXPUNGE response, fix
	incorporation of new messages.

	Certain servers do not issue EXISTS unsolicited response after
	expunging. Use EXPUNGE responses to keep track of the deleted
	messages.

	Internal structure of imap mailbox object did not interact well
	with incorporating new messages. It is fixed.

	* include/mailutils/imap.h (MU_IMAP_CB_EXPUNGE): New callback
	code.
	* include/mailutils/sys/imap.h (_mu_imap_message): New member:
	msgno.
	(_mu_imap_mailbox): Change type of msgs to struct
	_mu_imap_message **. Each _mu_imap_message * is registered as
	owner for various MU objects, so it is important it does not
	change during reallocations.
	* libproto/imap/mbox.c (_imap_msg_free): Free the message
	itself.
	(_imap_attr_clr_flags): Fix bitwise op.
	(_imap_mbx_get_message,_imap_realloc_messages)
	(aggregate_attributes,_imap_mbx_gensync)
	(_imap_fetch_callback): Reflect change in the type of msgs
	array.
	(_imap_expunge_callback): New callback.
	(_imap_mbx_open): Register _imap_expunge_callback.
	* libproto/imap/resproc.c (_process_unsolicited_response):
	handle the EXPUNGE response.

2019-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix page invalidation in mail.

2019-01-21  Sergey Poznyakoff  <gray@gnu.org>

	Improve folder handling and expansion in mail. Add convenience
	functions to the library.

	* configure.ac: Build libmailutils/wicket
	* libmailutils/Makefile.am: Likewise.
	* libmailutils/base/wicket.c: Move file wicket stuff to ...
	* libmailutils/wicket/file.c: ... here
	* libmailutils/wicket/noauth.c: New file.
	* libmailutils/wicket/Makefile.am: New file. 
	* include/mailutils/auth.h (mu_noauth_ticket_create)
	(mu_noauth_wicket_create): New protos.
	* include/mailutils/folder.h (mu_folder_attach_ticket)
	(mu_folder_is_local): New protos.
	* include/mailutils/mailbox.h (mu_mailbox_attach_ticket): New
	proto.
	* include/mailutils/sys/folder.h (_mu_folder): Remove flags.
	Add new member: is_local.
	* libmailutils/mailbox/folder.c (mu_folder_create_from_record):
	Set is_local.
	(mu_folder_attach_ticket): New function.
	(mu_folder_is_local): New function.
	* libmailutils/mailbox/mbx_default.c
	(mu_mailbox_attach_ticket): New function.
	* libmailutils/url/create.c: Allow for trailing / in url. 
	* libproto/imap/mbox.c (_imap_mbx_open): Do initial scan.
	(__imap_msg_get_stream): Initialize clos.size.
	* libproto/imap/tests/imapfolder.c: Attach ticket to the
	folder. 
	* mail/cd.c (mail_cd): Expand directory name (~, %, +
	notations) prior to use.
	* mail/file.c (mail_file): Attach ticket to the mailbox.
	* mail/copy.c (append_to_mailbox): Likewise.
	* mail/mailline.c: Rewrite directory expansion. Implement fully
	functional folder expansion.
	* mail/util.c (util_folder_path)
	(util_outfolder_name): Rewrite using mu_mailbox_expand_name.

2019-01-18  Sergey Poznyakoff  <gray@gnu.org>

	Read message headers during initial scan of an imap mailbox.

	This considerably speeds up the operation of such tools as mail
	(initial loading), frm or from.

	* include/mailutils/sys/imap.h (_mu_imap_message): New member:
	header_stream.
	* libproto/imap/mbox.c (_imap_msg_free): Destroy header_stream.
	(_imap_hdr_fill): Rewrite.
	(fetch_response_parser): Handle MU_IMAP_FETCH_BODY.
	(_imap_mbx_scan): Fetch BODY.PEEK[HEADER].

2019-01-18  Sergey Poznyakoff  <gray@gnu.org>

	Don't reveal file name with the '0 messages' summary message.

	Rationale: file name can contain password.

	* mail/mail.c (main): Make sure file is always allocated. Fill
	it with 0's and free when no longer needed. Use mail_summary to
	display the summary for empty mailbox.

2019-01-18  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* mail/testsuite/lib/mail.exp (default_mail_start): Join
	arguments into a string.

2019-01-18  Sergey Poznyakoff  <gray@gnu.org>

	mail: implement msglist completion.

	* mail/mailline.c (msglist_closure_compl): Make the matches
	argument optional.
	(msglist_compl): Implement using msglist_closure_compl.

2019-01-17  Sergey Poznyakoff  <gray@gnu.org>

	Improve completion in mail.

	This affects the following commands: pipe, file, write, store.

	* mail/mail.h (shell_compl): New function.
	* mail/mailline.c (ml_command_completion): Change the meaning
	of the last argument to command_completion function. All
	functions updated.
	(msgtype_generator): Take into account '/' that can follow ':'.
	Prefix returned values with :.
	(header_generator): Append ':/' to the returned strings.
	(compl_concat): New function.
	(file_compl): Rewrite.
	(msglist_closure_compl): New function.
	(file_compl_matches,msglist_file_compl,exec_compl): Rewrite.
	(shell_compl): New function.
	* mail/table.c: Implement completion for pipe and shell
	commands.

2019-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Edit docs.

	* doc/texinfo/programs/mail.texi: Reorder material. Document
	message states. Rewrite description of message lists. Describe
	mailbox argument in file, save, write, etc.
	* doc/texinfo/mailutils.texi: Regenerate detailed menu

2019-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/base/amd.c (amd_body_stream_readdelim): Fix line
	length calculation.

2019-01-16  Sergey Poznyakoff  <gray@gnu.org>

	mail: fix / and :/ searches in message sets.

	* mail/mail.h (msgset_remove): New proto.
	* mail/msgset.y (yylex): Make sure to never move cur_p past the
	terminating 0 character.
	(msgset_append): Eliminated duplicates.
	(select_body): Read entire lines. Fix the conditional: return
	true if the matching line was found.

2019-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Split programs.texi into manageable parts.

	* NEWS: Update.
	* configure.ac: Version 3.5.90
	* doc/texinfo/Makefile.am (mailutils_TEXINFOS): Add new files.
	* doc/texinfo/programs.texi: Include sections from
	programs/*.texi
	* doc/texinfo/programs/comsatd.texi: New file.
	* doc/texinfo/programs/frm.texi: New file.
	* doc/texinfo/programs/guimb.texi: New file.
	* doc/texinfo/programs/imap4d.texi: New file.
	* doc/texinfo/programs/maidag.texi: New file.
	* doc/texinfo/programs/mail.texi: New file.
	* doc/texinfo/programs/mailutils.texi: New file.
	* doc/texinfo/programs/messages.texi: New file.
	* doc/texinfo/programs/mimeview.texi: New file.
	* doc/texinfo/programs/movemail.texi: New file.
	* doc/texinfo/programs/pop3d.texi: New file.
	* doc/texinfo/programs/readmsg.texi: New file.
	* doc/texinfo/programs/sieve.texi: New file.

2019-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix the pipe command (mail)

	* mail/pipe.c: Always treat last argument as the name of the
	command to use.

2019-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Improve mail documentation.

2019-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* libmailutils/cli/cli.c: Update copyright year.

2019-01-03  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years.

2018-12-25  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos and improve wording in the docs.

	Reported by Dan Jacobson.

2018-12-25  Sergey Poznyakoff  <gray@gnu.org>

	Fix showenvelope.

	* mail/envelope.c (print_stream_envelope): New function. End
	output with a newline.
	* mail/mail.h: Likewise.
	* mail/print.c (mail_print_msg): Print envelope to the created
	output stream, instead of mu_strout.

2018-11-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix obsolete docstring.

	* libmailutils/cli/stdcapa.c: Fix description of the argument
	syntax for the "debug" statement.

2018-10-27  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.5.

2018-10-24  Sergey Poznyakoff  <gray@gnu.org>

	Add missing prototype.

2018-10-24  Sergey Poznyakoff  <gray@gnu.org>

	sieve: set variables from command line.

	The new command line option --variable initializes the RFC 5229
	variable.

	* NEWS: Update.
	* doc/texinfo/programs.texi: Fix description of sieve command
	line options.
	* include/mailutils/sieve.h (mu_sieve_variable_initialize): New
	proto.
	* libmu_sieve/runtime.c (sieve_run): Call
	mu_i_sv_init_variables to clear and initialize the table of
	variables.
	* libmu_sieve/sieve-gram.y (mu_sieve_machine_dup): Copy
	variables.
	(mu_sieve_machine_destroy): Destroy table of variables and
	initializer list.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine) <init_var>: New
	member.
	(mu_sieve_variable_initializer): New type.
	(mu_i_sv_init_variables): New proto.
	* libmu_sieve/variables.c (mu_sieve_variable_initialize): New
	function.
	(mu_i_sv_copy_variables): Copy initializers as well.
	(mu_i_sv_init_variables): New function.
	* sieve/sieve.c: New command line option --variable.
	* sieve/tests/variables.at: Test the --variable option.

2018-10-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix static linkage.

	* libmailutils/datetime/scantime.c (get_num): static
	* mu/libexec/ldflags.c: Make sure libmailutils is linked after
	all libmu_ libraries that rely on it.

2018-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix wordsplit command expansion and related tests.

	* include/mailutils/wordsplit.h (MU_WRDSO_ARGV): Remove.
	* libmailutils/string/wordsplit.c (expcmd): Always split
	command line into arguments. This fixes
	https://savannah.gnu.org/bugs/?54830
	* libmailutils/tests/wordsplit.at: Rewrite command expansion
	tests.
	* libmailutils/tests/wsp.c: Implement internal commands,
	instead of calling shell ones. This fixes
	https://savannah.gnu.org/bugs/?54829.
	* libmailutils/string/expvar.c: Remove the use of
	MU_WRDSO_ARGV.

2018-10-04  Sergey Poznyakoff  <gray@gnu.org>

	Fix imap client behavior when opening empty mailboxes.

	According to RFC 3501 (page 89):

	 The server should respond with a tagged BAD
	 response to a command that uses a message
	 sequence number greater than the number of
	 messages in the selected mailbox. This
	 includes "*" if the selected mailbox is empty. 
	* include/mailutils/sys/imap.h (_mu_imap_mailbox)<total_size>:
	Remove unnecessary field.
	* libproto/imap/mbox.c (_imap_fetch_callback): Fix array size
	calculation.
	(_imap_mbx_scan): Don't issue FETCH command if the mailbox is
	empty.

2018-08-26  Sergey Poznyakoff  <gray@gnu.org>

	Implement SCM interface to mailutils filters.

	* include/mailutils/guile.h (mu_port_make_from_stream): Remove
	unused msg argument. All uses updated.
	* libmu_scm/mu_filter.c: New file.
	* libmu_scm/Makefile.am: Add mu_filter.c
	* libmu_scm/mu_message.c (mu-message-get-port): Add missing
	anchor to the docstring.
	* libmu_scm/mu_port.c (mu_port): Remove msg.
	* libmu_scm/mu_scm.c (mu_scm_init): Call mu_scm_filter_init. 
	* NEWS: Updated.

2018-08-25  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in base64 encoder.

	* libmailutils/filter/base64.c (_base64_encoder): Don't return
	immediately on eof. The encoder can have some more characters
	for output, left over from the previous call.

2018-08-16  Ivan A. Melnikov  <iv@altlinux.org>

	Force terminating \0 in mh_format result.

	Apparently, mu_stream_read is not required to put the
	terminating zero into the buffer, so we need to do it in its
	caller.

	Signed-off-by: Ivan A. Melnikov <iv@altlinux.org>

2018-08-13  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in python configuration code.

	* configure.ac: Use $PYTHON_CONFIG instead of the hardcoded
	python-config name.

2018-07-30  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.4.91.

	* NEWS: Update version number.
	* configure.ac: Likewise.

2018-07-30  Sergey Poznyakoff  <gray@gnu.org>

	Support for Python 3.

	Support for v2 is retained for a while. Both the API and the
	syntax of the two versions differ considerably enough to keep
	both versions apart in parallel directory subtrees, instead of
	fiddling with CPP directives and Automake conditionals. So,
	instead of prior 'python/' and 'examples/python' we now have
	'python/2', 'python/3', and 'examples/python/2' with
	'examples/python/3'. The customized loader is modified to
	insert the appropriate path to the sys.path.

	When Python 2 is definitely gone, the directory structures will
	be flattened again, by removing additional version number
	subdirectory.

	* Makefile.am (SUBDIRS): Add python unconditionally
	* configure.ac (PYTHON_MAJOR): New substvar.
	(MU_LIB_PY): Change path
	(MU_COND_PYTHON2,MU_COND_PYTHON3): New conditionals.
	* examples/python/*: Rename to examples/python/2/*
	* examples/python/3/Makefile.am: New file.
	* examples/python/3/addr.py: New file.
	* examples/python/3/auth.py: New file.
	* examples/python/3/iconv.py: New file.
	* examples/python/3/lsf.py: New file.
	* examples/python/3/mailcap.py: New file.
	* examples/python/3/mimetest.py: New file.
	* examples/python/3/msg-send.py: New file.
	* examples/python/3/sfrom.py: New file.
	* examples/python/3/url-parse.py: New file.
	* include/mailutils/python.h: Remove inclusion of Python.h. It
	must included before all other files.
	* lib/python.c: Include Python.h
	* python/*: Rename to python/2/*
	* python/usercustomize.py: Insert path to the appropriate
	Python version implementation to the sys.path
	* python/3/Makefile.am: New file.
	* python/3/libmu_py/Makefile.am: New file.
	* python/3/libmu_py/address.c: New file.
	* python/3/libmu_py/attribute.c: New file.
	* python/3/libmu_py/auth.c: New file.
	* python/3/libmu_py/body.c: New file.
	* python/3/libmu_py/envelope.c: New file.
	* python/3/libmu_py/errno.c: New file.
	* python/3/libmu_py/error.c: New file.
	* python/3/libmu_py/filter.c: New file.
	* python/3/libmu_py/folder.c: New file.
	* python/3/libmu_py/header.c: New file.
	* python/3/libmu_py/libmu_py.c: New file.
	* python/3/libmu_py/libmu_py.h: New file.
	* python/3/libmu_py/list.c: New file.
	* python/3/libmu_py/mailbox.c: New file.
	* python/3/libmu_py/mailcap.c: New file.
	* python/3/libmu_py/mailer.c: New file.
	* python/3/libmu_py/message.c: New file.
	* python/3/libmu_py/mime.c: New file.
	* python/3/libmu_py/nls.c: New file.
	* python/3/libmu_py/registrar.c: New file.
	* python/3/libmu_py/script.c: New file.
	* python/3/libmu_py/secret.c: New file.
	* python/3/libmu_py/sieve.c: New file.
	* python/3/libmu_py/stream.c: New file.
	* python/3/libmu_py/url.c: New file.
	* python/3/libmu_py/util.c: New file.
	* python/3/mailutils/Makefile.am: New file.
	* python/3/mailutils/__init__.py: New file.
	* python/3/mailutils/address.py: New file.
	* python/3/mailutils/attribute.py: New file.
	* python/3/mailutils/auth.py: New file.
	* python/3/mailutils/body.py: New file.
	* python/3/mailutils/c_api.c: New file.
	* python/3/mailutils/envelope.py: New file.
	* python/3/mailutils/error.py: New file.
	* python/3/mailutils/filter.py: New file.
	* python/3/mailutils/folder.py: New file.
	* python/3/mailutils/header.py: New file.
	* python/3/mailutils/mailbox.py: New file.
	* python/3/mailutils/mailcap.py: New file.
	* python/3/mailutils/mailer.py: New file.
	* python/3/mailutils/message.py: New file.
	* python/3/mailutils/mime.py: New file.
	* python/3/mailutils/nls.py: New file.
	* python/3/mailutils/registrar.py: New file.
	* python/3/mailutils/secret.py: New file.
	* python/3/mailutils/sieve.py: New file.
	* python/3/mailutils/stream.py: New file.
	* python/3/mailutils/url.py: New file.
	* python/3/mailutils/util.py: New file.

2018-07-27  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/mime/mimehdr.c (_mime_header_parse): Initialize
	ws.ws_options prior to modifying it.

2018-07-25  Sergey Poznyakoff  <gray@gnu.org>

	Add maintainer's makefiles.

2018-07-23  Sergey Poznyakoff  <gray@gnu.org>

	Support for Berkeley DB versions 5 and 6.

	Drop the legacy configure option --with-db2

2018-07-20  Sergey Poznyakoff  <gray@gnu.org>

	Add test cases missing from the distribution.

	* readmsg/tests/Makefile.am (TESTSUITE_AT): Add missing
	testcases

2018-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Minor documentation fix.

2018-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix endianness bug in string to IP conversion.

	* libmailutils/cidr/fromsa.c (_mu_inaddr_to_bytes)
	(_mu_sockaddr_to_bytes): Fix improper endianness conversion.
	* libmailutils/cidr/tosa.c (mu_cidr_to_sockaddr): Simplify
	conversion.

2018-06-13  Sergey Poznyakoff  <gray@gnu.org>

	Fix eventual segmentation violation in imap4d.

	The coredump occurred if a recently started child received a
	termination signal before initializing iostream.

	* imap4d/bye.c (imap4d_bye0): Rename to imap4d_bye_command. All
	uses changed.
	* imap4d/io.c (io_untagged_response): Check if iostream is
	initialized.

2018-06-13  Sergey Poznyakoff  <gray@gnu.org>

	libmu_scm: fix docs.

2018-06-12  Sergey Poznyakoff  <gray@gnu.org>

	libmu_scm: add testcases for mu-mime functions (with bugfixes)

	* libmu_scm/mu_message.c (mu_scm_message_add_owner): Fix owner
	list construction.
	* libmu_scm/mu_mime.c (mu-mime-create): Fix a bug: both
	arguments are optional now.
	* libmu_scm/tests/Makefile.am: Add new tests.
	* libmu_scm/tests/testsuite.at: Likewise,

	New testcases: 
	* libmu_scm/tests/mime-add-part.at
	* libmu_scm/tests/mime-create.at
	* libmu_scm/tests/mime-get-num-parts.at
	* libmu_scm/tests/mime-get-part.at
	* libmu_scm/tests/mime-multipart-p.at
	* libmu_scm/tests/mime-p.at

2018-06-12  Sergey Poznyakoff  <gray@gnu.org>

	libmu_scm: more tests.

	* testsuite/spool/mbox2: New file. Same messages as in mbox1,
	but with Mailutils auxiliary headers added. Ideally,
	libmailutils should not add any headers to the messages, unless
	explicitly requested to do so. Hopefully, I'll fix this in
	future.
	* testsuite/spool/DISTFILES: Add mbox2 and mime.msg 
	* libmu_scm/tests/mailbox-append-message.at: New testcase.
	* libmu_scm/tests/mailbox-expunge.at: New testcase.
	* libmu_scm/tests/message-delete.at: New testcase.
	* libmu_scm/tests/message-get-flag.at: New testcase. 
	* libmu_scm/mu_message.c (mu_scm_message_print): Display flags.
	* libmu_scm/tests/Makefile.am: Add new files.
	* libmu_scm/tests/mailbox-print.at: Remove the now superfluous
	quoting.
	* libmu_scm/tests/message-get-part.at: Likewise.
	* libmu_scm/tests/testsuite.at (MU_GUILE_CHECK): Quote the
	argument to AT_DATA Include new tests.

	Changes missing from the previous commit: 
	* libmu_scm/mailutils/ancilla.scm
	* libmu_scm/mu_body.c
	* libmu_scm/mu_port.c

2018-06-10  Sergey Poznyakoff  <gray@gnu.org>

	libmu_scm: minor fixes; add more tests.

	* libmu_scm/mailutils/ancilla.scm (string->message)
	(file->message): Ise open- call instead of call-with-input to
	avoid premature closing of the input port. This has a drawbak
	that the port will be actually closed only after the returned
	message is destroyed (possibly by the gc).
	* libmu_scm/mu_body.c: Use scm_intprint when printing objects.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_port.c: Likewise.
	* libmu_scm/mu_message.c (mu_scm_message_free): Fix destroying
	of the underlying mu_message_t object. 
	* libmu_scm/tests/message-get-num-parts.at: New file.
	* libmu_scm/tests/message-get-part.at: New file.
	* libmu_scm/tests/message-multipart.at: New file.
	* testsuite/spool/mime.msg: New file.

2018-06-09  Sergey Poznyakoff  <gray@gnu.org>

	Upgrade gint.

	This suppresses spurious warnings when generating
	guile-procedures.txt

2018-06-09  Sergey Poznyakoff  <gray@gnu.org>

	Add more libmu_scm tests.

	* libmu_scm/Makefile.am (C_SRCS): Add portstream.c
	* libmu_scm/mailutils/Makefile.am (EXTRA_DIST): Add ancilla.scm
	* libmu_scm/mailutils/ancilla.scm: New file
	* libmu_scm/mu_message.c (mu-message-get-header-fields): Fix
	operation when called with three arguments.
	(mu-message-from-port): New function.
	* libmu_scm/portstream.c: New file.

2018-06-08  Sergey Poznyakoff  <gray@gnu.org>

	Further fixes in the scheme library. Add guile testsuite.

	* .gitignore: Ignore .gdbinit
	* README: Update.
	* configure.ac: Add guile testsuite
	* libmu_scm/Makefile.am (SUBDIRS): Add tests.
	* libmu_scm/mu_body.c: Update smob support.
	* libmu_scm/mu_dbgport.c (mu_scm_make_debug_port): Delegate
	buffering to mailutils streams layer.
	* libmu_scm/mu_mailbox.c: Update smob support.
	(mu-mailbox-more-messages?): Fix reversed return value.
	* libmu_scm/mu_message.c: Update smob support.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_port.c (mu_port_make_from_stream): Delegate
	buffering to mailutils streams layer. 
	* libmu_scm/tests/.gitignore: New file.
	* libmu_scm/tests/Makefile.am: New file.
	* libmu_scm/tests/atlocal.in: New file.
	* libmu_scm/tests/const.at: New file.
	* libmu_scm/tests/mailbox-get-message.at: New file.
	* libmu_scm/tests/mailbox-get-size.at: New file.
	* libmu_scm/tests/mailbox-get-url.at: New file.
	* libmu_scm/tests/mailbox-iterate.at: New file.
	* libmu_scm/tests/mailbox-messages-count.at: New file.
	* libmu_scm/tests/mailbox-open-exc.at: New file.
	* libmu_scm/tests/mailbox-open.at: New file.
	* libmu_scm/tests/mailbox-print.at: New file.
	* libmu_scm/tests/message-create.at: New file.
	* libmu_scm/tests/message-print.at: New file.
	* libmu_scm/tests/testsuite.at: New file.

2018-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch to Guile 2.2.0.

	* configure.ac" Set minimum supported Guile version to 2.2.0
	* libmu_scm/mu_body.c: Rewrite.
	* libmu_scm/mu_dbgport.c: Rewrite.
	* libmu_scm/mu_mailbox.c: Update types.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_port.c: Likewise.

2018-06-02  Sergey Poznyakoff  <gray@gnu.org>

	Fix absolute name of the "missing" utility.

	* am/bison.m4: Use $am_aux_dir. Take care to not expand $SHELL
	prematurely.
	* am/flex.m4: Likewise.

2018-05-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix the use of uninitialized variable.

2018-04-18  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in the mailutils-dbm utility.

	* mu/libexec/dbm.c (write_quoted_string): Fix expected return
	from mu_wordsplit_c_quote_char.
	(add_records): Don't break on empty lines.

2018-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Port wordsplit from grecs
	dae43f323db9578e656e3a6c53440e2365421af7.

	* libmailutils/string/wordsplit.c (expvar): Gracefully handle
	NULL values in an ENV_KV environment.
	* include/mailutils/wordsplit.h: Fix typos

2018-01-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.4.90; update copyright years.

2018-01-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add new date/time specifier for headline variable in mail.

	The new %D specifier allows the user to supply arbitrary
	strftime(3) format string for outputting message date/time.
	E.g.:

	 set headline="%4m %20D{%Y-%m-%dT%H:%M:%S} %18f %s" 
	* mail/from.c (hdr_date): Take format from data, if supplied.
	(compile_headline): Handle the %D specifier
	* mail/util.c (util_do_command): Return immediately if command
	parsing failed. 
	* mail/tests/D.at: New testcase.
	* mail/tests/Makefile.am: Add new testcase.
	* mail/tests/testsuite.at: Likewise. 
	* NEWS: Document changes.
	* doc/texinfo/strftime.texi: New file.
	* doc/texinfo/Makefile.am: Add strftime.texi
	* doc/texinfo/mailutils.texi: Include strftime.texi
	* doc/texinfo/programs.texi: Document the %D format specifier.

2018-01-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix header field alignment in header output of the mail
	command.

	* mail/from.c (compile_headline): Honor the alingment setting.
	* mail/tests/align.at: New testcase.
	* mail/tests/Makefile.am: Add new testcase.
	* mail/tests/testsuite.at: Include new testcase.

2018-01-18  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

	* doc/texinfo/mailutils.texi: Fix typos in the imap URL
	example.
	* libmailutils/locus/linetrack.c: Re-word the comment.
	* mimeview/grammar.y: Remove unnecessary assignment.

2017-12-29  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory management in imap4d.

	* imap4d/io.c (imap4d_tokbuf_getline): Add missing index check.
	* imap4d/search.c (parse_simple_key): Don't free msgset (it
	will be freed later).

2017-12-17  Sergey Poznyakoff  <gray@gnu.org>

	Update ChangeLog.amend.

2017-12-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix the operation of CRLF and CRLFDOT filters.

	When encoding, these filters used to retain any existing CRLF
	sequences untouched on output. As a result, it was not possible
	to predict the number of characters output having the number of
	characters and number of lines on input. Due to this imap4d
	fetch would produce invalid literal output on FETCH command if
	the requested stream (usually body), contained a mixture of LF
	and CRLF terminated lines. Moreover, encode + decode operations
	would not be idempotent in this case.

	To fix this, the default behavior of CRLF and CRLFDOT filter in
	encode mode is changed to translate each LF to CRLF, no matter
	what the prior character was. To invoke the former
	"normalizing" behavior, the "-n" option argument is provided
	for mu_filter_create_args.

	* imap4d/fetch.c (fetch_io): Use raw stream when possible. Use
	a temporary CRLF translator to ensure proper positioning if
	start offset is specified. This is suboptimal (to say the very
	least) and will be fixed as soon as possible.
	* imap4d/io.c (io_enable_crlf): New function (hopefully
	temporary).
	* libmailutils/filter/crlfdot.c: When encoding, retain input
	CRLF only if the -n option was used when creating the filter.
	Otherwise, translate it to CRCRLF.
	* libmailutils/filter/crlfflt.c: Likewise.
	* libmailutils/stream/fltstream.c (filter_read): Make sure
	mu_filter_lastbuf is always emitted prior to closing the
	filter.
	(filter_seek): Clear flag_eof.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add dump
	and tocrlf.
	* libmailutils/tests/crlf.at: New test case.
	* libmailutils/tests/crlfdot.at: New test case.
	* libmailutils/tests/dump.c: New auxiliary program.
	* libmailutils/tests/tocrlf.c: Likewise.
	* libmailutils/tests/testsuite.at (MU_FILTER_TEST_NIBBLE)
	(MU_FILTER_TEST): New defines.

2017-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typos.

2017-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Follow up to 78132d34.

	* libmailutils/mime/mime.c (_mime_parse_mpart_message): Avoid
	segmentation violation on nbytes==0.

2017-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	MIME: part boundary in not required to be followed by a
	newline.

	* libmailutils/mime/mime.c: Part boundary can be either
	followed by a newline, or appear at the very end of input.
	* testsuite/Makefile.am: Add mime01.at
	* testsuite/testsuite.at: Include mime01.at.
	* testsuite/mime01.at: New file.
	* testsuite/mime.at: Update expected output. Don't filter
	output through tr & sed.
	* testsuite/mimetest.c: Change output to make sure no trailing
	whitespace could be produced.

2017-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/rfc2047.c (mu_rfc2047_encode): Fix
	compliance with RFC 2047, 4.3 (page 7). See FIXME, though.
	* libmailutils/tests/encode2047.at: Change expected output

2017-11-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix AM_GNU_MAILUTILS.

	* mu-aux/mailutils.m4: Remove support for v. 1.2 and earlier.

2017-11-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix the use of uninitialized memory.

	* mh/mh_alias_lex.l (push_source): Initialize locus range prior
	to copying to it.
	* libmailutils/cfg/parser.y (mu_cfg_tree_create_node):
	Likewise.
	* libmu_sieve/util.c: (mu_sieve_value_create): Likewise.

2017-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in MH testsuite.

	Running fmtcheck without .mh_profile triggers mh_install, which
	surprises the testsuite with unexpected output "I'm going to
	create the standard MH path for you." Defining the MH envar to
	an existing file name suppresses it.

	* mh/tests/fmtcnd00.at: Always define MH prior to starting
	fmtcheck.
	* mh/tests/fmtcomp.at: Likewise.
	* mh/tests/fmtfunc.at: Likewise.

2017-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Pull wordsplit tests from grecs.

	* libmailutils/string/wordsplit.c (_wsplt_alloc_die): use %s
	format spec.
	(mu_wordsplit_init): Use MU_WRDSX_ constants instead of
	numerics.
	(expvar): Remove useless gettext.
	* libmailutils/tests/wordsplit.at: Update.

2017-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mimeview/lexer.l (yyerror): Use explicit format spec.

2017-11-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve support of MU_IOCTL_TCPSTREAM.

	* libmailutils/stream/iostream.c (_iostream_ctl): Handle
	MU_IOCTL_TCPSTREAM
	* libmailutils/stream/logstream.c (_log_ctl): Propagate unknown
	codes to the transport stream.
	* libmailutils/stream/rdcache_stream.c (rdcache_ioctl):
	Likewise.
	* libmu_auth/tls.c (_tls_ioctl): Likewise.
	* libmu_auth/tlsiostr.c (_tls_io_ioctl): Likewise.

2017-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.4.

2017-11-01  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2017-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve socket and SMTP client API.

	Split formatting functions into two distinct families.
	Functions prefixed with mu_sys_sockadrr deal with struct
	sockaddr, whereas those starting with mu_sockaddr deal with
	struct mu_sockaddr. Introduce special format for SMTP EHLO.

	When sending EHLO to the remote party, use IP address in square
	brackets if hostname is empty.

	* libmailutils/sockaddr/Makefile.am (libsockaddr_la_SOURCES):
	Add fromsock.c
	* libmailutils/sockaddr/fromsock.c: New function.
	* libmailutils/sockaddr/str.c (mu_sockaddr_format): Rewrite.
	(mu_sys_sockaddr_format,mu_sys_sockaddr_to_astr): New
	functions. 
	* include/mailutils/debug.h (mu_sockaddr_to_astr): Remove
	prototype.
	* include/mailutils/sockaddr.h (mu_sockaddr_format): New enum.
	(mu_sockaddr_format): change signature.
	(mu_sys_sockaddr_format,mu_sys_sockaddr_to_astr): New
	prototypes.
	(mu_sockaddr_from_socket): New prototype.
	* include/mailutils/stream.h (MU_IOCTL_TCPSTREAM): New ioctl
	family;
	(MU_IOCTL_TCP_GETSOCKNAME): New ioctl opcode. 
	* comsat/comsat.c: Use mu_sys_sockaddr_ interface to handle
	struct sockaddr.
	* lib/tcpwrap.c: Likewise.
	* libmailutils/server/ipsrv.c: Likewise.
	* libmailutils/server/msrv.c: Likewise. 
	* libmailutils/stream/tcp.c (_tcp_ioctl): Handle
	MU_IOCTL_TCPSTREAM.
	* libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): If hostname is
	empty, use IP address in square brackets.

2017-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/sockaddr/fromnode.c
	[!MAILUTILS_IPV6] (mu_sockaddr_from_node): Convert port to
	network order.

2017-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in AM_MAILUTILS macro.

	* mu-aux/mailutils.m4 (am_mu_vercmp): Ignore missing version
	parts.

2017-10-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.3.

	* NEWS: Update.
	* configure.ac: Update.
	* Makefile.am (dist-hook): Fix conditional.

2017-10-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* libmailutils/mailbox/msgsave.c (mu_message_save_to_mailbox):
	Open destination in append mode.

2017-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Reimplement control escapes in mh_format.

	This patch makes sure that (1) the value of the "num" register
	is not altered by evaluating the condition expressions and
	remains visible in the conditional branches, and (2) the value
	of the control escape is 1 or 0 depending on whether the last
	control condition succeeded or not.

	* mh/mh_format.h: Implement numeric stack in the vm.
	(mhop_pushn,mhop_popn,mhop_xchgn): New opcodes.
	(mh_fvm) <numstack,maxstack,tos>: New members.
	* mh/mh_fmtgram.y (ctx_stack): Reallocate as necessary.
	(yylex_cond): Handle backslash continuations.
	(format_parse): Initialize and free ctx_stack
	(codegen_node): Reimplement control escapes. See the comment
	for explanation
	* mh/mh_format.c (mh_fvm_run): Use mh_string_init to initialize
	registers. Initialize stack. Implement push, popn, and xchgn
	(extract_labels,mh_format_dump_disass): Handle new opcodes. 
	* mh/tests/fmtcnd00.at: New testcase.
	* mh/tests/Makefile.am: Add new testcase
	* mh/tests/testsuite.at: Likewise.
	* mh/tests/fmtcomp.at: Fix expected code dumps

2017-10-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leaks in amd and assoc.

2017-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.2.94.

2017-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_prtstr to safely print string values.

2017-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Check for NULL return from mu_address_aget_ and
	mu_address_sget_ family functions.

	It is possible that these functions return success and place
	NULL in the result variable. Make sure this possibility is
	checked throughout the code.

	* libmailutils/base/usremail.c (mu_set_user_email): Check for
	NULL return value from mu_address_[as]get.
	* libmailutils/mailbox/msgenv.c (message_envelope_sender)
	* libmailutils/tests/addr.c (parse)
	* libmu_scm/mu_message.c (mu_scm_message_print):
	* libproto/mailer/prog.c (_expand_rcpt)
	* libproto/mailer/smtp.c (_rcpt_to_addr)
	(mu_address_sget_email)
	* maidag/lmtp.c (check_address):
	* mail/from.c (hdr_from):
	* mail/util.c (util_get_sender):
	* mh/mh_format.c (addr_cmp, builtin_proper) (builtin_addr,
	builtin_pers, builtin_note) (builtin_mbox, builtin_path,
	builtin_formataddr)
	* mh/mh_whom.c (scan_addrs):
	* libmu_sieve/util.c (mu_sieve_vlist_compare): Skip NULL
	returns from retr.
	* libmu_sieve/actions.c (check_redirect_loop): Error checking. 
	* include/mailutils/types.hin (mu_prstr): New function. 
	* libmu_cpp/address.cc: Use mu_prstr to ensure the printable
	representation of string.
	* python/libmu_py/address.c: Likewise.
	* libmu_scm/mu_address.c (_get_address_part): Likewise.
	* libmailutils/string/wordsplit.c (expvar): Treat NULL value as
	"".

2017-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in mh.

	* mh/mh_fmtgram.y (yylex_func): Accept negative numbers.

2017-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/mime/mimehdr.c (_mime_header_parse): Preserve
	charset no matter what lang setting is.

2017-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	bugfix in imap4d: INBOX name is case-insensitive.

2017-09-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Assume UTC for IMAP internaldate.

	* include/mailutils/datetime.h (mu_datetime_tz_utc): New proto.
	* libmailutils/datetime/tzutc.c: New file.
	* libmailutils/datetime/Makefile.am: Add tzutc.c 
	* imap4d/fetch.c (_frt_internaldate): Assume UTC for
	internaldate.
	* libproto/imap/fetch.c (_date_mapper): Likewise. 
	* mh/send.c: Improve diagnostics.

2017-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Fix build without libtool.

	* libmu_sieve/load.c [!HAVE_LIBLTDL] (mu_sieve_unload_ext):
	Dummy function.
	[!HAVE_LIBLTDL] (mu_sieve_load_ext, mu_i_sv_load_add_dir): Set
	errno. Fix return value.
	* mu-aux/gylwrap (yysym): Add more symbols
	(dumpme): Skip old contents of the BOOTSTRAP section up to the
	next POD keyword.
	* mu/libexec/Makefile.am (MUTOOL_LIBRARIES_TAIL): Fix ordering
	of libraries.

2017-09-27  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2017-07-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement new MH format primitives (for compatibility with
	nmh).

	* mh/etc/replcomps: Use localmbox instead of me.
	* mh/etc/replgroupcomps: Likewise.
	* mh/mh.h (mh_get_my_real_name)
	(mh_get_my_user_name,mh_my_host): New protos.
	(mh_my_email): Change prototype.
	* mh/mh_format.c (builtin_me): Use mh_get_my_user_name.
	(builtin_myhost,builtin_myname,builtin_localmbox): New
	functions.
	(builtin_formataddr): Preserve collected data if the address is
	not parseable.
	(builtin_tab): New functions: myhost, myname, localmbox.
	* mh/mh_init.c (mh_local_mailbox): New function.
	(mh_get_my_real_name)
	(mh_get_my_user_name,mh_my_host): New functions.
	* mh/repl.c (set_group): Don't overwrite any prior -form or
	-format options.

2017-07-14  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* mail/send.c (add_body): Increase reference counter of the
	copied stream.

2017-07-07  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes in MH format code generator.

	* mh/mh_fmtgram.y (mh_read_formfile): Remove only the last
	trailing newline.
	(codegen_node): Don't emit spurious clear register statements
	at the end of the "else" branch. Optimize if no "else" branch
	is present.
	* mh/mh_format.c (mh_fvm_run) <mhop_brzn, mhop_brzs>: Leave the
	result of condition evaluation in num.
	(builtin_tab): rcpt takes literal argument.
	* mh/scan.c (action): Remove unused argument.
	* mh/tests/fmtcomp.at: Update the "if-else" test.

2017-07-07  Sergey Poznyakoff  <gray@gnu.org>

	Simplify mh_fvm_run calling sequence.

	The commit 6b16ba19 (in its changes to mh/mh_format.c)
	inadvertently broke the operation of inc on folders with gaps
	in sequence (UID) numbering. It turns out that the msgno
	argument to mh_fvm_run (and msgno member in struct mh_fvm) can
	be disposed of. If the caller wants to supply an explicit UID
	number of the message, it should use mu_message_set_uid.

	* mh/mh.h (mh_fvm_run): Take only two arguments: fvm and
	message.
	* mh/mh_format.h (mh_fvm) <msgno>: Remove.
	* mh/fmtcheck.c (run): Set the uid accessor on the created
	message.
	* mh/mh_format.c (mh_format_str): Likewise.
	(builtin_msg, builtin_cur): Always call mh_message_number.
	* mh/inc.c: Update calls to mh_fvm_run
	* mh/repl.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/tests/inc.at: Check whether inc on folders with gaps in
	message UIDs produces the correct output.

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* mu-aux/gylwrap (filter): $yyrx is always defined after
	ce4b84ab. Use $yyrepl instead.

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Implement new opool function.

	* include/mailutils/opool.h (mu_opool_less): New function.
	* libmailutils/base/opool.c: Likewise.

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite rfc822 date parser.

	* include/mailutils/parse822.h (mu_parse822_day)
	(mu_parse822_date,mu_parse822_time): Remove protos.
	* libmailutils/address/parse822.c (mu_parse822_date_time):
	Rewrite via mu_scan_datetime.

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Start rewriting parse822.

	* include/mailutils/cctype.h (MU_CTYPE_IMSPC)
	(MU_CTYPE_NWCTL,MU_CTYPE_IMATM): New classes.
	(mu_isimspc,mu_isnwctl,mu_isimatm): New macros
	* libmailutils/string/muctype.c: Mark characters from the above
	classes.
	* include/mailutils/parse822.h (mu_parse822_is_char)
	(mu_parse822_is_digit,mu_parse822_is_ctl)
	(mu_parse822_is_space,mu_parse822_is_htab)
	(mu_parse822_is_lwsp_char,mu_parse822_is_special)
	(mu_parse822_is_atom_char,mu_parse822_is_q_text)
	(mu_parse822_is_d_text,mu_parse822_is_smtp_q): Rewrite as
	inline static functions, using macros from cctype.h
	* libmailutils/address/parse822.c: See above.
	(parse822_is_atom_char_ex): Remove.

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Bootstrap gylwrap.

	This removes the need for List::Regexp during development

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Improve gylwrap.

	This change allows the user to pre-compile the yyrx expression
	in gylwrap so that it no longer requires the List::Regexp
	module. Only supplying the --yysym module will require the
	module.

	* mu-aux/gylwrap: New options --reset and --dump

2017-07-06  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* am/flex.m4: Add missing 'fi'

2017-07-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix VI_REVISION and VI_AGE in configure.ac.

2017-07-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix the nohost MH format function.

2017-07-05  Sergey Poznyakoff  <gray@gnu.org>

	MH: Rewrite the mymbox function.

	* mh/mh_init.c (emailcmp): Rewrite.
	(email_match): New function.
	(mh_is_my_name): Cache Alternate-Mailboxes and mh_my_email in a
	static mu_address_t; use email_match to compare.
	* mh/tests/fmtfunc.at: Test mymbox function.

2017-07-04  Sergey Poznyakoff  <gray@gnu.org>

	Add more fmtfunc tests.

2017-07-04  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

	* mh/mh_fmtgram.y (yyerror): Cast * arguments to int
	* mh/mh_format.h (mh_instr_t)<size>: New member.
	* mh/tests/fmtfunc.at (FMTFUNC): Enforce Charset:auto.

2017-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu_parse_date_dtl: Minor fix.

	* libmailutils/datetime/parsedate.y (mu_parse_date_dtl): Set
	tm.tm_gmtoff and tm.tm_zone upon return (if present).

2017-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve parsedate & related MH formats.

	* libmailutils/datetime/parsedate.y (spec production): If a
	non-signed number is given, treat it as a (positive) timezone,
	unless tz is already set, or as a year number, unless a year is
	already set, or throw an error otherwise.
	(mu_parse_date_dtl): Revert sign of the returned utc_offset
	* mh/mh_format.c (builtin_tzone): Compatibility fix
	* mh/tests/fmtfunc.at: Test more functions.

2017-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revamp MH datetime format functions.

	* mh/mh_format.c (_parse_date): Use mu_parse_date_dtl instead
	of much stricter mu_parse822_date_time. Return more info. All
	callers changed
	(builtin_sday,builtin_szone): Implemented
	* mh/tests/fmtfunc.at: Comment out (temporarily) the tzone test

2017-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move parsedate.y from base to datetime library.

2017-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve parsedate parser.

	* include/mailutils/datetime.h (MU_PD_MASK_*): New defines,
	taken from parsedate.y
	(mu_parse_date_dtl): New proto.
	* libmailutils/base/parsedate.y: Remove obsolete defines. Move
	PD_MASK_ defines to datetime.h; use functions from cctype.h and
	cstr.h
	(pd_date) <tzname>: New member
	(%union): New member tz
	(T_ZONE,T_DAYZONE): Change type to <tz>
	(zone productions): Set tzname.
	(mu_parse_date_dtl): New function. Returns detailed time
	information.
	(mu_parse_date): Rewrite as an entry point to mu_parse_date_dtl

2017-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Test mh format date functions.

	* mh/mh_format.c (builtin_sday, builtin_szone): Mark as not
	implemented
	(builtin_zone): Fix output
	(builtin_tzone): Fix output
	* mh/tests/fmtfunc.at: Test most date functions.

2017-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/address/parse822.c (mu_parse822_date_time): Set
	tm_yday

2017-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	fmtcheck: use symbolic label names by default.

	Actual program counters may differ between different
	architecture, so avoid using them in the testsuite.

	* mh/fmtcheck.c: New option -pc requires printing program
	counters. Unless this option is used, -disass prints only
	labels where needed.
	* mh/mh.h (mh_format_dump_disass): Change signature.
	* mh/mh_format.c (mh_format_dump_disass): Take additional flag
	indicating whether to print program counters. Compute and print
	program labels, unless this flag is non-zero.
	* mh/tests/fmtcomp.at: Don't expect program counters in
	disassembled code.

2017-07-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: fix formataddr.

	* mh/mh_fmtgram.y (emit_funcall): Emit mhop_movs acc, reg if
	MHA_ACC flag is set.
	* mh/mh_format.c (mh_fvm_run): Clear all registers.
	(builtin_formataddr): Get previously accumulated addresses from
	R_ACC
	(builtin_tab): Mark formataddr with MHA_ACC, remove MHA_OPTARG
	(mh_format_dump_disass): Account for the new register.
	(mh_fvm_destroy): Free all registers.
	* mh/mh_format.h: New register R_ACC. It is needed to implement
	proper formataddr and concataddr functionality. 
	* mh/tests/fmtcomp.at: Update.
	* mh/tests/fmtfunc.at: Update.

2017-07-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: fix the nodate format function.

	* mh/mh_format.c (builtin_nodate): Call mu_parse822_date_time
	directly.
	(mh_format_dump_disass): Escape literal strings on output.
	* mh/tests/fmtfunc.at: Test nodate.

2017-07-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

2017-07-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH format: fix processing of special functions: putstrf,
	putnumf, lit, and num.

	* mh/mh_fmtgram.y (node): Replace noprint with printflag.
	(escape production): Consult printflag to decide whether to amd
	how to print
	(funcall production): Rewrite logic
	(yylex_func): Make a clear distinction between literals and
	inlined ctls, which require leading whitespace, and funcalls
	and components, that don't tolerate it.
	(emit_funcall): Process special functions separately
	* mh/mh_format.c (builtin_tab): Mark lit, num, putstrf, and
	putnumf as specials.
	* mh/mh_format.h: Revamp MHA_ flags 
	* mh/tests/fmtcomp.at: Update.
	* mh/tests/fmtfunc.at: Add tests for putstrf and putnumf

2017-07-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: Fix mh_builtin field misnomer.

2017-07-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	More fixes in MH format parser.

	* mh/mh_fmtgram.y (codegen_node): Generate mhop_printlit
	instruction for fmtnode_print node with a literal or number
	argument.
	* mh/mh_format.c (mh_fvm_run): Handle mhop_printlit
	* mh/mh_format.h (mhop_printlit): New opcode.
	* mh/tests/fmtcomp.at: Update.
	* mh/tests/fmtfunc.at: Add more tests.

2017-06-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve MH format parser.

	* mh/fmtcheck.c (main): Assume -dump if no input message and no
	-disass is given.
	* mh/mh_fmtgram.y: Enable error-verbose mode
	(funcall production): Use MHA_OPTARG_NIL flag to provide 0 (or
	"") default argument.
	(yyerror): Improve location printer
	(yylex_initial): Correctly handle %%
	* mh/mh_format.c (mh_string_move): Rename to mh_string_copy
	(builtin_msg, builtin_cur): Try to obtain message number only
	if msgno is 0.
	(builtin_tab): Fix definitions of comp, lit, and num
	(mh_format_dump_disass): Print width.
	* mh/mh_format.h (MHA_OPTARG_NIL): New flag. 
	* mh/tests/fmtcomp.at: New file.
	* mh/tests/fmtfunc.at: New file.
	* mh/tests/Makefile.am: Add new files.
	* mh/tests/testsuite.at: Likewise.
	* mh/tests/atlocal.in (MHETCDIR): New variable.
	* mh/tests/scan.at: Test external formats.

2017-06-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Introduce explicit data type for MH format virtual machine.

	* mh/mh.h (mh_fvm_t): New typedef.
	(mh_format): Remove. (mh_fvm_create,mh_fvm_destroy)
	(mh_fvm_set_output,mh_fvm_set_width)
	(mh_fvm_set_format,mh_fvm_run): New protos.
	* mh/mh_format.c: Likewise.
	* mh/mh_format.h (mh_machine): Rename to mh_fvm 
	* mh/fmtcheck.c: Rewrite using mh_fvm_ functions.
	* mh/inc.c: Likewise.
	* mh/mh_list.c (print_header_value): Likewise.
	* mh/repl.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/sortm.c: Likewise.

2017-06-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Restore version output expected by mh-e.

	* mh/mh_getopt.c (mh_version_hook): Print version in format
	expected by mh-e
	(process_std_options): Produce usual version output when
	responding to --version

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add special flag for debugging MH format parser.

	* mh/mh.h (MH_FMT_PARSE_DEBUG): New flag.
	* mh/fmtcheck.c: Pass the MH_FMT_PARSE_DEBUG flag, if required.
	* mh/mh_fmtgram.y (mh_format_debug): Remove.
	(format_parse): Enable debugging if MH_FMT_PARSE_DEBUG flag is
	set

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: minor fix in format lexer.

	* mh/mh_fmtgram.y (yylex): Don't return empty strings

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mhl format parser.

	* mh/mh_list.c: Keep track of input locations

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix wordsplit MU_WRDSF_INCREMENTAL | MU_WRDSF_NOSPLIT.

	* libmailutils/string/wordsplit.c (mu_wordsplit_process_list):
	Update wsp->ws_endp in nosplit mode
	* libmailutils/tests/wordsplit.at: Test incremental nosplit

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in libdatetime.

	* libmailutils/datetime/utcoff.c (mu_utc_offset): Correct the
	difference if computed at the break of a day.

2017-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve format parser API.

	* mh/scanfmt.c: New file.
	* mh/Makefile.am: Add scanfmt.c
	* mh/mh.h (mh_list_format): Remove extern
	(mh_format_parse): Remove proto.
	(mh_format_string_parse,mh_format_file_parse)
	(mh_scan_format): New functions.
	(mh_audit_open, mh_audit_close): Operate on mu_stream_t,
	instead of FILE*.
	* mh/mh_fmtgram.y (mh_format_string_parse)
	(mh_format_file_parse): New functions.
	* mh/mh_format.c (print_fmt_string): Make sure trailing newline
	is output, even if it is the Nth character on the line
	(N=width).
	* mh/mh_getopt.c (mh_opt_parse_formfile)
	(mh_opt_parse_format): New functions.
	* mh/mh_getopt.h (mh_opt_parse_formfile)
	(mh_opt_parse_format): New protos.
	* mh/mh_init.c (mh_list_format): Remove.
	(mh_audit_open, mh_audit_close): Operate on mu_stream_t,
	instead of FILE*. 
	* mh/fmtcheck.c: Use new format parsing API.
	* mh/inc.c: Likewise.
	* mh/mh_list.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/sortm.c: Likewise.

2017-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: Fix repl formats.

	* mh/etc/replcomps: Replace calls to %(concat)
	* mh/etc/replgroupcomps: Likewise.
	* mh/repl.c: Fix embedded format.

2017-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH format: fix location tracking and error diagnostics.

	* mh/mh_fmtgram.y: Use mu_linetrack_t to keep track of input
	location. Handle %; comments.
	* mh/mh_format.c (mh_format): Change semantics of mhop_atoi and
	mhop_itoa.
	(builtin_tab): Fix returns types of trim, date2local, and
	date2gmt.
	* mh/mh_format.h: Document changes.
	* mh/mh_init.c (mh_read_formfile): Read entire file.

2017-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix mu_diag_at_locus_range and mu_vdiag_at_locus_range.

	* libmailutils/diag/diag.c (mu_vdiag_at_locus_range): Reset
	stream mode.

2017-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further work on format vm.

	* mh/mh.h (mh_format): Change signature.
	(MH_FMT_FORCENL): New define.
	* mh/mh_format.h (MHA_OPT_CLEAR): Remove.
	(MHA_LITERAL,MHA_VOID): New flags.
	(mh_machine) <flags>: New member.
	* mh/mh_fmtgram.y (funcall production): Fix argument
	interpretation
	(else_part production): Allow for empty expression.
	(token_function): Use MU_CTYPE_IDENT instead of the more
	restrictive MU_CTYPE_ALPHA.
	* mh/mh_format.c (node_free): Accept NULL as argument
	(emit_funcall): Assign literal arguments to R_ARG registers
	(codegen_node): Fix coding the mhop_setn instruction. Clear
	both str and reg if the ELSE part of a conditional is empty.
	(mh_string_load): Fix size computation.
	(mh_string_move): Don't clear the source register.
	(mh_format): Reorder parameters, pass flags as 6th parameter.
	Emit final newline if MH_FMT_FORCENL is set, unless the last
	character output is newline.
	(mh_format_str): Rewrite function.
	(builtin_lit): Implement
	(builtin_friendly): Fix register assignment
	(builtin_addr): Pass R_ARG to R_REG verbatim, if it cannot be
	parsed as a RFC822 address.
	(builtin_decode): Don't clear str reg.
	(builtin_concat): Remove. The implementation contradicts the
	principles of the format VM; besides, the same functionality
	could be easily achieved by using ctls
	(builtin_tab): Put additional flags 
	* mh/fmtcheck.c (run): Update call to mh_format
	* mh/inc.c (list_message): Likewise. Emit warning about
	not-implemented audit feature.
	* mh/mh_list.c (_destroy_value): Remove spurious call to
	free().
	* mh/repl.c: Fix calls to mh_format and mh_format_parse.
	* mh/scan.c: Likewise.
	* mh/sortm.c: Likewise.

2017-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve cctype API.

	* include/mailutils/cctype.h (MU_CTYPE_IDENT)
	(MU_CTYPE_HEADR): New character classes.
	(mu_isident,mu_isheadr): New macros.
	* libmailutils/string/muctype.c: Mark valid identifier and
	header constituents as such.

2017-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix premature push.

2017-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Start rewriting MH format functions.

	* mh/fmtcheck.c: New option -disassemble
	* mh/mh.h: Move format-related declarations to mh_format.h
	(mh_format_parse): Change signature.
	(mh_format): Change signature. (mh_format_dump_code)
	(mh_format_dump_disass): New protos.
	(mh_decode_2047): Change signature.
	* mh/mh_fmtgram.y: Rewrite from scratch. First, build a parse
	tree, then use it to generate code.
	* mh/mh_format.c: Rewrite from scratch.
	* mh/mh_format.h: Move format-related declarations from mh.h
	* mh/mh_init.c (mh_decode_2047): Text is const.
	* mh/mh_list.c: Fix calls to mh_format_parse and related
	objects.

2017-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Start rewriting MH format functions.

	* mh/fmtcheck.c: New option -disassemble
	* mh/mh.h: Move format-related declarations to mh_format.h
	(mh_format_parse): Change signature.
	(mh_format): Change signature. (mh_format_dump_code)
	(mh_format_dump_disass): New protos.
	(mh_decode_2047): Change signature.
	* mh/mh_fmtgram.y: Rewrite from scratch. First, build a parse
	tree, then use it to generate code.
	* mh/mh_format.c: Rewrite from scratch.
	* mh/mh_format.h: Move format-related declarations from mh.h
	* mh/mh_init.c (mh_decode_2047): Text is const.
	* mh/mh_list.c: Fix calls to mh_format_parse and related
	objects.

2017-06-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: determine output width automatically.

	* mh/fmtcheck.c: Take file name as optional argument. Run
	format on it, if supplied
	* mh/mh.h (mh_width): New proto.
	* mh/inc.c: Don't initialize width.
	* mh/mh_format.c (mh_format): Use mh_width, if width is 0.
	* mh/mh_list.c (mhl_format_run): Use mh_width, if width is 0.
	* mh/mh_init.c (mh_width): New function.
	* mh/repl.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/sortm.c: Likewise. New option -width

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revert previous commit.  Require gettext 0.19.

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove gettext version requirement.

2017-06-20  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.2.93.

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rework emitting source locations in sieve code.

	* include/mailutils/locus.h (mu_locus_point_eq): New function.
	* libmu_sieve/prog.c (mu_i_sv_code): Emit the
	_mu_i_sv_instr_locus if locus changed.
	(mu_i_sv_locus): Raise the changeloc flag and set the locus,
	instead of immediately emitting location change code.
	* libmu_sieve/runtime.c (_mu_i_sv_instr_locus): New function.
	(_mu_i_sv_instr_source,_mu_i_sv_instr_line)
	(_mu_i_sv_instr_col): Remove.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine) <changeloc>: New
	member.

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in sieve library.

	* libmu_sieve/sieve-gram.y: Add missing assignment to $$ in
	testlist production. This fixes improper handling of anyof and
	allof

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Commit missing file.

2017-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	API for formatting message sets on output.

	* libmailutils/msgset/print.c (mu_msgset_formats): New global.
	(mu_stream_msgset_format): New function.
	* include/mailutils/msgset.h (mu_msgset_format): New struct.
	(mu_msgset_fmt_imap, mu_msgset_fmt_mh): New defines.
	(MU_MSGSET_IGNORE_TRANSERR): New flag
	(mu_msgset_copy, mu_msgset_translate): New protos.
	(mu_stream_msgset_format, mu_msgset_imap_print): New protos.
	(mu_msgset_print): Deprecate.
	* libmailutils/imapio/sendmsgset.c: Use mu_msgset_imap_print
	instead of mu_msgset_print.
	* mu/libexec/imap.c: Likewise.
	* libmailutils/msgset/Makefile.am: Add copy.c
	* libmailutils/msgset/add.c (mu_msgset_add_range): Translate if
	message set mode doesn't match the requested one.
	* libmailutils/msgset/sub.c (mu_msgset_sub_range): Likewise.
	* libmailutils/msgset/trans.c (_mu_msgset_translate_pair): Act
	according to the mode argument.
	(mu_msgset_translate): New function.
	* libmailutils/tests/msgset.c: New option -mh
	* mh/mh_sequence.c (write_sequence): Rewrite.
	* testsuite/msgset.c: Optionally translate uids to msgnums and
	vice-versa.

2017-06-18  Sergey Poznyakoff  <gray@gnu.org>

	refile: eliminate refiled messages from all sequences.

	* mh/Makefile.am: Add seqelim.c
	* mh/mh.h (mh_sequences_elim): New proto.
	* mh/seqelim.c: New file.
	* mh/refile.c (main): Fixup sequences after refiling.
	* mh/rmm.c: Fixup sequences using mh_sequences_elim

2017-06-18  Sergey Poznyakoff  <gray@gnu.org>

	linetrack: handle #line directives without file name.

	* include/mailutils/diag.h (mu_vdiag_at_locus_range): New
	proto.
	* libmailutils/locus/linetrack.c (mu_linetrack_origin): accept
	locus point with mu_file==NULL. Reuse current file name in this
	case. This is to simplify handling of #line directives without
	file name.
	* libmailutils/tests/linetrack.c: Implement #line directive.
	* libmailutils/tests/linetrack.at: Add new test.

2017-06-18  Sergey Poznyakoff  <gray@gnu.org>

	Improve line tracker.

	The new version is able to hold input history from several
	source lines, which makes it easier to implement #line
	directives in lexers.

	* include/mailutils/locus.h (mu_linetrack_stat): Remove
	start_line
	(mu_linetrack_origin): New proto.
	* libmailutils/locus/linetrack.c: Improve indexing. Keep track
	of several input files.
	* libmailutils/tests/linetrack.at: Add new tests.
	* libmailutils/tests/linetrack.c: Improve command set. 
	* mimeview/grammar.y (make_node): Initialize locus

2017-06-17  Sergey Poznyakoff  <gray@gnu.org>

	Minor change in the testsuite.

	* mh/tests/send.at: Make expected text version-independent

2017-06-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.2.92.

2017-06-15  Sergey Poznyakoff  <gray@gnu.org>

	Make sure all loci are properly initialized before first use.

	Clean up semantics of initializers. Each locus type can be
	initialized either statically (by assigning the
	MU_LOCUS_*_INITIALIZER macro), or dynamically (by calling
	mu_locus_*_init function). Whatever method is used, it is
	important that it be initialized prior to using any other
	mu_locus_* function.

	* include/mailutils/locus.h (mu_locus_point_init): Takes single
	argument. Returns nothing.
	(mu_locus_range_init): New proto.
	* libmailutils/locus/locus.c (mu_locus_point_init): Rewrite.
	(mu_locus_range_init): New function.
	* libmailutils/cfg/parser.y (mu_cfg_alloc_node): Initialize
	locus.
	* libmailutils/tests/logstr.c: Fix printf argument types.
	* libmu_sieve/extensions/moderator.c
	(moderator_filter_message): Initialize locus.
	* libmu_sieve/sieve-gram.y (node_alloc): Likewise.
	* mu/libexec/logger.c (parse_locus_point, set_locus): Likewise.

2017-06-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix id reference counting.

	* include/mailutils/locus.h: Add copyleft.
	(mu_ident_stat): New proto.
	* include/mailutils/types.hin (mu_locus_DEPRECATED): Update
	commit. Include link to the wiki article.
	* include/mailutils/yyloc.h: Add copyleft.
	* libmailutils/locus/ident.c (mu_ident_stat): New function.
	* libmailutils/locus/locus.c (mu_locus_point_init)
	(mu_locus_point_copy): Don't touch destination unless setting
	mu_file member succeeds.
	(mu_locus_range_copy): deinitialize dest before assignment.
	* libmailutils/stream/logstream.c (_log_write): Use
	mu_locus_range_copy to save locus.
	(mu_ioctl_logstream_get_locus_deprecated)
	(mu_ioctl_logstream_set_locus_deprecated): Include link to the
	wiki article.
	* libmailutils/tests/linetrack.c (main): Destroy tracker before
	exiting.
	* libmailutils/tests/logstr.c: Make it possible to run selected
	tests.

2017-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Require bison and flex.

	These are needed only during development cycle, as the created
	sources are included in the tarball.

	* am/bison.m4: New file.
	* am/flex.m4: New file.
	* configure.ac: Use MU_PROG_BISON and MU_PROG_FLEX
	* mu-aux/gylwrap: Drop support for alternative command line
	syntax and the --stdout option.

2017-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide backward compatibility layer for deprecated functions.

	* include/mailutils/sieve.h (mu_sieve_compile_text): New proto.
	(mu_sieve_compile_buffer): Backward-compatible proto.
	* include/mailutils/stream.h
	((MU_IOCTL_LOGSTREAM_GET_LOCUS_DEPRECATED)
	(MU_IOCTL_LOGSTREAM_SET_LOCUS_DEPRECATED): New defines.
	(MU_IOCTL_LOGSTREAM_GET_LOCUS)
	(MU_IOCTL_LOGSTREAM_SET_LOCUS): Use external functions to make
	sure any references to these are marked as deprecated.
	* include/mailutils/types.hin (mu_locus_DEPRECATED): New
	struct.
	(mu_locus): Define to mu_locus_DEPRECATED
	* libmailutils/stream/logstream.c (_log_ctl): Handle the
	deprecated ctls.
	* libmu_sieve/extensions/moderator.c
	(moderator_filter_message): Use mu_sieve_compile_text.
	* libmu_sieve/sieve-gram.y (mu_sieve_compile_buffer): Rename to
	mu_sieve_compile_text. Re-introduce it as a
	backward-compatibility API.
	* sieve/sieve.c: Call mu_sieve_compile_text instead of
	mu_sieve_compile_buffer.

2017-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Lex-related fixes.

	* mu-aux/gylwrap (@yysym): Add more symbols from lex.
	* mh/mh_alias_lex.l (mh_alias_read): Return meaningful value.

2017-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_sieve/sieve-lex.l: Allocate new ctx structure (restore
	accidentally deleted file.
	* libmailutils/locus/debug.c: Add missing copyleft.
	* libmailutils/locus/genprloc.c: Likewise.
	* libmailutils/locus/ident.c: Likewise.
	* libmailutils/locus/linetrack.c: Likewise.
	* libmailutils/locus/locus.c: Likewise.
	* mu-aux/gencl: Likewise.
	* mu-aux/gitinfo: Likewise.
	* mu-aux/gylwrap: Likewise.

2017-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch mh_aliases to line tracker.

	* mh/mh.h (ali_parse_error): Remove.
	* mh/mh_alias_gram.y: Simplify parser. Use location tracking.
	* mh/mh_alias_lex.l: Switch to mu_linetrack facility
	* mh/tests/ali.at: Update expected location.

2017-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Try to display exact error locations in Sieve diagnostics.

	* include/mailutils/sieve.h (mu_sieve_value_t)<locus>: New
	field.
	* libmu_sieve/util.c (mu_sieve_value_create): Take a pointer to
	mu_locus_range. Use it to initialize the locus field.
	* libmu_sieve/sieve-gram.y: Pass loci in calls to
	mu_sieve_value_create.
	* libmu_sieve/actions.c: Use the most specific locus when
	displaying the message.
	* libmu_sieve/comparator.c: Likewise.
	* libmu_sieve/prog.c: Likewise.
	* libmu_sieve/variables.c: Likewise.
	* sieve/tests/i-numeric.at: Update the expected error location.

2017-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite Makefile rules for lex and bison.

	The aim is to get rid of the explicit rules and use the
	Automake framework as much as possible, without hurting the
	flexibility. To this effect, the gylwrap tool is rewritten from
	scratch (in Perl). In compatibility mode it takes the same
	arguments as the standard ylwrap. Additional configuration is
	supplied in the configuration file gylwrap.conf, located in the
	directory where the input file resides.

	* mu-aux/gylwrap: Rewrite from scratch.
	* configure.ac (MU_YLWRAP): New subst variable.
	* libmailutils/base/.gitignore: Update.
	* libmailutils/base/Makefile.am: Update.
	* libmailutils/base/gylwrap.conf: New file.
	* libmailutils/cfg/.gitignore: Update.
	* libmailutils/cfg/Makefile.am: Use new YLWRAP
	* libmailutils/cfg/cfg.h: Remove.
	* libmailutils/cfg/gylwrap.conf: New file.
	* libmailutils/cfg/lexer.l: Include mailutils/yyloc.h directly.
	* libmailutils/cfg/parser.y: Likewise.
	* libmu_sieve/Makefile.am: Use new YLWRAP
	* libmu_sieve/gylwrap.conf: New file.
	* libmu_sieve/sieve.y: Rename to libmu_sieve/sieve-gram.y
	* libmu_sieve/sieve.l: Rename to libmu_sieve/sieve-lex.l
	* mail/Makefile.am: Use new YLWRAP
	* mh/.gitignore: Update.
	* mh/Makefile.am: Use new YLWRAP
	* mh/gylwrap.conf: New file.
	* mh/mh_alias.y: Rename to mh/mh_alias_gram.y
	* mh/mh_alias.l: Rename to mh/mh_alias_lex.l
	* mh/pick.y: Rename to mh/pick-gram.y
	* mimeview/.gitignore: Update.
	* mimeview/Makefile.am: Use new YLWRAP
	* mimeview/mimetypes.y: Rename to mimeview/grammar.y
	* mimeview/gylwrap.conf: New file.
	* mimeview/mimetypes.l: Rename to mimeview/lexer.l
	* po/POTFILES.in: Update

2017-06-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch to new locus types.

	* include/mailutils/types.hin (mu_locus): Remove. 
	* include/mailutils/diag.h (mu_diag_at_locus): Remove.
	(mu_diag_at_locus_point,mu_diag_at_locus_range): New protos.
	* include/mailutils/mailutils.h: Include locus.h 
	* include/mailutils/stream.h (MU_IOCTL_LOGSTREAM_GET_LOCUS)
	(MU_IOCTL_LOGSTREAM_SET_LOCUS): Remove.
	* libmailutils/stream/logstream.c (_log_ctl): Reflect this.
	* libmailutils/tests/logstr.at: Remove the related test.
	* libmailutils/tests/logstr.c: Ditto. 
	* libmailutils/cfg/Makefile.am: Add new header.
	* libmailutils/cfg/cfg.h: New file.
	* libmailutils/cfg/format.c: Use mu_locus_range
	* libmailutils/cfg/lexer.l: Use the mu_linetrack facility
	* libmailutils/cfg/parser.y: Likewise.
	* libmailutils/diag/diag.c (mu_diag_at_locus): Remove.
	(mu_diag_at_locus_point,mu_diag_at_locus_range): New protos. 
	* comsat/action.c: Use mu_locus_point and mu_locus_range
	instead of the removed mu_locus.
	* include/mailutils/auth.h: Likewise.
	* include/mailutils/cfg.h: Likewise.
	* include/mailutils/sieve.h: Likewise.
	* libmailutils/base/wicket.c: Likewise.
	* libmailutils/tests/wicket.c: Likewise.
	* libmu_auth/radius.c: Likewise.
	* libmu_sieve/actions.c: Likewise.
	* libmu_sieve/comparator.c: Likewise.
	* libmu_sieve/extensions/moderator.c: Likewise.
	* libmu_sieve/mem.c: Likewise.
	* libmu_sieve/prog.c: Likewise.
	* libmu_sieve/require.c: Likewise.
	* libmu_sieve/runtime.c: Likewise.
	* libmu_sieve/sieve-priv.h: Likewise.
	* libmu_sieve/sieve.l: Use the mu_linetrack facility.
	* libmu_sieve/sieve.y: Likewise.
	* libmu_sieve/util.c: Use mu_locus_point and mu_locus_range
	instead of the removed mu_locus
	* libmu_sieve/variables.c: Likewise.
	* mail/source.c: Likewise.
	* mu/libexec/dbm.c: Likewise.
	* mu/libexec/logger.c: Likewise.
	* mu/libexec/wicket.c: Likewise.
	* sieve/sieve.c: Likewise.
	* sieve/tests/i-numeric.at: Update expected locations

2017-06-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve linetrack interface.

	* include/mailutils/locus.h (mu_linetrack_rebase): New proto.
	* libmailutils/locus/linetrack.c (mu_linetrack_rebase): New
	function.
	* libmailutils/diag/diag.c (mu_diag_at_locus_range): New
	function.

2017-06-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch mimeview to new locus and linetracker.

	* include/mailutils/locus.h (mu_stream_print_locus_point): New
	proto.
	(mu_locus_range_copy): New proto.
	* include/mailutils/yyloc.h (mu_file_print_locus_point)
	(mu_file_print_locus_range): New protos.
	(YY_LOCATION_PRINT): Redo using mu_file_print_locus_range.
	* libmailutils/locus/filprloc.c: New file.
	* libmailutils/locus/genprloc.c: New file.
	* libmailutils/locus/strprloc.c: New file.
	* libmailutils/locus/Makefile.am: Add new files.
	* libmailutils/locus/debug.c (mu_stream_print_locus_range):
	Remove. Declared elsewhere.
	* libmailutils/locus/linetrack.c: use mu_locus_point_set_file,
	instead of mu_locus_point_init.
	* libmailutils/locus/locus.c: Likewise. (mu_locus_range_copy)P:
	New function.
	* mimeview/mimetypes.l: Provide rule for \n in ARGSTRING Always
	print diagnostics before returning BOGUS
	(lex_next_rule): Rewrite. Print verbose diagnostics if
	app.trace6 is set.
	(mimetypes_close): Deinitialize yylloc.
	* mimeview/mimetypes.y: Catch the BOGUS token. Adjust conflict
	expectation. Properly reference assigned loci.
	(mimetypes_parse): Return 1 if any errors detected.
	* mimeview/mimeview.c: Use debug category app instead of mime.
	* mimeview/tests/testsuite.at: Add new tests.
	* libmailutils/stream/logstream.c (_log_done): Deinitialize
	locus range.

2017-06-12  Sergey Poznyakoff  <gray@gnu.org>

	Start switching lexers to the new line tracker facility.

	* include/mailutils/locus.h (MU_LOCUS_POINT_INITIALIZER): New
	define
	(MU_LOCUS_RANGE_INITIALIZER): New define
	(mu_locus_point_set_file, mu_locus_point_init)
	(mu_locus_point_deinit, mu_locus_point_copy)
	(mu_locus_range_deinit): New protos
	* libmailutils/locus/locus.c: New file.
	* libmailutils/locus/Makefile.am: Add new file.
	* libmailutils/locus/linetrack.c (mu_linetrack_at_bol): New
	function.
	(mu_linetrack_locus): New function.
	(mu_linetrack_advance): Use mu_locus_point_set_file to set the
	mu_file field.
	* libmailutils/tests/linetrack.c: Initialize and deinitialize
	locus range.
	* mimeview/mimetypes.l: switch to line tracker
	* mimeview/mimeview.h: Use defines from yyloc.h

2017-06-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix the -nodraftfolder and -nowhatnowproc options.

	The commit 744c4a9c didn't take into account the -nodraftfolder
	and -nowhatnowproc options, which can be used to cancel the
	effect of the corresponding facilities. This commit fixes it.

	* mh/mh_getopt.c (mh_getopt_ext): New function.
	* mh/mh_getopt.h (mh_getopt_ext): New prototype.
	(mh_optinit): New struct. 
	* mh/tests/comp.at: Test the use of Draft-Folder
	* mh/tests/forw.at: Likewise.
	* mh/tests/repl.at: Likewise. 
	* mh/comp.c (main): use mh_getopt_ext to properly process
	draftfolder and whatnowproc.
	* mh/forw.c: Likewise.
	* mh/repl.c: Likewise. 
	* mh/mh.h (mh_whom): Remove.
	(mh_whom_header, mh_whom_file, mh_whom_message): New protos.
	* mh/mh_alias.y (mh_read_aliases): Don't read aliases twice.
	* mh/mh_whatnow.c (whom): Use mh_whom_file.
	* mh/mh_whom.c (mh_whom): Rewrite and rename to mh_whom_file.
	(mh_whom_header, mh_whom_message): New functions. 
	* mh/whom.c: Use mh_getopt_ext. Interpret command line
	arguments, depending on whether the draftfile facility is in
	use.

2017-06-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix processing of abbreviated negated boolean options.

	It was noted that "mhn -nohead" did not suppress the output of
	headers as "mhn -noheaders" did. It turned out that the
	negation marker was overwritten while scanning options for
	possible matching alternatives. This patch fixes it.

	* libmailutils/opt/opt.c (find_long_option): Don't overwrite
	the negation attribute of the last found option. 
	* libmailutils/tests/parseopt.c: New option --headers, to test
	the fix.
	* libmailutils/tests/parseopt28.at: New testcase.
	* libmailutils/tests/Makefile.am: Add new testcase.
	* libmailutils/tests/testsuite.at: Include new testcase. 
	* libmailutils/tests/parseopt*.at: Trivial changes

2017-06-08  Sergey Poznyakoff  <gray@gnu.org>

	Re-use last invoked editor in MH whatnow.

	This fixes a bug introduced in d30e5a07

	* mh/mh.h (mh_whatnow_env) <last_ed>: New member
	* mh/mh_whatnow.c (_whatnow): Initialize reedit and last_ed
	members Free last_ed before returning
	(edit): Prefer wh->last_ed over wh->editor

2017-06-08  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mh_whatnow.

	* mh/mh_whatnow.c (edit): Disable command expansion in
	wordsplit. See also 491bec23.

2017-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename mu_locus_tracker to mu_linetrack.

2017-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Silence remaining *.[yl] rules in Makefiles.

2017-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Include new headers to the distribution.

2017-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve locus tracker; provide a testsuite.

	* include/mailutils/locus.h (mu_locus_track_stat): New struct.
	(mu_locus_tracker_stat): New proto.
	(mu_locus_tracker_retreat): Change return type.
	* libmailutils/locus/debug.c (mu_stream_vlprintf): Don't print
	spurious \n.
	(mu_lrange_debug): Fix incorrect call.
	* libmailutils/locus/tracker.c (mu_locus_track_create):
	Allocate storage for at least two lines of text.
	(mu_locus_tracker_stat): New function.
	(mu_locus_tracker_advance): Handle empty lines
	(mu_locus_tracker_retreat): Add error handling.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	locktrack.
	* libmailutils/tests/tracker.c: Rename to loctrack.c
	* libmailutils/tests/testsuite.at: Add new testcase.
	* libmailutils/tests/loctrack.at: New test case.

2017-06-08  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in mh_whatnow.

2017-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix logstream to support mu_locus_range.

	* include/mailutils/locus.h (mu_stream_print_locus_range)
	(mu_stream_vlprintf, mu_stream_lprintf, mu_lrange_debug): New
	protos.
	* include/mailutils/stream.h
	(MU_IOCTL_LOGSTREAM_GET_LOCUS_RANGE)
	(MU_IOCTL_LOGSTREAM_SET_LOCUS_RANGE): New ioctls.
	* include/mailutils/sys/logstream.h (_mu_log_stream): Replace
	locus with struct mu_locus_range locrange.
	* libmailutils/locus/debug.c: Rewrite.
	* libmailutils/locus/ident.c (mu_ident_ref): Accept NULL
	argument. Fix initialization.
	(mu_ident_deref): Accept NULL argument.
	* libmailutils/stream/logstream.c: Rewrite.
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/logstr.at: New testcase.
	* libmailutils/tests/logstr.c: New file.
	* libmailutils/tests/xscript.at: Minor change.
	* sieve/tests/i-numeric.at: Minor change.

2017-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix tests when logical and physical CWD differ.

	MH testsuite produced false negatives when run in a directory
	accessed by its logical name (symlink). To fix this, avoiding
	at the same time the use of non-portable "pwd -P" & "pwd -L",
	this commit adds a filter utility that replaces both logical
	and physical cwd with a dot on output. The MH testsuite is
	updated to use this utility.

	* testsuite/cwdrepl.c: New utility
	* testsuite/Makefile.am: Build cwdrepl
	* testsuite/.gitignore: Update.
	* testsuite/cwdrepl.at: New test.
	* testsuite/testsuite.at: Include new test. 
	* mh/tests/atlocal.in (PATH): Add testsuite
	(remove_curdir): Remove function.
	* mh/tests/comp.at: Use cwdrepl, fix expected output.
	* mh/tests/forw.at: Likewise.
	* mh/tests/mhn.at: Likewise.
	* mh/tests/mhpath.at: Likewise.
	* mh/tests/repl.at: Likewise.

2017-06-07  Sergey Poznyakoff  <gray@gnu.org>

	Begin implementing liblocus.

	Liblocus is a part of libmailutils that will provide functions
	for manipulating source file locations, for use in lexers,
	grammars, etc. This will expand the functionality of the
	mu_locus type and logstreams.

	* configure.ac: add libmailutils/locus/
	* include/mailutils/assoc.h (mu_assoc_install_ref2): New proto.
	* libmailutils/base/assoc.c (mu_assoc_install_ref2): New entry
	point.
	* libmailutils/base/copyfile.c (copy_regular_file): Add
	typecasts.
	* libmailutils/Makefile.am: Build liblocus
	* libmailutils/locus/Makefile.am: New file.
	* libmailutils/locus/debug.c: New file.
	* libmailutils/locus/ident.c: New file.
	* libmailutils/locus/tracker.c: New file.
	* libmailutils/tests/Makefile.am: New file.
	* libmailutils/tests/tracker.c: New file.

2017-06-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mh/mh_whatnow.c (edit): Initialize ws.ws_env

2017-06-03  Sergey Poznyakoff  <gray@gnu.org>

	mimeview: improve parser error recovery.

	* mimeview/Makefile.am: Silent rules
	* mimeview/mimetypes.l (lex_reset): Remove.
	(lex_next_rule): New function.
	* mimeview/mimetypes.y: Expect 12 shift/reduce conflicts.
	Rewrite the error rule
	(yyprint): Print TYPE token correctly
	* mimeview/mimeview.h (lex_next_rule): New proto.

2017-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh whatnow: allow for arguments in the editor profile value.

	* mh/mh_whatnow.c (edit): Make sure ed is always initialized.
	Accept command line arguments in the "editor" and "*-next"
	values.

2017-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	New wordsplit call: mu_worsplit_append.

	* include/mailutils/wordsplit.h (mu_wordsplit_append): New
	proto.
	* libmailutils/string/wordsplit.c (mu_wordsplit_append): New
	function.
	* libmailutils/tests/wordsplit.at: Two more tests cases for
	mu_wordsplit_append.
	* libmailutils/tests/wsp.c: Accept extra arguments to append
	using the new function.

2017-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise the mime.types lexer; provide the testsuite.

	* am/testsuite.m4: New file.
	* configure.ac: Use the MU_CONFIG_TESTSUITE macro.
	* mimeview/Makefile.am (SUBDIRS): Add tests
	* mimeview/mimetypes.l: Rewrite in three exclusive states.
	* mimeview/mimetypes.y: Simplify grammar.
	* mimeview/mimeview.c: New option --identify (-i).
	* mimeview/mimeview.h: Update. 
	* mimeview/tests/Makefile.am: New file.
	* mimeview/tests/atlocal.in: New file.
	* mimeview/tests/bf.c: New file.
	* mimeview/tests/testsuite.at: New file. 
	* README: Update.
	* doc/texinfo/programs.texi

2017-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mimeview/mimetypes.y (compare_bytes): Fix improper read size

2017-05-31  Sergey Poznyakoff  <gray@gnu.org>

	Fix whatnow edit command.

	In whatnow shell, edit [program [parameters]] now calls program
	with supplied parameters plus the name of the file to edit.

	* mh/mh.h (mh_whatnow_env) <reedit>: New member.
	* mh/mh_whatnow.c (edit): Rewrite.
	* mh/whatnow.c (main): Properly handle argv[1]
	* NEWS: Update.

2017-05-31  Sergey Poznyakoff  <gray@gnu.org>

	mh: check Local-Mailbox setting.

	* mh/mh_init.c (mh_my_email): If Local-Mailbox is set, use its
	value.
	* mh/tests/scan.at: Add test for Local-Mailbox.

2017-05-31  Sergey Poznyakoff  <gray@gnu.org>

	Fix MH initialization order.

	Calls to mh_global_profile_get and similar functions must
	appear only after a call to mh_getopt (more properly, after
	mh_init and mh_init2 are callead). This sequence was
	inadvertently changed by commit e267ac86, due to which comp,
	forw, repl and burst stopped reading important information from
	.mh_profile. Bug spotted by Pierre-Jean.

	* mh/burst.c: Make sure profile variables are accessed after
	the profile is read.
	* mh/comp.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/mh.h (mh_whatnow_env_from_environ): Split into two
	functions: mh_whatnow_env_from_environ_early, to be called
	before mh_getopt, and mh_whatnow_env_from_environ_late, to be
	called after it.
	* mh/whatnowenv.c: Ditto.
	* mh/whatnow.c: Call these two in the right order. 
	* THANKS: Update.

2017-05-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mimeview.

	Old short option '-t' renamed to '-f' for consistency (-f
	stands for --file in most other utilities). Thus, 'mimeview -f
	my.types' reads the file 'my.types'.

	The '-t' option is reused as a short equivalent of the new
	'--lint' option, which instructs the tool to check the syntax
	of the mime.types file and exit, ignoring any surplus command
	line arguments.

	Added support for priority and regex functions.

	Improved debugging output.

	* mimeview/mimetypes.l: Rewrite lexer in a cleaner way.
	* mimeview/mimetypes.y: Rewrite parser. Track locations. Add
	line information to nodes and rules. Improve debugging
	* mimeview/mimeview.c: Remove the debug configuration
	statement. Using debug { level } provides the same
	functionality. Use mu_debug for debugging. New option -t
	(--lint). Rename the -t short option to -f.
	* mimeview/mimeview.h: Define lexer and parser macros for
	location tracking. 
	* NEWS: Document changes to mimeview utility.
	* doc/texinfo/programs.texi: Document changes to mimeview
	utility. 
	* lib/mailcap.c: Use standart mu_debug calls for debugging.
	* lib/mailcap.h (display_stream_mailcap): Change last argument:
	take a mu_debug_handle_t
	* libmailutils/diag/debcat (app): New category.
	Application-specific debug
	* mail/decode.c (display_submessage): Change invocation of
	display_stream_mailcap.
	* mail/mailvar.c: Setting "verbose" enables app.trace7,
	unsetting it clears app.*

2017-05-26  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes in MH show.

	* mh/show.c: Set cur before returning. Allow for arguments in
	showproc settings. Move to next or prev if invoked with the
	corresponding argv[0] 
	* mh/mh.h (mh_msgset_parse): def argument is const.
	(mh_msgset_first_current, mh_msgset_first_uid): Remove proto.
	(mh_msgset_first): Change signature.
	(mh_msgset_last): New function.
	* mh/mh_msgset.c (mh_msgset_first): Return UID or message
	number depending on the value of the second parameter.
	(mh_msgset_first_current, mh_msgset_first_uid): Remove.
	(mh_msgset_last): New function. 
	* mh/anno.c: Update.
	* mh/comp.c: Update.
	* mh/folder.c: Update.
	* mh/mh_init.c: Update.
	* mh/repl.c: Update. 
	* mh/Makefile.am (install-exec-hook): Link show to prev and
	next

2017-05-26  Sergey Poznyakoff  <gray@gnu.org>

	Implement mu_msgset_first and mu_msgset_last.

	* include/mailutils/msgset.h (mu_msgset_first, mu_msgset_last):
	New prototypes.
	* libmailutils/msgset/Makefile.am: Add new files.
	* libmailutils/msgset/first.c: New file.
	* libmailutils/msgset/last.c: New file.
	* libmailutils/tests/msgset.c: New options for testing the new
	functions.
	* libmailutils/tests/msgset.at: Test new functions.

2017-04-22  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* mh/etc/Makefile.am (bindir): Override. Reported by Ken Brown
	<kbrown@cornell.edu>

2017-04-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Functions for formatting RFC-2231-compliant mail headers
	fields.

	* include/mailutils/cctype.h (MU_CTYPE_TSPEC): New class.
	Represents tspecials as per RFC 2045, section 5.1.
	(mu_istspec): New define.
	* libmailutils/string/muctype.c (mu_c_tab): Mark tspecials 
	* include/mailutils/assoc.h (mu_assoc_mark)
	(mu_assoc_sweep): New protos.
	* libmailutils/base/assoc.c (_mu_assoc_elem): New field: mark
	(mu_assoc_mark,mu_assoc_sweep): New functions. 
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	dq.c and percent.c.
	* libmailutils/filter/dq.c: New file.
	* libmailutils/filter/percent.c: New file.
	* include/mailutils/filter.h (mu_percent_filter)
	(mu_dq_filter): New externs.
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_percent_filter and mu_dq_filter. 
	* include/mailutils/mime.h (mu_mime_header_set)
	(mu_mime_header_set_w): New protos.
	* libmailutils/mime/Makefile.am (libmime_la_SOURCES): Add
	mimehdrset.c
	* libmailutils/mime/mimehdrset.c: New file.
	* libmailutils/mime/mime.c (_mime_set_content_type): For
	multipart/alternative, remove also all parameters except
	charset from the Content-Type header.
	* mail/send.c (saveatt): Remove the now unneeded conditionals.
	* libmailutils/tests/mimehdr.at: Test formatting functions. 
	* include/mailutils/stream.h (MU_IOCTL_FILTER_SET_OUTBUF_SIZE):
	New ioctl.
	* include/mailutils/sys/filter.h (_MU_FILTER_DISABLED)
	(_MU_FILTER_EOF): Remove. Use bitfields instead.
	(_mu_filter_stream): Remove fltflag. New fields: flag_disabled,
	flag_eof, outbuf_size.
	* libmailutils/stream/fltstream.c (MFB_BASE) (MFB_CURPTR,
	MFB_ENDPTR, MFB_SIZE, MFB_LEVEL) (MFB_POS, MFB_RDBYTES,
	MFB_FREESIZE)
	(MBF_CLEAR, MBF_FREE): Replace with inline functions.
	(init_iobuf): Use the outbuf_size field (unless 0) to set the
	output buffer size.
	(filter_read): Stop if on success if outbuf_size is set,
	without trying to fill the entire buffer.
	(filter_ctl): Handle MU_IOCTL_FILTER_SET_OUTBUF_SIZE. 
	* libmailutils/tests/mimehdr.c: New option -width: format and
	print the value assuming given line width.

2017-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mail/mail.h: Remove unneeded extern qualifiers.

2017-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Automatically handle native character sets on input to the mail
	utility.

	If the mime header is set, then mail will provide the missing
	'charset' parameter for each Content-Type header that begins
	with 'text/'. Its value will be determined by examining the
	'charset' mail variable. If it is set to 'auto' (the default),
	the character set will be extracted from the value of the
	LC_ALL environment variable. If it is unset, it will be deduced
	from the LANG environment variable.

	Thus, provided that LC_ALL is set correctly, the following
	setting in .mailrc is recommended to ensure that mails in
	native character sets will be processed correctly:

	 set charset=auto mime

	In most cases, it can be simplified to just 'set mime'. 
	* NEWS: Update.
	* doc/texinfo/programs.texi: Update the description of the
	charset variable.
	* mail/mail.h (util_get_charset): New proto.
	* mail/send.c (attach_set_content_type): New function.
	(attlist_add, add_body): Use attach_set_content_type to set the
	content_type field.
	* mail/util.c (util_get_charset): New function.
	(util_rfc2047_decode): Use util_get_charset.

2017-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: use mailvar_is_true to test boolean values.

2017-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	New option --mime.

	* mail/mail.c (mime_option): New variable.
	(main): assume --mime if either or both of --content-type and
	--content-encoding are set. Set the mime variable if so.
	* mail/mail.h (mailvar_is_true): New prototype.
	* mail/send.c (add_attachments): Continue if the mime variable
	is set.
	(add_body): Rewrite, treating the text read from the stdin as
	MIME part in itself.
	* mailvar.c (mailvar_tab): New variable "mime"
	(mailvar_is_true): New function. 
	* NEWS: Document --mime
	* doc/texinfo/programs.texi: Rewrite the Attachments
	subsection.

2017-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* mail/mail.c (cli_attach): Exit if unable to attach file.
	* mail/mail.h (send_attach_file): Change prototype.
	* mail/send.c (send_attach_file): Return int.
	(add_body): Honor default_content_type

2017-04-18  Sergey Poznyakoff  <gray@gnu.org>

	fix a typo.

2017-04-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix semantics of mu_header_set_value and creation of
	multipart/alternative MIME.

	Until now, mu_header_set_value called with replace=0 prepended
	the header to the header list, if a header with such name was
	already present. This has been changed. Now, if the header with
	the requested name is already present, its action is as
	follows:

	 1. If repl is 0, return MU_ERR_EXISTS
	 2. Otherwise, replace the header with the new value.

	If the header is not present, it is appended to the end of the
	header list, instead of putting it at the beginning.

	This change is incompatible and breaks the tests, that relied
	on a particular field ordering. These are fixed as well.

	The use of mu_header_set_value throughout the sources has been
	revised to ensure that single-instance headers are never added
	twice.

	This change also facilitates the second part of this commit,
	which fixes creation of the multipart/alternative message by
	the mail utility. 
	* libmailutils/mailbox/header.c (mu_header_set_value): Fix
	semantics. If the replace parameter is not set and the header
	field with the given name already exists, return MU_ERR_EXISTS
	without changing anything. If adding new header, append it to
	the end of the header list, instead of pushing it to the top. 
	* configure.ac: Raise shared library revision number. 
	* libmu_scm/mu_message.c (mu-message-set-header)
	(mu-message-set-header-fields): call mu_header_set_value
	explicitly if repl is not set.
	* libmu_sieve/extensions/moderator.c: Force replace header mode
	when needed.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* mh/mh_init.c (mh_annotate): Prepend the annotation header.
	* mh/mhn.c: Force replace header mode when needed.
	* mh/repl.c: Likewise.
	* mh/send.c: Likewise. 
	* libmailutils/tests/modmesg01.at: Change expected header
	order.
	* libmailutils/tests/modmesg03.at: Likewise.
	* mh/tests/mhn.at: Likewise.
	* mh/tests/send.at: Likewise.
	* sieve/tests/moderator.at: Likewise.
	* sieve/tests/redirect.at: Likewise.
	* sieve/tests/reject.at: Likewise.
	* sieve/tests/vacation.at: Likewise. 
	* examples/mta.c (message_finalize): Append
	X-Authentication-Warning, instead of setting it.

	Make sure Content-Disposition is not set for parts of a
	multipart/ alternative MIME message. Some mail readers
	(notably, yahoo), misinterpret it. 
	* libmailutils/mime/attachment.c (at_hdr): Use
	mu_header_set_value to set Content-Type and
	Content-Disposition.
	* libmailutils/mime/mime.c (_mime_set_content_type): If the
	content type is set to multipart/alternative, remove the
	Content-Disposition headers from the message parts. 
	* mail/send.c (saveatt): Don't set content-disposition for
	multipart/alternative, it is now done by the library.
	(add_attachments): Warn about ignored headers. Append only
	Received and X-* headers, replace others.
	(parse_headers): Append headers.
	(compose_header_set): Use mu_header_append if COMPOSE_APPEND is
	requested.
	* mail/util.c (util_header_expand): Use mu_header_append.

2017-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/assoc.c (merge_sort): Fix last argument in
	call to cmp.

2017-04-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Send multipart/alternative messages using mail.

	The new option --alternative is provided to change the content
	type of the composed message to multipart/alternative. The ~/
	escape toggles the type between multipart/mixed and
	multipart/alternative. In messages of multipart/alternative
	type, the Content-Disposition header of all attachments is
	reset to "inline".

	* libmailutils/mime/mime.c (mu_mime_create): Bugfix: honour the
	MU_MIME_MULTIPART_ALT flag.
	* mail/mail.c: New option --alternative.
	* mail/mail.h (compose_env) <attlist,mime>: New members.
	(multipart_alternative): New global.
	(send_attach_file): Change return value.
	(escape_toggle_multipart_type): New proto.
	* mail/send.c (multipart_alternative): New global. Keep the
	list of attachments in compose_env_t. Make sure it is freed
	when no longer used. Implement the ~/ escape.
	* mail/table.c: New escape ~/
	* mail/util.c: Use mu_strerror instead of strerror. 
	* NEWS: Document changes to the mail utility
	* doc/texinfo/programs.texi: Likewise.

2017-04-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite the mailutils tool.

	The subcommands are re-implemented as standalone binaries
	installed to pkglibexecdir. The main binary acts as a
	dispatcher.

	* configure.ac: Build mu/libexec/Makefile
	* include/mailutils/.gitignore: Ignore gitinfo.h 
	* include/mailutils/opt.h (mu_parseopt_help_stream_create): New
	proto.
	* libmailutils/cli/cli.c (mu_cli_ext): Honor
	MU_PARSEOPT_PROG_NAME setting.
	* libmailutils/opt/help.c (mu_parseopt_create_help_stream): New
	function. (mu_program_help,mu_program_usage)
	(mu_program_version): Use it. 
	* mu/Makefile.am: Move commands to separate executables under
	libexec.
	* mu/mu.c: Rewrite.
	* mu/dispatch.c: Remove.
	* mu/help.c: Remove.
	* mu/libexec/.gitignore: New file.
	* mu/libexec/Makefile.am: New file.
	* mu/libexec/getopt.c: New file.
	* mu/getans.c: Move to mu/libexec.
	* mu/getarg.c: Likewise.
	* mu/getyn.c: Likewise.
	* mu/util.c: Likewise.
	* mu/verbose.c: Likewise.
	* mu/shell.c: Likewise.
	* mu/mu.h: Remove.
	* mu/libexec/mu.h: New file.
	* mu/acl.c: Move to mu/libexec; Rewrite as a standalone
	program.
	* mu/cflags.c: Likewise.
	* mu/dbm.c: Likewise.
	* mu/filter.c: Likewise.
	* mu/flt2047.c: Likewise.
	* mu/imap.c: Likewise.
	* mu/info.c: Likewise.
	* mu/ldflags.c: Likewise.
	* mu/logger.c: Likewise.
	* mu/pop.c: Likewise.
	* mu/query.c: Likewise.
	* mu/send.c: Likewise.
	* mu/smtp.c: Likewise.
	* mu/stat.c: Likewise.
	* mu/wicket.c: Likewise.
	* mu/mu-setup.awk: Remove.
	* po/POTFILES.in: Update.

2017-04-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/cfg/parser.y (mu_cfg_find_node): Fix spurious
	error diagnostics when the node is not found.

2017-04-09  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.2.91.

2017-04-09  Sergey Poznyakoff  <gray@gnu.org>

	Remove the Scheme implementation of the Sieve language.

	* NEWS: Describe the change.
	* doc/texinfo/mailutils.texi: Remove description of sieve2scm
	* doc/texinfo/programs.texi: Likewise.
	* scheme/Makefile.am: Remove sieve2scm.
	* scheme/mimeheader.scm: Remove.
	* scheme/numaddr.scm: Remove.
	* scheme/redirect.scm: Remove.
	* scheme/reject.scm: Remove.
	* scheme/sieve-core.scm: Remove.
	* scheme/sieve2scm.scmi: Remove.
	* scheme/vacation.scm: Remove.

2017-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	movemail: implement --progress-meter option.

2017-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve generation of session identifiers for server programs.

	* include/mailutils/acl.h (mu_acl_set_session_id): Remove
	proto.
	* include/mailutils/server.h (mu_session_id): Remove extern.
	(mu_sid): New proto.
	* libmailutils/server/sid.c: New file.
	* libmailutils/server/Makefile.am: Add sid.c
	* libmailutils/server/ipsrv.c (mu_ip_tcp_accept)
	(mu_ip_udp_accept): Remove calls to mu_acl_set_session_id.
	(mu_ip_server_accept): Make sure output to mu_strerr is
	filtered so that session ID is prepended to each line.
	(mu_ip_server_loop): Remove.
	* libmailutils/server/msrv.c (mu_m_server_check_acl): Remove
	call to mu_acl_set_session_id.
	* libmailutils/server/server.c (mu_session_id): Remove
	variable. 
	* imap4d/imap4d.c (get_client_address, set_strerr_flt)
	(clr_strerr_flt): Remove unused functions.
	(imap4d_connection): Simplify.
	* pop3d/pop3d.c: Likewise.

2017-04-07  Sergey Poznyakoff  <gray@gnu.org>

	Fix links in HTML doc generator.

	* doc/texinfo/gendocs_template: Fix links.
	* doc/texinfo/html.init: Fix the Documentation link.

2017-04-06  Sergey Poznyakoff  <gray@gnu.org>

	Improve AM_GNU_MAILUTILS autoconf macro.

	* mu-aux/mailutils.m4: Don't use packed version representation,
	because of eventual numerical overflows. Compare versions
	number by number. Define the following additional constants:
	MAILUTILS_VERSION_MAJOR, MAILUTILS_VERSION_MINOR, and
	MAILUTILS_VERSION_PATCH.
	* NEWS: Document changes.

2017-04-06  Sergey Poznyakoff  <gray@gnu.org>

	Minor improvement in gitinfo.h production.

	* Makefile.am: Minor change.
	* include/mailutils/Makefile.am (gitinfo.h): Build only if
	$(srcdir) and $(builddir) are the same.
	* mu-aux/gitinfo.pl: Rename to mu-aux/gitinfo
	* configure.ac (GITINFO): Reflect this change
	* mu-aux/Makefile.am: Likewise.

2017-04-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Ensure stability of merge sort in assoc.

	* libmailutils/base/assoc.c (merge): Fix comparison

2017-04-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Another improvement in gencl.

	* mu-aux/gencl: New option --email.
	* Makefile.am: Simplify the ChangeLog command. Use the --email
	option.

2017-04-03  Sergey Poznyakoff  <gray@gnu.org>

	Minor improvements in gencl.

	* mu-aux/gencl: Don't use Time::ParseDate. Work over bug in
	Text::Wrap 2012.0818. New option --ignore-errors (-i). Ensure
	consistent error code.
	* Makefile.am (dist-hook): Relax checking for intermediate
	releases.

2017-04-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite gencl as an enhanced replacement of
	gitlog-to-changelog.

	* mu-aux/gencl: Rewritten as a replacement for
	gitlog-to-changelog.
	* ChangeLog.amend: More spell fixes.
	* Makefile.am: Use gencl instead of gitlog-to-changelog.
	* doc/ChangeLog.CVS: Spell checking
	* gnulib.modules: Remove gitlog-to-changelog.

2017-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Test transcript streams.

	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/xscript.at: New file.
	* libmailutils/tests/xscript.c: New file.
	* libmailutils/tests/Makefile.am: Add new files.
	* libmailutils/tests/testsuite.at: Include new testcase.

2017-03-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Tiny fix.

	* include/mailutils/debug.h (MU_ASSERT): Prefix local variable
	name with two underscores to diminish the probability of
	shadowing.

2017-03-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure ChangeLog is built by make.

	* Makefile.am: Mark ChangeLog as noinst_DATA to trigger its
	rule. Rewrite the ChangeLog rule using a wrapper over
	gitlog-to-changelog, which rewrites the file only when needed.
	(dist-hook): Fail if there are uncommitted changes.
	* mu-aux/gencl: New file. 
	* maint.mk: Remove.

2017-03-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/stream/xscript-stream.c (print_transcript):
	Print closing double-quote after user name in LOGIN statement.

2017-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve maintainer scripts.

	* Makefile.am (alpha,alphacheck): Update rules.
	* mu-aux/gitinfo.pl: Obtain more data.

2017-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2017-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in NLS code.

	* libmailutils/base/lcall.c (mu_lc_all_free): Use str->flags to
	determine what fields need to be freed.
	(mu_parse_lc_all): Force retrieving language and territory if
	charset is requested. Use this to provide a default value, in
	case charset cannot be determined. Deallocate the surplus data
	afterward
	* libmailutils/base/locale.c (mu_charset_lookup): Bugfix.
	* mail/util.c (util_rfc2047_decode): Avoid memory leak.

2017-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix imap4d testsuite.

	The tests failed if MU_DEFAULT_SCHEME were set to anything, but
	mbox.

	* imap4d/tests/atlocal.in (make_config): set
	.mailbox.mailbox-type=mbox.
	* imap4d/list.c (imap4d_list): Use %s as the format.

2017-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	More fixes to mu_cfg_field_map (see afbb33cf).

	* libmailutils/cfg/driver.c (mu_cfg_field_map): Use correct
	enumeration function depending on the element type. Return
	meaningful error.

2017-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Housekeeping: implement a tool for producing intermediate alpha
	tarballs.

	Intermediate tarballs have the same version number as initial
	alpha version, to which is appended a suffix "-N", where N is
	the number of commits between the current git HEAD and the
	original alpha release.

	Additionally, the --version (or -version, for MH) output has
	been changed to include the N and the git description (for all
	releases, but stable).

	* .gitignore: Update.
	* Makefile.am: Remove git-describe and git-describe.h goals.
	(alpha, alphacheck): Rewrite.
	* configure.ac (GITINFO): New subst variable.
	* include/mailutils/Makefile.am (gitinfo.h): New built source.
	* libmailutils/cli/cli.c: Include gitinfo.h
	(mu_version_hook): Rewrite.
	* mh/mh_getopt.c: Include gitinfo.h
	(mh_version_hook): Rewrite.
	* mu-aux/gitinfo.pl: New file.
	* mu-aux/Makefile.am (EXTRA_DIST): Add gitinfo.pl
	* mu/Makefile.am (mu-setup.c): Add dependency
	* testsuite/testsuite.inc (MUT_VERSION): Account for changes in
	version output.

2017-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix pop3d command parser (complement afda9ba4)

	* pop3d/cmd.c (command_table_head): Remove. Use command_table
	instead. All uses changed.
	* pop3d/stls.c (pop3d_stls): Fail if TLS is not requested.

2017-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	New itrctl request: mu_itrctl_count.

	* include/mailutils/iterator.h (mu_itrctl_req)
	<mu_itrctl_count>: New request type.
	* libmailutils/base/assoc.c (itrctl): Support mu_itrctl_count.
	* libmailutils/list/iterator.c (list_itrctl): Likewise.
	* libmailutils/mailbox/hdritr.c (hdr_itrctl): Likewise.
	* libmailutils/mailbox/mbxitr.c (mbx_itrctl): Likewise.
	* libmailutils/base/opool.c (opitr_itrctl): New function -
	support mu_itrctl_count.
	(mu_opool_get_iterator): Register opitr_itrctl.
	* libmailutils/diag/debug.c (list_itrctl): Return 1-based
	position indices on mu_itrctl_tell. Support mu_itrctl_count.

2017-03-19  Sergey Poznyakoff  <gray@gnu.org>

	Fix a bug in field-map handling.

	* libmailutils/cfg/driver.c (parse_mapping): Fix expected value
	type.
	* libmu_auth/sql.c (get_field): Remove left-over mu_assoc_ref
	call (see 622bc770).

2017-03-18  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite TLS support.

	The new implementation allows for per-server certificates.

	* libmu_auth/Makefile.am: Build tls support depending on the
	value of MU_COND_GNUTLS.
	* libmu_auth/notls.c: New file.
	* libmu_auth/tls.c: Rewrite.
	* libmu_auth/tlsiostr.c: New file.
	* libmu_auth/tlsvar.c: New file.
	* libmu_auth/tlsconf.c: New file. 
	* include/mailutils/sys/tls-stream.h (_mu_tls_stream): New
	members: session_type, conf, cred.
	(mu_tls_io_stream_create): New proto.
	* include/mailutils/tls.h (mu_tls_module_config): Remove
	definition.
	(mu_tls_config): New structure.
	(mu_tls_server_stream_create): Remove proto.
	(mu_tls_cert_file_checks) (mu_tls_key_file_checksr)
	(mu_tls_ca_file_checks): New globals (MU_TLS_CERT_FILE_CHECKS)
	(MU_TLS_KEY_FILE_CHECKS)
	(MU_TLS_CA_FILE_CHECKS): New defines.
	(mu_tls_stream_create): New proto.
	(mu_tls_config_status): New constants.
	(mu_tls_check_config): Remove.
	(mu_tls_config_check): New function. 
	* include/mailutils/server.h (mu_m_server_preflight_fp): New
	typedef.
	(mu_m_server_set_preflight): New proto. 
	* libmailutils/diag/debcat (tls): New category.
	* libmailutils/server/ipsrv.c (mu_ip_server_get_data): New
	function.
	* libmailutils/server/msrv.c (_mu_m_server) <preflight>: New
	method.
	(mu_m_server_set_preflight): New function.
	(mu_m_server_destroy): Destroy the srvlist.
	(open_connection): New function.
	(mu_m_server_run): Remove from srvlist only those servers that
	failed to open. Run preflight check, if registered. 
	* include/mailutils/cfg.h (mu_cfg_section): New member: data.
	* libmailutils/cfg/driver.c (dup_container): Copy the "data"
	pointer.
	(mu_cfg_section_add_params): Preserve original pointer and
	offset when necessary.
	* libmailutils/cfg/parser.y (_scan_tree_helper): Use the
	section data pointer (if set) as data target. 
	* configure.ac (MU_COND_GNUTLS): New conditional.
	* imap4d/commands.c: Remove #ifdef WITH_TLS preprocessor
	conditional.
	* imap4d/imap4d.c (tls_mode): Remove variable.
	(imap4d_srv_config): Move definition to the header file. Remove
	#ifdef WITH_TLS preprocessor conditionals. Rename the tls
	configuration statement to tls-mode. Add new subsection
	.server.tls; Remove the legacy tls-required configuration
	statement.
	(imap4d_mainloop): Change signature: take a pointer to the
	struct imap4d_srv_config as the 3rd argument, Use the
	cfg->tls_mode member to decide on TLS state.
	(main): Call mu_tls_cfg_init. Install server preflight checker.
	* imap4d/imap4d.h: Remove #ifdef WITH_TLS preprocessor
	conditionals.
	(imap4d_srv_config): Moved from imap4d.c New member: tls_conf
	(imap4d_session): New member: tls_conf
	(global_tls_conf): New global.
	(io_setio, imap4d_init_tls_server): Change prototypes.
	* imap4d/io.c (io_setio): Change signature: take a pointer to
	the struct mu_tls_config as the 3rd argument. Rewrite TLS
	support.
	(imap4d_init_tls_server): Take a pointer to the struct
	mu_tls_config.
	* imap4d/starttls.c (tls_available, tls_done): Remove globals.
	(global_tls_conf): New global.
	(imap4d_starttls): Keep TLS state in the session.
	(tls_encryption_on): Likewise.
	(starttls_init): Rewrite as a mserver preflight check function. 
	* pop3d/capa.c: Remove #ifdef WITH_TLS preprocessor
	conditional.
	(capa_stls): Rewrite.
	* pop3d/cmd.c (global_tls_conf): New global.
	(stls_preflight): New function.
	(pop3d_error_string): Rewrite using char ** array.
	* pop3d/extra.c (pop3d_setio): Take a pointer to struct
	mu_tls_config as the 3rd argument. Decide on TLS using it.
	(pop3d_init_tls_server): Take a pointer to struct
	mu_tls_config.
	* pop3d/pop3d.c: Rename the tls configuration statement to
	tls-mode. Add new subsection .server.tls; Remove the legacy
	tls-required configuration statement. (pop3d_mainloop) Take a
	pointer to struct mu_tls_config as the 3rd argument. Decide on
	TLS using it.
	(main): Call mu_tls_cfg_init. Install server preflight check.
	* pop3d/pop3d.h (pop3d_session): New member tls_conf.
	(pop3d_srv_config): New definition.
	(global_tls_conf): New extern.
	* pop3d/stls.c: Rewrite TLS support. 
	* NEWS: Document new features.
	* configure.ac: Version 3.2.90.
	* doc/texinfo/programs.texi: Update.

2017-03-11  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

2017-03-11  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.2.

2017-03-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix NULL dereference.

	* libmailutils/mime/mimehdr.c (mu_mime_param_free): Check if
	argument is NULL.

2017-02-18  Sergey Poznyakoff  <gray@gnu.org>

	'Q' encoding: encode question mark properly; limit length of
	encoded words.

	* libmailutils/base/rfc2047.c (mu_rfc2047_encode): Limit length
	of encoded word to 75 bytes.
	* libmailutils/filter/qpflt.c: Treat '?' as special character
	in Q encoder.
	* libmailutils/tests/encode2047.at: Add more tests.
	* libmailutils/tests/encode2047.c: Use mailutils string I/O

2017-02-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leak in mu_stream_destroy.

	* libmailutils/stream/stream.c (mu_stream_destroy): Free buffer
	space.
	(mu_stream_set_buffer,mu_stream_getdelim): Use stdlib
	allocation functions instead of mu wrappers.

2017-02-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of ambiguous command line options.

	The approach used so far failed to recognize ambiguous
	abbreviations located in different groups. It also didn't work
	when MU_PARSEOPT_NO_SORT was requested. This commit fixes it by
	keeping an additional array of indices to long options. The
	array is sorted so that its elements produce a
	lexicographically ascending list of long options.

	* include/mailutils/opt.h (mu_parseopt): New members
	po_longcnt, po_longidx keep a sorted array of indices to
	po_optv with long options.
	* libmailutils/opt/opt.c (find_long_option): Iterate over
	po_longidx.
	(parseopt_init): Initialize and sort po_longidx.
	(mu_parseopt_free): Free po_longidx. 
	* libmailutils/tests/parseopt.c: Add three more potentially
	ambiguous options
	* libmailutils/tests/parseopt26.at: New testcase.
	* libmailutils/tests/parseopt27.at: New testcase.
	* libmailutils/tests/Makefile.am: Add new testcases.
	* libmailutils/tests/testsuite.at: Likewise.

2017-02-05  Sergey Poznyakoff  <gray@gnu.org>

	Remove unneeded file.

	* sieve/examples/.gitignore: Remove.

2017-01-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: add a locus indicating end of input.

	The new node type mu_sieve_node_end is introduced to explicitly
	mark end of the parse tree. When generating code, this node
	triggers insertion of _mu_i_sv_instr_source/_mu_i_sv_instr_line
	before the end of code marker. This, in turn, ensures that a
	correct location is reported for implicit keep, if logging is
	enabled.

	* libmu_sieve/sieve-priv.h (mu_sieve_node_end): New node type.
	(mu_sieve_node_list): New type (from struct node_list in
	sieve.y)
	* libmu_sieve/sieve.y (node_list_add): New function.
	(input production): Add mu_sieve_node_end at the end of the
	tree.

2017-01-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Log sieve source location in maidag.

	* lib/sieve.c (_sieve_action_log): Log source location

2017-01-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix sieve logging in maidag.

	* maidag/maidag.c (sieve_debug_flags)
	(sieve_enable_log): Remove.
	* maidag/script.c (apply_script): Check for
	mu_script_sieve_log.

2017-01-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for "INBOX." namespace.

	* imap4d/imap4d.h (io_send_astring): New proto.
	* imap4d/io.c (io_send_astring): New function.
	* imap4d/list.c (list_fun): Use io_send_astring.
	(list_ref): Special handling for empty wcard
	(imap4d_list): Remove special handling for empty wcard and
	INBOX. Leave that to list_ref. This makes it possible to
	declare namespaces like "INBOX." ("." being the delimiter).
	* imap4d/lsub.c (imap4d_lsub): Use io_send_astring.
	* imap4d/namespace.c (namespace_translate_name): Check for
	declared namespace first.

2017-01-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2017-01-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve description of variables useful in namespace directory
	statements.

2017-01-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* imap4d/list.c (list_ref): Use mu_imap_wildmatch_ci to check
	for a request matching INBOX.
	* include/mailutils/imaputil.h (mu_imap_wildmatch_ci): New
	prototype.
	* libmailutils/imapio/wildmatch.c (mu_imap_wildmatch_ci): New
	function.

2017-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvements of IMAP LIST functionality.

	* imap4d/list.c (list_fun): Ignore names that contain delimiter
	as part of their name (untranslatable names); Don't insert
	spurious separators.
	(list_ref): Make sure a pathnames are properly separated from
	namespace prefixes.
	(imap4d_list): Fix eventual use of uninitialized pfx.
	* imap4d/namespace.c (prefix_translate_name): Allow for
	NS_OTHER prefixes ending with a delimiter.
	(extract_username): Return NULL if prefix without trailing
	delimiter was used.
	* imap4d/tests/atlocal.in (make_config): Add more namespace
	prefixes.
	* imap4d/tests/list.at: Add more tests.
	* libmailutils/string/expvar.c (exp_getvar): Return
	MU_WRDSE_UNDEF if the variable is defined, but has NULL value.

2017-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: forbid to treat namespace root as a mailbox.

	* imap4d/namespace.c (namespace_get_name): Return NULL if name
	is the same as the returned prefix

2017-01-24  Sergey Poznyakoff  <gray@gnu.org>

	Simplify the namespace interface.

	* imap4d/namespace.c (prefix_translate_name): Remove the url
	parameter. All uses changed.
	(namespace_translate_name): Likewise.
	(i_translate_name): Rename to translate_name. Remove the url
	and ns parameters. All uses changed.
	* imap4d/imap4d.h (namespace_translate_name): Change signature.

2017-01-24  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: uniformly use mailbox name and record for opening
	mailboxes.

	This avoids problems with escaping pathnames that contain
	characters specific for URLs

	* imap4d/select.c (imap4d_select0): Don't use mailbox URL.
	* lib/manlock.c (manlock_open_mailbox_from_record): New
	function.
	* lib/muaux.h (manlock_open_mailbox_from_record): New proto.

2017-01-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory allocation.

2017-01-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: fix list.

	* imap4d/list.c (refinfo) <refptr>: const pointer.
	(list_fun): Don't insert spurious delimiter between the prefix
	and the value.
	(list_ref): New static function. Actually list a normalized
	ref/wcard pair.
	(imap4d_list): Correctly handle wildcard part starting with
	namespace prefixes
	* imap4d/namespace.c (prefix_translate_name): If a prefix ends
	with a delimiter, allow its use without trailing delimiter in
	ref. E.g. 
	 LIST "~" "%"

	for prefix "~/" is quite OK.
	* imap4d/tests/atlocal.in: Fix prefix declaration.

2017-01-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix listing names with escapable characters.

	* imap4d/io.c (io_send_qstring): Fix condition
	* imap4d/list.c (list_fun): Use io_send_qstring to print names.
	* imap4d/lsub.c (imap4d_lsub): Likewise.

2017-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* imap4d/namespace.c (namespace_init): Provide record for
	default "" prefix.

2017-01-22  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: revamp namespace translation.

	Instead of translating names to full mailbox URLs, translate
	them to the filesystem pathname and record (mu_record_t) that
	should be used when creating the mailbox. Never use
	mu_mailbox_create_default.

	This patch also fixes memory leaks in some functions (the
	return value from namespace_get_url was never freed).

	* imap4d/imap4d.h (namespace_get_url): Remove.
	(namespace_get_name): New proto.
	* imap4d/namespace.c (namespace_init): Always initialize the
	pfx->record member. This requires that the default record be
	initialized.
	(namespace_get_url): Remove.
	(namespace_get_name): New function. 
	* imap4d/create.c: Use namespace_get_name and
	mu_mailbox_create_from_record to create mailboxes. Fix folder
	creation.
	* imap4d/append.c: Use namespace_get_name and
	mu_mailbox_create_from_record to create mailboxes.
	* imap4d/copy.c: Likewise.
	* imap4d/delete.c: Likewise.
	* imap4d/quota.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/status.c: Likewise.

2017-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in IMAP LIST.

	* imap4d/list.c (list_fun): List matching directories.

2017-01-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmu_auth/ldap.c (_construct_attr_array)
	(_mu_entry_to_auth_data): Fix types of iterator return values.

2017-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update README-alpha.

2017-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update documentation.  Use the namespace name "personal",
	instead of "private".

2017-01-19  Sergey Poznyakoff  <gray@gnu.org>

	Add tests for mu_str_expand and mu_str_vexpand functions.

	* libmailutils/string/expvar.c (exp_shell): Fix out-of-buffer
	read when used without arguments.
	(mu_str_expand): Improve error handling.
	* libmailutils/tests/testsuite.at (MU_GENERIC_TEST_CMD): New
	macro. Include exp.at
	* libmailutils/tests/vexp.c: New file.
	* libmailutils/tests/Makefile.am: Build vexp. Add exp.at
	* libmailutils/tests/exp.at: New file.

2017-01-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide functions for expanding string using mu_assoc_t table.

	The functions are used wherever variables can be expected, most
	notably in configuration statements, such as ldap, namespace
	(imap4d), etc. Apart from expanding variables it also provides
	command expansion $(command args...)

	The commands currently available are:

	 domainpart ARG splits its argument on the first occurrence of
	@
	 and returns the part after it.
	 localpart ARG splits its argument on the first occurrence of @
	 and returns the part before it.
	 shell CMD ARG... runs shell command CMD and returns its output 
	* include/mailutils/cstr.h (mu_str_expand, mu_str_vexpand): New
	protos.
	* libmailutils/string/expvar.c: New file.
	* libmailutils/string/Makefile.am: Add expvar.c 
	* libmailutils/tests/exp.c: New file.
	* libmailutils/tests/Makefile.am: Add exp.c 
	* imap4d/imap4d.c (namespace_cfg_init): Fix docstring.
	* imap4d/namespace.c (namespace_translate_name): Use
	mu_str_expand. 
	* libmailutils/mailbox/mbx_default.c
	(mu_construct_user_mailbox_url): Use mu_str_vexpand.
	* libmu_auth/ldap.c (_mu_ldap_search): Likewise.
	* libmu_auth/radius.c (_expand_query): Likewise.
	* libmu_auth/sql.c (mu_sql_expand_query): Likewise. 
	* mu/shell.c (mutool_prompt_env): Remove.
	(shell_prompt): Rewrite
	(input_line_interactive): Use mu_str_expand.
	(mutool_shell_prompt_assoc): New function.
	* mu/mu.h (mutool_shell_prompt_assoc): New proto.
	* mu/imap.c (imap_prompt_env): Use mutool_shell_prompt_assoc.
	* mu/pop.c (pop_prompt_env): Likewise.
	* mu/smtp.c (smtp_prompt_env): Likewise.

2017-01-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* libmailutils/mime/mime.c: Fix formatting

2017-01-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove unnecessary mu_message_t flag (MESSAGE_MIME_OWNER)

2017-01-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* configure.ac: Set version 3.1.91
	* NEWS: Update.
	* doc/texinfo/programs.texi: Minor change.
	* libmailutils/mime/mime.c (_mime_part_size)
	(_mime_body_lines): Fix counting. Return 0 if MIME is empty.

2017-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Improve mu_attachment_copy_ interface.

	* libmailutils/mime/attachment.c
	(mu_attachment_copy_from_stream)
	(mu_attachment_copy_from_file): Remove the encoding parameter.
	Take the encoding to use from the value of the
	Content-Transfer-Encoding header. Return EINVAL if it is not
	present.
	* include/mailutils/message.h (mu_attachment_copy_from_stream)
	(mu_attachment_copy_from_file): Change signature. All uses
	changed.

2017-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Improve the --skip-empty-attachment functionality.

	This also includes small bugfixes in the MIME library code.

	The --skip-empty-attachment option now affects the original
	body as well. If the option is in effect, and the body is
	empty, it will not be included to the composed message.

	* libmailutils/mime/mime.c (_mime_body_stream_read): Return EOF
	if there are no parts in the message.
	(mu_mime_get_num_parts): If message is not multipart, report 1
	part without setting mime->nmtp_parts. Setting it caused
	coredump in other MIME functions (namely, in mu_mime_add_part.
	* mail/send.c (add_body): New function. Adds original body to
	the MIME, honoring the --skip-empty-attachment option.
	* doc/texinfo/programs.texi: Update.

2017-01-16  Sergey Poznyakoff  <gray@gnu.org>

	imap4d: log client identity.

	* imap4d/id.c (eat_args): Log the client identity using the
	info channel.
	* imap4d/list.c: tiny change

2017-01-16  Sergey Poznyakoff  <gray@gnu.org>

	mail: new option --skip-empty-attachments.

	* libmailutils/cli/cli.c (mu_cli): Use "no-" prefix to indicate
	negation
	* mail/mail.c (skip_empty_attachments): New global.
	(mail_options): New option --skip-empty-attachments
	* mail/mail.h (skip_empty_attachments): New extern.
	* mail/send.c (atchinfo) <skip_empty>: New field.
	(send_attach_file): Initialize skip_empty
	(saveatt): Optionally skip empty attachments 
	* NEWS: Mention the new option.
	* doc/texinfo/programs.texi: Document the new option.

2017-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmu_sieve/load.c [!HAVE_LIBLTDL] (mu_sieve_load_ext): Fix
	declaration.

2017-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos.

2017-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	docs: improve the attachment section.

	* doc/texinfo/programs.texi: provide an example script
	illustrating how to use mail from another programs.

2017-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-introduce the --HANG hidden option.

	* libmailutils/cli/cli.c (mu_common_options): Declare the
	--HANG option.
	(hangproc): New function.

2017-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: new options to read attachments from file descriptors.

	* mail/mail.c (default_encoding,default_content_type)
	(content_name,content_filename): New statics.
	(cli_attach): Use the value of --content-name option as the
	content-type name parameter. The "-" argument instructs the
	program to read attachment from stdin (eqv --attach-fd=0)
	(cli_attach_fd): New function.
	(mail_options): New options: --content-name,
	--content-filename, --attach-fd
	* mail/mail.h (send_attach_file_default): Remove.
	(send_attach_file): New proto.
	* mail/send.c (atchinfo): New fields: id, name, source.
	(atchinfo_free): Update.
	(default_encoding,default_content_type): Remove globals.
	(send_attach_file): Rewrite.
	(send_attach_file_default): Remove.
	(escape_list_attachments): Print attachment identifier instead
	of the file name, which can be NULL.
	(saveatt): Use mu_attachment_create and
	mu_attachment_copy_from_stream. 
	* NEWS: Update.
	* doc/texinfo/programs.texi: Document the new options.

2017-01-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix default nullstream read mode.

	* libmailutils/stream/nullstream.c (_nullstream_free_pattern):
	Always reset pattern and patsize.
	(mu_nullstream_create): Fix patsize.

2017-01-04  Sergey Poznyakoff  <gray@gnu.org>

	Improve handling of namespace references.

	* imap4d/list.c (refinfo) <pfxlen>: Remove.
	(list_fun): Change the algorithm for restoring the printable
	reference name.
	(imap4d_list): Use actual reference, not the prefix value.
	* imap4d/namespace.c: Fix handling of NS_OTHER prefixes.
	* imap4d/tests/list.at: Change the testcase.

2017-01-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Tiny fix in c++ code.

2017-01-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite namespace support.

	* imap4d/imap4d.c (imap4d_homedir)
	(modify_homedir, mailbox_mode): Remove.
	(imap4d_srv_param): New configuration statement "namespace"
	Remove statements: homedir, personal-namespace,
	shared-namespace, other-mailbox-mode, shared-mailbox-mode.
	* imap4d/imap4d.h (imap4d_homedir, modify_homedir)
	(mailbox_mode): Remove. (namespace, namespace_init_session,
	util_getfullpath)
	(namespace_getfullpath, namespace_checkfullpath): Remove.
	(namespace_prefix, namespace): New structs. (namespace_lookup,
	namespace_translate_name)
	(namespace_get_url, translate_delim): New protos.
	* imap4d/list.c (refinfo): Revamp.
	(list_fun): Rewrite.
	* imap4d/namespace.c: Rewrite from scratch.
	* imap4d/append.c: Use new namespace functions.
	* imap4d/util.c (util_getfullpath): Remove. 
	* imap4d/copy.c: Likewise.
	* imap4d/create.c: Likewise.
	* imap4d/delete.c: Likewise.
	* imap4d/quota.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise. 
	* imap4d/tests/atlocal.in (make_config): New function.
	* imap4d/tests/testsuite.at (IMAP4D_CONFIG)
	(IMAP4D_RUN): New functions.
	* imap4d/tests/list.at: Update tests 16, 17, 18, 19 
	* imap4d/tests/IDEF0955.at: Use IMAP4D_RUN.
	* imap4d/tests/IDEF0956.at: Likewise.
	* imap4d/tests/append00.at: Likewise.
	* imap4d/tests/append01.at: Likewise.
	* imap4d/tests/create01.at: Likewise.
	* imap4d/tests/create02.at: Likewise.

2017-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Tiny fix.

	* libmailutils/sockaddr/str.c: Add missing include. Reported by
	Felix Janda

2017-01-01  Sergey Poznyakoff  <gray@gnu.org>

	Happy GNU Year.

2016-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide a way to discern between erroneous return and
	user-induced break condition in foreach iterator functions.

	* libmailutils/diag/errors (MU_ERR_USER0-MU_ERR_USER7): New
	error constants. Reserved for user's purposes, such as breaking
	from foreach iterators.
	* libmaildutils/list/foreach.c (mu_list_foreach): Treat NULL
	list as a list of 0 elements.
	* libmailutils/list/foreachdir.c (mu_list_foreach_dir):
	Likewise.
	* imap4d/imap4d.h (imap4d_auth_result): Remap constants to
	MU_ERR_USER[0-2]
	* libmu_sieve/prog.c (mu_i_sv_lint_command): Use mu_list_locate
	with the default comparator.
	* mh/mh_list.c (_comp_name): Rewrite to match the definition of
	mu_list_comparator_t
	(mhl_format_run): Set _comp_name as comparator for the
	env.printed_fields list.
	(header_is_printed): Use mu_list_locate. 
	* imap4d/authenticate.c: Use MU_ERR_USER0-MU_ERR_USER7 to
	indicate normal break condition in foreach iterators.
	* imap4d/imap4d.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* libmailutils/auth/auth.c: Likewise.
	* libmailutils/cfg/driver.c: Likewise.
	* libmailutils/cfg/parser.y: Likewise.
	* libmailutils/server/acl.c: Likewise.
	* libmailutils/server/msrv.c: Likewise.
	* libmu_sieve/conf.c: Likewise.
	* libmu_sieve/load.c: Likewise.
	* libmu_sieve/sieve.l: Likewise.
	* libmu_sieve/strexp.c: Likewise.
	* libproto/imap/mbox.c: Likewise.
	* libproto/imap/search.c: Likewise.
	* mh/mh_format.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mimeview/mimetypes.y: Likewise.
	* movemail/movemail.c: Likewise.

2016-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide sort function for associative arrays.

	The mu_assoc_sort_r call sorts the elements of mu_assoc_t for
	subsequent iterative access. Random access facilities remain
	undisturbed.

	* include/mailutils/assoc.h (mu_assoc_comparator_t): New
	typedef.
	(mu_assoc_sort_r): New proto.
	* libmailutils/base/assoc.c (mu_assoc_sort_r): New function.
	* libmailutils/tests/mimehdr.c: Sort assoc elements prior to
	iteration.

2016-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix parsing of Content-Type and Content-Disposition headers.

	Correctly handle character set and language info embedded in
	parameter values, and eventual parameter value continuations as
	per RFC 2231, Section 3.

	* include/mailutils/assoc.h (mu_assoc_is_empty): New proto.
	* libmailutils/base/assoc.c (mu_assoc_is_empty): New function. 
	* include/mailutils/mime.h (mu_mime_header_parse): Output
	charset is char const *.
	* libmailutils/mime/mimehdr.c (mu_mime_header_parse): Likewise. 
	* include/mailutils/util.h (mu_content_type) <param>: Change
	type to mu_assoc_t
	(mu_param): Remove structure declaration.
	(mu_content_type_parse): Take an optional output charset.
	* libmailutils/base/ctparse.c (mu_content_type_parse): Rewrite
	using mu_mime_header_parse. 
	* imap4d/fetch.c (send_parameter_list): Rewrite using
	mu_mime_header_parse.
	(format_param): Use base64 for parameter values with explicit
	charsets. 
	* libmailutils/tests/conttype.c: Reflect the changes to struct
	mu_content_type

2016-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mu_assoc_foreach function.

	* include/mailutils/assoc.h (mu_assoc_action_t): New typedef.
	(mu_assoc_foreach): New function.
	* libmailutils/base/assoc.c (mu_assoc_foreach): New function.

2016-12-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise associative array API.

	* configure.ac (VI_REVISION): Increase.
	* include/mailutils/assoc.h (mu_assoc_create): Change
	prototype. (mu_assoc_ref,mu_assoc_ref_install)
	(mu_assoc_remove_ref): Remove.
	(mu_assoc_get): New proto.
	(mu_assoc_lookup,mu_assoc_lookup_ref): New proto.
	(mu_assoc_install_ref): New proto.
	(mu_assoc_set_free): Remove.
	(mu_assoc_set_destroy_item): Set proto.
	* include/mailutils/types.hin (mu_deallocator_t): New typedef.
	* include/mailutils/list.h (mu_list_destroy_item_t): Change
	definition.
	* libmailutils/base/assoc.c: Rewrite. Link all entries in a
	doubly-linked list to preserve natural ordering during
	iterations.
	* libmailutils/base/mutil.c (mutil_parse_field_map): Update
	calls to assoc API.
	* libmailutils/cfg/driver.c (alloc_section_tab)
	(mu_create_canned_section,mu_create_canned_param)
	(mu_get_canned_container,parse_mapping)
	(mu_cfg_field_map): Likewise.
	* libmailutils/mime/mimehdr.c (_mu_mime_param_free): Free the
	pointer itself. (flush_param,mu_mime_param_assoc_create)
	(mu_mime_param_assoc_add) (_mime_header_parse)
	(mu_mimehdr_aget_decoded_param): Update calls to assoc API.
	(mu_mime_param_free): New function.
	* libmailutils/property/assocprop.c: Likewise.
	* libmu_sieve/environment.c: Likewise.
	* libmu_sieve/variables.c: Likewise.
	* libproto/imap/id.c: Likewise.
	* mail/alias.c: Likewise.
	* mail/testsuite/mail/alias.exp: Update ordering of expected
	output.
	* mu/imap.c (com_id): Update. 
	* include/mailutils/mime.h (mu_rfc2047_decode_param): Change
	prototype.
	* libmailutils/base/rfc2047.c (mu_rfc2047_decode_param):
	Allocate returned value, instead of filling an already
	allocated structure.
	* libproto/imap/fetch.c: Reflect changes.

2016-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typecasts in sieve.

	* libmu_sieve/sieve.y (sieve_parse): Make sure 0 is properly
	promoted to sieve_instr_t.

2016-12-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve attachment creation API.

	* include/mailutils/message.h (mu_attachment_create)
	(mu_attachment_copy_from_stream)
	(mu_attachment_copy_from_file): New functions.
	* libmailutils/mime/attachment.c: Likewise.
	(mu_message_create_attachment): Rewrite using the three
	functions above.

2016-12-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	New string functions.

	* libmailutils/string/strcount.c (mu_str_count): Take an array
	of (ASCII) characters to count occurrences of. Optionally store
	individual counts in an array passed as the 3rd argument.
	* include/mailutils/cstr.h (mu_str_count): Change proto.
	(mu_c_str_escape, mu_c_str_escape_trans)
	(mu_c_str_unescape_inplace, mu_c_str_unescape)
	(mu_c_str_unescape_trans): New protos.
	* libmailutils/string/cstrescape.c: New file.
	* libmailutils/string/cstrunescape.c: New file.
	* libmailutils/string/Makefile.am: Add new files.

2016-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	New command: mailutils stat.

	* include/mailutils/util.h (mu_c_storage_t): New data type.
	* mu/stat.c: New file.
	* mu/Makefile.am: Add stat
	* doc/texinfo/programs.texi: Document mailutils stat

2016-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in imap client code.

	* libproto/imap/mbox.c (_imap_message_unseen): Fix type of
	pointer returned by mu_list_head
	* libproto/imap/resproc.c (parse_response_code): Fix parser

2016-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap: fix LIST "" "mbox"

	* imap4d/list.c (imap4d_list): Move the longest directory
	prefix to the reference.
	* imap4d/tests/list.at: New testcase.
	* libmu_sieve/tests.c: Fix bug introduced by previous commit

2016-12-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: improve address tests.

	* libmu_sieve/tests.c (retrieve_address): Treat
	MU_ERR_EMPTY_ADDRESS as MU_ERR_NOENT. This complements
	678d93678

2016-12-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_sieve/sieve.y (mu_sieve_machine_clone): Fix memory
	allocation.
	* mh/pick.c: Remove unused functions.

2016-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix fb84d1e3.

	The commit didn't take into account all possible
	option/argument combinations.

	* mh/pick.c (main): Preprocess command line prior to parsing
	it, expanding --COMP NAME in -component COMP -pattern NAME.
	* mh/mh_getopt.c: Revert fb84d1e3
	* mh/mh_getopt.h: Likewise.

2016-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes to configure.

	* configure.ac: Assume tokyo|kyoto cabinet will pull the
	necessary dependencies. Add GINT_LDADD if necessary
	* gint: Upgrade

2016-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	New example.

	* configure.ac (MU_PRI_OFF_T): Define to the printf format spec
	suitable for printing mu_off_t. Don't use [ ] instead of test.
	* include/mailutils/types.hin (MU_PRI_OFF_T): New define.
	* include/mailutils/Makefile.am (type.h): Pass MU_PRI_OFF_T 
	* examples/mboxsize.c: New file.
	* examples/Makefile.am: Build mboxsize

2016-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix size calculation for MH and Maildir mailboxes.

	Exclude from calculation any eventual nested mailboxes.

	* libproto/maildir/mbox.c: Provide the mailbox_size method.
	* libproto/mh/mbox.c: Likewise.

2016-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* configure.ac: Fallback to guile installation prefix, if
	'guile-config info bindir' returns empty string.
	* doc/texinfo/programs.texi: Minor fix.
	* mail/mailline.c (ml_readline_init): Don't use obsolete
	CPPFunction type.
	* mu/shell.c (mutool_initialize_readline): Likewise.
	* scheme/sieve2scm.scmi: Fix typo.
	* sieve/sieve.c (main): Fix initialization of Sieve environment
	variables "location" and "post".

2016-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.1.90.

2016-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve rename/copy/reomove API.

	* examples/rename.c: Remove.
	* examples/fcopy.c: New file.
	* examples/fremove.c: New file.
	* examples/frename.c: New file.
	* examples/Makefile.am: Update. 
	* include/mailutils/util.h (mu_rename_file): Add flags.
	(mu_remove_file): New function.
	(MU_COPY_OVERWRITE): New flag.
	* libmailutils/base/renamefile.c: New file.
	* libmailutils/base/Makefile.am: Add new file.
	* libmailutils/base/copyfile.c: Fix error handling.
	* libmailutils/base/renamefile.c (mu_rename_file): Refuse to
	proceed if the destination file exists and MU_COPY_OVERWRITE
	flag is not set
	* libmailutils/diag/errors (MU_ERR_REMOVE_SOURCE)
	(MU_ERR_RESTORE_META): New errors 
	* imap4d/rename.c (imap4d_rename): Use mu_rename_file
	* mh/forw.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/send.c: Likewise. 
	* include/mailutils/cstr.h (mu_str_count): New proto.
	* include/mailutils/util.h (mu_file_name_is_safe): New proto.
	* libmailutils/string/safefilename.c: New file.
	* libmailutils/string/strcount.c: New file.
	* libmailutils/string/Makefile.am: Update.

2016-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add functions for safe renaming and copying of files.

	* libmailutils/base/copyfile.c: New file.
	* libmailutils/base/renamefile.c: New file. 
	* include/mailutils/util.h (mu_copy_file)
	(mu_rename_file): New protos. 
	* libmailutils/base/Makefile.am: Add new files.
	* examples/rename.c: New file.
	* examples/Makefile.am: Add new files. 
	* NEWS: Update.

2016-12-16  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.1.1 released.

2016-12-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Export mu-mailer guile variable.

	* libmu_scm/mu_scm.c: Export mu-mailer.
	* libmu_scm/mu_message.c (scm_mu_message_send): Fix a typo.

2016-12-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Swap precedences of MH and Maildir to help in format
	autodetection.

	* include/mailutils/registrar.h: Swap MU_MAILDIR_PRIO and
	MU_MH_PRIO (mu_record_is_local)
	(mu_registrar_apply_filter): New protos.
	* libmailutils/base/registrar.c
	(mu_registrar_set_default_scheme): Use
	mu_registrar_set_default_record.
	(mu_record_is_local): New function.
	(mu_record_get_url): Use it.
	(mu_registrar_apply_filter): New function.

2016-12-15  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.1.1.

2016-12-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix pick --component NAME.

	* mh/mh_getopt.c (mh_getopt0): New function.
	(mh_getopt): Rewrite as alternative entry point to .
	* mh/mh_getopt.h (mh_getopt0): New proto.
	* mh/pick.c: Use mh_getopt0
	* mh/tests/pick.at: Add new testcase.

2016-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libproto/imap/tag.c: Initialize allocated slot to 0
	* mu/imap.c: Fix number of elements to allocate

2016-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Restore prematurely deleted header.

	* include/mailutils/argcv.h: Restore
	* include/mailutils/Makefile.am: Add back argcv.h

2016-12-13  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes in sieve.

	* libmu_sieve/runtime.c (mu_sieve_abort): Jump with code
	MU_ERR_FAILURE.
	* libmu_sieve/tests.c (retrieve_address): Tolerate empty
	addresses.
	(retrieve_header): Return reasonable error code.
	* maidag/script.c (script_apply): If the script failed, return
	0.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.1.

	* configure.ac: version 3.1
	* NEWS: Likewise. 
	* libmu_sieve/comparator.c: Attend to FIXMEs.
	* libmu_sieve/conf.c: Likewise.
	* libmu_sieve/prog.c: Likewise.
	* libmu_sieve/runtime.c: Likewise.
	* libmu_sieve/sieve.y: Likewise.
	* libmu_sieve/util.c: Likewise.
	* libmu_sieve/variables.c: Likewise. 
	* po/POTFILES.in: Add new files.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org>

	libmu_sieve: minor fix.

	* libmu_sieve/util.c (mu_sieve_value_get): Treat actual string
	and expected string list as equivalent types.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Pacify a paranoid compiler warning.

	* libmailutils/string/wordsplit.c (mu_wordsplit_perror): Use %s
	format specifier

2016-12-13  Jordi Mallach  <jordi@debian.org>

	Fix spelling errors.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_sieve/sieve.y: Fix compilation of chained elsif
	conditions.
	* sieve/sieve.c: Define the location environment item.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document changes to Sieve.

	* NEWS: Update.
	* doc/texinfo/libmu_sieve.texi: Update.
	* doc/texinfo/sieve.texi: Document extensions 
	* libmu_sieve/comparator.c (mu_sieve_match_part_checker): Check
	the type of the 2nd argument.
	* sieve/sieve.c: Define "location" and "phase" environment
	items.
	* sieve/tests/pipetest.at: Use "pipe" as the capability string.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	New sieve machine accessor functions.

	* include/mailutils/sieve.h (mu_sieve_get_mailbox)
	(mu_sieve_get_argc): New protos.
	* libmu_sieve/runtime.c: New functions.

2016-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix command expansion in wordsplit.

	* libmailutils/string/wordsplit.c: Change ordering of
	expansions so that command expansion occurs first. This fixes
	nested expansions and command expansions occurring after
	variable expansions.
	* libmailutils/tests/wordsplit.at: Add more tests.

2016-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: allow for whitespace in edit commands.

2016-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix -nowhatnow proc in mh.

	* mh/mh.h (mh_whatnow_env) <nowhatnowproc>: New member.
	* mh/compcommon.c (check_draft_disposition): Return
	DISP_REPLACE if nowhatnowproc is set.
	* mh/mh_whatnow.c (mh_whatnowproc): Return 0 if nowhatnowproc
	is set.
	* mh/comp.c: Fix -nowhatnowproc
	* mh/forw.c: Likewise.
	* mh/repl.c: Likewise.

2016-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/ctparse.c (parse_type)
	(parse_subtype): Fix memory allocation

2016-12-12  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2016-12-12  Sergey Poznyakoff  <gray@gnu.org>

	Add tests for sieve environment.  Initialize environment in
	maidag and inc.

	* sieve/tests/environment.at: New testcase.
	* sieve/tests/Makefile.am: Add new file.
	* sieve/tests/testsuite.at: Include new file. 
	* lib/muscript.h (mu_script_init): Change signature.
	* lib/muscript_priv.h (mu_script_fun) <script_init>: Likewise.
	* lib/guile.c (scheme_init): Update.
	* lib/python.c (python_init): Update.
	* lib/script.c (mu_script_init): Pass environment to the
	script_init method.
	* lib/sieve.c (sieve_init): Set sieve environment.
	* maidag/script.c (apply_script): Set environment.
	* mh/inc.c: Likewise.

2016-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Support for environment extension (RFC 5183).

	* include/mailutils/sieve.h (mu_sieve_require_environment): New
	proto.
	* libmu_sieve/Makefile.am: Add environment.c
	* libmu_sieve/environment.c: New file.
	* libmu_sieve/require.c: Handle "environment" keyword.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine) <exenv>: New
	member.
	* libmu_sieve/sieve.l: Bugfixes
	* libmu_sieve/variables.c: Add missing static qualifiers
	* sieve/sieve.c: New option --environment

2016-12-10  Sergey Poznyakoff  <gray@gnu.org>

	Remove libmu_compat.

2016-12-10  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite stream flushing code.

	* libmailutils/stream/stream.c (_stream_flush_buffer): Rewrite.

2016-12-09  Sergey Poznyakoff  <gray@gnu.org>

	Fix minor inconsistencies.

2016-12-09  Sergey Poznyakoff  <gray@gnu.org>

	Provide function for parsing the Content-Type header (RFC
	2045).

	* include/mailutils/util.h (mu_content_type, mu_param): New
	structs.
	(mu_content_type_t): New typedef.
	(mu_content_type_parse, mu_content_type_destroy): New protos.
	* libmailutils/base/ctparse.c: New file.
	* libmailutils/base/Makefile.am: Add new file. 
	* imap4d/fetch.c: Use mu_content_type_parse to parse the
	header. 
	* libmailutils/tests/conttype.c: New file.
	* libmailutils/tests/Makefile.am: Add new file.

2016-12-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix eventual dangling pointers.

	Don't set mu_log_tag, leave that to the caller.

	* libmailutils/cli/cli.c (mu_cli_ext): Don't set mu_log_tag.
	* libmailutils/stdstream/strerr.c: Use MU_LOG_TAG macro from
	syslog.h
	* sieve/sieve.c: Redo --no-program-name support

2016-12-08  Sergey Poznyakoff  <gray@gnu.org>

	sieve: fix the mu_sieve_vlist_compare API.

	* libmu_sieve/util.c (mu_sieve_vlist_compare): Rewrite.
	* include/mailutils/sieve.h (mu_sieve_retrieve_t): Change
	signature. All uses changed.
	(mu_sieve_relational_count): Remove.
	(mu_sieve_vlist_compare): Change signature.
	* libmu_sieve/extensions/list.c (list_retrieve_header): Always
	return meaningful status.
	* libmu_sieve/tests.c (mu_sieve_relational_count): Remove.
	(retrieve_address,retrieve_envelope): Return meaningful status.
	(retrieve_header): Iterate over all mime parts, if required.
	(sieve_test_address,sieve_test_header): Rewrite.
	* libmu_sieve/variables.c (sieve_test_string): Rewrite using
	mu_sieve_vlist_compare.

2016-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 3.0.90.

2016-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing file.

	* include/mailutils/glob.h: File was missing in df608ed0
	* include/mailutils/Makefile.am: Add glob.h

2016-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the "variables" Sieve extension (RFC 5229)

	* include/mailutils/sieve.h (mu_sieve_string): New fields
	"constant" and "changed".
	(mu_sieve_match_part_tags): New extern.
	(mu_sieve_relational_count) (mu_sieve_require_variables)
	(mu_sieve_has_variables)
	(mu_sieve_string_get): New functions.
	* libmu_sieve/variables.c: New file.
	* libmu_sieve/Makefile.am: Add variables.c
	* libmu_sieve/comparator.c: Use mu_sieve_string_get to obtain
	the actual value of the string.
	* libmu_sieve/require.c: Support the "variables" extension.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine): New fields
	vartab, match_string, match_buf, match_count, match_max.
	(mu_i_sv_copy_variables)
	(mu_i_sv_expand_variables): New protos.
	* libmu_sieve/sieve.l (line_add): zero length means add entire
	asciiz string.
	* libmu_sieve/sieve.y (mu_sieve_machine_reset): Reset the new
	fields.
	(mu_sieve_machine_clone): Copy variables and initialize new
	fields.
	(string_rescan): New function.
	(sieve_parse): Rescan string to determine their properties.
	* libmu_sieve/strexp.c (update_len): Allow for NULL replacement
	values.
	* libmu_sieve/string.c (mu_sieve_string_get): New function.
	(mu_sieve_string): Use it.
	* libmu_sieve/tests.c (do_count): Rename to
	mu_sieve_relational_count, make global. All uses changed.
	(match_part_tags): Rename to mu_sieve_match_part_tags, make
	global. All uses changed. 
	* sieve/tests/variables.at: New file.
	* sieve/tests/Makefile.am: Add new testcases.
	* sieve/tests/testsuite.at: Likewise.

2016-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use glob API in sieve.

	* libmu_sieve/comparator.c: Use mu_glob_compile instead of
	fnmatch.

2016-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	New API for converting globbing patterns to extended POSIX
	regex.

	* include/mailutils/opool.h (mu_nonlocal_jmp_t): New type.
	(mu_opool_setjmp,mu_opool_clrjmp): New functions.
	(mu_opool_setup_nonlocal_jump): New macro.
	* libmailutils/base/opool.c (_mu_opool)<jmp>: New field.
	(alloc_bucket): Do a non-local jump on out of memory condition,
	if jmp is not NULL.
	(mu_opool_setjmp,mu_opool_clrjmp): New functions. 
	* libmailutils/base/glob.c: New file.
	* libmailutils/base/Makefile.am: Add glob.c 
	* include/mailutils/glob.h: New file.
	* include/mailutils/mailutils.h: Include glob.h 
	* libmailutils/tests/globtest.c: New file.
	* libmailutils/tests/globtest.at: New test.
	* libmailutils/tests/Makefile.am: Add new files.
	* libmailutils/tests/testsuite.at: Include new test.

2016-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/stream/stream.c (mu_stream_ioctl): Don't flush
	read buffer.

2016-12-05  Sergey Poznyakoff  <gray@gnu.org>

	Improve opool.

	* include/mailutils/opool.h (mu_opool_detach): New proto.
	* libmailutils/base/opool.c (mu_opool_bucket): Redo as union to
	ensure proper alignment. All uses changed.
	(mu_opool_detach): New function.

2016-12-04  Sergey Poznyakoff  <gray@gnu.org>

	sieve: redo symbol registry support.

	The purpose is to simplify the machine structure and to ensure
	its clones are completely independent of the master instance.

	* include/mailutils/sieve.h (mu_sieve_command): New struct.
	(mu_sieve_record): New enum
	(mu_sieve_registry_t): Generalize for storing various types of
	objects. (mu_sieve_test_lookup,mu_sieve_action_lookup)
	(mu_sieve_require_action,mu_sieve_require_test)
	(mu_sieve_require_comparator): Remove.
	(mu_sieve_register_test_ext,mu_sieve_register_test)
	(mu_sieve_register_action_ext,mu_sieve_register_action)
	(mu_sieve_register_comparator)
	(mu_sieve_load_ext): Change return type.
	(mu_sieve_registry_require,mu_sieve_unload_ext): New functions.
	(mu_sieve_machine_inherit): Rename to mu_sieve_machine_clone.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine): Remove
	source_list, test_list, action_list, and comp_list. Add a
	single registry list instead. Add space for file and command
	(action and test) names: idspace, idcount, idmax. Remove unused
	field "stack";
	(mu_i_sv_lex_finish): Change prototype.
	(_mu_i_sv_instr_push,_mu_i_sv_instr_pop): Remove protos.
	(mu_i_sv_id_canon,mu_i_sv_id_num)
	(mu_i_sv_id_str,mu_i_sv_free_idspace): New protos.
	* libmu_sieve/register.c: Rename to registry.c
	* libmu_sieve/registry.c (mu_sieve_test_lookup)
	(mu_sieve_action_lookup): Remove.
	(mu_sieve_require_test,mu_sieve_require_action): Remove.
	(mu_sieve_registry_require): New function.
	(mu_sieve_registry_add,mu_sieve_registry_lookup): New
	functions.
	* libmu_sieve/Makefile.am: Update.
	* libmu_sieve/comparator.c: Rewrite using new registry
	functions.
	* libmu_sieve/load.c (mu_sieve_load_ext): Return module handle.
	(mu_sieve_unload_ext): New function.
	* libmu_sieve/mem.c (mu_sieve_free): Gracefully handle NULL
	argument.
	(mu_i_sv_id_canon,mu_i_sv_id_num,mu_i_sv_id_str): New
	functions.
	* libmu_sieve/prog.c (mu_i_sv_locus): Store index of the file
	name in the id space, instead of pointer to the name itself. 
	* libmu_sieve/require.c (mu_sieve_require): Rewrite.
	* libmu_sieve/runtime.c (_mu_i_sv_instr_source): Expect ID
	index as argument. (_mu_i_sv_instr_push)
	(_mu_i_sv_instr_pop): Remove unused instructions. 
	* libmu_sieve/sieve.l (file_names): Remove. Use
	mu_sieve_machine idspace instead.
	* libmu_sieve/sieve.y (mu_sieve_machine_clone)
	(mu_sieve_machine_dup): Rewrite.
	(mu_sieve_machine_destroy): Free idspace and registry 
	* examples/numaddr.c: Reflect changes.
	* libmu_sieve/extensions/editheader.c: Likewise.
	* libmu_sieve/extensions/list.c: Likewise.
	* libmu_sieve/extensions/moderator.c: Likewise.
	* libmu_sieve/extensions/pipe.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* libmu_sieve/extensions/timestamp.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.

2016-12-03  Sergey Poznyakoff  <gray@gnu.org>

	Rename mu_sieve_machine_init to mu_sieve_machine_create.

2016-12-03  Sergey Poznyakoff  <gray@gnu.org>

	Cleanup.

	* include/mailutils/sieve.h (SVT_IDENT): Remove.
	* libmu_sieve/comparator.c (mu_sieve_match_part_checker):
	Remove unused variable.
	* libmu_sieve/mem.c (mu_sieve_reclaim_list): Remove function.
	* libmu_sieve/sieve.y: Remove leftover uses of SVT_IDENT.
	* libmu_sieve/util.c: Likewise.
	* libmu_sieve/sieve-priv.h: Remove useless prototypes.

2016-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: change string allocation and argument passing
	convention.

	Strings are allocated in a per-machine string space. String and
	argument lists form contiguous arrays of structures. Regular
	expressions are compiled when they are needed. Compiled
	expressions are cached for eventual reuse.

2016-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix delivery to MH and Maildir mailboxes.

	After successful delivery, maidag would switch back to root
	privileges too early, due to which the mailbox would be closed
	when running with root UID. I the property file (.mu-prop) did
	not exist, it would therefore be created by root. Subsequent
	attempts to open it by user would fail. One of consequences is
	that the UIDVALIDITY value would be recalculated each time the
	mailbox is opened. This would force imap4 clients to rescan
	mailboxes infinitely, as each scan would change the UIDVALIDITY
	again.

	This patch fixes the initialization of UIDVALIDITY and fixes
	maidag to switch back to root privileges only after closing the
	mailbox. It also makes sure MH and Maildir mailboxes write
	.mu-prop upon closing, not upon destroying the mailbox.

	* libmailutils/base/amd.c (amd_close): Save property.
	(_amd_scan0): Use mailbox modification time as initial
	uidvalidity value.
	* maidag/deliver.c (deliver_to_mailbox): Remove useless UID/GID
	transitions.

2016-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: improve memory allocation.

	* include/mailutils/sieve.h (mu_sieve_alloc)
	(mu_sieve_palloc,mu_sieve_prealloc)
	(mu_sieve_pfree,mu_sieve_pstrdup): Remove.
	(mu_sieve_mstrdup,mu_sieve_mrealloc)
	(mu_sieve_mfree): Remove. 
	(mu_sieve_reclaim_t): New typedef.
	(mu_sieve_calloc,mu_sieve_strdup) (mu_sieve_realloc)
	(mu_sieve_reclaim_default,mu_sieve_reclaim_list)
	(mu_sieve_reclaim_value,mu_sieve_reclaim_tag): New functions
	(mu_sieve_value_create): Change prototype (take
	mu_sieve_machine_t as first argument)
	* libmu_sieve/mem.c: New file.
	* libmu_sieve/Makefile.am: Add new file. 
	* libmu_sieve/comparator.c: Use new allocation functions.
	* libmu_sieve/prog.c: Likewise.
	* libmu_sieve/register.c: Likewise.
	* libmu_sieve/sieve.l: Likewise.
	* libmu_sieve/sieve.y: Likewise.
	* libmu_sieve/util.c: Likewise. 
	* doc/texinfo/libmu_sieve.texi: Update (needs revision).

2016-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* include/mailutils/list.h (mu_list_remove)
	(mu_list_remove_nd): Second arg is const.
	* libmailutils/list/remove.c: Likewise.

2016-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove compatibility support for obsolete .mu-size.

2016-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: more improvements to the argument/tag runtime access
	API.

	* include/mailutils/sieve.h (mu_sieve_handler_t): Change
	signature: remove args and tags arguments, they are contained
	in struct mu_sieve_machine now. (mu_sieve_get_comparator)
	(mu_sieve_relcmpn_t): Change signature.
	(mu_sieve_tag_lookup,mu_sieve_tag_lookup_untyped): Remove
	(mu_sieve_get_tag,mu_sieve_get_tag_untyped): New protos.
	(mu_sieve_value_get_optional): Replace by
	mu_sieve_get_arg_optional.
	(mu_sieve_value_get_untyped): Replace by
	mu_sieve_get_arg_untyped.
	(mu_sieve_value_get): Replace by mu_sieve_get_arg. All uses
	changed.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine): New members:
	arg_list and tag_list
	* libmu_sieve/runtime.c (instr_run): Set up identifier,
	arg_list, and tag_list in mu_sieve_machine_t before calling the
	handler. Reset them afterward.
	* libmu_sieve/util.c (mu_sieve_value_get_optional): Replace by
	mu_sieve_get_arg_optional.
	(mu_sieve_value_get_untyped): Replace by
	mu_sieve_get_arg_untyped.
	(mu_sieve_value_get): Replace by mu_sieve_get_arg.
	(mu_sieve_tag_lookup): Replace by mu_sieve_get_tag
	(mu_sieve_tag_lookup_untyped): Replace by
	mu_sieve_get_tag_untyped

2016-11-26  Sergey Poznyakoff  <gray@gnu.org>

	sieve: improve argument/tag runtime access API.

	* include/mailutils/sieve.h (mu_sieve_data_type): Remove
	SVT_VALUE_LIST.
	(mu_sieve_value_storage): Named union for use in
	mu_sieve_value_t; remove the tag field.
	(mu_sieve_tag_lookup): Change prototype.
	(mu_sieve_value_get): Change prototype.
	(mu_sieve_value_get_optional)
	(mu_sieve_value_get_untyped): New functions.
	(mu_sieve_arg_error): Removed proto. 
	* libmu_sieve/sieve.y: Remove SVT_VALUE_LIST support.
	* libmu_sieve/util.c (mu_sieve_value_create)
	(mu_sieve_type_str,mu_sieve_vlist_do): Remove SVT_VALUE_LIST
	support.
	(mu_sieve_value_get): Rewrite. (mu_sieve_value_get_untyped)
	(mu_sieve_value_get_optional): New functions.
	(mu_sieve_arg_error): Remove.
	(mu_sieve_tag_lookup): Rewrite.
	(mu_sieve_tag_lookup_untyped): New function. 
	* doc/texinfo/libmu_sieve.texi: Update.

	libmu_sieve/tests.c libmu_sieve/actions.c
	libmu_sieve/extensions/editheader.c
	libmu_sieve/extensions/list.c
	libmu_sieve/extensions/moderator.c
	libmu_sieve/extensions/pipe.c libmu_sieve/extensions/spamd.c
	libmu_sieve/extensions/timestamp.c
	libmu_sieve/extensions/vacation.c libmu_sieve/relational.c

	examples/numaddr.c

2016-11-26  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes.

	* libmu_sieve/sieve-priv.h (sieve_op_t) <unum>: New field.
	* libmu_sieve/sieve.l: Leave one string interpreter slot.

2016-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve list sorting API.

	* libmailutils/list/sort.c (mu_list_sort_r): New function.
	* include/mailutils/list.h: Provide prototype.

2016-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement RFC 5228, 2.4.2.4 (Encoding Characters Using
	"encoded-character")

	* libmu_sieve/encoded.c: New file.
	* libmu_sieve/strexp.c: New file.
	* libmu_sieve/Makefile.am: Add new files.
	* libmu_sieve/require.c (mu_sieve_require): Understand
	"encoded-character".
	* libmu_sieve/sieve-priv.h (mu_i_sv_interp_t): New typedef.
	(mu_i_sv_expand_encoded_char): New proto.
	(mu_sieve_require_encoded_character): New proto.
	* libmu_sieve/sieve.l (string): Rewrite via line_.* functions.
	This fixes memory leaks on mu_sieve_machine_destroy.
	(line_finish): Expand ${} sequences before returning.
	(mu_sieve_require_encoded_character): New function.
	* sieve/tests/enc-char.at: New file.
	* sieve/tests/Makefile.am: Add enc-char.at
	* sieve/tests/testsuite.at: Likewise.

2016-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: simplify action logging API.

	* include/mailutils/sieve.h (mu_sieve_action_log_t): Change
	proto.
	* lib/sieve.c (_sieve_action_log): Rewrite.
	* libmu_sieve/util.c (mu_sieve_log_action): Rewrite.
	* python/libmu_py/sieve.c (_sieve_action_printer): Rewrite.
	* sieve/sieve.c (_sieve_action_log): Rewrite.

2016-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: provide a separate stream for debugging output.

	* include/mailutils/sieve.h (MU_SIEVE_DEBUG_TRACE)
	(MU_SIEVE_DEBUG_INSTR,MU_SIEVE_DEBUG_DISAS)
	(MU_SIEVE_DRY_RUN): Remove.
	(mu_sieve_machine_init_ex): Remove proto.
	(mu_sieve_set_dbg_stream,mu_sieve_get_dbg_stream)
	(mu_sieve_stream_save)
	(mu_sieve_stream_restore): New protos.
	* libmu_sieve/runtime.c (INSTR_DISASS,INSTR_DEBUG):
	Reimplement.
	* libmu_sieve/sieve-priv.h (MU_SV_SAVED_ERR_STATE)
	(MU_SV_SAVED_DBG_STATE,MU_SV_SAVED_STATE): New bitflags.
	(mu_sieve_state_disass): New constant.
	(mu_sieve_machine)<state_flags, err_mode>
	<err_locus,dbg_mode,dbg_locus>: New members.
	<dbgstream>: New member.
	* libmu_sieve/sieve.y (mu_sieve_machine_init_ex): Remove.
	(mu_sieve_machine_dup, mu_sieve_machine_inherit): Fix.
	(mu_sieve_set_dbg_stream)
	(mu_sieve_get_dbg_stream): New functions.
	(mu_sieve_machine_destroy): Destroy dbgstream.
	(with_machine): Preserve stream state (mode & locus).
	* libmu_sieve/util.c (mu_i_sv_debug,mu_i_sv_debug_command): Use
	ioctl instead of format strings.
	(mu_sieve_stream_save, mu_sieve_stream_restore): New functions.
	* python/libmu_py/sieve.c (api_sieve_machine_init): Use
	mu_sieve_machine_init.
	* sieve/sieve.c: Improve help output.
	(main): Dump disassembled code to standard output.

2016-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Sieve: remove unused opcode.

	* libmu_sieve/runtime.c (_mu_i_sv_instr_nop): Remove.
	* libmu_sieve/sieve-priv.h: Likewise.

2016-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revamp debugging/tracing support.

	* bootstrap.conf (mu_sieve_debug, mu_sieve_trace): Remove.
	* include/mailutils/sieve.h (mu_sieve_debug): Remove. 
	* examples/numaddr.c: Remove calls to mu_sieve_trace.
	* libmu_sieve/extensions/list.c: Likewise.
	* libmu_sieve/extensions/moderator.c: Likewise.
	* libmu_sieve/extensions/pipe.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* libmu_sieve/extensions/timestamp.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libmu_sieve/tests.c: Likewise. 
	* libmu_sieve/runtime.c: Use new debugging/tracing functions.
	* libmu_sieve/sieve-priv.h (mu_i_sv_debug, mu_i_sv_trace)
	(mu_i_sv_debug_command)
	(mu_i_sv_argf, mu_i_sv_valf): New prototypes.
	* libmu_sieve/sieve.y (mu_i_sv_valf, mu_i_sv_argf): New
	functions.
	* libmu_sieve/util.c (mu_sieve_debug): Remove.
	(mu_i_sv_print_value_list): Remove.
	(mu_i_sv_print_tag_list): Remove.
	(mu_sieve_trace): Remove.
	(mu_i_sv_tagf): New function.
	(mu_i_sv_debug): New function.
	(mu_i_sv_trace): New function.
	(mu_i_sv_debug_command): New function.

2016-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typo.

2016-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Redo sieve debugging support.

	Instead of keeping individual debug flags for each Sieve
	machine, use global debugging mechanism, category "sieve". The
	following levels are defined:

	 trace1 - print parse tree before optimization
	 trace2 - print parse tree after optimization
	 trace3 - print parser traces
	 trace4 - print tests and actions being executed
	 trace8 - print disassembled code, don't run
	 trace9 - print each Sieve instruction being executed 
	* include/mailutils/sieve.h (mu_sieve_get_debug_level)
	(mu_sieve_set_debug_level): Remove.
	(mu_sieve_is_dry_run,mu_sieve_set_dry_run
	* lib/script.c (mu_script_debug_flags): Redo.
	* lib/sieve.c (sieve_init): Remove call to obsoleted
	mu_sieve_set_debug_level. 
	* examples/numaddr.c: Use mu_sieve_trace
	* libmu_sieve/extensions/list.c: Likewise.
	* libmu_sieve/extensions/moderator.c: Likewise.
	* libmu_sieve/extensions/pipe.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* libmu_sieve/extensions/timestamp.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libmu_sieve/tests.c: Likewise. 
	* libmu_sieve/runtime.c (INSTR_DEBUG,INSTR_DISASS): Rewrite.
	(mu_sieve_get_debug_level): Remove. (mu_sieve_is_dry_run_:
	Rewrite.
	(mu_sieve_set_dry_run): New function.
	(mu_sieve_disass): Rewrite.
	* libmu_sieve/sieve-priv.h (mu_sieve_machine) <debug_level>:
	Remove.
	<dry_run>: New field.
	* libmu_sieve/sieve.y (mu_sieve_set_debug_level): Remove.
	* libmu_sieve/util.c (mu_sieve_trace): New function.
	* sieve/sieve.c: Rewrite support for --dry-run and --debug. 
	* sieve/tests/ext.at: Use --libdir-prefix instead of -L

2016-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further cleanup of sieve namespace.

	Prefix internal function names with mu_i_

2016-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite sieve parser.

	Three objectives:

	1. Simplify code. 2. Produce optimized sieve code. 3. Improve
	error reporting. 4. Prepare for further extensions

	* include/mailutils/sieve.h (mu_sieve_tag_checker_t): Change
	signature (take mu_sieve_machine_t as the first arg). All uses
	changed.
	(mu_sieve_require): Likewise.
	(mu_sieve_yydebug): Remove global. 
	* libmu_sieve/sieve-priv.h (mu_locus_range): New struct.
	(YYLTYPE): New define
	(mu_sieve_state): New enum.
	(mu_sieve_machine): New members: string_pool, state.
	(mu_sieve_node_type): New enum.
	(mu_sieve_node): New struct. Remove unused prototypes. 
	* libmu_sieve/sieve.l: Keep track of code locations. Use opool
	for constructing string values.
	* libmu_sieve/sieve.y: Rewrite. First build the parse tree.
	Then optimize it. Finally, generate code.
	* libmu_sieve/tests.c (sieve_test_true,sieve_test_false):
	Remove. True and false tests are always optimized away.
	* libmu_sieve/util.c (mu_sv_compile_error): Remove. 
	* libmu_sieve/actions.c: Use mu_diag_at_locus to report errors
	and mu_i_sv_error to mark sieve machine as being in error
	state.
	* libmu_sieve/comparator.c: Likewise.
	* libmu_sieve/prog.c (mu_sv_code): Replace with mu_i_sv_code.
	(mu_sv_code_instr,mu_sv_code_handler)
	(mu_sv_code_list,mu_sv_code_number)
	(mu_sv_code_string,mu_sv_code_source)
	(mu_sv_code_line,mu_sv_change_source)
	(mu_sv_code_action,mu_sv_code_test)
	(mu_sv_code_anyof,mu_sv_code_allof): Remove.
	(mu_i_sv_locus,mu_i_sv_code_action)
	(mu_i_sv_code_test): New function.
	(mu_sv_code_command): Replace with a static function.
	* libmu_sieve/require.c (mu_sieve_require): Take ptr to machine
	as the first arg.
	* libmu_sieve/runtime.c (mu_sieve_mailbox)
	(mu_sieve_message): Refuse to run if the machine is in error
	state. 
	* sieve/sieve.c: Update.
	* sieve/tests/i-numeric.at: Update expected error message. 
	* libmailutils/diag/diag.c (mu_diag_at_locus): Don't pass locus
	if mu_file is NULL.
	* libmu_auth/ldap.c (_mu_entry_to_auth_data): Remove leftover
	mu_error.

2016-11-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix expansion of #, &, %, etc. in mail copy and file commands.

	This was accidentally broken by commit eea2c4aa.

	* include/mailutils/mailbox.h (mu_mailbox_expand_name): New
	proto.
	* libmailutils/mailbox/mbx_default.c (mu_mailbox_expand_name):
	New function.
	(mu_mailbox_create_default): Use it.
	(mu_set_folder_directory): Accept NULL as argument.
	(mu_folder_directory): Reset default value after assigning it.
	This way the folder directory still defaults to the same value
	as earlier, but can be reset to NULL, if so desired.
	(plus_expand): Return a copy of the input string if folder is
	NULL. 
	* mail/copy.c (append_to_mailbox): Use mu_mailbox_create, as
	the mailbox name has already been expanded.
	* mail/file.c (mail_expand_name): Use mu_mailbox_expand_name.
	(mail_file): Use mu_mailbox_create, as the mailbox name has
	already been expanded.
	* mail/mailvar.c (mailvar_cmd): New enum.
	(mailvar_symbol) <handler>: Change signature and return type.
	(mailvar_set): Rewrite. Take care not to modify the variable if
	the handler (if any) returns non-null or if the memory can't be
	allocated.
	(set_folder): Handler for the "folder" variable. 
	* mail/tests/copy01.at: New testcase.
	* mail/tests/copy02.at: New testcase.
	* mail/tests/copy03.at: New testcase.
	* mail/tests/copy04.at: New testcase.
	* mail/tests/Makefile.am: Add new tests.
	* mail/tests/testsuite.at (MUT_MAIL_CMD): Set MAILRC to
	/dev/null. Add new tests.

2016-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: restore -compose mode as default.

2016-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix program name duplicate in the output of "mailutils help
	COMMAND"

2016-11-07  Sergey Poznyakoff  <gray@gnu.org>

	Version 3.0.

2016-11-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix option sorting.

	* libmailutils/opt/opt.c (sort_group): Don't assume stability
	of the sort. Use auxiliary data structure to sort array of
	options that contain aliases.
	* libmailutils/tests/parseopt.c (set_prog_args): Fix delimiter.
	* libmailutils/tests/strtoc.c (v_cidr_format): Error checking.
	* maidag/Makefile.am (maidag_LDADD): Reorder libraries to make
	sure maidag uses freshly built libraries (not the ones already
	installed in the system).
	* mh/pick.c (options): Bugfix.

2016-11-05  Sergey Poznyakoff  <gray@gnu.org>

	Add missing documentation.

2016-11-05  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

2016-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix operation of mail -t; some other minor fixes.

	* mail/escape.c (parse_headers): Moved to send.c
	(check_headers): New function.
	(escape_continue): Use check_headers.
	* mail/mail.c (read_recipients): New variable. The -t option
	sets read_recipients and editheaders
	* mail/mail.h (parse_headers): New proto.
	* mail/send.c: Special handling for -t option.
	(parse_headers): New function.
	* movemail/movemail.c (onerror statement): Accept a list as
	argument. 
	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/programs.texi: Update.

2016-11-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix docs. Change argument of the field-map configuration
	statement.

	The field-map statement (.ldap.field-map & .sql.field-map)
	takes a list of mappings as argument. For compatibility and for
	internal purposes, a string is still allowed.

	* doc/texinfo/programs.texi: Update.
	* include/mailutils/cfg.h (mu_cfg_field_map): New proto.
	* include/mailutils/sql.h (mu_password_type): Rename.
	(mu_sql_module_config) <positional>: Remove.
	(mu_sql_decode_password_type): Remove prototype.
	* libmailutils/base/mutil.c (mu_sql_decode_password_type):
	Remove function.
	* libmailutils/cfg/driver.c (mu_cfg_field_map): New function.
	* libmu_auth/ldap.c (cb_field_map): Use mu_cfg_field_map.
	(module_init): Fix default filter.
	* libmu_auth/sql.c (cb_field_map): Use mu_cfg_field_map.
	(mu_sql_param): Rename "password-type" statement to
	"password-encryption". Remove the "positional" statement.

2016-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/cfg/parser.y (mu_cfg_parse_config): Silently
	ignore ENOENT

2016-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename default configuration file.

	The default configuration file name is "mailutils.conf". Legacy
	configuration file "mailutils.rc" is processed if necessary.

	* libmailutils/cli/cli.c: Rename main configuration file to
	mailutils.conf Remove 'rcfile' option aliases.
	(mu_cli_ext): Special handling for legacy configuration file.
	* NEWS: Update.
	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/programs.texi: Update.

2016-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve configuration file handling.

	* include/mailutils/cfg.h (mu_cfg_parse_hints): Rename
	site_rcfile to site_file, custom_rcfile to custom_file. Remove
	append_tree and data fields.
	(MU_PARSE_CONFIG_GLOBAL,MU_CFG_PARSE_PROGRAM): Remove.
	(MU_PARSE_CONFIG_VERBOSE): Rename to MU_CF_VERBOSE.
	(MU_PARSE_CONFIG_DUMP): Rename to MU_CF_DUMP.
	(MU_CFG_FMT_LOCUS): Rename to MU_CF_FMT_LOCUS.
	(MU_CFG_FMT_VALUE_ONLY): Rename to MU_CF_FMT_VALUE_ONLY.
	(MU_CFG_FMT_PARAM_PATH): Rename to MU_CF_FMT_PARAM_PATH. 
	(MU_CFG_COMPATIBILITY,MU_CFG_DEPRECATED): Remove.
	(mu_parse_config, mu_get_config): Remove deprecated functions. 
	* libmailutils/cli/cli.c (mu_general_help_text): New global.
	(app_data): New struct.
	(init_options): Construct configuration option group depending
	on which configuration files are in use.
	(mu_cli_ext): Don't use per-user configuration files for
	servers. Pass pointer to app_data structure as po.po_data
	(mu_cli): Set MU_CFHINT_PER_USER_FILE flag by default. 
	* mail/testsuite/lib/mail.exp: Rewrite invocation of the
	mu_init command.
	* include/mailutils/cli.h (mu_cli_setup) <server>: New field. 
	* comsat/comsat.c (cli): Mark as server.
	(main): Bugfix: pass pointer to server to mu_cli.
	* imap4d/imap4d.c (cli): Mark as server.
	* pop3d/pop3d.c: Likewise. 
	* comsat/tests/testsuite.at: Use the --no-site-config option.
	* imap4d/tests/testsuite.at: Likewise. 
	* libmailutils/cfg/driver.c: Update.
	* libmailutils/cfg/format.c: Update.
	* libmailutils/cfg/lexer.l: Update.
	* libmailutils/cfg/parser.y: Update.
	* mu/acl.c: Update. 
	* pop3d/testsuite/lib/pop3d.exp: Likewise. 
	* mu/mu.c: Don't read configuration files.
	* mu/query.c: Fix args_doc 
	* testsuite/lib/mailutils.exp (mu_init): Change option
	handling. Set --no-config option by default.

2016-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix in logstream.

	* libmailutils/stream/logstream.c (_log_write): Force
	MU_LOG_LOCUS mode if the locus is given explicitly.

2016-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in MH.

	* mh/mh_getopt.c (mh_opt_notimpl_warning): For boolean options,
	don't emit warning if the value would be set to false.
	* mh/anno.c: Fix the type of boolean unimplemented options.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/send.c: Likewise.

2016-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2016-10-30  Sergey Poznyakoff  <gray@gnu.org>

	Improve opool API.

	* configure.ac: Version 2.99.993
	* NEWS: Update. 
	* include/mailutils/opool.h (MU_OPOOL_DEFAULT)
	(MU_OPOOL_ENOMEMABRT): New defines.
	(mu_opool_create): Change meaning of the 2nd argument. All uses
	updated.
	(mu_opool_free, mu_opool_dup): New proto.
	* libmailutils/base/opool.c (_mu_opool) <memerr>: Replace with
	flags.
	<head,tail,free>: Rename.
	(mu_opool_free, mu_opool_dup): New functions.
	(mu_opool_head): Bugfix.

2016-10-29  Sergey Poznyakoff  <gray@gnu.org>

	Remove old compatibility quirks.

2016-10-29  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

2016-10-29  Sergey Poznyakoff  <gray@gnu.org>

	Remove left over references to argp; other bugfixes.

2016-10-28  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* configure.ac: Version 2.99.992
	* NEWS: Update.
	* libmailutils/opt/opt.c (add_option_cache): Use opt_default if
	no argument is given.

2016-10-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

2016-10-24  Sergey Poznyakoff  <gray@gnu.org>

	Improve program usage output.

	* include/mailutils/opt.h (MU_PARSEOPT_SPECIAL_ARGS): New flag.
	(mu_parseopt)<po_special_args>: New field.
	* libmailutils/opt/help.c (option_summary)
	(print_program_usage): Print po_special_args, if defined.
	* libmailutils/opt/opt.c (parseopt_init): Initialize
	po_special_args unless MU_PARSEOPT_SPECIAL_ARGS is set.

	MH: Advertise [+FOLDER] special argument if the -folder option
	is declared. 
	* mh/mh_getopt.c (folder_option): Bugfix: -folder takes
	argument.
	(mh_getopt): Set po_special_args if the -folder option is
	declared.
	* mh/inc.c: Fix arg_doc.
	* mh/mhpath.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/show.c: Likewise.

2016-10-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

2016-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmailutils/cli/cli.c (mu_cli_ext): Initialize hints.data
	(accidentally deleted).
	* libmailutils/opt/help.c (mu_option_describe_options): Don't
	display dup_args_note in single-dash mode.
	* libmailutils/opt/progname.c (mu_set_program_name): Free the
	old value after allocating new copy. This allows to pass
	mu_full_program_name as argument. Set mu_program_name to point
	to a segment of mu_full_program_name, not the original arg.
	* mh/mh_getopt.c: Remove duplicate version option.
	* po/POTFILES.in: Add missing files.

2016-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Provide extended interface to mu_cli.

	* include/mailutils/cfg.h (MU_CFG_APPEND_TREE): New flag.
	* include/mailutils/cli.h (mu_version_copyright): New extern.
	(mu_cli_ext): New proto.
	* libmailutils/cfg/parser.y (mu_cfg_parse_config): Check for
	MU_CFG_APPEND_TREE bit set before accessing hints->append_tree.
	* libmailutils/cli/cli.c (param_set): Likewise.
	(mu_cli_ext): New function.
	(mu_cli): Rewrite as an entry point to mu_cli_ext. 
	* comsat/comsat.c: Remove inclusion of obsolete headers.
	* mu/help.c: Likewise.
	* pop3d/extra.c: Likewise.

2016-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

	* libmu_auth/ldap.c: Fix compilation without ldap
	* mh/mh_getopt.c: Fix version output to match what MH-E expects

2016-10-22  Sergey Poznyakoff  <gray@gnu.org>

	MH: Fix MH-E compatibility.

	* include/mailutils/cli.h (mu_version_func): Rename to
	mu_version_hook.
	* libmailutils/cli/cli.c: Likewise.
	* pop3d/popauth.c: Likewise.
	* mh/mh_getopt.c: (mh_getopt): Initialize NLS support. Install
	standard version hook (needed for mh-e autodetect feature). 
	* mh/ali.c: Update prog_doc. Remove NLS initialization.
	* mh/anno.c: Likewise
	* mh/burst.c: Likewise
	* mh/comp.c: Likewise
	* mh/fmtcheck.c: Likewise
	* mh/folder.c: Likewise
	* mh/forw.c: Likewise
	* mh/inc.c: Likewise
	* mh/install-mh.c: Likewise
	* mh/mark.c: Likewise
	* mh/mhl.c: Likewise
	* mh/mhn.c: Likewise
	* mh/mhparam.c: Likewise
	* mh/mhpath.c: Likewise
	* mh/mhseq.c: Likewise
	* mh/msgchk.c: Likewise
	* mh/pick.c: Likewise
	* mh/prompter.c: Likewise
	* mh/refile.c: Likewise
	* mh/repl.c: Likewise
	* mh/rmf.c: Likewise
	* mh/rmm.c: Likewise
	* mh/scan.c: Likewise
	* mh/send.c: Likewise
	* mh/show.c: Likewise
	* mh/sortm.c: Likewise
	* mh/whatnow.c: Likewise
	* mh/whom.c: Likewise

2016-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Finish conversion of MH utilities to mh_parseopt.

	This finishes work started at commit bc73fc65.

	* include/mailutils/opt.h (mu_option_cache) <cache_arg>: Made
	const.
	* libmailutils/opt/opt.c (mu_option_cache_destroy): Don't free
	cache_arg.
	* doc/texinfo/mu-mh.texi: Update. 
	* po/POTFILES.in: Remove obsolete files.
	* mh/tests/refile.at: Don't use double-dash options. 
	* mh/mh_getopt.c (mh_opt_set_folder): New function.
	* mh/mh_getopt.h: Likewise. 
	* mh/mhn.c: Convert to mh_getopt.
	* mh/mhparam.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/mhseq.c: Likewise.
	* mh/msgchk.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/pick.h: Likewise.
	* mh/pick.y: Likewise.
	* mh/prompter.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/show.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/whom.c: Likewise.

2016-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Begin rewriting MH to get rid of argp stuff.

	MH utilities will use only single-dash long options.

	* include/mailutils/opt.h (mu_option) <opt_default>: New
	member.
	* libmailutils/opt/opt.c (find_long_option): Improve detection
	of ambiguous options.
	(mu_option_set_value): Use default value (opt_default), if
	supplied.
	* mh/mh_argp.c: Delete.
	* mh/Makefile.am (libmh_a_SOURCES): Remove mh_argp.c
	* mh/mh_getopt.c: Rewrite from scratch using mailutils/opt
	* mh/mh_getopt.h: Likewise.
	* mh/mh.h: Add missing includes
	(mh_read_formfile, mh_alias_read): Change signatures.
	* mh/mh_alias.l (mh_alias_read): Name is const
	* mh/mh_init.c (mh_read_formfile): Name is const. 
	* mh/ali.c: Convert to mh_getopt.
	* mh/anno.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/scan.c: Likewise. 
	* mh/tests/burst.at: Don't use double-dash options
	* mh/tests/folder.at: Likewise.

2016-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Support for single-dash long options (as in MH) and negation
	for boolean options.

	* include/mailutils/opt.h (MU_PARSEOPT_SINGLE_DASH)
	(MU_PARSEOPT_NEGATION): New flags.
	(mu_parseopt) <po_negation, po_long_opt_start>: New fields.
	(mu_option_describe_options): Change signature.
	* libmailutils/opt/help.c (init_usage_vars): Initialize
	long_opt_col depending on the value of MU_PARSEOPT_SINGLE_DASH
	bit.
	(print_option): Handle single-dash long options and boolean
	options with negations.
	(option_summary): Likewise.
	(mu_option_describe_options): Take struct mu_parseopt * as its
	second parameter.
	* libmailutils/opt/opt.c (find_long_option): Handle boolean
	options with negations. Return also a pointer to the mu_option
	describing the originally used option (as opposed to the
	canonical one returned by the function).
	(parse): Handle single-dash long options.
	(parseopt_init): Initialize po_negation and po_long_opt_start.
	* libmailutils/tests/parseopt.c (parseopt_param): Handle
	MU_PARSEOPT_SINGLE_DASH and MU_PARSEOPT_NEGATION.

2016-10-20  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in wordwrapper stream.

	* libmailutils/stream/wordwrap.c (set_margin): Flush the stream
	if the new margin equals the current offset.
	(_wordwrap_write): Fix conditional

2016-10-20  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* mu/ldflags.c: Ignore "cfg" and "argp" keywords.

2016-10-19  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2016-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename MU_APP_NEW_LIBRARIES back to MU_APP_LIBRARIES. Version
	2.99.991.

2016-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Convert remaining utilities (except mh) to mu_cli.

	* Makefile.am: Remove libmu_argp and libmu_cfg
	* configure.ac: Likewise.
	* libmu_argp/: Remove.
	* libmu_cfg/: Remove.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Remove
	gocs.h, libargp.h, libcfg.h 
	* frm/frm.c: Register tls auth module
	* frm/from.c: Likewise.
	* maidag/maidag.c: Likewise.
	* mail/mail.c: Likewise.
	* messages/messages.c: Likewise.
	* movemail/movemail.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.
	* frm/frm.h: Remove obsolete includes 
	* imap4d/Makefile.am: Update.
	* imap4d/imap4d.c: Use mu_cli for command line and
	configuration parsing.
	* imap4d/imap4d.h: Update. 
	* include/mailutils/gocs.h: Remove.
	* libmailutils/cfg/gocs.c: Remove.
	* libmailutils/cfg/Makefile.am: Remove gocs.c 
	* include/mailutils/cli.h (mu_cli_capa_apply): Rename to
	mu_cli_capa_extend_settings
	(mu_cli_setup) <inorder, prog_doc_hook>: New fields.
	* include/mailutils/daemon.h: Remove obsolete includes.
	* include/mailutils/gsasl.h: Likewise.
	* include/mailutils/mailutils.h: Update.
	* include/mailutils/mu_auth.h (mu_auth_mode): New enum
	(mu_auth_module): Redo structure.
	* include/mailutils/opt.h (mu_parseopt) <po_prog_doc_hook>: New
	field.
	* include/mailutils/sql.h (mu_sql_module_config): New extern.
	(mu_sql_interface_index): Change proto.
	* libmailutils/auth/mu_auth.c: Rewrite.
	* libmailutils/auth/system.c (mu_auth_system_module): Update
	structure
	* libmailutils/cli/capa.c (mu_cli_capa_apply): Rename to
	mu_cli_capa_extend_settings
	* libmailutils/cli/cli.c: Extend settings from auth modules as
	well.
	* libmailutils/opt/help.c (mu_program_help): Invoke
	po_prog_doc_hook if defined.
	* libmailutils/opt/opt.c (parseopt_init): Check the
	MU_PARSEOPT_PROG_DOC_HOOK flag.
	(find_long_option): Fix recognition of ambiguous options in
	case of exact match.
	* libmu_auth/gsasl.c: Add configuration.
	* libmu_auth/ldap.c: Likewise.
	* libmu_auth/pam.c: Likewise.
	* libmu_auth/radius.c: Likewise.
	* libmu_auth/sql.c: Likewise.
	* libmu_auth/tls.c: Likewise.
	* libmu_auth/virtual.c: Likewise. 
	* mu/Makefile.am: Update.
	* mu/mu.c: Rewrite using mu_cli
	* mu/mu.h: Likewise.
	* mu/acl.c: Likewise.
	* mu/cflags.c: Likewise.
	* mu/dbm.c: Likewise.
	* mu/dispatch.c: Likewise.
	* mu/filter.c: Likewise.
	* mu/flt2047.c: Likewise.
	* mu/getans.c: Likewise.
	* mu/getarg.c: Likewise.
	* mu/getyn.c: Likewise.
	* mu/help.c: Likewise.
	* mu/imap.c: Likewise.
	* mu/info.c: Likewise.
	* mu/ldflags.c: Likewise.
	* mu/logger.c: Likewise.
	* mu/pop.c: Likewise.
	* mu/query.c: Likewise.
	* mu/send.c: Likewise.
	* mu/shell.c: Likewise.
	* mu/smtp.c: Likewise.
	* mu/util.c: Likewise.
	* mu/verbose.c: Likewise.
	* mu/wicket.c: Likewise. 
	* pop3d/Makefile.am: Update.
	* pop3d/pop3d.c: Convert to mu_cli interface.
	* pop3d/pop3d.h: Likewise. 
	* sql/sql.c (mu_sql_interface_index): Change argument
	qualifiers.

2016-10-17  Sergey Poznyakoff  <gray@gnu.org>

	Convert pop3d to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Convert popauth to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Convert maidag to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Convert comsat to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Convert examples to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix in help output.

	Print "[OPTION...]", instead of "[OPTION]..."

2016-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Convert mail to mu_cli.

2016-10-16  Sergey Poznyakoff  <gray@gnu.org>

	Allow for multiple argument sets in help output.

	Alternative invocations follow the main one, each on a separate
	line, preceded by " or: ".

	* include/mailutils/cli.h (mu_cli_setup) <prog_alt_args>: New
	member.
	* include/mailutils/opt.h (mu_parseopt) <po_prog_args>: Change
	type.
	(mu_program_usage): Change signature.
	* include/mailutils/stream.h (MU_IOCTL_WORDWRAP_GET_OFFSET):
	Rename to MU_IOCTL_WORDWRAP_GET_COLUMN. All uses changed.
	* libmailutils/cli/cli.c (mu_cli): Construct po.po_prog_args
	from prog_args and prog_alt_args.
	* libmailutils/opt/help.c (move_margin): Remove.
	(print_program_usage): New static function.
	(mu_program_usage): Second argument instructs how to display
	options. Main work is done by print_program_usage.
	(mu_program_help): Call print_program_usage.
	* libmailutils/opt/opt.c: Update.
	* libmailutils/stream/wordwrap.c (set_margin): Avoid
	unnecessary flushes. 
	* libmailutils/tests/parseopt.c (MU_PARSEOPT_PROG_ARGS):
	Alternative argument sets are separated by the pipe sign.
	* libmailutils/tests/Makefile.am: Add new testcase.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/parseopt_help04.at: Add
	MU_PARSEOPT_PROG_ARGS to keywords.
	* libmailutils/tests/parseopt_help12.at: New file. 
	* libmailutils/tests/tcli.c (cli): Add alternative arguments. 
	* dotlock/dotlock.c: Update.
	* mimeview/mimeview.c: Likewise.
	* sieve/sieve.c: Likewise.

2016-10-15  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite parseopt help routines using wordwrap streams.

	* include/mailutils/stream.h
	(MU_IOCTL_WORDWRAP_SET_NEXT_MARGIN)
	(MU_IOCTL_WORDWRAP_GET_OFFSET): New opcodes.
	* libmailutils/stream/wordwrap.c (_wordwrap_flush_line):
	Replace whitespace-only lines with single newline on output.
	(_wordwrap_flush): Fix condition.
	(set_margin): Bugfix.
	(_wordwrap_ctl): Handle new opcodes. 
	* include/mailutils/cli.h (mu_version_func): Change signature.
	* include/mailutils/opt.h (mu_parseopt) <po_help_hook>
	<po_version_hook>: Change signature.
	(mu_parseopt_fmt_text): Remove. (mu_option_describe_options,
	mu_program_help)
	(mu_program_usage): Change signature.
	(mu_program_version): New prototype.
	* libmailutils/cli/cli.c (mu_version_func): Take mu_stream_t as
	2nd argument. Use mu_stream_printf for output.
	(extra_help_hook): Likewise.
	* libmailutils/opt/help.c: Rewrite using wordwrap streams.
	* libmailutils/opt/opt.c (fn_help, fn_usage, fn_version):
	Update.
	* libmailutils/tests/parseopt.c (version_hook): Write to
	mu_stream_t. 
	* libmailutils/tests/parseopt_help00.at: Fix expected output.
	* libmailutils/tests/parseopt_help01.at: Likewise.
	* libmailutils/tests/parseopt_help02.at: Likewise.
	* libmailutils/tests/parseopt_help03.at: Likewise.
	* libmailutils/tests/parseopt_help04.at: Likewise.
	* libmailutils/tests/parseopt_help05.at: Likewise.
	* libmailutils/tests/parseopt_help06.at: Likewise.
	* libmailutils/tests/parseopt_help07.at: Likewise.
	* libmailutils/tests/parseopt_help08.at: Likewise.
	* libmailutils/tests/parseopt_help09.at: Likewise.
	* libmailutils/tests/parseopt_help10.at: Likewise.
	* libmailutils/tests/parseopt_help11.at: Likewise.

2016-10-14  Sergey Poznyakoff  <gray@gnu.org>

	Implement simple word-wrapping stream.

	* include/mailutils/stream.h (MU_IOCTL_WORDWRAPSTREAM): New
	ioctl.
	(mu_wordwrap_stream_create): New proto.
	* libmailutils/stream/Makefile.am: add wordwrap.c
	* libmailutils/stream/wordwrap.c: New file.
	* libmailutils/tests/Makefile.am: Add new testcases.
	* libmailutils/tests/testsuite.at: Include new testcases.
	* libmailutils/tests/wordwrap.c: New file.
	* libmailutils/tests/wordwrap00.at: New file.
	* libmailutils/tests/wordwrap01.at: New file.
	* libmailutils/tests/wordwrap02.at: New file.
	* libmailutils/tests/wordwrap03.at: New file.

2016-10-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in libmailutils/opt/opt.c.

2016-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix some incompatibilities in the previous commit.

	* dotlock/dotlock.c (force): Change type to unsigned. Provide
	default value for --force.
	(cli): Set exit codes and extra docstring. 
	* include/mailutils/cli.h (mu_cli_setup): New members:
	prog_extra_doc, ex_usage, ex_config.
	* include/mailutils/opt.h (mu_parseopt_getcolumn)
	(mu_parseopt_fmt_text): New prototypes.
	* libmailutils/cli/cli.c (extra_help_hook): New hook.
	(mu_cli): Set up customized exit codes. Pass pointer to struct
	mu_cli_setup in hints.data. All uses changed. Set up help hook
	if setup->prog_extra_doc is defined. 
	* libmailutils/opt/help.c (mu_parseopt_getcolumn): New
	function.
	(print_option_descr): Honor explicit newlines.
	(mu_parseopt_fmt_text): New function. 
	* mimeview/mimeview.c (cli): Provide extra docs.
	* sieve/sieve.c: Likewise.

2016-10-12  Sergey Poznyakoff  <gray@gnu.org>

	Convert to mu_cli: frm, from, messages, mimeview, movemail,
	readmsg, sieve.

	* configure.ac (MU_APP_NEW_LIBRARIES): New temp variable. 
	* include/mailutils/sieve.h (mu_cli_capa_sieve): New extern.
	* include/mailutils/tls.h (mu_cli_capa_tls): New extern. 
	* libmailutils/cli/cli.c: Minor change.
	* libmailutils/cli/stdcapa.c: Add "auth" capability. 
	* libmu_auth/tls.c: provide mu_cli_capa_tls 
	* dotlock/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* dotlock/dotlock.c 
	* frm/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* frm/frm.h: Fix includes.
	* frm/frm.c: Use mu_cli for option & config parsing.
	* frm/from.c: Likewise. 
	* messages/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* messages/messages.c: Use mu_cli for option & config parsing. 
	* mimeview/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* mimeview/mimeview.c: Use mu_cli for option & config parsing. 
	* movemail/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* movemail/movemail.c: Use mu_cli for option & config parsing. 
	* readmsg/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* readmsg/readmsg.c: Use mu_cli for option & config parsing. 
	* sieve/Makefile.am: Link with MU_APP_NEW_LIBRARIES
	* sieve/sieve.c: Use mu_cli for option & config parsing.

2016-10-11  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libmailutils/opt/opt.c (find_long_option): Don't mark
	ambiguity if the matching option unaliases to the same option
	as the found one.

2016-10-11  Sergey Poznyakoff  <gray@gnu.org>

	Introduce new CLI/configuration code for mailutils
	applications.

	The new API is to replace libmu_cfg and libmu_argp. A smooth
	transition is scheduled, during which the two APIs will
	coexist,

	* configure.ac: Build libmailutils/cli/Makefile
	* include/mailutils/cli.h: New file.
	* include/mailutils/Makefile.am: Add cli.h
	* libmailutils/cli/Makefile.am: New file.
	* libmailutils/cli/capa.c: New file.
	* libmailutils/cli/cli.c: New file.
	* libmailutils/cli/stdcapa.c: New file.
	* libmailutils/Makefile.am (SUBDIRS): Add cli. 
	* include/mailutils/cfg.h (mu_cfg_parse_hints): New members:
	append_tree and data.
	(MU_PARSE_CONFIG_LINT): New flag.
	* include/mailutils/diag.h (mu_program_name)
	(mu_full_program_name): Remove const qualifier.
	* include/mailutils/locker.h
	(mu_locker_set_default_external_program): Argument is const.
	* libmailutils/base/locker.c: Likewise. 
	* include/mailutils/opt.h (mu_progname, mu_absprogname):
	Replace with mu_program_name and mu_full_program_name.
	(mu_set_progname): Rename to mu_set_program_name.
	(mu_parseopt) <po_data>: Change type to void *.
	(po_help_hook, po_version_hook): Change signatures.
	(mu_parseopt_error): New function.
	* libmailutils/opt/progname.c (mu_progname, mu_absprogname):
	Replace with mu_program_name and mu_full_program_name.
	(mu_set_progname): Rename to mu_set_program_name.
	* libmailutils/opt/help.c: Minor changes
	* libmailutils/opt/opt.c (parse_error): Rename to
	mu_parse_error (extern).
	(next_opt): Fix permutations.
	* libmailutils/tests/parseopt.c: Reflect changes.
	* libmailutils/tests/parseopt17.at: Improve test case
	* libmailutils/tests/parseopt_help05.at: Reflect changes.
	* libmailutils/tests/parseopt_help07.at: Reflect changes. 
	* include/mailutils/stdstream.h (mu_program_name): Remove
	qualifier. 
	* libmailutils/cfg/driver.c (mu_cfg_tree_reduce): Remove
	useless condition 
	* libmailutils/cfg/lexer.l (mu_cfg_parse_file): Additional info
	messages.
	* libmailutils/cfg/parser.y (mu_cfg_parse_config): Join in the
	append_tree.
	* libmailutils/diag/diag.c (mu_program_name,
	mu_full_program_name)
	(mu_set_program_name): Remove. Declared elsewhere.
	* libmu_sieve/conf.c: Add new configuration code. Mark old text
	for removal.
	* libmailutils/tests/tcli.c: New program.
	* libmailutils/tests/Makefile.am: Add tcli.c

2016-10-10  Sergey Poznyakoff  <gray@gnu.org>

	Raise shared library version number.

	* configure.ac (VI_CURRENT): Set to 5 Don't link intprops.h
	* gnulib: Upgrade.
	* gnulib.modules (intprops) Remove.
	* libmailutils/cfg/parser.y: Don't include intprops.h
	* po/POTFILES.in: Add new files.

2016-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing test.

2016-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix help output.  Test it.

	* include/mailutils/opt.h (MU_PARSEOPT_EXTRA_INFO)
	(MU_PARSEOPT_EXIT_ERROR): New flags.
	(struct mu_parseopt) <po_extra_info>: New member.
	<po_exit_error>: New member.
	* libmailutils/opt/help.c: Fix help output formatting.
	Implement support for ARGP_HELP_FMT envvar.
	* libmailutils/opt/opt.c (add_option_cache): Honor
	MU_PARSEOPT_IMMEDIATE.
	(parseopt_init): Initialize each member separately. 
	* libmailutils/tests/parseopt.c: Rewrite envvar handling.
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/testsuite.at (PARSEOPT_DEFAULT): New
	define.
	* libmailutils/tests/parseopt00.at: Use PARSEOPT_DEFAULT.
	* libmailutils/tests/parseopt01.at: Likewise.
	* libmailutils/tests/parseopt02.at: Likewise.
	* libmailutils/tests/parseopt03.at: Likewise.
	* libmailutils/tests/parseopt04.at: Likewise.
	* libmailutils/tests/parseopt05.at: Likewise.
	* libmailutils/tests/parseopt06.at: Likewise.
	* libmailutils/tests/parseopt07.at: Likewise.
	* libmailutils/tests/parseopt08.at: Likewise.
	* libmailutils/tests/parseopt09.at: Likewise.
	* libmailutils/tests/parseopt10.at: Likewise.
	* libmailutils/tests/parseopt11.at: Likewise.
	* libmailutils/tests/parseopt12.at: Likewise.
	* libmailutils/tests/parseopt13.at: Likewise.
	* libmailutils/tests/parseopt14.at: Likewise.
	* libmailutils/tests/parseopt15.at: Likewise.
	* libmailutils/tests/parseopt16.at: Likewise.
	* libmailutils/tests/parseopt17.at: Likewise.
	* libmailutils/tests/parseopt18.at: Likewise.
	* libmailutils/tests/parseopt19.at: Likewise.
	* libmailutils/tests/parseopt20.at: Likewise.
	* libmailutils/tests/parseopt21.at: Likewise.
	* libmailutils/tests/parseopt22.at: Likewise.
	* libmailutils/tests/parseopt23.at: New test.
	* libmailutils/tests/parseopt24.at: New test.
	* libmailutils/tests/parseopt25.at: New test.
	* libmailutils/tests/parseopt_help00.at: New test.
	* libmailutils/tests/parseopt_help01.at: New test.
	* libmailutils/tests/parseopt_help02.at: New test.
	* libmailutils/tests/parseopt_help03.at: New test.
	* libmailutils/tests/parseopt_help04.at: New test.
	* libmailutils/tests/parseopt_help05.at: New test.
	* libmailutils/tests/parseopt_help06.at: New test.
	* libmailutils/tests/parseopt_help07.at: New test.
	* libmailutils/tests/parseopt_help08.at: New test.
	* libmailutils/tests/parseopt_help09.at: New test.
	* libmailutils/tests/parseopt_help10.at: New test.
	* libmailutils/tests/parseopt_help11.at: New test.

2016-10-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix mu_parseopt. Add testsuite for it.

	* include/mailutils/opt.h (mu_parseopt) <po_permuted>: New
	member.
	* libmailutils/opt/help.c (print_option): Fix display of
	optional arguments.
	* libmailutils/opt/opt.c (next_opt,parse): Fix
	start-of-arguments index. Move permutation into a separate
	function.
	* libmailutils/opt/progname.c (mu_set_progname): Remove
	eventual lt- prefix.
	* libmailutils/tests/Makefile.am: Add new tests.
	* libmailutils/tests/parseopt.c: Use environment to control
	mu_parseopt flags.
	* libmailutils/tests/testsuite.at: Add new tests.
	* libmailutils/tests/strtoc.at: Update. 
	* libmailutils/tests/parseopt00.at: New file.
	* libmailutils/tests/parseopt01.at: New file.
	* libmailutils/tests/parseopt02.at: New file.
	* libmailutils/tests/parseopt03.at: New file.
	* libmailutils/tests/parseopt04.at: New file.
	* libmailutils/tests/parseopt05.at: New file.
	* libmailutils/tests/parseopt06.at: New file.
	* libmailutils/tests/parseopt07.at: New file.
	* libmailutils/tests/parseopt08.at: New file.
	* libmailutils/tests/parseopt09.at: New file.
	* libmailutils/tests/parseopt10.at: New file.
	* libmailutils/tests/parseopt11.at: New file.
	* libmailutils/tests/parseopt12.at: New file.
	* libmailutils/tests/parseopt13.at: New file.
	* libmailutils/tests/parseopt14.at: New file.
	* libmailutils/tests/parseopt15.at: New file.
	* libmailutils/tests/parseopt16.at: New file.
	* libmailutils/tests/parseopt17.at: New file.
	* libmailutils/tests/parseopt18.at: New file.
	* libmailutils/tests/parseopt19.at: New file.
	* libmailutils/tests/parseopt20.at: New file.
	* libmailutils/tests/parseopt21.at: New file.
	* libmailutils/tests/parseopt22.at: New file.

2016-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_c_type_t throughout the code.  Get rid of
	mu_cfg_param_data_type.

	* include/mailutils/cfg.h (mu_cfg_param_data_type): Remove.
	(mu_cfg_param_type): New enum.
	(mu_cfg_param) <type>: Change type to int.
	(mu_cfg_cidr): Remove.
	(mu_cfg_parse_boolean): Remove. All uses updated.
	* include/mailutils/util.h (mu_c_void): New constant.
	(mu_c_type_str): New extern/
	* libmailutils/string/str_to_c.c (mu_c_type_str): New global.
	* libmailutils/cfg/format.c (mu_cfg_data_type_string): Rename
	to mu_c_type_string; change argument type. All uses updated.
	* libmailutils/cfg/parser.y: Use mu_str_to_c for value
	conversion. 
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Add strtoc.at; build strtoc
	* libmailutils/tests/strtoc.at: New file.
	* libmailutils/tests/strtoc.c: New file.
	* libmailutils/tests/testsuite.at: Include strtoc.at 
	* comsat/comsat.c: Use mu_c_type_t types.
	* dotlock/dotlock.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* lib/manlock.c: Likewise.
	* lib/tcpwrap.c: Likewise.
	* libmailutils/server/msrv.c: Likewise.
	* libmu_argp/muinit.c: Likewise.
	* libmu_cfg/common.c: Likewise.
	* libmu_cfg/gsasl.c: Likewise.
	* libmu_cfg/ldap.c: Likewise.
	* libmu_cfg/pam.c: Likewise.
	* libmu_cfg/radius.c: Likewise.
	* libmu_cfg/sieve.c: Likewise.
	* libmu_cfg/sql.c: Likewise.
	* libmu_cfg/tls.c: Likewise.
	* libmu_cfg/virtdomain.c: Likewise.
	* maidag/maidag.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

2016-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add generic library for option parsing.

	* configure.ac: Build libmailutils/opt
	* include/mailutils/Makefile.am: Add opt.h
	* include/mailutils/opt.h: New file.
	* include/mailutils/util.h (mu_c_type_t): New datatype.
	(mu_str_to_c): New proto.
	* libmailutils/Makefile.am: Add opt to subdirs. 
	* libmailutils/opt/Makefile.am: New file.
	* libmailutils/opt/help.c: New file.
	* libmailutils/opt/opt.c: New file.
	* libmailutils/opt/progname.c: New file. 
	* libmailutils/string/Makefile.am: Add new files.
	* libmailutils/string/str_to_c.c: New file.
	* libmailutils/string/to_sn.c: New file.
	* libmailutils/string/to_un.c: New file. 
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Update.
	* libmailutils/tests/parseopt.c: New file.

2016-10-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mh/rmf.c (current_folder_path): Treat name as folder while
	expanding.
	* mail/unset.c (mail_unset): Fix the behavior when no arguments
	were given.

2016-08-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow to configure the length of the backlog queue for TCP
	servers.

	New statement backlog is provided in the server block.

	* include/mailutils/server.h (mu_m_server_cfg_init): Pass
	mu_m_server_t as first argument.
	* libmailutils/server/msrv.c (mu_m_server_cfg_init): Pass
	mu_m_server_t as first argument. Customize available statements
	depending on the type of server (tcp vs udp). New statement
	"backlog" available for tcp servers. 
	* comsat/comsat.c: Update call to mu_m_server_cfg_init
	* imap4d/imap4d.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* maidag/maidag.c: Likewise.

2016-08-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmailutils/tests/modtofsaf.c (main): Trivial fix.
	* mail/mail.c: Support "address" capability.
	* mu/shell.c: Trivial fixes

2016-08-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Force using gnu-mh in Emacs after loading mailutils-mh.

	* mh/etc/mailutils-mh.eli: Force using gnu-mh

2016-08-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix docstrings for -nowhatnowproc.

2016-08-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: fix the -nowhatnowproc option.

	The -nowhatnowproc option inhibits the invocation of whatnow,
	and consequently, prevents the editing of the draft from
	occurring.

2016-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory allocation in libmu_imap.

	* libproto/imap/tag.c (_mu_imap_tag_incr): Fix size calculation
	when reallocating tag_buf
	(_mu_imap_tag_clr): Re-initialize members on error.

2016-06-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revert changes to msgset test utility.

	The changes would be nice, if it weren't for the fact that
	libproto is not yet built by the time libmailutils/tests are
	compiled.

2016-06-15  Sergey Poznyakoff  <gray@gnu.org>

	Gracefully handle empty mailboxes in mu_msgset_parse_imap.

	* libmailutils/msgset/parse.c (MU_MSGSET_EMPTY): New constant.
	(parse_msgrange): Don't add any ranges if mode is set to
	MU_MSGSET_EMPTY.
	(mu_msgset_parse_imap): Force MU_MSGSET_EMPTY mode if the
	mailbox is empty.
	* libmailutils/msgset/print.c (mu_msgset_print): Handle empty
	message sets.
	* libmailutils/msgset/trans.c (_mu_msgset_translate_pair):
	Initialize variable.
	* libmailutils/tests/Makefile.am (msgset_LDADD): New variable.
	* libmailutils/tests/msgset.c (parse_msgset): Take mailbox as
	first argument.
	(main): New option -mailbox

2016-02-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mu/smtp.cÐ(com_list_param): Report if the connection has not
	been established yet.

2016-01-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix build without tcpwrappers.

	* configure.ac (MU_TCPWRAP_LIBRARIES): New subst variable.
	Always includes lib/libmutcpwrap.a. If libwrap is present on
	the system and required, it is included as well
	* imap4d/Makefile.am (TCPWRAP_LIBRARIES): Replace with
	MU_TCPWRAP_LIBRARIES.
	* maidag/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.

2016-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

2015-12-19  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix in wordsplit test program.

	* libmailutils/tests/wsp.c (make_env_kv): Fix array size.

2015-11-11  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

	* bootstrap.conf: Don't try to download anything if --help is
	given

2015-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes.

	* libmu_argp/mailutils.c: Include argp-namefrob.h
	* libproto/mailer/smtp_auth.c (get_ticket)
	 (_mu_smtp_fixup_params): Protect with WITH_GSASL

2015-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix linking.

	* configure.ac (MU_APP_LIBRARIES): Add libmuaux.la. This
	complements a41e62b9 and fixes linking on systems that are
	unable to track dynamic library dependencies.

2015-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document Sieve extensions.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	vacation: read message body from the file.

	* doc/texinfo/sieve.texi: Document recent changes to vacation.
	* libmu_sieve/extensions/vacation.c (vacation_reply): Handle
	the "rfc2822" tag: if set together with :file, treat the file
	as the RFC2822 message. Otherwise, read message body from it.
	* sieve/tests/vacation.at: Add test for :rfc2822

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	User-defined headers in vacation extension.

	New tag :header allows to set headers in the reply message
	generated by the vacation extension.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libproto/mailer/sendmail.c: Fix typo in debugging message.
	* po/.gitignore: Update.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Maidag: avoid using auth_by_uid when delivering message.

	When delivering message, the library may need to know the email
	address of the user on behalf of whom maidag is called. In
	particular, that happens when using the vacation extension. In
	that case the library would construct the email by
	concatenating user name, obtained as a result of
	mu_get_auth_by_uid, and current domain name. Avoid this by
	remembering email address the message is being delivered to.

	* libmailutils/base/usremail.c (mu_set_user_email): NULL
	argument clears email.
	(mu_get_user_email): Use EUID instead of UID.
	* maidag/deliver.c (do_delivery): Set user email prior to
	delivery.
	* maidag/maidag.c (default_domain): New variable.
	(maidag_cfg_param): New setting "domain".
	* maidag/maidag.h (default_domain): New extern.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve debugging.

	* libmailutils/diag/debug.c (mu_debug_log): Account for
	eventual newlines in the generated message string.
	* imap4d/io.c (imap4d_init_tls_server): Use mu_stream_strerror.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mailer/prog.c (url_to_argv): Free ws only if it was
	initialized.

2015-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes in Makefiles.

	* include/mailutils/Makefile.am (errno.h): Use explicit file
	names instead of implicit variables.
	* include/mailutils/sys/Makefile.am (debcat.h): Likewise.
	* libmailutils/diag/Makefile.am (muerrno.c): Likewise.
	* libmu_argp/Makefile.am (libmu_argp_la_LIBADD): Use relative
	path to .la,

2015-10-26  Sergey Poznyakoff  <gray@gnu.org>

	Vacation: improve compatibility with the Sendmail utility.

	* libmu_sieve/extensions/vacation.c (match_addresses): Change
	arguments: take primary email address as well as a list of
	aliases.
	(vacation_reply): Reply if the primary email or one of alias
	emails are listed in recipient list of the original message.
	New tag "always_reply" reverts to the old behavior: reply
	regardless of whether the message is destined for us. Use the
	current user email as the sender address of the vacation
	message. New tag "return_address" sets the sender address
	explicitly.
	* sieve/tests/vacation.at: Add new tests.

2015-10-25  Sergey Poznyakoff  <gray@gnu.org>

	Fixes in sieve vacation extension.

	* libmu_sieve/extensions/vacation.c (build_mime): Fix memory
	leak. This also flushes the message body stream, so its content
	becomes visible for the mailer.
	(noreply_address_p): Rename "addresses" tag to "noreply".
	(check_db): The "database" tag provides vacation database name.
	(vacation_reply): Always set message headers.
	(vacation_tags): Rename "addresses" tag to "noreply". New tag:
	"database" 
	* sieve/tests/vacation.at: New file.
	* sieve/tests/Makefile.am (TESTSUITE_AT): Add vacation.at.
	* sieve/tests/testsuite.at: Include vacation.at. 
	* doc/texinfo/programs.texi: Minor change.

2015-09-20  Sergey Poznyakoff  <gray@gnu.org>

	Document mailbox types, variable extension, etc.

2015-09-19  Sergey Poznyakoff  <gray@gnu.org>

	Complement f160ca75.

	* include/mailutils/wordsplit.h (MU_WRDSX_WORD)
	(MU_WRDSX_QUOTE): New constants.
	(mu_wordsplit_getwords): Rename to mu_wordsplit_get_words.
	* libmailutils/string/wordsplit.c (mu_wordsplit_getwords):
	Rename to mu_wordsplit_get_words. 
	* libmailutils/base/userprivs.c (mu_switch_to_privs): Fix
	memory overrun when retrieving the current pointer. 
	* examples/header.c (main): Use mu_wordsplit_get_words
	* imap4d/preauth.c (preauth_getvar): Rewrite according to the
	new API.
	* libmailutils/imapio/create.c (mu_imapio_create): Use
	MU_WRDSX_ constants to address ws_escape.
	* libmailutils/imapio/qstring.c: Likewise.
	* libmailutils/mailbox/mbx_default.c: Minor fix.
	* libmailutils/server/acl.c (acl_getvar): Rewrite according to
	the new API.
	* libmailutils/tests/wsp.c: Minor fix.
	* libmailutils/url/create.c (_mu_url_create_internal): Bugfix:
	alloc url->path.
	* libmu_sieve/extensions/list.c (retrieve_next_header): Use
	mu_wordsplit_get_words
	* libproto/mailer/prog.c (prog_getvar): Rewrite according to
	the new API.
	* libproto/mailer/smtp_gsasl.c (get_implemented_mechs): Remove
	unneeded assignment to ws.ws_wordv.
	* mh/folder.c: Use mu_wordsplit_get_words.
	* mh/mhn.c: Likewise.
	* movemail/movemail.c (movemail_getvar): Rewrite according to
	the new API.

2015-09-16  Sergey Poznyakoff  <gray@gnu.org>

	Port wordsplit from grecs 20616b88.

	The updated version supports tilde and pathname expansion,
	command substitution and standard shell-like replacement
	constructs in variable substitution, such as ${X:-V} etc.

	* include/mailutils/wordsplit.h: Update.
	* libmailutils/string/wordsplit.c: Update.
	* libmailutils/tests/wsp.c: Update.
	* libmailutils/tests/wordsplit.at: Update unescape test. 
	* libmailutils/imapio/create.c (mu_imapio_create): Initialize
	ws_escape array.
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Likewise.
	* libmailutils/tests/modmesg.c: Use mu_wordsplit with
	MU_WRDSF_NOSPLIT to run expansions on the string.
	* mu/shell.c (shell_prompt): Likewise.

2015-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos.

2015-08-04  Sergey Poznyakoff  <gray@gnu.org>

	Spelling fixes in ChangeLog.

2015-08-04  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* pop3d/bulletin.c (read_bulletin_db): Fix memory/descriptor
	leak.

2015-07-11  Sergey Poznyakoff  <gray@gnu.org>

	Update NEWS.

2015-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Log ciphersuite info after successful initiation of TLS
	connection.

	* include/mailutils/stream.h (MU_IOCTL_TLSSTREAM): New ioctl
	code.
	(MU_IOCTL_TLS_GET_CIPHER_INFO): New ioctl opcode.
	* libmailutils/property/assocprop.c (_assoc_prop_fill)
	(_assoc_prop_save): allow for NULL stream pointer.
	* libmu_auth/tls.c (_tls_io_ioctl,_tls_ioctl): Handle
	MU_IOCTL_TLSSTREAM/MU_IOCTL_TLS_GET_CIPHER_INFO ioctl. 
	* imap4d/io.c (log_cipher): New function.
	(io_setio, imap4d_init_tls_server): Call log_cipher after
	successfully establishing the TLS connection.
	* imap4d/starttls.c (tls_encryption_on): Remove diagnostic
	output.
	* pop3d/extra.c (log_cipher): New function.
	(pop3d_setio,pop3d_init_tls_server): Call log_cipher after
	successfully establishing the TLS connection.

2015-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmailutils/mailbox/mbx_default.c
	(mu_normalize_mailbox_url): don't place / in front of the
	username.
	(plus_expand): Use mu_make_file_name and mu_asprintf. Check for
	errors.
	(mu_mailbox_create_default): Check for errors.

2015-07-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix TLS streams.

	Avoid calling gnutls_global_init (via mu_tls_module_init) prior
	to forking. gnutls_global_init opens at least one file
	descriptor (/dev/urandom), and closing it will disrupt its
	operation. Current stable libgnutls (3.3.15) is able to cope
	with it, but there are plenty of systems running much older
	versions.

	* libmailutils/server/msrv.c (mu_m_server_begin): Reset onexit
	list after forking.
	* libmu_auth/tls.c (mu_tls_module_init): Don't call
	mu_init_tls_libs.
	(_tls_server_open, _tls_client_open): Check return value from
	mu_init_tls_libs.
	* imap4d/auth_gsasl.c (auth_gsasl): Use mu_onexit to register
	onexit functions.
	* imap4d/imap4d.h (util_atexit): Remove prototype.
	* imap4d/starttls.c (imap4d_starttls): Don't register
	mu_deinit_tls_libs: now done by tls library.
	(starttls_init): Don't call mu_init_tls_libs.
	* imap4d/util.c (util_atexit): Remove.
	(util_bye): Update accordingly.
	* pop3d/extra.c (pop3d_setio): Print informational message
	after establishing TLS.
	(pop3d_bye): Don't call mu_deinit_tls_libs: that's done by the
	library.
	* pop3d/pop3d.c (main): Don't call mu_init_tls_libs.

2015-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix make check if MU_DEFAULT_SCHEME value is other than mbox.

	* testsuite/testsuite.inc (MUT_DEFAULT_OPTIONS): New define.
	* maidag/tests/testsuite.at: Add MUT_DEFAULT_OPTIONS to the
	options passed to maidag
	* mail/tests/cols00.at: Use MUT_MAIL_CMD
	* mail/tests/cols01.at: Likewise.
	* mail/tests/copy00.at: Likewise.
	* mail/tests/nohome.at: Likewise.
	* mail/tests/testsuite.at (MUT_MAIL_CMD): New define. Pass
	MUT_DEFAULT_OPTIONS to mail.
	* sieve/tests/testsuite.at: Pass MUT_DEFAULT_OPTIONS to sieve.

2015-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Compatibility fix.

	* libmailutils/mailbox/mbx_default.c
	(mu_normalize_mailbox_url): Append ${user} if URL ends with
	"user=". Fixes 131ddb25a.

2015-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* lib/Makefile.am: Add -version-info to LDFLAGS
	* libmu_cfg/Makefile.am: Likewise.
	* libmu_argp/Makefile.am: Use LIBADD to add library dependency
	Pass -version-info to LDFLAGS

2015-07-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/cfg/gocs.c (mu_gocs_register): Avoid registering
	same capability twice.

2015-07-02  Sergey Poznyakoff  <gray@gnu.org>

	Version 2.99.99.

	* configure.ac: Version 2.99.99
	* NEWS: Update.
	* libmu_argp/mailutils.c: New file.
	* libmu_argp/Makefile.am: Add mailutils.c
	* libmu_argp/cmdline.c (all_cmdline_capa): Add
	mu_mailutils_cmdline.
	(mu_libargp_init): Register modflags function.
	* libmu_argp/mu_argp.c (mu_build_argp): Retain negative group
	numbers.
	(argp_capa): New member: modflags.
	(mu_register_argp_capa): Take pointer to modflags function as
	3rd parameter.
	(mu_build_argp): Use modflags member to alter argp flags.
	(mu_argp_build): Take pointer to flags as its third argument.
	* libmu_argp/muinit.c (mu_app_init): Pass pointer to flags to
	mu_argp_build.
	* libmu_cfg/init.c (mu_libcfg_init): Silently ignore unknown
	groups 
	* include/mailutils/libargp.h (mu_mailutils_cmdline): New
	extern.
	(mu_cmdline_capa): New member: modflags.
	(mu_argp_build): Change signature.
	(mu_register_argp_capa): Change signature.
	* libmailutils/cfg/gocs.c (std_gocs_table): Add dummy entry for
	"mailutils" 
	* mu/Makefile.am (bin_PROGRAMS): Rename to "mailutils".
	* mu/dispatch.c (dispatch_docstring): Use mu_program_name
	instead of the hardcoded name.
	* mu/mu.c: Use "mailutils" capability.
	* mu/mailutils-config.in: Rename to mu/mailutils-config 
	* comsat/comsat.c: Use "mailutils" capability.
	* dotlock/dotlock.c: Likewise.
	* examples/muauth.c: Likewise.
	* examples/muemail.c: Likewise.
	* frm/frm.c: Likewise.
	* frm/from.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* maidag/maidag.c: Likewise.
	* mail/mail.c: Likewise.
	* messages/messages.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* pop3d/popauth.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

2015-07-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mh/prompter.c (main): Use mu_stream_printf instead of printf

2015-06-29  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix.

	* libproto/maildir/mbox.c (maildir_msg_finish_delivery): Don't
	complain if trying to unlink a nonexistent file.

2015-06-28  Sergey Poznyakoff  <gray@gnu.org>

	Fix compilation warnings.

	* configure.ac: Check for intptr_t
	* comsat/action.c (need_crlf): Use intermediate cast to
	intptr_t.
	* imap4d/imap4d.c (cb2_group, mu_get_user_groups): Likewise.
	* libmailutils/stream/file_stream.c (fd_ioctl): Likewise.
	* libmailutils/stream/mapfile_stream.c (_mapfile_ioctl):
	Likewise.
	* libmailutils/stream/tcp.c (_tcp_ioctl): Likewise.
	* maidag/maidag.c (cb2_group): Likewise. 
	* frm/common.c (puts_bidi): Fix the type of 3rd parameter to
	fribidi_log2vis 
	* include/mailutils/body.h: Use MU_DEPRECATED instead of
	__attribute__ ((deprecated)).
	* include/mailutils/cfg.h: Likewise.
	* include/mailutils/header.h: Likewise.
	* include/mailutils/libargp.h: Likewise.
	* include/mailutils/mailbox.h: Likewise.
	* include/mailutils/mailer.h: Likewise.
	* include/mailutils/registrar.h: Likewise.
	* include/mailutils/message.h: Likewise.
	(mu_message_set_stream): Remove deprecation marker.

2015-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	python: cleanup.

	* python/libmu_py/libmu_py.c (_ro): Remove inline qualifier.
	* python/libmu_py/libmu_py.h: Likewise.

2015-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	python: fix returning size_t values.

	* python/libmu_py/address.c: Use PyInt_FromSize_t to return
	size_t and similar values.
	* python/libmu_py/auth.c: Likewise.
	* python/libmu_py/body.c: Likewise.
	* python/libmu_py/header.c: Likewise.
	* python/libmu_py/mailbox.c: Likewise.
	* python/libmu_py/mailcap.c: Likewise.
	* python/libmu_py/message.c: Likewise.
	* python/libmu_py/mime.c: Likewise.
	* python/libmu_py/sieve.c: Likewise.
	* python/libmu_py/stream.c: Likewise.

2015-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	python: fix passing size_t values on 64-bit architectures.

	* lib/python.c (python_proc): Pass a copy of mu_program_name as
	argv[0].
	* python/libmu_py/libmu_py.h (ASSERT_INDEX_RANGE): New macro.
	* python/libmu_py/address.c: Use Py_ssize_t and check returned
	value range when getting size_t arguments.
	* python/libmu_py/auth.c: Likewise.
	* python/libmu_py/folder.c: Likewise.
	* python/libmu_py/header.c: Likewise.
	* python/libmu_py/mailbox.c: Likewise.
	* python/libmu_py/mailcap.c: Likewise.
	* python/libmu_py/message.c: Likewise.
	* python/libmu_py/mime.c: Likewise.
	* python/libmu_py/secret.c: Likewise.
	* python/libmu_py/stream.c: Likewise.

2015-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix double-inclusion of config.h in some sources.

	* lib/muscript.h: Don't include config.h: the caller is
	responsible for that.
	* lib/guile.c: Include config.h
	* lib/python.c: Likewise.
	* lib/script.c: Likewise.
	* lib/sieve.c: Likewise.

2015-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mh/prompter-tty.c: include signal.h

2015-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix segfault when destroying mu_body_t under certain
	conditions.

	That's a temporary solution until reference counters are
	implemented for mu_body_t

	* libmailutils/mailbox/body.c (bstr_close, bstr_done): Don't
	close streams.

2015-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* configure.ac: Fix checks for readline. If it is not present -
	bail out if it was explicitly requested and silently disable it
	otherwise. Check for dbm_dirfno and dbm_pagfno (see
	libmu_dbm/ndbm.c, below).
	* examples/mboxidx.c (set_charset_filter): Fix array
	dimensions.
	* lib/python.c (python_done): add missing return statement.
	* libmailutils/address/address.c (mu_address_union): Fix size
	argument to memset.
	* libmailutils/server/msrv.c (mu_m_server_get_hints): Likewise.
	* libmu_compat/vartab.c (vardefn_free): Likewise.
	* libmailutils/cfg/parser.y (_set_fun): cast enum to size_t
	before comparison
	* libmailutils/diag/wd.c (mu_wd): fix while loop.
	* libmailutils/tests/url-parse.c (main): Fix printf format.
	* libmu_dbm/ndbm.c (_ndbm_get_fd): One of dbm_dirfno or
	dbm_pagfno may be missing (on FreeBSD, dbm_pagfno expands to a
	non-defined macro, which produces compilation error.
	* mail/mailvar.c (mailvar_varptr_comp): Remove.
	(mailvar_list_copy): Use mailvar_variable_comp instead of the
	removed mailvar_varptr_comp.

2015-06-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add gnulib as a module.

2015-06-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make libmuaux installable shared library.

	This commit converts libmuaux into installable shared library
	that includes selected modules from gnulib. Correspondingly,
	libmu_argp is also converted into installable shared library,
	which is the main purpose of these changes. This should allow
	other packages which depend on Mailutils to link against
	libmu_argp even on systems that for some reason choose not to
	include static libraries in their distribution (vide Debian).
	Another side effect is that such packages won't need to bother
	about argp being present on the system, as it is now included
	in libmuaux.so.

	* bootstrap.conf: Don't create Makefile.am Build gnulib using
	libtool and use mu_am_flags custom module
	* lib/local/modules/mu_am_flags: New file.
	* configure.ac (MU_APP_LIBRARIES): Use libmu_argp.la
	(TCPWRAP_LIBRARIES): Add libmutcpwrap.a
	* lib/Makefile.am: Make libmuaux installable shared library New
	static library libmutcpwrap.a
	* libmu_argp/Makefile.am: Make libmu_argp installable shared
	library
	* examples/Makefile.am: Use libmu_argp.la
	* examples/cpp/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* mapi/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise,
	* pop3d/Makefile.am: Likewise.

2015-06-23  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in Scheme scripts.

	* scheme/Makefile.am: set executable bit on guimb (fix a typo)
	Override the installcheck-binSCRIPTS rule to avoid spurious
	output from guile 2.0 when running the program.
	* scheme/guimb.scmi: Remove flags specific to guile 1.8

2015-06-23  Sergey Poznyakoff  <gray@gnu.org>

	Fix improper padding in B encoding.

	* libmailutils/stream/fltstream.c: stop encoding when no more
	input is available.
	* libmailutils/tests/encode2047.at: add new tests.
	* libmailutils/filter/base64.c (_base64_encoder): detect eof

2015-05-05  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix.

2015-05-05  Sergey Poznyakoff  <gray@gnu.org>

	mail: add tests in a non-interactive mode.

	* configure.ac: Configure mail/tests subdirectory.
	* mail/Makefile.am (SUBDIRS): Add tests.
	* mail/tests/testsuite.at: New file.
	* mail/tests/Makefile.am: New file.
	* mail/tests/.gitignore: New file.
	* mail/tests/atlocal.in: New file.
	* mail/tests/cols00.at: New file.
	* mail/tests/cols01.at: New file.
	* mail/tests/copy00.at: New file.
	* mail/tests/nohome.at: New file.
	* mail/tests/version.at: New file.

2015-05-04  Sergey Poznyakoff  <gray@gnu.org>

	mail: the "copy" command operates on files by default.

	Last argument is treated as a mailbox only if it begins with a
	mailbox scheme (mbox://, maildir://, etc).

	* mail/copy.c (append_to_mailbox)
	(append_to_file): New functions.
	(mail_copy0): Depending on whether mailbox scheme is specified,
	call one of the above functions.
	* doc/texinfo/programs.texi (mail): Fix documentation of the
	copy command.
	* mail/testsuite/mail/write.exp: Update line/character counts
	for [Ss]ave commands.

2015-05-03  Sergey Poznyakoff  <gray@gnu.org>

	Minor change.

	* doc/texinfo/programs.texi: Fix description of mail --print

2015-05-03  Sergey Poznyakoff  <gray@gnu.org>

	readmsg: minor fix.

	* readmsg/readmsg.c: Bail out unless arguments are present.
	* doc/texinfo/programs.texi: Update.

2015-05-03  Sergey Poznyakoff  <gray@gnu.org>

	Fix doc generation.

	The Config file applies to all output formats, which is wrong.
	Use a dedicated configuration file for html output formats, and
	default settings for the rest.

	* doc/texinfo/Makefile.am (GENDOCS): Add html-specific
	configuration file.
	* doc/texinfo/Config: Rename to doc/texinfo/html.init (with
	changes).
	* doc/texinfo/programs.texi: Fix sectioning.

2015-05-03  Sergey Poznyakoff  <gray@gnu.org>

	mail: honor columns/screen variables.

	* mail/util.c (util_command_list): Use util_screen_columns
	instead of util_getcols.
	(util_getcols): Don't use COLUMNS.
	(util_getlines): Don't use LINES.
	* mail/mail.c: Don't force COLUMNS and LINES (they are normally
	not exported, so setting them will cause util_getcols and
	util_getlines to return wrong results). Set variable "columns"
	from envvar COLUMNS, if set to a numeric value. Set variable
	"screen" from envvar LINES, if set to a numeric value.
	* mail/from.c (format_headline): Use util_screen_columns
	instead of util_getcols.
	* mail/mailvar.c (mailvar_print,mail_variable): Likewise.
	* mail/print.c (mail_print_msg): Likewise.

2015-05-03  Sergey Poznyakoff  <gray@gnu.org>

	Honor MAIL and FOLDER envars if _mu_mailbox_pattern is not set.

	The _mu_mailbox_pattern variable is supposed to be set only
	from configuration file. However, the mu_mailbox_url function
	would also set it as a side effect. This produced strange
	results; in particular unsetting HOME variable caused mail
	utilities to ignore MAIL variable as well (as reported by Dan
	Jacobson on 2015-04-30, <87vbgemcc7.fsf@jidanni.org>).

	* configure.ac (MU_PATH_MAILDIR): Don't end with a slash.
	* libmailutils/mailbox/mbx_default.c
	(mu_normalize_mailbox_url): Use mu_make_file_name.
	(mu_mailbox_url): Don't set _mu_mailbox_pattern.

2015-04-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	Setting non-existing variable in bin/mail at the start of the
	session caused further calls to set (without arguments) to
	malfunction. This revealed bugs in list mapping functions.

	On the other hand, invoking completion after "set var=" caused
	bin/mail to coredump.

	* libmailutils/list/gmap.c (mu_list_gmap): Initialize rc.
	* libmailutils/list/map.c: Always initialize *res.
	* mail/mailvar.c (mailvar_list_copy): The call to mu_list_map
	does not necessarily create the list. Create it, if it doesn't.
	(mailvar_iterate_next): Redo the loop: check if there are items
	to iterate over.

2015-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch to Texinfo 5.0.

	* doc/texinfo/Config: Rewrite.
	* doc/texinfo/Makefile.am: Use Makeinfo 5 instead of texi2htm
	* doc/texinfo/gendocs_template: Remove ps
	* doc/imprimatur: Upgrade.
	* doc/texinfo/gendocs.sh: New file.
	* doc/texinfo/rendition.texi: Remove.
	* doc/texinfo/programs.texi: Bugfixes

2015-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

2014-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix alignment issues in mu_fgetpwent_r.

	* libmailutils/base/fgetpwent.c: Place struct passwd at the
	beginning of the buffer. Account for eventual missing newline
	at the end of file.

2014-12-07  Sergey Poznyakoff  <gray@gnu.org>

	New function mu_fgetpwent_r.

	* libmailutils/base/fgetpwent.c: Rewrite from scratch.
	* ChangeLog.amend: Update.

2014-12-06  Sergey Poznyakoff  <gray@gnu.org>

	Improve diagnostics in maildir.

	* libmailutils/mailbox/fsfolder.c: Fix debugging categories
	* libproto/maildir/mbox.c (maildir_opendir)
	(maildir_msg_finish_delivery)
	(maildir_scan0): Log errors.
	(maildir_flush,maildir_deliver_new): Return EACCES if the
	mailbox is read-only.

2014-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of read-only maildir folders. Imap4d improvements.

	New imap4d statement "retain-groups" instructs it to retain the
	named supplementary user groups when switching to the user
	privileges (previously, imap4d just switched to <user>:mail).
	Read-only mailboxes are handled graciously: SELECT succeeds on
	such mailboxes, bug marks them explicitly as read-only.

	* imap4d/imap4d.c (user_retain_groups): New global. New config
	statement "retain-groups".
	(mu_get_user_groups): New function.
	(imap4d_session_setup0): Use mu_switch_to_privs instead of just
	setuid.
	* imap4d/list.c (imap4d_list): Fix handling of
	 LIST "" "/path/to/mbox"
	* imap4d/select.c (imap4d_select0): Retry opening in read-only
	mode if failed to open for read-write.
	* libproto/maildir/mbox.c (maildir_mkfilename)
	(mk_info_filename): Change return value and signature. All uses
	changed.
	(maildir_scan0): Don't shuffle messages if mailbox is opened
	read-only.
	* libproto/maildir/folder.c: Update call to maildir_mkfilename.
	* libproto/maildir/maildir.h (maildir_mkfilename): Change
	prototype.

2014-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix eventual memory overrun.

	* mail/mail.c (mail_mainloop): Check command length before
	trying to access its last byte.

2014-08-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix possible coredump in stream library.

	* libmailutils/stream/stream.c (mu_stream_strerror): stream can
	be NULL.

2014-08-10  Sergey Poznyakoff  <gray@gnu.org>

	imap-related bugfixes.

	* imap4d/search.c (imap4d_search0): Use parsebuf.err_mesg if
	defined, otherwise fall back to the general "parse error"
	message.
	* include/mailutils/datetime.h (MU_DATETIME_INTERNALDATE): Use
	%e for day. Day can be one-digit decimal.
	* libmailutils/datetime/scantime.c (mu_scan_datetime): Skip
	initial ws for %e.
	* mu/imap.c (com_search): Print newline after the "no matches"
	message.

2014-07-28  Sergey Poznyakoff  <gray@gnu.org>

	Add scripting capability to mh/inc.

	This patch adds a convenience library libmuscript that provides
	scripting capability easy to use in MU applications. Currently
	used by maidag and inc.

	* include/mailutils/util.h (mu_stpcpy): 2nd arg is const.
	* libmailutils/string/stpcpy.c: Likewise. 
	* lib/.gitignore: Update.
	* lib/Makefile.am: New library libmuscript.a
	* lib/muscript.h: New file.
	* lib/muscript_priv.h: New file.
	* lib/script.c: New file.
	* maidag/guile.c: Rename to ...
	* lib/guile.c: ... this
	* maidag/python.c: Rename to ...
	* lib/python.c: ... this
	* maidag/sieve.c: Rename to ...
	* lib/sieve.c: ... this 
	* maidag/Makefile.am (maidag_LDADD): Add libmuscript.a
	(maidag_SOURCES): Update.
	* maidag/maidag.c (script_handler): Change type to mu_script_t.
	* maidag/maidag.h: Include muscript.h
	* maidag/script.c: Rewrite via libmuscript 
	* mh/Makefile.am (inc_LDADD): New variable.
	* mh/inc.c (options): New options --language and --script.
	(mh_option): New options -language and -script.
	(incdat) <handler,descr>: New members.
	(incmbx): Optionally process each message through a script. If
	it is marked as deleted upon return, don't incorporate it.
	(main): Set mh as the default mailbox scheme. Initialize
	scripting subsystem and deallocate it when finished.
	* mh/mh_getopt.h (ARG_LANG, ARG_SCRIPT): New constants.

2014-07-26  Sergey Poznyakoff  <gray@gnu.org>

	Move gnulib into a subdir.

	* bootstrap.conf: Create and populate lib/gnu, if necessary.
	* configure.ac (MU_APP_COMMON_INCLUDES): Update.
	(AC_CONFIG_FILES): Build lib/gnu/Makefile
	* lib/Makefile.am (libmuaux_a_SOURCES): Add all objects from
	gnu/
	* po/POTFILES.in: Update. 
	* examples/.gitignore: Update.

2014-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* examples/echosrv.c: Fix typo.
	* libmailutils/sockaddr/url.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/folder.c (roll_back): Fix conditional.
	* THANKS: Update.

2014-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/filter/iconvflt.c: Fix silly errors.

2014-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Push missing files.

2014-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	New example: mboxidx.

	* examples/mboxidx.c: New file
	* examples/Makefile.am: Add mboxidx

2014-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory overrun in iconv filter.

	* libmailutils/filter/iconvflt.c (format_octal): New function.
	(_icvt_decoder): Fix size calculations before returning
	mu_filter_moreoutput. Use format_octal instead of sprintf to
	avoid memory overwrite with the terminating nul character.

2014-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the xml filter.

	* libmailutils/filter/xml.c: New file.
	* include/mailutils/filter.h (mu_xml_filter): New extern.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	xml.c
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_xml_filter. 
	* libmailutils/tests/xml.at: New file.
	* libmailutils/tests/Makefile.am: Add xml.at
	* libmailutils/tests/testsuite.at: Likewise.

2014-07-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	New filter: htmlent.

	* include/mailutils/filter.h (mu_htmlent_filter): New extern.
	* libmailutils/filter/Makefile.am: Add htmlent.c
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_htmlent_filter.
	* libmailutils/filter/htmlent.c: New file.
	* libmailutils/tests/htmlent.at: New testcase.
	* libmailutils/tests/Makefile.am: Add new testcase.
	* libmailutils/tests/testsuite.at: Likewise.

2014-06-17  Damien Diederen  <dd@crosstwine.com>

	maildir: Keep trailing comma even when no flags are set.

	Without this, `mk_info_filename' generates filenames of the
	following form when the flag set is empty:

	 1402217787.M664911P5957Q143.hostname:2

	The original Maildir spec (http://cr.yp.to/proto/maildir.html),
	however, mandates that filenames must be of the form
	`uniq:info', with `info' starting with "2,"--including a comma.

	This patch removes the "cleanup" performed by
	`mk_info_filename' as that there is no rationale for it in
	mailutils' source code history, and as it breaks Gnus'
	"nnmaildir" backend (Cf. `nnmaildir--add-flag'). 
	* libproto/maildir/mbox.c (mk_info_filename): Keep comma at the
	end of filename when the flags suffix is empty.

2014-05-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/mailbox/attribute.c (mu_attribute_is_equal): Fix
	comparison.
	* libmailutils/mailbox/biffnotify.c: Add missing includes.

2014-04-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	frm: fix counters when given multiple mailboxes.

	* frm/frm.c (frm): Initialize counters.
	* frm/tests/testsuite.at: Test multiple mailboxes.

2014-02-26  Sergey Poznyakoff  <gray@gnu.org>

	Fix compilation without gnutls.

	* imap4d/imap4d.c [WITH_TLS] (cb_tls_required): Conditional
	compilation.
	* imap4d/imap4d.h [!WITH_TLS] (tls_encryption_on): Empty
	define.
	* pop3d/pop3d.c [!WITH_TLS] (tls_available): Empty define.
	* libmu_scm/mu_mailbox.c (mu_scm_mailbox_print): Fix format
	string.

2014-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: fix handling of ID response without untagged part.

	* libproto/imap/id.c: Make sure returned mu_assoc_t is valid
	even if no untagged response was received (equivalent to NIL).

2014-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve tls support.

	Remove deprecated types and function calls. Make cipher, mac,
	and other priorities configurable.

	* include/mailutils/sys/tls-stream.h (_mu_tls_stream): Use
	gnutls_session_t.
	* include/mailutils/tls.h (mu_tls_module_config): New member:
	priorities.
	* libmu_auth/tls.c: Remove deprecated types.
	(initialize_tls_session): Make priorities configurable.
	(prepare_client_session): Set default priorities.
	* libmu_cfg/tls.c: New configuration statement: ssl-priorities.

2014-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Clean up unused variables.

2014-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use AM_CPPFLAGS instead of INCLUDES; upgrade gint.

2014-02-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Accept single-dash notify option to inc.

	* mh/mh_getopt.c (mh_getopt): Correctly handle traditional
	options that begin with "no" (e.g. "notify").
	* mh/inc.c (mh_option): Accept -notify (single-dash).

2014-02-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move biff notification to the library.	Implement it in inc and
	movemail.

	* include/mailutils/mailbox.h (mu_mailbox_set_notify)
	(mu_mailbox_unset_notify): New protos.
	* include/mailutils/sys/mailbox.h (_mu_mailbox) <notify_user>
	<notify_fd,notify_sa>: New members.
	* libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add
	biffnotify.c
	* libmailutils/mailbox/biffnotify.c: New file.
	* libmailutils/mailbox/mailbox.c (_mailbox_create_from_record):
	Initialize notify_fd.
	(mu_mailbox_destroy): Free notify_sa.
	(mu_mailbox_close): Close notify_fd.
	(mu_mailbox_flush): Rewrite to handle append-only mailboxes
	effectively.
	* libmailutils/server/msrv.c (server_cfg_param): Fix docstring.
	* libmailutils/stream/file_stream.c (fd_open): Open fd
	read-write if both MU_STREAM_APPEND and MU_STREAM_READ are
	requested.
	* libproto/mbox/mbox.c (mbox_expunge0): Rescan the mailbox if
	messages_count == 0. Special handling for append-only
	mailboxes.
	* maidag/deliver.c: Use library notification mechanism.
	* mh/inc.c: New option --notify.
	* movemail/movemail.c: Likewise.

2014-02-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

2014-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use global TLS setting in inetd mode (bug #40891)

	* imap4d/imap4d.c (imap4d_connection): Use global TLS setting
	if no local one was supplied.
	(main): Use global TLS setting in inetd mode.
	* pop3d/pop3d.c (main): Use global TLS setting in inetd mode.

2014-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix coredump if crypt returns NULL.

	* libmailutils/auth/system.c: Check return from crypt before
	passing it to strcmp.
	* libmu_auth/sql.c: Likewise.

2014-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Issue a deprecation warning if tls-required is used in pop3d or
	imap4d config.

2013-12-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix bug in handling AUTHENTICATE command (imap4d). Add
	user/group ACLs.

	The bug was introduced in commit 6e2a3758.

	The ACLs allow administrators to limit access to IMAP services
	to particular users or users belonging to particular groups.

	* imap4d/authenticate.c (imap4d_auth_capability): Take session
	pointer as argument. Don't report authentication capabilities
	if tls is required.
	(imap4d_authenticate): Fix conditional.
	* imap4d/capability.c (imap4d_capability): Update call to
	imap4d_auth_capability.
	* imap4d/imap4d.c (cb_tls_required): Set tls_mode.
	(auth_deny_user_list,auth_allow_user_list)
	(auth_deny_group_list,auth_allow_group_list): New statics.
	(check_user_groups,imap_check_group_list): New static
	functions. (imap4d_cfg_param) <allow-users,deny-users>
	<allow-groups,deny-groups>: New configuration statements.
	(imap4d_session_setup0): Check allow/deny lists.
	* imap4d/imap4d.h (imap4d_auth_capability): Change signature. 
	* pop3d/pop3d.c (cb_tls_required): Set tls_mode. 
	* bootstrap (gnulib_extra_files): Update.

2013-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix in mh/inc.

	* mh/inc.c (main): Update the unseen sequence only if some new
	messages were incorporated.

2013-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix appending to IMAP[S] mailboxes.

	* libproto/imap/appmsg.c (mu_imap_append_message): Fix
	conditional.
	* libproto/imap/mbox.c (_imap_mbx_append_message): Fix error
	checking.
	* libproto/imap/url.c (_mu_imap_url_init)
	(_mu_imaps_url_init): Set _get_path member. This allows the
	user to specify an URL without explicit path, implying INBOX.

2013-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/io.c (io_copy_out): Switch to full buffering before
	sending data.
	* libmailutils/stream/stream.c (_stream_skip_input_bytes):
	Bugfix.

2013-08-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix tls_required functionality in imap4d.

	* imap4d/imap4d.c (imap4d_mainloop): Add missing break.

2013-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in LDAP code.

	* libmu_auth/ldap.c (_mu_conn_setup): Set protocol version
	number before trying to initialize TLS. Provide a detailed
	diagnostics.

2013-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Support for RFC 3206.

	* pop3d/pop3d.h (ERR_SYS_LOGIN): New error code.
	* pop3d/capa.c (pop3d_session_init): Advertise the
	AUTH-RESP-CODE capability.
	* pop3d/cmd.c (error_table) <ERR_BAD_LOGIN>: Mark with the AUTH
	response code.
	<ERR_SYS_LOGIN>: New entry.
	* pop3d/user.c (pop3d_user): Use mu_get_auth to obtain the
	user's identity. On error, the error code is ERR_BAD_LOGIN or
	ERR_SYS_LOGIN, depending on its return and return from
	mu_authenticate.

2013-06-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	One more fix.

	* libmailutils/server/ipsrv.c (mu_ip_tcp_accept): Handle
	connection aborted error as well.

2013-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/io.c (imap4d_tokbuf_decrlf): Rewrite to run in O(n).
	* libmailutils/server/ipsrv.c (mu_ip_tcp_accept): Return 0 on
	EINTR (unless srv->f_intr tells otherwise) and EAGAIN. The
	caller will retry.
	(mu_ip_server_accept): output a diagnostic message before
	returning error.

2013-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* mu/Makefile.am (mailutils-config): Fix sed expression
	* mu/mailutils-config.in: Replace MUNAME once and assign it to
	the variable.

2013-04-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement MH show utility.

	* mh/show.c: New file.
	* NEWS: Document changes.
	* libmailutils/stream/message_stream.c (copy_trimmed_value):
	Fix string length calculation to allow for empty lines.
	* mh/.gitignore: Update.
	* mh/Makefile.am: Build show.
	* mh/TODO: Document show.
	* mh/mh_getopt.h: Add new option codes.
	* mh/mh_init.c (mh_expand_name): Change handling of the last
	argument. All callers updated.
	(mh_draft_name): Remove.

2013-04-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix MH sequence parser.

	* mh/mh_msgset.c (parse_range): Fix resolving non-existing
	UIDs.
	* mh/tests/mhseq.at: Add more test cases.

2013-04-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add support for Unseen-Sequence in inc.

	* mh/inc.c (main): Append the numbers of incorporated messages
	to Unseen-Sequence, if defined in .mh_profile.

2013-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH send: improve compatibility with MH/nmh.

2013-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite mu_utc_offset in a more portable (hopefully) way.

2013-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix in docs.

2013-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: Synchronize sequences after removal of messages.

	* include/mailutils/msgset.h (mu_msgset_sget_mailbox): New
	proto.
	* include/mailutils/sys/msgset.h (_MU_MSGSET_MODE): New macro.
	* libmailutils/msgset/Makefile.am: Add getmbox.c
	* libmailutils/msgset/getmbox.c: New file.
	* libmailutils/msgset/addset.c: Use _MU_MSGSET_MODE.
	* libmailutils/msgset/create.c: Likewise.
	* libmailutils/msgset/foreachmsg.c: Likewise.
	* libmailutils/msgset/foreachnum.c: Likewise.
	* libmailutils/msgset/negate.c: Likewise.
	* libmailutils/msgset/subset.c: Likewise.
	* libmailutils/msgset/trans.c: Likewise. 
	* mh/mh.h (mh_private_sequences_iterate): New proto.
	* mh/mh_sequence.c (format_closure) <delim>: New member.
	(format_sequence): Use delim to avoid outputting leading space.
	(save_sequence): Initialize delim.
	(mh_private_sequences_iterate): New function.
	* mh/rmm.c (main): Remove message numbers from sequences.
	* mh/tests/rmm.at: Update.

2013-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/amd.c (_amd_update_message): Return
	immediately if the message is not modified. Always use
	initialized value of flg.

2013-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	msgchk: assume -date by default.

2013-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* mh/msgchk.c (checkmail): take into account various possible
	return codes.

2013-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement IMAP SEARCH. New function mu_mailbox_access_time.

	* include/mailutils/imap.h (mu_imap_search): New proto.
	* libproto/imap/search.c: New file.
	* include/mailutils/sys/imap.h (MU_IMAP_CLIENT_SEARCH_RX): New
	state.
	* libproto/imap/fetch.c: Fix debugging categories
	* libproto/imap/mbox.c (_imap_messages_recent)
	(_imap_message_unseen): Use search if information is not
	readily available.
	* libproto/imap/status.c (_mu_imap_status_name_table): Comment
	out UNSEEN: its semantics is entirely different from what we
	need.
	* libproto/imap/Makefile.am: Add new file.
	* mu/imap.c: Implement search. 
	* include/mailutils/sys/mailbox.h (_mu_mailbox) <_get_atime>:
	New method.
	* include/mailutils/mailbox.h (mu_mailbox_access_time): New
	proto.
	* libproto/mbox/mbox.c (_mailbox_mbox_init): Initialize
	>_get_atime.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_access_time): New
	function. 
	* libmailutils/datetime/utcoff.c (mu_utc_offset): Rewrite using
	tzset. 
	* mh/msgchk.c: Implement --date. Check for new mail using both
	recent and unseen messages.

2013-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement msgchk.

	* mh/msgchk.c: New file.
	* mh/Makefile.am: Build msgchk.
	* mh/mh_getopt.h: Update.
	* mh/.gitignore: Update.
	* mh/TODO: Update.

2013-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of localname and localdomain in ~/.mtstailor.

	* mh/send.c (read_mts_profile): Fix the handling of localname
	vs. localdomain. The localname setting used alone overrides the
	hostname as returned by mu_hostname. The value of localdomain,
	if set, is appended to the hostname (eventually modified by
	localname), with a "." as a separator.

2013-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Do not ask for ESMTP credentials if unable to handle them.

	* libproto/mailer/smtp.c (smtp_open): Disable ESTMP AUTH if
	GSASL support is not compiled.
	* libproto/mailer/smtp_auth.c (mu_smtp_auth): If compiled
	without GSASL, don't attempt to obtain user credentials.

2013-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix interaction with POP3 servers that do not support the CAPA
	command.

	* libproto/pop/mbox.c (pop_open): Do not bail out if the CAPA
	command returns -ERR. Assume a pre-RFC2449 server.
	* include/mailutils/pop3.h (mu_pop3_strresp)
	(mu_pop3_sget_response,mu_pop3_aget_response)
	(mu_pop3_get_response): New protos.
	* libproto/pop/pop3_response.c (mu_pop3_response): Don't make
	out a fake response in case of a I/O error. (mu_pop3_strresp)
	(mu_pop3_sget_response,mu_pop3_aget_response)
	(mu_pop3_get_response): New functions.

2013-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmu_auth/ldap.c (_mu_ldap_search): Fix improper addressing
	of env.

2013-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Raise version number.

2013-02-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	ali: executable file inclusion.

	The "< file" construct tests if file is executable and begins
	with the shell interpreter magic (#!/ or #! /). If so, this
	file is executed and its output is collected. This provides a
	way for building aliases on the fly.

	* mh/mh_alias.l (buffer_ctx) <exec_p>: New member.
	(exec_p): New static variable.
	(push_source): If the file is executable and begins with the
	"#!/" magic, run it and collect its output.
	(pop_source): Use exec_p to decide how to close the file.
	* mh/tests/ali.at: Test executable file inclusion.
	* NEWS: Update.

2013-01-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure modifications to a message or its parts become
	visible in the message stream.

	* include/mailutils/sys/body.h (_mu_body)<rawstream>: New
	member.
	* include/mailutils/sys/message.h (_mu_message)<rawstream>: New
	member.
	* libmailutils/mailbox/body.c: Rewrite. Return the specially
	crafted "body-stream" for user I/O operations. Writes to that
	stream trigger creation of a temporary stream (write-through
	mode) which will be used for subsequent I/O.
	* libmailutils/mailbox/msgbody.c (mu_message_get_body): Use
	msg->rawstream.
	* libmailutils/mailbox/msgheader.c (message_header_fill): Do
	not call mu_message_get_streamref, as that can result in
	endless recursion. Use msg->rawstream instead.
	* libmailutils/mailbox/msgref.c (_mu_message_free): Destroy
	both rawstream and outstream.
	* libmailutils/mailbox/msgstream.c (mu_message_set_stream): Set
	rawstream.
	(mu_message_get_stream): Create outstream as needed.
	(mu_message_get_streamref): If the message has been modified,
	create the outstream and return it to the caller. This way, the
	modifications become visible via the stream interface.
	* libmailutils/tests/Makefile.am: Add new testcases.
	* libmailutils/tests/testsuite.at: Likewise.
	* libmailutils/tests/modmesg.c: New file.
	* libmailutils/tests/modmesg00.at: New file.
	* libmailutils/tests/modmesg01.at: New file.
	* libmailutils/tests/modmesg02.at: New file.
	* libmailutils/tests/modmesg03.at: New file.
	* mh/mhn.c: Fix message reference counting.

2012-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mh/folder.c (_fixup): Pass a pointer to mailbox to
	mu_msgset_create.

2012-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* imap4d/imap4d.c: Avoid gcc warnings.
	* libmailutils/tests/imapio.c (main): Fix format specifier.
	* maidag/mailquota.c (dbm_retrieve_quota): Likewise.
	* mail/quit.c (mail_mbox_close): Likewise.
	* mail/mail.c (options): Fix improper initialization.
	* mu/mu.h (mu_getans): Add proto.
	* mu/util.c: Include netinet/in.h

2012-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement editheader sieve extension (RFC 5293).

	Also fix iterator synchronization after removing an element and
	improve Sieve API.

	* include/mailutils/header.h (mu_header_get_itemptr): New
	proto.
	* include/mailutils/iterator.h (mu_iterator_advance): Remove.
	(mu_iterator_delitem): New proto.
	(mu_iterator_set_delitem): New proto.
	* include/mailutils/sieve.h (mu_sieve_register_t) <opt_args>:
	New member. (mu_sieve_register_test_ext)
	(mu_sieve_register_action_ext): New protos.
	* include/mailutils/sys/iterator.h (_mu_iterator) <curitem_p>:
	Remove.
	<delitem>: New member. All uses updated. 
	* libmailutils/base/iterator.c (mu_iterator_set_delitem): New
	function. 
	* libmailutils/mailbox/hdritr.c: Implement bidirectional
	iteration. Implement itrctl method.
	* libmailutils/mailbox/header.c: Likewise. 
	* libmailutils/base/assoc.c: Use delitem method instead of
	curitem_p.
	(mu_iterator_delitem): New function.
	* libmailutils/base/opool.c
	* libmailutils/diag/debug.c
	* libmailutils/list/iterator.c
	* libmailutils/list/pop.c
	* libmailutils/list/remove.c
	* libmailutils/list/removenth.c
	* libmailutils/mailbox/imapenv.c
	* libmailutils/mailbox/mbxitr.c
	* libproto/pop/pop3_iterator.c 
	* libmu_sieve/extensions/Makefile.am: Add editheader.c
	* libmu_sieve/extensions/editheader.c: New file. 
	* libmu_sieve/prog.c (mu_sv_code_command): Allow for optional
	positional arguments.
	* libmu_sieve/register.c (mu_sieve_test_lookup)
	(mu_sieve_action_lookup): Return NULL if a record with empty
	(NULL) handler is found. (mu_sieve_register_test_ext)
	(mu_sieve_register_action_ext): New functions.
	(mu_sieve_register_test)
	(mu_sieve_register_action): Rewrite as wrappers to the above.
	* libmu_sieve/util.c (mu_sieve_vlist_do): Allow for SVT_STRING
	argument.
	* sieve/tests/Makefile.am: Add new testcases.
	* sieve/tests/testsuite.at: Include new testcases.
	* sieve/tests/addheader.at: New testcase.
	* sieve/tests/delheader.at: New testcase. 
	* NEWS: Update.
	* doc/rfc/README: Update.

2012-08-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve header stream write method.

	* libmailutils/mailbox/header.c (HEADER_STREAMMOD): New flag.
	(mu_header_fill): Read data back from mstream if it was
	modified.
	(mu_header_destroy): Destroy mstream.
	(header_write): Rewrite from scratch. Allow for writing at
	arbitrary offsets.
	* examples/header.c: New commands: "overwrite" and "append",
	for testing the new functionality.

2012-08-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: provide a way to set return address.

	* mail/mail.c: New option -r (--return-address).
	* mail/mailvar.c: New variable "return-address".
	* mail/send.c (send_message): Obtain the return mail address
	from the "return-address" variable (if set). 
	* NEWS: Update.
	* doc/texinfo/programs.texi: Update.

2012-08-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a typo.

2012-08-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	mailutils-config: reflect eventual rename of mu, so that
	AM_GNU_MAILUTILS works.

	* mu/.gitignore: Update.
	* mu/Makefile.am: Build mailutils-config
	* mu/mailutils-config.in: New file.
	* mu/mailutils-config: Remove.

2012-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Ensure consistent stream state before calling its ctl method.

	Prior to calling ctl method, mu_stream_ioctl flushes stream
	buffer.

	* libmailutils/stream/fltstream.c (filter_ctl)
	<MU_IOCTL_FILTER_SET_DISABLED>: Flush internal buffer prior to
	setting the flag.
	* libmailutils/stream/stream.c (mu_stream_ioctl): Flush stream
	buffer.

2012-07-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Port 0b1e16bea to imap4d.

	* imap4d/imap4d.c (tls_required): Remove.
	(tls_mode): New variable.
	(imap4d_srv_config) <tls>: Remove.
	(imap4d_srv_config) <tls_mode>: New member.
	(imap4d_srv_param): Change the definition of the "tls"
	statement. Mark "tls-required" as deprecated.
	(imap4d_mainloop): Change type of the tls argument. Initialize
	session and pass it to each handler.
	* imap4d/imap4d.h (imap4d_session): New struct.
	(imap4d_command) <func>: Change signature. All uses changed.
	(tls_mode): New enum.
	(tls_required): Remove.
	(tls_available): New global.
	* imap4d/io.c (io_setio): Don't call tls_encryption_on, leave
	it to the caller.
	* imap4d/login.c (imap4d_login): Use session.
	* imap4d/starttls.c (tls_available): Global. Present even if
	!WITH_TLS
	(tls_encryption_on): Change signature. All callers updated.

2012-07-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement SMTP shell in mu.

	* include/mailutils/smtp.h (mu_smtp_get_reply_iterator)
	(mu_smtp_cmd,mu_smtp_test_param): New protos.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	smtp_cmd.c
	* libproto/mailer/smtp_cmd.c: New file.
	* libproto/mailer/smtp_io.c (mu_smtp_get_reply_iterator): New
	function.
	* libproto/mailer/smtp_param.c (mu_smtp_set_param): Accept NULL
	parameter value.
	(mu_smtp_test_param): New function.
	* mu/Makefile.am [MU_COND_SUPPORT_SMTP]: Add smtp.c to MODULES.
	(mu_SOURCES): Add getans.c, getyn.c and util.c
	* mu/getans.c: New file.
	* mu/getyn.c: New file.
	* mu/smtp.c: New file.
	* mu/util.c: New file.
	* mu/mu.h (port_from_sa): New proto.
	* mu/pop.c (port_from_sa): Move to util.c

2012-07-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Drop a superfluous dependency on libgcrypt.

	* am/tls.m4 (MU_CHECK_GNUTLS): Newer GNU TLS does not require
	libgcrypt. It is required only for v. 2.11 and prior versions.

2012-07-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes in SMTP and URL code.

	* include/mailutils/smtp.h (mu_smtp_replcode)
	(mu_smtp_sget_reply)
	(mu_smtp_capa_iterator): New protos.
	* libmailutils/url/dup.c (mu_url_dup): Bugfix. Obtain the name
	using mu_url_sget_name, which will create it if necessary.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	smtp_capa_itr.c
	* libproto/mailer/smtp_capa_itr.c: New file.
	* libproto/mailer/smtp_io.c (mu_smtp_response): Fix filling of
	smtp->flbuf.
	(mu_smtp_replcode,mu_smtp_sget_reply): New functions.

2012-07-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: make tls more configurable.

	The "tls" statement can be used both within a server
	declaration and in the global scope, the former overriding the
	latter. Its argument can be one of the following:

	 no TLS is not used. The STLS command won't be available even
	 if the tls configuration is otherwise complete.
	 ondemand TLS is initiated when the user issues the STLS
	command.
	 This is the default when TLS is configured.
	 required Same as above, but the use of STLS is mandatory. The
	 authentication state is entered only after TLS negotiation
	 has succeeded.
	 connection TLS is always forced when the connection is
	established (pops).

	For compatibility with prior versions the tls-required
	statement is retained, but is considered deprecated. It is
	synonymous with "tls required". The "tls" statement allows for
	the following alias values: 
	 false, off, 0 same as no
	 stls same as ondemand
	 yes, true, on, 1 same as connection

	Internally, all handler functions receive a pointer to the POP
	session structure, which configures the current session. In
	particular, it contains the TLS mode and capability list. 
	* pop3d/capa.c (pop3d_capa): Traverse the capability list,
	outputting each of its elements. (pop3d_session_init)
	(pop3d_session_free): New functions.
	* pop3d/logindelay.c (login_delay_capa): Change signature.
	* pop3d/pop3d.c (tls_required): Remove.
	(tls_mode): New variable.
	(pop3d_srv_config) <tls>: Remove.
	(pop3d_srv_config) <tls_mode>: New member.
	(pop3d_srv_param): Change definition of the "tls" statement.
	(pop3d_cfg_param): New statement "tls". Mark "tls-required" as
	deprecated.
	(pop3d_mainloop): Change type of the tls argument. Initialize
	session and pass it to each handler.
	(pop3d_connection): Decide whether and how to use TLS using
	global and per-session settings, the latter overriding the
	former.
	* pop3d/pop3d.h (login_delay_capa): Change signature.
	(tls_mode): New enum.
	(pop3d_capa_type): New enum.
	(pop3d_capa, pop3d_session): New structs. (pop3d_session_init)
	(pop3d_session_free): New protos.
	(pop3d_command_handler_t): Change signature. All handlers and
	their uses are changed accordingly.
	* pop3d/stls.c (pop3d_stls): Return error if session does not
	allow tls.

2012-07-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2012-07-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: provide mechanism for listing and editing attachments
	from the shell.

	* NEWS: Update.
	* mail/escape.c (escape_check_args): Take two additional
	arguments specifying minimum and maximum number of parameters
	to expect. All uses updated. Remove static qualifier.
	* mail/mail.h (send_attach_file): Rename to
	send_attach_file_default
	(escape_check_args,escape_list_attachments)
	(escape_attach,escape_remove_attachment): New protos.
	* mail/send.c (send_attach_file): Take encoding and content
	type as arguments.
	(send_attach_file_default): New function.
	(escape_list_attachments)
	(escape_attach,escape_remove_attachment): New functions.
	* mail/table.c: New escapes: l, +, ^ 
	* include/mailutils/list.h (mu_list_remove_nth)
	(mu_list_remove_nth_nd): New protos.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add
	removenth.c
	* libmailutils/list/removenth.c: New file.

2012-07-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement --attach option in mail; fix dead.letter
	functionality.

	* NEWS: Update.
	* doc/imprimatur: Upgrade.
	* libmailutils/mime/attachment.c
	(mu_message_create_attachment): Bugfixes.
	* mail/mail.c: New options --attach, --content-type and
	--encoding.
	* mail/mail.h (default_encoding, default_content_type): New
	externs.
	(send_attach_file): New proto.
	* mail/send.c (send_attach_file): New function.
	(save_dead_message_env): New function.
	(save_dead_message): Rewrite.
	(mail_send0): Attach files, if requested.

2012-07-17  Wojciech Polak  <polak@gnu.org>

	Update C++ and Python interfaces.

	* include/mailutils/prog.h: Add extern "C".
	* include/mailutils/wordsplit.h: Likewise.
	* libmu_cpp/address.cc (Address::to_string): Use
	mu_address_sget_printable.
	* libmu_cpp/filter.cc (FilterIconvStream): Use
	mu_filter_create_args.
	* python/mailutils/folder.py (get_stream, set_stream): Remove.

2012-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Spelling fixes.

2012-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Upgrade imprimatur module.

	* doc/imprimatur: Upgrade.

2012-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve configuration options.

	* am/enable.m4 (MU_ENABLE_BUILD): Change handling of
	additional-cond
	($4): the --{enable|disable}-build-* argument value overrides
	it. This allows to use such configuration shortcuts as: 
	 --disable-build-clients --enable-build-mail

	which will build only mail, but no other client. 
	* configure.ac: New option --with-dbm can be used to
	enable/disable building of all available DBM interfaces. It can
	be used in conjunction with implementation-specific options in
	the same way as described above, e.g.: 
	 --without-dbm --with-gdbm

	New option --with-mailbindir allows for overriding the
	installation directory for mail[x] only. 
	* mail/Makefile.am (mailbindir): New variable.
	(bin_PROGRAMS): Rename to mailbin_PROGRAMS.

2012-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove dependency on obstack. Use mu_opool_t instead.

	* include/mailutils/opool.h (mu_opool_alloc): New proto.
	* libmailutils/base/opool.c (mu_opool_alloc): New function.
	(mu_opool_appendz): Do not append trailing null character.
	* libmailutils/cfg/parser.y (mu_cfg_tree_create_node): Reflect
	the change in mu_opool_appendz.
	* comsat/action.c: Use mu_opool_t instead of struct obstack.
	* lib/mailcap.c: Likewise.
	* libmailutils/url/urlstr.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/mh_fmtgram.y: Likewise.
	* mh/mh_format.c: Likewise.
	* mh/mh_format.h: Likewise.
	* mh/mhn.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/whatnowenv.c: Likewise.
	* mimeview/mimetypes.l: Likewise.
	* mimeview/mimeview.h: Likewise. 
	* gnulib.modules: Remove obstack.

2012-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove dependency on getline.

	* gnulib.modules: Remove getline.
	* pop3d/apop.c [!ENABLE_DBM] Use mu_stream API instead of FILE.

2012-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	Imap4d would fail to select a nonexistent maildir INBOX,
	because the mu_mailbox_uidvalidity would return MU_ERR_NOENT.

	* libmailutils/base/amd.c (_amd_scan0): Recompute uidvalidity
	if the mailbox is empty.

2012-06-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	inc: bugfix.

	* mh/inc.c (incmbx): Fix typos.

2012-06-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a typo.

	* imap4d/copy.c (imap4d_copy0): Invert condition.

2012-06-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix in configuration reduction routines.

	* libmailutils/cfg/parser.y (mu_cfg_preorder): Accept null node
	lists.

2012-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix bug in mh testsuite.

	We cannot assume that $HOME points to existing directory.

	* mh/tests/testsuite.at (MH_SETUP): Override HOME environment
	variable. Use it instead of curdir.
	* mh/tests/atlocal.in (remove_curdir): Likewise.
	* mh/tests/mhn.at: Likewise.

2012-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* imap4d/imap4d.c Include mailutils/gsasl.h unconditionally.

2012-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes: port cfg statement, listen cfg statement in maidag,
	final dot recognition in maidag.

	* include/mailutils/server.h (mu_m_server_listen)
	(mu_m_server_parse_url): New protos.
	* libmailutils/server/msrv.c (add_server): Rename to
	mu_m_server_listen (now extern). All uses updated.
	(get_port): Bugfix: return port in server byte order. This
	fixes the use of the "port" configuration statement.
	* maidag/lmtp.c (cfun_data): Don't switch to full buffering.
	This makes it impossible to note the final dot in time.
	* maidag/maidag.c (cb_listen): New callback.
	(maidag_cfg_param): Attach cb_listen to the "listen" statement.

2012-06-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement two new Scheme functions.

	* NEWS: Update.
	* configure.ac: Version 2.99.97
	* libmu_scm/mu_mailbox.c (mu-mailbox-sync)
	(mu-mailbox-flush): New functions.

2012-06-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix comsat testsuite.

	* comsat/tests/atlocal.in (MH_SUPPORT)
	(MAILDIR_SUPPORT): New variables.
	* comsat/tests/testsuite.at: Disable test cases if their
	prerequisite features are not compiled in.

2012-06-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Don't use disabled features in mailutils.scm.

	* libmu_scm/mailutils/Makefile.am (DISTCLEANFILES): Rename to
	CLEANFILES: mailutils.scm should be cleaned as a usual object
	file.
	(MU_FEATURES): New variable, constructed depending on MU_COND_
	variables.
	(mailutils.scm goal): Use the value of MU_FEATURES as m4
	command line.
	* libmu_scm/mailutils/mailutils.scm.in: Include only supported
	libraries.

2012-06-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/symlink.c (mu_readlink): Fix initialization
	of size.

2012-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update root ignore list.

2012-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typos in the generated ChangeLog.

	* ChangeLog.amend: New file.
	* Makefile.am: Apply corrections from ChangeLog.amend when
	generating ChangeLog file.

2012-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update ignore lists.

2012-06-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	inc: accept mail from multiple source mailboxes.

	* doc/texinfo/mu-mh.texi: Document changes to inc.
	* NEWS: Likewise.
	* mh/inc.c: Accept multiple source mailboxes.
	(input_file): Remove.
	(input_file_list): New variable.
	(opt_handler): Multiple -file options augment input_file_list.
	(incmbox): New function.
	(main): Iterate over input_file_list, incorporating mail from
	each mailbox in it.

	Bugfix: 
	* libproto/imap/mbox.c (_imap_env_date): Return a 0-terminated
	string.

	Fix MH test suite.

	The ali-everybody tests fails on machines with user database
	kept in a non-standard storage (e.g. LDAP or NIS). This patch
	attempts to fix it. 
	* mh/tests/lu.c: New file.
	* mh/tests/.gitignore: Add lu.
	* mh/tests/Makefile.am (noinst_PROGRAMS): New variable.
	* mh/tests/ali.at: Use lu instead of scanning /etc/passwd
	directly.

2012-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in imap4d testsuite.

	Reportedly, the test command on 64-bit boxes is unable to
	handle unsigned long integers. Install a work over.

	* imap4d/tests/IDEF0955.at: Use string comparison in the
	invocation of test.
	* imap4d/tests/IDEF0956.at: Likewise.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change in bootstrap.

	* bootstrap.conf: Avoid downloading radius.m4 if it is already
	here.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix SMTP STARTTLS and SMTPS.

	* libproto/mailer/smtp.c (smtp_open): Do not use mu_tls_enable,
	rely on TLS stream functions to do the right thing. This
	complements 325c864eb1b88ac73c39ca3681a02f5194021806.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix handling of URL authentication credentials in SMTP AUTH.

	Provide special functions for storing and retrieving URL from
	mu_smtp_t object, instead of using MU_SMTP_PARAM_URL. The major
	drawback of the latter is that URLs in textual form can contain
	obfuscated access credentials, which makes them unusable for
	authentication.

	* include/mailutils/smtp.h (mu_smtp_set_url) (mu_smtp_get_url)
	(mu_smtp_set_secret,mu_smtp_get_secret): New protos.
	* include/mailutils/sys/smtp.h (_mu_smtp) <url>: New member.
	* libproto/mailer/smtp_secret.c: New file.
	* libproto/mailer/smtp_url.c: New file.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	new files.
	* libproto/mailer/smtp.c (smtp_open): Use mu_smtp_set_url to
	preserve URL credentials.
	* libproto/mailer/smtp_auth.c (_mu_smtp_fixup_params): Use
	smtp->url.
	* libproto/mailer/smtp_create.c (mu_smtp_destroy): Destroy
	smtp->url.
	* libproto/mailer/smtp_param.c (mu_smtp_set_param): Special
	handling for MU_SMTP_PARAM_URL.
	(mu_smtp_get_param): Likewise.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix quoted-printable and Q encodings.

	The Q encoding in RFC 2047 is not exactly the same as
	Quoted-Printable encoding: it differs in its handling of space
	characters (ASCII 32), which are encoded as underscores.

	* libmailutils/filter/qpflt.c (_qp_decoder): Use xd parameter
	to determine whether to treat underscores specially.
	(_qp_encoder): Likewise.
	(_qp_filter,_Q_filter): Allocate and initialize filter data
	accordingly to the kind of encoding.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove get_stream methods from folder and mailbox.

	* doc/texinfo/folder.texi: Update
	* include/mailutils/cpp/folder.h (Folder) <set_stream>
	<get_stream>: Remove.
	* include/mailutils/folder.h (mu_folder_get_stream)
	(mu_folder_get_streamref)
	(mu_folder_set_stream): Remove.
	* include/mailutils/mailbox.h (mu_folder_get_stream)
	(mu_folder_get_streamref)
	(mu_folder_set_stream): Remove protos.
	* include/mailutils/sys/folder.h (_mu_folder)<stream>: Remove.
	All uses updated.
	* libmailutils/mailbox/folder.c (mu_folder_set_stream)
	(mu_folder_get_stream,mu_folder_get_streamref): Remove.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_get_stream)
	(mu_mailbox_get_streamref): Remove.
	* libmu_cpp/folder.cc (get_stream, set_stream): Remove.
	* libmu_scm/mu_mailbox.c (mu-mailbox-get-port): Remove.
	* python/libmu_py/folder.c (get_stream): Remove.

2012-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* configure.ac: Fix quoting in FriBidi test.

2012-04-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement a copy method in mailbox.

	This method copies given messages (indicated by their sequence
	or UID numbers) to the given mailbox. So far this is
	implemented only in IMAP[S] folders.

	The mh/inc utility uses this method to optionally move
	incorporated messages to other folder (mailbox) instead of
	simply deleting them.

	* include/mailutils/imap.h (mu_imap_response)
	(mu_imap_response_code): New protos.
	(MU_IMAP_CB_TAGGED_OK,MU_IMAP_CB_TAGGED_NO)
	(MU_IMAP_CB_TAGGED_BAD): New callback codes.
	* include/mailutils/mailbox.h (MU_MAILBOX_COPY_UID)
	(MU_MAILBOX_COPY_CREAT): New constants.
	(mu_mailbox_msgset_copy)
	(mu_mailbox_message_copy): New protos.
	* include/mailutils/sys/imap.h (resp_code): Rename to response
	to avoid confusion. All uses updated.
	(response_code): New member.
	(_mu_imap_process_tagged_response): New proto.
	* include/mailutils/sys/mailbox.h (_mu_mailbox) <_copy>: New
	member.
	* libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add
	copy.c
	* libmailutils/mailbox/copy.c: New file.
	* libproto/imap/err.c (mu_imap_response): New function.
	(mu_imap_response_code): New function.
	* libproto/imap/mbox.c (_imap_copy_to_mailbox)
	(_mu_imap_mailbox_init): Implement _copy method.
	* libproto/imap/resplist.c (IS_LBRACE,IS_RBRACE): Fix macros.
	* libproto/imap/response.c (_mu_imap_response): Call
	_mu_imap_process_tagged_response to process tagged responses.
	* libproto/imap/resproc.c (parse_response_code): Bugfix:
	expected ']' was set off by one.
	(resptab)<code>: New member.
	(_mu_imap_process_tagged_response): New function. 
	* mh/inc.c (options, mh_option, opt_handler): New option
	--moveto.
	(move_to_mailbox): New variable.
	(main): If move_to_mailbox is set, move messages to that
	mailbox instead of deleting them.
	* mh/mh_getopt.h (mh_arg)<ARG_MOVETO>: New constant. 
	* NEWS: Update. 
	* include/mailutils/folder.h: Add a comment.
	* libmailutils/mailbox/folder.c: Minor formatting change.

2012-04-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* po/POTFILES.in: Remove xmalloc.c

2012-04-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Avoid using expr in tests with ulong as its argument.

	* configure.ac (MU_ULONG_MAX): Rename to MU_ULONG_MAX_1,
	decrease by one accordingly.
	* imap4d/tests/IDEF0955.at: Use MU_ULONG_MAX_1 instead of
	calling expr.
	* imap4d/tests/IDEF0956.at: Likewise.
	* imap4d/tests/atlocal.in: Define MU_ULONG_MAX_1.

2012-04-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libproto/mailer/smtp.c (_smtp_set_rcpt): Assign rcpt_to a
	copy of the recipient address.
	* mail/util.c (util_header_expand): Make sure exp is always
	initialized.
	* mh/send.c (main): Process mtstailor before checking input
	files, so its settings affect creation of additional headers
	and addresses. In particular, this allows for setting the
	sender address in mtstailor.

2012-04-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix SMTP test on machines with IPv6 enabled.

	* testsuite/smtpsend.c: New assignment option `family=' to
	force using a specified interface family.
	* testsuite/smtp-msg.at: Force IPv4.
	* testsuite/smtp-str.at: Likewise.

2012-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise some memory allocation routines.

	* examples/aclck.c: Check return values from strdup.
	* libmailutils/base/usremail.c: Likewise.
	* libmailutils/mailbox/bodystruct.c: Likewise.
	* lib/mailcap.c: Likewise.
	* libmailutils/mailbox/mbx_default.c: Likewise.
	* libmailutils/server/acl.c: Likewise.
	* libmailutils/stream/logstream.c: Likewise.
	* libmailutils/stream/message_stream.c: Likewise.
	* libmu_argp/mu_argp.c: Likewise.
	* libmu_auth/ldap.c: Likewise.
	* libmu_auth/pam.c: Likewise.
	* libmu_auth/sql.c: Likewise.
	* libmu_sieve/comparator.c: Likewise.
	* libmu_sieve/conf.c: Likewise.
	* libmu_sieve/extensions/list.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libproto/mailer/prog.c: Likewise.
	* libproto/mailer/smtp_io.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* python/libmu_py/address.c: Likewise.
	* sql/odbc.c 
	* examples/sfrom.c (main): Avoid unnecessary memory allocation.
	* libmailutils/mailbox/mailbox.c: Likewise. 
	* frm/frm.h: Include mailutils/alloc.h, remove xalloc.h
	* mh/mh.h: Likewise. 
	* imap4d/imap4d.h: Remove xalloc.h
	* mail/mail.h: Likewise.
	* mimeview/mimeview.h: Likewise.
	* mu/acl.c: Likewise.
	* readmsg/readmsg.c: Likewise. 
	* include/mailutils/locker.h
	(mu_locker_set_default_external_program): Change returned type.
	* include/mailutils/mailbox.h (mu_set_folder_directory): Change
	returned type.
	* libmailutils/base/locker.c
	(mu_locker_set_default_external_program): Return int (error
	code).
	* libmailutils/base/tilde.c: Add extra checks
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Bugfix.
	* mail/folders.c: Don't use alloca, use mu_alloc instead. It
	was the only use of that function in Mailutils, so this change
	allows to withdraw the alloca module. 
	* gnulib.modules (alloca, malloc)
	(realloc, xalloc): Remove. 
	* frm/common.c: Use mu_alloc and friends instead of xmalloc.
	* frm/from.c: Likewise.
	* imap4d/append.c: Likewise.
	* imap4d/auth_gsasl.c: Likewise.
	* imap4d/authenticate.c: Likewise.
	* imap4d/fetch.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* imap4d/io.c: Likewise.
	* imap4d/list.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* imap4d/parsebuf.c: Likewise.
	* imap4d/preauth.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/search.c: Likewise.
	* imap4d/util.c: Likewise.
	* libmu_argp/muinit.c: Likewise.
	* mail/alias.c: Likewise.
	* mail/alt.c: Likewise.
	* mail/copy.c: Likewise.
	* mail/decode.c: Likewise.
	* mail/escape.c: Likewise.
	* mail/file.c: Likewise.
	* mail/from.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/mailline.c: Likewise
	* mail/mailvar.c: Likewise
	* mail/msgset.y: Likewise
	* mail/page.c: Likewise
	* mail/send.c: Likewise
	* mail/shell.c: Likewise
	* mail/unset.c: Likewise
	* mail/util.c: Likewise
	* mh/folder.c: Likewise
	* mh/mh_alias.l: Likewise
	* mh/mh_alias.y: Likewise
	* mh/mh_fmtgram.y: Likewise
	* mh/mh_format.c: Likewise
	* mh/mh_global.c: Likewise
	* mh/mh_init.c: Likewise
	* mh/mh_list.c: Likewise
	* mh/mh_whatnow.c: Likewise
	* mh/mh_whom.c: Likewise
	* mh/mhn.c: Likewise
	* mh/pick.y: Likewise
	* mh/prompter-rl.c: Likewise
	* mh/refile.c: Likewise
	* mh/repl.c: Likewise
	* mh/send.c: Likewise
	* mh/sortm.c: Likewise
	* mimeview/mimetypes.y: Likewise
	* mu/dbm.c: Likewise
	* mu/dispatch.c: Likewise
	* mu/imap.c: Likewise
	* mu/pop.c: Likewise
	* mu/shell.c: Likewise
	* pop3d/apop.c: Likewise
	* pop3d/bulletin.c: Likewise
	* pop3d/popauth.c: Likewise
	* pop3d/user.c: Likewise

2012-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

2012-03-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix semantics of MU_IOCTL_SUBSTREAM.

	This also fixes e75e9123, which broke TLS support in daemons.

	* include/mailutils/stream.h (MU_IOCTL_TOPSTREAM): New ioctl.
	* imap4d/imap4d.c (set_strerr_flt)
	(clr_strerr_flt): Use MU_IOCTL_TOPSTREAM.
	* pop3d/pop3d.c: Likewise.
	* libmailutils/stream/fltstream.c (filter_ctl): Handle both
	MU_IOCTL_SUBSTREAM and MU_IOCTL_TOPSTREAM.
	* libmailutils/stream/iostream.c (_iostream_ctl): Likewise.
	* libmailutils/stream/logstream.c (_log_ctl): Likewise.
	* libmailutils/stream/xscript-stream.c (_xscript_ctl):
	Likewise.

2012-03-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmailutils/mime/mimehdr.c (free_param_continuation): Change
	return type to void.
	* mu/shell.c: Include muaux.h
	* libproto/imap/logout.c (mu_imap_logout): Logout is valid in
	any state, except MU_IMAP_SESSION_INIT.

2012-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve conversion between file mode and safety criteria and
	vice versa.

	* include/mailutils/util.h (mu_file_safety_code_to_name): New
	proto.
	* libmailutils/base/filesafety.c: Remove static functions which
	checked file mode bits. Use safety_checker.mode for that
	directly.
	(mu_file_safety_code_to_name): New function.
	(mu_file_mode_to_safety_criteria): Bugfix.
	(mu_safety_criteria_to_file_mode): Change algorithm.
	* libmailutils/tests/.gitignore: Update
	* libmailutils/tests/fsaftomod.at: New file.
	* libmailutils/tests/fsaftomod.c: New file.
	* libmailutils/tests/modtofsaf.at: New file.
	* libmailutils/tests/modtofsaf.c: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	fsaftomod and modtofsaf.
	(TESTSUITE_AT): Add fsaftomod.at and modtofsaf.at
	* libmailutils/tests/testsuite.at: Include fsaftomod.at and
	modtofsaf.at

2012-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmu_dbm/berkeley.c (do_bdb_open): Fix typo.

2012-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing includes.

2012-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: minor fix in reply formats.

	* mh/etc/replcomps: Format Fcc only if coming from myself.
	* mh/etc/replgroupcomps: Likewise.

2012-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement session ID for TCP/UDP servers.

	* imap4d/imap4d.c (set_strerr_flt,clr_strerr_flt): New
	functions.
	(imap4d_connection): Setup session prefix in strerr if
	mu_log_session_id is set.
	* imap4d/io.c (io_setio): Bugfix: unref debug stream.
	* pop3d/extra.c (pop3d_setio): Likewise.
	* pop3d/pop3d.c (set_strerr_flt,clr_strerr_flt): New functions.
	(pop3d_connection): Setup session prefix in strerr if
	mu_log_session_id is set. 
	* include/mailutils/acl.h (mu_acl_setenv)
	(mu_acl_getenv,mu_acl_set_session_id): New functions.
	* include/mailutils/server.h (mu_session_id): New extern.
	(mu_m_server_configured_count): Fix signature.
	* include/mailutils/syslog.h (mu_log_session_id): New extern.
	* libmailutils/diag/syslog.c (mu_log_session_id): New global. 
	* libmailutils/server/acl.c (_mu_acl) <envv,envc,envn>: New
	members.
	(run_closure) <env>: New member.
	(mu_acl_destroy): Free environment.
	(_acl_match): Handle "family" variable.
	(expand_arg): Propagate ACL environment to wordsplit.
	(mu_acl_check_sockaddr): Propagate ACL environment.
	(mu_acl_setenv)
	(mu_acl_getenv,mu_acl_set_session_id): New functions. 
	* libmailutils/server/ipsrv.c (mu_ip_tcp_accept): Store session
	ID in the ACL.
	(mu_ip_udp_accept): Likewise.
	* libmailutils/server/msrv.c (mu_m_server_configured_count):
	Fix signature.
	(mu_m_server_check_acl): Store session ID in the ACL.
	* libmailutils/server/server.c (mu_session_id): New global
	variable.
	(connection_loop): Increment session ID
	(mu_acl_set_session_id): New function.
	* libmailutils/stream/fltstream.c (filter_ctl): Handle
	MU_IOCTL_SUBSTREAM.
	* libmailutils/stream/logstream.c (_log_ctl): Likewise.
	* libmu_cfg/common.c (mu_logging_param) <session-id>: New
	statement.

2012-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix in smtp transport.

	* libproto/mailer/smtp.c (smtp_send_message): Filter out Fcc
	and Bcc headers.

2012-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix creation of Berkeley db files.

	* include/mailutils/util.h (mu_file_mode_to_safety_criteria)
	(mu_safety_criteria_to_file_mode): New protos.
	* libmailutils/base/filesafety.c (safety_checker) <mode>: New
	member.
	(file_safety_check_tab): Update.
	(mu_file_mode_to_safety_criteria)
	(mu_safety_criteria_to_file_mode): New functions.
	* libmu_dbm/berkeley.c (do_bdb_open): Create file prior to
	locking it.

2012-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: Implement folder completion in "save"

	* mail/mailline.c (file_compl_internal): New function (from
	file_compl);
	(file_compl): Call file_compl_internal.
	(msglist_file_compl): Call file_compl_internal.

2012-03-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of struct utmp/utmpx in comsatd.

	* am/utmp.m4: Check if struct utmp has ut_user or ut_name
	members.
	* comsat/comsat.c [HAVE_UTMPX_H]: Define UTMP as a typedef of
	struct utmpx. Define ut_user, if necessary.
	(find_user): Use ut_user instead of (backward-compatible)
	ut_name.

2012-03-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix compilation of pop3d and maidag without DBM.

	* maidag/Makefile.am: Load libmu_dbm.la if MU_COND_DBM is true.
	* pop3d/apop.c (pop3d_apopuser): Set owner, if specified in the
	config.
	* pop3d/pop3d.c (apop_database_owner)
	(apop_database_owner_set): New globals.
	(pop3d_cfg_param) <apop-database-owner>: New keyword.
	* pop3d/pop3d.h (apop_database_owner)
	(apop_database_owner_set): New declarations.

2012-03-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mu/dbm.c: Include conditionally, depending on ENABLE_DBM.

2012-02-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix locking of Berkeley databases.

	* include/mailutils/locker.h (mu_locker_lock_mode): New proto.
	* libmailutils/base/locker.c (_mu_locker_lock): Rename to
	mu_locker_lock_mode. All callers updated.
	* libmu_dbm/berkeley.c (bdb_file) <locker>: New member.
	(do_bdb_open): New function. Lock the database file before
	opening it. Drop support for version 2.
	(_bdb_open): Rewrite as a wrapper over do_bdb_open.
	* mu/dbm.c (dbm_doc): Document the "dump" subcommand. 
	* NEWS: Version 2.99.96
	* configure.ac: Likewise.

2012-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix parsing local URLs.

	* include/mailutils/url.h (MU_URL_PARSE_LOCAL): New flag.
	* libmailutils/tests/url-parse.c (parse_kwtab): New flag
	"local".
	* libmailutils/tests/url.at: Add new tests
	* libmailutils/url/create.c (_mu_url_ctx_parse_host): Skip
	parsing host part if MU_URL_PARSE_LOCAL is set.
	(_mu_url_create_internal): Initialize rc. If MU_URL_PARSE_SLASH
	is set and URL begins with "./" assume it is file. If either
	MU_URL_PARSE_SLASH or MU_URL_PARSE_PIPE are given and the URL
	is diagnosed as file or pipe, prefer the scheme from hints.

2012-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* include/mailutils/Makefile.am: Add types to
	pkginclude_HEADERS.
	* libmailutils/tests/url-comp.at: Add missing dnl.

2012-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mh/mhn.c (mhn_edit): Destroy output prior to unreferencing
	msg, because it may have been taken from it.

2012-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libproto/mailer/smtp.c (smtp_send_message): Fix typo.

2012-01-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in the testsuite.

	* testsuite/smtp-msg.at: Ignore output from kill.
	* testsuite/smtp-str.at: Likewise.

2012-01-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Assorted fixes.

	* libmailutils/mailer/mailer.c (mu_mailer_send_fragments): Fix
	3rd argument to _set_to.
	* libproto/mailer/smtp.c (smtp_send_message): SIZE capability
	can appear alone, without specifying maximum size.
	* mh/mh_whom.c (mh_alias_expand): Recreate domain part for
	addresses missing it.

2012-01-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Restore extra quoting in test mhn-store-pipe of
	mh/tests/mhn.at.

	Extra quoting is necessary because the argument includes
	unbalanced parentheses. It was first implemented in commit
	1b5098c9 on 2011-05-05, but was accidentally removed in commit
	1e33c774 on 2011-10-16.

2012-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in the testsuite.

	* libmailutils/tests/url-comp.c (main): Initialize URL.

2012-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Happy GNU Year.

2011-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement SMTPS.

	* NEWS: Update.
	* include/mailutils/registrar.h (mu_smtps_record): New extern.
	(mu_register_all_mailer_formats): Register mu_smtps_record.
	* include/mailutils/sys/registrar.h (MU_SMTPS_SCHEME)
	(MU_SMTPS_SCHEME_LEN,MU_SMTPS_PORT): New defines.
	* libmailutils/address/address.c (mu_address_get_count): Don't
	count parts with NULL emails.
	(mu_address_contains_email): Validate email before comparison.
	(mu_list_copy): New static.
	(mu_address_union): Reuse last subaddress if its email is NULL.
	* libmailutils/base/nullrec.c (mu_smtps_record): New
	placeholder.
	* libproto/mailer/smtp.c (mu_smtps_record): New global.
	(smtp_open): Implement SMTPS 
	* mu/send.c: New file.
	* mu/Makefile.am (MODULES): Add send.c

2011-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add SMTP test.

	* examples/mta.c: Handle -bD option. Detach from the
	controlling terminal if -bd is given. Print pid and port number
	in this case.
	* testsuite/smtpsend.c: Fix handling of the trace= option.
	* testsuite/Makefile.am: Add new tests.
	* testsuite/smtp-msg.at: New test case.
	* testsuite/smtp-str.at: New test case.
	* testsuite/testsuite.at: Include new test cases.

2011-12-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a bug in DOT decoder.

2011-12-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve msgset interface.  Use it in MH.

	* libmailutils/msgset/Makefile.am (libmsgset_la_SOURCES): Add
	new files.
	* libmailutils/msgset/addset.c: New file.
	* libmailutils/msgset/count.c: New file.
	* libmailutils/msgset/foreachmsgno.c: New file.
	* libmailutils/msgset/foreachuid.c: New file.
	* libmailutils/msgset/isempty.c: New file.
	* libmailutils/msgset/subset.c: New file.
	* libmailutils/msgset/trans.c: New file.
	* libmailutils/msgset/add.c (mu_msgset_add_range): Take fourth
	argument specifying the conversion mode. Translate numbers as
	necessary.
	* libmailutils/msgset/foreachmsg.c: Translate numbers as
	necessary.
	* libmailutils/msgset/foreachnum.c: Rewrite.
	* libmailutils/msgset/negate.c (_invert_range)
	(mu_msgset_add_range): Update calls to mu_msgset_add_range.
	* libmailutils/msgset/parse.c (parse_msgnum_env)<mode>: New
	member.
	(parse_msgrange): Update calls to mu_msgset_add_range.
	(mu_msgset_parse_imap): Change signature. All callers updated.
	* libmailutils/msgset/sub.c (mu_msgset_sub_range): Take fourth
	argument specifying the conversion mode. Translate numbers as
	necessary. 
	* imap4d/copy.c (imap4d_copy0): Update calls to
	mu_msgset_create and mu_msgset_parse_imap.
	* imap4d/fetch.c (fetch_thunk): Likewise.
	* imap4d/search.c (parse_simple_key): Likewise.
	* imap4d/store.c (store_thunk): Likewise.
	* include/mailutils/msgset.h (MU_MSGSET_NUM,MU_MSGSET_UID): New
	defines.
	(mu_msgset_add,mu_msgset_sub): New protos.
	(mu_msgset_add_range,mu_msgset_sub_range): Take 4 arguments.
	All callers changed.
	* include/mailutils/sys/msgset.h (_mu_msgset_translate_pair)
	(_mu_msgset_translate_range): New protos. 
	* libmailutils/tests/msgset.c: Reflect the above changes.
	* testsuite/msgset.c: Likewise.
	* libproto/imap/mbox.c: Update calls to mu_msgset functions. 
	* mh/mh.h (mh_msgset_t): Remove.
	(mh_iterator_fp): Remove typedef.
	(mh_msgset_parse): Change signature.
	(mh_msgset_member,mh_msgset_reverse,mh_msgset_negate)
	(mh_msgset_current,mh_msgset_free,mh_msgset_uids): Remove
	protos.
	(mh_msgset_parse_string): New proto.
	(mh_msgset_first_current,mh_msgset_first): New proto.
	(mh_iterate: Remove proto. Use mu_msgset_foreach* functions
	instead.
	(mh_seq_add,mh_seq_delete): Change signatures.
	* mh/mh_init.c (mh_iterate): Remove.
	* mh/mh_msgset.c: Rewrite using mu_msgset_t.
	* mh/mh_sequence.c: Likewise. 
	* mh/anno.c: Use new msgset functions.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/mhseq.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnowenv.c: Likewise.
	* mh/tests/mark.at: Reflect changes in the format of the saved
	sequences, which may contain ranges now. 
	* mu/imap.c: Update calls to mu_msgset functions.

2011-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	msgset: implement "foreach" calls.

	* imap4d/copy.c (copy_env) <src>: Remove. Not needed now.
	(size_sum,do_copy): Change to a mu_msgset_message_action_t.
	(try_copy,safe_copy): Change signature; use
	mu_msgset_foreach_message.
	* imap4d/fetch.c (_fetch_from_message): Change to a
	mu_msgset_message_action_t.
	(imap4d_fetch0): Use mu_msgset_foreach_message.
	* imap4d/imap4d.h (imap4d_message_action_t): Remove typedef.
	(util_foreach_message): Remove. Use mu_msgset_foreach_message.
	* imap4d/store.c (_do_store): Change to a
	mu_msgset_message_action_t.
	(imap4d_store0): Use mu_msgset_foreach_message.
	* imap4d/util.c (util_foreach_message): Remove.
	* include/mailutils/list.h (mu_list_foreach_dir): New proto.
	* include/mailutils/msgset.h (mu_msgset_msgno_action_t)
	(mu_msgset_message_action_t): New typedefs.
	(mu_msgset_negate,mu_msgset_foreach_dir_msgno)
	(mu_msgset_foreach_msgno,mu_msgset_foreach_dir_message)
	(mu_msgset_foreach_message): New protos.
	* libmailutils/list/foreachdir.c: New file.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add
	foreachdir.c.
	* libmailutils/list/head.c (mu_list_head): Fix conditional.
	* libmailutils/list/tail.c (mu_list_tail): Likewise.
	* libmailutils/msgset/foreachmsg.c: New file.
	* libmailutils/msgset/foreachnum.c: New file.
	* libmailutils/msgset/negate.c: New file.
	* libmailutils/msgset/Makefile.am (libmsgset_la_SOURCES): Add
	new files.
	* libmailutils/msgset/getitr.c (mu_msgset_get_iterator): Call
	mu_msgset_aggregate before doing anything.
	* libmailutils/msgset/getlist.c (mu_msgset_get_list): Likewise.
	* libmailutils/msgset/locate.c (mu_msgset_locate): Likewise.
	* libmailutils/msgset/parse.c (parse_msgrange): Remove
	duplicated code.
	* testsuite/msgset.c: Implement -neg option.

2011-12-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update TODO.

2011-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_msgset_t in imap4d.

	* imap4d/util.c (util_parse_msgset): Remove. Use
	mu_msgset_parse_imap. All uses changed.
	(util_foreach_message): Change first argument to mu_msgset_t.
	All uses changed.
	* imap4d/imap4d.h: Likewise. 
	* imap4d/copy.c: Use mu_msgset_t
	* imap4d/fetch.c: Likewise.
	* imap4d/search.c: Likewise.
	* imap4d/store.c: Likewise.

2011-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_msgset_t in imap client for FETCH, STORE and COPY.

	* include/mailutils/imap.h (mu_imap_fetch,mu_imap_store)
	(mu_imap_store_flags,mu_imap_copy): Take mu_msgset_t as the
	message set parameter.
	* include/mailutils/imapio.h (mu_imapio_send_msgset): New
	proto. (mu_imapio_send_command_v,mu_imapio_send_command)
	(mu_imapio_send_command_e): Take additional mu_msgset_t
	parameter. All uses changed.
	* include/mailutils/msgset.h (mu_msgset_parse_imap): Input
	string is const.
	* include/mailutils/sys/imap.h (imap_command) <msgset>: New
	member.
	* libmailutils/imapio/sendmsgset.c: New file.
	* libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add
	sendmsgset.c.
	* libmailutils/imapio/sendcmd.c (mu_imapio_send_command): Take
	additional mu_msgset_t parameter.
	* libmailutils/imapio/sendcmde.c (mu_imapio_send_command_e):
	Likewise.
	* libmailutils/imapio/sendcmdv.c (mu_imapio_send_command_v):
	Likewise.
	* libmailutils/msgset/parse.c (mu_msgset_parse_imap): Input
	string is const.
	* libproto/imap/copy.c (mu_imap_copy): Take mu_msgset_t as the
	message set parameter.
	* libproto/imap/fetch.c (mu_imap_fetch): Likewise.
	* libproto/imap/store.c (mu_imap_store): Likewise.
	* libproto/imap/storeflg.c (mu_imap_store_flags): Likewise.
	* libproto/imap/gencom.c (mu_imap_gencom): Send cmd->msgset.

2011-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/mailbox/mailbox.c (_MBOX_CHECK_FLAGS): Fix
	return code.

2011-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add functions for operations on message sets.

	* configure.ac: Build libmailutils/msgset/Makefile
	* include/mailutils/msgset.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	msgset.h
	* include/mailutils/mailutils.h: Include mailutils/msgset.h
	* include/mailutils/sys/msgset.h: New file.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	msgset.h
	* include/mailutils/types.hin (mu_msgset_t): New type.
	* libmailutils/Makefile.am (SUBDIRS): Add msgset.
	(libmailutils_la_LIBADD): Add libmsgset.la
	* libmailutils/msgset/Makefile.am: New file.
	* libmailutils/msgset/add.c: New file.
	* libmailutils/msgset/aggr.c: New file.
	* libmailutils/msgset/clear.c: New file.
	* libmailutils/msgset/create.c: New file.
	* libmailutils/msgset/free.c: New file.
	* libmailutils/msgset/getitr.c: New file.
	* libmailutils/msgset/getlist.c: New file.
	* libmailutils/msgset/locate.c: New file.
	* libmailutils/msgset/parse.c: New file.
	* libmailutils/msgset/print.c: New file.
	* libmailutils/msgset/sub.c: New file.
	* libmailutils/tests/msgset.at: New file.
	* libmailutils/tests/msgset.c: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add msgset.
	(TESTSUITE_AT): Add msgset.at.
	* libmailutils/tests/testsuite.at: Include msgset.at.
	* testsuite/msgset.c: New file.
	* testsuite/Makefile.am (noinst_PROGRAMS): Add msgset.

2011-12-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap mbox: minor improvements.

	* libproto/imap/mbox.c: Add some debugging messages.
	(_imap_mbx_gensync): New function shared among _imap_mbx_sync
	and _imap_mbx_expunge. It aggregates message numbers with same
	flags to separate message sets, thereby reducing the number of
	STORE commands sent to the server.

2011-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes in imap.

	* include/mailutils/imap.h (MU_IMAP_RESPONSE_UNKNOWN)
	(MU_IMAP_RESPONSE_TAGGED): New defines.
	* libproto/imap/mbox.c (_imap_mbx_open): Fix callback ID.
	* libproto/imap/response.c (_mu_imap_response): Call
	MU_IMAP_CB_BAD callback on tagged BAD responses as well.
	* libproto/imap/storeflg.c (mu_imap_store_flags): Insert space
	after item name.

2011-12-23  Wojciech Polak  <polak@gnu.org>

	Update the NEWS file.

2011-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish imap mailbox implementation.

	Some features are missing (notably, quick access), but overall
	the implementation offers all necessary features and performs a
	lot better than 2.x.

	Additionally, this commit fixes a minor bug in the imap4d
	implementation: the STORE command did not accept empty flag
	list.

	* NEWS: Update.
	* imap4d/store.c (store_thunk): Accept empty list as "items"
	argument. 
	* include/mailutils/imap.h (mu_imap_store_flags): New proto.
	* include/mailutils/imaputil.h (mu_imap_format_flags): Add new
	argument.
	* include/mailutils/sys/imap.h (_MU_IMAP_MSG_ATTRCHG): New
	flag.
	* libmailutils/imapio/flags.c: Accept three arguments, last one
	being a boolean flag specifying whether we want \Recent in the
	output.
	* libproto/imap/storeflg.c: New flag.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add
	storeflg.c.
	* libproto/imap/mbox.c: Finish the basic implementation. 
	* imap4d/sync.c: Update calls to mu_imap_format_flags.
	* imap4d/util.c: Likewise.
	* mu/imap.c: Likewise.
	* libmailutils/imapio/sendflg.c (mu_imapio_send_flags):
	Likewise.

2011-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement imap mailbox (read-only, so far).

	* include/mailutils/sys/imap.h (_mu_imap_mailbox_init): New
	proto.
	(_mu_imap_message,_mu_imap_mailbox): New structures.
	* libproto/imap/mbox.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Put back
	mbox.c
	* libproto/imap/fetch.c: Fix body/bodystructure parsing.
	* libproto/imap/folder.c (_mu_imap_folder_destroy): Close
	folder.
	(_mu_imap_folder_open): Implement STARTTLS.
	(_imap_record): Accept parameters in URL, use
	_mu_imap_mailbox_init to initialize mailbox.

2011-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in imap client.

	* libproto/imap/fetch.c (_fetch_fold): Fix parsing of BODY[].
	(_mu_imap_parse_fetch_response): Fix return value.

2011-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu imap: implement copy command.

	* mu/imap.c (com_copy): New function.
	(print_list_item): Treat 0 separator as '/' to avoid
	preliminary truncating the output.

2011-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement imap (client) bodystructure and envelope.

	* libmailutils/string/wordsplit.c (alloc_space): Fix
	reallocation calculations. 
	* imap4d/fetch.c (bodystructure): Output number of lines for
	any TEXT part, not only TEXT/PLAIN. 
	* include/mailutils/header.h (MU_HEADER_CONTENT_LOCATION): New
	define.
	* include/mailutils/imap.h (mu_imap_fetch_bodystructure):
	Implement.
	(mu_imap_fetch_envelope): Replace data fields with a single
	pointer to struct mu_imapenvelope.
	* include/mailutils/message.h: Include datetime.h
	(mu_imapenvelope, mu_bodystructure): New structs.
	(mu_message_type): New type.
	(mu_message_get_imapenvelope,mu_message_imapenvelope_free)
	(mu_message_set_imapenvelope)
	(mu_bodystructure_free,mu_list_free_bodystructure)
	(mu_message_get_bodystructure)
	(mu_message_set_bodystructure): New protos.
	* include/mailutils/mime.h (mu_mime_param_assoc_create)
	(mu_mime_param_assoc_add): New protos.
	* include/mailutils/sys/message.h (_mu_message)<_imapenvelope>
	<_bodystructure>: New methods.
	* libmailutils/mailbox/bodystruct.c: New file.
	* libmailutils/mailbox/imapenv.c: New file.
	* libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add
	new sources. 
	* libproto/imap/fetch.c: Implement bodystructure.
	* mu/imap.c: Likewise. 
	* testsuite/bs.c: New file.
	* testsuite/Makefile.am (noinst_PROGRAMS): Add bs.

2011-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix API for obtaining full email address.

	Old API relied on passing a pointer to the buffer string and
	its size, which is defective. The new API, in addition to that,
	provides functions for obtaining a pointer to the statically
	allocated original value, a pointer to dynamically allocated
	copy, and a function for formatting the address directly to a
	MU stream.

	Two functions are marked as deprecated: mu_address_to_string
	and mu_address_format_string. Both assume a pointer to an
	allocated string of a fixed size, which is far from being
	convenient nor reliable enough.

	* include/mailutils/address.h (MU_ADDR_HINT_ADDR): Rename to
	MU_ADDR_HINT_PRINTABLE
	(mu_address)<addr>: Rename to printable.
	(mu_address_sget_printable,mu_address_aget_printable)
	(mu_address_get_printable): New protos.
	(mu_stream_format_address): New proto. (mu_address_to_string)
	(mu_address_format_string): Mark as deprecated.
	(mu_validate_email): New proto.
	* examples/mta.c: Use mu_address_sget_printable instead of
	(mu_address_to_string)
	* libmailutils/address/addrstream.c: New file.
	* libmailutils/address/Makefile.am (libaddress_la_SOURCES): Add
	addrstream.c
	* libmailutils/address/address.c (mu_address_format_string):
	Rewrite using streams.
	(mu_address_to_string): Rewrite as a wrapper over
	mu_address_get_printable.
	(mu_address_sget_printable,mu_address_aget_printable)
	(mu_address_get_printable): New functions.
	* libmailutils/mime/mimehdr.c (_mime_header_parse): Initialize
	rc.
	* mail/util.c (util_merge_addresses): Use
	mu_address_aget_printable.
	* mh/mh.h (mh_annotate): Both string args are const.
	* mh/mh_init.c (mh_annotate): Likewise.
	* mh/mh_format.c (builtin_formataddr): Use
	mu_address_sget_printable.
	* mh/mh_whatnow.c (anno_data)<field,value>: Both are consts.
	(annotate): Use mu_address_sget_printable.
	* mh/send.c (set_address_header): Use
	mu_address_sget_printable.
	* mu/imap.c (format_email): Use mu_stream_format_address.
	* python/libmu_py/address.c (api_address_to_string): Likewise.

2011-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: Fix fetch in case of message/rfc822.

	This case requires full recursion.

	* imap4d/fetch.c (bodystructure): Call fetch_bodystructure0.

2011-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

2011-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement parser for RFC-2231 header fields.

	The new implementation is able to return all parameters at
	once, in an associative array. A subset of parameters can be
	requested. The data are automatically converted to the output
	charset.

	In addition, RFC-2047 parser is extended to support language
	specifications (RFC-2231, chapter 5).

	* include/mailutils/message.h (MU_MIMEHDR_CSINFO)
	(MU_MIMEHDR_MULTILINE): Remove, not public anymore.
	(mu_mimehdr_get_param,mu_mimehdr_aget_param)
	(mu_message_aget_attachment_name)
	(mu_message_get_attachment_name): Remove pflags argument.
	* include/mailutils/mime.h (mu_mime_param): New struct.
	(mu_rfc2047_decode_param)
	(mu_mime_header_parse,mu_mime_header_parse_subset): New proto.
	* libmailutils/base/rfc2047.c (_rfc2047_decode_param): New
	auxiliary function. Use memory stream to collect data.
	(mu_rfc2047_decode): Rewrite as a wrapper around the above.
	(mu_rfc2047_decode_param): New function.
	* libmailutils/filter/decode.c (mu_decode_filter_args): Pass
	actual (instead of maximal) number of arguments to
	mu_filter_chain_create.
	* libmailutils/mime/mimehdr.c: Rewrite from scratch.
	* libmailutils/tests/.gitignore: Add mimehdr.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	mimehdr.
	(TESTSUITE_AT): Add mimehdr.at.
	* libmailutils/tests/mimehdr.at: New test.
	* libmailutils/tests/mimehdr.c: New test program.
	* libmailutils/tests/testsuite.at: Include.

2011-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move Python support from experimental to stable features.

2011-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of the hierarchy delimiter.

	* include/mailutils/util.h (MU_HIERARCHY_DELIMITER): New
	define.
	(mu_tilde_expansion): Change signature. Delimiter is an int.
	* libmailutils/base/tilde.c: Likewise. All uses update. 
	* imap4d/namespace.c (namespace_checkfullpath)
	(namespace_getfullpath): Remove delim argument. All uses
	updated.
	* imap4d/util.c (util_getfullpath): Remove delim argument. All
	uses updated.

2011-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use IMAP-stile wildcards in folder matchers by default.

	* imap4d/imap4d.h: Include mailutils/imaputil.h
	* imap4d/list.c: Use mu_folder_imap_match/mu_imap_wildmatch.
	* imap4d/lsub.c: Likewise.
	* imap4d/util.c (util_wcard_match): Move as to libmailutils as
	mu_imap_wildmatch.
	* include/mailutils/imaputil.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	imaputil.h
	* include/mailutils/folder.h (mu_folder_imap_match)
	(mu_folder_glob_match): New protos.
	* include/mailutils/imapio.h (mu_imap_flag_to_attribute)
	(mu_imap_format_flags): Move to imaputil.h
	* libmailutils/imapio/wildmatch.c: New file.
	* libmailutils/imapio/sendflg.c: New file.
	* libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add
	sendflg.c and wildmatch.c.
	* libmailutils/imapio/flags.c (mu_imapio_send_flags): Move to
	sendflg.c
	* libmailutils/mailbox/folder.c (mu_folder_match): Rename to
	mu_folder_glob_match.
	(mu_folder_imap_match): New function.
	(mu_folder_create_from_record): Use mu_folder_imap_match as the
	default matcher.
	* libmailutils/tests/fsfolder.c: Start command line options
	with a dash. New option "-glob". All uses changed.
	* libproto/imap/select.c: Include imaputil.h
	* mu/imap.c: Likewise.

2011-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provisions for loading python modules from the source tree.

	* python/Makefile.am (EXTRA_DIST): Add usercustomize.py
	* python/usercustomize.py: New file.
	* python/libmu_py/Makefile.am (pythonexec_LTLIBRARIES): Remove.
	* python/mailutils/Makefile.am (pythonexec_LTLIBRARIES): New
	variable (moved from ../libmu_py/Makefile.am)
	* python/libmu_py/c_api.c: Move ...
	* python/mailutils/c_api.c: ... there

2011-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a test suite for folder delete method.

	* testsuite/Makefile.am: Add new test cases.
	* testsuite/testsuite.at: Include fldel.at, add banners.
	* testsuite/atlocal.in: Define MH_SUPPORT and MAILDIR_SUPPORT
	variables depending on whether the corresponding mailbox format
	is enabled.
	* testsuite/fldel.at: New test case.
	* testsuite/mbdel.at: Skip tests which rely on disabled mailbox
	formats.

2011-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Share folder implementation between mbox, mh and maildir.  Fix
	mu_folder_delete.

	* include/mailutils/folder.h (_mu_fsfolder_init): New proto.
	* include/mailutils/mailbox.h (mu_mailbox_create_at): New
	proto.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_create_at): New
	function.
	* libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add
	fsfolder.c
	* libmailutils/mailbox/folder.c (mu_folder_delete): If folder
	does not provide its own method for deletion, use
	mu_mailbox_remove. (mu_folder_open, mu_folder_close,
	mu_folder_enumerate) (mu_folder_lsub, mu_folder_subscribe,
	mu_folder_unsubscribe)
	(mu_folder_rename): Return EINVAL if folder is NULL.
	(mu_folder_match): Bugfix: don't pass folder flags to fnmatch.
	* libmailutils/mailbox/fsfolder.c: New file. Implementation of
	file-system based folders.
	* libmailutils/mailbox/mailbox (_create_mailbox0): Propagate
	error return from mu_registrar_lookup_url.
	* libmailutils/tests/fsfolder00.at: New test case.
	* libmailutils/tests/fsfolder01.at: New test case.
	* libmailutils/tests/fsfolder02.at: New test case.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	fsfolder.
	(TESTSUITE_AT): Add fsfolder tests.
	* libmailutils/tests/testsuite.at: Include fsfolder tests. 
	* libproto/mbox/folder.c: Use fsfolder.
	(_mh_is_scheme): Check file even if scheme matches.
	* libproto/maildir/folder.c: Likewise.
	(_maildir_is_scheme): Check file even if scheme matches.
	* libproto/mh/folder.c: Likewise. 
	* testsuite/fldel.c: New file.
	* testsuite/Makefile.am (noinst_PROGRAMS): Build fldel.

2011-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor cleanup in imap client.

	* include/mailutils/imap.h (mu_imap_session_state): Remove.
	(mu_imap_state): Rename to mu_imap_session_state.
	(mu_imap_state_str): Rename to mu_imap_session_state_str.
	* libproto/imap/create.c (mu_imap_session_state)
	(mu_imap_iserror,mu_imap_clearerr): Move to state.c
	* mu/imap.c: Update accordingly.

2011-12-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement folder API.

	* libmailutils/list/listlist.c (mu_list_append_list): Do
	nothing if the source list is empty. 
	* include/mailutils/sys/imap.h (_mu_imap_url_init)
	(_mu_imaps_url_init): New protos.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Restore
	url.c
	* libproto/imap/mbox.c: Deleted
	* libproto/imap/url.c: Rewrite.
	* libproto/imap/folder.c: Rewrite from scratch.
	* configure.ac: Build libproto/imap/tests/Makefile
	* include/mailutils/imap.h (mu_imap_session_state)
	(mu_imap_iserror, mu_imap_clearerr)
	(mu_imap_login_secret): New protos.
	* include/mailutils/sys/imap.h (_mu_imap_list_element_is_nil):
	New proto. 
	* libmailutils/mailbox/folder.c (mu_folder_list): Pass
	MU_FOLDER_ATTRIBUTE_ALL.
	* libproto/imap/fake-folder.c: Remove.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Remove
	fake-folder.c Add url.c and folder.c
	* libproto/imap/create.c (mu_imap_session_state)
	(mu_imap_iserror, mu_imap_clearerr): New functions.
	* libproto/imap/delete.c: Check input parameters. 
	* libproto/imap/fetch.c: Use _mu_imap_list_element_is_nil to
	check for empty lists.
	* libproto/imap/genlist.c: Likewise.
	* libproto/imap/rename.c: Likewise.
	* libproto/imap/subscribe.c: Likewise.
	* libproto/imap/unsubscribe.c: Likewise. 
	* libproto/imap/resplist.c: Treat NIL and () equally.
	* libproto/imap/login.c (mu_imap_login_secret): New function. 
	* mu/imap.c: Fix a typo.

2011-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement UID command in mu imap.

2011-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: implement starttls.

	* include/mailutils/imap.h (mu_imap_starttls): New proto.
	* include/mailutils/imapio.h: Use mu_imapio_t instead of struct
	_mu_imapio *.
	* include/mailutils/sys/imap.h (MU_IMAP_CLIENT_STARTTLS_RX):
	New state.
	* libmailutils/imapio/transport.c: New file.
	* libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add
	transport.c
	* libproto/imap/starttls.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add
	starttls.c.
	* libproto/imap/capability.c (mu_imap_capability): Bugfix: set
	up comparator and reclaim function after successful return from
	mu_list_map.
	* libproto/imap/capatst.c (mu_imap_capability_test): Clear
	MU_IMAP_RESP bit.
	* libproto/imap/err.c (mu_imap_strerror): Return errstr only if
	MU_IMAP_RESP is set.
	* mu/imap.c: Implement starttls.

2011-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: implement LSUB.

	LSUB is pretty similar to LIST, therefore it is implemented as
	a wrapper over the latter.

	* include/mailutils/imap.h
	(mu_imap_genlist,mu_imap_genlist_new)
	(mu_imap_lsub,mu_imap_lsub_new): New protos.
	* include/mailutils/sys/imap.h (MU_IMAP_CLIENT_LSUB_RX): New
	state.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add new
	files.
	* libproto/imap/genlist.c: New file.
	* libproto/imap/list.c: Rewrite using generalized list
	functions.
	* libproto/imap/lsub.c: New file.
	* mu/imap.c: Implement lsub.

2011-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: Implement SUBSCRIBE and UNSUBSCRIBE.

	* include/mailutils/imap.h (mu_imap_subscribe)
	(mu_imap_unsubscribe): New protos.
	* include/mailutils/sys/imap.h (MU_IMAP_CLIENT_SUBSCRIBE_RX)
	(MU_IMAP_CLIENT_UNSUBSCRIBE_RX): New states.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add
	subscribe.c and unsubscribe.c
	* libproto/imap/subscribe.c: New file.
	* libproto/imap/unsubscribe.c: New file.
	* mu/imap.c: Implement subscribe/unsubscribe.

2011-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: quote command arguments as necessary.

	* include/mailutils/imapio.h (mu_imapio_send_command)
	(mu_imapio_send_command_e,mu_imapio_send_command_v)
	(mu_imapio_last_error,mu_imapio_clearerr): New protos.
	* include/mailutils/sys/imap.h (imap_command)<uid>: Remove.
	<extra>: New member.
	* libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add
	new files.
	* libmailutils/imapio/qstring.c
	(mu_imapio_send_qstring_unfold): Improve functionality.
	* libmailutils/imapio/sendcmd.c: New file.
	* libmailutils/imapio/sendcmde.c: New file.
	* libmailutils/imapio/sendcmdv.c: New file.
	* libmailutils/imapio/errstate.c: New file. 
	* libproto/imap/gencom.c (mu_imap_gencom): Use
	mu_imapio_send_command_v
	* libproto/imap/appstrsiz.c: Quote command arguments as
	necessary.
	* libproto/imap/capability.c: Likewise.
	* libproto/imap/check.c: Likewise.
	* libproto/imap/close.c: Likewise.
	* libproto/imap/copy.c: Likewise.
	* libproto/imap/delete.c: Likewise.
	* libproto/imap/expunge.c: Likewise.
	* libproto/imap/fetch.c: Likewise.
	* libproto/imap/list.c: Likewise.
	* libproto/imap/login.c: Likewise.
	* libproto/imap/mbcreate.c: Likewise.
	* libproto/imap/noop.c: Likewise.
	* libproto/imap/rename.c: Likewise.
	* libproto/imap/select.c: Likewise.
	* libproto/imap/store.c: Likewise.
	* libproto/imap/unselect.c: Likewise.

2011-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: implement list.

	* libmailutils/stdstream/basestr.c (mu_strout): Bugfix:
	initialize destroy function.
	* include/mailutils/imap.h (imap_command)
	(mu_imap_gencom): Move to sys/imap.h
	(mu_imap_list,mu_imap_list_new): New protos.
	* include/mailutils/sys/imap.h (imap_command): New struct (from
	../imap.h).
	<handler>: Rename to tagged_handler.
	(untagged_handler,untagged_handler_data): New members. All uses
	changed.
	(mu_imap_gencom): New proto. 
	* libproto/imap/list.c: New file.
	* libproto/imap/Makefile.am: Add list.c
	* libproto/imap/gencom.c: Use supplied untagged_handler to
	analyze untagged response. 
	* mu/imap.c: Implement list command.

2011-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_sieve/sieve.y (mu_sieve_compile): Initialize rc.
	* python/libmu_py/sieve.c (api_sieve_machine_error_text): Fix
	type of length.

2011-12-13  Wojciech Polak  <polak@gnu.org>

	Improve Python API. Add MemoryStream class.

	* python/libmu_py/sieve.c (api_sieve_machine_init): Improve.
	(api_sieve_machine_error_text): Add new function.
	* python/libmu_py/stream.c (api_memory_stream_create):
	Likewise.
	(api_stream_to_message): Likewise.
	* python/mailutils/error.py (Error): Add optional str_error
	argument.
	* python/mailutils/sieve.py: Update.
	* python/mailutils/stream.py (to_message): Add new method.
	(MemoryStream): Add new class.

2011-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* libmailutils/datetime/streamftime.c (mu_c_streamftime):
	Handle %Z separately.
	* libmu_sieve/sieve.y (mu_sieve_compile): Return MU_ERR_PARSE
	on errors.

2011-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix possible output buffer overflow in base64 encoder.

	* libmailutils/filter/base64.c (_base64_encoder): Continue
	after incrementing nbytes.
	* mh/mhn.c: Additional error checking.

2011-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix declaration of mu_sieve_vlist_do in libmu_sieve.

2011-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Initialize standard I/O streams statically.

	This allows programmers to use them right away, much like their
	stdio counterparts. The mu_stdstream_setup and friends can be
	used to re-initialize them, should the need be.

	* include/mailutils/sys/file_stream.h
	(_MU_FILE_STREAM_STATIC_FILENAME): New flag.
	(_mu_file_stream_setup): New proto.
	* include/mailutils/sys/logstream.h (_mu_log_stream_setup): New
	proto.
	* include/mailutils/sys/stream.h (_MU_STR_EVENT_BOOTSTRAP): New
	event code.
	(_mu_stream) <destroy>: New method.
	* libmailutils/stdstream/basestr.c: Define the three standard
	streams statically, use bootstrap event to initialize them.
	* libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create):
	Accept tag==NULL.
	* libmailutils/stream/file_stream.c (fd_done): Do not free
	filename if _MU_FILE_STREAM_STATIC_FILENAME is set.
	(_mu_file_stream_setup): New function.
	* libmailutils/stream/logstream.c (NEXT): Check size before
	advancing buffer pointer.
	(_mu_log_stream_setup): New function.
	* libmailutils/stream/stream.c (_bootstrap_event): New macro.
	(mu_stream_destroy): If .destroy is defined, use it instead of
	free(2). (mu_stream_open,mu_stream_seek,mu_stream_set_buffer)
	(mu_stream_read,mu_stream_readdelim,mu_stream_getdelim)
	(mu_stream_write,mu_stream_size,mu_stream_wait)
	(mu_stream_truncate,mu_stream_shutdown): Call _bootstrap_event
	at the beginning.
	* libmailutils/tests/.gitignore: Add strin, strout.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add strin,
	strout.
	(TESTSUITE_AT): Add stdstream tests.
	* libmailutils/tests/testsuite.at: Include stdstream tests.
	* libmailutils/tests/strerr.at: New test case.
	* libmailutils/tests/strin.at: Likewise.
	* libmailutils/tests/strout.at: Likewise.
	* libmailutils/tests/strin.c: New test program.
	* libmailutils/tests/strout.c: Likewise.

2011-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in imap4d.

	* imap4d/util.c (util_getfullpath): Use mu_stpcpy.

2011-12-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix UID generation in mboxes (complements f9a034c7)

	* libproto/mbox/mboxscan.c (mbox_scan_internal): Fix UID
	generation.
	* testsuite/lstuid.c: New test program.
	* testsuite/lstuid00.at: New test case.
	* testsuite/lstuid01.at: Likewise.
	* testsuite/lstuid02.at: Likewise.
	* testsuite/Makefile.am: Add new test cases.
	* testsuite/testsuite.at: Likewise.

2011-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in libmu_sieve.

	* libmu_sieve/sieve.y (mu_sieve_machine_init_ex): Fix typo.
	Reference errstream, not mu_strerr.

2011-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: remove functions duplicated in the library.

	* imap4d/imap4d.h (util_format_attribute_flags)
	(util_attribute_to_type): Remove. All uses changed to
	mu_imap_format_flags and mu_imap_flag_to_attribute,
	respectively.
	(util_type_to_attribute): Remove.

2011-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Redo message set parser in imap4d.

	The new parser complies to RFC3501. Its output message sets are
	formatted as MU lists of non-overlapping contiguous message
	ranges, which reduces memory consumption and imposes less
	strain on CPU. The parser automatically translates message UIDs
	to sequence numbers and provides better error handling.

	* imap4d/imap4d.h (util_msgset): Remove.
	(util_parse_msgset): New proto.
	(imap4d_message_action_t): New typedef.
	(util_foreach_message): New proto.
	* imap4d/util.c (util_msgset): Remove.
	(util_parse_msgset): New function. 
	* imap4d/copy.c: Use util_parse_msgset to parse message set
	specs and util_foreach_message to iterate over the returned
	list.
	* imap4d/fetch.c: Likewise.
	* imap4d/search.c: Likewise.
	* imap4d/store.c: Likewise.
	* imap4d/tests/IDEF0955.at: Update the test.
	* include/mailutils/list.h (mu_list_action_t): Fix typedef.
	* libmailutils/list/foreach.c (mu_list_foreach)
	(mu_list_do): Update signatures.

2011-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure mu_mailbox_get_message returns MU_ERR_NOENT if the
	requested message number is not found in the mailbox.

	* libmailutils/base/amd.c (amd_get_message): Return
	MU_ERR_NOENT if msgno is not found in the mailbox, but not if
	it is 0, in which case return EINVAL.
	* libproto/mbox/mbox.c (mbox_get_message): Likewise.
	* libproto/pop/mbox.c (pop_create_pop3_message): Likewise. 
	* libproto/mbox/mboxscan.c (mbox_scan_internal): Fix
	calculation of UIDs.

2011-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in mu_list_sort.

	* libmailutils/list/sort.c (_list_qsort): Fix end-of-list
	condition.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use UTC in From_ separators in accordance with RFC 4155.

	* examples/mta.c (make_tmp): Use gmtime + mu_c_streamftime to
	create From_ line.
	* libmailutils/mailbox/msgenv.c (message_envelope_date): Use
	gmtime.
	* maidag/deliver.c (make_tmp): Likewise.
	* maidag/lmtp.c (cfun_data): Likewise.
	* readmsg/readmsg.c (print_unix_header): Use gmtime.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	New function mu_datetime_tz_local.

	The function initializes mu_timezone structure to the local
	timezone.

	* include/mailutils/datetime.h (mu_utc_offset): Change return
	type.
	(mu_datetime_tz_local): New proto.
	* libmailutils/datetime/tzlocal.c: New file.
	* libmailutils/datetime/Makefile.am: Add new file.
	* libmailutils/datetime/scantime.c (mu_scan_datetime): Use
	mu_datetime_tz_local to initialize local TZ.
	* mh/mh_format.c (_parse_date): Likewise.
	* libmailutils/datetime/utcoff.c (mu_utc_offset): Returns int.
	* libmu_sieve/actions.c (mime_create_ds): Use mu_c_streamftime
	to format time directly to stream.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename mu_tm2time to mu_datetime_to_utc.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/append.c: Don't reuse msg variable.
	* po/POTFILES.in: Remove unneeded file.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revamp date/time calculations.

	* configure.ac: Build libmailutils/datetime/Makefile.am
	* include/mailutils/datetime.h (mu_datetime_julianday)
	(mu_datetime_dayofweek,mu_datetime_dayofyear)
	(mu_datetime_year_days): New protos.
	* libmailutils/Makefile.am (SUBDIRS): Add datetime
	(libmailutils_la_LIBADD): Add libdatetime.la
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove
	date.c and strftime.c.
	* libmailutils/base/date.c: Remove.
	* libmailutils/base/strftime.c: Move to libmailutils/datetime
	* libmailutils/datetime/Makefile.am: New file.
	* libmailutils/datetime/dow.c: New file.
	* libmailutils/datetime/doy.c: New file.
	* libmailutils/datetime/jd.c: New file.
	* libmailutils/datetime/scantime.c: New file.
	* libmailutils/datetime/streamftime.c: New file.
	* libmailutils/datetime/tab.c: New file.
	* libmailutils/datetime/unixtime.c: New file.
	* libmailutils/datetime/utcoff.c: New file.
	* libmailutils/datetime/yd.c: New file.
	* libmailutils/tests/scantime.at: Fix yday numbers.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move date/time declarations into a separate header:
	mailutils/datetime.h.

	Additionally, do not typedef mu_timezone, leave it in struct
	namespace.

2011-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement CREATE and APPEND. Fix APPEND in imap4d.

	* imap4d/append.c (imap4d_append0): Use
	mu_message_from_stream_with_envelope with crafted envelope. The
	effect is that the envelope of the message always reflects the
	actual sender, as deduced from the header (X-Envelope-Sender,
	Sender, From, in that order) and the date given with the APPEND
	command (or current date/time, if not given).
	* imap4d/tests/append00.at: Reflect changes in the envelope.
	* imap4d/tests/append01.at: Likewise.
	* imap4d/io.c (io_format_completion_response): Call imap4d_sync
	to emit eventual non-tagged responses before the tagged one. 
	* include/mailutils/envelope.h (mu_envelope_set_destroy): New
	proto.
	* include/mailutils/header.h (MU_HEADER_SENDER): Remove
	duplicate define.
	* include/mailutils/imap.h (mu_imap_mailbox_create)
	(mu_imap_append_stream_size,mu_imap_append_stream)
	(mu_imap_append_message,mu_imapio_send_flags)
	(mu_imapio_send_time): New protos.
	* include/mailutils/imapio.h (mu_imapio_send_literal): Remove
	proto. (mu_imapio_send_literal_string)
	(mu_imapio_send_literal_stream): New protos.
	* include/mailutils/message.h
	(mu_message_from_stream_with_envelope): New proto.
	* include/mailutils/sys/imap.h (MU_IMAP_CLIENT_APPEND_RX): New
	state.
	* include/mailutils/sys/message_stream.h (_mu_message_stream)
	<envelope>: Rename to envelope_string.
	<construct_envelope>: New member. 
	* libmailutils/imapio/literal.c: Remove.
	* libmailutils/imapio/litstream.c: New file.
	* libmailutils/imapio/litstring.c: New file.
	* libmailutils/imapio/time.c: New file.
	* libmailutils/imapio/Makefile.am: Add new files.
	* libmailutils/imapio/flags.c (mu_imapio_send_flags): New
	function.
	* libmailutils/imapio/qstring.c
	(mu_imapio_send_qstring_unfold): Use
	mu_imapio_send_literal_string. 
	* libmailutils/mailbox/envelope.c (mu_envelope_set_destroy):
	New function.
	* libmailutils/stream/message_stream.c
	(mu_message_from_stream_with_envelope): New function.
	(mu_stream_to_message): Rewrite as an alternative entry point
	to the above. 
	* libproto/imap/Makefile.am: Add new files.
	* libproto/imap/appmsg.c: New file.
	* libproto/imap/appstr.c: New file.
	* libproto/imap/appstrsiz.c: New file.
	* libproto/imap/mbcreate.c: New file. 
	* mu/imap.c: Implement create and append.

2011-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement STORE, DELETE, RENAME, CHECK, EXPUNGE,
	COPY, CLOSE and UNSELECT.

	* include/mailutils/imap.h (imap_command): New struct.
	(mu_imap_gencom): New function. (mu_imap_store,mu_imap_delete)
	(mu_imap_rename,mu_imap_mailbox_close,mu_imap_close)
	(mu_imap_check): New functions.
	(_mu_close_handler): New function.
	* include/mailutils/sys/imap.h (mu_imap_client_state): Add new
	states.
	* libproto/imap/gencom.c: New file.
	* libproto/imap/close.c: New file.
	* libproto/imap/delete.c: New file.
	* libproto/imap/rename.c: New file.
	* libproto/imap/store.c: New file.
	* libproto/imap/unselect.c: New file.
	* libproto/imap/check.c: New file.
	* libproto/imap/expunge.c: New file.
	* libproto/imap/copy.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add new
	files. 
	* mu/imap.c: Implement new commands.
	* mu/shell.c (execute_line): Treat backslash as escape only
	before another backslash or double-quote.

2011-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: CLOSE should not send EXPUNGE responses. Fix error
	checking in STORE.

	* imap4d/imap4d.h (silent_expunge): New global.
	* imap4d/sync.c (silent_expunge): New variable.
	(action): Suppress EXPUNGE responses if silent_expunge is set.
	* imap4d/close.c (imap4d_close0): Set silent_expunge before
	calling mu_mailbox_flush. 
	* imap4d/tests/close-expunge.at: New test.
	* imap4d/tests/testsuite.at: Include close-expunge.at.
	* imap4d/tests/Makefile.am (TESTSUITE_AT): Add
	close-expunge.at. 
	* imap4d/fetch.c (fetch_thunk): Emit BAD response if failed to
	parse message set.
	* imap4d/store.c (store_thunk): Emit BAD response if failed to
	parse flags.

2011-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

2011-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mu_scan_datetime.

	* libmailutils/base/date.c (mu_scan_datetime): Handle optional
	blocks (%[ %| %], alternatives %( %| %), "any character"
	wildcards (%?) and strict character matches (%\C). Return
	MU_ERR_FORMAT on errors in format string. Compute tm->tm_yday.
	* libmailutils/diag/errors (MU_ERR_FORMAT): New error code.
	* libmailutils/tests/scantime.c: Print yday. Print input line
	with diagnostic messages.
	* libmailutils/tests/scantime.at: Add more tests.
	* include/mailutils/util.h (MU_DATETIME_RFC822): Split into two
	formats: MU_DATETIME_FORM_RFC822, for output formatting, and
	MU_DATETIME_SCAN_RFC822 for input scanning. All uses changed.

2011-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use list LIFO access where appropriate.

	* libmu_sieve/runtime.c (_mu_sv_instr_push)
	(_mu_sv_instr_pop): Use mu_list_push and mu_list_pop.
	* mail/alias.c (recursive_alias_expand): Likewise.

2011-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement LIFO access functions for lists.

	* include/mailutils/list.h (mu_list_push)
	(mu_list_pop): New functions.
	* libmailutils/list/pop.c: New file.
	* libmailutils/list/push.c: New file.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add new
	files.
	* libmailutils/tests/list.at: Test LIFO access.
	* libmailutils/tests/listop.c: Implement push & pop.

2011-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/util.c (util_parse_internal_date): Use
	MU_DATETIME_INTERNALDATE format.
	* include/mailutils/util.h (MU_DATETIME_IMAP_SEARCH): Rename to
	MU_DATETIME_INTERNALDATE (previous incorrect definition
	removed).
	(MU_DATETIME_RFC822): New format.
	* libmailutils/address/address.c: Accessors for local_part and
	domain invalidate email field.
	(validate_email): New static function.
	(mu_address_sget_email): Reconstruct email, if necessary.
	(mu_address_format_string): Likewise.
	* libmailutils/base/date.c (mu_c_streamftime): Allow for %$
	specifier for compatibility with mu_scan_datetime.
	(mu_scan_datetime): Use %$ to indicate optional end of string.
	* libmailutils/tests/scantime.at: Update.
	* libproto/imap/fetch.c (_fill_response): Use
	MU_DATETIME_RFC822 format.
	* mu/imap.c (fetch_response_printer): Print subject.

2011-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mu_scan_datetime.

	* include/mailutils/stream.h (mu_fixed_memory_stream_create):
	New proto.
	* libmailutils/stream/memory_stream.c
	(mu_fixed_memory_stream_create): New function. 
	* include/mailutils/util.h (mu_parse_imap_date_time)
	(mu_parse_ctime_date_time): Remove.
	(mu_scan_datetime): New proto.
	(mu_strftime): Remove const from the last arg.
	(MU_DATETIME_FROM,MU_DATETIME_IMAP)
	(MU_DATETIME_IMAP_SEARCH,MU_DATETIME_INTERNALDATE): New
	defines.
	* libmailutils/base/strftime.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	strftime.c.
	* libmailutils/base/date.c (mu_scan_datetime): New function.
	* libmailutils/base/mutil.c (mu_strftime): Remove. 
	* libmailutils/tests/scantime.at: New file.
	* libmailutils/tests/scantime.c: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	scantime.
	(TESTSUITE_AT): Add scantime.at.
	* libmailutils/tests/strftime.c (main): Call
	mu_set_program_name.
	* libmailutils/tests/testsuite.at: Include scantime.at 
	* libmu_sieve/actions.c (mime_create_reason): Use
	mu_c_streamftime. 
	* imap4d/fetch.c (_frt_internaldate): Use mu_scan_datetime.
	* imap4d/util.c (util_parse_internal_date): Likewise.
	* libmu_scm/mu_message.c (mu-message-get-envelope-date):
	Likewise.
	* libproto/imap/fetch.c (_date_mapper): Likewise.
	* mail/from.c (hdr_date): Use mu_scan_datetime.

2011-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement locale-independent strftime function.

	* include/mailutils/util.h (mu_c_streamftime): New prototype.
	* libmailutils/base/date.c (mu_c_streamftime): New function.
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/strftime.at: New test script.
	* libmailutils/tests/strftime.c: New test program.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	strftime.
	(TESTSUITE_AT): Add strftime.at.
	* libmailutils/tests/testsuite.at: Include strftime.at.

2011-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Split ibmailutils/mailbox/message.c into logically separated
	and easily manageable parts.

2011-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: Use new list functions to simplify vartab-related
	operations.

	* mail/mailvar.c (_mailvar_symbol_to_array): Remove.
	(_mailvar_symbol_to_list): New function.
	(mailvar_make_array): Remove.
	(mailvar_list_copy): New function.
	(mailvar_iterator)<varptr,varcnt,pos>: Remove.
	<varlist,varitr>: New members.
	(mailvar_iterate_next): Use subordinate iterator.
	(mailvar_iterate_first): Likewise.
	(mailvar_print): Use mailvar_make_array.

2011-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: minor change in folder.

	* mh/folder.c: Use mu_list_t instead of obstack to keep folder
	list.

2011-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement list sorting.

	* include/mailutils/list.h (mu_list_sort): New proto.
	* libmailutils/list/sort.c: New file.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add
	sort.c
	* libmailutils/tests/listop.c: Implement the sort command.
	* libmailutils/tests/list.at: Test list sorting.

2011-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: improve parsing of BODY[] items.

	* include/mailutils/imap.h (mu_imap_fetch_body) <key>: Rename
	to section.
	<fields>: New member.
	* libproto/imap/fetch.c: Rewrite response item parser.
	* mu/imap.c: Improve fetch_response_printer

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement list folding functions.

	* include/mailutils/list.h (mu_list_folder_t): New typedef.
	(mu_list_fold, mu_list_rfold): New functions.
	* libmailutils/list/fold.c: New file.
	* libmailutils/list/rfold.c: New file.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add
	fold.c and rfold.c
	* libmailutils/list/gmap.c (mu_list_gmap): Access list elements
	directly, instead of using iterators.
	* libmailutils/tests/list.at: Add test cases for list folding.
	* libmailutils/tests/listop.c: Add fold and rfold commands.

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Clean-up state changes in imap client.	Fix error handling in
	it and in pop3.

	* include/mailutils/imap.h (mu_imap_state): Rename to struct
	mu_imap_session_state, prefix all values with MU_IMAP_STATE_.
	All uses updated.
	* include/mailutils/sys/imap.h (mu_imap_client_state): Prefix
	all values with MU_IMAP_CLIENT. Rename MU_IMAP_NO_STATE to
	MU_IMAP_READY. All uses updated.
	(_mu_imap)<state>: Rename to client_state, fix data type.
	(imap_state): Rename to imap_state. All uses updated.
	(MU_IMAP_CHECK_EAGAIN): Reset state to MU_IMAP_CLIENT_READY if
	MU_ERR_REPLY or MU_ERR_BADREPLY is reported.
	* include/mailutils/sys/pop3.h (MU_POP3_CHECK_EAGAIN): Reset
	state to MU_POP3_NO_STATE, if MU_ERR_REPLY or MU_ERR_BADREPLY
	is reported.
	* libproto/imap/fetch.c (_date_mapper): Avoid overwriting
	resp->type.
	* libproto/imap/select.c (_mu_imap_collect_flags): Initialize
	*res prior to collecting flags into it.
	* mu/imap.c: Install a FETCH callback.

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: initial implementation of fetch.

	* include/mailutils/imap.h (mu_imap_fetch): New proto.
	(MU_IMAP_CB_FETCH): New callback code.
	(MU_IMAP_FETCH_BODY,MU_IMAP_FETCH_BODYSTRUCTURE)
	(MU_IMAP_FETCH_ENVELOPE,MU_IMAP_FETCH_FLAGS)
	(MU_IMAP_FETCH_INTERNALDATE,MU_IMAP_FETCH_RFC822_SIZE)
	(MU_IMAP_FETCH_UID): New constants.
	(mu_imap_fetch_body,mu_imap_fetch_bodystructure)
	(mu_imap_fetch_envelope,mu_imap_fetch_flags)
	(mu_imap_fetch_internaldate,mu_imap_fetch_rfc822_size)
	(mu_imap_fetch_uid,mu_imap_fetch_response): New structures.
	* include/mailutils/sys/imap.h (MU_IMAP_SET_XSCRIPT_MASK)
	(MU_IMAP_CLR_XSCRIPT_MASK): New macros.
	(mu_imap_client_state)<MU_IMAP_FETCH_RX>: New state.
	(_mu_imap_list_nth_element_is_string): New proto.
	* libproto/imap/fetch.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add
	fetch.c
	* libproto/imap/carrier.c (mu_imap_set_carrier): Update call to
	mu_imapio_create.
	* libproto/imap/resplist.c
	(_mu_imap_list_nth_element_is_string): New function.
	* libproto/imap/resproc.c (_process_unsolicited_response):
	Handle FETCH response.
	* libproto/imap/trace.c (mu_imap_trace_mask): Call
	mu_imapio_trace_payload if needed.
	* mu/imap.c (imap_bad_callback): New function.
	(com_disconnect): Register imap_bad_callback.
	(com_fetch): New function.
	(imap_comtab): Add the "fetch" command.
	* mu/mu.h (mutool_command) <flags>: New member.
	* mu/pop.c (pop_comtab): Update initializers.
	* mu/shell.c (default_comtab): Update initializers.
	(execute_line): Rewrite using incremental wordsplit. This
	allows for optionally coalescing arguments with indices >=
	argmax into one argument. This is useful for such commands as
	"prompt" and "fetch".

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a function for creating an empty email address object.

	* include/mailutils/address.h (mu_address_create_null): New
	proto.
	* libmailutils/address/address.c (mu_address_create_null): New
	function.

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	imapio: fix payload tracing and handling of continuation
	responses.

	* include/mailutils/imapio.h (mu_imapio_create): Change
	signature. All uses updated.
	(mu_imapio_trace_payload,mu_imapio_get_trace_payload): New
	protos.
	* include/mailutils/sys/imapio.h (_mu_imapio) <_imap_server>
	<_imap_trace_payload>: New bits.
	* libmailutils/imapio/create.c (mu_imapio_create): Take three
	arguments, the third one specifying whether the imapio object
	is intended for server or client.
	* libmailutils/imapio/getline.c (initial_parse): In server
	mode, parse everything at once. Handle continuation responses
	in client mode.
	(mu_imapio_getline): Toggle MU_XSCRIPT_PAYLOAD only if
	requested.
	* libmailutils/imapio/literal.c: Wait for continuation response
	(in client mode).
	* libmailutils/imapio/trace.c (mu_imapio_trace_payload)
	(mu_imapio_get_trace_payload): New functions.
	* libmailutils/tests/imapio.c: New option -server.
	* libmailutils/tests/imapio.at: Update literal tests.

2011-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/imapio/getline.c (mu_imapio_getline): Fix the
	call to realloc.

2011-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap4d: fix handling of nested message/rfc822 parts.

	* imap4d/fetch.c (fetch_runtime_closure) <msglist>: New member.
	(frt_register_message,frt_unregister_messages): New functions.
	(fetch_get_part_rfc822): Look into encapsulated rfc822
	messages. (_frt_body_text,_frt_header)
	(_frt_header_fields): Use frt_unregister_messages.
	(imap4d_fetch0): Initialize all fields in struct
	fetch_runtime_closure. Destroy msglist when finished using it.
	* imap4d/tests/fetch.at: Add test cases for nested
	message/rfc822.
	* testsuite/spool/msg.mbox: Add a message with nested
	message/rfc822 part.

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update ignored file list.

	* scheme/.gitignore: Update

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a bug in imap4d parser, add more tests.

	* imap4d/io.c (gettok): Fix memory overwrite.
	* imap4d/tests/fetch.at: Add checks for HEADER, HEADER.FIELDS,
	HEADER.FIELDS.NOT, and TEXT applied to message/rfc822 parts.
	* testsuite/spool/msg.mbox: New file.
	* testsuite/spool/DISTFILES: Add msg.mbox.

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: reimplement fetch tests in Autotest.  Remove
	DejaGNU-based testsuite.

	* configure.ac: Update.
	* imap4d/Makefile.am (SUBDIRS): Remove testsuite.
	* imap4d/fetch.c (fetch_thunk): Add a FIXME reference.
	* imap4d/tests/fetch.at: New file.
	* imap4d/tests/Makefile.am (TESTSUITE_AT): Add fetch.at
	* imap4d/tests/testsuite.at: Include fetch.at
	* imap4d/tests/atlocal.in (fixup_tz): New filter.
	* imap4d/tests/Makefile.am (EXTRA_DIST): Remove unexisting
	file.
	* imap4d/testsuite: Remove

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: reimplement append tests.

	* imap4d/tests/Makefile.am (TESTSUITE_AT): Add append00.at and
	append01.at
	* imap4d/tests/testsuite.at: Include append tests.
	* imap4d/tests/append00.at: New file.
	* imap4d/tests/append01.at: New file.

2011-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: rewrite testsuite in Autotest.

	* configure.ac (IMAP_AUTHOBJS): Remove subst variable. Use
	conditional instead. Configure imap4d/tests for testing. Build
	imap4d/tests/Makefile and imap4d/tests/atlocal.
	* imap4d/Makefile.am (SUBDIRS): Add tests.
	[MU_COND_GSASL]: Define AUTH_GSASL
	[MU_COND_GSSAPI]: Define AUTH_GSSAPI
	(imap4d_SOURCES): Include AUTH_GSASL and AUTH_GSSAPI
	(imap4d_LDADD,imap4d_DEPENDENCIES): Remove reference to
	IMAP_AUTHOBJS.
	(EXTRA_DIST): Remove. 
	* imap4d/tests/.gitignore: New file.
	* imap4d/tests/IDEF0955.at: New file
	* imap4d/tests/IDEF0956.at: New file
	* imap4d/tests/Makefile.am
	* imap4d/tests/anystate.at: New file
	* imap4d/tests/atlocal.in
	* imap4d/tests/create01.at: New file
	* imap4d/tests/create02.at: New file
	* imap4d/tests/examine.at: New file
	* imap4d/tests/expunge.at: New file
	* imap4d/tests/id.at: New file
	* imap4d/tests/list.at: New file
	* imap4d/tests/search.at: New file
	* imap4d/tests/select.at: New file
	* imap4d/tests/status.at: New file
	* imap4d/tests/testsuite.at: New file 
	* imap4d/fetch.c (fetch_io): Improve range checking. If the
	requested number of bytes is greater than maximum, truncate it.
	* imap4d/imap4d.c: New option --test.
	(test_mode): New global variable.
	(imap4d_session_setup0): Fix improperly allocated automatic
	variable.
	(main): Call GSASL and GSSAPI initializations only if
	mu_gsasl_enabled() returns true.
	* imap4d/imap4d.h (test_mode): New extern.
	* imap4d/preauth.c: Do not complain about failed getpeername in
	test mode.
	* imap4d/select.c: Fix human-readable response texts. 
	* include/mailutils/gsasl.h (mu_gsasl_module_data)<enable>: New
	member.
	(mu_gsasl_enabled): New proto.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_flush):
	(mu_mailbox_append_message,mu_mailbox_sync)
	(mu_mailbox_expunge): Use MU_STREAM_WRITE instead of
	MU_STREAM_RDWR.
	* libmu_auth/gsasl.c (mu_gsasl_module_data): Fix
	initialization.
	(mu_gsasl_enabled): New function.
	* libmu_cfg/gsasl.c (mu_gsasl_param): New parameter "enable".

2011-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: fix FETCH (BODYSTRUCTURE)

	* imap4d/fetch.c (bodystructure): Do not emit CHARSET pair if
	there is none in the Content-Type header.
	(fetch_get_part_rfc822): Use mu_message_unencapsulate
	* libmailutils/mime/attachment.c (mu_message_unencapsulate):
	Use mu_stream_to_message to create destination message. This
	ensures that the latter can be handled by other MU functions
	(e.g. mu_header_* family).

2011-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: Fix the functionality of FETCH BODY sections HEADER,
	TEXT and MIME.

	According to RFC 3501 HEADER, HEADER.FIELDS, and
	HEADER.FIELDS.NOT part specifiers refer to the RFC-2822 header
	of the message or of an encapsulated MESSAGE/RFC822 message.
	They return NILs if applied to a MIME part other than
	MESSAGE/RFC822.

	* imap4d/fetch.c (fetch_get_part_rfc822): New function.
	(_frt_body): Used only for BODY[]. Consequently, do not try to
	resolve message part, use the message itself instead.
	(_frt_body_n): New function.
	(_frt_mime): New function.
	(_frt_body_text,_frt_header,_frt_header_fields): Use
	fetch_get_part_rfc822. Unref the retrieved message when
	through.
	(parse_section_text): Use _frt_mime for BODY[<n>.MIME]
	(parse_section): Use _frt_body_n for BODY[<n>].
	* imap4d/testsuite/imap4d/fetch.exp: Remove incorrect tests.

2011-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Change callback signature in imap client.

	The purpose is to avoid using variadic calls in order to let
	the compiler do the necessary argument checking.

	* include/mailutils/imap.h (mu_imap_callback_t): Take a pair of
	size_t and void * arguments instead of the single va_list.
	(mu_imap_callback): Likewise.
	* libproto/imap/callback.c: Likewise.
	* libproto/imap/resproc.c: Update callback calls.
	* mu/imap.c: Update callback declarations.

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a test for non-synchronized imap literals.

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve IMAP I/O module.  Add testcase.

	* libmailutils/imapio/getline.c (initial_parse): New function.
	(mu_imapio_getline): Use initial_parse.
	* libmailutils/tests/imapio.c (main): Do not set progname.
	* libmailutils/tests/imapio.at: New file.
	* libmailutils/tests/Makefile.am: Add imapio.at.
	* libmailutils/tests/testsuite.at: Include imapio.at

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mu/shell.c: Output newline when EOF is received.

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement noop.

	* include/mailutils/imap.h (mu_imap_noop): New proto.
	* include/mailutils/sys/imap.h (mu_imap_client_state)
	<MU_IMAP_NOOP_RX>: New state.
	* libproto/imap/noop.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add noop.c
	* mu/imap.c (report_failure): New function.
	(com_login,select_mbox,com_status): Use report_failure for
	error reporting.
	(com_noop): New function.
	(imap_comtab)<noop>: New command.

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mu/imap.c: Add missing gettext markers.

2011-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Process untagged responses synchronously.

	* include/mailutils/imap.h (mu_imap_response_action_t): Move to
	sys/imap.h
	(mu_imap_foreach_response): Remove.
	* include/mailutils/sys/imap.h (_mu_imap)<untagged_resp>:
	Remove. All sources updated.
	(_mu_imap_response): Change signature.
	(_mu_imap_untagged_response_clear)
	(_mu_imap_untagged_response_add): Remove.
	(_mu_imap_untagged_response_to_list)
	(_mu_imap_process_untagged_response): New protos.
	* libproto/imap/connect.c: Use
	_mu_imap_untagged_response_to_list and
	_mu_imap_process_untagged_response.
	* libproto/imap/create.c: Update.
	* libproto/imap/destroy.c: Update.
	* libproto/imap/disconnect.c: Update.
	* libproto/imap/capability.c: Update calls to _mu_imap_response
	* libproto/imap/id.c: Likewise.
	* libproto/imap/login.c: Likewise.
	* libproto/imap/logout.c: Likewise.
	* libproto/imap/select.c: Likewise.
	* libproto/imap/status.c: Likewise.
	* libproto/imap/resplist.c (_mu_imap_untagged_response_clear):
	Remove.
	(_mu_imap_untagged_response_add): Remove.
	(_mu_imap_untagged_response_to_list): New function.
	* libproto/imap/response.c (_mu_imap_response): Take
	response-processing function and its closure as arguments.
	* libproto/imap/resproc.c (_mu_imap_process_untagged_response):
	New function.
	(mu_imap_foreach_response): Remove. 
	* mu/imap.c: Install a BYE callback.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Change callback handling in imap client.

	* include/mailutils/imap.h (MU_IMAP_CB_NO)
	(MU_IMAP_CB_BAD,MU_IMAP_CB_BYE)
	(MU_IMAP_CB_PREAUTH): New callbacks.
	(mu_imap_callback_t): Change signature.
	(mu_imap_callback): Change signature.
	* include/mailutils/sys/imap.h (mu_imap_client_state)
	<MU_IMAP_CLOSING>: New state.
	* libproto/imap/callback.c (mu_imap_callback): Change
	signature. Fix boundary check.
	(mu_imap_register_callback_function): Fix boundary check.
	* libproto/imap/connect.c (mu_imap_connect): Use
	mu_imap_foreach_response to parse response.
	* libproto/imap/response.c (_mu_imap_response): Check number of
	words before dereferencing them.
	* libproto/imap/resproc.c: Handle all server responses.
	* mu/imap.c (com_connect): Set POPAUTH callback. Set verbosity
	flags after I/O structure has been created.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	list: new operations: head and tail.

	* include/mailutils/list.h (mu_list_head, mu_list_tail): New
	prototypes.
	* libmailutils/list/head.c: New file.
	* libmailutils/list/tail.c: New file.
	* libmailutils/list/Makefile.am (liblist_la_SOURCES): Add new
	files.
	* libmailutils/tests/listop.c (head,tail): New commands.
	* libmailutils/tests/list.at: Test head and tail.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: reflect changes to imapio parser.

	* include/mailutils/sys/imap.h (_mu_imap_seterrstrz): New
	proto.
	* libmailutils/imapio/replstr.c: Update.
	* libproto/imap/err.c (_mu_imap_seterrstrz): New function.
	* libproto/imap/id.c: Remove superfluous calls to
	_mu_imap_seterrstr.
	* libproto/imap/login.c: Likewise.
	* libproto/imap/select.c: Likewise.
	* libproto/imap/status.c: Likewise.
	* libproto/imap/response.c: Set human-readable text as errstr.
	* libproto/imap/resproc.c (ok_response): Reflect changes to
	mu_imapio_getline.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	imapio: improve getline parser.

	* libmailutils/imapio/create.c (mu_imapio_create): Treat [ and
	] as delimiters. Use MU_WRDSF_DQUOTE flag instead of
	MU_WRDSF_QUOTE. Use MU_WRDSF_APPEND
	* libmailutils/imapio/getline.c (mu_imapio_getline): Use
	incremental wordsplit mode. Return human-readable part of
	status responses as a single token.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	wordsplit: minor fix in return_delims mode.

	* libmailutils/string/wordsplit.c (scan_word): Return only one
	delimiter if MU_WRDSF_RETURN_DELIMS is on
	* libmailutils/tests/wordsplit.at: Reflect that.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	wordsplit: add incremental mode.

	* include/mailutils/wordsplit.h (MU_WRDSF_INCREMENTAL): New
	flag.
	(MU_WRDSE_NOINPUT): New error code.
	* libmailutils/string/wordsplit.c (mu_wordsplit_init0): New
	function.
	(mu_wordsplit_init): Call mu_wordsplit_init0.
	(expvar): Use MU_WRDSF_WS instead of MU_WRDSF_SQUEEZE_DELIMS in
	call to subordinate mu_wordsplit.
	(skip_delim): If both MU_WRDSF_RETURN_DELIMS and
	MU_WRDSF_SQUEEZE_DELIMS are given, squeeze only the same
	delimiter characters.
	* libmailutils/tests/wordsplit.at: Add tests for incremental
	mode.
	* libmailutils/tests/wsp.c: Support incremental mode.

2011-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	tls: do not generate DH params.

	* libmu_auth/tls.c: Don't generate DH params at all.

2011-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Enable GSASL by default.

	* am/gsasl.m4 (MU_CHECK_GSASL): Enable GSASL by default. Other
	minor fixes.
	* am/tls.m4 (MU_CHECK_TLS): Rename to MU_CHECK_GNUTLS. Check
	option arguments. Check for gnutls library version.
	* configure.ac: Update.
	* README: Document the change.
	* NEWS: Document the change.

2011-11-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_dbm/dbm.c (mu_dbm_create_from_url): Parameter list
	beginning with a negative parameter implies default safety
	criteria. Fix semantics of the "default" keyword: it is
	different from "all".
	* libmu_dbm/mudbm.h (DEFAULT_DBM_SAFETY_FLAGS): Remove. Not
	needed now.
	* pop3d/bulletin.c (read_bulletin_db): Remove a leftover call
	to mu_dbm_safety_set_flags.

2011-11-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement new DBM dump format.

	The new format, called "C", allows programmers to create input
	data for use by mu load using conventional means. It represents
	both key and content as C strings (hence its name), with usual
	C (literal and octal) escapes to represent non-printable
	characters.

	* mu/dbm.c (IOBUF_REREAD,IOBUF_EOF): New constants.
	(iobuf) <state>: New member.
	(input_eof): New macro.
	(input_getline): Use iobuf.state to detect EOF.
	(input_ungetline): Reset state only if it is 0.
	(format_tab): New format "C".
	(write_quoted_string,C_writer,C_read_datum)
	(C_reader): New functions to implement the C dump format.
	* libmailutils/tests/testsuite.at: Minor change.

2011-11-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.99.95.

2011-11-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	libmu_dbm: Functions for DB creation take default safety flags
	in their last argument.

	* configure.ac (check_dbm_impl): Fix improper usage of expr in
	BDB=* case.
	* include/mailutils/dbm.h (mu_dbm_create_from_url)
	(mu_dbm_create): Take default safety flags as the last
	argument.
	* libmailutils/base/filesafety.c (_check_linkwrdir): Check for
	both hard and symbolic links. Fix the latter check.
	* libmailutils/tests/fsaf.at: Add check for softlink in a
	writable dir.
	* libmu_dbm/create.c (mu_dbm_create): Take default file safety
	as the last argument.
	* libmu_dbm/dbm.c (mu_dbm_create_from_url): Likewise.
	* maidag/mailquota.c (dbm_retrieve_quota): Update call to
	mu_dbm_create. Impose MU_FILE_SAFETY_ALL by default.
	* mu/dbm.c (open_db_file): Update call to mu_dbm_create. No
	checks by default.
	* pop3d/apop.c (pop3d_apopuser): Update call to mu_dbm_create.
	Use apop_database_safety as the default checks.
	* pop3d/bulletin.c (read_bulletin_db,write_bulletin_db): Update
	calls to mu_dbm_create. Use DEFAULT_GROUP_DB_SAFETY as default.
	* pop3d/logindelay.c (open_stat_db): Update call to
	mu_dbm_create. Use DEFAULT_GROUP_DB_SAFETY as default.
	* pop3d/pop3d.c (apop_database_safety): Initialize to
	MU_FILE_SAFETY_ALL.
	(apop_database_safety_set): Remove.
	* pop3d/pop3d.h (apop_database_safety_set): Remove.
	* pop3d/popauth.c (open_db_file): Update call to mu_dbm_create.
	Use safety_flags by default.

2011-11-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	wordsplit: implement separate single- and double-quote parsing.

	* include/mailutils/wordsplit.h
	(MU_WRDSF_SQUOTE,MU_WRDSF_DQUOTE): New flags.
	(MU_WRDSF_QUOTE): Redefine as an OR of the above two.
	* libmailutils/string/wordsplit.c (scan_word): Treat '\'' and
	'"' separately, depending on the flags.
	* libmailutils/tests/wsp.c: Add squote and dquote options.
	* libmailutils/tests/wordsplit.at: Test separate quoting
	support.

2011-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement list slicing functions.

	* include/mailutils/list.h (mu_list_slice_dup,mu_list_slice)
	(mu_list_slice2_dup,mu_list_slice2): New protos.
	* libmailutils/list/slice.c: New file.
	* libmailutils/list/slice2.c: New file.
	* libmailutils/list/Makefile.am: Add slice.c and slice2.c
	* libmailutils/tests/list.at: Add slicing tests.
	* libmailutils/tests/listop.c: New command: "slice"

2011-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Imap client: fix status implementation.

2011-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement general-purpose processing of unsolicited responses
	in imap client.

	* include/mailutils/imap.h (mu_imap_response_action_t): New
	typedef.
	(mu_imap_foreach_response): New proto.
	(MU_IMAP_CB_PERMANENT_FLAGS,MU_IMAP_CB_MESSAGE_COUNT)
	(MU_IMAP_CB_RECENT_COUNT,MU_IMAP_CB_FIRST_UNSEEN)
	(MU_IMAP_CB_UIDNEXT,MU_IMAP_CB_UIDVALIDITY)
	(MU_IMAP_CB_OK,_MU_IMAP_CB_MAX): New constants.
	(mu_imap_callback_t): New typedef.
	(mu_imap_callback,mu_imap_register_callback_function): New
	protos. (MU_IMAP_RESPONSE_ALERT,MU_IMAP_RESPONSE_BADCHARSET)
	(MU_IMAP_RESPONSE_CAPABILITY,MU_IMAP_RESPONSE_PARSE)
	(MU_IMAP_RESPONSE_PERMANENTFLAGS,MU_IMAP_RESPONSE_READ_ONLY)
	(MU_IMAP_RESPONSE_READ_WRITE,MU_IMAP_RESPONSE_TRYCREATE)
	(MU_IMAP_RESPONSE_UIDNEXT,MU_IMAP_RESPONSE_UIDVALIDITY)
	(MU_IMAP_RESPONSE_UNSEEN): New constants.
	(mu_imap_response_codes): New extern.
	* include/mailutils/sys/imap.h (_mu_imap) <callback>: New
	member.
	(_mu_imap_collect_flags, _mu_imap_list_at): New protos.
	* libproto/imap/resplist.c (_mu_imap_list_at): New function.
	* libproto/imap/callback.c: New file.
	* libproto/imap/resproc.c: New file.
	* libproto/imap/Makefile.am: Add new files.
	* libproto/imap/capability.c: Rewrite using
	mu_imap_foreach_response.
	* libproto/imap/id.c: Likewise.
	* libproto/imap/select.c: Likewise.

2011-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename mu_list_do to mu_list_foreach.  Add comments to
	mailutils/list.h.

2011-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement status command.

	* include/mailutils/imap.h (mu_imap_status): New proto.
	(_mu_imap_status_name_table): New declaration.
	* include/mailutils/sys/imap.h (mu_imap_client_state)
	<MU_IMAP_STATUS_RX>: New state.
	* libproto/imap/status.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add
	status.c
	* mu/imap.c: Implement "status"

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement select/examine.

	* include/mailutils/imap.h (mu_imap_stat): New structs.
	(MU_IMAP_STAT_DEFINED_FLAGS,MU_IMAP_STAT_PERMANENT_FLAGS)
	(MU_IMAP_STAT_MESSAGE_COUNT,MU_IMAP_STAT_RECENT_COUNT)
	(MU_IMAP_STAT_FIRST_UNSEEN,MU_IMAP_STAT_UIDNEXT)
	(MU_IMAP_STAT_UIDVALIDITY): New flags.
	(mu_imap_select): New proto.
	* include/mailutils/imapio.h (mu_imap_flag_to_attribute)
	(mu_imap_format_flags): New protos.
	* include/mailutils/sys/imap.h (mu_imap_client_state)
	<MU_IMAP_SELECT_RX>: New state.
	(_mu_imap) <mbox_name,mbox_writable,mbox_stat>: New members.
	* libmailutils/imapio/flags.c: New file.
	* libmailutils/imapio/Makefile.am: Add flags.c
	* libproto/imap/select.c: New file.
	* libproto/imap/Makefile.am: Add select.c
	* libproto/imap/err.c (_mu_imap_seterrstr)
	(_mu_imap_clrerrstr, mu_imap_strerror): Allow for imap==NULL.
	* libproto/imap/id.c (mu_imap_id): Set errstr on
	MU_ERR_BADREPLY
	* libproto/imap/login.c (mu_imap_login): Likewise.
	* libproto/imap/resplist.c (_mu_imap_list_element_is_string):
	New function.
	* mu/imap.c: Implement examine and select.

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: redo capability and id support via list mappers.

	* libproto/imap/capability.c (mu_imap_capability): Use
	mu_list_map to create the capability list.
	* libproto/imap/id.c (_id_convert): Likewise for ID pairs.

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement list mapping.

	* include/mailutils/list.h (MU_LIST_MAP_OK)
	(MU_LIST_MAP_SKIP,MU_LIST_MAP_STOP): New constants.
	(mu_list_mapper_t): New typedef.
	(mu_list_map): New proto.
	* libmailutils/list/gmap.c: New file.
	* libmailutils/list/map.c: New file.
	* libmailutils/list/Makefile.am: Add gmap.c and map.c
	* libmailutils/tests/listop.c: New command "map".
	* libmailutils/tests/list.at: Test the list mapping.

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move list support into a separate convenience library.

	* configure.ac: Build libmailutils/list/Makefile
	* include/mailutils/sys/list.h (DESTROY_ITEM): New define.
	(_mu_list_insert_item): New proto.
	* libmailutils/Makefile.am (SUBDIRS): Add list.
	(libmailutils_la_LIBADD): Add list/liblist.la
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove
	list sources.
	* libmailutils/base/list.c: Split into smaller files (see
	below).
	* libmailutils/base/listlist.c: Move to
	libmailutils/list/listlist.c
	* libmailutils/list/Makefile.am: New file.
	* libmailutils/list/append.c: New file.
	* libmailutils/list/array.c: New file.
	* libmailutils/list/clear.c: New file.
	* libmailutils/list/count.c: New file.
	* libmailutils/list/create.c: New file.
	* libmailutils/list/destroy.c: New file.
	* libmailutils/list/do.c: New file.
	* libmailutils/list/empty.c: New file.
	* libmailutils/list/get.c: New file.
	* libmailutils/list/getcomp.c: New file.
	* libmailutils/list/insert.c: New file.
	* libmailutils/list/intersect.c: New file.
	* libmailutils/list/iterator.c: New file.
	* libmailutils/list/locate.c: New file.
	* libmailutils/list/prepend.c: New file.
	* libmailutils/list/remove.c: New file.
	* libmailutils/list/replace.c: New file.
	* libmailutils/list/setcomp.c: New file.
	* libmailutils/list/setdestr.c: New file.

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite existing imap client support using imapio.

2011-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mu_imapio_reply_string function.

	* include/mailutils/imapio.h (mu_imapio_reply_string): New
	proto.
	* libmailutils/imapio/replstr.c: New file.
	* libmailutils/imapio/Makefile.am: Add replstr.c

2011-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement IMAP I/O functions for client and server.

	* include/mailutils/imapio.h: New file.
	* include/mailutils/sys/imapio.h: New file.
	* libmailutils/imapio/create.c: New file.
	* libmailutils/imapio/getline.c: New file.
	* libmailutils/imapio/literal.c: New file.
	* libmailutils/imapio/printf.c: New file.
	* libmailutils/imapio/qstring.c: New file.
	* libmailutils/imapio/send.c: New file.
	* libmailutils/imapio/trace.c: New file.
	* libmailutils/imapio/words.c: New file.
	* libmailutils/imapio/xscript.c: New file. 
	* configure.ac: Build libmailutils/imapio/Makefile
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	imapio.h.
	* include/mailutils/imapio.h: New file.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	imapio.h.
	* include/mailutils/sys/imapio.h: New file.
	* include/mailutils/types.hin (mu_imapio_t): New data type.
	* libmailutils/Makefile.am (SUBDIRS): Add imapio. 
	* libmailutils/tests/Makefile.am: Build imapio
	* libmailutils/tests/imapio.c: New source.
	* libmailutils/tests/wsp.c: Handle escape argument

2011-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve wordsplit.

	* include/mailutils/wordsplit.h (mu_wordsplit) <ws_escape>: New
	member.
	(MU_WRDSF_ESCAPE): New flag.
	(mu_wordsplit_general_unquote_copy): New function.
	* libmailutils/string/wordsplit.c: Remove empty nodes after
	whitespace trimming. If MU_WRDSF_ESCAPE is set, remove only
	backslashes appearing in front of a character in ws_escape.
	* libmailutils/tests/wordsplit.at: Test new features.

2011-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Import error codes directly from libmailutils to Python.

	* python/libmu_py/Makefile.am (libmu_py_la_SOURCES): Add
	errno.c
	* python/libmu_py/errno.c: New file.
	* python/libmu_py/libmu_py.c (_mu_py_module_name): New
	function.
	(_mu_py_attach_module): Use _mu_py_module_name to allocate FQ
	module name instead of taking the risk of using fixed size
	buffer. Don't call Py_InitModule if methods is NULL.
	(mu_py_attach_modules): Call _mu_py_attach_errno.
	* python/libmu_py/libmu_py.h (_mu_py_attach_errno): New proto.
	* python/mailutils/error.py: Re-export everything from
	c_api.errno. Remove hardcoded definitions of error codes.

2011-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* libmu_cfg/tls.c (SSL_KEY_FILE_CHECKS): Mask out
	MU_FILE_SAFETY_OWNER_MISMATCH bit.
	* mu/shell.c: Handle SIGPIPE and SIGINTR.

2011-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mu/dbm.c (add_records): Set DBM meta-data after populating it
	with data.

2011-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmu_dbm/dbm.c (mu_dbm_create_from_url): Fix owner=
	parameter.

2011-11-10  Wojciech Polak  <polak@gnu.org>

	Update Python interface.

	* python/libmu_py/filter.c: Bugfix.
	* python/libmu_py/url.c (api_url_parse): Remove.
	* python/mailutils/error.py: Update MU_ERR_* values.
	* python/mailutils/url.py (Url): Remove parse() method.
	* examples/python/iconv.py: Remove open/close method calls.
	* examples/python/mailcap.py: Likewise.
	* examples/python/url-parse.py: Remove parse() call.

2011-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement _dbm_get_fd in Kyoto cabinet.

	* libmu_dbm/kyoto.c: Implement _dbm_get_fd.

2011-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* libmailutils/base/version.c (mu_conf_option): Reflect BDB
	support.

2011-11-09  Wojciech Polak  <polak@gnu.org>

	Add Kyoto Cabinet DBM support.

	* libmu_dbm/kyoto.c: New file.
	* libmu_dbm/dbm.c: Update.
	* libmu_dbm/mudbm.h: Update.
	* libmu_dbm/Makefile.am: (libmu_dbm_la_SOURCES): Add kyoto.c
	* configure.ac: Add --with-kyotocabinet.
	* README: Update.
	* doc/texinfo/programs.texi: Likewise.
	* libmailutils/base/version.c: Likewise.

2011-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	spamd sieve test: bugfix.

	* libmu_sieve/extensions/spamd.c (get_real_message_size): New
	function.
	(spamd_test): Use get_real_message_size instead of
	mu_message_size.

2011-11-08  Wojciech Polak  <polak@gnu.org>

	Fix typos.

2011-11-08  Wojciech Polak  <polak@gnu.org>

	Re-add Tokyo Cabinet DBM support.

	* libmu_dbm/tokyo.c: New file.
	* libmu_dbm/Makefile.am (libmu_dbm_la_SOURCES): Add tokyo.c.
	* doc/texinfo/programs.texi: Update.
	* README: Update.

2011-11-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes in diagnostic messages.

	* maidag/maidag.c (cb_delivery_mode): Fix typo.
	* mail/mail.c (mail_warranty): Update copyright years.

2011-11-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mu/dbm.c (add_records): Reference mu_strin before using it
	for input.

2011-11-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.99.94.

2011-11-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* pop3d/pop3d.c (pop3d_mainloop): start in AUTHORIZATION if tls
	is established.

2011-11-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs + minor changes.

	* .gitmodules: Add imprimatur.
	* Makefile.am: Likewise.
	* configure.ac: Likewise.
	* doc/Makefile.am: Likewise.
	* bootstrap.conf: Comment out make in doc/texinfo
	* doc/texinfo/Makefile.am: Rewrite.
	* doc/texinfo/fdl.texi: Minor change.
	* doc/texinfo/getdate.texi: Minor change.
	* doc/texinfo/mailutils.texi: begin rewrite.
	* doc/texinfo/mu-mh.texi: Minor change.
	* doc/texinfo/programs.texi: begin rewrite.
	* doc/texinfo/sieve.texi: Minor change.
	* doc/texinfo/usage.texi: Minor change. 
	* libmailutils/cfg/lexer.l: Allow for @ in unquoted strings
	* pop3d/bulletin.c: Relax safety checks for bulletin.db
	* pop3d/logindelay.c: Relax safety checks for stat.sb
	* pop3d/pop3d.h (DEFAULT_GROUP_DB_SAFETY): New define.

2011-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Write NEWS article describing the recent changes.

2011-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix MU_EVT_MESSAGE_ADD in pop://

	* libproto/pop/mbox.c (pop_scan): Make sure MU_EVT_MESSAGE_ADD
	is delivered when it is already possible to retrieve the
	message.
	* mail/mail.c (default_setup) <headline>: Use %L instead of %l. 
	* mu/logger.c (logger_options)<priority>: Minor fix.

2011-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement pop3s and imap4s in respective servers.

	* comsat/comsat.c (comsat_prefork,comsat_connection): Change
	signatures.
	* imap4d/imap4d.c: Implement imaps.
	* imap4d/imap4d.h (io_setio): Change signature.
	(tls_encryption_on): New proto.
	* imap4d/io.c (io_setio): Change signature. Initialize TLS
	stream if requested.
	* imap4d/starttls.c (tls_encryption_on): New function.
	* include/mailutils/server.h (mu_srv_config): New struct.
	(mu_m_server_conn_fp, mu_m_server_prefork_fp): Remove typedefs.
	(mu_m_server_handler_fp): New typedef.
	(mu_m_server_set_conn): Change signature.
	(mu_m_server_set_prefork): Change signature.
	(mu_m_server_set_app_data_size)
	(mu_m_server_set_config_size): New prototype.
	(mu_m_server_cfg_init): Change signature.
	* include/mailutils/tls.h (mu_init_tls_libs): Change signature.
	* lib/tcpwrap.c: Include tcpwrap.h
	(mu_tcp_wrapper_daemon): Fix declaration.
	(mu_tcp_wrapper_prefork): Change signature.
	* lib/tcpwrap.h (mu_tcp_wrapper_prefork): Change signature
	* libmailutils/server/msrv.c (_mu_m_server) <conn,prefork>:
	Change data type. All uses updated.
	<app_data_size>: New member.
	(m_srv_config): Remove struct. Replaced with mu_srv_config from
	tls.h
	(mu_m_server_set_conn): Change signature.
	(mu_m_server_set_prefork): Change signature.
	(mu_m_server_set_app_data_size)
	(mu_m_server_set_config_size): New functions.
	(add_server): Allocate app_data_size additional bytes of data.
	(mu_m_server_cfg_init): Take one argument.
	* libmu_auth/tls.c (mu_tls_module_init): Update call to
	mu_init_tls_libs. Don't call mu_file_safety_check with NULL
	argument.
	(mu_init_tls_libs): Rewrite. Prepare x509 here, instead of
	doing it each time a TLS stream is created.
	(mu_deinit_tls_libs): Free x509, if exists.
	(_tls_server_open): Update call to mu_init_tls_libs. Remove
	x509 initialization.
	* libmu_cfg/tls.c (cb2_safety_checks): Fix typos.
	* maidag/lmtp.c (lmtp_connection): Change signature.
	* maidag/maidag.c (main): Update call to mu_m_server_cfg_init.
	* maidag/maidag.h (lmtp_connection): Change signature.
	* pop3d/extra.c (pop3d_setio): Initialize TLS stream, if
	requested.
	* pop3d/pop3d.c: Implement pops.
	* pop3d/pop3d.h (pop3d_setio): Change prototype.

2011-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement error_string method in TLS streams.

	* include/mailutils/sys/tls-stream.h (_mu_tls_stream_s):
	Remove.
	* libmailutils/diag/errors (MU_ERR_BAD_RESUMPTION): Remove. Use
	EAGAIN instead.
	(MU_ERR_DISABLED): New error code.
	* libmu_auth/tls.c (_tls_server_open): Return MU_ERR_DISABLED
	when needed.
	(_mu_tls_stream_create): Implement error_string method.
	* libproto/maildir/mbox.c (maildir_msg_init): Fix return value.

2011-11-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix TLS usage.

	Remove --tls option. Make TLS stream open methods call
	mu_init_tls_libs. It is now not necessary to call this function
	explicitly, unless the application wishes to ensure TLS is
	initialized (e.g. pop3d or imap4d).

	* include/mailutils/libargp.h (mu_tls_cmdline): Remove.
	* libmu_argp/tls.c
	* libmu_argp/Makefile.am (libmu_argp_a_SOURCES): Remove tls.c
	* libmu_argp/cmdline.c (all_cmdline_capa): Remove tls.c
	* libmu_auth/tls.c [WITH_TLS] (mu_tls_module_config): Enable by
	default.
	(mu_check_tls_environment): Return 0 if TLS is disabled.
	(mu_init_tls_libs): Always call gnutls_global_init, otherwise
	any call to TLS library (especially, handshake) can produce a
	coredump.
	* libmu_cfg/tls.c: Fix description string for tls.enable.
	* mh/mh_init.c (mh_init): Remove call to mu_init_tls_libs, now
	unnecessary.
	* python/libmu_py/registrar.c: Likewise.
	* testsuite/smtpsend.c: Likewise.

2011-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* mu/dbm.c: Remove unused variables.
	* mu/wicket.c (wicket_args_doc): Fix argument name.

2011-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu dbm: minor fix.

	* mu/dbm.c (add_records): Initialize format.

2011-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu dbm: improve command line interface.

	* mu/dbm.c: Use subcommand (not options) to select operation
	mode. New subcommand: dump.
	* mu/help.c (mutool_help): Make sure argv[0] contains program
	and command name.
	* mu/mu.c (main): Likewise.

2011-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Introduce a better dbm dump format.

	* include/mailutils/dbm.h (mu_dbm_get_name): New prototype.
	* libmu_dbm/name.c: New file.
	* libmu_dbm/Makefile.am (libmu_dbm_la_SOURCES): Add name.c
	* mu/dbm.c: New dump format.

2011-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	cctype: bugfix.

	* include/mailutils/cctype.h (mu_isblank): Use mu_c_is_class.
	* libmailutils/string/muctype.c (mu_c_tab): Mark ' ' and '\t'
	as MU_CTYPE_BLANK.

2011-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	inline-comment: bugfixes.

	Fixes following bugs:

	1. In whitespace-must-follow mode a comment sequence
	immediately followed by a newline caused the next line to be
	treated as a comment. Thus the following input:

	; text

	produced empty output (see test icmt-dec-08).

	2. Line number information was not emitted before lines
	starting with a comment sequence substring, e.g.:

	; comment ;valid line

	See test icmt-dec-09.

	* libmailutils/filter/inline-comment.c (ilcmt_state) Withdraw
	ilcmt_rollback_com state, use ilcmt_rollback instead. Withdraw
	ilcmt_newline_ac state, use ILCMT_EMIT_LINE_INFO flag instead.
	(ILCMT_EMIT_LINE_INFO): New flag.
	(ilcmt_data) <replay>: Remove. <rollback_buffer, rollback_size>
	<rollback_index>: New members.
	(init_rollback): New function.
	(_ilcmt_decoder): Use ilcmt_rollback state.
	<ilcmt_comment_ws>: Do not skip newline following the comment.
	Emit line info before rolling back, if required.
	(_ilcmt_encoder): Use ilcmt_rollback state.
	* libmailutils/tests/inline-comment.at: Rename tests. Add tests
	for newline after a comment (icmt-dec-08) and line info with
	whitespace-follow mode (icmt-dec-09).

2011-10-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

2011-10-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reorganize error codes.

	* libmailutils/diag/errors (MU_ERR_TCP_NO_HOST)
	(MU_ERR_TCP_NO_PORT): Change wording.
	(MU_ERR_UNSAFE_PERMS): Remove error code.
	(MU_ERR_NO_HANDLER): Remove. All uses replaced by ENOSYS.
	(MU_ERR_OUT_NULL): Remove. MU_ERR_OUT_PTR_NULL is used instead.
	(MU_ERR_MBX_NULL): Remove. Use EINVAL instead.
	(MU_ERR_BAD_822_FORMAT): Rename to MU_ERR_INVALID_EMAIL. Change
	wording.
	(MU_ERR_REPLY): Change wording. 
	* libmailutils/url/create.c: Remove misguiding comments
	* libmailutils/url/set-service.c: Likewise. 
	* libmailutils/mailbox/mailbox.c (mu_mailbox_open): Return
	EACCES if trying to update quick-access mailboxes.
	(mu_mailbox_get_stream): Mark for deletion.
	* libmailutils/stream/fltstream.c (filter_read)
	(filter_write_internal): Return MU_ERR_BUFSPACE if requested
	more space than available in I/O buffers.
	* libproto/mbox/mbox.c (mbox_expunge_unlocked): Send
	MU_EVT_MAILBOX_CORRUPT event if the mailbox shrunk.
	* libproto/mbox/mboxscan.c (mbox_scan_internal): Return
	MU_ERR_NOENT if unable to locate message in quick-access mode.

2011-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: configurable APOP file and safety criteria.

	* include/mailutils/dbm.h (mu_dbm_init)
	(mu_dbm_get_hint): New prototypes.
	* include/mailutils/util.h (mu_stpcpy)
	(mu_file_safety_compose): New prototypes.
	* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
	stpcpy.c
	* libmailutils/string/stpcpy.c: New file.
	* libmu_cfg/tls.c (cb2_safety_checks): Use
	mu_file_safety_compose.
	* libmu_dbm/create.c (mu_dbm_create): Use mu_dbm_init.
	* libmu_dbm/dbm.c (_mu_dbm_init): Rename mu_dbm_init. All uses
	changed. Use URL composing interface to create hints.
	* maidag/maidag.c (mu_dbm_get_hint): New function.
	* pop3d/pop3d.c (cb2_forward_file_checks): Use
	mu_file_safety_compose. (apop_database_name,
	apop_database_safety)
	(apop_database_safety_set): New variables. (pop3d_cfg_param)
	<apop-database-file>
	<apop-database-safety>: New configuration statements.
	(main) [ENABLE_DBM]: Initialize dbm safety criteria.
	* pop3d/apop.c (pop3d_apopuser): Use configured database name
	and safety flags, if set.
	* pop3d/pop3d.h [ENABLE_DBM] (APOP_PASSFILE): Add ".db" suffix.
	(apop_database_name, apop_database_safety)
	(apop_database_safety_set): New variables.

2011-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	New interface for composing URLs from parts.

	* include/mailutils/url.h (mu_url_sget_name)
	(mu_url_aget_name,mu_url_get_name)
	(mu_url_invalidate,mu_url_create_null)
	(mu_url_set_user,mu_url_set_path,mu_url_set_scheme)
	(mu_url_set_host,mu_url_set_port,mu_url_set_service)
	(mu_url_set_auth,mu_url_set_secret,mu_url_add_param)
	(mu_url_clear_param,mu_url_add_query,mu_url_clear_query): New
	prototypes. 
	* libmailutils/tests/url-comp.at: New test case.
	* libmailutils/tests/url-comp.c: New test program.
	* libmailutils/tests/.gitignore: Update.
	* libmailutils/tests/Makefile.am: Add new files.
	* libmailutils/tests/testsuite.at: Add new tests. 
	* libmailutils/url/Makefile.am: Add new files.
	* libmailutils/url/add-param.c: New file.
	* libmailutils/url/add-query.c: New file.
	* libmailutils/url/clr-param.c: New file.
	* libmailutils/url/clr-query.c: New file.
	* libmailutils/url/null.c: New file.
	* libmailutils/url/set-auth.c: New file.
	* libmailutils/url/set-host.c: New file.
	* libmailutils/url/set-path.c: New file.
	* libmailutils/url/set-port.c: New file.
	* libmailutils/url/set-scheme.c: New file.
	* libmailutils/url/set-secret.c: New file.
	* libmailutils/url/set-service.c: New file.
	* libmailutils/url/set-user.c: New file.
	* libmailutils/url/urlinv.c: New file. 
	* libmailutils/url/create.c (mu_url_create_hint): Return EINVAL
	if purl is NULL.
	* libmailutils/url/scheme.c (mu_url_set_scheme): Remove. See
	set-scheme.c
	* libmailutils/url/urlstr.c (mu_url_sget_name)
	(mu_url_aget_name,mu_url_get_name): New functions.
	(mu_url_to_string): Rewrite using the above. 
	* libmailutils/base/Makefile.am: Add fscompose.c
	* libmailutils/base/fscompose.c: New file.

2011-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add testcases for file safety checking functions.

	* libmailutils/tests/fsaf.at: New testcase.
	* libmailutils/tests/fsaf.c: New file.
	* libmailutils/tests/.gitignore: Add fsaf
	* libmailutils/tests/Makefile.am: Likewise.
	* libmailutils/tests/testsuite.at: Include fsaf.at.

2011-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use MU_CTYPE_ENDLN to trim \r\n.

2011-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reimplement DBM support.

	* lib/mu_dbm.c: Remove.
	* lib/mu_dbm.h: Remove.
	* lib/Makefile.am: Remove mu_dbm.[ch].
	* include/mailutils/sys/dbm.h: New file.
	* include/mailutils/sys/Makefile.am: Add dbm.h
	* include/mailutils/dbm.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	dbm.h.
	* include/mailutils/types.hin (mu_dbm_file_t): New data type. 
	* libmu_dbm/Makefile.am: New file.
	* libmu_dbm/berkeley.c: New file.
	* libmu_dbm/close.c: New file.
	* libmu_dbm/create.c: New file.
	* libmu_dbm/datumfree.c: New file.
	* libmu_dbm/dbm.c: New file.
	* libmu_dbm/delete.c: New file.
	* libmu_dbm/destroy.c: New file.
	* libmu_dbm/errstr.c: New file.
	* libmu_dbm/fetch.c: New file.
	* libmu_dbm/firstkey.c: New file.
	* libmu_dbm/gdbm.c: New file.
	* libmu_dbm/mudbm.h: New file.
	* libmu_dbm/ndbm.c: New file.
	* libmu_dbm/nextkey.c: New file.
	* libmu_dbm/open.c: New file.
	* libmu_dbm/safety.c: New file.
	* libmu_dbm/store.c: New file. 
	* Makefile.am [MU_COND_DBM]: Define LIBMU_DBM_DIR
	(SUBDIRS): Add $(LIBMU_DBM_DIR)
	* configure.ac: Revamp DBM support: several database types can
	be specified at once.
	(AC_CONFIG_FILES): Build libmu_dbm/Makefile 
	* libmu_sieve/extensions/vacation.c: Remove inclusion of
	mu_dbm.h.
	* maidag/Makefile.am (maidag_LDADD): Add DBM libraries.
	* maidag/maidag.c: ENABLE_DBM instead of USE_DBM
	* maidag/maidag.h: Include <mailutils/dbm.h> instead of
	mu_dbm.h.
	* maidag/mailquota.c (dbm_retrieve_quota): Rewrite using
	libmu_dbm library calls.
	* mu/Makefile.am [MU_COND_DBM]: Define DBM_C.
	(MODULES): Add $(DBM_C).
	(AM_CPPFLAGS): Define DBMLIBS.
	* mu/ldflags.c (NEEDAUTH): Change definition.
	(lib_descr) <weight>: New member. All uses changed.
	(add_entry): Null arguments ignored.
	(mutool_ldflags): Rewrite traversal of lib_descr.
	* mu/dbm.c: New file. 
	* pop3d/Makefile.am (pop3d_LDADD, popauth_LDADD): Add DBM
	libraries.
	* pop3d/apop.c: Rewrite using libmu_dbm library calls.
	* pop3d/bulletin.c: Likewise.
	* pop3d/logindelay.c: Likewise.
	* pop3d/pop3d.c: Change USE_DBM to ENABLE_DBM.
	* pop3d/pop3d.h: Include mailutils/dbm.h instead of mu_dbm.h
	* pop3d/popauth.c: Rewrite using libmu_dbm library calls. 
	* include/mailutils/cctype.h (MU_CTYPE_ENDLN): New character
	class.
	(mu_isendln): New macro.
	* libmailutils/string/muctype.c (mu_c_tab): Mark \r and \n as
	MU_CTYPE_ENDLN.

2011-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Simplify mu_file_safety_check call.

	* include/mailutils/util.h (mu_file_safety_check): Change type
	of the 3rd argument to uid_t.
	* libmailutils/base/filesafety.c: Likewise. All uses updated.

2011-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Complement 1e33c774.

	* mh/comp.c: Open mailbox in read-only mode.

2011-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: fix reading multi-line literals.

	* imap4d/io.c (imap4d_tokbuf_decrlf): New function.
	(imap4d_tokbuf_expand): Call imap4d_tokbuf_decrlf for literals.

2011-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mh/tests/atlocal.in (mimeflt): ignore stderr, instead of
	reading input from /dev/null, because this function can
	theoretically be used as a filter.

2011-10-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in the testsuite & some minor fixes.

	* comsat/comsat.c (main): Use real UID to determine user name.
	Don't rely on environment variables.
	* maidag/util.c (maidag_error): Re-initialize va_list before
	reusing it.
	* mh/ali.c (ali_print_name_list): Change printing loop to
	correctly handle empty lists.
	* mh/mh_whatnow.c (quit): Print newline before returning. 
	* comsat/tests/testsuite.at: Skip tests if run as root.
	* maidag/tests/forward.at: Skip test if run as root.
	* mh/tests/ali.at: Ignore comment lines in /etc/passwd and
	/etc/group. Make sure awk is run with a valid stdin. Some
	implementations (true awk, in particular) try to close stdin
	even if it is not used and bail out if unable to do so.
	* mh/tests/atlocal.in (mimeflt): Make sure awk is run with a
	valid stdin (see above).
	* mh/tests/anno.at: Always use semicolon before closing curly
	brace in sed expressions.
	* mh/tests/mark.at: Likewise.
	* mh/tests/pick.at: Likewise.
	* testsuite/testsuite.inc: Likewise.
	* mh/tests/comp.at: Reflect changes to mh_whatnow.c.
	* mh/tests/mhn.at: Don't rely on a particular tar output
	format.

2011-10-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make all status flags permanent.

	* include/mailutils/attribute.h (MU_STATUS_BUF_SIZE): Add more
	status letters.
	* libmailutils/mailbox/attribute.c (flagtrans): Keep the same
	ordering as in attribute.h. Add missing attributes. 
	* imap4d/select.c (imap4d_select_status): All flags are now
	permanent.
	* imap4d/testsuite/imap4d/IDEF0955.exp: Reflect changes in
	PERMANENTFLAGS.
	* imap4d/testsuite/imap4d/IDEF0956.exp: Likewise.
	* imap4d/testsuite/imap4d/append.exp: Likewise.
	* imap4d/testsuite/imap4d/create.exp: Likewise.
	* imap4d/testsuite/imap4d/examine.exp: Likewise.
	* imap4d/testsuite/imap4d/expunge.exp: Likewise.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* imap4d/testsuite/imap4d/search.exp: Likewise.

2011-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix locking in pop3 and imap4d.  This complements d0769b4f.

	* lib/manlock.c (mailbox_open_and_lock): Open mailbox before
	retrieving its locker, otherwise it is always NULL.
	* pop3d/pop3d.c (main): Enforce mandatory locking.

2011-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Testsuite: add banners before groups of related tests.

2011-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	amd: report MU_EVT_MAILBOX_CORRUPT if unable to rename message
	file due to ENOENT.

	* libmailutils/base/amd.c
	* libproto/maildir/mbox.c

2011-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Change attribute handling in Maildir format.

	* include/mailutils/message.h (MU_MSG_ATTRIBUTE_MODIFIED)
	(MU_MSG_HEADER_MODIFIED,MU_MSG_BODY_MODIFIED): New flags.
	* libmailutils/mailbox/message.c (mu_message_is_modified):
	Return a bitmask from the above values.
	* libmailutils/property/create.c (mu_property_create_init):
	Return error code. 
	* include/mailutils/sys/amd.h (_amd_data) <chattr_msg>
	<capabilities, prop>: New members.
	<uidvalidity>: Remove.
	* libmailutils/base/amd.c: Use MH-style proplist to keep the
	mailbox properties: uidvalidity, last uid and to cache its
	size. Store message attributes in the message header only if
	the mailbox implementation is unable to keep them elsewhere.
	Use chattr_msg method (if provided) to flush changes in message
	attributes. 
	* libproto/maildir/folder.c (_maildir_list_p): Ignore .mh* and
	.mu* files.
	* libproto/mh/folder.c (_mh_list_p): Likewise.
	* libproto/maildir/mbox.c: Implement all Maildir flags (except
	P). Implement the chattr_msg method.
	* libproto/mh/mbox.c: Remove special handling for uidvalidity.
	* mh/tests/folder.at: Ignore .mu-prop in directory listings.

2011-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmu_cfg/tls.c (cb2_safety_checks): Fix handling of "all"
	and "none".
	* maidag/maidag.c (cb2_forward_file_checks): Likewise.
	* maidag/forward.c (maidag_forward): Handle MU_ERR_EXISTS
	return properly.

2011-10-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	File safety checks: Implement "default" keyword.

2011-10-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide a mechanism for configurable file safety checking.

	Use it in maidag (.forward file safety) and in libmu_auth (TLS
	files).

	* include/mailutils/tls.h (mu_tls_module_config): New members
	for safety check flags.
	* include/mailutils/util.h
	(MU_FILE_SAFETY_NONE,MU_FILE_SAFETY_ALL)
	(MU_FILE_SAFETY_OWNER_MISMATCH)
	(MU_FILE_SAFETY_GROUP_WRITABLE,MU_FILE_SAFETY_WORLD_WRITABLE)
	(MU_FILE_SAFETY_GROUP_READABLE,MU_FILE_SAFETY_WORLD_READABLE)
	(MU_FILE_SAFETY_LINKED_WRDIR)
	(MU_FILE_SAFETY_DIR_IWGRP,MU_FILE_SAFETY_DIR_IWOTH): New
	constants. (mu_file_safety_check,mu_file_safety_name_to_code)
	(mu_file_safety_name_to_error): New protos.
	* libmailutils/base/checkperms.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	checkperms.c.
	* libmailutils/diag/errors: Add new error codes.
	(MU_ERR_UNSAFE_PERMS): change description wording.
	* libmu_auth/tls.c (mu_check_tls_environment): Use
	mu_file_safety_check.
	* libmu_cfg/tls.c (tls_settings): Initialize.
	(mu_tls_param): New configuration file statements:
	key-file-safety-checks, cert-file-safety-checks,
	ca-file-safety-checks.
	* maidag/forward.c (maidag_forward): Use mu_file_safety_check.
	* maidag/maidag.c (cb2_forward_file_checks): Use
	mu_file_safety_name_to_code.

2011-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes, proposed by Jordi Mallach.

	* scheme/sieve2scm.scmi: Tailor help output to meet help2man
	expectations.
	* libmu_scm/mailutils/Makefile.am (EXTRA_DIST): Remove
	generated file mailutils.scm.

2011-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: open mailboxes in read-only mode unless the requested
	operation mandates otherwise.

	* mh/mhn.c: Open mailbox in read-only mode.
	* mh/mhseq.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/pick.c: If sequences are given, open mailbox for RW,
	otherwise open it for reading only. 
	* testsuite/testsuite.inc (MUT_MBCHMOD): New macro.
	(MUT_MBCOPY): Take optional third argument - mailbox mode.
	* mh/tests/mhl.at: Make sure mailboxes are r/o.
	* mh/tests/mhn.at: Likewise.
	* mh/tests/mhseq.at: Likewise.
	* mh/tests/scan.at: Likewise.

2011-10-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/base/amd.c (amd_open): Return error if the
	mailbox cannot be opened for the required access permissions.
	(amd_message_stream_open): Fix condition for determining r/w
	access.
	* mh/mh_list.c (eval_extras): Break the loop if
	mu_header_aget_field_name fails.

2011-10-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: fix returned INTERNALDATE and date searches.

	INTERNALDATE now includes a meaningful timezone information (it
	used to return +0000).

	Date searches disregard the time and timezone of the
	INTERNALDATE or Date: header, as mandated by RFC 3501.

	* libmailutils/base/date.c (mu_parse_ctime_date_time): In the
	absence of TZ in ctime strings, return local time zone. 
	* imap4d/io.c (imap4d_tokbuf_getline): Kill trailing
	whitespace. 
	* imap4d/util.c (adjust_tm): New function.
	(util_parse_internal_date) (util_parse_822_date)
	(util_parse_ctime_date): Take three arguments, the third one
	controlling what information to return. All uses updated.
	* imap4d/fetch.c (_frt_internaldate): Return meaningful
	timezone. If all else fails, use local TZ.
	* imap4d/imap4d.h (datetime_parse_mode): New enum.
	(util_parse_internal_date) (util_parse_822_date)
	(util_parse_ctime_date): Change signature.
	* imap4d/search.c (parse_simple_key)
	(_header_date,cond_before,cond_on,cond_since): Use
	datetime_date_only mode. 
	* testsuite/spool/search.mbox: New file.
	* testsuite/spool/DISTFILES: Add search.mbox
	* imap4d/testsuite/lib/imap4d.exp (imap4d_start): New option
	-mbox.
	* imap4d/testsuite/imap4d/search.exp: Rewrite. 
	* imap4d/testsuite/imap4d/create.exp: Account for TZ part in
	internaldate strings, which may vary.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* imap4d/testsuite/imap4d/list.exp: List the new mailbox.

2011-09-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/filter/crlfflt.c (_crlf_encoder): Reset state to
	initial if any character other than \r and \n is read.

2011-09-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/rendition.texi: Rewrite.

2011-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* doc/texinfo/programs.texi: Use @group inside @cartouche, not
	vice-versa.

2011-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix generation of the doc files.

	* doc/texinfo/Config: New file.
	* doc/texinfo/Makefile.am (manual): Use texi2html.
	* doc/texinfo/gendocs_template: Rewrite.
	* doc/texinfo/maint.mk: Use VPATH to find source files. Add the
	`clean' rule.

2011-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix testsuite.

	* mh/tests/burst.at: Remove leading newlines from the test
	messages.

2011-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure header reads always return the trailing \n, even for
	empty headers.

	* libmailutils/mailbox/header.c (header_read): Always return
	trailing \n.

2011-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/stream/message_stream.c (_message_open): Return
	MU_ERR_BAD_822_FORMAT if the input is not a valid RFC822.

2011-08-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/stream/fltstream.c: Implement shutdown method.

2011-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.99.93.

2011-08-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mime support, introduce ref/unref functions for
	mu_message_t and mu_mime_t.

	* include/mailutils/message.h (mu_message_ref): Change proto.
	(mu_message_unref): New proto (instead of macro).
	* include/mailutils/mime.h (mu_mime_ref)
	(mu_mime_unref, mu_mime_to_message): New protos.
	* include/mailutils/sys/message.h (MESSAGE_MODIFIED)
	(MESSAGE_INTERNAL_STREAM): New constants (from mime.c)
	(MESSAGE_MIME_OWNER): New constant.
	(_mu_message) <ref_count>: Rename from ref.
	* include/mailutils/sys/mime.h (MIME_SEEK_ACTIVE): New
	constant.
	(_mu_mime) <ref_count>: New member.
	* libmailutils/mailbox/message.c (MESSAGE_MODIFIED)
	(MESSAGE_INTERNAL_STREAM): Removed (see above).
	* libmailutils/mailer/mailer.c (mu_message_unref): New
	function.
	(mu_message_destroy): Rewrite.
	(mu_message_ref): Returns void.
	(mu_message_lines): Don't access header and body directly to
	give virtual functions a chance to initialize them.
	(mu_message_quick_lines): likewise.
	* libmailutils/mailer/mailer.c (send_fragments): Use
	mu_mime_to_message instead of mu_message_unref.
	* libmailutils/mime/mime.c (_mime_append_part): Set offset only
	if mime->stream is not null.
	(_mime_body_stream_seek): Implement (albeit inefficiently).
	(mu_mime_create): Set ref_count.
	(mu_mime_ref, mu_mime_unref): New functions.
	(mu_mime_destroy): Reimplement as a wrapper over _mu_mime_free.
	(mu_mime_get_message): Increase refcount of the message being
	returned.
	(mu_mime_to_message): New function.
	* libmailutils/stream/message_stream.c (_message_open): Handle
	arbitrary text as RFC822 without headers. 
	* libmu_sieve/actions.c: Unref the message returned by
	mu_mime_get_message.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* mh/mhn.c: Likewise. 
	* libmailutils/stream/stream.c (mu_stream_seek) <MU_SEEK_CUR>:
	Bugfix.

2011-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* maidag/lmtp.c: Fix typo in a function name.
	* mh/burst.c (burst_digest): Initialize result.

2011-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various bugfixes.

	* libmailutils/base/assoc.c (first): Set index to max value if
	tab is NULL to indicate immediate end of iteration.
	* libmu_auth/sql.c (mu_auth_sql_by_name)
	(mu_auth_sql_by_uid): Check the return from mu_sql_num_tuples.
	(mu_sql_getpass): Check the number of returned tuples. Return
	failure if returned a NULL password.
	* libmu_scm/mu_message.c (string_sloppy_member): Remove.
	(mu-message-get-header-fields): Use scm_member instead of
	string_sloppy_member.
	* sql/postgres.c (chop): Handle NULL argument.

2011-07-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fake commit to test whether git mail notification works.

2011-07-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* bootstrap.conf: Use the latest radius.m4

2011-07-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/base/rfc2047.c (mu_rfc2047_decode): Break if
	reading from the filter fails.
	* libmailutils/stream/fltstream.c (filter_read): Treat
	mu_filter_moreinput in the lastbuf state as error.

2011-07-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.99.92.

	* NEWS: Update.
	* configure.ac: Update.
	* po/POTFILES.in: Update.

2011-07-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement optional mailbox-independent locking for pop3d and
	imap4d.

	* lib/manlock.c: New file.
	* lib/Makefile.am (libmuaux_a_SOURCES): Add manlock.c.
	* lib/muaux.h (manlock_mandatory_locking)
	(manlock_lock_dir): New externs. (manlock_open_mailbox,
	manlock_lock)
	(manlock_touchlock, manlock_unlock): New protos. 
	* libmailutils/base/amd.c (amd_cleanup): Remove unbalanced call
	to mu_locker_unlock.
	* libmailutils/base/locker.c (mu_locker_create): Bugfixes. 
	* imap4d/imap4d.c (imap4d_cfg_param): Add mandatory-locking
	construct.
	(main): Call manlock_cfg_init.
	* imap4d/select.c (imap4d_select0): Use mandatory locking if
	the mailbox is to be opened r/w. 
	* imap4d/rename.c (imap4d_rename): Note FIXME! 
	* imap4d/bye.c: Call manlock_unlock after closing the mailbox.
	* imap4d/close.c: Likewise.
	* imap4d/sync.c (imap4d_sync): Call manlock_touchlock. 
	* pop3d/lock.c: Remove.
	* pop3d/Makefile.am (pop3d_SOURCES): Remove lock.c
	* pop3d/extra.c (pop3d_abquit): Unlock mailbox.
	* pop3d/pop3d.c (pop3d_cfg_param): Add mandatory-locking
	construct.
	(main): Call manlock_cfg_init.
	(pop3d_mainloop): Call manlock_touchlock.
	* pop3d/pop3d.h (pop3d_lock)
	(pop3d_touchlock, pop3d_unlock): Remove.
	* pop3d/quit.c (pop3d_quit): Unlock the mailbox.
	* pop3d/user.c (pop3d_begin_session): Use manlock_open_mailbox.

2011-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/string/vasnprintf.c (mu_vasnprintf): Operate on
	a fresh copy of va_alist in each new iteration.
	* libproto/imap/folder.c: Likewise.
	* libproto/nntp/nntp_sendline.c: Likewise.

2011-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow caller to set up custom in,out,err,progname,tag before
	calling mu_app_init.

	* include/mailutils/stdstream.h (MU_STDSTREAM_RESET_STRIN)
	(MU_STDSTREAM_RESET_STROUT,MU_STDSTREAM_RESET_STRERR)
	(MU_STDSTREAM_RESET_NONE,MU_STDSTREAM_RESET_ALL): New flags.
	(mu_stdstream_setup): Change signature. All uses updated.
	* libmailutils/stdstream/basestr.c (mu_stdstream_setup): Use
	the flags argument to decide whether to close existing streams.
	Make sure stdstream_flushall enters the onexit queue only once.
	* libmu_argp/muinit.c (mu_app_init): Don't override variables
	that may be set by the caller (program_name, tag, streams).

2011-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes.

	* libmailutils/diag/errors: Fix typo.
	* libproto/imap/connect.c: Add missing includes.
	* mh/tests/mhn.at: Add extra argument quoting.

2011-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/diag/wd.c (mu_wd): Revamp the loop to ensure the
	proposed way of connecting with gdb works in case of a non-zero
	timeout.

2011-06-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: bugfix.

	* NEWS: Version 2.99.91
	* configure.ac: Likewise.
	* imap4d/imap4d.h (io_getline): Change return value
	* imap4d/io.c (io_getline): Abort if a read error occurs.

2011-06-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various minor fixes.

	* include/mailutils/diag.h (mu_full_program_name): New extern.
	* libmailutils/diag/diag.c (mu_full_program_name): New global.
	(mu_set_program_name): Set mu_full_program_name.
	(mu_diag_at_locus): Fix format specifier.
	* libmailutils/diag/bt.c: Use mu_full_program_name instead of
	program_invocation_name.
	* libmailutils/diag/wd.c (mu_wd): Likewise. 
	* comsat/comsat.c: Fix format specifiers.
	* lib/mailcap.c: Likewise.
	* libmu_sieve/util.c: Cast formatted arguments to match format
	specs.
	* mh/mh_getopt.c: Likewise. 
	* libmailutils/cidr/fromstr.c: Add missing includes.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/pop/mbox.c: Likewise.
	* testsuite/smtpsend.c: Likewise.
	* mu/getarg.c: Likewise.
	* mu/imap.c: Likewise.
	* mu/pop.c (com_connect): Protect TLS code with #ifdef.
	* mu/Makefile.am (EXTRA_DIST): Add mu-setup.awk. 
	* mail/summary.c (mail_summary): Fix data types of the
	counters.

2011-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/cfg/parser.y (STRTONUM, STRxTONUM)
	(GETSNUM, GETUNUM): Remove unused arguments.
	* libmailutils/stream/tcp.c (mu_tcp_stream_create_from_sa):
	Take care not to destroy sockaddr arguments in case of failure.

2011-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/filter/base64.c (_base64_encoder): Fix for the
	case when cmd==mu_filter_lastbuf and isize==0. 
	* libmailutils/stream/tcp.c
	(mu_tcp_stream_create_with_source_ip)
	(mu_tcp_stream_create_with_source_host): Don't treat EAGAIN and
	EINPROGRESS as errors.
	* libproto/mailer/smtp.c (smtp_open): Free sockaddr if
	mu_tcp_stream_create_from_sa failed.
	* libproto/pop/mbox.c (pop_open): Likewise.
	* mu/imap.c (com_connect): Likewise.
	* mu/pop.c (com_connect): Likewise.

2011-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	cidr: Implement simplified IPv6 formats.

	* include/mailutils/cidr.h (MU_CIDR_FMT_SIMPLIFY): New format
	flag.
	* libmailutils/cidr/tostr.c (format_ipv6_bytes): Take
	additional argument, indicating whether to simplify the output.
	(format_ipv6_bytes_normal)
	(format_ipv6_bytes_simplified): New static functions.
	(mu_cidr_to_string): Select appropriate ipv6 printer depending
	on the MU_CIDR_FMT_SIMPLIFY bit.
	* libmailutils/tests/cidr.c (main): New options -s and -S

2011-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.99.90.

2011-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	New configuration options to disable groups of utilities.

	* am/enable.m4 (MU_ENABLE_BUILD): Take optional 6th argument.
	If given, append $1 to it.
	* configure.ac: New options: --enable-build-servers and
	--enable-build-clients. Print a list of selected utilities at
	the end of the run.
	* README: Document new options.

2011-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/sockaddr/fromnode.c [!MAILUTILS_IPV6] Handle
	AF_UNSPEC same way as AF_INET. Do not bail out if service is
	not given, assume port = 0 instead.
	* mailutils/base/version.c (mu_conf_option): Reflect IPv6
	support.

2011-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement IPv6 support.

	* am/ipv6.m4: New file.
	* examples/sa.c: New file.
	* include/mailutils/cidr.h: New file.
	* include/mailutils/sockaddr.h: New file.
	* libmailutils/cidr/Makefile.am: New file.
	* libmailutils/cidr/fromsa.c: New file.
	* libmailutils/cidr/fromstr.c: New file.
	* libmailutils/cidr/match.c: New file.
	* libmailutils/cidr/tosa.c: New file.
	* libmailutils/cidr/tostr.c: New file.
	* libmailutils/sockaddr/Makefile.am: New file.
	* libmailutils/sockaddr/copy.c: New file.
	* libmailutils/sockaddr/create.c: New file.
	* libmailutils/sockaddr/free.c: New file.
	* libmailutils/sockaddr/fromnode.c: New file.
	* libmailutils/sockaddr/insert.c: New file.
	* libmailutils/sockaddr/ipaddr.c: New file.
	* libmailutils/sockaddr/str.c: New file.
	* libmailutils/sockaddr/unlink.c: New file.
	* libmailutils/sockaddr/url.c: New file.
	* libmailutils/tests/cidr.c: New file. 
	* configure.ac: Call MU_ENABLE_IPV6. Build
	libmailutils/sockaddr and libmailutils/cidr.
	* examples/.gitignore: Add mblconv and sa
	* examples/Makefile.am: (noinst_PROGRAMS): Add sa.
	* examples/aclck.c: Use new ACL API.
	* examples/echosrv.c: Use new mserv API.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	cidr.h and sockaddr.h 
	* include/mailutils/acl.h (mu_acl_append, mu_acl_prepend)
	(mu_acl_insert): Change signatures.
	* include/mailutils/debug.h (mu_sockaddr_to_str): Remove proto.
	* include/mailutils/mailutils.h: Include cidr.h and sockaddr.h
	* include/mailutils/server.h (mu_ip_server_create): Change
	signature.
	(mu_ip_server_get_sockaddr): Likewise.
	(mu_m_server_set_default_address)
	(mu_m_server_get_default_address): Remove.
	* include/mailutils/stream.h (mu_tcp_stream_create_from_sa):
	New proto.
	* include/mailutils/types.hin (mu_cidr, mu_sockaddr): New
	structs. 
	* include/mailutils/url.h (MU_URL_IPV6): New flag.
	(MU_URL_PARSE_DSLASH_OPTIONAL): New parse flag. 
	* libmailutils/Makefile.am: Descend into cidr and sockaddr.
	Link in libcidr and libsockaddr.
	* libmailutils/diag/debug.c (mu_debug_log_begin): Flush
	mu_strerr.
	* libmailutils/diag/errors (MU_ERR_NONAME)
	(MU_ERR_BADFLAGS,MU_ERR_SOCKTYPE)
	(MU_ERR_FAMILY,MU_ERR_SERVICE): New errors. 
	* libmailutils/server/acl.c: Rewrite API using mu_cidr.
	* libmailutils/server/ipsrv.c: Rewrite AI using mu_sockaddr.
	* libmailutils/server/msrv.c: Likewise.
	* libmailutils/stream/tcp.c: Likewise. 
	* libmailutils/tests/.gitignore: Add cidr.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add cidr.
	* libmailutils/tests/url-parse.c: Support command line options
	to tune the parsing.
	* libmailutils/tests/url.at: Pass options to url-parse.
	* libmailutils/url/create.c (getkn): Return meaningful error
	code.
	(_mu_url_ctx_parse_host): Accept IPv6 addresses. Set the
	MU_URL_IPV6 flag if one is given.
	(_mu_url_ctx_parse): Unless MU_URL_PARSE_DSLASH_OPTIONAL flag
	is given, request :// after scheme part.
	(mu_url_create): Add MU_URL_PARSE_DSLASH_OPTIONAL flag. 
	* libmu_cfg/acl.c: Use new ACL API.
	* mu/acl.c: Likewise. 
	* libproto/mailer/smtp.c (smtp_open): Use
	mu_tcp_stream_create_from_sa
	* libproto/pop/mbox.c (pop_open): Likewise.
	* mu/imap.c (com_connect): Likewise.
	* mu/pop.c (com_connect): Likewise.
	* testsuite/smtpsend.c (main): Likewise.

2011-03-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mh/tests/comp.at: Remove trailing whitespace before
	comparisons

2011-03-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	New filter "c-escape".

	* libmailutils/filter/c-escape.c: New file.
	* include/mailutils/filter.h (mu_c_escape_filter): New extern.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	c-escape.c
	* libmailutils/filter/filter.c (mu_filter_get_list): Add
	mu_c_escape_filter to the list.

2011-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	More bugfixes.

	* examples/mblconv.c (main): Return 0.
	* examples/murun.c (main): Fix iteration body.
	* imap4d/append.c: Do not pass constructed string as format
	argument to io_completion_response, use %s instead.
	* imap4d/close.c: Likewise.
	* imap4d/create.c: Likewise.
	* imap4d/delete.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/status.c: Likewise.
	* libmailutils/base/mutil.c (mutil_parse_field_map): Fix return
	code in case of wordsplit failure.
	* libmailutils/cfg/parser.y (GETSNUM): Initialize sign.
	* libmailutils/stream/streamref.c (_streamref_ctl)
	<MU_IOCTL_SEEK_LIMITS>: Initialize lim.
	* libmailutils/string/wordsplit.c: Typecast format width
	arguments to int.
	* libmu_sieve/extensions/vacation.c (check_db): Initialize
	days. Pass correct time value to test_and_update_prop.
	* libproto/pop/mbox.c (pop_create_pop3_message): Fix return
	code.
	* mail/mail.c (do_and_quit): Pass the command to
	util_do_command via the %s format.
	* mail/unset.c (mail_unset): Likewise.
	* mh/mh_fmtgram.y (function production): Likewise for mu_error.
	* mu/logger.c (mutool_logger): Fix return code in case of
	mu_stdstream_strerr_create failure.

2011-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* comsat/action.c (action_echo): Set omit_newline.
	* libmailutils/mailbox/mbx_default.c: Return 0 on success. Fix
	memory overrun. 
	* libproto/mailer/smtp.c (smtp_open): Protect tls-related code
	with #ifdef WITH_TLS.
	* libproto/pop/mbox.c (pop_open): Likewise.
	* mu/imap.c (com_connect): Likewise. 
	* mh/mhn.c (split_args): Preserve quotes.
	(mhn_compose_command): Handle type arguments (%a escape).
	(mhn_show_command): Likewise.
	(store_handler): Fix call to mh_getyn.
	(edit_mime): Pass typeargs to mhn_compose_command. Fix test for
	missing filename.
	* mh/tests/ali.at (ali04): The test wrongly assumed that the
	`root' group has some members.
	* mh/tests/folder.at: Always sort the output from find.
	* mh/tests/rmf.at: Likewise.
	* mh/tests/mhn.at: Likewise. Filter out timestamps from the tar
	output produced by mhn. 
	* tests/testsuite.at (MH_SETUP): Define moreproc.
	* mh/tests/mhparam.at: Account for changes in mh_profile

2011-03-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	message_stream: deduce default envelope address from the
	current user email.

	* libmailutils/stream/message_stream.c: Unless specified
	otherwise, set envelope address based on the current user
	email.
	* mh/tests/burst.at: Remove all X-Envelope headers before
	comparison.

2011-03-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: bugfix.

	* mail/mailline.c (ml_readline_internal): Remove trailing \n.

2011-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	New global variable mu_site_rcfile keeps the name of the
	site-wide configuration file.

	* include/mailutils/gocs.h (mu_site_rcfile): New extern.
	* include/mailutils/libcfg.h (MU_CONFIG_FILE): Remove.
	(mu_register_cfg_capa): Remove proto.
	(mu_libcfg_register_capa): New proto.
	* libmailutils/cfg/gocs.c (mu_site_rcfile): New variable. 
	* libmu_argp/muinit.c (mu_app_init): Use mu_site_rcfile instead
	of MU_CONFIG_FILE. Destroy parse_tree when no longer needed.
	* libmu_cfg/init.c (cfg_capa_table): Static.
	(find_cfg_capa): Likewise.
	(reserved_name): Treat names starting with dot as reserved.
	(mu_libcfg_register_capa): New function.
	(mu_libcfg_parse_config): Use mu_site_rcfile instead of
	MU_CONFIG_FILE.
	* mu/query.c (mutool_query): Use mu_site_rcfile instead of
	MU_CONFIG_FILE.

2011-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Simplify mu_cfg_tree_reduce.

	This function used to handle include/program statements, which
	is useless now, as these are expanded by
	mu_cfg_tree_postprocess.

	* include/mailutils/cfg.h (mu_cfg_tree_reduce): Change
	signature.
	(mu_format_config_tree): Change signature.
	(mu_config_clone_root_container): New proto.
	(mu_config_register_section): Rename to
	mu_config_root_register_section.
	mu_config_container_register_section. All uses changed.
	(mu_config_root_register_section): New proto. 
	* libmailutils/cfg/driver.c (prog_parser)
	(_cb_include): Remove unnecessary code.
	(mu_build_container): Simplify. All uses updated.
	(mu_cfg_tree_reduce): Simplify invocation. All uses updated. 
	* libmu_argp/muinit.c (mu_app_init): Re-implement --config-help
	support. 
	* sieve/sieve.c (sieve_cfg_param): Fix docstring for "debug".
	* sieve/tests/testsuite.at (MUT_SIEVE_DEFAULT_OPTIONS): New
	variable.
	(MUT_SIEVE_CMDLINE): Include MUT_SIEVE_DEFAULT_OPTIONS.
	(MUT_SIEVE_COMPILE): Pass MUT_SIEVE_DEFAULT_OPTIONS to sieve.

2011-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Introduce "parser hints", to provide better control over
	configuration parsing.

	* include/mailutils/cfg.h (mu_cfg_parse_hints): New struct.
	(mu_cfg_tree_postprocess): Change signature. Last argument is
	struct mu_cfg_parse_hints *.
	(MU_CFG_PARSE_SITE_RCFILE,MU_CFG_PARSE_CUSTOM_RCFILE)
	(MU_CFG_PARSE_PROGRAM): New flags.
	(mu_cfg_parse_config): New proto.
	* libmailutils/cfg/lexer.l (mu_get_config): Fix call to
	mu_cfg_tree_postprocess. 
	* libmailutils/cfg/parser.y (do_include): Takes hints as 2nd
	argument.
	(mu_cfg_tree_postprocess): Likewise.
	(mu_cfg_parse_config): New function. 
	* libmu_cfg/init.c (mu_libcfg_parse_config): Rewrite as a
	wrapper over mu_cfg_parse_config.
	* libmu_argp/muinit.c (mu_app_init): Update. 
	* mu/query.c: New option --program.
	(mutool_query): Use mu_cfg_parse_config interface.

2011-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu: improve query interface.

	* include/mailutils/cfg.h (mu_cfg_node) <parent>: New member.
	(MU_CFG_FMT_VALUE_ONLY)
	(MU_CFG_FMT_PARAM_PATH): New flags.
	* libmailutils/cfg/format.c (format_path): New static.
	(format_node,format_node_end): Handle new flags.
	(mu_cfg_format_node): Clear MU_CFG_FMT_VALUE_ONLY if the
	requested node is mu_cfg_node_statement.
	* libmailutils/cfg/parser.y: Set node parents.
	(mu_cfg_find_node): Fix coredump.
	* mu/query.c: New options --value and --path.

2011-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/server/acl.c (_run_entry): Fix log output.
	* mu/shell.c: Fix compilation without readline.

2011-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* libmu_scm/Makefile.am (DOT_X_FILES, DOT_DOC_FILES): Add
	mu_debug.x and mu_debug.doc.
	* mail/send.c (fill_body): Remove extra \n after null message
	body diagnostics.

2011-01-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Scheme: add primitives for manipulating the MU debug levels.

	* include/mailutils/debug.h (mu_debug_get_iterator): New proto.
	* libmailutils/diag/debug.c (mu_debug_get_iterator): New
	function.
	* libmu_scm/Makefile.am (lib_LTLIBRARIES): Add mu_debug.c. 
	* include/mailutils/guile.h (mu_scm_debug_init): New proto.
	* libmu_scm/mu_scm.c (mu-register-format): Bugfix.
	(mu_scm_init): Call mu_scm_debug_init.

2011-01-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/base/amd.c: Add more debugging info. Always
	check the return from amd_pool_open and amd_check_message
	(which returns int now) and act accordingly.

2011-01-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add useful debugging hooks.

	* libmailutils/diag/bt.c: New file.
	* libmailutils/diag/wd.c: New file.
	* libmailutils/diag/Makefile.am (libdiag_la_SOURCES): Add bt.c
	and wd.c 
	* include/mailutils/debug.h (mu_gdb_bt, mu_wd): New protos.
	* include/mailutils/util.h (mu_getmaxfd): New protos.
	* libmailutils/base/getmaxfd.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	getmaxfd.c 
	* libmailutils/server/acl.c: Use mu_getmaxfd.
	* libmailutils/stream/prog_stream.c: Likewise.
	* mh/mh_whatnow.c: Likewise. 
	* libmu_scm/mu_body.c (mu-body?): Bugfix.

2011-01-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	libmailutils: bugfix.

	* libmailutils/mime/attachment.c (_attachment_setup): Remove
	improper initialization of msg.
	(mu_message_encapsulate): Initialize info->msg.

2011-01-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: redo signal handling.

	Previously implemented way of signal handling was unsafe
	because of the use of unsafe functions in signal handlers. It
	also allowed for recursive invocations of MU calls not supposed
	to handle recursion (such as mu_mailbox_expunge, for example).
	This changeset fixes it.

	* imap4d/imap4d.c (imap4d_child_signal_setup): Change signal
	set.
	(imap4d_mainloop): Set a jump point for signal handling.
	Restore default handling for SIGILL, SIGBUS, SIGFPE, SIGSEGV,
	SIGSTOP.
	(master_jmp): New variable.
	(imap4d_master_signal): New function.
	(main): Redo signal handling.
	* imap4d/imap4d.h (child_jmp): New extern.
	(imap4d_enter_critical,imap4d_leave_critical): New protos.
	* imap4d/signal.c (imap4d_master_signal): Move to imap4d.c
	(imap4d_enter_critical,imap4d_leave_critical): New functions.
	(imap4d_child_signal): Rewrite. 
	* imap4d/append.c: Protect critical sections.
	* imap4d/bye.c: Likewise.
	* imap4d/close.c: Likewise.
	* imap4d/copy.c: Likewise.
	* imap4d/delete.c: Likewise.
	* imap4d/expunge.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise. 
	* scheme/Makefile.am (sievemod_DATA): Add guimb.scmi.

2011-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: don't issue spurious unsolicited responses after
	EXPUNGE.

	* imap4d/expunge.c (imap4d_expunge): Clear attribute table
	before resynching.
	* imap4d/imap4d.h (imap4d_sync_invalidate): New extern.
	* imap4d/sync.c (invalidate_attr_table): Rename to
	imap4d_sync_invalidate; make extern. All callers updated.

2011-01-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: complement 435f1918df.

	* imap4d/bye.c (imap4d_bye0): Set iostream to NULL, to avoid
	further delivery of the SIGPIPE.

2011-01-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	guimb: further improvements.

	* libmu_scm/mu_body.c (mu-body?): New function.
	* libmu_scm/mu_mailbox.c (mu-mailbox?): New function.
	* libmu_scm/mu_message.c (mu-message?): New function.
	* libmu_scm/mu_mime.c (mu-mime?): New function.
	* scheme/guimb.scmi (guimb-process-mailbox): guimb-message
	returns a message to be appended to the output mailbox.

2011-01-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reincarnate guimb as a pure Scheme program.

	* libmu_scm/mailutils.scm.in: Move to
	libmu_scm/mailutils/mailutils.scm.in. Use the
	MAILUTILS_SCM_LIBRARY_ROOT environment variable to load
	libraries from the specified location (to be used in tests). 
	* libmu_scm/mailutils/.gitignore: New file.
	* libmu_scm/mailutils/Makefile.am: New file.
	* libmu_scm/Makefile.am (SUBDIRS): Add mailutils
	(mailutils.scm): Remove goal and associated variables. 
	* scheme/guimb.scmi: New file. Reincarnation of guimb.
	* scheme/Makefile.am: Build guimb from guimb.scmi.
	* scheme/sieve2scm.scmi (sieve-version): Use mu-package and
	mu-version global variables. 
	* configure.ac (AC_CONFIG_FILES): Add
	libmu_scm/mailutils/Makefile.

2011-01-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes in scheme-related code.

	* libmu_scm/mu_scm.c (_mu_scm_bugreport, mu-bugreport): New
	variable.
	(format_table): Add pops and imaps.
	* scheme/reject.scm: Minor changes.
	* scheme/sieve2scm.scmi: Minor changes.

2011-01-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

	Happy GNU year!

2010-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove guimb.

	It was inoperational since 2009-03-27 and nobody complained, so
	it seems to not be reclaimed at all. FWIW, it will be easy to
	recreate it entirely in Scheme, should the need be.

	* guimb/.gitignore: Remove.
	* guimb/Makefile.am: Remove.
	* guimb/collect.c: Remove.
	* guimb/guimb.h: Remove.
	* guimb/main.c: Remove.
	* guimb/util.c: Remove. 
	* Makefile.am (GUIMB_DIR): Remove.
	[MU_COND_LIBMU_SCM] (SCHEME_DIR): New variable.
	(SUBDIRS): Add SCHEME_DIR instead of GUIMB_DIR.
	* configure.ac (MU_GUILE_SIEVE_MOD_DATA): Remove substitution.
	(AC_CONFIG_FILES): Remove guimb and guimb/scm, add scheme 
	* guimb/scm/.gitignore: move to scheme/.gitignore
	* guimb/scm/Makefile.am: move to scheme/Makefile.am
	* guimb/scm/README: move to scheme/README
	* guimb/scm/mimeheader.scm: move to scheme/mimeheader.scm
	* guimb/scm/numaddr.scm: move to scheme/numaddr.scm
	* guimb/scm/redirect.scm: move to scheme/redirect.scm
	* guimb/scm/reject.scm: move to scheme/reject.scm
	* guimb/scm/sieve-core.scm: move to scheme/sieve-core.scm
	* guimb/scm/sieve.scm.in: move to scheme/sieve2scm.scmi
	* guimb/scm/vacation.scm: move to scheme/vacation.scm

2010-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: further improvements.

	* imap4d/sync.c (notify): Do not emit FETCH replies for recent
	messages.

2010-12-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: bugfixes.

	* imap4d/imap4d.c (idle_timeout): Initialize to the default
	value. (Needed for inetd mode)
	* imap4d/sync.c: Revamp table handling.

2010-12-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide a function for quick retrieval of message lines.

	* include/mailutils/message.h (mu_message_quick_lines): New
	proto.
	(mu_message_set_lines): Change signature of the 2nd argument.
	* include/mailutils/sys/message.h (_mu_message) <lines>: Change
	signature.
	* libmailutils/diag/errors (MU_ERR_INFO_UNAVAILABLE): New error
	code.
	* libmailutils/mailbox/message.c (mu_message_set_lines): Change
	signature of the 2nd argument.
	(mu_message_lines): Update call to the _lines method.
	(mu_message_quick_lines): New function.
	* libproto/pop/mbox.c (_POP3_MSG_LINES): New flag.
	(_pop3_message)<message_lines>: New member.
	(pop_create_pop3_message): New function.
	(pop_scan): Use LIST to obtain scan listing.
	(pop_message_lines): New function.
	(pop_create_message): Set _lines method.
	(pop_get_message): Use pop_create_pop3_message. 
	* mail/from.c (hdr_quick_lines): New function.
	(compile_headline): New escape %L 
	* pop3d/capa.c (pop3d_capa): Show XLINES capability if
	configured.
	* pop3d/list.c (pop3d_list): Optionally output the number of
	lines in the message.
	* pop3d/pop3d.c (pop3d_xlines): New global.
	(pop3d_cfg_param): New statement "scan-lines".
	* pop3d/pop3d.h (pop3d_xlines): New extern.

2010-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	amd: bugfixes; speed up expunging.

	* libmailutils/base/amd.c (_amd_message_delete): Remove.
	(amd_array_expand): Fix element size.
	(amd_array_shrink): Rewrite.
	(amd_expunge): Shrink the array once, after everything has been
	expunged. Generate MU_EVT_MAILBOX_MESSAGE_EXPUNGE for each
	expunged message.

2010-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure debugging calls don't dump core even if mu_strerr is
	not initialized.

	* libmailutils/diag/debug.c (mu_debug_log, mu_debug_log_begin):
	Call mu_diag_init.

2010-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/url/create.c (_mu_url_create_internal): Fix
	parsing of the '|' shortcuts.
	* libmailutils/tests/url.at: Fix '|' test. Add 'prog://' test. 
	* movemail/movemail.c (set_program_id): Call
	mu_stdstream_strerr_setup to flush changes.
	* frm/common.c: Minor changes

2010-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	frm: minor cleanup.

	* frm/common.c (select_message, msg_index): Remove; use action
	data instead.
	(action): Use action data to get the selection function and
	message index.
	(frm_scan): Pass these data in action closure.

2010-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: speed up asynchronous mailbox notifications.

	* imap4d/imap4d.h (util_format_attribute_flags): New prototype.
	* imap4d/sync.c: Rewrite using flag table to keep attribute
	flags, mu_mailbox_translate to convert uids to message numbers
	and MU_EVT_MAILBOX_MESSAGE_EXPUNGE event to report expunged
	messages.
	* imap4d/util.c (_imap4d_attrlist): Remove \Recent
	(util_attribute_to_type): Handle \Recent separately.
	(util_format_attribute_flags): New function.
	(util_print_flags): Rewrite as an extra entry point to the
	above.

	mailboxes: New event MU_EVT_MAILBOX_MESSAGE_EXPUNGE. 
	* include/mailutils/observer.h: Rearrange and partially rename
	event constants (all uses updated): MU_EVT_MESSAGE_APPEND =>
	MU_EVT_MAILBOX_MESSAGE_APPEND MU_EVT_AUTHORITY_FAILED =>
	MU_EVT_FOLDER_AUTHORITY_FAILED
	(MU_EVT_MAILBOX_MESSAGE_EXPUNGE): New event.
	* libproto/mbox/mbox.c: Generate
	MU_EVT_MAILBOX_MESSAGE_EXPUNGE.
	* libproto/pop/mbox.c: Likewise.
	* libmailutils/base/amd.c: Likewise.

2010-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh,maildir: speed up scanning.

	* include/mailutils/sys/amd.h (_amd_message_append, amd_sort):
	New protos.
	* libmailutils/base/amd.c (amd_array_expand): Call memmove only
	if there is actually something to move.
	(_amd_message_append, amd_sort): New functions.
	* libproto/maildir/mbox.c (maildir_scan_dir): Append new
	messages to the end of the array, and sort it afterward. This
	avoids unnecessary memory moves, which improves performance
	considerably, especially on large mailboxes.
	* libproto/mh/mbox.c (mh_scan0): Likewise.

2010-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various fixes.

	* libmu_sieve/extensions/vacation.c (build_mime): Remove
	superfluous seek.
	(test_and_update_prop): days==0 means "forever", i.e. send a
	replay to each user only once.
	(vacation_reply): If :file tag is given, treat the argument as
	the name of a file containing the reply message.
	(vacation_tags): Add "sender" and "file" tags. 
	* libmu_sieve/extensions/moderator.c: Always unref transport
	stream after passing it to mu_stream_to_message.
	* maidag/lmtp.c: Likewise.
	* mh/mh_stream.c: Likewise.
	* mh/prompter.c: Likewise.
	* mh/burst.c (flush_stream): Remove extra unref.
	* sieve/sieve.c: Likewise.
	* testsuite/smtpsend.c: Likewise.

2010-12-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	vacation: remove dependency on DBM; other minor fixes.

	* libmu_sieve/extensions/vacation.c: Use _sget accessors where
	possible. Use mu_property_t instead of db database.
	* libmu_sieve/sieve.y (mu_sieve_get_mailer): Verbosely report
	errors.
	* libmailutils/base/locker.c (mu_locker_create): Create the
	locker if the file name part of its full name does not exist.

2010-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_auth/tls.c (_tls_ioctl): Fix typo (opcode used instead
	of code).
	* mu/filter.c (mutool_filter): Reference mu_strin to prevent it
	from destroying.
	* testsuite/smtpsend.c (main): Call mu_stdstream_setup.

2010-12-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop client and movemail: bugfixes.

	* libproto/pop/mbox.c (pop_close): Destroy the cached data.
	(pop_destroy): Avoid freeing the same data twice.
	(pop_body_get_stream,pop_body_size,pop_body_lines): Owner is
	mu_message_t.
	(pop_create_body): Change the owner of the created mu_body_t
	object. 
	* movemail/movemail.c: Correctly close both mailboxes if
	unhandled errors occur.

2010-12-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor bugfix.

	* mail/escape.c (run_editor): Fix a typo.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	movemail: minor improvements.

	* libmailutils/base/list.c (list_itrctl): Accept
	mu_itrctl_set_direction and mu_itrctl_qry_direction even if
	mu_iterator_first has not been called yet.
	* movemail/movemail.c: Rewrite using iterators. 
	* libmailutils/mailer/mailer.c (safe_address_create): Bugfix.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix (complements 6bd92d3c07).

	* libmu_sieve/util.c (mu_sieve_error, mu_sieve_debug)
	(mu_sieve_log_action): Format location only if locus.mu_file is
	not NULL.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	mailbox iterator: implement reverse direction and itrctl.

	* libmailutils/mailbox/mbxitr.c (mailbox_iterator)<backwards>:
	New member.
	(mbx_first): Position to the last message if itr->backwards is
	set.
	(mbx_next): Decrement index if itr->backwards is set.
	(mbx_finished_p): Take into account iteration direction.
	(mbx_itrctl): new method.
	(mu_mailbox_get_iterator): Set itrctl method.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	movemail: various improvements.

	New configuration options allow to specify the maximum number
	of messages to be copied and control the actions of movemail
	when an error occurs while appending a message.

	* movemail/movemail.c (ONERROR_OPTION,MAX_MESSAGES_OPTION): New
	option codes.
	(options): New options --onerror and --max-messages.
	(max_messages_option, onerror_flags): New variable.
	(ONERROR_SKIP, ONERROR_DELETE, ONERROR_COUNT): New defines.
	(parse_opt): Handle ONERROR_OPTION.
	(cb_onerror): New callback.
	(movemail_cfg_param): New configuration statements:
	"max-messages" and "onerror".
	(move_message): Delete the message if ONERROR_DELETE is set.
	(main): Handle the limit on the number of processed messages
	and onerror flags. Use mu_mailbox_expunge instead of
	mu_mailbox_flush. This preserves the attributes of not
	processed options (in case max_messages_option is not 0) and
	speeds up the things considerably, especially on huge
	mailboxes.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	mailer: minor improvement.

	Be more liberal when guessing sender and recipient names.
	Tolerate deviations from RFC822.

	* libmailutils/mailer/mailer.c (copy_fragment)
	(recover_email, safe_address_create): New functions.
	(_set_from, _set_to): Use safe_address_create.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* frm/common.c [!HAVE_LIBFRIBIDI] (puts_bidi): Fix definition.
	* libproto/pop/mbox.c (pop_destroy): Fix coredump (occurred if
	the mailbox has not been scanned).

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/base/lcall.c (mu_parse_lc_all): Allow for
	arg==NULL.
	* mh/Makefile.am: Define mhlibdir.
	* mh/pick.y (match_header): Use sget accessors.
	* mh/repl.c: Accept -noquery silently.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: fix the "shell" ("!") command.

	* mail/mail.h (mail_execute): Change signature. All callers
	updated.
	* mail/shell.c (expand_bang): Change signature. Take the string
	to be expanded as the 2nd and the last command as 3rd
	arguments. Always allocate the return string, even if there's
	nothing to expand.
	(mail_execute): fix memory management.
	* mail/escape.c: Update.
	* mail/escape.c: Update calls to mail_execute.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Follow-up to the previous commit.

	* libmu_sieve/util.c: Update.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/stream/logstream.c (_log_ctl): Handle
	MU_IOCTL_SYSLOGSTREAM, pass it to the transport stream.
	* libmu_sieve/sieve.l (pop_source): Restore input_stream.
	* libmu_sieve/util.c (mu_sieve_error, mu_sieve_debug)
	(mu_sieve_log_action): Set location information on the
	errstream.

2010-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: test "list" extension test.

	* sieve/tests/list.at: New file.
	* sieve/tests/Makefile.am (TESTSUITE_AT): Add list.at.
	* sieve/tests/testsuite.at: Include list.at.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve debug parser and output functions.

	New parser accepts range specifications (mailbox.trace3-prot).
	mu_debug_format_spec outputs specs in the canonical form.

	* include/mailutils/debug.h (MU_DEBUG_LEVEL_RANGE): New macro.
	(mu_debug_set_category_level): Change return type to int.
	(mu_debug_get_category_level): New proto.
	* libmailutils/diag/debug.c (mu_debug_set_category_level):
	Change return type to int.
	(mu_debug_get_category_level): New function.
	(mu_debug_level_from_string): New function.
	(parse_spec): Accept range specification. Negation at the start
	of spec implies 'proto'.
	(mu_debug_format_spec): Rewrite. 
	* libmailutils/tests/debugspec.c: New file.
	* libmailutils/tests/debugspec.at: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	debugspec.
	(TESTSUITE_AT): add debugspec.at
	* libmailutils/tests/testsuite.at: Include debugspec.at.
	* libmailutils/tests/.gitignore: Add debugspec. 
	* sieve/sieve.c: Do not advertise 'T' and 'P' arguments to
	--debug.
	(debug_level): Remove.
	(set_debug_level): Rewrite the handling of legacy debug
	specifiers 'TP'.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve debugging; fix c522de119a.

	* include/mailutils/types.hin (mu_debug_handle_t)
	(mu_debug_level_t): New data types.
	* include/mailutils/debug.h (mu_debug_level_p)
	(mu_debug_category_level)
	(mu_debug_set_category_level): Change argument types to
	mu_debug_handle_t/mu_debug_level_t.
	* libmailutils/diag/debug.c: Likewise. 
	* libmailutils/server/acl.c (_run_entry): Call mu_debug_log_nl
	instead of mu_debug_log_end with an empty format string. 
	* include/mailutils/sieve.h
	* libmailutils/filter/base64.c
	* libmailutils/stream/stream.c
	* libmu_sieve/conf.c
	* libmu_sieve/extensions/spamd.c
	* libmu_sieve/sieve.y
	* sieve/sieve.c: Commit the changes c522de119a failed to
	commit.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/filter/iconvflt.c (_icvt_decoder): Do not
	iconv_close if cd is -1.
	* mh/mboxprop.c (mh_mailbox_get_cur): Ignore whitespace
	following the cur value.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmu_sieve/extensions/pipe.c: Include sys/wait.h
	* testsuite/Makefile.am: Distribute testsuite.inc

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	filter stream: make sure all input data get processed.

	* include/mailutils/filter.h (MU_FILTER_MAX_AGAIN): Add a
	comment.
	* libmailutils/stream/fltstream.c (filter_read): Use mu_debug
	on the filter.error level, instead of plain mu_error. If the
	xcoder returns OK and does not consume all input when
	processing the last buffer, assume mu_filter_again. Fix loop
	condition.
	(filter_write_internal): Use mu_debug on the filter.error
	level, instead of plain mu_error.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: bugfixes.

	* include/mailutils/sieve.h (mu_sieve_debug_handle): New
	declaration.
	(mu_sieve_debug_init): New prototype.
	* libmu_sieve/conf.c (mu_sieve_debug_handle): New global.
	(mu_sieve_module_init): Call mu_sieve_debug_init.
	* libmu_sieve/extensions/spamd.c (spamd_connect_tcp)
	(spamd_connect_socket): Fix stream creation.
	(spamd_send_message): Switch to full buffering on the transport
	stream and indicate it is a payload (in case transcript is
	enabled), before copying data. Restore things to their original
	state afterward.
	(spamd_read_line): Rewrite using mu_stream_getline.
	(decode_float): Additional argument endp. Unless NULL, store
	there the position in the input string where the parsing has
	stopped.
	(parse_response_line): New function.
	(spamd_test): Rewrite using new API.
	* sieve/sieve.c (parser): --dry-run implies --verbose. 
	* libmailutils/filter/base64.c (_base64_decoder): when not
	enough data are available and cmd is not mu_filter_lastbuf,
	return mu_filter_lastbuf.
	* libmailutils/stream/stream.c (mu_stream_shutdown): Flush the
	buffers before shutting the transport down. 
	* libmailutils/tests/fltst.c (main): New option bufsize=

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Set library version to 4:0:0.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: implement an option to add directory to the head of the
	library search path.

	* TODO: Update.
	* include/mailutils/sieve.h (mu_sieve_library_path_prefix): New
	variable.
	* libmu_argp/sieve.c (sieve_argp_option): New option
	--libdir-prefix.
	(sieve_argp_parser): Handle --libdir-prefix.
	* libmu_cfg/sieve.c (cb_library_path_prefix): New callback.
	(mu_sieve_param): New statement "library-path-prefix".
	* libmu_sieve/conf.c (mu_sieve_library_path_prefix): New
	variable.
	(mu_sieve_module_init): Process prefix paths. Do not call
	mu_sv_load_add_path.
	* libmu_sieve/load.c (sieve_init_load_path): Rewrite.
	(mu_sv_load_add_path): Remove.
	* libmu_sieve/sieve-priv.h (mu_sv_load_add_path): Remove
	declaration.
	(sieve_searchpath): Remove the unused "add" parameter.
	* sieve/tests/moderator.at: Use MUT_SIEVE_OPTIONS in all tests.
	* sieve/tests/testsuite.at (MUT_SIEVE_EXT_TEST): Use
	--libdir-prefix option to ensure that our version of the
	extension appears first in the path.

2010-12-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Pop3-client bugfixes (mostly).

	* libmailutils/stream/fltstream.c (filter_ctl):
	MU_IOCTL_TRANSPORT returns filter transport stream.
	* libproto/pop/pop3_rdlist.c (mu_pop3_stream_to_list): Make
	sure status is initialized and reflects the actual status.
	* libproto/pop/pop3_stream.c (mu_pop3_filter_create): Do not
	unref transport stream, it is done by the caller.

2010-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* am/enable.m4 (MU_ENABLE_SUPPORT): Add the additional-cond
	argument.
	(MU_ENABLE_BUILD): Likewise.
	* configure.ac: Update 4th args in calls to MU_ENABLE_SUPPORT.
	Do not use MU_ENABLE_BUILD within conditionals, use
	additional-cond instead.
	* libmailutils/stream/mapfile_stream.c: Include sys/stat.h

2010-12-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Assorted changes.

	* include/mailutils/debug.h (mu_debug_format_spec): New
	function. 
	* include/mailutils/stream.h (MU_IOCTL_SYSLOGSTREAM)
	(MU_IOCTL_FILTER): New ioctls.
	(MU_IOCTL_LOGSTREAM_GET_SEVERITY_MASK)
	(MU_IOCTL_LOGSTREAM_SET_SEVERITY_MASK)
	(MU_IOCTL_LOGSTREAM_CLONE) (MU_IOCTL_SYSLOGSTREAM_SET_LOGGER)
	(MU_IOCTL_SYSLOGSTREAM_GET_LOGGER)
	(MU_IOCTL_FILTER_GET_DISABLED)
	(MU_IOCTL_FILTER_SET_DISABLED): And their opcodes.
	* include/mailutils/sys/filter.h (_MU_FILTER_DISABLED)
	(_MU_FILTER_EOF): New defines.
	(_mu_filter_stream) <eof>: Replace with fltflag (a bitmask).
	* include/mailutils/sys/logstream.h (_mu_log_stream) <sevmask>:
	New member.
	* include/mailutils/sys/syslogstream.h (_mu_syslog_stream)
	<logger>: New member.
	* include/mailutils/util.h (mu_onexit_run): New proto.
	* libmailutils/base/onexit.c (_mu_onexit_run): Extra safety
	check.
	(mu_onexit_run): New function.
	(mu_debug_level_str): New static.
	(mu_debug_format_spec): New function.
	* libmailutils/stream/fltstream.c (filter_read, filter_write):
	Bypass the xcoder if _MU_FILTER_DISABLED is set. Use fltflag
	instead of the removed eof.
	(filter_ctl): Handle MU_IOCTL_FILTER.
	* libmailutils/stream/logstream.c (_log_write): The sevmask
	member masks out severity prefix output for certain severities.
	(_log_ctl): Handle new opcodes (see above).
	* libmailutils/stream/syslogstream.c (_syslog_stream_write):
	Use <logger>, if supplied, instead of the system syslog(3).
	(_syslog_ctl): Handle MU_IOCTL_SYSLOGSTREAM.
	(mu_syslog_stream_create): Initialize logger to NULL.
	* mu/ldflags.c (lib_descr): Protect entries with the
	corresponding #ifdef ENABLE_whatever.

2010-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update TODO.

2010-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	maildir: speed up mailbox scanning.

	* include/mailutils/sys/amd.h (_amd_message_lookup_or_insert):
	New proto.
	* libmailutils/base/amd.c (_amd_message_lookup_or_insert): New
	function.
	(_amd_message_insert): Rewrite using
	_amd_message_lookup_or_insert.
	* libproto/maildir/mbox.c (maildir_message_cmp): Stop
	comparison on ':'.
	(maildir_message_lookup): Remove.
	(maildir_scan_dir): Use _amd_message_lookup_or_insert. 
	* po/POTFILES.in: Update.

2010-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* include/mailutils/debug.h (mu_debug_log_nl): New proto.
	* libmailutils/diag/debug.c (mu_debug_log_nl): New function.
	* libmailutils/mailer/progmailer.c: Use mu_debug_log_nl.
	* libmailutils/server/acl.c: Likewise. Also, use
	MU_DEBUG_TRACE9 instead of the numeric value. 
	* libmailutils/filter/iconvflt.c (_iconv_filter): Register
	encoder (same as decoder).

2010-12-19  Wojciech Polak  <polak@gnu.org>

	Remove more old debug leftovers from the Python interface.

2010-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: improve "pipe" action, implement "pipe" test.

	* libmu_sieve/extensions/pipe.c: Allow to specify which parts
	of the message should be piped. Implement "pipe" test.
	* sieve/tests/pipeact.at: New file.
	* sieve/tests/pipetest.at: New file.
	* sieve/tests/Makefile.am (TESTSUITE_AT): Add pipeact.at and
	pipetest.at
	* sieve/tests/testsuite.at: Include pipeact.at and pipetest.at
	(MUT_SIEVE_EXT_TEST): Redefine MUT_SIEVE_OPTIONS. Set envar
	"cwd". Use cat and heredoc to create prog, instead of using
	AT_DATA.
	* sieve/tests/moderator.at: Update to these changes.

2010-12-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	libmu_sieve: minor fix.

	* libmu_sieve/util.c (mu_sieve_error): Fix typo.

2010-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: improve moderator extension.

	* libmu_sieve/extensions/moderator.c: Implement the :program
	tag. Use _sget_ functions to reduce memory requirements.
	* sieve/tests/moderator.mbox: New file.
	* sieve/tests/moderator.at: New file.
	* sieve/tests/Makefile.am (EXTRA_DIST): Add moderator.mbox.
	(TESTSUITE_AT): Add moderator.at
	* sieve/tests/testsuite.at (MUT_SIEVE_EXT_NAME): New define.
	(MUT_SIEVE_EXT_TEST): New macro. Include moderator.at.

2010-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* imap4d/util.c (set_xscript_level): Fix typo.

2010-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve debugging in the category "auth".

	* libmailutils/auth/mu_auth.c: Fix mu_debug calls. Use
	different levels.

	Remove --debug-auth option. Users should use --debug-level=auth
	instead. 
	* libmu_argp/auth.c: Remove.
	* libmu_argp/Makefile.am (libmu_argp_a_SOURCES): Remove auth.c
	* include/mailutils/libargp.h (mu_auth_cmdline): Remove.
	* libmu_argp/cmdline.c (all_cmdline_capa): Remove
	mu_auth_cmdline.

2010-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mark unfinished interfaces as experimental so they're not built
	by default.

	* am/enable.m4 (MU_ENABLE_SUPPORT): Fix the usage of the last
	argument.
	* configure.ac: Check for --enable-experimental before any
	other checks. Mark cxx, python and nntp as experimental.
	* mh/tests/mhn.at: Make sure all mailboxes are writable.
	* mh/tests/testsuite.at (MTSTAILOR): Fix mailer URL.
	* po/POTFILES.in: Comment out unused sources.

2010-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove the leftovers of mu_debug_t and obsoleted sieve
	interfaces.

	* include/mailutils/cpp/debug.h: Remove.
	* include/mailutils/cpp/Makefile.am (cppinclude_HEADERS):
	Remove debug.h
	* libmu_cpp/debug.cc: Remove
	* libmu_cpp/Makefile.am (libmu_cpp_la_SOURCES): Remove
	debug.cc.
	* python/libmu_py/debug.c: Remove.
	* python/libmu_py/Makefile.am (libmu_py_la_SOURCES): Remove
	debug.c
	* include/mailutils/cpp/mailbox.h: Remove objects and methods
	derived from mu_debug_t.
	* include/mailutils/cpp/mailer.h: Likewise.
	* include/mailutils/cpp/stream.h: Likewise.
	* libmu_cpp/mailbox.cc: Likewise.
	* libmu_cpp/mailer.cc: Likewise.
	* libmu_cpp/sieve.cc: Likewise. Ditto for mu_sieve_printf_t,
	mu_sieve_parse_error_t.
	* include/mailutils/cpp/sieve.h: Likewise. 
	* libmu_cpp/stream.cc: Remove objects and methods derived from
	mu_debug_t.
	(ProgStream::ProgStream): Use mu_command_stream_create (see
	FIXME).
	(FilterProgStream::FilterProgStream): Rewrite. 
	* include/mailutils/python.h: Remove objects and methods
	derived from mu_debug_t.
	* python/libmu_py/filter.c (api_filter_iconv_create): Rewrite
	using mu_filter_create_args. 
	* python/libmu_py/libmu_py.c: Likewise.
	* python/libmu_py/libmu_py.h: Likewise.
	* python/libmu_py/mailbox.c: Likewise.
	* python/libmu_py/mailer.c: Likewise.
	* python/libmu_py/stream.c: Likewise.
	* python/libmu_py/url.c: Likewise.
	* python/libmu_py/sieve.c: Likewise. Same for
	mu_sieve_printf_t, mu_sieve_parse_error_t.

2010-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove mu_filter_iconv_create.

	Callers should use mu_filter_create_args instead.

	* examples/iconv.c: Rewrite using mu_filter_create_args.
	* libmailutils/mime/mimehdr.c (mu_mimehdr_decode_param): Use
	mu_decode_filter. 
	* imap4d/imap4d.h: Include prog.h
	* include/mailutils/filter.h (mu_filter_iconv_create): Mark as
	deprecated.
	* include/mailutils/util.h (mu_decode_filter_args): New proto.
	* libmailutils/base/msgid.c (mu_rfc2822_in_reply_to): Silence a
	cast warning.
	* libmailutils/tests/wicket.c (match_string): Likewise.
	* libmailutils/filter/decode.c (mu_decode_filter_args): New
	function.
	(mu_decode_filter): Rewrite as an alternative entry point to
	mu_decode_filter_args.
	* ibmailutils/filter/filter_iconv.c: Remove.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES):
	Remove filter_iconv.c
	* libmu_compat/filter_iconv.c: New file.
	* libmu_compat/Makefile.am (libmu_compat_la_SOURCES): Add
	filter_iconv.c 
	* libmailutils/filter/iconvflt.c (_icvt_decoder): Set errcode
	before returning failure. 
	* libmailutils/stream/fltstream.c (init_iobuf,
	filter_stream_init): Provide a default value for io->errcode.

2010-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement iconv converter as a regular filter.

	* include/mailutils/filter.h (mu_iconv_filter): New extern.
	* libmailutils/filter/iconvflt.c: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	iconvflt.c
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_iconv_filter.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove an ugly debugging hack.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmailutils/base/argcvjoin.c (mu_argcv_join): Fix a memory
	allocation error.
	* libmailutils/base/msgid.c (concat): Remove.
	(mu_rfc2822_references,mu_rfc2822_in_reply_to): Use
	mu_argcv_join to concatenate strings.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh,maildir: Minor fix.

	* libmailutils/base/amd.c (amd_envelope_date): Remove the
	trailing newline from the ctime output.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: use mu_strout; remove util_error in favor of mu_error.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: rewrite using MU streams.

	* libmailutils/base/spawnvp.c (mu_spawnvp): Use fork and _exit,
	unconditionally.
	* libmailutils/stdstream/basestr.c (mu_stdstream_setup): Borrow
	descriptors 0, 1, 2. 
	* mail/mail.h (compose_env) <filename, file, ofile>: Remove.
	<compstr>: New member.
	* mail/alias.c: Use MU streams instead of stdlib.
	* mail/alt.c: Likewise.
	* mail/copy.c: Likewise.
	* mail/decode.c: Likewise.
	* mail/echo.c: Likewise.
	* mail/envelope.c: Likewise.
	* mail/eq.c: Likewise.
	* mail/escape.c: Likewise.
	* mail/followup.c: Likewise.
	* mail/from.c: Likewise.
	* mail/inc.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/mailline.c: Likewise.
	* mail/mailvar.c: Likewise.
	* mail/msgset.y: Likewise.
	* mail/print.c: Likewise.
	* mail/quit.c: Likewise.
	* mail/reply.c: Likewise.
	* mail/retain.c: Likewise.
	* mail/send.c: Likewise.
	* mail/setenv.c: Likewise.
	* mail/shell.c: Likewise.
	* mail/size.c: Likewise.
	* mail/source.c: Likewise.
	* mail/summary.c: Likewise.
	* mail/top.c: Likewise.
	* mail/unset.c: Likewise.
	* mail/util.c: Likewise.
	* mail/version.c: Likewise.
	* mail/write.c: Likewise.
	* mail/z.c: Likewise.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* libmailutils/stream/stream.c (mu_stream_set_stat): Allow for
	statbuf==NULL.

2010-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mu_onexit functions; use MU stdstream in mh and
	mimeview.

	* include/mailutils/types.hin (mu_onexit_t): New typedef.
	* include/mailutils/util.h (mu_onexit_reset, mu_onexit): New
	protos.
	* libmailutils/base/onexit.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	onexit.c 
	* libmailutils/stdstream/basestr.c (stdstream_flushall): New
	function.
	(mu_stdstream_setup): Rewrite the fd checking algorithm.
	Register stdstream_flushall as an onexit function. 
	* mh/anno.c: Use MU stdstream.
	* mh/mh.h: Include mailutils/stdstream.h.
	* mh/mh_init.c (mh_init): Call mu_stdstream_setup; use MU
	stdstream.
	* mh/mh_whatnow.c (_whatnow): Use MU stdstream.
	* mh/mhl.c (open_output,list_message): Likewise.
	* mh/mhn.c (mhn_show,store_handler): Likewise.
	* pop3d/popauth.c: Use MU stdstream. 
	* mimeview/mimetypes.y: Use MU stdstream.
	* mimeview/mimeview.c: Likewise.
	(mimeview_fp): Remove.
	(mimeview_stream): New variable.
	* mimeview/mimeview.h (mimeview_fp): Remove.
	(mimeview_stream): New variable. 
	* lib/mailcap.c (find_entry): Don't report ENOENT.

2010-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove the MU_STREAM_FD_AUTOCLOSE stream flag.

	This is the default behavior now. The reverse can be requested
	by a special MU_IOCTL_FD,MU_IOCTL_FD_SET_BORROW ioctl.

	* include/mailutils/stream.h (MU_STREAM_FD_AUTOCLOSE): Remove.
	This is the default behavior now.
	(MU_IOCTL_FD): New ioctl.
	(MU_IOCTL_FD_GET_BORROW, MU_IOCTL_FD_SET_BORROW): New opcodes.
	* include/mailutils/sys/file_stream.h
	(_MU_FILE_STREAM_FD_BORROWED): New flag. 
	* libmailutils/stream/file_stream.c (fd_close): Close the fd
	unless _MU_FILE_STREAM_FD_BORROWED bit is set.
	(fd_open): Clear the _MU_FILE_STREAM_FD_BORROWED bit.
	(fd_ioctl): Handle MU_IOCTL_FD.
	(mu_file_stream_create): Remove MU_STREAM_FD_AUTOCLOSE. 
	* ibmailutils/base/version.c (mu_print_options): Set borrow
	mode on the temporary stdout stream.
	* libmailutils/cfg/driver.c (mu_cfg_tree_reduce): Set borrow
	mode on the temporary stderr stream.
	* libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create):
	Set borrow mode on the stderr stream.
	* libmailutils/tests/tempfile.c: set borrow mode on the
	temporary stream, because it may be reopened later (verify
	mode). 
	* examples/mta.c: Remove MU_STREAM_FD_AUTOCLOSE.
	* imap4d/io.c: Likewise.
	* libmailutils/stream/prog_stream.c: Likewise.
	* libmailutils/stream/socket_stream.c: Likewise.
	* libmailutils/stream/temp_file_stream.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* pop3d/extra.c: Likewise.

	These will disappear when the corresponding utilities are
	rewritten to use MU stdstream: 
	* mail/escape.c (quote0): set borrow mode on the output stream.
	* mimeview/mimeview.c (display_file): set borrow mode on the
	input stream.

	Likewise, these will disappear when MH uses MU stdstream: 
	* mh/anno.c (main): Set borrow mode on the input stream.
	* mh/mh_init.c (mh_real_install): Likewise.
	* mh/mh_whatnow.c (_whatnow): Likewise.
	* mh/mhl.c (open_output): Set borrow mode on the output stream.
	* mh/mhn.c (mhn_show,store_handler): Likewise.

2010-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove MU_STREAM_AUTOCLOSE flag.  Use mu_stream_unref, if
	necessary.

	* examples/mta.c: Use MU_STREAM_FD_AUTOCLOSE.
	* imap4d/io.c: Likewise.
	* libmailutils/stream/file_stream.c: Likewise.
	* libmailutils/stream/prog_stream.c: Likewise.
	* libmailutils/stream/socket_stream.c: Likewise.
	* libmailutils/stream/temp_file_stream.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* pop3d/extra.c: Likewise. 
	* imap4d/preauth.c: Do not use MU_STREAM_AUTOCLOSE. Instead
	unref the transport stream after creating the derived one.
	* libmailutils/base/rfc2047.c: Likewise.
	* libmailutils/stream/fltstream.c: Likewise.
	* libmailutils/tests/fltst.c: Likewise.
	* libmu_auth/ldap.c: Likewise.
	* libmu_auth/tls.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libproto/pop/pop3_stream.c: Likewise.
	* mail/decode.c: Likewise.
	* mh/mhn.c: Likewise. 
	* libmailutils/filter/filter_iconv.c: Do not handle
	MU_STREAM_AUTOCLOSE.
	* libmailutils/stream/rdcache_stream.c: Likewise.
	* libmailutils/stream/streamref.c: Likewise.
	* libmailutils/stream/xscript-stream.c: Likewise. 
	* include/mailutils/stream.h (MU_STREAM_AUTOCLOSE): Rename to
	MU_STREAM_FD_AUTOCLOSE.

2010-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement filter chains. Revamp filter output length support.

	* include/mailutils/filter.h (mu_filter_chain_create_pred)
	(mu_filter_chain_create): New prototypes.
	(_mu_filter_record)<max_line_length>: Remove.
	* libmailutils/filter/fltchain.c: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	fltchain.c.
	* libmailutils/filter/base64.c: Implement line length limit for
	encoder.
	(base64_state): New enum.
	(base64_line): New struct.
	(_base64_encoder): xd brings a pointer to struct base64_line.
	Use it to limit the output line length.
	(alloc_state): New function.
	(_base64_filter): Register alloc_state.
	(_base64_filter, _B_filter): Remove max_line_length
	initialization. 
	* libmailutils/filter/binflt.c: Remove max_line_length
	initialization.
	* libmailutils/filter/crlfflt.c: Likewise.
	* libmailutils/filter/dot.c: Likewise.
	* libmailutils/filter/fromflt.c: Likewise.
	* libmailutils/filter/header.c: Likewise.
	* libmailutils/filter/inline-comment.c: Likewise.
	* libmailutils/filter/linecon.c: Likewise.
	* libmailutils/filter/qpflt.c: Likewise. 
	* libmailutils/filter/linelenflt.c: Redo line filter as a
	regular filter.
	(mu_linelen_filter): New global. 
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_linelen_filter.
	(filter_create_rd, filter_create_wr): Remove.
	(mu_filter_create_args): Use mu_filter_stream_create directly. 
	* examples/base64.c: Re-implement the -l option via filter
	chains. 
	* libmailutils/tests/fltst.c: Remove the linelen option.
	* libmailutils/tests/base64d.at: Remove the linelen option from
	fltst invocations.
	* mu/filter.c: Remove the --line-length option. Not needed now,
	its effect is achieved by "FLT + [~]linelen" chain.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor improvement.

	* examples/config/dot.biffrc: Update.
	* comsat/comsat.c (main): In test mode, normalize biffrc names
	that begin with ./ or ../

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: provide a fine-grained control over where biffrc errors
	are output.

	* comsat/comsat.c (biffrc_errors): New variable.
	(comsat_cfg_param): New statements: biffrc-errors-to-tty and
	biffrc-errors-to-err
	(main): In test mode, set biffrc_errors to
	BIFFRC_ERRORS_TO_ERR.
	* comsat/comsat.h (BIFFRC_ERRORS_TO_TTY)
	(BIFFRC_ERRORS_TO_ERR): New flags.
	(biffrc_errors): New variable.
	* comsat/action.c (report_error): Consult biffrc_errors.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor improvements in logstream and related code.

	* include/mailutils/stream.h
	(MU_IOCTL_LOGSTREAM_SET_LOCUS_LINE)
	(MU_IOCTL_LOGSTREAM_SET_LOCUS_COL): New subcodes.
	* libmailutils/stream/logstream.c (_log_ctl): Handle two new
	subcodes.
	* comsat/action.c (eval_biffrc): Use new ioctl subcode to
	update the line number.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Test line info facility.

	* libmailutils/tests/inline-comment.at: Add line info tests.
	* libmailutils/tests/linecon.at: Likewise.
	* libmailutils/filter/linecon.c (LINECON_CONTINUATION): New
	flag.
	(linecon_newline): Remove.
	(_linecon_decoder): Correctly determine the end of continuation
	in case when the last line contained standalone escapes.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement line number output in linecon and inline-comment
	filters.

	* libmailutils/filter/inline-comment.c: Implement line number
	info facility.
	* libmailutils/filter/linecon.c: Likewise.
	* libmailutils/stream/logstream.c (_log_done, _log_close):
	Always close/destroy the underlying transport stream.
	* comsat/action.c: Rewrite using a table-driven parser. Use
	line-info facility of the linecon filter.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: improve biffrc evaluation.

	* comsat/.gitignore: Add biff.rc.h
	* comsat/Makefile.am (comsatd_SOURCES, BUILT_SOURCES): Add
	biff.rc.h
	(EXTRA_DIST): Add biffrc.sed and biff.rc
	* comsat/action.c (default_action): Include biff.rc.h.
	(biffrc_environ): New struct.
	(eval_biffrc): New function.
	(run_user_action): Rewrite via eval_biffrc. Default action is
	evaluated if biff.rc cannot be opened, or it contains the
	"default" keyword.
	* comsat/tests/testsuite.at: Add "default" statement where
	necessary.

2010-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: improve tty handling, add testsuite.

	* comsat/action.c (need_crlf, _open_tty, open_tty): Moved from
	comsat.c
	(open_default_tty): New function.
	(run_user_action): Take device name as first argument. Reuse
	wordsplit memory.
	* comsat/comsat.c (notify_user): Update invocation of
	run_user_action.
	* comsat/comsat.h (open_tty): Remove prototype.
	(run_user_action): Change signature.
	* configure.ac: Add comsat tests.
	* comsat/Makefile.am (SUBDIRS): Add tests.
	* comsat/tests/.gitignore: New file.
	* comsat/tests/Makefile.am: New file.
	* comsat/tests/atlocal.in: New file.
	* comsat/tests/testsuite.at: New file.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: add a way to specify alternative biffrc file name; new
	biffrc statement: tty.

	* comsat/comsat.c (options): New option --file.
	(biffrc): New variable.
	(comsatd_parse_opt): Handle the --file option.
	(open_tty): New function.
	(notify_user): Open the tty using open_tty function and a
	default set of filters.
	(main): Handle --file option.
	* comsat/action.c (run_user_action): Implement the `tty'
	statement.
	* comsat/comsat.h (biffrc): New extern.
	(open_tty): New function.

	mu: accept a chain of filters. 
	* mu/filter.c (filter_doc, filter_docstring): Update.
	(mutool_filter): Accept a filter chain.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite prog stream support.

	Two interfaces are provided: mu_prog_stream_create offers full
	control over the program execution environment (i.e. running
	privileges, cwd, resource limits) via a set of hints. A simpler
	interface, mu_command_stream_create, runs the command in the
	current environment.

	mu_filter_prog_stream_create is removed, because its
	functionality can be achieved by a correspondingly crafted set
	of hints to mu_prog_stream_create.

	* include/mailutils/prog.h: New file.
	* include/mailutils/mailutils.h: Include mailutils/prog.h
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	prog.h
	* include/mailutils/stream.h (mu_prog_stream_create)
	(mu_filter_prog_stream_create): Remove prototypes.
	* include/mailutils/sys/prog_stream.h (_mu_prog_stream): Change
	structure.
	(_mu_prog_limit_codes, _mu_prog_limit_flags): New externs.
	* include/mailutils/util.h (mu_set_user_privileges)
	(mu_switch_to_privs): New prototypes. 
	* lib/userprivs.c: Move to libmailutils/base.
	* lib/Makefile.am (libmuaux_a_SOURCES): Remove userprivs.c
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	userprivs.c
	* libmailutils/base/userprivs.c (mu_set_user_privileges): New
	function.
	(mu_switch_to_privs): Rewrite as another entry point to
	mu_set_user_privileges. 
	* libmailutils/stream/prog_stream.c (_mu_prog_limit_flags)
	(_mu_prog_limit_codes): New global variables.
	(start_program_filter): Use hints to control execution
	environment.
	(_prog_stream_create): Save hints.
	(mu_prog_stream_create): Change signature.
	(mu_command_stream_create): New function (corresponds to the
	prior mu_prog_stream_create).
	(mu_filter_prog_stream_create): Remove function.
	* comsat/action.c (action_exec): Use new mu_prog_stream_create
	calling convention.
	* examples/murun.c: Rewrite. 
	* mh/mhn.c (show_internal): Use new mu_prog_stream_create
	calling convention.
	* mh/tests/mhn.at: Reflect changes to mhn. 
	* imap4d/preauth.c: Use mu_command_stream_create.
	* libmu_sieve/extensions/pipe.c
	* mail/decode.c
	* mail/pipe.c
	* mail/send.c
	* mh/mhl.c
	* mu/shell.c 
	* mail/mail.h: Include mailutils/prog.h
	* mh/mh.h 
	* po/POTFILES.in: Add libmailutils/base/userprivs.c.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: Use mu streams instead of stdio.

	* comsat/action.c (action_beep, echo_string)
	(action_echo, action_exec): Take mu_stream_t as first argument.
	(open_rc): Take mu_stream_t as tty, return mu_stream_t as well.
	Install the linecon filter.
	(run_user_action): Take mu_stream_t as first arg. Pass it to
	all invoked actions.
	* comsat/comsat.c (get_newline_str): Remove.
	(need_crlf): New function.
	(notify_user): Use mu_stream_t instead of FILE. Install a 7bit
	filter and CRLF filter (if the device requires it).
	* comsat/comsat.h: Include mailutils/filter.h.
	(run_user_action): Change signature.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	file_stream: Bugfixes.

	* libmailutils/stream/file_stream.c (fd_open): Remove file
	state checks: it is the responsibility of the caller. Set
	autoclose on the *stream* flags (bugfix, previously the
	underlying fd was never closed). Clear MU_STREAM_SEEK flag if
	seek fails.
	(_mu_file_stream_create): Remove assignment to
	stream.error_string
	* include/mailutils/stream.h (MU_STREAM_ALLOW_LINKS): Remove
	flag.
	* libmailutils/base/amd.c (amd_message_stream_open): Initialize
	flags to 0.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	comsat: minor changes.

	* libmailutils/mailbox/mailbox.c (mu_mailbox_open): Fix error
	checking condition.
	* comsat/action.c (act_getline): Remove.
	(open_rc): Return mu_stream_t. Use linecon filter.

2010-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement a "line continuation" filter.

	Line continuation filter removes from its input any sequence of
	'\\\n' (a backslash followed by a newline). It is useful for
	reading various UNIX configuration files.

	* include/mailutils/filter.h (mu_linecon_filter): New extern.
	* libmailutils/filter/linecon.c: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	linecon.c
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_linecon_filter.
	* libmailutils/tests/linecon.at: New test.
	* libmailutils/tests/Makefile.am (TESTSUITE_AT): Add linecon.at
	* libmailutils/tests/testsuite.at: Include linecon.at

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	frm,messages,readmsg: Use MU streams instead of stdio.

	* frm/common.c: Use MU streams instead of stdio.
	* frm/frm.c: Likewise.
	* messages/messages.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* frm/frm.h: Include mailutils/stdstream.h
	* readmsg/readmsg.h: Likewise.

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise stream ioctl support.

	The mu_stream_ioctl function gets two argument that identify
	the ioctl in question: "family", which identifies a family of
	ioctls in question, and "opcode", which indicates the requested
	operation within that family.

	* include/mailutils/stream.h: Define ioctl families and
	opcodes.
	(mu_stream_ioctl): Change signature.
	* include/mailutils/sys/stream.h (_mu_stream)<ctl>: Change
	signature. 
	* include/mailutils/log.h (mu_severity_from_string)
	(mu_severity_to_string): New protos. 
	* libmailutils/stream/stream.c (mu_stream_ioctl): Change
	signature. 
	* libmailutils/filter/filter_iconv.c: Rewrite ioctl support.
	* libmailutils/stream/file_stream.c: Likewise.
	* libmailutils/stream/fltstream.c: Likewise.
	* libmailutils/stream/iostream.c: Likewise.
	* libmailutils/stream/logstream.c: Likewise.
	* libmailutils/stream/mapfile_stream.c: Likewise.
	* libmailutils/stream/memory_stream.c: Likewise.
	* libmailutils/stream/nullstream.c: Likewise.
	* libmailutils/stream/prog_stream.c: Likewise.
	* libmailutils/stream/rdcache_stream.c: Likewise.
	* libmailutils/stream/streamref.c: Likewise.
	* libmailutils/stream/syslogstream.c: Likewise.
	* libmailutils/stream/tcp.c: Likewise.
	* libmailutils/stream/xscript-stream.c: Likewise.
	* libmu_auth/tls.c: Likewise. 
	* comsat/action.c: Change calls to mu_stream_ioctl.
	* imap4d/auth_gsasl.c: Likewise.
	* imap4d/io.c: Likewise.
	* imap4d/util.c: Likewise.
	* libmailutils/base/getpass.c: Likewise.
	* libmailutils/cfg/parser.y: Likewise.
	* libmailutils/mailbox/body.c: Likewise.
	* libmailutils/mime/mime.c: Likewise.
	* libmailutils/stdstream/dbgstream.c: Likewise.
	* libmailutils/stdstream/strerr.c: Likewise.
	* libmu_sieve/runtime.c: Likewise.
	* libmu_sieve/sieve.y: Likewise.
	* libmu_sieve/util.c: Likewise.
	* libproto/imap/trace.c: Likewise.
	* libproto/mailer/smtp_data.c: Likewise.
	* libproto/mailer/smtp_starttls.c: Likewise.
	* libproto/mailer/smtp_trace.c: Likewise.
	* libproto/pop/pop3_stls.c: Likewise.
	* libproto/pop/pop3_stream.c: Likewise.
	* libproto/pop/pop3_trace.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* mail/source.c: Likewise.
	* mu/logger.c: Likewise.
	* pop3d/extra.c: Likewise.
	* pop3d/retr.c: Likewise. 
	* TODO: Update.
	* doc/texinfo/nullstream.texi: Update.

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement severity suppression in log streams; other minor
	fixes.

	* include/mailutils/stream.h (MU_LOGSTREAM_ADVANCE_LOCUS_LINE)
	(MU_LOGSTREAM_ADVANCE_LOCUS_COL): Rename to MU_IOCTL_.*. All
	uses updated. (MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY)
	(MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY_NAME): New ioctls.
	* include/mailutils/sys/logstream.h
	(_mu_log_stream)<threshold>: New member.
	* include/mailutils/syslog.h (mu_log_severity_threshold): New
	extern.
	* libmailutils/cfg/parser.y (_cfg_default_printer): Remove
	leftover static function.
	* libmailutils/stream/logstream.c (mu_severity_from_string)
	(mu_severity_to_string): New functions.
	(_log_write): Fix double free. Implement severity suppression.
	(_log_ioctl): Handle MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY.
	* libmu_cfg/common.c (mu_logging_param): New parameter
	"severity".

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve imap4d and pop3d testsuites.

	* imap4d/testsuite/imap4d.rcin: Suppress syslog, use stderr.
	* pop3d/testsuite/pop3d.rcin" Likewise.

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: testsuite fix.

	* mh/tests/mhn.at: Bugfix.

2010-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite debugging and logging support.

	The mu_debug_t object and associated functions have been
	removed. New debugging functions are based on the logstream
	interface.

	* include/mailutils/debug.hm4: Remove.
	* include/mailutils/debug.h: New file.
	* include/mailutils/Makefile.am (BUILT_SOURCES,EXTRA_DIST):
	Remove debug.h, debug.hm4. 
	* mu-aux/debugdef.m4: Remove.
	* mu-aux/debcat.awk: New file.
	* mu-aux/Makefile.am (EXTRA_DIST): Replace debugdef.m4 with
	debcat.awk. 
	* include/mailutils/sys/dbgstream.h: Remove.
	* include/mailutils/sys/debug.h: Remove.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS):
	Remove debug.h and dbgstream.h, add debcat.h
	* include/mailutils/sys/.gitignore: Add debcat.h. 
	* libmailutils/diag/dbgstderr.c: Remove.
	* libmailutils/diag/dbgsyslog.c: Remove.
	* libmailutils/diag/gdebug.c: Remove.
	* libmailutils/diag/debcat: New file.
	* libmailutils/diag/Makefile.am (libdiag_la_SOURCES): Remove
	these sources.
	* libmailutils/diag/debug.c: Rewrite from scratch.
	* libmailutils/diag/diag.c: Rewrite from scratch. 
	* libmailutils/diag/syslog.c (mu_diag_syslog_printer): Remove
	function.
	(mu_log_syslog, mu_log_print_severity): New variables. 
	* libmailutils/stream/dbgstream.c: Remove.
	* libmailutils/stream/Makefile.am (libstream_la_SOURCES):
	Remove dbgstream.c..
	* libmailutils/stdstream/Makefile.am (libstdstream_la_SOURCES):
	Add dbgstream.c.
	* libmailutils/stream/logstream.c (_mu_severity_str): Change
	strings to lower case.
	(_log_write): Improve handling of unrecognized escapes.
	(_log_ctl): Handle MU_LOGSTREAM_ADVANCE_LOCUS_LINE and
	MU_LOGSTREAM_ADVANCE_LOCUS_COL. 
	* libmailutils/mailbox/folder.c (mu_folder_has_debug)
	(mu_folder_get_debug, mu_folder_set_debug): Remove functions. 
	* mu-aux/debcat.awk: New file.
	* libmailutils/stdstream/dbgstream.c: New file. 
	* comsat/action.c: Use new debug/log functions.
	* comsat/comsat.c: Likewise.
	* examples/aclck.c: Likewise.
	* examples/echosrv.c: Likewise.
	* examples/msg-send.c: Likewise.
	* examples/nntpclient.c: Likewise.
	* examples/numaddr.c: Likewise.
	* frm/common.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* imap4d/io.c: Likewise.
	* imap4d/util.c: Likewise.
	* libmailutils/auth/mu_auth.c: Likewise.
	* libmailutils/base/amd.c: Likewise.
	* libmailutils/cfg/driver.c: Likewise.
	* libmailutils/cfg/format.c: Likewise.
	* libmailutils/cfg/lexer.l: Likewise.
	* libmailutils/cfg/parser.y: Likewise.
	* libmailutils/mailbox/mailbox.c: Likewise.
	* libmailutils/mailbox/mbx_default.c: Likewise.
	* libmailutils/mailer/mailer.c: Likewise.
	* libmailutils/mailer/progmailer.c: Likewise.
	* libmailutils/server/acl.c: Likewise.
	* libmailutils/server/ipsrv.c: Likewise.
	* libmailutils/server/msrv.c: Likewise.
	* libmailutils/tests/wicket.c: Likewise.
	* libmu_argp/auth.c: Likewise.
	* libmu_argp/cmdline.c: Likewise.
	* libmu_argp/common.c: Likewise.
	* libmu_auth/ldap.c: Likewise.
	* libmu_cfg/acl.c: Likewise.
	* libmu_cfg/auth.c: Likewise.
	* libmu_cfg/common.c: Likewise.
	* libmu_cfg/ldap.c: Likewise.
	* libmu_cfg/sieve.c: Likewise.
	* libmu_cfg/sql.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_sieve/prog.c: Likewise.
	* libmu_sieve/runtime.c: Likewise.
	* libproto/imap/trace.c: Likewise.
	* libproto/mailer/mbox.c: Likewise.
	* libproto/mailer/prog.c: Likewise.
	* libproto/mailer/sendmail.c: Likewise.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/mailer/smtp_trace.c: Likewise.
	* libproto/mbox/folder.c: Likewise.
	* libproto/mbox/mbox.c: Likewise.
	* libproto/nntp/folder.c: Likewise.
	* libproto/nntp/nntp_debug.c: Likewise.
	* libproto/pop/mbox.c: Likewise.
	* libproto/pop/pop3_trace.c: Likewise.
	* maidag/guile.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* maidag/maidag.c: Likewise.
	* maidag/util.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/mailvar.c: Likewise.
	* mail/send.c: Likewise.
	* mail/source.c: Likewise.
	* mh/mh_argp.c: Likewise.
	* mh/send.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* mu/wicket.c: Likewise.
	* pop3d/extra.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.
	* testsuite/mimetest.c: Likewise. 
	* libmu_sieve/sieve-priv.h (mu_sieve_machine)
	<parse_error_printer>
	<error_printer, debug_printer, debug>: Remove.
	<errstream>: New member. (mu_sv_compile_error,
	mu_sv_print_value_list)
	(mu_sv_print_tag_list): Change prototypes. 
	* libmu_sieve/actions.c: Use new sieve debug functions.
	* libmu_sieve/extensions/list.c: Likewise.
	* libmu_sieve/extensions/moderator.c: Likewise.
	* libmu_sieve/extensions/pipe.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* libmu_sieve/extensions/timestamp.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libmu_sieve/sieve.y : Likewise.
	* libmu_sieve/sieve.l: Likewise.
	* libmu_sieve/tests.c: Likewise.
	* libmu_sieve/util.c: Rewrite diagnostic support.
	* /maidag/sieve.c: Use new debug/log and sieve diagnostic
	functions. 
	* mu/mu.c (main): Remove call to mu_stdstream_setup. It is
	called by mu_app_init now. 
	* libmailutils/base/wicket.c (mu_wicket_stream_match_url):
	Change signature.
	* libmailutils/cfg/gocs.c (mu_gocs_logging_init): Rewrite.
	* libmailutils/mailbox/message.c (mu_message_save_to_mailbox):
	Remove mu_debug_t argument.
	* libmailutils/stdstream/basestr.c (mu_stdstream_setup): Minor
	fixes.
	* libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create):
	Do not install filter stream if tag is NULL.
	(mu_stdstream_strerr_setup): New function.
	* libmu_argp/muinit.c (mu_app_init): Set mu_log_tag. Call
	mu_stdstream_setup.
	* libmu_scm/mu_dbgport.c: Rewrite port support. 
	* include/mailutils/acl.h (mu_acl_get_debug)
	(mu_acl_set_debug): Remove prototypes.
	* include/mailutils/auth.h (mu_wicket_stream_match_url): Change
	signature.
	* include/mailutils/cfg.h (mu_cfg_locus_t): Remove typedef, use
	struct mu_locus instead.
	(mu_cfg_locus): Remove declaration.
	(mu_cfg_node)<locus>: Change type.
	(mu_cfg_node)<debug>: Remove. (mu_cfg_vperror,mu_cfg_perror)
	(mu_cfg_parse_error,mu_cfg_format_error): Remove prototypes.
	(mu_cfg_callback_t): Change signature. All uses updated.
	(mu_cfg_get_debug): Remove prototype.
	(mu_cfg_assert_value_type, mu_cfg_string_value_cb): Change
	signature.
	(mu_cfg_tree_set_debug): Remove prototype.
	(mu_cfg_tree_create_node): Change signature.
	* include/mailutils/diag.h (MU_DIAG_): Redefine via MU_LOG_
	constants.
	(mu_diag_get_debug,mu_diag_set_debug): Remove.
	(mu_diag_cont_vprintf, mu_diag_cont_printf)
	(mu_diag_at_locus): New functions.
	* include/mailutils/folder.h (mu_folder_has_debug)
	(mu_folder_get_debug, mu_folder_set_debug): Remove prototypes.
	* include/mailutils/gocs.h (mu_gocs_logging): Remove structure.
	(mu_gocs_debug)<errpfx>: Remove.
	* include/mailutils/guile.h (mu_scm_make_debug_port): Change
	prototype.
	* include/mailutils/mailbox.h (mu_mailbox_has_debug)
	(mu_mailbox_get_debug,mu_mailbox_set_debug): Remove.
	* include/mailutils/mailer.h (mu_mailer_get_debug)
	(mu_mailer_set_debug): Remove.
	* include/mailutils/message.h (mu_message_save_to_mailbox):
	Change signature.
	* include/mailutils/mu_auth.h (mu_auth_set_debug): Remove
	proto.
	* include/mailutils/nntp.h (mu_nntp_set_debug): Remove.
	* include/mailutils/progmailer.h (mu_progmailer_set_debug):
	Remove proto.
	* include/mailutils/server.h (mu_ip_server_set_debug)
	(mu_ip_server_get_debug): Remove proto. 
	* include/mailutils/sieve.h (mu_sieve_locus_t): Remove. Use
	struct mu_locus instead.
	(mu_sieve_printf_t, mu_sieve_parse_error_t): Remove.
	(mu_sieve_action_log_t): Change signature.
	(mu_sieve_machine_init): Change signature.
	(mu_sieve_machine_init_ex): New function.
	(mu_sieve_get_diag_stream)
	(mu_sieve_set_diag_stream): New functions.
	(mu_sieve_set_data): New function.
	(mu_sieve_get_locus): Change signature.
	(mu_sieve_set_error,mu_sieve_set_parse_error)
	(mu_sieve_set_debug,mu_sieve_set_debug_object): Remove protos.
	* include/mailutils/stdstream.h (mu_stdstream_strerr_setup):
	New proto.
	* include/mailutils/stream.h (MU_LOGSTREAM_ADVANCE_LOCUS_LINE)
	(MU_LOGSTREAM_ADVANCE_LOCUS_COL): New ioctls.
	(mu_dbgstream_create): Change signature.
	* include/mailutils/sys/folder.h (_mu_folder) <debug>: Remove.
	* include/mailutils/sys/mailbox.h (_mu_mailbox) <debug>:
	Remove.
	* include/mailutils/sys/mailer.h (_mu_mailer) <debug>: Remove.
	* include/mailutils/sys/nntp.h (_mu_nntp) <debug>: Remove.
	* include/mailutils/syslog.h (mu_log_syslog)
	(mu_log_print_severity): New externs.
	* include/mailutils/types.hin (_mu_debug, mu_debug_t): Remove.
	* lib/tcpwrap.h: Remove unused prototypes. 
	* imap4d/imap4d.h: Include mailutils/stdstream.h
	* mail/mail.h: Likewise.
	* pop3d/pop3d.h: Likewise. 
	* mh/comp.c (main): Bugfix. 
	* po/POTFILES.in: Update.
	* TODO: Update.

2010-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove deprecated interfaces.

	* include/mailutils/error.h (mu_error_pfn_t,
	mu_default_error_printer)
	(mu_syslog_error_printer): Remove deprecated interfaces.
	* libmailutils/diag/muerror.c: Likewise.
	* libmailutils/stream/logstream.c (_log_write): Send
	MU_IOCTL_LOGSTREAM_SET_SEVERITY to the transport stream.
	* libmailutils/stream/syslogstream.c (_syslog_ctl): Translate
	MU severity to syslog priority level and vice versa.
	* mu/logger.c (mutool_logger): Bugfix.

2010-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu: use stdstream functions.

	* include/mailutils/stdstream.h (mu_printf): New prototype.
	* include/mailutils/version.h: Include mailutils/types.h
	instead of stdio.h
	(mu_fprint_options, mu_fprint_conf_option): Remove protos.
	(mu_format_options, mu_format_conf_option): New protos.
	* libmailutils/base/version.c (mu_fprint_options): Replace with
	mu_format_options, which outputs formatted data to a
	mu_stream_t.
	(mu_fprint_conf_option): Ditto. Replaced by
	mu_format_conf_option.
	(mu_print_options): Update accordingly.
	* libmailutils/stdstream/basestr.c (mu_printf): New function. 
	* mu/acl.c: Replace stdio calls with stdstream ones.
	* mu/cflags.c: Likewise.
	* mu/filter.c: Likewise.
	* mu/flt2047.c: Likewise.
	* mu/imap.c: Likewise.
	* mu/info.c: Likewise.
	* mu/ldflags.c: Likewise.
	* mu/logger.c: Likewise.
	* mu/mu.c: Likewise.
	* mu/mu.h: Likewise.
	* mu/pop.c: Likewise.
	* mu/query.c: Likewise.
	* mu/shell.c: Likewise.
	* mu/verbose.c: Likewise.
	* mu/wicket.c: Likewise.

2010-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Introduce stdstream module; move deprecated functions to
	libmu_compat.

	* include/mailutils/log.h: New file.
	* include/mailutils/stdstream.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	stdstream.h and log.h.
	* include/mailutils/argcv.h: Include mailutils/types.h
	* include/mailutils/mailutils.h: Include stdstream.h Remove
	vartab.h
	* include/mailutils/types.hin (MU_DEPRECATED): New define.
	* include/mailutils/vartab.h: Mark this header and all
	prototypes it defines as deprecated. 
	* libmailutils/stdstream/Makefile.am: New file.
	* libmailutils/stdstream/basestr.c: New file.
	* libmailutils/stdstream/strerr.c: New file.
	* libmu_compat/Makefile.am: New file.
	* libmu_compat/tests/.gitignore: New file.
	* libmu_compat/tests/Makefile.am: New file.
	* libmu_compat/tests/atlocal.in: New file.
	* libmu_compat/tests/testsuite.at: New file.
	* libmailutils/base/Makefile.am (noinst_LTLIBRARIES): Remove
	argcv.c and vartab.c.
	* libmailutils/Makefile.am (SUBDIRS): Add stdstream.
	(libmailutils_la_LIBADD): Add stdstream/libstdstream.la.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Remove
	argcv
	(TESTSUITE_AT): Remove argcv.at
	* libmailutils/tests/testsuite.at: Do not include argcv.at. 
	* libmailutils/base/argcv.c: Move to libmu_compat/argcv.c
	* libmailutils/tests/argcv.at: Move to
	libmu_compat/tests/argcv.at
	* libmailutils/tests/argcv.c: Move to
	libmu_compat/tests/argcv.c
	* libmailutils/base/vartab.c: Move to libmu_compat/vartab.c 
	* Makefile.am (SUBDIRS): Add libmu_compat.
	* configure.ac: Add libmu_compat/tests,
	libmu_compat/tests/Makefile, libmu_compat/tests/atlocal,
	libmu_compat/Makefile and libmailutils/stdstream/Makefile to
	config file list. 
	* mu/ldflags.c (lib_descr): Add mu_compat.
	* mu/logger.c (logger_parse_opt): -t does not imply --syslog.
	(mutool_logger): Use inline-comment filter to insert "tag: "
	prefix. Flush and destroy both streams before returning. 
	* po/POTFILES.in: Add libmailutils/stream/logstream.c,
	libmailutils/stdstream/baseio.c,
	libmailutils/stdstream/strerr.c and mu/logger.c.

2010-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Initial implementation of log streams.

	* include/mailutils/mailutils.h: Include mailutils/log.h.
	* include/mailutils/stream.h (MU_IOCTL_LOGSTREAM_GET_SEVERITY)
	(MU_IOCTL_LOGSTREAM_SET_SEVERITY)
	(MU_IOCTL_LOGSTREAM_GET_LOCUS,MU_IOCTL_LOGSTREAM_SET_LOCUS)
	(MU_IOCTL_LOGSTREAM_GET_MODE,MU_IOCTL_LOGSTREAM_SET_MODE): New
	ioctls.
	* include/mailutils/sys/logstream.h: New file.
	* include/mailutils/sys/syslogstream.h: New file.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	logstream.h and syslogstream.h
	* include/mailutils/types.hin (mu_locus): New struct. 
	* libmailutils/stream/Makefile.am (libstream_la_SOURCES): Add
	logstream.c and syslogstream.c. 
	* mu/logger.c: New file.
	* mu/template.c: New file.
	* mu/Makefile.am (MODULES): Add logger.c
	(EXTRA_DIST): Add template.c.

2010-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	streams: introduce setbuf hooks.

	* include/mailutils/sys/stream.h (_mu_stream) <setbuf_hook>:
	New member.
	* libmailutils/stream/stream.c (mu_stream_set_buffer): Use
	setbuf_hook to decide whether the operation is allowed.

2010-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	streams: introduce setbuf hooks.

	* include/mailutils/sys/stream.h (_mu_stream) <setbuf_hook>:
	New member.
	* libmailutils/stream/stream.c (mu_stream_set_buffer): Use
	setbuf_hook to decide whether the operation is allowed.

2010-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: further improvements in quoting code.

	* mail/escape.c (quote0): Simplify by using iterators.

2010-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve the inline-comment filter.

	* libmailutils/filter/inline-comment.c: Recognize multi-char
	comment sequences. Implement encode mode.
	* libmailutils/tests/inline-comment.at: Test the new modes. 
	* mail/escape.c (quote0): Re-implement using inline-comment
	encode mode.
	* mail/mailvar.c (mailvar_tab): Fix a typo.

2010-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* configure.ac: Remove checks for strtok_r, strchrnul, strndup,
	asprintf, vasprintf: none of these is used any more.
	* maidag/lmtp.c (lmtp_reply): Use mu_vasnprintf.
	* mh/mh.h (strchrnul): Remove proto.
	* mh/mh_list.c (want_header): Rewrite.
	(print): Use strcspn.

2010-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Avoid using strtok(_r)

	* TODO: Update.
	* gnulib.modules: Remove strtok_r
	* imap4d/auth_gsasl.c (auth_gsasl_capa_init): Use mu_wordsplit
	instead of strtok.
	* imap4d/imap4d.h (strtok_r): Remove declaration.
	* lib/mailcap.c (mime_context) <no_ask_str>: Remove. All uses
	updated.
	(mime_context_fill): Use mu_wordsplit instead of strtok.
	(mime_context_write_input): Tolerate ENOSYS return from
	mu_stream_seek.
	(display_stream_mailcap): Use mu_wordsplit instead of strtok.
	* libmailutils/diag/gdebug.c (mu_debug_level_from_string)
	(mu_global_debug_from_string): Use mu_wordsplit instead of
	strtok.
	* libmu_cfg/sieve.c (_add_path): Likewise.
	* libmu_sieve/extensions/list.c: Likewise.
	* mail/escape.c (quote0): Likewise. 
	* mail/util.c (util_header_expand): Likewise.
	(util_rfc2047_decode): Use mu_parse_lc_all.
	* mh/mh_init.c (mh_charset): Use mu_parse_lc_all.
	* frm/common.c (get_charset): Use mu_parse_lc_all. 
	* libmailutils/base/lcall.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add
	lcall.c
	* libmailutils/string/strlst.c: New file.
	* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
	strlst.c.
	* include/mailutils/cstr.h: Include mailutils/types.h
	(mu_string_split): New proto.
	* include/mailutils/nls.h (MU_LC_LANG, MU_LC_TERR)
	(MU_LC_CSET,MU_LC_MOD): New flags.
	(mu_lc_all): New struct.
	(mu_parse_lc_all, mu_lc_all_free): New protos.
	(mu_charset_lookup): New proto (from util.h).
	* include/mailutils/util.h (mu_charset_lookup): Move to nls.h 
	* libmailutils/base/tempfile.c (mu_tempname): Shut up compiler
	warning.

2010-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in message_stream.

	* libmailutils/mailbox/message.c (_message_stream_seek): Fix
	ESPIPE conditional.
	(_message_stream_read): Keep running until buffer is full or
	_mss_eof state is reached.
	(_message_stream_readdelim): Keep running until buffer is full,
	_mss_eof state is reached or delimiter is found.

2010-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	sieve: rewrite lexer to use MU streams API.

	* libmu_sieve/sieve.l (input_string_ptr, input_string_level):
	Remove.
	(input_stream): New static variable.
	(fillbuf): Use mu_stream_read
	(buffer_ctx)<yyin>: Replace with mu_stream_t input;
	(push_source, pop_source): Use stream API.
	(mu_sv_lex_begin_string): Likewise.
	* sieve/sieve.c (options): New option --expression.
	(expression_option): New variable.
	(parser): Handle the --expression option.
	(main): Treat SCRIPT as program text if given the --expression
	option.

2010-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise TODO.

2010-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: various fixes.

	* imap4d/lsub.c (imap4d_lsub): Fix untagged responses.
	* imap4d/imap4d.h (make_interdir): New proto.
	* imap4d/create.c (mkdir_p): Remove function.
	(MKDIR_PERMISSIONS): Move macro definition to imap4d.h
	(imap4d_create): Use make_interdir instead of mkdir_p.
	* imap4d/rename.c (make_interdir): New function.
	(imap4d_rename): Create intermediate directories as required by
	RFC 3501. Issue additional diagnostics if rename fails. Fix OK
	response text.
	* imap4d/imap4d.c (imap4d_mainloop): Implement idle timeout.
	* imap4d/bye.c (imap4d_bye0): Reset the SIGPIPE before sending
	the OK response in order to avoid recursion.

	Unrelated changes: 
	* maidag/tests/forward.at: Fix the expected reply (see
	f5374bc2ff).

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: rewrite subscription support from scratch.

	This still needs some more work because imap4d does not check
	whether the objects being subscribed to are valid folders or
	mailboxes.

	* imap4d/imap4d.h (open_subscription): New prototype.
	* imap4d/lsub.c (imap4d_lsub): Rewrite using MU properties.
	* imap4d/subscribe.c (open_subscription): New function.
	(imap4d_subscribe): Rewrite using MU properties.
	* imap4d/unsubscribe.c (imap4d_unsubscribe): Rewrite using MU
	properties. 
	* examples/mblconv.c: New file.
	* examples/Makefile.am: Add mblconv.c

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	sortm: update current message number; add testsuite.

	* mh/sortm.c (current_num): New variable.
	(sort): Keep track of the current message UID. Store it back to
	mailbox if in reorder mode.
	(main): Save initial current message UID. Save global and
	mailbox status before exiting.
	* mh/mh.h (mh_open_folder): Change last argument name.
	* mh_open_folder (mh_open_folder): Change meaning of the 2nd
	argument: it contains usual stream flags now. All uses changed. 
	* mh/tests/sortm.at: New file.
	* mh/tests/testsuite.at: Include sortm.at
	* mh/tests/Makefile.am (TESTSUITE_AT): Add sortm.at.

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	send: fix draftfolder support; add testsuite.

	* examples/mta.c (mta_send): Don't print trailing spaces
	instead of empty lines.
	* mh/send.c: Redo draftfolder support.
	(read_mts_profile): If MTSTAILOR environment variable is set,
	it names the mtstailor file to use instead of the standard
	ones.
	* mh/tests/send.at: New file.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add send.at
	* mh/tests/testsuite.at (MH_SETUP): Set MTSTAILOR.
	(MH_MTSTAILOR): New macro Include send.at

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in libstream.

	* libmailutils/stream/message_stream.c (_message_open): Don't
	clobber len.

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix in libstring.

	* libmailutils/string/mkfilename.c (mu_make_file_name_suf):
	Don't add leading / if dir=="".

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: fixes in compose mode.

	* mh/mhn.c (edit_forw): Accept directives without explicit
	folder spec. Fix creation of individual mime parts; set
	Content-Type: message/rfc822 for each of them.
	(mhn_edit): Fix some coredumps.
	(main): Use -file argument, if it is given.
	* mh/tests/atlocal.in (mimeflt): New function.
	* mh/tests/mhn.at: Add tests for compose mode.

2010-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	mime creation: bugfixes.

	* libmailutils/mime/mime.c (_mime_append_part): All numeric
	args are of type size_t.
	(_mime_part_size): Fix calculations.
	(mu_mime_get_part): Avoid coredump if stream is NULL.

2010-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: minor fix in edit mode.

	* mh/mhn.c (mhn_edit): Increase line_count after outputting a
	line with a stripped-off initial #.

2010-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve testsuite.

	* mh/mhn.c (mhn_pause): Fix type of the local buffer variable.
	* mh/tests/mhn.at: Add more -show tests.
	* testsuite/mh/mime/1: New file.
	* testsuite/mh/mime/2: New file.
	* testsuite/Makefile.am (EXTRA_DIST): Add mime.

2010-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	streams: fix mu_stream_wait operation for buffered streams.

	* libmailutils/stream/stream.c (mu_stream_wait): Fix condition
	to determine if the buffer contains some data. Avoid passing
	empty flags to the wait method.

2010-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

2010-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: compatibility fixes in show mode.

	* mh/mhn.c (OPT_PAUSE): Remove define.
	(pause_option): New variable.
	(opt_handler): -pause/-nopause sets pause_option. If stdin is
	not a tty, set pause_option to 0.
	(check_type): New function.
	(mhn_show_command): If mhn-show-<type>[/<subtype>] is not set,
	use %pmoreproc '%F' for text/plain and message/rfc822 parts. If
	content type is application/octet-stream and type=tar, use tar
	to list the archive. Otherwise, complain and return NULL.
	(MHN_CONFIRM): Rename to MHN_PAUSE.
	(mhn_pause): New function.
	(show_handler): The value of pause_option controls the %p
	escape. Rewrite the MHN_PAUSE handling to avoid the use of the
	fixed-size buffer. Implement C-c handling, as in other mhns. If
	mhn_show_command returns NULL, do not attempt to show the
	content. Remove dubious usage of mu_transport_t.
	(mhn_store_command): handle application/octet-stream with
	type=tar.
	* mh/tests/mhn.at: Add a test for show mode.

2010-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: further improvements in mnh & mh testsuite.

	* mh/mhn.c (_mhn_profile_get): Try mhn-<prefix>-<type> if
	mhn-<prefix>-<type>/<subtype> does not exist.
	(normalize_path): Use mu_normalize_path.
	(store_handler) <store_to_file>: Honor mhn-<prefix>, if set.
	* tests/atlocal.in (remove_curdir): New function.
	* mh/tests/mhn.at: Implement more -store tests.
	* mh/tests/testsuite.at (MH_SETUP): Set curdir for use by other
	testcases.
	* mh/tests/comp.at: Use remove_curdir to sort out the cwd.
	* mh/tests/forw.at: Likewise.
	* mh/tests/mark.at: Likewise.
	* mh/tests/mhpath.at: Likewise.
	* mh/tests/repl.at: Likewise.

2010-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve mhn store mode.

	* mh/mhn.c (options): Add --build as an alias to --compose.
	(options): Likewise.
	(store_destination): New enum.
	(mhn_store_command): Support all variants of mhn-store-*
	components. Return store_destination type.
	(store_handler): Rewrite accordingly.
	(main): Consistently use mh_expand_name to expand the value of
	input_file.
	* mh/tests/mhn.at: New file.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add mhn.at.
	* mh/tests/testsuite.at: Include mhn.at.

2010-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: minor improvements.

	* mh/mhn.c: Use _sget_ calls where appropriate. Eliminate
	unnecessary memory allocations.

2010-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: implement mhn-suffix-<type> profile component.

	* mh/mhn.c (_mhn_profile_get): All arguments are const.
	(mhn_tempfile_name): New function.
	(mhn_show_command): Use mhn_tempfile_name.

2010-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove obsolete function.

	* include/mailutils/body.h (mu_body_get_filename): Remove
	proto.
	* include/mailutils/sys/body.h (_mu_body) <filename>: Remove.
	* libmailutils/mailbox/body.c (mu_body_get_filename): Remove
	obsolete function.
	(_body_get_stream): Use mu_temp_file_stream_create.
	* libmailutils/stream/temp_file_stream.c
	(mu_temp_file_stream_create): Return EINVAL if flags is set,
	but hints is NULL.
	* libmu_scm/mu_body.c (mu_scm_body_print): Don't use
	mu_body_get_filename.

2010-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	temp_file_stream: Use mu_tempfile_hints to control how the file
	name is created.

	* include/mailutils/stream.h (mu_temp_file_stream_create):
	Change signature.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	temp_file_stream.h
	* include/mailutils/util.h (mu_tempfile_hints): Remove const
	qualifiers.
	* libmailutils/stream/temp_file_stream.c: Include
	sys/temp_file_stream.h.
	(fd_temp_open): Use data from struct _mu_temp_file_stream.
	(fd_temp_done): New function.
	(mu_temp_file_stream_create): Take hints and flags as
	arguments. 
	* examples/mta.c: Update calls to mu_temp_file_stream_create.
	* libproto/mbox/mbox.c: Likewise.
	* libproto/pop/mbox.c: Likewise.
	* maidag/deliver.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/prompter.c: Likewise.

2010-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite temporary file handling.

	* include/mailutils/util.h (mu_make_file_name_suf): New proto.
	(mu_make_file_name): Replace with a macro.
	(MU_TEMPFILE_TMPDIR,MU_TEMPFILE_SUFFIX)
	(MU_TEMPFILE_MKDIR): New flags.
	(mu_tempfile_hints): New struct.
	(mu_tempfile): Change signature.
	* libmailutils/base/tempfile.c (mu_create_temp_file): New
	function.
	(mu_tempfile): Rewrite from scratch. Change signature. All
	callers changed.
	* libmailutils/string/mkfilename.c (mu_make_file_name): Remove.
	(mu_make_file_name_suf): New function. 
	* libmailutils/stream/streamcpy.c (mu_stream_copy): Don't
	return EIO on EOF.
	* libmailutils/stream/file_stream.c (mu_fd_stream_create): If
	MU_STREAM_SEEK is set, position fd to 0. 
	* guimb/collect.c: Update calls to mu_tempfile.
	* lib/mailcap.c: Likewise.
	* libmailutils/base/amd.c (_amd_tempfile): Rewrite using
	mu_tempfile. 
	* libmailutils/tests/tempfile.c: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
	tempfile.

2010-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: minor changes.

	* mh/etc/mhl.headers: New file.
	* mh/etc/Makefile.am (MH_FILES): Add mhl.headers.
	* mh/mhn.c (opt_handler): Use mh_find_file to resolve format
	file name.
	(mhn_show): Always open the formfile.
	(copy_header_to_stream): Rewrite using mu_stream_copy + HEADER
	filter.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: add a forgotten file.

	* mh/tests/movemsg: add to the repository.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: minor changes in forw and repl; provide a set of
	traditional scan formats.

	* mh/.gitignore: Update.
	* mh/compcommon.c (mh_comp_draft): Rewrite using mh_find_file
	and simplify. All callers changed.
	* mh/mh.h (mh_comp_draft): Change signature.
	* mh/comp.c (opt_handler) <ARGP_KEY_FINI>: Make sure formfile
	is initialized.
	* mh/forw.c: Likewise.
	* mh/repl.c (opt_handler): Remove unused variable.
	* mh/tests/comp.at (compcmd): Remove -form.
	* mh/tests/forw.at (forwcmd): Likewise. 
	* mh/etc/.gitignore: New file.
	* mh/etc/Makefile.am: New file.
	* mh/etc/forwcomps: New file.
	* mh/etc/scan.default: New file.
	* mh/etc/scan.mailx: New file.
	* mh/etc/scan.size: New file.
	* mh/etc/scan.time: New file.
	* mh/etc/scan.timely: New file.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: move format files to a separate directory.

	* mh/etc: New directory.
	* mh/Makefile.am: New file.
	* mh/components: Move to mh/etc.
	* mh/mailutils-mh.eli: Move to mh/etc.
	* mh/mhl.format: Move to mh/etc.
	* mh/mhl.forward: Move to mh/etc.
	* mh/mhl.repl: Move to mh/etc.
	* mh/mhl.usenet: Move to mh/etc.
	* mh/replcomps: Move to mh/etc.
	* mh/replgroupcomps: Move to mh/etc.
	* configure.ac (AC_CONFIG_FILES): Add mh/etc/Makefile.
	* mh/Makefile.am (SUBDIRS): Add etc. Move mhlib_DATA and
	related statements to mh/etc/Makefile.am
	* mh/comp.c (formfile): Remove const qualifier.
	(opt_handler): Use mh_find_file to set formfile.
	* mh/forw.c: Likewise.
	* mh/mh_init.c (mh_find_file): Make sure *resolved_name is
	always set to the last tried name. 
	* mh/tests/comp.at: Remove directory components from the -from
	argument.
	* mh/tests/forw.at: Likewise.
	* mh/tests/mhl.at: Likewise.
	* mh/tests/testsuite.at (MH_SETUP): Change mhetcdir value.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: set a compatible search path for format files; other minor
	fixes.

	* mh/mh_format.c (builtin_friendly): If personal part is
	present, return it. Otherwise, leave the address untouched.
	(builtin_pers): Do not quote the return.
	* mh/tests/inc.at: Reflect the above changes.
	* mh/tests/scan.at: Likewise. 
	* mh/mh_list.c (eval_body): Offset each line.
	* mh/tests/mhl.at: Test this change. 
	* mh/mhl.c: Use mh_find_file to resolve the argument to -form.
	* mh/repl.c: Likewise. Same for replgroupcomps, mhl.repl and
	-filter. 
	* mh/mhl.repl: New file.
	* mh/mhl.usenet: New file.
	* mh/Makefile.am (mhlib_DATA, EXTRA_DIST): Add new files.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	wordsplit: fix whitespace trimming.

	* libmailutils/string/wordsplit.c (mu_wordsplit_trimws): Do not
	touch quoted nodes.
	* libmailutils/tests/wordsplit.at: Test the above change.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: fix the use of mhl.forward in forw.

	* mh/mhl.forward: New file.
	* mh/forw.c (mh_option): the -format option is boolean.
	(mhl_filter): Rename to mhl_filter_file.
	(opt_handler) <ARG_FORMAT>: Use default mhl.filter.
	<ARG_NOFORMAT>: Set encap_clear.
	<ARG_FILTER>: Use mh_find_file to determine filter file name.
	(finish_draft): Use MHL filter file if encap == encap_mhl.
	* mh/mh.h (mh_find_file): New prototype.
	* mh/mh_init.c (mh_find_file): New file.
	(mh_read_formfile): Use mh_find_file to locate the file.
	* mh/tests/forw.at: Test forw -format.
	* mh/tests/mhparam.at: Update the -all test.
	* tests/testsuite.at (MH_SETUP): Set the "mhetcdir" component.
	* mh/scan.c (opt_handler): Exit if mh_read_formfile failed.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	New type of stream: static memory stream.

	Static memory stream is a read-only stream whose transport is
	an arbitrary area of memory. Such streams allow the programmer
	to access C strings using streams interface.

	* include/mailutils/stream.h (mu_static_memory_stream_create):
	New proto.
	* libmailutils/stream/memory_stream.c
	(mu_static_memory_stream_create): New function.
	* imap4d/append.c (imap4d_append0): Use static memory stream to
	create a temporary message.
	* imap4d/preauth.c (decode64_buf): Use static memory stream.
	* libmailutils/base/rfc2047.c (mu_rfc2047_decode): Likewise.
	* libmailutils/mime/mimehdr.c (mu_mimehdr_decode_param):
	Likewise.
	* libmu_auth/ldap.c (chk_md5, chk_sha, chk_ssha): Likewise.
	* libmu_sieve/extensions/vacation.c (build_mime): Likewise.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix body start calculation in message_stream. Fix compose
	parser in mhn.

	* libmailutils/stream/message_stream.c (scan_stream): Merge
	with _message_open.
	* mh/mhn.c (edit_forw): Do not set ws_delim. Fix message
	addressing.
	(mhn_edit): Remove the trailing newline.

2010-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: implement rmmproc.

	* include/mailutils/sys/amd.h (_amd_data) <delete_msg>: New
	method.
	* libmailutils/base/amd.c (amd_expunge): If delete_msg is
	defined, use it.
	* libproto/mh/mbox.c (_mh_msg_delete): New method.
	(_mailbox_mh_init): Set delete_msg if "rmmproc" component is
	defined. 
	* mh/tests/movemsg: New file.
	* mh/tests/Makefile.am (EXTRA_DIST): Add movemsg.
	* mh/tests/rmm.at: Test rmmproc effects.
	* mh/tests/rmf.at (MH_KEYWORDS): Fix copy-n-paste error. 
	* doc/texinfo/mu-mh.texi: Document rmmproc.
	* mh/TODO: Update.

2010-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: add repl tests.

	* mh/repl.c: Minor changes.
	* tests/repl.at: New file.
	* tests/Makefile.am (TESTSUITE_AT): Add repl.at
	* mh/tests/testsuite.at: Include repl.at.
	* mh/TODO: Update.

2010-11-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve forw; add tests.

	* mh/forw.c (options): New option --file.
	(input_file): New variable.
	(opt_handler): Handle --file.
	(finish_draft): Remove a leftover path hack. Implement raw file
	forwarding.
	(main): Minor fix.
	* mh/mh_getopt.c (mh_option_init): Limit match_len to the
	actual length of the option string. 
	* mh/tests/forw.at: New file.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add forw.at.
	* mh/tests/testsuite.at: Include forw.at.
	* mh/tests/comp.at: Add more keywords.

2010-11-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide a library function for translating message UIDs to
	numbers and vice versa.

	* include/mailutils/mailbox.h (MU_MAILBOX_UID_TO_MSGNO)
	(MU_MAILBOX_MSGNO_TO_UID): New defines.
	(mu_mailbox_translate): New proto.
	* include/mailutils/sys/mailbox.h (_mu_mailbox) <_translate>:
	New method.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_translate): New
	function.
	* libproto/mh/mbox.c (mh_translate): New function. Implements
	the _translate method.
	* mh/mh_msgset.c (mh_uid_to_msgno, mh_msgno_to_uid): Remove.
	All callers updated to use mu_mailbox_translate instead.
	(mh_search_message): Remove.
	(mh_get_message): Rewrite using mu_mailbox_translate. 
	* mh/comp.c (copy_message): Check return from
	mu_mailbox_get_message.
	* mh/mh_init.c (mh_draft_message): Rewrite using
	mu_url_sget_path.
	* mh/tests/comp.at: Test draftfolder functionality.

2010-11-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: fix msgset parser and some more comp compatibility issues;
	provide testsuite for comp. * mh/Makefile.am (bin_PROGRAMS):
	Add mhseq. * mh/comp.c (main): Rewrite to fix compatibility
	issues. * mh/mh.h (MH_MSGSET_UID): New define. (mh_msgset_t)
	<flags,size>: New members. * mh/mh_init.c (mh_draft_message):
	Bugfix: convert msgset to UIDs. * mh/mh_msgset.c: Rewrite from
	scratch.

	* mh/tests/comp.at: New file.
	* mh/tests/mhseq.at: New file.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add comp.at, mhseq.at.
	* mh/tests/testsuite.at: Include comp.at and mhseq.at. 
	* libmailutils/property/mhprop.c (_mh_prop_read_stream): Minor
	fix. Do remove empty lines.
	* mh/mh_whatnow.c (_whatnow): Detect EOF.
	(call_send): Quit after successful send.

2010-11-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: Fix compatibility issues in the draftfolder facility.
	Implement whatnowproc.

	* mh/whatnowenv.c: New source.
	* mh/Makefile.am (libmh_a_SOURCES): Add whatnowenv.c
	* mh/TODO: Update.
	* mh/comp.c: Implement draftfolder, whatnowproc and the -use
	option.
	* mh/forw.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/compcommon.c (check_draft_disposition): Fix typo.
	* mh/mh.h (mh_whatnow_env) <draftfolder>: Remove.
	<mbox>: New member.
	(mh_whatnowproc): New proto. (mh_whatnow_env_from_environ)
	(mh_whatnow_env_to_environ): New proto.
	* mh/mh_global.c (prop_merger): Bugfix: initialize dst.
	* mh/mh_init.c (mh_draft_message): Update cur msg.
	* mh/mh_whatnow.c (mh_whatnowproc): New function.
	* mh/whatnow.c (opt_handler): Do not read Draft-Folder
	variable.
	(main): Initialize data from the environment.

2010-11-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve component reading (profile, context and whom).

	* libmailutils/filter/header.c: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	header.c.
	* libmailutils/filter/filter.c (mu_filter_get_list): Register
	mu_header_filter.
	* libmailutils/filter/inline-comment.c: (ilcmt_ws)
	(ilcmt_rollback): New states.
	(ILCMT_REMOVE_EMPTY_LINES,ILCMT_SQUEEZE_WS): New flags.
	(ilcmt_data)<buf,size,level,replay>: New members.
	(ilcmt_action): New enum
	(new_ilcmt_state): Return enum ilcmt_action.
	(_ilcmt_decoder): Optionally remove empty lines and squeeze
	leading white space.
	* libmailutils/property/mhprop.c (_mh_prop_read_stream): Remove
	empty lines from the input. 
	* libmailutils/tests/Makefile.am (TESTSUITE_AT): Add hdrflt.at
	and inline-comment.at.
	* libmailutils/tests/testsuite.at: Include hdrflt.at and
	inline-comment.at.
	* libmailutils/tests/fltst.c: Pass optional arguments to the
	filter creation procedure. 
	* mh/mh_whom.c (read_header): New function.
	(mh_whom): Rewrite using headers. 
	* include/mailutils/filter.h: Fix a typo.
	* libmailutils/stream/fltstream.c: Likewise.
	* libmu_auth/gsasl.c: Likewise.

2010-11-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move MH profile & context support to libproto.

	* mh/mh_ctx.c: Remove.
	* mh/Makefile.am (libmh_a_SOURCES): Remove mh_ctx.c
	* mh/folder.c (read_seq_file): Use mu_property_t.
	* mh/mh.h (mh_context_iterator): Remove typedef.
	(mh_global_profile_get, mh_global_profile_set)
	(mh_global_profile_iterate)
	(mh_global_context_set,mh_global_context_set)
	(mh_global_context_iterate): Rewrite as macros.
	(mh_global_sequences_iterate): Change signature.
	(mh_read_property_file,mh_property_merge): New protos.
	(mh_context_create,mh_context_read,mh_context_write)
	(mh_context_get_value,mh_context_set_value,mh_context_iterate)
	(mh_context_destroy,mh_context_merge): Remove protos.
	* mh/mh_global.c (mh_global_profile_get, mh_global_profile_set)
	(mh_global_profile_iterate)
	(mh_global_context_set,mh_global_context_set)
	(mh_global_context_iterate): Remove.
	(mh_read_property_file,mh_property_merge): New functions.
	(_mh_init_global_context,mh_read_profile)
	(mh_set_current_folder,mh_global_sequences_iterate): Rewrite.
	(mh_global_save_state): Rewrite.
	* mh/mh_whom.c (mh_whom): Use mu_property_t.
	* mh/send.c: Use mu_property_t.
	* po/POTFILES.in: Add mh/mboxprop.c.

2010-11-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement MH sequences via mailbox properties.

	* libmailutils/mailbox/header.c (mu_header_clear): New
	function.
	(mu_header_sget_value_n): Tolerate pval == NULL.
	* libmailutils/property/assocprop.c (_assoc_prop_setval):
	Bugfix.
	(_assoc_prop_clear): New method.
	(mu_assoc_property_init): Reference the stream.
	(mu_assoc_property_init): Initialize _prop_clear.
	* libmailutils/property/create.c (_mu_property_init): Now
	extern.
	* libmailutils/property/propset.c (mu_property_set_value): Null
	value means unset.
	* libmailutils/tests/prop.at: Test property clear and
	invalidate.
	* libmailutils/tests/prop.c: New commands: 0 for property clear
	and ! for invalidate. 
	* libmailutils/property/mhprop.c: New file.
	* libmailutils/property/propclr.c: New file.
	* libmailutils/property/propinv.c: New file.
	* libmailutils/property/Makefile.am (noinst_LTLIBRARIES): Add
	new files. 
	* include/mailutils/header.h (mu_header_clear): New proto.
	* include/mailutils/property.h (mu_property_clear)
	(mu_property_invalidate): New protos.
	(mu_mh_prop): New struct.
	(mu_mh_property_init): New proto.
	* include/mailutils/sys/property.h (_mu_property)
	<_prop_clear>: New member.
	(_mu_property_init): New proto.
	* include/mailutils/mh.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add mh.h 
	* libproto/mh/profile.c: New file.
	* libproto/mh/Makefile.am (libmu_mh_la_SOURCES): Add new files. 
	* libproto/mh/mbox.c (mh_get_property): New static function.
	(_mailbox_mh_init): Set _get_property. 
	* mh/mh_global.c (current_message, sequences): Remove. Use mbox
	properties instead. (mh_global_sequences_get)
	(mh_global_sequences_set) (mh_global_sequences_iterate)
	(mh_global_sequences_drop): Take mbox as first argument. All
	callers updated.
	* mh/mh_init.c (mh_init2): Remove call to
	mh_global_sequences_get.
	* mh/mh_msgset.c (msgset_cur): Use mh_mailbox_get_cur.
	* mh/mh_sequence.c (mh_seq_read, write_sequence)
	(delete_sequence, mh_seq_add, mh_seq_delete): Take mbox as
	first argument. All callers updated. 
	* mh/mh.h: Include mailutils/property.h.
	(current_message): Remove.
	(mh_mailbox_cur_default): New extern. (mh_global_sequences_get)
	(mh_global_sequences_set) (mh_global_sequences_iterate)
	(mh_global_sequences_drop): Take mbox as first argument. All
	callers updated. 
	* mh/mh_format.c (builtin_cur): Rewrite using
	mh_message_number. 
	* mh/mboxprop.c: New file.
	* mh/Makefile.am (libmh_a_SOURCES): Add new file. 
	* mh/folder.c: Update calls to sequence management functions.
	* mh/mark.c: Likewise.
	* mh/pick.c: Likewise. 
	* mh/inc.c (main): Set mh_mailbox_cur_default to 1. Invalidate
	properties if changecur is not set.
	* mh/prompter.c (main): Destroy the iterator.
	* mh/rmf.c: Rewrite using mu_mailbox_remove.
	* mh/scan.c: Always close the mailbox. 
	* mh/tests/folder.at: Update.
	* mh/tests/inc.at: Update. Inc now sets cur to 1 if it was not
	originally set. This is what others MHs do.

2010-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite property support.

	* configure.ac: Add libmailutils/property/Makefile to config
	files. 
	* include/mailutils/property.h (mu_property_create)
	(mu_property_destroy): Change signature.
	(mu_property_get_owner): Remove. (mu_property_create_init)
	(mu_property_set_init, mu_property_set_init_data)
	(mu_property_ref, mu_property_unref)
	(mu_property_save): New protos. (mu_property_get_iterator)
	(mu_assoc_property_init): New protos.
	* include/mailutils/sys/property.h (property_item): Remove
	definition.
	(MU_PROP_INIT, MU_PROP_FILL, MU_PROP_MODIFIED): New flags.
	(_mu_property): Rewrite from scratch.
	(_mu_property_check): New proto. 
	* libmailutils/property/Makefile.am: New file.
	* libmailutils/property/assocprop.c: New file.
	* libmailutils/property/create.c: New file.
	* libmailutils/property/propget.c: New file.
	* libmailutils/property/propitr.c: New file.
	* libmailutils/property/propset.c: New file. 
	* libmailutils/Makefile.am (SUBDIRS): Add property.
	(libmailutils_la_LIBADD): Add property/libproperty.la. 
	* libmailutils/base/property.c: Remove.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove
	property.c 
	* libmailutils/base/assoc.c (first): Avoid coredumping on empty
	hash table. 
	* include/mailutils/folder.h (mu_folder_set_property)
	(mu_folder_get_property): New protos.
	* include/mailutils/sys/folder.h (_mu_folder) <property>
	<_get_property>: New members.
	* libmailutils/mailbox/folder.c (mu_folder_destroy): Destroy
	the property. (mu_folder_get_property)
	(mu_folder_set_property): New functions. 
	* include/mailutils/mailbox.h (mu_mailbox_set_property): New
	proto.
	* libmailutils/mailbox/mailbox.c (mu_mailbox_set_property): New
	function.
	(mu_mailbox_get_property): Use _get_property method. 
	* include/mailutils/mailer.h (mu_mailer_set_property): New
	proto.
	* include/mailutils/sys/mailer.h (_mu_mailer) <_get_property>:
	New member.
	* libmailutils/mailer/mailer.c (mu_mailer_set_property): New
	function.
	(mu_mailer_get_property): Use _get_property method. 
	* include/mailutils/iterator.h (mu_iterator_set_dataptr): New
	proto.
	* include/mailutils/sys/iterator.h (_mu_iterator) <dataptr>:
	New method.
	* libmailutils/base/iterator.c (mu_iterator_set_dataptr): New
	function.
	(mu_iterator_current): Rewrite as a wrapper around
	mu_iterator_current_kv.
	(mu_iterator_current_kv): Use dataptr method (if defined) to
	extract the data pointer. 
	* libmailutils/tests/prop.c: New file.
	* libmailutils/tests/prop.at: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add prop.
	(TESTSUITE_AT): Add prop.at.
	* libmailutils/tests/testsuite.at: Include prop.at.

2010-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: Minor fixes.

2010-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mh/prompter.c (main): Append terminating \0 to the opool.

2010-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: implement prompter.

	* configure.ac (MU_COND_READLINE): New cond.
	* mh/prompter.c: New file.
	* mh/prompter-rl.c: New file.
	* mh/prompter-tty.c: New file.
	* mh/prompter.h: New file.
	* mh/TODO: Update.
	* mh/Makefile.am: Build prompter. 
	* doc/texinfo/mu-mh.texi: Document prompter
	* po/POTFILES.in: Update.

2010-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement "inline-comment" filter.

	* include/mailutils/filter.h (mu_filter_xcode_t): Change
	signature.
	(mu_filter_create_args): New proto.
	(mu_inline_comment_filter): New extern. 
	* libmailutils/filter/inline-comment.c: New file.
	* libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add
	inline-comment.c.
	* libmailutils/filter/crlfdot.c (alloc_state): Update
	declaration.
	* libmailutils/filter/crlfflt.c: Likewise.
	* libmailutils/filter/dot.c: Likewise.
	* libmailutils/filter/fromflt.c (_from_alloc_state): Likewise.
	* libmailutils/filter/filter.c (mu_filter_create_args): New
	function.
	(mu_filter_create): Rewrite via mu_filter_create_args.

	mh: inline comments are allowed for use in components and
	forwcomp files. 
	* mh/compcommon.c (mh_comp_draft): Fix erroneous conditional.
	* mh/components: Add comments.
	* mh/mh_init.c (mh_file_copy): Rewrite using new API.

	mu filter: new option to list supported filters. 
	* mu/filter.c (filter_options): New option --list (-L).
	(filter_parse_opt): Handle the -L option.
	(filter_printer, list_filters): New functions.
	(main): Print a list of filters if --list was given.

2010-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: Optimize for speed.

	* mh/burst.c (transtab): Revamp as a proper translation table.
	It is indexed by the current state offset by 1 and the last
	read character.
	(token_num): Remove.
	(finish_stream, flush_stream): Inline functions.
	(burst_digest): Change transtab indexing.

2010-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: further fixes in burst testsuite.

	* mh/burst.c: Minor changes.
	* mh/tests/burst.at: Remove host-specific information.

2010-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: minor fix in traditional option handler.

	* mh/mh_getopt.c (mh_option_init): Enforce the computed minlen
	on each option which begins on the same letter as the sample.

2010-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: rmm now saves state before returning.

	* mh/rmm.c (main): Call mh_global_save_state.

2010-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: fix burst, provide test cases.

	* mh/burst.c (burst_stream): New struct.
	(finish_stream): Change signature. Keep track of current part
	number and flags.
	(flush_stream): Rewrite.
	(burst_digest): Remove extra buffering code. Rely on the stream
	buffering instead. Fixed length-based EB detection. Return 0 if
	the message has been burst successfully, 1 if it is not in
	digest format.
	(burst_or_copy): Revert the condition on burst_digest. 
	* tests/burst.at: New test.
	* tests/Makefile.am (TESTSUITE_AT): Add burst.at
	* tests/testsuite.at: Include burst.at

2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	message_stream: Bugfix.

	* libmailutils/stream/message_stream.c (copy_trimmed_value):
	Fix memory allocation.

2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: fix testsuite, add new tests.

	* mh/ali.c (ali_print_name_list): Print -list output.
	* mh/tests/ali.at: New test case.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add ali.at
	* mh/tests/testsuite.at: Include ali.at.
	* mh/tests/anno.at: Fix MH_KEYWORDS definition.
	* mh/tests/folder.at: Likewise.
	* mh/tests/inc.at: Likewise.
	* mh/tests/mark.at: Likewise.
	* mh/tests/mhl.at: Likewise.
	* mh/tests/mhparam.at: Likewise.
	* mh/tests/mhpath.at: Likewise.
	* mh/tests/refile.at: Likewise.
	* mh/tests/rmf.at: Likewise. 
	* mh/tests/pick.at: Fix MH_KEYWORDS definition. Add more tests.

2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: Add new tests.

	* mh/mh_init.c (mh_install): Exit with code 1 on errors.
	* mh/tests/install-mh.at: New file.
	* mh/tests/pick.at: New file.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add install-mh.at,
	pick.at.
	* mh/tests/testsuite.at: Include install-mh.at and pick.at.

2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve GNU option parser and help output.

	* mh/mh_argp.c (mh_argp_children): Set group number -2, to
	place help output between the application help and
	informational options.
	* mh/mhn.c (options): Regroup options,
	* mh/pick.c: Likewise. 
	* mh/ali.c: Reword arg docs.
	* mh/anno.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mh_argp.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhparam.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whom.c: Likewise.

2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	mh: improve traditional option parser and help output.

	* mh/mh_getopt.h (mh_option): Move match_len to the end of the
	structure. It should not be initialized.
	(mh_option_init): New prototype. 
	* mh/mh_getopt.c (mh_option_init): New function.
	* mh/mh_argp.c (mh_argp_parse): Call mh_option_init. 
	* mh/ali.c: Update mh_option declaration.
	* mh/anno.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhparam.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/whom.c: Likewise.

2010-11-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	pick: improve compatibility.

	The traditional component matching syntax, `--COMP STRING', is
	accepted, provided at least one of the following conditions is
	met:

	1. The word `COMP' contains at least one capital letter; 2. The
	word `COMP' ends with a colon; 3. Standard input is not
	connected to a terminal.

	* mh/mh_getopt.c (mh_help_hook): New global variable.
	(mh_help): Call mh_help_hook, if set.
	* mh/mh_getopt.h (mh_help_hook): New extern.
	* mh/pick.c (doc): Update.
	(opt_handler): Remove ARGP_KEY_ERROR case.
	(pick_help_hook): New function.
	(main): Convert any instance of `--comp string' to
	`--component=comp --pattern=string', if comp contains a capital
	letter or ends with a colon, or fd 0 is not connected to
	terminal.
	* doc/texinfo/mu-mh.texi: Document changes to pick.

2010-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix in the test suite.

	Replace 'Mirddin.farlep.net' with 'example.net' throughout the
	testsuite. Change expected message/part sizes accordingly.
	Files changed:

	* imap4d/testsuite/imap4d/fetch.exp
	* mail/testsuite/mail/folder.exp
	* mail/testsuite/mail/read.exp
	* mail/testsuite/mail/write.exp
	* mh/tests/scan.at
	* readmsg/tests/all.at
	* testsuite/maildir/mbox1/new/1284628225.M20118P3883Q2.Trurl
	* testsuite/maildir/mbox1/new/1284628225.M21284P3883Q3.Trurl
	* testsuite/maildir/mbox1/new/1284628225.M22502P3883Q4.Trurl
	* testsuite/mh/mbox1/3
	* testsuite/mh/mbox1/4
	* testsuite/mh/mbox1/5
	* testsuite/mime.at
	* testsuite/spool/mbox
	* testsuite/spool/mbox1
	* testsuite/spool/relational.mbox

2010-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document null streams.

	* doc/texinfo/nullstream.texi: New file. 
	* mh/mh_init.c (mh_real_install): Use mu_stream_t instead of
	FILE.
	* mh/mh_whatnow.c (_whatnow): Likewise.

2010-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	anno: Minor improvements.

	* mh/mh_init.c (mh_init): Make sure stdin is open.
	* mh/anno.c (main): Use mu_stream_t to read the answer from
	stdin. Do not display prompt if stdin is not connected to a
	tty.
	* mh/tests/anno.at: New testcase.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add anno.at
	* mh/tests/testsuite.at: Include anno.at. 
	* doc/texinfo/mu-mh.texi: Document the changes in the behavior
	of anno.

2010-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhl: Improve backward compatibility.  Provide a test case.

	Mhl now accepts the traditional use of "ignores=", i.e. as a
	single statement on a line and without double-quotes around the
	argument.

	Additional quotes around variable values are not needed in most
	cases.

	The name of a component is not printed if that component is not
	present.

	The offset variable works as in MH and nmh.

	* mh/mh_list.c (parse_variable): Accept traditional use of
	"ignores=", as a single statement on a line, without
	double-quotes around the argument.
	(mhl_format_compile): Use mu_streams instead of FILE. Fix line
	counting.
	(header_is_printed, want_header): Last argument is const char
	*.
	(ovf_print): Move to the specified offset no matter what the
	value of prefix is.
	(print_component_name): New function.
	(eval_component): Call print_component_name and newline, if
	necessary
	(eval_body): Likewise.
	(eval_extras): Likewise.
	(eval_comp): Do not print component name, leave that to the
	called function. Ditto for the trailing newline.
	* mh/mhl.c: Ignore empty moreproc value.
	* mh/mhl.format: Remove extra double-quotes. 
	* mh/tests/mhl.at: New testcase.
	* mh/tests/Makefile.am (TESTSUITE_AT): Add mhl.at
	* mh/tests/testsuite.at: Include mhl.at 
	* libmailutils/string/wordsplit.c (scan_qstring): Force
	_WSNF_EMPTYOK.
	(mu_wordsplit_len): Make sure the tail element is not joinable
	* libmailutils/tests/wordsplit.at: Test these changes. 
	* doc/texinfo/mu-mh.texi: Update the description of mhl.

2010-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add MH testsuite.

	* configure.ac (mh/tests): New testdir
	* mh/Makefile.am (SUBDIRS): Add tests 
	* tests/Makefile.am: New file.
	* mh/tests/Makefile.am: New file.
	* mh/tests/atlocal.in: New file.
	* mh/tests/folder.at: New file.
	* mh/tests/inc.at: New file.
	* mh/tests/mark.at: New file.
	* mh/tests/mhparam.at: New file.
	* mh/tests/mhpath.at: New file.
	* mh/tests/refile.at: New file.
	* mh/tests/rmf.at: New file.
	* mh/tests/rmm.at: New file.
	* mh/tests/scan.at: New file.
	* mh/tests/testsuite.at: New file.
	* mh/tests/.gitignore: New file. 
	* testsuite/testsuite.inc (MUT_MBCOPY): Work correctly if DST
	is a directory name (for MH and maildir formats). 
	* mh/folder.c (action_list): Treat empty value as equal to no
	value.
	* mh/install-mh.c (main): Honor MH environment variable.
	* mh/mh_ctx.c (mh_context_read, mh_context_write): Use MU
	streams instead of stdio FILE.
	(mh_context_iterate): Add error checking. Do not coredump on
	NULL header.
	* mh/mh_global.c (_mh_init_global_sequences): Destroy
	sequences.
	* mh/TODO: Update. 
	* libmailutils/stream/message_stream.c (copy_trimmed_value):
	New static function.
	(scan_stream): Strip final newline from the saved envelope
	values. 
	* mu/Makefile.am (BUILD_SOURCES, EXTRA_DIST): Add mu-setup.c
	and mu-setup.h.

2010-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	mhn: optimize using new API.

	* mh/mhn.c (_get_hdr_value): Remove. All callers modified to
	use mu_header_aget_value_unfold instead.
	(mhn_message_size): Type of 2nd arg is mu_off_t *. Use null
	stream & stream stats in realsize mode.
	(list_handler): Fix rounding of the message size.
	(copy_header): Use mu_header_sget* to avoid unnecessary memory
	allocations.

2010-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve stream statistics interface. Introduce "null stream".

	* include/mailutils/stream.h (MU_IOCTL_NULLSTREAM_SET_PATTERN)
	(MU_IOCTL_NULLSTREAM_SET_PATCLASS)
	(MU_IOCTL_NULLSTREAM_SETSIZE)
	(MU_IOCTL_NULLSTREAM_CLRSIZE): New ioctl opcodes.
	(mu_nullstream_pattern): New struct.
	(MU_STREAM_STAT_IN,MU_STREAM_STAT_OUT)
	(MU_STREAM_STAT_READS,MU_STREAM_STAT_WRITES)
	(MU_STREAM_STAT_SEEKS,_MU_STREAM_STAT_MAX): New defines.
	(MU_STREAM_STAT_MASK): New macro.
	(MU_STREAM_STAT_MASK_ALL): New define.
	(mu_stream_stat_buffer): New typedef. (mu_stream_set_stat,
	mu_stream_get_stat)
	(mu_nullstream_create): New protos.
	(mu_stream_bytes_in, mu_stream_bytes_out): Remove protos. 
	* include/mailutils/sys/nullstream.h: New file.
	* include/mailutils/sys/stream.h (_mu_stream) <bytes_in>,
	<bytes_out>: Remove.
	<statmask,statbuf>: New members.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	nullstream.h. 
	* libmailutils/stream/nullstream.c: New file.
	* libmailutils/stream/stream.c (_stream_read, _stream_write)
	(_stream_seek, _stream_stat_incr): New macros.
	(_stream_fill_buffer, mu_stream_seek) (_stream_read_unbuffered)
	(_stream_write_unbuffered): Use _stream_read, _stream_write and
	_stream_seek instead of calling the corresponding methods
	directly.
	(mu_stream_bytes_in, mu_stream_bytes_out): Remove.
	(mu_stream_unref): Clear statbuf, if provided.
	(mu_stream_set_stat, mu_stream_get_stat): New functions. 
	* libmailutils/stream/Makefile.am (libstream_la_SOURCES): Add
	nullstream.c. 
	* libmailutils/stream/fltstream.c (filter_wr_close): Check for
	fs->eof. 
	* examples/base64.c (c_copy): Use new statistics interface.
	* libmailutils/tests/fltst.c: Likewise.

2010-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	attachment.c: redesign/simplify using the new API.

	* libmailutils/mime/attachment.c (BUF_SIZE): Remove.
	(_mu_mime_io_buffer)<buf, bufsize>: Remove members.
	(MSG_HDR): Remove.
	(mu_message_create_attachment): Use mu_asprintf instead of
	manually crafting the string. (mu_mime_io_buffer_set_size)
	(mu_mime_io_buffer_get_size): Remove.
	(mu_message_save_attachment) (mu_message_encapsulate)
	(mu_message_unencapsulate): Use mu_header_sget to avoid
	unnecessary memory allocations. Use mu_stream_copy instead of
	(ineffective) loops. 
	* include/mailutils/message.h (mu_mime_io_buffer_set_size)
	(mu_mime_io_buffer_get_size): Remove prototypes.
	* include/mailutils/header.h (MU_HEADER_RESENT_SENDER)
	(MU_HEADER_CONTENT_TRANSFER_ENCODING) (MU_HEADER_DELIVERY_DATE)
	(MU_HEADER_ENVELOPE_TO): Normalize spelling.

2010-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	filter subsystem: bugfixes.

	* include/mailutils/sys/filter.h (_mu_filter_stream)<eof>: New
	member.
	* libmailutils/filter/binflt.c (_bit8_filter): Change name
	initializer to "8bit".
	(_bit7_filter): Change name initializer to "7bit".
	* libmailutils/filter/filter.c (mu_filter_create): Limit line
	length for encoding streams only.
	* libmailutils/stream/fltstream.c (filter_read): Use fs->eof
	instead of the regular stream EOF marker.
	* libmailutils/stream/stream.c (mu_stream_eof): Bugfix: take
	into account eventual buffered data.
	(_stream_read_unbuffered): Call mu_stream_eof instead of
	checking the _MU_STR_EOF bit.

2010-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap client: implement login and id commands.

	* libproto/imap/id.c: New file.
	* libproto/imap/login.c: New file.
	* libproto/imap/Makefile.am: Add new files.
	* libproto/imap/capability.c (mu_imap_capability): Clear
	MU_IMAP_RESP before reading response. Add MU_WRDSF_QUOTE to
	mu_wordsplit flags.
	* libproto/imap/err.c (_mu_imap_seterrstr): Bugfix: initialize
	imap->errstr.
	* libproto/imap/logout.c (mu_imap_logout): Clear MU_IMAP_RESP
	before reading response.
	* libproto/imap/response.c (_mu_imap_response): Set error
	string.
	* mu/imap.c (com_login, com_id): New functions.
	(imap_comtab) <login, id>: New keywords.

2010-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure stream->offset points to the position in stream
	corresponding to the start of the buffer.

	* libmailutils/stream/stream.c (_stream_fill_buffer): Keep
	track of the current offset.
	(mu_stream_seek): avoid unnecessary seeks.
	(_stream_skip_input_bytes): Call _stream_flush_buffer before
	_stream_fill_buffer.
	(_stream_write_unbuffered): Do not modify current offset.
	(mu_stream_read,mu_stream_write): For unbuffered streams,
	modify current offset after invoking the corresponding I/O
	call.
	(_stream_scandelim): Call _stream_flush_buffer before
	_stream_fill_buffer.

2010-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the "UNIX mailbox first message symptom".

	UFMS, or "UNIX mailbox first message symptom", is a
	long-standing bug that existed in all previous versions of
	Mailutils: under certain circumstances, a fragment of the
	message headers would get prepended to the body of the very
	first message in a UNIX mailbox. See the detailed description
	in testsuite/ufms.c.

	Along with fixing this bug, this change also ensures a proper
	restoring of UIDs from UNIX mailboxes.

	* libproto/mbox/mbox.c (_msg_body_setup): Call
	mu_body_clear_modified after constructing the body.
	(new_message): Ditto for mu_message_clear_modified.
	(mbox_reset): Rewrite. Drop all cached messages and rescan
	entire mailbox to avoid the "1st message symptom".
	(mbox_expunge0): Change the call to mbox_reset.
	* libproto/mbox/mboxscan.c (IS_X_UID, IS_X_IMAPBASE): New
	macros.
	(mbox_scan_internal): Change handling of min_uid. Attempt to
	get UID and imapbase from the corresponding message headers.
	(mbox_scan0): Reflect the above changes. 
	* testsuite/.gitignore: Add ufms.
	* testsuite/Makefile.am (noinst_PROGRAMS): Add ufms.
	(TESTSUITE_AT): Add ufms.at.
	* testsuite/testsuite.at: Include ufms.at.
	* testsuite/ufms.at: New test case.
	* testsuite/ufms.c: New test program. 
	* imap4d/testsuite/imap4d/expunge.exp: Fix UIDNEXT expectation.

2010-11-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Begin imap client implementation.

	* include/mailutils/imap.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	imap.h 
	* libproto/imap/capability.c: New file.
	* libproto/imap/capatst.c: New file.
	* libproto/imap/carrier.c: New file.
	* libproto/imap/connect.c: New file.
	* libproto/imap/create.c: New file.
	* libproto/imap/destroy.c: New file.
	* libproto/imap/disconnect.c: New file.
	* libproto/imap/err.c: New file.
	* libproto/imap/fake-folder.c: New file.
	* libproto/imap/logout.c: New file.
	* libproto/imap/response.c: New file.
	* libproto/imap/state.c: New file.
	* libproto/imap/tag.c: New file.
	* libproto/imap/trace.c: New file.
	* libproto/imap/Makefile.am (libmu_imap_la_SOURCES):
	Temporarily remove folder.c, mbox.c and url.c. Add new files. 
	* mu/getarg.c: New file.
	* mu/imap.c: New file.
	* mu/verbose.c: New file.
	* mu/Makefile.am (IDLE_MODULES): New variable.
	(IMAP_C): New variable.
	(MODULES): Add $(IMAP_C).
	(mu_SOURCES): Add getarg.c and verbose.c
	(mu-setup.h, mu-setup.c): Add IDLE_MODULES both to the
	dependencies and to the mu-setup.awk command line.
	* mu/mu-setup.awk: New keyword mu-cond.
	* mu/pop.c: Add mu-cond keyword. 
	* include/mailutils/sys/imap.h: Rewrite.
	* include/mailutils/sys/pop3.h (MU_POP3_CHECK_EAGAIN): Take
	into account MU_ERR_REPLY and MU_ERR_BADREPLY, which are
	recoverable errors. 
	* libmailutils/base/list.c (mu_list_clear): Return immediately
	if list is NULL.
	* libmu_auth/sql.c (sql_escape_string): Remove unused variable. 
	* libproto/pop/pop3_carrier.c (mu_pop3_get_carrier): Increase
	refcount on the returned stream.
	* libproto/pop/pop3_response.c (mu_pop3_response): Check POP3
	reply code.

2010-11-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve command module system in mu.  Add a `help' command.

	* mu/Makefile.am (MODULES): New variable. Put all commands
	there.
	(mu_SOURCES): Include $(MODULES).
	(EXTRA_DIST): Add mu-setup.h mu-setup.c mu-setup.awk
	(BUILT_SOURCES): New variable.
	(mu-setup.h, mu-setup.c): New goals. 
	* mu/mu.c (doc): Remove command description: it is generated
	automatically.
	(mu_help_filter): New function.
	(argp): Use mu_help_filter.
	(mutool_action_tab): Remove.
	(mutool_nosys,find_action): Remove.
	(mu_help): New function.
	(main): Use dispatch_find_action.
	* mu/mu.h: Include mailutils/types.h (mutool_pop,
	mutool_filter, mutool_flt2047) (mutool_info, mutool_query,
	mutool_acl)
	(mutool_wicket, mutool_ldflags, mutool_cflags): Remove protos.
	(mu_help, dispatch_find_action, dispatch_docstring): New
	protos. 
	* mu/acl.c: Add MU Setup comment.
	* mu/cflags.c: Likewise.
	* mu/filter.c: Likewise.
	* mu/flt2047.c: Likewise.
	* mu/info.c: Likewise.
	* mu/ldflags.c: Likewise.
	* mu/pop.c: Likewise.
	* mu/query.c: Likewise.
	* mu/wicket.c: Likewise. 
	* mu/mu-setup.awk: New file.
	* mu/help.c: New file.
	* mu/dispatch.c: New file. 
	* mu/.gitignore: Add mu-status.[ch] 
	* po/POTFILES.in: Add mu/dispatch.c and mu/help.c.

2010-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove the --license option.

	It is not needed because the --version option shows a terse
	info about the license, as well as a link to its full text.

2010-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* po/POTFILES.in: Fix erroneous filenames.

2010-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use full buffering for streamrefs.

	* libmailutils/stream/streamref.c
	(mu_streamref_create_abridged): Set full buffering by default.

2010-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* include/mailutils/wordsplit.h (mu_wordsplit_free_words): New
	proto.
	* libmu_auth/sql.c: Include wordsplit.h

2010-10-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove all uses of vartab, replacing them with wordsplit.

	* libmailutils/string/wordsplit.c (mu_wordsplit_init): Call
	mu_wordsplit_free_words to reclaim the memory.
	(mu_wordsplit_free_words): New function.
	(mu_wordsplit_free): Use mu_wordsplit_free_words. 
	* imap4d/imap4d.c (imap4d_session_setup0): Use wordsplit
	instead of vartab.
	* imap4d/imap4d.h: Don't include vartab.h.
	* imap4d/preauth.c (do_preauth_ident): Use mu_str_stripws
	instead of the static trimcrlf, which is removed.
	(do_preauth_program): Use wordsplit instead of vartab and
	mu_prog_stream_create instead of popen.
	* libmailutils/mailbox/mbx_default.c: Include nls.h Don't
	include vartab.h
	(mu_construct_user_mailbox_url): Use wordsplit instead of
	vartab.
	* libmailutils/server/acl.c (expand_arg): Use wordsplit instead
	of vartab.
	* libmu_auth/ldap.c (_mu_ldap_search):L Likewise.
	* libmu_auth/radius.c (_expand_query): Likewise.
	* libmu_auth/sql.c (mu_sql_expand_query): Likewise.
	* libproto/mailer/prog.c (_expand_sender, _expand_rcpt):
	Rewrite.
	(url_to_argv): : Use wordsplit instead of vartab. 
	* po/POTFILES.in: Add more files.

2010-10-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use wordsplit to expand command prompt in mu.

	* mu/mu.h (mutool_prompt_vartab): Remove.
	(mutool_prompt_env): New extern.
	* mu/pop.c (pop_prompt_vartab): Rewrite as pop_prompt_env. All
	callers changed.
	* mu/shell.c (mutool_prompt_vartab): Remove variable.
	(mutool_prompt_env): New variable.
	(expand_prompt): Remove function.
	(input_line_interactive): Use mu_wordsplit to expand command
	prompt.

2010-10-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement a Key/Value environment.

	K/V is a new type of environment where variable names (keys)
	and values are stored separately in adjacent environment
	elements. This should simplify wordsplit initialization in many
	cases.

	* include/mailutils/wordsplit.h (MU_WRDSF_ENV_KV): New flag.
	* libmailutils/string/wordsplit.c (mu_wordsplit_find_env):
	Implement search in a K/V environment.
	* libmailutils/tests/wordsplit.at: Test K/V environments.
	* libmailutils/tests/wsp.c (bool_keytab): Implement env_kv.
	(make_env_kv): New function.
	(main): Convert environment if env_kv is given.

2010-10-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in wordsplit.  Use wordsplit instead of vartab in
	movemail.

	Eventually this will lead to vartab fading out until it is
	removed in some point in the future. Wordsplit provides a much
	better variable substitution mechanism.

	* include/mailutils/wordsplit.h (mu_wordsplit) <ws_getvar>:
	Change signature.
	<ws_closure>: New member.
	(MU_WRDSF_CLOSURE): New flag.
	* libmailutils/string/wordsplit.c (mu_wordsplit_init):
	Initialize ws_closure to NULL, unless MU_WRDSF_CLOSURE is set.
	Do not modify ws_wordn if MU_WRDSF_DOOFFS is set.
	(wsnode_remove): Clear _WSNF_JOIN on the previous node if the
	node being deleted is the last one in chain.
	(expvar): Pass ws_closure as 3rd argument to ws_getvar. Insert
	a NULL node if the variable is not defined. 
	* movemail/movemail.c: Use wordsplit instead of vartab. Note a
	side effect: the "source:*" and "dest:*" variables are now
	written as "source_*" and "dest_*", correspondingly.
	(movemail_getvar_closure): New structure.
	(DCL_VTX): Remove macro and its uses.
	(get_url_part, movemail_getvar): New functions.
	(set_program_id): Rewrite using wordsplit.

2010-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add wordsplit module.

	The wordsplit module (borrowed from another project of mine,
	called 'grecs') provides a flexible and powerful mechanism for
	parsing input in a way similar to posix-shell. In particular,
	the POSIX function wordexp is a subset of the wordsplit
	functionality.

	The argcv module is now deprecated.

	* include/mailutils/wordsplit.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	wordsplit.h
	* libmailutils/string/wordsplit.c: New file.
	* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
	wordsplit.c.
	* include/mailutils/argcv.h (mu_argcv_join): New proto.
	(mu_argcv_get, mu_argcv_get_n, mu_argcv_get_np)
	(mu_argcv_unquote_char, mu_argcv_quote_char)
	(mu_argcv_quoted_length, mu_argcv_unquote_copy)
	(mu_argcv_quote_copy): Mark as deprecated.
	* include/mailutils/mailutils.h: Include wordsplit.h. 
	* libmailutils/tests/wsp.c: New file.
	* libmailutils/tests/.gitignore: List wsp.
	* libmailutils/tests/wordsplit.at: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add wsp
	(TESTSUITE_AT): Add wordsplit.at.
	* libmailutils/tests/argcv.c: Define MU_ARCGV_DEPRECATED to
	avoid deprecation warnings.
	* libmailutils/tests/testsuite.at: Include wordsplit.at. 
	* libmailutils/base/argcvfree.c: New file.
	* libmailutils/base/argcvjoin.c: New file.
	* libmailutils/base/argcvrem.c: New file.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Add new
	files. 
	* libmailutils/base/argcv.c: Define MU_ARCGV_DEPRECATED to
	avoid deprecation warnings. (argcv_string, argcv_free,
	argv_free)
	(mu_argcv_remove): Rewrite in separate modules. 
	* comsat/comsat.h: Include wordsplit.h.
	* imap4d/imap4d.h: Likewise.
	* mail/mail.h: Likewise.
	* mh/mh.h: Likewise.
	* readmsg/readmsg.h: Likewise. 
	* comsat/action.c: Use wordsplit.
	* imap4d/fetch.c: Likewise.
	* lib/mailcap.c: Likewise.
	* libmailutils/auth/mu_auth.c: Likewise.
	* libmailutils/base/mutil.c: Likewise.
	* libmailutils/cfg/format.c: Likewise.
	* libmailutils/cfg/lexer.l: Likewise.
	* libmailutils/cfg/parser.y: Likewise.
	* libmailutils/diag/gdebug.c: Likewise.
	* libmailutils/mailer/mailer.c: Likewise.
	* libmailutils/server/acl.c: Likewise.
	* libmailutils/stream/prog_stream.c: Likewise.
	* libmailutils/tests/listop.c: Likewise.
	* libmailutils/url/create.c: Likewise.
	* libmu_auth/ldap.c: Likewise.
	* libmu_auth/radius.c: Likewise.
	* libmu_sieve/sieve.l: Likewise.
	* libproto/mailer/mbox.c: Likewise.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/mailer/smtp_gsasl.c: Likewise.
	* mail/mailline.c: Likewise.
	* mail/mailvar.c: Likewise.
	* mail/send.c: Likewise.
	* mail/util.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/mh_alias.y: Likewise.
	* mh/mh_argp.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mh_list.c: Likewise.
	* mh/mh_msgset.c: Likewise.
	* mh/mh_sequence.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* mh/mh_sequence.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/send.c: Likewise.
	* movemail/movemail.c: Likewise.
	* mu/shell.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* testsuite/smtpsend.c: Likewise. 
	* pop3d/popauth.c: Use wordsplit. Use simplified input format
	(username and password delimited by any amount of whitespace).
	Read/produce old format if invoked with the --compatibility
	option. 
	* examples/aclck.c: Use wordsplit instead of argcv.
	* examples/header.c: Likewise.
	* examples/mta.c: Likewise.
	* examples/.gitignore: Remove pop3client.
	* examples/Makefile.am: Remove pop3client. 
	* po/POTFILES.in: Add new files.

2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix allowed URL parts for local mailboxes.

	Parameters are allowed: they are used to expand hashed or
	indexed mailbox names.

	* libproto/maildir/folder.c (_maildir_record): Add
	MU_URL_PARAM.
	* libproto/mbox/folder.c (_mbox_record): Likewise.
	* libproto/mh/folder.c (_mh_record): Likewise.

2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_asprintf and mu_vasnprintf instead of asprintf and
	vasprintf.

	*gnulib.modules (snprintf, vasprintf): Remove.
	*sieve/tests/reject.at: Use AT_PACKAGE_VERSION instead of the
	hardcoded version number.
	*lib/mu_asprintf.h: Remove. 
	* imap4d/auth_gss.c: Replace asprintf with mu_asprintf and
	vasprintf by mu_vasnprintf.
	* guimb/guimb.h: Likewise.
	* imap4d/imap4d.h: Likewise.
	* imap4d/unsubscribe.c: Likewise.
	* lib/Makefile.am
	* lib/mailcap.c: Likewise.
	* libmu_argp/muinit.c: Likewise.
	* maidag/deliver.c: Likewise.
	* maidag/maidag.h: Likewise.
	* mail/escape.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/mail.h: Likewise.
	* mail/util.c: Likewise.
	* mail/write.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/mh.h: Likewise.
	* mh/mh_alias.l: Likewise.
	* mh/mh_format.c: Likewise.
	* mh/mh_getopt.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mh_msgset.c: Likewise.
	* mh/mh_sequence.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/send.c: Likewise.
	* mimeview/mimetypes.l: Likewise.
	* mimeview/mimetypes.y: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* mu/ldflags.c: Likewise.
	* pop3d/expire.c: Likewise.
	* pop3d/pop3d.h: Likewise.
	* sieve/sieve.c: Likewise.

2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove tcp wrapper configuration keywords that did not actually
	change anything.

	The allow_severity and deny_severity variables are valid only
	for tcpd and related applications, hosts_access does not use
	them.

	* lib/tcpwrap.c (mu_tcp_wrapper_cb_hosts_allow_syslog)
	(mu_tcp_wrapper_cb_hosts_deny_syslog): Remove functions.
	(allow_severity, deny_severity): Remove variables.
	(tcpwrapper_param): Remove allow-syslog-priority and
	deny-syslog-priority.

2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.9.90.

	* NEWS, configure: Set version number to 2.9.90 to avoid
	confusion with 2.2.x branch.

2010-10-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite URL support.

	The purpose is to make it modular and flexible. URLs are parsed
	out as they are created. Missing URL parts can be supplied via
	a "URL hint" at creation time (similar to the approach used in
	creating mu_address_t). Ports can be specified either as
	numbers or as service names. Original port string
	representation can be retrieved from the URL, as well as its
	numeric value.

	* libmailutils/url/accessor.h: New file.
	* libmailutils/url/copy.c: New file.
	* libmailutils/url/create.c: New file.
	* libmailutils/url/decode.c: New file.
	* libmailutils/url/destroy.c: New file.
	* libmailutils/url/dup.c: New file.
	* libmailutils/url/expand.c: New file.
	* libmailutils/url/flag.c: New file.
	* libmailutils/url/get-auth.c: New file.
	* libmailutils/url/get-host.c: New file.
	* libmailutils/url/get-param.c: New file.
	* libmailutils/url/get-path.c: New file.
	* libmailutils/url/get-portstr.c: New file.
	* libmailutils/url/get-query.c: New file.
	* libmailutils/url/get-scheme.c: New file.
	* libmailutils/url/get-secret.c: New file.
	* libmailutils/url/get-user.c: New file.
	* libmailutils/url/match.c: New file.
	* libmailutils/url/port.c: New file.
	* libmailutils/url/scheme.c: New file.
	* libmailutils/url/uplevel.c: New file.
	* libmailutils/url/urlstr.c: New file. 
	* configure.ac (AC_CONFIG_FILES): Add libmailutils/url/Makefile
	* libmailutils/Makefile.am (SUBDIRS): Add url.
	(libmailutils_la_LIBADD): Link with liburl.
	* libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove
	url.c
	* libmailutils/base/url.c: Remove. 
	* libmailutils/string/Makefile.am (libstring_la_SOURCES): Add
	xdecode.c
	* libmailutils/string/xdecode.c: New file. 
	* include/mailutils/sys/url.h (_mu_url): Change type to short.
	<_get_port>: Change second argument to unsigned.
	<_get_portstr>: New method.
	* include/mailutils/url.h (MU_URL_SCHEME): New flag.
	(MU_URL_PARSE_HEXCODE, MU_URL_PARSE_HIDEPASS)
	(MU_URL_PARSE_PORTSRV, MU_URL_PARSE_PORTWC)
	(MU_URL_PARSE_PIPE, MU_URL_PARSE_SLASH): New flags.
	(mu_url_create_hint, mu_url_copy_hints): New prototypes.
	(mu_url_parse): Remove.
	(mu_url_get_port): Change second argument to unsigned.
	(mu_url_decode_len,mu_url_decode): Remove.
	(mu_url_decode): New proto. (mu_url_sget_portstr,
	mu_url_aget_portstr)
	(mu_url_get_portstr): New protos. 
	* include/mailutils/util.h (mu_str_url_decode)
	(mu_str_url_decode_inline): New protos.
	* libproto/pop/mbox.c (pop_open): Port is unsigned. 
	* libproto/imap/folder.c: Use MU_URL_SCHEME in url_may_have.
	* libproto/maildir/folder.c: Likewise.
	* libproto/mailer/prog.c: Likewise.
	* libproto/mailer/remote.c: Likewise.
	* libproto/mailer/sendmail.c: Likewise.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/mbox/folder.c: Likewise.
	* libproto/mh/folder.c: Likewise.
	* libproto/nntp/folder.c: Likewise.
	* libproto/pop/folder.c: Likewise. 
	* imap4d/imap4d.c: Remove calls to mu_url_parse.
	* libmailutils/base/registrar.c: Likewise.
	* libmailutils/base/wicket.c: Likewise.
	* libmailutils/mailbox/folder.c: Likewise.
	* libmailutils/mailbox/mailbox.c: Likewise.
	* libmailutils/mailer/mailer.c: Likewise.
	* libmailutils/tests/url-parse.c: Likewise.
	* libmailutils/tests/wicket.c: Likewise.
	* libproto/mailer/smtp_auth.c: Likewise.
	* maidag/deliver.c: Likewise.
	* mu/wicket.c: Likewise. 
	* libmailutils/mime/mimehdr.c (mu_mimehdr_decode_param): Use
	mu_str_url_decode, instead of mu_url_decode.
	* libmailutils/stream/tcp.c (_tcp_instance)<port>: Change type
	to unsigned short. All uses updated.
	(mu_tcp_stream_create_with_source_ip)
	(mu_tcp_stream_create_with_source_host)
	(mu_tcp_stream_create): Port is unsigned.
	* include/mailutils/stream.h
	(mu_tcp_stream_create_with_source_ip)
	(mu_tcp_stream_create_with_source_host)
	(mu_tcp_stream_create): Port is unsigned.
	* include/mailutils/cpp/url.h (get_port): Return unsigned.
	* libmu_cpp/url.cc (get_port): Return unsigned.
	(parse): Empty function. Schedule for removal.
	* python/libmu_py/url.c (api_url_parse): Empty function.
	Schedule for removal.
	(api_url_get_port): Port is unsigned. 
	* libmailutils/base/wicket.c (mu_wicket_file_match_url)
	(mu_wicket_file_match_url): New parameter: parse_flags.
	* mu/wicket.c (wicket_match): Use parse_flags to control
	whether or not to show the plaintext password. 
	* doc/texinfo/url.texi: Update.

2010-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mh/mh_init.c (mh_safe_make_file_name): Avoid gcc warnings.

2010-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve URL matching code.

	* libmailutils/base/url.c (mu_url_matches_ticket): Use
	different weight values, depending on the missing part.
	* libmailutils/base/wicket.c (mu_wicket_stream_match_url):
	Refuse URLs that lack host and password parts.

2010-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Move `mailutils-config' functionality to `mu'.	Retain
	`mailutils-config' for backward compatibility.

	* config/.gitignore: Remove.
	* config/Makefile.am: Remove.
	* config/mailutils-config.c: Remove.
	* config/maint.mk: Remove.
	* config/mailutils.m4: Move to mu-aux/mailutils.m4
	* mu-aux/Makefile.am (m4datadir, dist_m4data_DATA): New
	variables. 
	* Makefile.am (SUBDIRS) <config>: Remove.
	* configure.ac (AC_CONFIG_FILES): Remove config. 
	* mu/mailutils-config: New file.
	* mu/cflags.c: New file.
	* mu/ldflags.c: New file.
	* mu/Makefile.am (dist_bin_SCRIPTS, EXTRA_DIST): Add
	mailutils-config.
	(mu_SOURCES): Add cflags.c and ldflags.c.
	(AM_CPPFLAGS): New variable.
	* mu/mu.c: Add new modes: cflags and ldflags.
	* mu/mu.h (mutool_ldflags, mutool_cflags): New protos.
	* po/POTFILES.in: Update.

2010-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	New `mu' mode: wicket.

	* mu/wicket.c: New file.
	* mu/mu.h (mutool_wicket): New proto.
	* mu/mu.c (mutool_action_tab): Add an entry for wicket mode.
	* mu/Makefile.am (mu_SOURCES): Add wicket.c
	* .gitignore: Update.

2010-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve the algorithm for URL look up in wickets.

	The new algorithm always returns the best match, i.e. the one
	with the smallest number of wildcard comparisons.

	* include/mailutils/auth.h (mu_wicket_stream_match_url)
	(mu_wicket_file_match_url): New protos. Remove unnecessary
	'extern' qualifiers.
	* include/mailutils/url.h (mu_url_is_ticket): Remove.
	(mu_url_matches_ticket): New proto.
	* libmailutils/base/url.c (mu_url_parse): Fix name corruption
	during password obfuscation.
	(defined): Remove static function.
	(mu_url_is_ticket): Remove function.
	(mu_url_matches_ticket): New function.
	* libmailutils/base/wicket.c (get_ticket_url): Remove.
	(mu_wicket_stream_match_url)
	(mu_wicket_file_match_url): New functions.
	(file_ticket_get_cred): Use mu_wicket_file_match_url. 
	* libmailutils/tests/wicket.c: New file.
	* libmailutils/tests/Wicketfile: New file.
	* libmailutils/tests/wicket.at: New file.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add wicket.
	(EXTRA_DIST): Add Wicketfile
	(TESTSUITE_AT): Add wicket.at
	* libmailutils/tests/testsuite.at: Include wicket.at
	* libmailutils/tests/.gitignore: Update.

2010-10-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve SMTP client.

	* include/mailutils/smtp.h (mu_smtp_dot): New proto.
	* libproto/mailer/smtp_dot.c: New file.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	smtp_dot.c.
	* libproto/mailer/smtp.c (smtp_send_message): Send RSET after
	an unexpected SMTP reply. Call mu_smtp_dot after successful
	sending.
	* libproto/mailer/smtp_data.c (_mu_smtp_data_end): Set state to
	MU_SMTP_DOT.
	* libproto/mailer/smtp_rset.c (mu_smtp_rset): Improve state
	selection algorithm.
	* libproto/mailer/smtp_send.c (mu_smtp_send_stream): Don't
	reset state: it is done by _mu_smtp_data_end.
	* testsuite/smtpsend.c (main): Call mu_smtp_dot after sending
	message.

2010-10-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for `notls' parameter in pop URLs.

	* libproto/pop/folder.c (_pop_record): Accept URL parameters.
	* libproto/pop/mbox.c (pop_open): Don't start TLS if the
	`notls' parameter is present in the URL.

2010-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve registrar/url interaction.  Fix SMTP URLs to comply to
	draft-earhart-url-smtp-00.  Minor fix in maidag (url mode).

	* include/mailutils/registrar.h (MU_RECORD_DEFAULT)
	(MU_RECORD_LOCAL): New flags.
	(_mu_record) <flags,url_may_have,url_must_have>: New members.
	Remove unnecessary externs.
	(mu_record_set_.*): Remove all protos.
	(mu_record_check_url, mu_registrar_test_local_url): New protos.
	* include/mailutils/sys/url.h (_mu_url) <flags>: New member.
	(MU_URL_USER, MU_URL_SECRET, MU_URL_AUTH) (MU_URL_HOST,
	MU_URL_PORT, MU_URL_PATH) (MU_URL_PARAM, MU_URL_QUERY)
	(MU_URL_CRED, MU_URL_INET, MU_URL_ALL): New flags.
	(mu_url_get_flags, mu_url_has_flag): New protos.
	* libmailutils/base/registrar.c (mu_record_set_.*): Remove all.
	(mu_record_check_url): New function.
	(mu_registrar_test_local_url): New function.
	* libmailutils/base/url.c (mu_url_copy0): Copy flags.
	(mu_url_parse): Use flags intead of inspecting each structure
	member. Set flags.
	(mu_url_get_flags, mu_url_has_flag): New functions.
	* libmailutils/diag/errors (MU_ERR_URL_MISS_PARTS)
	(MU_ERR_URL_EXTRA_PARTS): New error codes.
	* libmailutils/mailbox/folder.c (mu_folder_create_from_record):
	Check the URL using mu_record_check_url.
	* libproto/imap/folder.c (_imap_record, _imaps_record):
	Initialize new fields.
	* libproto/maildir/folder.c (_maildir_record): Likewise.
	* libproto/mbox/folder.c (_mbox_record): Likewise.
	* libproto/mh/folder.c (_mh_record): Likewise.
	* libproto/nntp/folder.c (_nntp_record): Likewise.
	* libproto/pop/folder.c (_pop_record, _pops_record): Likewise.
	* libproto/mailer/prog.c (_prog_record): Likewise.
	(_url_prog_init): Remove extra checks, rely on
	mu_record_check_url.
	* libproto/mailer/remote.c (_mu_remote_smtp_record)
	(_mu_remote_sendmail_record,_mu_remote_prog_record): Initialize
	new fields.
	* libproto/mailer/sendmail.c (_url_sendmail_init): Remove extra
	checks, rely on mu_record_check_url.
	(_sendmail_record): Initialize new fields.
	* libproto/nntp/url.c (url_nntp_destroy): Remove.
	(_nntp_url_init): Remove extra checks.
	* libproto/pop/url.c (url_pop_destroy): Remove.
	(_url_pop_init, _url_pops_init): Remove extra checks. 
	* libproto/mailer/smtp.c (_url_smtp_init): Remove extra checks.
	(_smtp_record): Initialize new fields.
	(smtp_mailer_add_auth_mech): New function.
	(smtp_open): Allow for auth= part before the host name. 
	* maidag/deliver.c (is_remote_url): New function.
	(do_delivery): Do not try to switch user privileges if the URL
	refers to a remote mailbox.
	* maidag/maidag.c (main): Initialize TLS.

2010-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide an easy way of setting sender/recipient addresses in
	smtp URLs.

	* libmailutils/mailer/mailer.c (_set_from): Parameter from= can
	be used to set the sender address explicitly.
	(_set_to): New function. Parameter to= sets recipient addresses
	explicitly.
	(create_part): Use _set_to.
	* libproto/mailer/mbox.c (remote_mbox_append_message): Use the
	to= parameter.

2010-10-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve the algorithm of obtaining sender name from messages.

	* include/mailutils/header.h: Remove unnecessary externs.
	(mu_url_sget_param, mu_url_aget_param): New protos.
	* libmailutils/base/url.c (mu_url_sget_param,
	mu_url_aget_param): New functions. 
	* libmailutils/mailbox/hdrfirst.c: New file.
	* libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add
	hdrfirst.c. 
	* libmailutils/mailbox/message.c (message_envelope_sender): Try
	to restore the envelope sender from X-Envelope-Sender,
	X-Envelope-From, X-Original-Sender, and From headers, in that
	order.
	* libmailutils/mailer/mailer.c (_set_from): Try to obtain
	sender from the message envelope. If that fails, fall back to
	the From header.
	* libproto/mailer/mbox.c (parse_received,
	guess_message_recipient): New static functions.
	(remote_mbox_append_message): Get recipient address from the
	first of X-Envelope-To, Delivered-To, X-Original-To headers, in
	that order. If that fails, try to deduce it from the Received
	header. If that fails too, fall back to the To header. If
	recipient-headers URL parameter is defined, its value (a
	comma-separated list of names) overrides this list. The
	strip-domain parameter, if present, instructs the function to
	strip domain part from the recipient address before resolving
	it. The domain parameter, if present, supplies the domain name
	which overrides the domain obtained from the URL.

2010-10-17  Wojciech Polak  <polak@gnu.org>

	Minor PEP 8 changes in Python API.

2010-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	movemail: accept "smtp://" and "sendmail://" as a destination
	mailbox.

	* movemail/Makefile.am (movemail_LDADD): Add MU_LIB_MAILER.
	* movemail/movemail.c: Register *all* mailbox formats,
	including remote ones.

2010-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	maidag/tests/forward.at: forgotten to add (see db1ee5e0a).

2010-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mu_unroll_symlink interface.

	* include/mailutils/util.h (mu_readlink): New function.
	(mu_unroll_symlink): Change prototype.
	* libmailutils/base/symlink.c (mu_qualify_link): Remove.
	(mu_readlink): New function.
	(mu_unroll_symlink): Rewrite. Don't use statically allocated
	buffers.
	* libmailutils/base/locker.c (mu_locker_create): Update calls
	to mu_unroll_symlink.

2010-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use mu_make_file_name where necessary.

	* comsat/action.c (run_user_action): Use mu_make_file_name.
	* imap4d/lsub.c (imap4d_lsub): Likewise.
	* imap4d/subscribe.c (imap4d_subscribe): Likewise.
	* imap4d/unsubscribe.c (imap4d_unsubscribe): Likewise.
	* libmailutils/base/filename.c (mu_get_full_path): Likewise.
	* libmailutils/base/tempfile.c (mu_tempfile): Likewise.
	* libmailutils/base/url.c (_url_path_default): Likewise.
	* libmu_auth/virtual.c (getpwnam_virtual)
	(mu_auth_virt_domain_by_name): Likewise.
	* libmu_sieve/extensions/vacation.c (check_db): Likewise.
	* libmu_sieve/sieve.l (_try_include): Likewise.
	* maidag/forward.c (maidag_forward): Likewise. 
	* mh/mh.h (mh_safe_make_file_name): New proto.
	* mh/mh_init.c (mh_audit_open,mh_get_dir)
	(mh_expand_name,mh_real_install): Use mh_safe_make_file_name.
	(mh_safe_make_file_name): New function.
	* mh/folder.c (read_seq_file, _scan): Use
	mh_safe_make_file_name.
	* mh/mh_global.c (mh_read_profile, _mh_init_global_sequences):
	Likewise.
	* mh/install-mh.c (main): Likewise.
	* mh/mhn.c (normalize_path, store_handler, main): Likewise.
	* mh/repl.c (make_draft): Likewise.
	* mh/rmf.c (rmf): Likewise.
	* mh/sortm.c (swap_message): Likewise.
	* mimeview/mimetypes.l (mimetypes_open): Likewise. 
	* lib/mailcap.c: Add error checking.

2010-10-10  Wojciech Polak  <polak@gnu.org>

	Update Python API and the examples.

	* python/libmu_py/folder.c (api_folder_set_stream): Remove.
	* python/libmu_py/message.c (api_message_set_stream): Remove.
	* python/libmu_py/stream.c (api_stream_ref, api_stream_unref):
	Add.
	(api_stream_sequential_readline, api_stream_sequential_write):
	Remove.

2010-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/base/getcwd.c: Add missing include file.

2010-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename mu_strcasestr to mu_c_strcasestr.

	* include/mailutils/cstr.h (mu_strcasestr): Rename to
	mu_c_strcasestr.
	* libmailutils/string/cstrcasestr.c: Likewise. All uses
	changed.

2010-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Split the mess in mutil.c into logically separated units.

	* libmailutils/base/mutil.c (mu_hex2ul, mu_hexstr2ul): Move to
	string/hexstr.c. (mu_get_homedir, mu_get_full_path)
	(mu_expand_path_pattern): Move to base/filename.c.
	(mu_getcwd): Move to base/getcwd.c.
	(mu_tilde_expansion): Move to base/tilde.c
	(mu_cpystr): Move to string/cpystr.c.
	(mu_get_host_name): Move to base/hostname.c.
	(mu_set_user_email,mu_set_user_email_domain)
	(mu_get_user_email_domain,mu_aget_user_email_domain)
	(mu_get_user_email,mu_normalize_path): Move to base/usremail.c.
	(mu_tempfile,mu_tempname): Move to base/tempfile.c.
	(mu_spawnvp): Move to base/spawnvp.c.
	(mu_qualify_link,mu_unroll_symlink): Move to base/symlink.c.
	(mu_rfc2822_references,mu_rfc2822_msg_id)
	(mu_rfc2822_in_reply_to): Move to base/msgid.c.
	(mu_strcasestr): Move to string/cstrcasestr.c.
	(mu_string_unfold): Move to string/unfold.c.
	(mu_true_answer_p): Move to string/trueans.c.
	(mu_scheme_autodetect_p): Move to base/schemeauto.c.
	(mu_fd_wait): Move to base/fdwait.c.
	(mu_set_default_fallback,mu_decode_filter): Move to
	filter/decode.c.
	(__argp_base_name): Move to lib/argp_base.c. 
	* libmailutils/base/fdwait.c: New file.
	* libmailutils/base/filename.c: New file.
	* libmailutils/base/getcwd.c: New file.
	* libmailutils/base/hostname.c: New file.
	* libmailutils/base/msgid.c: New file.
	* libmailutils/base/schemeauto.c: New file.
	* libmailutils/base/spawnvp.c: New file.
	* libmailutils/base/symlink.c: New file.
	* libmailutils/base/tempfile.c: New file.
	* libmailutils/base/tilde.c: New file.
	* libmailutils/base/usremail.c: New file.
	* libmailutils/base/Makefile.am: Add new files. 
	* libmailutils/filter/decode.c: New file.
	* libmailutils/filter/Makefile.am: Add new files. 
	* libmailutils/string/cpystr.c: New file.
	* libmailutils/string/cstrcasestr.c: New file.
	* libmailutils/string/hexstr.c: New file.
	* libmailutils/string/trueans.c: New file.
	* libmailutils/string/unfold.c: New file.
	* libmailutils/string/Makefile.am: Add new files. 
	* lib/argp_base.c: New file.
	* lib/Makefile.am: Add new files. 
	* include/mailutils/io.h: Include stdarg.h
	* include/mailutils/mutil.h: Rename to util.h. Reorder
	prototypes and declarations in logical groups. All uses
	changed. 
	* include/mailutils/cstr.h (mu_strcasestr): New proto, moved
	from include/mailutils/mutil.h.

2010-10-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix copyleft notices to follow the GNU standards.

2010-10-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reorganize libmailutils directory structure.

	* configure.ac (AC_CONFIG_FILES): Add libmailutils/ subdirs.
	* include/mailutils/Makefile.am: Update references to
	libmailutils.
	* po/POTFILES.in: Likewise.
	* libmailutils/.gitignore: Update.
	* libmailutils/Makefile.am: Use convenience libraries in
	subdirs. 
	* libmailutils/string/Makefile.am: New file.
	* libmailutils/cstrcasecmp.c: Move to libmailutils/string.
	* libmailutils/cstrlower.c: Likewise.
	* libmailutils/cstrupper.c: Likewise.
	* libmailutils/strltrim.c: Likewise.
	* libmailutils/strskip.c: Likewise.
	* libmailutils/stripws.c: Likewise.
	* libmailutils/strrtrim.c: Likewise.
	* libmailutils/asnprintf.c: Likewise.
	* libmailutils/asprintf.c: Likewise.
	* libmailutils/muctype.c: Likewise.
	* libmailutils/vasnprintf.c: Likewise.
	* libmailutils/mkfilename.c: Likewise. 
	* libmailutils/stream/Makefile.am: New file.
	* libmailutils/dbgstream.c: Move to libmailutils/stream.
	* libmailutils/file_stream.c: Likewise.
	* libmailutils/fltstream.c: Likewise.
	* libmailutils/iostream.c: Likewise.
	* libmailutils/mapfile_stream.c: Likewise.
	* libmailutils/memory_stream.c: Likewise.
	* libmailutils/message_stream.c: Likewise.
	* libmailutils/prog_stream.c: Likewise.
	* libmailutils/rdcache_stream.c: Likewise.
	* libmailutils/socket_stream.c: Likewise.
	* libmailutils/stdio_stream.c: Likewise.
	* libmailutils/stream.c: Likewise.
	* libmailutils/stream_printf.c: Likewise.
	* libmailutils/stream_vprintf.c: Likewise.
	* libmailutils/streamcpy.c: Likewise.
	* libmailutils/streamref.c: Likewise.
	* libmailutils/tcp.c: Likewise.
	* libmailutils/temp_file_stream.c: Likewise.
	* libmailutils/xscript-stream.c 
	* libmailutils/cfg/Makefile.am: New file.
	* libmailutils/cfg/.gitignore: New file.
	* libmailutils/cfg_driver.c: Move to libmailutils/cfg/driver.c.
	* libmailutils/cfg_format.c: Move to libmailutils/cfg/format.c.
	* libmailutils/cfg_lexer.l: Move to libmailutils/cfg/lexer.l.
	* libmailutils/cfg_parser.y: Move to libmailutils/cfg/parser.y.
	* libmailutils/gocs.c: Move to libmailutils/cfg/gocs.c. 
	* libmailutils/diag/Makefile.am: New file.
	* libmailutils/diag/.gitignore: New file.
	* libmailutils/debug.c: Move to libmailutils/diag.
	* libmailutils/diag.c: Likewise.
	* libmailutils/gdebug.c: Likewise.
	* libmailutils/errors: Likewise.
	* libmailutils/muerrno.cin: Likewise.
	* libmailutils/syslog.c: Likewise.
	* libmailutils/dbgstderr.c: Likewise.
	* libmailutils/dbgsyslog.c: Likewise. 
	* libmailutils/address/Makefile.am: New file.
	* libmailutils/address.c: Move to libmailutils/address.
	* libmailutils/parse822.c: Likewise. 
	* libmailutils/mailbox/Makefile.am: New file.
	* libmailutils/mailbox.c: Move to libmailutils/mailbox.
	* libmailutils/mbx_default.c: Likewise.
	* libmailutils/mbxitr.c: Likewise.
	* libmailutils/attribute.c: Likewise.
	* libmailutils/body.c: Likewise.
	* libmailutils/envelope.c: Likewise.
	* libmailutils/folder.c: Likewise.
	* libmailutils/hdritr.c: Likewise.
	* libmailutils/header.c: Likewise.
	* libmailutils/message.c: Likewise.
	* libmailutils/msgscan.c: Likewise. 
	* libmailutils/mailer/Makefile.am: New file.
	* libmailutils/mailer.c: Move to libmailutils/mailer.
	* libmailutils/progmailer.c: Likewise. 
	* libmailutils/mime/Makefile.am: New file.
	* libmailutils/attachment.c: Move to libmailutils/mime.
	* libmailutils/mime.c: Likewise.
	* libmailutils/mimehdr.c: Likewise. 
	* libmailutils/server/Makefile.am: New file.
	* libmailutils/acl.c: Move to libmailutils/server.
	* libmailutils/server.c: Likewise.
	* libmailutils/msrv.c: Likewise.
	* libmailutils/ipsrv.c: Likewise. 
	* libmailutils/auth/Makefile.am: New file.
	* libmailutils/auth.c: Move to libmailutils/auth.
	* libmailutils/mu_auth.c: Likewise.
	* libmailutils/system.c: Likewise. 
	* libmailutils/base/Makefile.am: New file.
	* libmailutils/base/.gitignore: New file.
	* libmailutils/alloc.c: Move to libmailutils/base.
	* libmailutils/amd.c: Likewise.
	* libmailutils/argcv.c: Likewise.
	* libmailutils/assoc.c: Likewise.
	* libmailutils/daemon.c: Likewise.
	* libmailutils/date.c: Likewise.
	* libmailutils/fgetpwent.c: Likewise.
	* libmailutils/freeitem.c: Likewise.
	* libmailutils/getpass.c: Likewise.
	* libmailutils/iterator.c: Likewise.
	* libmailutils/kwd.c: Likewise.
	* libmailutils/list.c: Likewise.
	* libmailutils/listlist.c: Likewise.
	* libmailutils/locale.c: Likewise.
	* libmailutils/locker.c: Likewise.
	* libmailutils/mailcap.c: Likewise.
	* libmailutils/md5.c: Likewise.
	* libmailutils/monitor.c: Likewise.
	* libmailutils/munre.c: Likewise.
	* libmailutils/mutil.c: Likewise.
	* libmailutils/nls.c: Likewise.
	* libmailutils/nullrec.c: Likewise.
	* libmailutils/observer.c: Likewise.
	* libmailutils/opool.c: Likewise.
	* libmailutils/parsedate.y: Likewise.
	* libmailutils/permstr.c: Likewise.
	* libmailutils/property.c: Likewise.
	* libmailutils/registrar.c: Likewise.
	* libmailutils/refcount.c: Likewise.
	* libmailutils/rfc2047.c: Likewise.
	* libmailutils/sha1.c: Likewise.
	* libmailutils/secret.c: Likewise.
	* libmailutils/ticket.c: Likewise.
	* libmailutils/url.c: Likewise.
	* libmailutils/vartab.c: Likewise.
	* libmailutils/version.c: Likewise.
	* libmailutils/wicket.c: Likewise.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	mu: compile pop support conditionally.

	* mu/Makefile.am [MU_COND_SUPPORT_POP]: Compile pop.c
	conditionally.
	* mu/mu.c (mutool_nosys): New function.
	(mutool_action_tab): Compile pop support conditionally.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	examples/mta.c: use streams instead of FILE; exit with codes
	from sysexits.h.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	maidag: improve forwarding capability, add a testcase for it.

	* maidag/forward.c (check_forward_permissions): Keep track of
	the processed files. Refuse to process a file twice.
	(process_forward): Rewrite using streams instead of FILE.
	(maidag_forward): Accept absolute file names (mainly for
	testing).
	* maidag/maidag.c (forward_checks): New keyword "owner".
	(cb2_forward_file_checks): New keyword "none".
	(main): Require at least one recipient in MDA mode.
	* maidag/maidag.h (FWD_OWNER): New mask.
	* maidag/tests/forward.at: New file.
	* maidag/tests/Makefile.am (TESTSUITE_AT): Add forward.at
	* maidag/tests/testsuite.at: Include forward.at.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mta simulator output.

	* examples/mta.c (mta_send): A line number refers to the start
	of each line, not end of it.
	* mail/testsuite/mail/send.exp: Reflect this change.
	* sieve/tests/redirect.at: Likewise.
	* sieve/tests/reject.at: Likewise.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	maidag: optimize mda mode.

	* maidag/deliver.c (make_tmp): Return mu_message_t. Use
	mu_stream_to_message function.
	(mda): Remove.
	(maidag_stdio_delivery): Inline mda.
	* maidag/maidag.h (mda): Remove.

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	maidag: remove `default' mode (superseded by --mda).

2010-10-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Maidag cleanup.

	* maidag/maidag.c (mda_mode,lmtp_mode,url_option): Remove.
	(maidag_mode): New variable.
	(parse_opt): The --lmtp, --url and --mda options set the
	delivery-mode configuration statement.
	(cb_delivery_mode): New callback.
	(maidag_cfg_param) <delivery-mode>: New statement.
	(main): Redo delivery mode selection.
	* maidag/maidag.h (maidag_mode): New enum.
	(maidag_mode): New extern.
	(mda_mode,lmtp_mode,url_option): Remove.
	(maidag_delivery_fn): New typedef.
	(maidag_stdio_delivery,mda): Change signature.
	(deliver_to_url, deliver_to_user): New prototypes. 
	* maidag/deliver.c (mda): Take delivery function as a
	parameter.
	(maidag_stdio_delivery): Likewise.
	(deliver_to_user): Rename to deliver_to_mailbox.
	(deliver_url): Rename to do_delivery.
	(deliver): Rename to deliver_to_url.
	(deliver_to_user): New function.
	* maidag/forward.c (process_forward): Use deliver_to_user.
	* maidag/lmtp.c (dot_deliver): Likewise.

2010-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve maidag, add testsuite.

	* configure.ac: Add maidag/tests
	* maidag/Makefile.am (SUBDIRS): Add tests.
	* maidag/deliver.c (make_tmp): Write a message delimiter.
	(is_remote_url, is_mailer_url): Remove.
	(deliver_url): Allow for URLs without user name.
	* maidag/lmtp.c (lmtp_set_privs): Empty group list means do not
	switch to any groups.
	* maidag/maidag.c (mda_mode): New variable.
	(options): New option --mda.
	(cb_group, cb2_group): Create the list even if it is empty.
	(main): Handle --mda. 
	* maidag/tests/.gitignore: New file.
	* maidag/tests/Makefile.am: New file.
	* maidag/tests/atlocal.in: New file.
	* maidag/tests/input.msg: New file.
	* maidag/tests/lmtp.at: New file.
	* maidag/tests/mda.at: New file.
	* maidag/tests/testsuite.at: New file.
	* maidag/tests/url-mbox.at: New file.
	* maidag/tests/input.msg: New file.

2010-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a silly copy-paste error.

2010-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement a filter for quoting ^From.  Use it for appending to
	UNIX mailboxes.

	* libmailutils/fromflt.c: New file.
	* libmailutils/Makefile.am (libmailutils_la_SOURCES): Add
	fromflt.c
	* libmailutils/tests/testsuite.at: Include fromflt.at.
	* include/mailutils/filter.h (mu_from_filter): New filter type.
	* libmailutils/filter.c (mu_filter_get_list): Register
	mu_from_filter. 
	* libmailutils/fromflt.at: New file.
	* libmailutils/tests/Makefile.am (TESTSUITE_AT): Add
	fromflt.at.
	* libmailutils/tests/base64d.at: Mention `filter' in the
	keywords.
	* libmailutils/tests/base64e.at: Likewise.
	* libmailutils/tests/fltst.c (main): Fix argc check. 
	* libproto/mbox/mbox.c (append_message_to_stream): Use "FROM"
	filter.

2010-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in stream subsystem.  Rewrite and optimize maidag lmtp
	mode using streams.

	* libmailutils/file_stream.c (mu_fd_stream_create): Mark stream
	as open, do not call mu_stream_open explicitly.
	* libmailutils/message_stream.c (mu_stream_to_message):
	Bugfixes, wrong owner given to mu_envelope_set_ calls.
	* libmailutils/stream.c (_MU_STR_FLUSH_ALL)
	(_MU_STR_FLUSH_KEEP): New macros for _stream_flush_buffer.
	(_stream_flush_buffer): Change the meaning of the last
	argument. All callers updated.
	(mu_stream_seek): Fix operation with MU_SEEK_END. Call
	_mu_stream_cleareof on success.
	(mu_stream_read): Call _stream_flush_buffer in buffered mode.
	(mu_stream_getdelim, mu_stream_readdelim): Call
	_stream_flush_buffer.
	* libmailutils/streamcpy.c (mu_stream_copy): Reset size if
	mu_stream_seek fails.
	* libmailutils/temp_file_stream.c (mu_temp_file_stream_create):
	Set full buffering mode by default. 
	* maidag/mailtmp.c: Remove.
	* maidag/Makefile.am (maidag_SOURCES): Remove mailtmp.c
	* po/POTFILES.in: Likewise.
	* maidag/deliver.c (make_tmp): Rewrite. Return mu_mailbox_t.
	All callers changed.
	* maidag/lmtp.c (lmtp_transcript): Remove static.
	(lmpt_transcript): New function.
	(lmtp_reply): Use mu_stream_t instead of FILE.
	(xlatnl): Remove. Superseded by mu_rtrim_cset and family.
	(mtmp, mbox): Remove globals.
	(mesg): New global. (cfun_unknown, cfun_mail_from,
	cfun_rcpt_to) (dot_temp_fail, dot_deliver, cfun_rset)
	(cfun_lhlo, cfun_quit, cfun_help): Use mu_stream_t instead of
	FILE.
	(cfun_data): Rewrite.
	(cfun_dot): Remove.
	(to_fgets): Rewrite using mu_stream_t.
	(lmtp_loop): Change signature. Rewrite using mu_stream_t.
	(lmtp_connection, maidag_lmtp_server): Update accordingly.
	* maidag/maidag.c (maidag_transcript): New global.
	(options, parse_opt): New option --transcript.
	* maidag/maidag.h (maidag_transcript): New extern.
	(mail_tmp_begin, mail_tmp_add_line, mail_tmp_finish)
	(mail_tmp_destroy): Remove.

2010-10-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve scripting in mu pop shell.

	* mu/pop.c (com_apop, com_pass): Require password in
	non-interactive mode.

2010-10-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* mu/shell.c (input_line_script): Use mu_getline.
	* libmu_argp/compat.c: Remove.
	* libmu_argp/Makefile.am: Remove compat.c
	* po/POTFILES.in: Likewise.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mu shell interface.

	* mu/mu.h (mutool_command) <doc>: Rename to docstring.
	<argdoc>: New member.
	* mu/pop.c (com_apop): 2nd arg (password) is optional. If not
	supplied, ask for it using the mu_getpass function.
	(pop_comtab): Add argdocs. Use N_ wrappers around translatable
	strings.
	* mu/shell.c (default_comtab: Add argdocs. Use N_ wrappers
	around translatable strings.
	(print_comtab): Rewrite.
	(shell_history): Use pager.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor bugfixes in pop client code.

	* libproto/pop/pop3_carrier.c (mu_pop3_set_carrier): Switch to
	MU_POP3_CONNECT state.
	* libproto/pop/pop3_disconnect.c (mu_pop3_disconnect): Check if
	the stream is actually open before trying to close it.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a missing function.

	* libmailutils/strskip.c (mu_str_skip_cset): New function.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement echo control on fd streams.  Implement mu_getpass
	function.

	* configure.ac: Test for tcgetattr and tcsetattr.
	* gnulib.modules (getpass-gnu): Remove.
	* include/mailutils/mutil.h (mu_getpass): New proto.
	* include/mailutils/stream.h (MU_IOCTL_GET_ECHO)
	(MU_IOCTL_SET_ECHO): New ioctls.
	* include/mailutils/sys/file_stream.h
	(_MU_FILE_STREAM_ECHO_OFF): New flag.
	(_mu_file_stream) <echo_state>: New member.
	* libmailutils/getpass.c: New file.
	* libmailutils/Makefile.am (libmailutils_la_SOURCES): Add
	getpass.c.
	* libmailutils/file_stream.c (fd_done): Free echo_state.
	(fd_ioctl): Implement MU_IOCTL_GET_ECHO and MU_IOCTL_SET_ECHO.
	* mu/mu.h (mustrin): New extern.
	* mu/pop.c (com_pass): Use mu_getpass.
	* mu/shell.c (mustrin): New variable.
	(readline): Use mu_stream_getline instead of getline.
	(mutool_shell): Create mustrin.
	* pop3d/popauth.c (options): Fix typo.
	(fill_pass): Use mu_getpass.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement pager in mu shell.

	* mu/mu.h (mutool_shell_interactive): New extern.
	(mutool_open_pager): New proto.
	* mu/pop.c (com_list, com_top, com_retr): Use pager.
	* mu/shell.c (mutool_shell_interactive, mustrout): New
	variables.
	(print_comtab, print_help): Print to stream.
	(shell_help): Use pager if necessary.
	(mutool_open_pager): New function.
	(mutool_shell): Create mutool_stream_out and destroy it before
	returning.
	(all functions): Use mu_stream_printf instead of printf.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove the use of MAXHOSTNAMELEN macro.

	* comsat/comsat.c (hostname): Change type.
	(comsat_init): Use mu_get_host_name.
	* comsat/comsat.h (hostname): Change declaration.
	* libmailutils/locker.c (lock_dotlock): Use mu_get_host_name.
	* libmailutils/mutil.c (mu_get_host_name): Rewrite.
	* pop3d/pop3d.c (pop3d_mainloop): Remove unnecessary call to
	gethostbyname.
	* pop3d/pop3d.h (MAXHOSTNAMELEN): Remove definition.

2010-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor bugfixes.

2010-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	New mu submode: acl.  Supersedes examples/aclck.c.

	* mu/acl.c: New file.
	* mu/Makefile.am: Add acl.c
	* po/POTFILES.in: Add acl.c
	* mu/mu.c (mutool_action_tab): Add acl mode.
	* mu/mu.h (mutool_acl): New proto.
	* mu/flt2047.c: Fix docstrings.
	* mu/pop.c: Likewise.

2010-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve path parsing in mu_cfg_find_node.

	* libmailutils/cfg_parser.y (split_cfg_path): New static.
	(mu_cfg_find_node): Use the same parsing algorithm as
	mu_cfg_create_subtree. This complements 68b7dc9dac.
	(mu_cfg_create_subtree): Use split_cfg_path. Handle escaped '='
	as a regular character.
	* mu/mu.c (args_doc): Remove spurious word.
	(main): Disable --version option in action handlers.
	* mu/query.c (query_args_doc): Use `path' instead of `keyword'.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix docstrings in mu.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mu/filter.c (filter_options): Add missing arguments.
	* mu/flt2047.c (flt2047_options): Likewise.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* examples/http.c (main): Fix open/wait loop.
	* libmailutils/stream.c (mu_stream_wait): May be used on
	not-open streams.
	* examples/.gitignore: Add more files.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	New utility: mu.

	The `mu' program is a multi-purpose tool for doing various
	mail- and mailutils-related operations. It includes a pop3
	shell, a coder/decoder for all filter formats supported by
	Mailutils, a utility to extract arbitrary values from the MU
	configuration files, a configuration information utility and
	many more, in the short run. It supercedes examples/pop3client
	and (partially) mailutils-config, both of which will be removed
	in the future.

	* Makefile.am (SUBDIRS): Add mu.
	* configure.ac: Likewise.
	* po/POTFILES.in: Add new files.
	* mu/.gitignore: New file.
	* mu/Makefile.am: New file.
	* mu/filter.c: New file.
	* mu/flt2047.c: New file.
	* mu/info.c: New file.
	* mu/mu.c: New file.
	* mu/mu.h: New file.
	* mu/pop.c: New file.
	* mu/query.c: New file.
	* mu/shell.c: New file.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve stream creation consistency.

	One of stream flags bits indicates whether the stream is open
	or not. The mu_stream_open function refuses to act if it
	already is. The rest of functions (including mu_stream_close)
	refuses to act if the stream was not open. A special function
	(mu_stream_is_open) is provided to check if the stream is in
	open state.

	Any stream creation function returns an already open stream.
	The function mu_stream_open should be called only if the stream
	was previously closed by a call to mu_stream_close.

	* include/mailutils/stream.h (mu_stream_is_open): New proto.
	* include/mailutils/sys/stream.h (_MU_STR_OPEN): New flag.
	* libmailutils/stream.c (_mu_stream_create): Permit setting the
	_MU_STR_OPEN flag.
	(_stream_init): New static.
	(mu_stream_open): Return MU_ERR_OPEN if the stream is already
	open.
	(mu_stream_is_open): New function. (mu_stream_seek,
	mu_stream_read, mu_stream_readdelim) (mu_stream_getdelim,
	mu_stream_write, mu_stream_flush) (mu_stream_close,
	mu_stream_size, mu_stream_wait)
	(mu_stream_truncate): Check if the stream is open. Return
	MU_ERR_NOT_OPEN otherwise. 
	* libmailutils/errors (MU_ERR_OPEN): Reword the diagnostics. 
	* libmailutils/dbgstream.c (mu_dbgstream_create): Open the
	stream.
	* libmailutils/file_stream.c (mu_file_stream_create)
	(mu_fd_stream_create): Open the stream.
	* libmailutils/filter_iconv.c (mu_filter_iconv_create): Open
	the stream.
	* libmailutils/mapfile_stream.c (mu_mapfile_stream_create):
	Open the stream.
	* libmailutils/fltstream.c (mu_filter_stream_create): Mark the
	stream as open.
	* libmailutils/iostream.c (mu_iostream_create): Likewise.
	* libmailutils/memory_stream.c: Likewise.
	* libmailutils/message.c (_message_stream_create): Likewise.
	* libmailutils/message_stream.c (mu_message_stream_create):
	Likewise.
	* libmailutils/prog_stream.c (mu_prog_stream_create): Likewise.
	* libmailutils/socket_stream.c (mu_socket_stream_create):
	Likewise.
	* libmailutils/temp_file_stream.c (mu_temp_file_stream_create):
	Likewise. 
	* libmailutils/amd.c (_amd_attach_message): Mark stream as
	open.
	* libmailutils/body.c (_body_get_stream): Likewise.
	* libmailutils/memory_stream.c: Likewise.
	* libmailutils/rdcache_stream.c (mu_rdcache_stream_create:
	Likewise.
	* libmailutils/stdio_stream.c (mu_stdio_stream_create):
	Likewise.
	* libmailutils/streamref.c (mu_streamref_create_abridged):
	Likewise.
	* libmailutils/tcp.c (mu_tcp_stream_create_with_source_ip):
	Likewise.
	* libmailutils/xscript-stream.c (mu_xscript_stream_create):
	Likewise.
	* libmu_auth/tls.c (_mu_tls_io_stream_create): Likewise.
	(_mu_tls_stream_create): Likewise.
	* libproto/pop/pop3_stream.c (mu_pop3_stream_create): Likewise. 
	* examples/base64.c: Remove unnecessary mu_stream_open.
	* examples/http.c: Likewise.
	* examples/iconv.c: Likewise.
	* examples/msg-send.c: Likewise.
	* examples/murun.c: Likewise.
	* examples/musocio.c: Likewise.
	* examples/pop3client.c: Likewise.
	* imap4d/append.c: Likewise.
	* imap4d/io.c: Likewise.
	* imap4d/preauth.c: Likewise.
	* lib/mailcap.c: Likewise.
	* libmailutils/attachment.c: Likewise.
	* libmailutils/cfg_driver.c: Likewise.
	* libmailutils/header.c: Likewise.
	* libmailutils/mailcap.c: Likewise.
	* libmailutils/mimehdr.c: Likewise.
	* libmailutils/mutil.c: Likewise.
	* libmailutils/tests/fltst.c: Likewise.
	* libmailutils/tests/mailcap.c: Likewise.
	* libmailutils/vartab.c: Likewise.
	* libmailutils/wicket.c: Likewise.
	* libmu_argp/muinit.c: Likewise.
	* libmu_auth/ldap.c: Likewise.
	* libmu_sieve/extensions/pipe.c: Likewise.
	* libmu_sieve/extensions/spamd.c: Likewise.
	* libmu_sieve/extensions/vacation.c: Likewise.
	* libproto/imap/folder.c: Likewise.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/mailer/smtp_starttls.c: Likewise.
	* libproto/mbox/mbox.c: Likewise.
	* libproto/nntp/nntp_connect.c: Likewise.
	* libproto/pop/mbox.c: Likewise.
	* libproto/pop/pop3_connect.c: Likewise.
	* libproto/pop/pop3_stls.c: Likewise.
	* maidag/mailtmp.c: Likewise.
	* mail/decode.c: Likewise.
	* mail/pipe.c: Likewise.
	* mail/send.c: Likewise.
	* mail/send.c: Likewise.
	* mail/write.c: Likewise.
	* mh/burst.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/compcommon.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mh_whatnow.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/repl.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* pop3d/extra.c: Likewise.
	* sieve/sieve.c: Likewise.
	* testsuite/smtpsend.c: Likewise.

2010-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the SMTP SASL (client) without trace.

	* include/mailutils/sys/smtp.h (_mu_smtp_get_streams)
	(_mu_smtp_set_streams): New protos.
	* libproto/mailer/smtp_gsasl.c (insert_gsasl_stream): Use
	_mu_smtp_get_streams and _mu_smtp_set_streams to change
	streams.
	* libproto/mailer/smtp_starttls.c (smtp_get_streams): Rename to
	_mu_smtp_get_streams. All callers changed.
	(smtp_set_streams): Rename to _mu_smtp_set_streams. All callers
	changed.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Disable installchecks for sieve.scm.

	* guimb/scm/Makefile.am: Add sieve.scm to
	AM_INSTALLCHECK_STD_OPTIONS_EXEMPT.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Redo the code for installing tls/sasl transport streams.

	* include/mailutils/stream.h (MU_IOCTL_SWAP_STREAM): Remove.
	(MU_IOCTL_GET_STREAM, MU_IOCTL_SET_STREAM): New ioctls.
	* include/mailutils/sys/stream.h (_MU_SWAP_FIRST_ONLY)
	(_MU_SWAP_IOCTL_MUST_SUCCEED): Remove.
	(_mu_stream_swap_streams): Remove.
	* libmailutils/stream.c (_mu_stream_swap_streams): Remove. 
	* libmailutils/filter_iconv.c (_icvt_ioctl): Handle
	MU_IOCTL_GET_STREAM, MU_IOCTL_SET_STREAM instead of
	MU_IOCTL_SWAP_STREAM.
	* libmailutils/iostream.c (_iostream_ctl): Likewise.
	* libmailutils/xscript-stream.c (_xscript_ctl): Likewise. 
	* imap4d/auth_gsasl.c (restore_and_return): Unref the contents
	of str.
	(auth_gsasl): Use MU_IOCTL_GET_STREAM/MU_IOCTL_SET_STREAM to
	change the underlying transport streams.
	* imap4d/io.c (imap4d_init_tls_server): Likewise.
	* libproto/mailer/smtp_gsasl.c (insert_gsasl_stream): Likewise.
	* pop3d/extra.c (pop3d_init_tls_server): Likewise. 
	* libproto/mailer/smtp_starttls.c (smtp_get_streams)
	(smtp_set_streams): New functions.
	(smtp_swap_streams): Remove.
	(mu_smtp_starttls): Use smtp_get_streams and smtp_set_streams
	instead of smtp_swap_streams.
	* libproto/pop/pop3_stls.c (pop3_get_streams)
	(pop3_set_streams): New functions.
	(pop3_swap_streams): Remove.
	(mu_pop3_stls): Use pop3_get_streams and pop3_set_streams. 
	* testsuite/smtpsend.c (main): Uncomment mu_stream_unref on the
	carrier.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix prog streams.

	* libmailutils/prog_stream.c (REDIRECT_STDIN_P)
	(REDIRECT_STDOUT_P): Fix macros.
	* libmailutils/stream.c (mu_stream_open): If stream is open
	with MU_STREAM_APPEND, reposition to its end.
	(_stream_write_unbuffered): Do not signal EACCES for
	MU_STREAM_APPEND streams. 
	* mail/pipe.c (mail_pipe): Rewrite using streams instead of
	FILEs.
	* mail/send.c (fill_body): Likewise.
	* mail/write.c (mail_write): Likewise.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove unnecessary use of FILEs in imap4d and pop3d.

	* imap4d/imap4d.c (imap4d_mainloop): Take two file descriptor
	as arguments. All uses updated.
	* imap4d/imap4d.h (io_setio): Change signature.
	* imap4d/io.c (io_setio): Take two file descriptor as
	arguments. All uses updated.
	* pop3d/extra.c (pop3d_setio): Take two file descriptor as
	arguments. All uses updated.
	* pop3d/pop3d.c (pop3d_mainloop): Likewise.
	* pop3d/pop3d.h (pop3d_setio): Change signature.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Cleanup in bufferization code.

	* examples/musocio.c: Use default stream buffer size.
	* imap4d/io.c: Likewise.
	* libmailutils/dbgstream.c: Likewise.
	* libmailutils/iostream.c: Likewise.
	* libmailutils/xscript-stream.c: Likewise.
	* libmu_auth/gsasl.c: Likewise.
	* libmu_auth/tls.c: Likewise.
	* libproto/pop/mbox.c: Likewise.
	* libproto/pop/pop3_stream.c: Likewise.
	* pop3d/extra.c: Likewise. 
	* libmailutils/file_stream.c (mu_file_stream_create)
	(mu_fd_stream_create): File streams are fully buffered by
	default.
	* libmailutils/stdio_stream.c (mu_stdio_stream_create): Stdio
	streams are line buffered by default.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmailutils/streamcpy.c (mu_stream_copy): Use the number of
	bytes actually read.
	* libmailutils/base64.c (_base64_encoder): Return
	mu_filter_again if not all data has been consumed on
	mu_filter_lastbuf.
	* libmailutils/message_stream.c (scan_stream): Fix calculation
	of body_end.
	(_body_obj_size): Fix calculation of body size.
	* libproto/mailer/smtp_data.c (_mu_smtp_data_begin): Set full
	buffering on the MU_TRANSPORT_OUTPUT stream.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish switching to new gnulib (see 52d2552d23).

	* configure.ac: Use libmuaux.a instead of libmuaux.la.
	* examples/Makefile.am: Likewise.
	* examples/cpp/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* mapi/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.

	Remove old files from POTFILES.in (see c42bddb0b8). 
	* po/POTFILES.in: Remove comsat/oldcfg.c.

	Build testsuites after the programs they are to test. 
	* frm/Makefile.am (SUBDIRS): Put . before tests.
	* messages/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.

	Remove leftovers from CVS times: 
	* .cvsignore: Remove.
	* am/.cvsignore: Remove.
	* lib/.cvsignore: Remove.
	* po/.cvsignore

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add back testsuite/etc/DISTFILES.

	It is needed for the remaining DejaGNU tests and will go away
	later, when they are rewritten.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix hex (%XX) expansion in URLs.

	* mailbox/url.c (url_parse0): Take three arguments. Return in
	the third one a boolean indicating whether to expand %XX
	notations in the URL. Do not decode absolute file names and
	pipes.
	(mu_url_parse): Use this value to decide.
	* movemail/movemail.c (main): In emacs mode: force UNIX mbox
	format as a default. Send debugging output to stderr.
	* libmailutils/tests/url.at: Add new tests.

2010-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* am/debug.m4 (MU_DEBUG_MODE): Rewrite. Use
	-Wdeclaration-after-statement if supported.
	* comsat/oldcfg.c: Remove.
	* comsat/Makefile.am (comsatd_SOURCES): Remove oldcfg.c.
	* comsat/comsat.c: Remove the obsolete --config and
	--convert-config options.
	* comsat/comsat.h (convert_config): Remove.

2010-09-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various SMTP improvements.

	* Makefile.am: Shut up cmp's stderr.
	* libmailutils/body.c (_body_get_stream): Set full buffering
	mode on the body stream.
	* libmailutils/errors (MU_ERR_AUTH_NO_CRED): New error code.
	* libproto/mailer/smtp.c (smtp_open): Do not treat ENOSYS or
	MU_ERR_AUTH_NO_CRED (returned by mu_smtp_auth) as errors.
	(smtp_send_message): Do not try to submit the message if it is
	bigger than the maximum imposed by the server.
	* libproto/mailer/smtp_auth.c (mu_smtp_auth): Return
	MU_ERR_AUTH_NO_CRED if neither user name nor password are
	supplied.
	* mail/send.c (mail_send0): Issue diagnostics if sending
	attempt has failed.

2010-09-21  Wojciech Polak  <polak@gnu.org>

	Update C++ API and the examples.

	* include/mailutils/cpp/pop3.h (capa): Add reread parameter.
	(getline): Add new prototype.
	(send, readline): Remove.
	(response, stat): Change prototype.
	* libmu_cpp/pop3.cc: Likewise.
	* include/mailutils/cpp/stream.h
	(read, write, readline): Change prototype.
	(sequential_readline, sequential_write): Remove.
	* libmu_cpp/stream.cc: Likewise.

2010-09-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite SMTP mailer.

	* libproto/mailer/smtp.c: Rewrite using new SMTP API.
	* libproto/mailer/smtp_quit.c (mu_smtp_quit): Return
	immediately if already in closed state. 
	* libmailutils/ticket.c (mu_ticket_get_cred): Return
	MU_ERR_FAILURE if all methods fail.
	* mail/send.c: Port 23321cf7 from patches-2.2
	(msg_to_pipe): Return status code.
	(save_dead_message, send_message): New functions, extracted
	from mail_send0.
	(mail_send0): Call save_dead_message if sending failed.

2010-09-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve smtp sending functions.

	* include/mailutils/smtp.h (mu_smtp_write): Mark as
	printf-like.
	(mu_smtp_mail_basic, mu_smtp_rcpt_basic): Take variable number
	of arguments. Mark as printf-like.
	(mu_smtp_data): New prototype.
	* include/mailutils/sys/smtp.h (_MU_SMTP_SAVEBUF): New flag.
	(_mu_smtp) <savebuf>: New member.
	(_mu_smtp_data_begin, _mu_smtp_data_end): New protos.
	* libproto/mailer/smtp_send.c: New file.
	* libproto/mailer/smtp_data.c (_mu_smtp_data_begin)
	(_mu_smtp_data_end, mu_smtp_data): New functions. 
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	smtp_send.c.
	* libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): Switch to
	MU_SMTP_EHLO only if in MU_SMTP_MAIL state.
	* libproto/mailer/smtp_mail.c (mu_smtp_mail_basic): Take
	variable number of arguments.
	* libproto/mailer/smtp_param.c (mu_smtp_get_param): Add missing
	typecast.
	* libproto/mailer/smtp_rcpt.c (mu_smtp_rcpt_basic): Take
	variable number of arguments.
	* libproto/mailer/smtp_send.c (_smtp_data_send): Use
	_mu_smtp_data_begin and _mu_smtp_data_end.
	* testsuite/smtpsend.c: Emulate sending from a MU message.

2010-09-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Stream improvements.

	* include/mailutils/stream.h (mu_stream_printf): Mark as
	printf-like.
	* include/mailutils/sys/stream.h (_MU_STR_EVENT_CLOSE): New
	event.
	(_mu_stream) <event_cb_data>: New member.
	* libmailutils/stream.c (mu_stream_seek): Avoid unnecessary
	seeks in mu_buffer_none mode. Complements 906499db.
	(mu_stream_close): Mark _MU_STR_EVENT_CLOSE event.

2010-09-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in message_stream.c.

	* libmailutils/message_stream.c (scan_stream): Change
	signature. All uses updated. Correct the calculation of
	body_start.
	(mu_message_stream_create): Return the stream.

2010-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve authentication interface in SMTP client.

	* include/mailutils/smtp.h (MU_SMTP_PARAM_URL): New parameter
	code.
	* include/mailutils/sys/smtp.h (_MU_SMTP_CLNPASS): New flag.
	(_mu_smtp) <secret>: New member.
	* libproto/mailer/smtp_auth.c (get_ticket)
	(_mu_smtp_fixup_params): New static functions.
	(mu_smtp_auth): Call _mu_smtp_fixup_params to supply missing
	parameters.
	* libproto/mailer/smtp_create.c (mu_smtp_destroy): Destroy
	secret. Take care to erase eventual plaintext representation of
	the password.
	* libproto/mailer/smtp_gsasl.c (_smtp_callback): Use
	mu_smtp_get_param to obtain parameters.
	* libproto/mailer/smtp_param.c (mu_smtp_set_param): Setting
	MU_SMTP_PARAM_PASSWORD updates secret.
	param[MU_SMTP_PARAM_PASSWORD] points (temporarily and on
	request only) to plaintext password.
	(mu_smtp_get_param): Likewise for retrieving password.
	* testsuite/smtpsend.c (main): New parameter url=.

2010-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_auth/gsasl.c (_gsasl_encoder,_gsasl_decoder): Do not
	free flt.
	* include/mailutils/stream.h [__cplusplus]: Protect contents by
	extern "C".

2010-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Avoid unnecessary rebuilds of git-describe and git-describe.h.

	* Makefile.am: Avoid unnecessary rebuilds of git-describe and
	git-describe.h

2010-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/stream.c (_mu_stream_create): Mask out internal
	flags.
	* pop3d/pop3d.c (main): Do not handle SIGPIPE, to avoid
	infinite recursion.

2010-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* testsuite/smtpsend.c (main): Retry ehlo after successful
	authentication.

2010-09-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement SMTP AUTH (via GSASL).

	* configure.ac (MU_COND_GSASL): New cond.
	* include/mailutils/smtp.h (MU_SMTP_PARAM_DOMAIN)
	(MU_SMTP_PARAM_USERNAME, MU_SMTP_PARAM_PASSWORD)
	(MU_SMTP_PARAM_SERVICE, MU_SMTP_PARAM_REALM)
	(MU_SMTP_PARAM_HOST, MU_SMTP_MAX_PARAM): New constants.
	(mu_smtp_set_domain, mu_smtp_get_param): Remove.
	(mu_smtp_set_param, mu_smtp_get_param): New prototypes.
	(mu_smtp_auth, mu_smtp_add_auth_mech)
	(mu_smtp_add_auth_mech_list, mu_smtp_mech_select): New
	prototypes.
	* include/mailutils/sys/smtp.h (_mu_smtp) <domain>: Remove.
	(_mu_smtp) <authimpl, param, authmech>: New members.
	(_mu_smtp_gsasl_auth, _mu_smtp_mech_impl): New prototypes. 
	* libproto/mailer/Makefile.am [MU_COND_GSASL]: Define
	SMTP_GSASL.
	(libmu_mailer_la_SOURCES): Add new sources.
	* libproto/mailer/smtp_domain.c: Remove.
	* libproto/mailer/smtp_param.c: New file.
	* libproto/mailer/smtp_mech.c: New file.
	* libproto/mailer/smtp_auth.c: New file.
	* libproto/mailer/smtp_gsasl.c: New file.
	* libproto/mailer/smtp_create.c (mu_smtp_destroy): Free new
	members of struct _mu_smtp.
	* libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): Use
	param[MU_SMTP_PARAM_DOMAIN] instead of domain.
	* testsuite/smtpsend.c: Handle SMTP AUTH. 
	* libmu_auth/gsasl.c (mu_gsasl_stream_create): Bugfix. 
	* libmailutils/xscript-stream.c (_xscript_ctl)
	<MU_IOCTL_SWAP_STREAM>: If instream!=outstream, combine them
	first into an iostream.

2010-09-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	smtp client: implement more functions.

	* include/mailutils/smtp.h (mu_smtp_mail_basic)
	(mu_smtp_rcpt_basic, mu_smtp_send_stream)
	(mu_smtp_rset, mu_smtp_quit): New prototypes.
	* include/mailutils/sys/smtp.h (MU_SMTP_RCPT)
	(MU_SMTP_MORE, MU_SMTP_DOT, MU_SMTP_QUIT, MU_SMTP_CLOS): New
	states.
	(_mu_smtp_xscript_level): New proto.
	* libmailutils/errors (MU_ERR_REPLY): New error code.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	new sources.
	* libproto/mailer/smtp_data.c: New file.
	* libproto/mailer/smtp_mail.c: New file.
	* libproto/mailer/smtp_quit.c: New file.
	* libproto/mailer/smtp_rcpt.c: New file.
	* libproto/mailer/smtp_rset.c: New file.
	* libproto/mailer/smtp_ehlo.c: Return MU_ERR_REPLY if the
	server replied with a code other than 2xx.
	* libproto/mailer/smtp_open.c: Likewise.
	* testsuite/smtpsend.c: Implement full sending cycle (excepting
	authorization).

2010-09-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in the sieve testsuite.

	* sieve/tests/reject.at: Fix dependency on TZ.
	* sieve/tests/relational.at: Ensure that fileintos go to the
	test folder.
	* sieve/tests/mul-addr.at: Remove unneeded require.

2010-09-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Begin new implementation of the SMTP client.

	* include/mailutils/smtp.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	smtp.h.
	* include/mailutils/list.h (mu_list_clear): New proto.
	* include/mailutils/sys/smtp.h: New file.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	smtp.h.
	* libmailutils/errors (MU_ERR_BADREPLY, MU_ERR_SEQ): New error
	codes.
	* libmailutils/list.c (mu_list_clear): New function.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	new sources.
	* libproto/mailer/smtp_capa.c: New file.
	* libproto/mailer/smtp_carrier.c: New file.
	* libproto/mailer/smtp_create.c: New file.
	* libproto/mailer/smtp_disconnect.c: New file.
	* libproto/mailer/smtp_domain.c: New file.
	* libproto/mailer/smtp_ehlo.c: New file.
	* libproto/mailer/smtp_io.c: New file.
	* libproto/mailer/smtp_open.c: New file.
	* libproto/mailer/smtp_starttls.c: New file.
	* libproto/mailer/smtp_trace.c: New file.
	* testsuite/smtpsend.c: New file.
	* testsuite/Makefile.am (noinst_PROGRAMS): Add smtpsend.

2010-09-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update for gnulib v0.0-4270-g18aae5b.

	* bootstrap.conf: Build included listings in doc/texinfo.
	* configure.ac: Require gettext 0.18
	* doc/texinfo/Makefile.am: Remove the .c.inc rules.
	* doc/texinfo/maint.mk: New file.
	* lib/Makefile.am (libmuaux_la_SOURCES): Replace with
	libmuaux_a_SOURCES.

2010-09-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	testsuite: recreate missing maildir entries.

	Git does not keep empty subdirectories, so we need to recreate
	/cur and /tmp subdirs in maildir mailboxes retrieved from the
	repo.

	* bootstrap.conf: Recreate missing maildir parts.
	* testsuite/testsuite.inc (MUT_MBCOPY): New macro.
	* sieve/tests/ext.at: Use MUT_MBCOPY to copy mailboxes.
	* sieve/tests/redirect.at: Likewise.
	* sieve/tests/reject.at: Likewise.
	* sieve/tests/testsuite.at: Likewise.
	* testsuite/mbdel.at: Likewise.
	* frm/tests/Makefile.am: Testsuite depends on
	$(top_srcdir)/testsuite/testsuite.inc.
	* libmailutils/tests/Makefile.am: Likewise.
	* messages/tests/Makefile.am: Likewise.
	* readmsg/tests/Makefile.am: Likewise.
	* sieve/tests/Makefile.am: Likewise.
	* testsuite/Makefile.am: Likewise.

2010-09-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvement of the testsuite + some bugfixes.

	That's the first commit since the merge six days ago that
	passes distcheck (with python, cxx, imap and nntp disabled, of
	course).

	* testsuite/folder/DISTFILES: Restore. It is needed for some of
	the remaining DejaGNU tests.
	* testsuite/spool/DISTFILES: Likewise.
	* testsuite/testsuite.at: New file.
	* testsuite/atlocal.in: New file.
	* libmailutils/tests/mbdel.at: Move to testsuite/.
	* libmailutils/tests/mbdel.c: Likewise.
	* libmailutils/tests/mime.at: Likewise.
	* libmailutils/tests/mimetest.c: Likewise. 
	* Makefile.am (SUBDIRS): Place testsuite after libproto.
	* configure.ac (AM_INIT_AUTOMAKE): Remove dist-lzma.
	(AC_CONFIG_FILES): Add testsuite/atlocal.
	* libmailutils/base64.c (_base64_decoder)
	(_base64_encoder): Fix the use of uninitialized variables.
	* libmailutils/tests/.gitignore: Remove mbdel and mimetest.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Remove
	mbdel and mimetest.
	(LDADD): Leave only MU_LIB_MAILUTILS.
	(TESTSUITE_AT): Remove mbdel.at and mime.at
	* libmailutils/tests/atlocal.in (PATH): Bugfix.
	* libmailutils/tests/testsuite.at: Remove inclusion of mbdel.at
	and mime.at.
	* po/POTFILES.in: Replace mailbox/ with libmailutils/. 
	* testsuite/.gitignore: Rewrite.
	* testsuite/Makefile.am: Rewrite.
	* testsuite/mbdel.at: Set +w on all copied mailboxes.
	* testsuite/mimetest.c (main): Open mailbox for reading only. 
	* sieve/Makefile.am: Add examples/ to the distribution. 
	* libproto/mbox/mbox.c (mbox_open): Create locker only if the
	mailbox is open for modification. All users updated to check
	for mailbox->locker!=NULL before using it.

2010-09-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Test mailbox deletion.

	* libmailutils/tests/mbdel.at: New testcase.
	* libmailutils/tests/Makefile.am (TESTSUITE_AT): Add mbdel.at.
	* libmailutils/tests/testsuite.at: Include mbdel.at.
	* libproto/mbox/mbox.c (mbox_remove): Fix return code. 
	* testsuite/maildir/mbox1: New test mailbox.
	* testsuite/mh/mbox1: New test mailbox.
	* testsuite/etc/DISTFILES: Remove.
	* testsuite/folder/DISTFILES: Remove.
	* testsuite/lib/DISTFILES: Remove.
	* testsuite/Makefile.am: Use EXTRA_DIST to distribute subdirs.

2010-09-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmailutils/mailbox.c (mu_mailbox_open): Return MU_ERR_OPEN
	if the mailbox has already been opened.

2010-09-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement `remove' method for mailboxes.

	* include/mailutils/mailbox.h (mu_mailbox_remove): New
	function.
	* include/mailutils/stream.h: Add some comments.
	* include/mailutils/sys/amd.h (_amd_data)<remove>: New method.
	(amd_remove_dir): New function.
	* include/mailutils/sys/mailbox.h (_mu_mailbox)<_remove>: New
	method.
	* libmailutils/amd.c (amd_remove_mbox): New function.
	(amd_init_mailbox): Initialize the _remove method.
	(amd_remove_dir): New function.
	* libmailutils/errors (MU_ERR_MBX_REMOVED)
	(MU_ERR_NOT_OPEN, MU_ERR_OPEN): New error codes.
	* libmailutils/mailbox.c: Keep state of the mailbox (open vs.
	not open, removed). Check it before doing anything on it.
	(_MU_MAILBOX_OPEN, _MU_MAILBOX_REMOVED, _MU_MAILBOX_MASK): New
	defines.
	(mu_mailbox_open): Set _MU_MAILBOX_OPEN if the operation
	succeeds.
	(mu_mailbox_close): Clear _MU_MAILBOX_OPEN if the operation
	succeeds. Refuse to run if the mailbox was not opened.
	(mu_mailbox_remove): New function.
	(all functions): return MU_ERR_MBX_NULL if the mbox argument is
	NULL. Check mailbox state on entry and proceed accordingly.
	* libproto/maildir/mbox.c: Implement _remove method.
	(maildir_remove): New function.
	(_mailbox_maildir_init): Initialize amd->_remove.
	* libproto/mbox/mbox.c: Implement _remove method.
	(mbox_remove): New function.
	(_mailbox_mbox_init): Initialize amd->_remove.
	* libproto/mh/mbox.c: Implement _remove method.
	(mh_remove): New function.
	(_mailbox_mh_init): Initialize amd->_remove. 
	* libmailutils/tests/mbdel.c: New file.
	* libmailutils/tests/.gitignore: Add mbdel.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Likewise.
	(LDADD): List all mailbox formats. 
	* imap4d/delete.c (imap4d_delete): Use mu_mailbox_remove to
	delete the folder. Fall back to remove() if it does not appear
	to be a mailbox.

2010-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	libmailutils/tests: test list and iterator operations.

	* examples/listop.c: Move to libmailutils/tests.
	* examples/Makefile.am (noinst_PROGRAMS): Remove listop.
	* libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add listop.
	(TESTSUITE_AT): Add list.at.
	* libmailutils/tests/.gitignore: New file.
	* libmailutils/tests/list.at: New file.
	* libmailutils/tests/testsuite.at: Include list.at. 
	* libmailutils/list.c (list_itrctl): Fix mu_itrctl_replace.

2010-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Optimize libmailutils testsuite.

	* libmailutils/tests/testsuite.at (MU_TEST_GROUP)
	(MU_TEST_KEYWORDS, MU_TEST_COMMAND): New defines.
	(mu_trimstr, mu_firstline): New macros.
	(MU_GENERIC_TEST): New macro.
	* libmailutils/tests/addr.c: Accept addresses from stdin.
	* libmailutils/tests/address.at (TESTADDR): If the address
	contains single quotes, pass it to the program via stdin.
	Uncomment all such tests.
	* libmailutils/tests/argcv.at (TESTARGS): Rewrite as a wrapper
	over MU_GENERIC_TEST.
	* libmailutils/tests/decode2047.at (TESTDEC2047): Likewise.
	* libmailutils/tests/mailcap.at (MAILCAP): Likewise.
	* libmailutils/tests/url.at (TESTURL): Likewise.
	* libmailutils/tests/mailcap.c: Accept data from stdin.

2010-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libmailutils/Makefile.am (SUBDIRS): Make sure tests are
	descended into only when the libmailutils library is already
	built.

2010-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite testsuite for messages in Autotest.

	* configure.ac: Remove messages/testsuite
	* messages/Makefile.am (SUBDIRS): Replace testsuite with tests.
	* messages/tests/.gitignore: New file.
	* messages/tests/Makefile.am: New file.
	* messages/tests/atlocal.in: New file.
	* messages/tests/testsuite.at: New file.
	* messages/testsuite: Remove.

2010-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite libmailutils testsuite in Autotest.

	* configure.ac: Create libmailutils/tests/atlocal and
	libmailutils/tests/Makefile. Remove libmailutils/testsuite.
	* examples/Makefile.am (noinst_PROGRAMS): Remove programs moved
	to libmailutils/tests.
	* examples/argcv.c -> libmailutils/tests/argcv.c
	* libmailutils/testsuite/Decode -> libmailutils/tests/Decode
	* libmailutils/testsuite/Encode -> libmailutils/tests/Encode
	* examples/decode2047.c: Move to libmailutils/tests
	* examples/encode2047.c: Move to libmailutils/tests
	* examples/mailcap.c: Likewise.
	* examples/url-parse.c: Likewise. 
	* include/mailutils/Makefile.am: Minor changes.
	* libmailutils/Makefile.am (SUBDIRS): Replace testsuite with
	tests.
	* libmailutils/tests/Makefile.am: New file.
	* libmailutils/tests/addr.c: New file.
	* libmailutils/tests/address.at: New file.
	* libmailutils/tests/argcv.at: New file.
	* libmailutils/tests/atlocal.in: New file.
	* libmailutils/tests/base64d.at: New file.
	* libmailutils/tests/base64e.at: New file.
	* libmailutils/tests/decode2047.at: New file.
	* libmailutils/tests/encode2047.at: New file.
	* libmailutils/tests/fltst.c: New file.
	* libmailutils/tests/mailcap.at: New file.
	* libmailutils/tests/mime.at: New file.
	* libmailutils/tests/testsuite.at: New file.
	* libmailutils/tests/url.at: New file. 
	* libmailutils/testsuite/: Delete. 
	* frm/tests/Makefile.am: Prefix package.m4 creation commands
	with $(AM_V_GEN).
	* readmsg/tests/Makefile.am: Likewise.
	* sieve/tests/Makefile.am: Likewise.
	* frm/tests/testsuite.at: Minor changes.
	* readmsg/tests/testsuite.at: Include testsuite.inc.
	* sieve/tests/testsuite.at: Likewise.
	* sieve/tests/version.at: Comment out inclusion of
	testsuite.inc.
	* testsuite/testsuite.inc: Add m4_version_prereq.

2010-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename mailbox/ to libmailutils/.

	This change has been waiting since 2005-08-16
	(aaab88142c8193f1), when libmailbox had been renamed to
	libmailutils. Back then MU was still under CVS, which didn't
	like renames.

2010-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite readmsg testsuite in Autotest.

	* configure.ac: Add readmsg/tests/
	* readmsg/Makefile.am: New file.
	* readmsg/tests/.gitignore: New file.
	* readmsg/tests/Makefile.am: New file.
	* readmsg/tests/all.at: New file.
	* readmsg/tests/atlocal.in: New file.
	* readmsg/tests/hdr.at: New file.
	* readmsg/tests/nohdr.at: New file.
	* readmsg/tests/testsuite.at: New file.
	* readmsg/tests/twomsg.at: New file.
	* readmsg/tests/weed.at: New file.
	* readmsg/testsuite: Remove.
	* testsuite/testsuite.inc (AT_SKIP_TEST): New macro. 
	* testsuite/spool/mbox1: Remove trailing whitespace after
	Received headers.
	* imap4d/testsuite/imap4d/fetch.exp: Reflect changes in mbox1.
	* mail/testsuite/mail/read.exp: Likewise.
	* mail/testsuite/mail/write.exp: Likewise.
	* mailbox/testsuite/Mime: Likewise.

2010-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite frm testsuite in Autotest.

	* configure.ac: Build frm/testsuite/Makefile.am and atlocal.
	Remove frm/testsuite/Makefile.
	* testsuite/testsuite.inc: New file. 
	* frm/testsuite: Remove DejaGNU-based testsuite.
	* frm/tests: Autotest-based testsuite.
	* frm/tests/.gitignore
	* frm/tests/Makefile.am
	* frm/tests/atlocal.in
	* frm/tests/testsuite.at 
	* frm/Makefile.am (SUBDIRS): Replace testsuite with tests. 
	* sieve/tests/Makefile.am (TESTSUITE): Add an include option.
	* sieve/tests/version.at: Use macro from testsuite.inc.

2010-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove files that are not necessary any more.

	* sieve/examples/INBOX.orig
	* sieve/examples/Test
	* sieve/examples/test.out

2010-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite Sieve testsuite in Autotest.

	* mailbox/cfg_parser.y (mu_cfg_create_subtree): Optional prefix
	character may be used to alter the separator or to suppress
	value splitting.

2010-09-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Optimize stream seeks and I/O.	Expand stream event handlers. 
	Rewrite xscript stream.

	* include/mailutils/sys/stream.h (_MU_STR_EVENT_SET): Rename to
	_MU_STR_EVENT_SET.
	(_MU_STR_EVENT_CLR): Rename to _MU_STR_EVENT_CLRFLAG.
	(_MU_STR_EVENT_FILLBUF, _MU_STR_EVENT_FLUSHBUF): New event
	codes.
	(_MU_STR_EVMASK): New macro.
	(_mu_stream) <cur>: Replace with pos, indicating current
	position in the buffer.
	(event_cb): Change signature.
	(mu_stream_read_unbuffered): Remove.
	(mu_stream_write_unbuffered): Remove. 
	* mailbox/iostream.c (mu_iostream_create): Provide the
	readdelim method only if the underlying input transport stream
	provides it.
	* mailbox/streamref.c (mu_streamref_create_abridged): Likewise. 
	* mailbox/stream.c (_stream_event): New macro.
	(mu_stream_read_unbuffered): Rename to static
	_stream_read_unbuffered.
	(mu_stream_write_unbuffered): Rename to static
	_stream_write_unbuffered. (_stream_advance_buffer,
	_stream_buffer_offset)
	(_stream_orig_level): Remove macros.
	(_stream_buffer_freespace): Rewrite.
	(_stream_curp): New macro.
	(_stream_fill_buffer): Make sure the `offset' indicates the
	offset int the transport, corresponding to the beginning of the
	current buffer.
	(_stream_flush_buffer): Essentially rewritten.
	(mu_stream_seek): Reflect changes to the _mu_stream structure.
	Optimize calls to the seek method.
	(_stream_skip_input_bytes): Likewise.
	(mu_stream_read, _stream_scandelim, mu_stream_write): Rewrite
	using new _mu_stream structure. 
	* mailbox/xscript-stream.c: Rewrite using stream events. 
	* mailbox/base64.c (_base64_encoder): Bugfix. 
	* libproto/pop/pop3_stream.c (_pop3_event_cb): Update signature
	to match the changes above.
	* examples/mimetest.c (main): Add more error checking.
	* mail/testsuite/mail/write.exp: Minor fix.

2010-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mailbox quota support in imap4d: initial implementation.

	* imap4d/quota.c: New file.
	* imap4d/Makefile.am (imap4d_SOURCES): Add quota.c
	* imap4d/append.c (imap4d_append0): Refuse to append if the
	quota is exceeded or would be exceeded after completing the
	operation.
	* imap4d/copy.c (imap4d_copy0): Refuse to copy messages if the
	quota is exceeded or would be exceeded after completing the
	operation. Return a meaningful textual description. Attempt to
	restore mailbox to its original size if the operation failed.
	* imap4d/imap4d.c (imap4d_session_setup0): Call quota_setup.
	* imap4d/imap4d.h (quota_setup, quota_check, quota_update): New
	functions. 
	* include/mailutils/folder.h (mu_list_response) <format>: New
	member.
	* include/mailutils/mailbox.h (mu_mailbox_create_from_record):
	New function.
	* include/mailutils/types.hin (MU_FOLDER_ATTRIBUTE_LINK): New
	flag.
	* libproto/mbox/folder.c (list_helper): Do not return symbolic
	links unless MU_FOLDER_ATTRIBUTE_LINK is set. Fill in the
	resp->format member.
	* mailbox/mailbox.c (_mailbox_create_from_record): New static
	function.
	(_create_mailbox0): Rewrite as a wrapper over
	_mailbox_create_from_record.
	(mu_mailbox_create_from_record): New function.

2010-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	movemail: bugfix.

	* movemail/movemail.c (guess_mbox_owner): Fix setting GID with
	--owner=set-id.
	(main): Don't attempt to expunge source mailbox if
	preserve_mail is set.

2010-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	amd: bugfix.

	* mailbox/amd.c (read_size_file): Fix return value.

2010-09-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/pop/pop3_stream.c (_pop3_event_cb)
	(mu_pop3_filter_create): Fix buffer size manipulation.
	* libmu_auth/tls.c: Protect gnutls debugging code with
	DEBUG_TLS.

2010-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reimplement POP3 I/O over the DOT and CRLFDOT filters.

	As a side note, previous versions of pop3d did not do
	byte-stuffing when sending RETR output. This commit fixes it.

	* include/mailutils/filter.h (mu_dot_filter): New filter.
	* mailbox/dot.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add dot.c
	* mailbox/crlfdot.c (_crlfdot_encoder): Bugfix. Do not
	dereference iobuf until we know it is not NULL.
	* mailbox/filter.c (mu_filter_get_list): Register
	mu_dot_filter.
	* mailbox/fltstream.c (filter_wr_close, filter_rd_close): New
	close methods, depending on the filter stream mode.
	(mu_filter_stream_create): Set filter_rd_close for
	MU_STREAM_READ and filter_wr_close for MU_STREAM_WRITE streams.
	* mailbox/stream.c (mu_stream_readdelim): Update stream offset
	when using stream->readdelim. 
	* pop3d/pop3d.h (pop3d_send_payload): New proto.
	* pop3d/retr.c (pop3d_send_payload): Change function to be
	optionally used in pop3d_top. Use DOT filter on output.
	* pop3d/top.c (pop3d_top): Rewrite using pop3d_send_payload. 
	* libproto/pop/pop3_retr.c (mu_pop3_retr): Default return code
	is EINPROGRESS.
	* libproto/pop/pop3_stream.c: Remove the filter stuff. Use
	CRLFDOT instead. 
	* mailbox/amd.c (amd_body_stream_readdelim): Bugfix. Increase
	offset by nread bytes.

2010-09-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve filter framework. Implement a CRLFDOT filter.

	* include/mailutils/filter.h (mu_filter_command)
	<mu_filter_flush> New command.
	(mu_filter_result) <mu_filter_again>: New result code.
	(MU_FILTER_MAX_AGAIN): New constant.
	(mu_crlfdot_filter): New filter.
	* include/mailutils/sys/stream.h (_MU_STR_DIRTY, _MU_STR_WRT)
	(_MU_STR_ERR, _MU_STR_EOF, _MU_STR_INTERN_MASK): Avoid
	conflicts with MU_STREAM_ constants from mailutils/stream.h 
	* mailbox/crlfdot.c: New source.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add crlfdot.c.
	* mailbox/filter.c (mu_filter_get_list): Register
	mu_crlfdot_filter.
	* mailbox/fltstream.c (init_iobuf): Fix initialization of isize
	and input.
	(filter_read): Redo the loop, allowing xcode to request a new
	iteration by returning mu_filter_again.
	(filter_write_internal): Likewise.
	(filter_wr_flush): Call filter_write_internal with
	mu_filter_flush, reserving mu_filter_lastbuf for really last
	buffers.
	(filter_close): Call filter_write_internal with
	mu_filter_lastbuf.
	* mailbox/stream.c (mu_stream_skip_input_bytes): Clear
	MU_STREAM_SEEK bit before actually doing anything. 
	* include/mailutils/sys/pop3.h [DMALLOC]: Remove unneeded cond.

2010-09-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.2.90.

2010-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Optimize I/O bufferization.

	New ioctls MU_IOCTL_GET_TRANSPORT_BUFFER and
	MU_IOCTL_SET_TRANSPORT_BUFFER return and modify bufferization
	mode in the lowest level transport stream. Both server and
	client programs use this to switch to full buffering before
	sending large amounts of data. This has a particular impact on
	the output speed and CPU usage when TLS is in use.

	* include/mailutils/stream.h (MU_IOCTL_GET_TRANSPORT_BUFFER)
	(MU_IOCTL_SET_TRANSPORT_BUFFER): New ioctls.
	(MU_TRANSPORT_INPUT, MU_TRANSPORT_OUTPUT): New constants.
	(MU_TRANSPORT_VALID_TYPE): New macro.
	(mu_buffer_query): New struct.
	(mu_stream_get_buffer): New proto. 
	* libmu_auth/tls.c (_tls_io_ioctl): Return ENOSYS if op is not
	supported.
	(_tls_ioctl): Support MU_IOCTL_[GS]ET_TRANSPORT_BUFFER.
	* mailbox/file_stream.c (fd_ioctl): Support
	MU_IOCTL_[GS]ET_TRANSPORT_BUFFER. Return ENOSYS if op is not
	supported.
	* mailbox/filter_iconv.c (_icvt_ioctl): Likewise.
	* mailbox/iostream.c (_iostream_ctl): Likewise.
	* mailbox/mapfile_stream.c (_mapfile_ioctl): Likewise.
	* mailbox/memory_stream.c (_memory_ioctl): Likewise.
	* mailbox/rdcache_stream.c (rdcache_ioctl): Likewise.
	* mailbox/xscript-stream.c (_xscript_ctl): Likewise.
	* mailbox/prog_stream.c (_prog_ioctl): Return ENOSYS if op is
	not supported.
	* mailbox/tcp.c (_tcp_ioctl): Likewise. 
	* mailbox/stream.c (mu_stream_default_buffer_size): New global.
	(mu_stream_seek): Do not call seek method if the requested
	offset is the same as the current one.
	(mu_stream_set_buffer): Size==0 means use the default value.
	(mu_stream_get_buffer): New function.
	(mu_stream_truncate): Flush the buffer before truncating. 
	* mailbox/mime.c (mime_reset_state): New function.
	(_mime_body_stream_seek): Rewrite using mime_reset_state.
	(_mime_body_stream_ioctl): Return ENOSYS if op is not
	supported.
	(create_mime_body_stream): Reset mime state
	(_mime_body_stream_seek may not be called due to the
	optimization in mu_stream_seek. 
	* mailbox/header.c (header_parse): Exit correctly if the buffer
	is not terminated with a \n. 
	* libproto/mbox/mbox.c (mbox_open): Enforce full buffering on
	the mailbox stream.
	* libproto/pop/mbox.c (pop_header_fill): Minor fix.
	* libproto/pop/pop3_stream.c (_POP3F_DONE)
	(_POP3F_CHBUF): New constants.
	(mu_pop3_stream)<done>: Remove. Replaced with flags.
	<oldbuf>: New member.
	(_pop3_event_cb): If _POP3F_CHBUF flag is set, restore the
	initial buffering mode on the transport stream.
	(mu_pop3_filter_create): Save away current buffering mode and
	enforce full buffering while transferring bulk data. 
	* mail/from.c (hdr_from): Check return value from
	mu_message_get_header.
	* mail/mail.c (main): Allow for MAILRC having empty value.
	Always close the mailbox before exiting. 
	* pop3d/pop3d.c (pop3d_cfg_param): New statement
	output-buffer-size.
	* pop3d/pop3d.h (pop3d_output_bufsize): New global.
	* pop3d/retr.c (pop3d_send_payload): New function.
	(pop3d_retr): Rewrite using pop3d_send_payload. Save away
	current buffering mode and enforce full buffering while
	transferring bulk data.
	* pop3d/top.c (pop3d_top_: Likewise.

2010-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/url.c (ACCESSOR(is_same,field)): Fix coredump if one
	of the accessors returned MU_ERR_NOENT.

2010-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove leftovers of ARG_LICENSE option from MH.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rename XSCRIPT_ macros to MU_XSCRIPT.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve transcript stream.

	* include/mailutils/stream.h (MU_IOCTL_LEVEL): New ioctl op.
	(XSCRIPT_NORMAL, XSCRIPT_SECURE, XSCRIPT_PAYLOAD): New
	constants.
	* include/mailutils/sys/xscript-stream.h (_mu_xscript_stream)
	<level>: New member.
	* mailbox/xscript-stream.c (TRANS_DISABLED): New flag.
	(print_transcript): Amount of output varies depending on the
	current output level. For secure data, try to recognize
	passwords and to replace them with *** on output.
	(_xscript_ctl): Support MU_IOCTL_LEVEL.
	* pop3d/extra.c (set_xscript_level): New function.
	* pop3d/pop3d.h (set_xscript_level): New proto.
	* pop3d/retr.c (pop3d_retr): Set XSCRIPT_PAYLOAD level before
	sending actual data and reset it to XSCRIPT_NORMAL afterward.
	* pop3d/top.c (pop3d_top): Likewise.
	* pop3d/user.c: Set XSCRIPT_SECURE level while expecting the
	PASS command. 
	* imap4d/fetch.c (imap4d_fetch): Run imap4d_fetch0 in
	XSCRIPT_PAYLOAD level.
	* imap4d/uid.c (imap4d_uid): Likewise.
	* imap4d/imap4d.c (imap4d_mainloop): Unless started in preauth
	mode, select XSCRIPT_SECURE mode until authentication has been
	passed.
	* imap4d/imap4d.h (set_xscript_level): New proto.
	* imap4d/io.c (io_format_completion_response): Switch to
	XSCRIPT_NORMAL level when changing to the authenticated state.
	(imap4d_readline): Read literals in XSCRIPT_PAYLOAD level.
	* imap4d/util.c (set_xscript_level): New function. 
	* include/mailutils/pop3.h (mu_pop3_trace_mask): New prototype.
	(MU_POP3_XSCRIPT_MASK): New macro.
	(_mu_pop3_xscript_level): New proto.
	* libproto/pop/pop3_pass.c (mu_pop3_pass): Set XSCRIPT_SECURE
	while sending the password.
	* libproto/pop/pop3_retr.c (mu_pop3_retr): Set XSCRIPT_PAYLOAD
	before going to MU_POP3_RETR_RX state.
	* libproto/pop/pop3_stream.c (_pop3_event_cb): Set
	XSCRIPT_NORMAL.
	* libproto/pop/pop3_top.c (mu_pop3_top): Set XSCRIPT_PAYLOAD
	before going to MU_POP3_TOP_RX state.
	* libproto/pop/pop3_trace.c (mu_pop3_trace_mask)
	(_mu_pop3_xscript_level): New functions.
	* libproto/pop/mbox.c (pop_open): Set trace masks depending on
	the trace6 and trace7 debug levels. 
	* examples/pop3client.c (com_verbose): Allow to mask/unmask
	transcript levels.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish pop3 mailbox implementation.

	* mailbox/msgscan.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add it. 
	* include/mailutils/body.h (mu_body_set_get_stream): New
	prototype.
	* include/mailutils/message.h (MU_SCAN_SEEK, MU_SCAN_SIZE): New
	defines.
	(mu_message_scan): New structure.
	(mu_stream_scan_message): New prototype.
	(mu_message_set_get_stream): New prototype.
	* include/mailutils/stream.h (mu_stream_copy): Change
	signature: takes 4 arguments now.
	* include/mailutils/sys/body.h (_mu_body) <_get_stream>: New
	method.
	* include/mailutils/sys/message.h (_mu_message) <_get_stream>:
	New method.
	* mailbox/body.c (_body_get_stream): Call _get_stream, if
	provided.
	* mailbox/message.c (_message_get_stream): Call _get_stream, if
	provided. 
	* mailbox/stream.c (_stream_flush_buffer): Avoid infinite
	recursion: call stream->seek directly.
	* mailbox/streamcpy.c (mu_stream_copy): Return the number of
	bytes actually copied in the fourth argument. All uses updated.
	* mailbox/streamref.c (streamref_return): Do not propagate
	internal flags.
	(_streamref_readdelim): Ensure there is enough buffer space for
	the mu_stream_readdelim call. 
	* libproto/pop/mbox.c: Finish client implementation. 
	* mail/print.c (mail_print_msg): Close pager before returning
	on error.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement "read cache" streams. Rewrite stdio and socket
	streams.

	* include/mailutils/sys/stdio_stream.h: Remove.
	* include/mailutils/sys/socket_stream.h: Remove.
	* include/mailutils/sys/rdcache_stream.h: New file.
	* include/mailutils/sys/Makefile.am: Update.
	* mailbox/rdcache_stream.c: New file.
	* mailbox/Makefile.am: Update. 
	* examples/mucat.c: New example.
	* examples/musocio.c: New example.
	* examples/Makefile.am (noinst_PROGRAMS): Build new examples. 
	* include/mailutils/stream.h (mu_fd_stream_create): New proto.
	(mu_rdcache_stream_create): New proto.
	* include/mailutils/sys/file_stream.h (_mu_file_stream_create):
	Change prototype.
	* mailbox/file_stream.c (fd_open): Raise the
	MU_STREAM_AUTOCLOSE bit.
	(fd_ioctl): Support MU_IOCTL_SET_TRANSPORT.
	(_mu_file_stream_create): Change signature. All uses updated.
	Allocate a copy of the filename argument, unless it is NULL.
	(mu_fd_stream_create): New function. 
	* mailbox/socket_stream.c: Rewrite using file_stream directly.
	* mailbox/stdio_stream.c: Rewrite. Use rdcache_stream if the
	seek capability is required on an input stream.
	* mailbox/streamcpy.c (mu_stream_copy): Handle eventual EACCES
	return from mu_stream_seek as equivalent to ENOSYS.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvements in pop3client: readline & history.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Begin rewriting pop3 mailbox support. Several bugfixes.

	* examples/pop3client.c (com_capa): Call mu_pop3_capa_test.
	(com_stat): Count is size_t. 
	* include/mailutils/opool.h (mu_opool_copy): New proto.
	* mailbox/opool.c (mu_opool_copy): New function.
	* mailbox/xscript-stream.c (_xscript_ctl)
	<MU_IOCTL_SWAP_STREAM>: Avoid coredumping if sp->transport is
	NULL. 
	* include/mailutils/pop3.h (pop3_capa_test): Rename to
	mu_pop3_capa_test.
	(mu_pop3_stat): Third argument is a pointer to mu_off_t.
	* libproto/pop/pop3_capatst.c (pop3_capa_test): Rename to
	mu_pop3_capa_test.
	* libproto/pop/pop3_stat.c (mu_pop3_stat): Third argument is a
	pointer to mu_off_t. 
	* libproto/pop/Makefile.am (libmu_pop_la_SOURCES): Put back
	folder.c, url.c and mbox.c.
	* libproto/pop/mbox.c: Begin rewriting.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change in stream API.  Improve POP3 client interface.

	* include/mailutils/sys/stream.h (_MU_STR_EVENT_SET)
	(_MU_STR_EVENT_CLR): New defines.
	(_mu_stream) <event_cb, event_mask>: New members.
	* mailbox/stream.c (_stream_setflag, _stream_clrflag): New
	static functions. All functions use these instead of
	setting/clearing flags directly.
	(_mu_stream_cleareof, _mu_stream_seteof): New extern functions.
	(_stream_cleareof): Remove define, use _mu_stream_cleareof
	instead.
	(_stream_fill_buffer): Set EOF marker when end of stream is
	reached. 
	* mailbox/fltstream.c (filter_read): Call _mu_stream_seteof to
	set EOF flag. 
	* include/mailutils/pop3.h: Get rid of the superfluous "extern"
	in front of function prototypes. Add new prototypes. Remove
	extra whitespace. 
	* libproto/pop/pop3_capatst.c: New file.
	* libproto/pop/pop3_list_cmd.c: New file.
	* libproto/pop/pop3_listas.c: New file.
	* libproto/pop/pop3_rdlist.c: New file.
	* libproto/pop/pop3_uidl_cmd.c: New file.
	* libproto/pop/pop3_uidlas.c: New file.
	* libproto/pop/Makefile.am: Add new files.
	* libproto/pop/pop3_capa.c (_mu_pop3_fill_list): Remove. Use
	mu_pop3_read_list instead.
	(capa_comp): New comparator for capa lists.
	* libproto/pop/pop3_list.c (mu_pop3_list): Fix format
	specifier.
	* libproto/pop/pop3_lista.c (mu_pop3_list_all): Rewrite.
	* libproto/pop/pop3_retr.c (mu_pop3_retr) <MU_POP3_RETR_RX>: do
	not reset state, this is done by the EOF event callback.
	* libproto/pop/pop3_top.c (mu_pop3_top) <MU_POP3_TOP_RX>:
	Likewise.
	* libproto/pop/pop3_stream.c (pop3_decode_state): New state
	pds_char. Change semantics of pds_init.
	(newstate, _pop3_decoder): Handle .\r\n in the initial state.
	(_pop3_event_cb): New event callback.
	(mu_pop3_filter_create): Set event callback on the filter
	stream.
	* libproto/pop/pop3_uidla.c (mu_pop3_uidl_all): Rewrite. 
	* examples/Makefile.am (pop3client_CPPFLAGS): Add
	MU_APP_COMMON_INCLUDES.
	* examples/pop3client.c: Rewrite command parser.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further fixes in pop3.

	* libproto/pop/pop3_create.c (_mu_pop3_init): Fix return value.
	* libproto/pop/pop3_destroy.c: Add missing includes.
	* libproto/pop/pop3_stream.c (_pop3_decoder): Remove the final
	.\r\n altogether.
	* mailbox/fltstream.c (filter_read): Remove the hack for
	supporting buggy filters.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix TLS support in smtp.

	* include/mailutils/tls.h (mu_tls_readline_fn)
	(mu_tls_writeline_fn, mu_tls_stream_ctl_fn): Remove typedefs.
	(mu_tls_begin): Remove prototype.
	* libmu_auth/tls.c (mu_tls_begin): Remove function.
	* libproto/mailer/smtp.c: Revamp STARTTLS support.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement pop3 client functions.

	* include/mailutils/filter.h (mu_filter_io) <eof>: New member.
	* mailbox/fltstream.c (init_iobuf): Initialize eof to 0.
	(filter_read): Break the loop if the decoder has set eof.
	* mailbox/xscript-stream.c (_xscript_ctl)
	<MU_IOCTL_SWAP_STREAM>: Handle a special case when the
	transport does not support stream swapping. 
	* include/mailutils/pop3.h (mu_pop3_set_debug): Remove.
	(MU_POP3_TRACE_CLR, MU_POP3_TRACE_SET, MU_POP3_TRACE_QRY): New
	macros.
	(mu_pop3_trace): New proto.
	(mu_pop3_readline): Remove.
	(mu_pop3_getline): New proto.
	(mu_pop3_capa): Change signature.
	* include/mailutils/sys/pop3.h (mu_pop3_state): Remove the
	*_ACK states.
	(mu_pop3_work_buf): Remove.
	(MU_POP3_ACK, MU_POP3_TRACE): New defines.
	(_mu_pop3): Rewrite the structure.
	(mu_pop3_debug_cmd, mu_pop3_debug_ack): Remove functions.
	(MU_POP3_FISSET, MU_POP3_FSET, MU_POP3_FCLR): New macros.
	(_mu_pop3_trace_enable, _mu_pop3_trace_disable)
	(_mu_pop3_init): New protos. 
	* include/mailutils/tls.h (mu_tls_stream_ctl_fn)
	(mu_tls_writeline_fn): Change typedefs.
	* libmu_auth/tls.c (mu_tls_begin): Update function calls
	accordingly. 
	* libproto/pop/pop3_debug.c: Remove.
	* libproto/pop/pop3_trace.c: New function.
	* libproto/pop/Makefile.am (libmu_pop_la_SOURCES): Temporarly
	comment out folder.c, mbox.c and url.c. Remove pop3_debug.c.
	Add pop3_trace.c.
	* libproto/pop/pop3_capa.c: Rewrite.
	* libproto/pop/pop3_create.c: Rewrite.
	* libproto/pop/pop3_iterator.c: Rewrite.
	* libproto/pop/pop3_response.c: Rewrite.
	* libproto/pop/pop3_sendline.c: Rewrite.
	* libproto/pop/pop3_stls.c: Rewrite.
	* libproto/pop/pop3_stream.c: Rewrite.
	* libproto/pop/pop3_apop.c: Reflect changes to the pop3
	framework.
	* libproto/pop/pop3_carrier.c: Likewise.
	* libproto/pop/pop3_connect.c: Likewise.
	* libproto/pop/pop3_dele.c: Likewise.
	* libproto/pop/pop3_destroy.c: Likewise.
	* libproto/pop/pop3_disconnect.c: Likewise.
	* libproto/pop/pop3_list.c: Likewise.
	* libproto/pop/pop3_lista.c: Likewise.
	* libproto/pop/pop3_noop.c: Likewise.
	* libproto/pop/pop3_pass.c: Likewise.
	* libproto/pop/pop3_quit.c: Likewise.
	* libproto/pop/pop3_retr.c: Likewise.
	* libproto/pop/pop3_readline.c: Likewise.
	* libproto/pop/pop3_rset.c: Likewise.
	* libproto/pop/pop3_stat.c: Likewise.
	* libproto/pop/pop3_top.c: Likewise.
	* libproto/pop/pop3_uidl.c: Likewise.
	* libproto/pop/pop3_uidla.c: Likewise.
	* libproto/pop/pop3_user.c: Likewise. 
	* examples/pop3client.c: Implement the stls command.
	(main) [WITH_TLS]: Call mu_init_tls_libs.
	(com_verbose): Redo verbose support.
	(com_capa): Implement "reread" option.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Reorganize directory tree.

	Move libproto/include/(*)0.h to include/mailutils/sys/\1.h
	Remove libproto/include.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove unused constants.

	* pop3d/pop3d.h (POP_MAXCMDLEN, BUFFERSIZE): Remove constants.
	(_QNX_SOURCE): Remove define.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: bugfixes.

	* pop3d/apop.c (pop3d_apopuser, pop3d_apopuser): Remove
	statically allocated buffers.
	* pop3d/pop3d.c (pop3d_mainloop): Likewise.
	* pop3d/user.c (pop3d_begin_session): Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: optimize apop support.

	* pop3d/apop.c (pop3d_apopuser): Fix highly ineffective
	resource usage in both branches.
	* pop3d/pop3d.c: Remove misleading comment.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement GSASL support.

	* libmu_auth/lbuf.c: Removed.
	* libmu_auth/lbuf.h: Removed.
	* libmu_auth/Makefile.am : Remove lbuf stuff. 
	* include/mailutils/sys/gsasl-stream.h: New file.
	* include/mailutils/sys/Makefile.am: Add gsasl-stream.h.
	* include/mailutils/gsasl.h (mu_gsasl_stream_create): Remove.
	(gsasl_encoder_stream, gsasl_decoder_stream): New prototypes. 
	* libmu_auth/gsasl.c: Rewrite. 
	* imap4d/authenticate.c (auth_data): Remove. Use struct
	imap4d_auth instead.
	(_auth_try): Use new authentication API.
	(imap4d_authenticate): Likewise.
	* imap4d/imap4d.h (util_register_event, util_event_remove)
	(util_run_events): Remove.
	(imap4d_auth_handler_fp): Change prototype.
	(imap4d_auth): New struct.
	(imap4d_auth_result): New enum.
	* imap4d/io.c (io_format_completion_response)
	(io_stream_completion_response): New functions.
	(io_completion_response): Rewrite using
	io_format_completion_response.
	* imap4d/util.c (sc2string): Remove leftover prototype.
	(util_register_event, util_event_remove)
	(util_run_events): Remove.
	* imap4d/auth_gsasl.c: Revamp using new streams and the new
	authentication interface.
	* imap4d/auth_gss.c: Likewise (though yet untested). 
	* mailbox/xscript-stream.c (_xscript_ctl): Remove unused
	variables.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Port the new I/O scheme from pop3d to imap4d.

	* mailbox/fltstream.c (filter_wr_flush): Fix erroneous
	conditional.
	(filter_wait): New method.
	(mu_filter_stream_create): Set wait method. 
	* imap4d/io.c: New source.
	* imap4d/Makefile.am: Add io.c
	* imap4d/*: Update I/O function calls.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* pop3d/extra.c (pop3d_setio): Use the canonic name of the CRLF
	filter, instead of the legacy "rfc822".
	* imap4d/fetch.c: Likewise.
	* imap4d/util.c: Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement an ioctl for replace bottom-level transport layers in
	a stream chain.

	* include/mailutils/stream.h (MU_IOCTL_SWAP_STREAM): New ioctl
	op.
	(mu_stream_seterr): New function.
	* include/mailutils/sys/stream.h (_MU_SWAP_FIRST_ONLY)
	(_MU_SWAP_IOCTL_MUST_SUCCEED): New defines.
	(_mu_stream_swap_streams): New proto.
	* mailbox/amd.c (amd_body_stream_read): Always update *pnread.
	* mailbox/errors (MU_ERR_NO_TRANSPORT): New error code. 
	* mailbox/stream.c (_stream_seterror): Rename to
	mu_stream_seterr, remove static qualifier. All uses updated.
	(_mu_stream_swap_streams): New function. 
	* mailbox/filter_iconv.c (_icvt_ioctl): Implement
	MU_IOCTL_SWAP_STREAM.
	* mailbox/iostream.c (_iostream_ctl): Likewise.
	* mailbox/xscript-stream.c (_xscript_ctl): Likewise. 
	* pop3d/extra.c (real_istream, real_ostream): Remove statics.
	(pop3d_init_tls_server): Use MU_IOCTL_SWAP_STREAM to replace
	bottom-level transport layers without recreating the entire
	stream chain.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Redo the support for transport-based streams.

	If a stream takes another stream(s) as a transport, it always
	increases its reference count. This means that when that stream
	is destroyed the underlying stream is not destroyed by default
	(its refcount is decreased, that's all). To force destruction
	of the underlying stream, the caller must explicitly
	unreference it after creating the stream that uses it (or give
	its creation function the MU_STREAM_AUTOCLOSE flag, if it
	supports flags).

	Similarly, if a stream uses a non-stream object (e.g. a file
	descriptor) as the transport, it will not destroy it, unless it
	has been created with the MU_STREAM_AUTOCLOSE flag. This
	differs from the previous behavior.

	The MU_STREAM_NO_CHECK and MU_STREAM_NO_CLOSE flags are
	removed.

	* examples/base64.c (main): Call mu_filter_create with the
	MU_STREAM_AUTOCLOSE flag.
	* examples/mimetest.c (message_display_parts): Likewise.
	* examples/murun.c (main): Unref the input stream after passing
	it to mu_filter_prog_stream_create.
	* imap4d/fetch.c (fetch_io): Update arguments to
	mu_filter_create and mu_memory_stream_create.
	* imap4d/preauth.c (decode64_buf)
	(do_preauth_ident): Update arguments to mu_memory_stream_create
	and mu_tcp_stream_create.
	* imap4d/util.c (util_setio): Update arguments to
	mu_filter_create and mu_stdio_stream_create.
	* include/mailutils/stream.h (MU_STREAM_NO_CLOSE)
	(MU_STREAM_NO_CHECK): Remove.
	(MU_STREAM_AUTOCLOSE): New flag.
	(mu_iostream_create): Remove the `flags' argument.
	* libmu_argp/muinit.c (mu_app_init): Update arguments to
	mu_stdio_stream_create.
	* libmu_auth/ldap.c: Update arguments to
	mu_memory_stream_create and mu_filter_create.
	* libmu_auth/tls.c (_tls_io_close, _tls_close): Always try to
	close the transport stream. Rely on refcount to protect it.
	(_tls_io_done, _tls_done): Likewise, always unreference it.
	(_mu_tls_io_stream_create): Increase reference counter on the
	transport stream, unless MU_STREAM_AUTOCLOSE is requested.
	(_mu_tls_stream_create): Rewrite using the new
	MU_STREAM_AUTOCLOSE logic.
	* libmu_sieve/extensions/spamd.c (spamd_connect_tcp): Update
	arguments to mu_tcp_stream_create.
	(spamd_connect_tcp): Update arguments to
	mu_socket_stream_create and mu_filter_create.
	* libmu_sieve/extensions/vacation.c (build_mime): Update
	arguments to mu_filter_create.
	* mail/decode.c (display_submessage): Update arguments to
	mu_filter_create.
	* mailbox/attachment.c (mu_message_save_attachment): Update
	arguments to mu_filter_create.
	* mailbox/cfg_driver.c (mu_cfg_tree_reduce): Update arguments
	to mu_stdio_stream_create.
	* mailbox/dbgstream.c (_dbg_done): Use MU_STREAM_AUTOCLOSE bit
	to decide whether to destroy the debug object.
	(mu_dbgstream_create): Use MU_STREAM_AUTOCLOSE instead of
	MU_STREAM_NO_CLOSE.
	* mailbox/file_stream.c (fd_close): Use MU_STREAM_AUTOCLOSE bit
	to decide whether to close the descriptor.
	(mu_file_stream_create): Force MU_STREAM_AUTOCLOSE bit.
	* mailbox/filter.c (filter_create_rd, filter_create_wr): Change
	substream creation logic.
	* mailbox/filter_iconv.c (_icvt_close): Always try to close the
	transport stream. Rely on refcount to protect it.
	(_icvt_done): Ditto for destroying it.
	(mu_filter_iconv_create): Increase refcount on the transport
	stream, unless MU_STREAM_AUTOCLOSE is requested.
	* mailbox/fltstream.c (filter_done): Always dereference the
	transport stream. Rely on refcount to protect it.
	(filter_close): Ditto for closing it.
	(mu_filter_stream_create): Increase refcount on the transport
	stream, unless MU_STREAM_AUTOCLOSE is requested.
	* mailbox/iostream.c (_iostream_close) : Always try to close
	the transport stream. Rely on refcount to protect it.
	(_iostream_done): Ditto for closing it.
	(mu_iostream_create): Remove the use of MU_STREAM_NO_CLOSE.
	* mailbox/mimehdr.c (mu_mimehdr_decode_param): Remove the use
	of MU_STREAM_NO_CLOSE.
	* mailbox/mutil.c (mu_decode_filter) Change substream creation
	logic.
	* mailbox/prog_stream.c (_prog_open): Use MU_STREAM_AUTOCLOSE
	bit in arguments to mu_stdio_stream_create.
	(mu_filter_prog_stream_create): Increase refcount on the
	transport (input) stream.
	* mailbox/rfc2047.c (mu_rfc2047_decode): Dereference in_stream
	after passing it to mu_decode_filter. Pass MU_STREAM_AUTOCLOSE
	in flags to mu_filter_create.
	* mailbox/socket_stream.c (mu_socket_stream_create): Force
	MU_STREAM_AUTOCLOSE bit.
	* mailbox/streamref.c (_streamref_close): Always close the
	transport stream (refcount will protect it, if necessary).
	(mu_streamref_create_abridged): Mask out the
	MU_STREAM_AUTOCLOSE bit.
	* mailbox/temp_file_stream.c (mu_temp_file_stream_create: Force
	MU_STREAM_AUTOCLOSE bit.
	* mailbox/xscript-stream.c (_xscript_close): Always close the
	transport stream (refcount will protect it, if necessary).
	(mu_xscript_stream_create): Increase refcounts on both
	underlying streams, unless MU_STREAM_AUTOCLOSE is set.
	* pop3d/extra.c (pop3d_setio): Remove uses of
	MU_STREAM_NO_CLOSE. 
	* examples/nntpclient.c: Remove uses of
	MU_STREAM_NO_CHECK/MU_STREAM_NO_CLOSE.
	* examples/pop3client.c: Likewise.
	* libmu_auth/gsasl.c: Likewise.
	* libproto/nntp/nntp_stream.c: Likewise.
	* libproto/pop/pop3_stream.c: Likewise.
	* mailbox/tcp.c: Likewise.
	* mailbox/vartab.c: Likewise.
	* mh/mh_list.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* mh/mhn.c: Likewise.
	(edit_mime): Use MU_STREAM_AUTOCLOSE.

	Bugfixes: 
	* mailbox/fltstream.c (init_iobuf): Fix input initialization.
	(filter_write_internal): Bugfix.
	* mailbox/stream.c (_stream_buffer_freespace): New macro.
	(_stream_buffer_is_full): New macro.
	(BUFFER_FULL_P): Remove, use _stream_buffer_is_full instead.
	All callers updated.
	(_stream_flush_buffer): Operation for full buffered streams
	does not depend on the `all' flag.
	(mu_stream_write): Fix calculation of the bytes available in
	the buffer.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a framework for printing I/O transcripts; modify pop3d to
	use it.

	* include/mailutils/stream.h (MU_STREAM_RDTHRU)
	(MU_STREAM_WRTHRU,MU_IOCTL_SET_TRANSPORT): New flags.
	(mu_xscript_stream_create, mu_iostream_create)
	(mu_dbgstream_create): New prototypes.
	* include/mailutils/sys/dbgstream.h: New header.
	* include/mailutils/sys/iostream.h: New header.
	* include/mailutils/sys/xscript-stream.h: New header.
	* include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add
	dbgstream.h, iostream.h and xscript-stream.h
	* mailbox/dbgstream.c: New file.
	* mailbox/iostream.c: New file.
	* mailbox/xscript-stream.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add
	dbgstream.c, iostream.c and xscript-stream.c
	* mailbox/filter_iconv.c (_icvt_ioctl): Simplify the
	declaration of ptrans.
	* mailbox/mapfile_stream.c (_mapfile_ioctl): Likewise.
	* mailbox/memory_stream.c (_memory_ioctl): Likewise.
	* mailbox/prog_stream.c (_prog_ioctl): Likewise.
	* mailbox/tcp.c (_tcp_ioctl): Likewise.
	* mailbox/fltstream.c (filter_ctl): Likewise.
	(filter_read_through, filter_write_through): New methods.
	(mu_filter_stream_create): Allow for use of MU_STREAM_RDTHRU
	and MU_STREAM_WRTHRU to create two-way filters (writing
	triggers filtering while reading is transparent or vice versa).
	* pop3d/extra.c (istream, ostream): Remove globals.
	(iostream): New variable.
	(real_istream, real_ostream): New variables.
	(pop3d_setio): Set transcript stream on top of the I/O one, if
	required.
	(pop3d_init_tls_server): Rewrite. Revert the meaning of the
	return code to match the usual convention (0 - success).
	(transcript): Removed.
	(pop3d_outf): Remove calls to transcript.
	* pop3d/pop3d.h (istream, ostream): Remove externs.
	(iostream): New extern.
	* pop3d/retr.c: Use iostream, instear of ostream.
	* pop3d/top.c: Likewise.
	* pop3d/stls.c: Update the call to pop3d_init_tls_server. 
	* mailbox/stream_vprintf.c (mu_stream_vprintf): Fix return
	value to match the usual convention.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-implement server TLS support.

	STLS in pop3d is already working.

	* include/mailutils/sys/tls-stream.h: New header.
	* include/mailutils/tls.h (mu_tls_stream_create)
	(mu_tls_stream_create_client)
	(mu_tls_stream_create_client_from_tcp): Remove.
	(mu_tls_server_stream_create, mu_tls_client_stream_create): New
	protos.
	* libmu_auth/tls.c: Rewrite. 
	* imap4d/util.c: Use mu_tls_server_stream_create.
	* libproto/pop/mbox.c: Use mu_tls_server_stream_create/
	mu_tls_client_stream_create.
	* libproto/pop/pop3_stls.c: Use mu_tls_client_stream_create.
	* libproto/imap/folder.c: Use mu_tls_client_stream_create. 
	* pop3d/capa.c (pop3d_capa): CAPA is allowed in both states.
	* pop3d/extra.c (pop3d_setio): Rewrite.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	amd, pop3d: bugfixes.

	* mailbox/amd.c (amd_body_stream_readdelim): Fix the logic.
	* mailbox/message.c (_message_stream_seek): Fix seeks in
	backward direction.
	* pop3d/top.c: Fix output of the body.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* imap4d/append.c: Add a comment.
	* imap4d/imap4d.h (imap4d_child_signal_setup): New proto.
	* libmu_sieve/extensions/pipe.c (sieve_action_pipe): Use
	mu_stream_copy, rewrite error handling.
	* libmu_sieve/extensions/spamd.c (spamd_send_message): se
	mu_stream_copy.
	(spamd_test): Honor dry-run mode.
	* libmu_sieve/extensions/vacation.c (build_mime): Remove
	misleading FIXME. Use mu_stream_copy.
	* libmu_sieve/extensions/moderator.c
	(moderator_message_get_part): Use mu_body_get_streamref.
	* examples/header.c (hstream): New global.
	(cmd_load, cmd_free, cmd_remove, cmd_insert): Discard hstream.
	(cmd_readline): Use hstream. Obtain it using
	mu_stream_readline.
	* libproto/mbox/mbox.c (mbox_envelope_date): Remove trailing
	newline from the obtained envelope line.
	* mailbox/amd.c (amd_body_stream_seek): Allow for off == size
	(important for empty bodies).

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	libmu_sieve: cleanup.

	* libmu_sieve/actions.c (mime_create_quote): Use
	mu_stream_copy.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: cleanup.

	* pop3d/pop3d.h: Include filter.h.
	(istream, ostream): New externs.
	* pop3d/extra.c (pop3d_setio): Set a crlf filter on the output
	stream. This allows to forget about \r in the rest of the code.
	* pop3d/retr.c (pop3d_retr): Use mu_stream_copy instead of
	copying streams manually.
	* pop3d/top.c (pop3d_top): Rewrite using streamrefs and
	mu_stream_copy.
	* all sources: Use \n instead of \r\n in output strings.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix mime creation and Sieve reject/redirect actions.

	* examples/mta.c (finalize_option): New variable.
	(message_finalize): Don't modify the message if finalize_option
	is 0.
	* include/mailutils/sys/message.h (_mu_message)
	<orig_header_size>: New member.
	* include/mailutils/sys/mime.h (_mu_mime) <part_stream>: New
	member.
	* libmu_sieve/actions.c (mime_create_reason)
	(mime_create_ds): Use mu_body_get_streamref.
	(mime_create_quote): Use
	mu_body_get_streamref/mu_message_get_streamref.
	(sieve_action_reject): Set the To: header.
	* mailbox/message.c (mu_message_get_header): Set
	orig_header_size.
	(mu_message_get_body): Use orig_header_size instead of relying
	on mu_header_size.
	* mailbox/mime.c (_mime_part_size): New static.
	(_mime_body_stream_size): New method.
	(_mime_body_seek): Rename to _mime_body_stream_seek.
	(_mime_body_read): Rewrite and rename to
	_mime_body_stream_read.
	(_mime_body_ioctl): Rename to _mime_body_stream_ioctl.
	(create_mime_body_stream): Take mu_mime_t as the 2nd parameter.
	Initialize sp->stream.size and sp->mime.
	(_mime_body_size): Rewrite using _mime_part_size.
	(mu_mime_destroy): Destroy part_stream.
	* sieve/testsuite/Redirect: Reflect new mta behavior.
	* sieve/testsuite/Reject: Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further bugfixes.

	* libproto/mbox/mbox.c (_msg_stream_setup): Fix abridgment
	limits.
	(mbox_expunge_unlocked): Don't write extra newline after each
	message.
	* mailbox/stream.c (mu_stream_seek): ESPIPE does not constitute
	a permanent error.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix mime test.

	* mailbox/mime.c (mu_mime_get_part): Fix the end limit for the
	part's abridgment.
	* mailbox/streamref.c (_streamref_seek): Fix ESPIPE condition.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	pop3d: bugfixes.

	* include/mailutils/message.h (mu_message_set_stream): Mark as
	deprecated.
	* pop3d/retr.c (pop3d_retr): Rewind the stream obtained from
	mu_message_get_stream.
	* pop3d/top.c (pop3d_top): Rewind the streams obtained from
	mu_body_get_stream and mu_header_get_stream.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix encode2047 test.

	* mailbox/base64.c (_base64_encoder): Fix the use of
	uninitialized variable.
	* mailbox/rfc2047.c (mu_rfc2047_encode): Rewind the input
	stream before reading from it.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix decode2047 test.

	* mailbox/filter_iconv.c (mu_filter_iconv_create): Set filter
	flags.
	* mailbox/fltstream.c (mu_filter_stream_create): Likewise.
	* mailbox/qpflt.c (_qp_decoder): Handle '_'.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix base64 test.

	* examples/base64.c (c_copy): Handle printable mode (-p).
	(reset_line_length): New function.
	(main): New option -lN sets the maximum length for output lines
	to N (0 means unlimited).
	* mailbox/testsuite/mailbox/base64.exp: Use -l0 in the Decode
	test.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* include/mailutils/header.h (mu_header_invalidate): New proto.
	* mailbox/header.c (mu_header_invalidate): New function. 
	* libmu_argp/muinit.c (get_canonical_name): Avoid coredumping
	if argp_program_version is NULL.
	* mailbox/base64.c (mu_base64_decode): Fix inconsistent return
	code.
	* mailbox/debug.c (mu_debug_destroy): Allow for debug->stream
	== NULL. 
	* mailbox/mapfile_stream.c (_mapfile_truncate): Incorrect size
	was used when unmapping.
	* mailbox/message.c (mu_message_create_copy): Use a temporary
	memory stream.
	(mu_message_get_body): Comment out the check for
	MESSAGE_INTERNAL_STREAM.
	(_message_get_stream): Initialize message header and body. 
	* mailbox/progmailer.c (mu_progmailer_send): Check return from
	the mu_header_get_streamref. 
	* mailbox/stream.c (_stream_scandelim, _stream_readdelim): If
	size is 0, return MU_ERR_BUFSPACE.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix readmsg.

	Readmsg passes all tests successfully.

	* readmsg/msglist.c (msglist): Check return from
	mu_message_get_streamref.
	* readmsg/readmsg.c (print_header, print_body): Check return
	values.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/header.c (header_seek): Do not dereference
	hstr->hdr->size directly, because it may not be initialized
	yet. Use mu_header_size instead.
	* mailbox/message.c (_message_stream_readdelim): Break the loop
	if mu_stream_readdelim returned error or EOF.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various fixes in imap4d.

	Imap4d successfully passes all tests.

	* imap4d/close.c (imap4d_close0): Fix improper use of
	MU_STREAM_READ (flags changed their semantics since then).
	* imap4d/fetch.c: Send \n terminated lines, rely on filters to
	recode line terminators to \r\n.
	(fetch_io): Rewrite using CRLF encoder and util_copy_out.
	(_frt_header_fields): Rewind memory stream before reading from
	it. 
	* imap4d/auth_gsasl.c: Send \n terminated lines, rely on
	filters to recode line terminators to \r\n.
	* imap4d/auth_gss.c: Likewise.
	* imap4d/capability.c: Likewise.
	* imap4d/copy.c: Likewise.
	* imap4d/id.c: Likewise.
	* imap4d/idle.c: Likewise.
	* imap4d/list.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* imap4d/preauth.c: Likewise.
	* imap4d/search.c: Likewise.
	* imap4d/status.c: Likewise.
	* imap4d/store.c: Likewise.
	* imap4d/select.c: Likewise.
	(imap4d_select_status): Fix improper use of MU_STREAM_READ. 
	* imap4d/util.c: Send \n terminated lines, rely on filters to
	recode line terminators to \r\n.
	(util_setio): Apply CRLF filters to both input and output
	streams (in opposite directions).
	(util_copy_out): New function.
	(remove_cr): Remove.
	* imap4d/imap4d.h (util_copy_out): New prototype.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix for mbox read/write consistency.

	* libproto/mbox/mbox.c (append_message_to_stream): Add \n after
	each message (scanner relies on this to determine message
	sizes).

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in stream-related code.

	* mailbox/fltstream.c (filter_read): Do not try to get more
	input until the output buffer is drained.
	* mailbox/mapfile_stream.c (_mapfile_seek): Fix conditional.
	* mailbox/stream.c (_stream_fill_buffer): Fix increment.
	(mu_stream_skip_input_bytes): Bugfixes.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement seek on filters in read-only mode.

	* include/mailutils/stream.h (mu_stream_skip_input_bytes): New
	proto.
	* mailbox/stream.c (mu_stream_skip_input_bytes): New function.
	* mailbox/fltstream.c (filter_seek): Re-implement on top of
	mu_stream_skip_input_bytes.
	(mu_filter_stream_create): Fix flag validity checking. 
	* examples/base64.c: Add new option (-s) for testing seek
	operations on filters.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make version output of the MH utilities more informative.

	* mh/mh_argp.c [MU_ALPHA_RELEASE}: Include git-describe.h
	(mh_program_version_hook): New function.
	(mh_argp_init): Take no arguments. Set
	argp_program_version_hook.
	* mh/mh_getopt.h (ARG_LICENSE): Remove.
	(mh_argp_init): Change proto.

	All sources: Fix calls to mh_argp_init, remove --license
	option.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	For alpha version, include git tag info in the version output.

	* include/mailutils/libargp.h (mu_program_version_hook): New
	proto.
	* libmu_argp/Makefile.am (libmu_argp_a_SOURCES): Remove
	mu_argp.h.
	* libmu_argp/mu_argp.h: Remove.
	* libmu_argp/muinit.c [MU_ALPHA_RELEASE]: Include
	git-describe.h
	(mu_program_version_hook): New function.
	(mu_argp_init): Set mu_program_version_hook, unless vers is
	given. 
	* comsat/comsat.c (main): Call mu_argp_init with NULL
	arguments.
	* config/mailutils-config.c: Likewise.
	* dotlock/dotlock.c: Likewise.
	* examples/muauth.c: Likewise.
	* frm/frm.c: Likewise.
	* frm/from.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* maidag/maidag.c: Likewise.
	* mail/mail.c: Likewise.
	* messages/messages.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* pop3d/popauth.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix conditional compilation.

	* .gitignore: Add git-describe and git-describe.h.
	* Makefile.am (MU_COND_LIBMU_CPP): Replaced with
	MU_COND_SUPPORT_CXX
	(SUBDIRS): Begin with .
	(EXTRA_DIST, BUILT_SOURCES): Add git-describe and
	git-describe.h.
	(git-describe, git-describe.h): New rules.
	(alpha, alphacheck): Use git-describe to produce additional
	suffix.
	* enable.m4 (MU_ENABLE_SUPPORT): Create an Automake condition.
	* configure.ac: Fix MU_ENABLE_SUPPORT calls.
	(--without-python): Replace with --disable-python.
	* examples/Makefile.am: Disable components based on MU_COND
	conditions.
	* libproto/Makefile.am: Likewise.
	* include/mailutils/Makefile.am (MU_COND_LIBMU_CPP): Replace
	with MU_COND_SUPPORT_CXX. 
	* mailbox/nullrec.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add nullrec.c. 
	* mail/decode.c: Remove unused variable.
	* mailbox/streamref.c: Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Simplify stream->seek.

	* include/mailutils/sys/stream.h (_mu_stream) <seek>: Remove
	the `whence' parameter.
	* mailbox/stream.c (mu_stream_seek): Update the seek method
	call. 
	* mailbox/streamref.c (_streamref_seek): Fix the signature.
	Remove unnecessary code.
	* mailbox/amd.c (amd_body_stream_seek): Likewise.
	* mailbox/body.c (_body_seek): Likewise.
	* mailbox/file_stream.c (fd_seek): Likewise.
	* mailbox/filter_iconv.c (_icvt_seek): Likewise.
	* mailbox/fltstream.c (filter_seek): Likewise.
	* mailbox/header.c (header_seek): Likewise.
	* mailbox/mapfile_stream.c (_mapfile_seek): Likewise.
	* mailbox/memory_stream.c (_memory_seek): Likewise.
	* mailbox/message.c (_message_stream_seek): Likewise.
	* mailbox/message_stream.c (_message_stream_seek): Likewise.
	* mailbox/mime.c (_mime_body_seek): Likewise.
	* mailbox/stdio_stream.c (stdio_seek): Likewise.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve CRLF filter.

	* include/mailutils/filter.h (mu_filter_new_data_t): Change
	prototype.
	* mailbox/filter.c (mu_filter_create): Reflect the above.
	* mailbox/crlfflt.c (crlf_state): New enum.
	(_crlf_encoder): Keep state info in xd. Do not modify eventual
	input CRLFs.
	(alloc_state): New function.
	(_rfc822_filter,_crlf_filter): Provide the `newdata' method.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/rfc2047.c (mu_rfc2047_decode): Rewind in_stream.
	* mailbox/stream.c (_stream_scandelim): Break the loop when the
	delimiter is found.
	* mailbox/streamref.c (_streamref_readdelim): Take into account
	the abridgment.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Optimize readline/readdelim/getdelim calls.

	This speeds up common reading operations by factor of 4-6.

	* include/mailutils/stream.h (mu_stream_readdelim): New proto.
	* include/mailutils/sys/stream.h (_mu_stream) <readdelim>: New
	method.
	* mailbox/stream.c (_stream_scandelim, _stream_readdelim): New
	functions.
	(mu_stream_readdelim): New function.
	(mu_stream_readline): Rewrite using mu_stream_readdelim.
	(mu_stream_getdelim): Optimize. 
	* mailbox/amd.c (amd_body_stream_readdelim): New function.
	(_amd_attach_message): Set the readdelim method.
	* mailbox/header.c: Add a placeholder for readdelim method.
	* mailbox/message.c (_message_stream_readdelim): New function.
	(_message_stream_create): Set the readdelim method.
	* mailbox/streamref.c (_streamref_readdelim): New function.
	(mu_streamref_create_abridged): Set the readdelim method.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix amd.

	* mailbox/amd.c (_amd_attach_message): Store body.
	(amd_scan_message): Scan the message only if it has been
	modified after the last scan. Fix loop condition. Store
	mhm->mtime on success.
	(amd_message_stream_open): Enforce full buffering.
	(amd_body_stream_read): Fix.
	(amd_body_stream_seek): Don't call mu_stream_seek on
	mhm->stream.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/message.c (_check_stream_state): Bugfix.
	(_message_stream_seek): Bugfix.
	(_message_stream_read): Always try to fill out the buffer.
	(_message_stream_create): Set MU_STREAM_SEEK flag bit.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in filter_iconv.

	* mailbox/filter_iconv.c (mu_filter_iconv_create): Return the
	created stream in *s.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Keep track of the current offset in the _mu_stream structure.

	* include/mailutils/sys/stream.h (_mu_stream)<offset>: New
	member.
	* mailbox/stream.c (_stream_fill_buffer): Propagate return
	value from mu_stream_read_unbuffered.
	(_stream_flush_buffer): Use stream->offset. Honor the `all'
	argument.
	(mu_stream_seek): Rewrite using the `offset' member.
	(mu_stream_read_unbuffered)
	(mu_stream_write_unbuffered): Update offset.
	(mu_stream_readline): Return EINVAL if size is 0.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use stringrefs, add some guidelines for further editing.

	* comsat/action.c
	* imap4d/fetch.c
	* imap4d/search.c
	* mh/burst.c
	* mh/comp.c
	* mh/forw.c
	* mh/mh_ctx.c
	* mh/mh_format.c
	* mh/mh_list.c
	* mh/mhn.c
	* mh/pick.y
	* pop3d/retr.c
	* pop3d/top.c
	* readmsg/msglist.c
	* readmsg/readmsg.c

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix compilation of libmu_scm.

	* libmu_scm/mu_body.c (mu_scm_body_free): Unref the stream.
	Return 0.
	(mu-body-read-line, mu-body-write): Use stringrefs.
	* libmu_scm/mu_mailbox.c (mu-mailbox-get-port): Use stringrefs.
	* libmu_scm/mu_message.c (mu-message-copy): Use stringrefs. Use
	mu_stream_copy instead of manually copying stream contents.
	(mu-message-get-port): Use stringrefs.
	* libmu_scm/mu_port.c (mu_port_free): Unref the stream.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix compilation of several example programs.

	* examples/header.c: Use streamrefs.
	* examples/mimetest.c: Likewise.
	* examples/mta.c: Likewise.
	* examples/nntpclient.c: Remove an unused variable.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix compilation of mimeview.

	* mimeview/mimeview.c (mimeview_fp): Restore the variable.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix UNIX mbox driver and mail utility.

	The `mail' and `frm' utilities pass tests.

	* include/mailutils/stream.h (mu_stream_err): New proto.
	* libproto/mbox/mbox.c (_msg_stream_setup)
	(_msg_body_setup): Fix stream abridgment.
	(mbox_envelope_date, mbox_envelope_sender): Fix seek position.
	(uid_to_stream): Fix invocation of mu_stream_printf.
	(append_message_to_stream): Likewise.
	(mbox_expunge_unlocked): Rewind tempstr before copying its
	contents back to the mailbox.
	(mbox_expunge0): Open tempstr.
	* libproto/mbox/mbox0.h (_mbox_message)<header_from>: Rename to
	envel_from.
	<header_from_end>: Rename to envel_from_end. All uses changed.
	* libproto/mbox/mboxscan.c: Minor changes. 
	* mail/decode.c: Use streamrefs.
	* mail/escape.c: Likewise.
	* mail/msgset.y: Likewise.
	* mail/pipe.c: Likewise.
	* mail/print.c: Likewise.
	* mail/top.c: Likewise.
	* mail/write.c: Likewise. 
	* mail/send.c: Use streamrefs.
	(mail_send0): Reset env->header after assigning it to the
	message. 
	* mailbox/body.c (_body_seek): Fix a typo which produced a
	recursive call.
	* mailbox/file_stream.c (fd_truncate): New function.
	(_mu_file_stream_create): Initialize str->stream.truncate. 
	* mailbox/header.c (header_parse): Fix parsing of blurbs
	lacking terminating empty line.
	(header_seek): Fix boundary checks. Return new position in
	presult.
	* mailbox/message.c (string_find_eoh): Rewrite to handle \n\n
	split between two successive invocations.
	(_header_fill): Update the invocation of string_find_eoh. 
	* mailbox/stream.c (mu_stream_destroy): Call mu_stream_close.
	(mu_stream_get_flags, mu_stream_set_flags)
	(mu_stream_clr_flags): Ignore internal bits.
	(mu_stream_err): New function.
	(mu_stream_close): Close the stream only if it is not used by
	anyone else.
	* mailbox/streamref.c (_streamref_read): Clear transport error
	if ESPIPE is returned.
	(_streamref_size): Take into account sp->end and sp->start.
	(mu_streamref_create_abridged): Set pointer to 0.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in stream code.

	* mailbox/amd.c (amd_body_stream_seek): Fix boundary checking.
	Return ESPIPE on boundary error.
	* mailbox/header.c (header_seek): Likewise.
	* mailbox/memory_stream.c (_memory_seek): Likewise.
	* mailbox/message.c (_message_stream_seek): Likewise.
	* mailbox/message_stream.c (_message_seek): Likewise.
	* mailbox/stdio_stream.c (stdio_seek): Likewise. 
	* mailbox/file_stream.c (fd_open): Invert error condition. Fix
	computation of open flags. Return immediately if open returns
	-1.
	(fd_seek): Fix boundary checking. Return ESPIPE on boundary
	error.
	* mailbox/mapfile_stream.c (_mapfile_open): Fix flags
	calculation.
	(_mapfile_seek): Fix boundary checking. Return ESPIPE on
	boundary error. 
	* mailbox/streamref.c (_streamref_read): Fix calculation of the
	top size boundary. Return 0 bytes if seek returns ESPIPE.
	(_streamref_seek): Return ESPIPE on boundary error. 
	* mailbox/base64.c (_base64_decoder, _base64_encoder): Do not
	dereference iobuf if cmd is mu_filter_init or mu_filter_done.
	* mailbox/binflt.c (_copy_codec, _bit7_coder): Likewise.
	* mailbox/crlfflt.c (_crlf_encoder, _crlf_decoder): Likewise.
	* mailbox/linelenflt.c (_ll_encoder): Likewise.
	* mailbox/qpflt.c (_qp_decoder, _qp_encoder): Likewise. 
	* mailbox/mailcap.c (mu_mailcap_parse): Fix loop condition.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* examples/sfrom.c (main): Check return from
	mu_mailbox_messages_count.
	* include/mailutils/sys/stream.h (_MU_STR_WRT): New constant.
	* libproto/mbox/mbox.c (_msg_stream_setup): Fix 3rd argument to
	mu_streamref_create_abridged.
	* libproto/mbox/mboxscan.c (mbox_scan_internal): Don't use
	mailbox->stream directly, because its offsets may get shifted
	by observers. Use streamref instead.
	* mailbox/argcv.c (argcv_get): Do nothing if argc <= 0.
	* mailbox/mapfile_stream.c (_mapfile_seek): Fill the *presult.
	* mailbox/memory_stream.c (_memory_done): Remove leftover free.
	* mailbox/stream.c: Reorder functions.
	(_mu_stream_create): Increase reference count (i.e. set it to
	1) before returning.
	(mu_stream_seek): Call _stream_flush_buffer instead of
	mu_stream_flush.
	(mu_stream_read_unbuffered): Return 0 on EOF.
	(mu_stream_write_unbuffered): Set _MU_STR_WRT bit.
	(mu_stream_readline, mu_stream_getdelim): Check the actual
	number of bytes read.
	(mu_stream_flush): Call flush method only if _MU_STR_WRT is
	set. Clear it.
	* mailbox/streamref.c (_streamref_seek): Optimization for
	off==0 and whence == MU_SEEK_CUR.
	(_streamref_seek): Return new offset in ppos.
	(mu_streamref_create_abridged): Set MU_STREAM_NO_CLOSE.
	* mailbox/memory_stream.c (_memory_seek) : Return new offset in
	presult.
	* mailbox/message_stream.c (_message_seek): Likewise.
	* mailbox/stdio_stream.c (stdio_seek): Fix prototype.

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Stream support rewritten from scratch.

	Does not compile yet.

	New files:

	* mailbox/streamref.c
	* include/mailutils/sys/streamref.h
	* include/mailutils/sys/file_stream.h
	* include/mailutils/sys/header_stream.h
	* include/mailutils/sys/mapfile_stream.h
	* include/mailutils/sys/memory_stream.h
	* include/mailutils/sys/message_stream.h
	* include/mailutils/sys/prog_stream.h
	* include/mailutils/sys/socket_stream.h
	* include/mailutils/sys/stdio_stream.h
	* include/mailutils/sys/stream.h
	* include/mailutils/sys/streamtrans.h
	* mailbox/prog_stream.c
	* mailbox/stdio_stream.c
	* mailbox/stream_printf.c
	* mailbox/stream_vprintf.c
	* mailbox/temp_file_stream.c
	* mailbox/streamcpy.c
	* mailbox/binflt.c
	* mailbox/crlfflt.c
	* mailbox/fltstream.c
	* mailbox/qpflt.c
	* mailbox/linelenflt.c

	Removed files:
	* mailbox/filter_rfc822.c
	* mailbox/filter_trans.c

	Moved files (with edits):
	* libproto/include/filter0.h -> include/mailutils/sys/filter.h
	* libproto/include/header0.h -> include/mailutils/sys/header.h
	* libproto/include/message0.h ->
	include/mailutils/sys/message.h
	* libproto/include/mime0.h -> include/mailutils/sys/mime.h

	Modified files:
	* comsat/action.c
	* config/mailutils-config.c
	* examples/base64.c
	* examples/cpp/msg-send.cc
	* examples/header.c
	* examples/http.c
	* examples/iconv.c
	* examples/mimetest.c
	* examples/msg-send.c
	* examples/mta.c
	* examples/murun.c
	* examples/nntpclient.c
	* examples/pop3client.c
	* imap4d/append.c
	* imap4d/auth_gsasl.c
	* imap4d/fetch.c
	* imap4d/preauth.c
	* imap4d/search.c
	* imap4d/util.c
	* include/mailutils/body.h
	* include/mailutils/folder.h
	* include/mailutils/header.h
	* include/mailutils/mailbox.h
	* include/mailutils/mailer.h
	* include/mailutils/mailutils.h
	* include/mailutils/message.h
	* include/mailutils/stream.h
	* include/mailutils/sys/Makefile.am
	* include/mailutils/sys/filter.h
	* include/mailutils/sys/header.h
	* include/mailutils/sys/message.h
	* include/mailutils/sys/mime.h
	* include/mailutils/sys/nntp.h
	* include/mailutils/sys/pop3.h
	* include/mailutils/sys/stream.h
	* include/mailutils/types.hin
	* lib/mailcap.c
	* lib/mu_dbm.h
	* libmu_argp/muinit.c
	* libmu_auth/ldap.c
	* libmu_auth/tls.c
	* libmu_scm/Makefile.am
	* libmu_scm/mu_body.c
	* libmu_scm/mu_message.c
	* libmu_scm/mu_port.c
	* libmu_sieve/actions.c
	* libmu_sieve/extensions/pipe.c
	* libmu_sieve/extensions/spamd.c
	* libmu_sieve/extensions/vacation.c
	* libproto/mailer/smtp.c
	* libproto/mbox/mboxscan.c
	* libproto/mbox/mbox.c
	* libproto/mbox/mbox0.h
	* libproto/nntp/nntp_article.c
	* libproto/nntp/nntp_carrier.c
	* libproto/nntp/nntp_destroy.c
	* libproto/nntp/nntp_ihave.c
	* libproto/nntp/nntp_post.c
	* libproto/nntp/nntp_readline.c
	* libproto/nntp/nntp_sendline.c
	* libproto/pop/pop3_carrier.c
	* libproto/pop/pop3_destroy.c
	* libproto/pop/pop3_readline.c
	* libproto/pop/pop3_sendline.c
	* libproto/pop/pop3_stat.c
	* maidag/mailtmp.c
	* mail/decode.c
	* mail/escape.c
	* mail/msgset.y
	* mail/pipe.c
	* mail/print.c
	* mail/send.c
	* mail/top.c
	* mail/util.c
	* mail/write.c
	* mailbox/Makefile.am
	* mailbox/amd.c
	* mailbox/attachment.c
	* mailbox/body.c
	* mailbox/cfg_driver.c
	* mailbox/cfg_format.c
	* mailbox/debug.c
	* mailbox/file_stream.c
	* mailbox/folder.c
	* mailbox/hdritr.c
	* mailbox/header.c
	* mailbox/mailbox.c
	* mailbox/mailcap.c
	* mailbox/mailer.c
	* mailbox/mapfile_stream.c
	* mailbox/memory_stream.c
	* mailbox/message.c
	* mailbox/message_stream.c
	* mailbox/mime.c
	* mailbox/mimehdr.c
	* mailbox/mutil.c
	* mailbox/prog_stream.c
	* mailbox/progmailer.c
	* mailbox/rfc2047.c
	* mailbox/socket_stream.c
	* mailbox/stream.c
	* mailbox/stream_vprintf.c
	* mailbox/tcp.c
	* mailbox/vartab.c
	* mailbox/wicket.c
	* mh/burst.c
	* mh/comp.c
	* mh/compcommon.c
	* mh/forw.c
	* mh/mh_ctx.c
	* mh/mh_format.c
	* mh/mh_init.c
	* mh/mh_list.c
	* mh/mh_whatnow.c
	* mh/mhl.c
	* mh/mhn.c
	* mh/pick.y
	* mh/repl.c
	* mimeview/mimeview.c
	* mu-aux/generr.awk
	* pop3d/extra.c
	* pop3d/pop3d.h
	* pop3d/retr.c
	* pop3d/top.c
	* readmsg/msglist.c
	* readmsg/readmsg.c
	* sieve/sieve.c

2010-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.2.

	* NEWS, configure.ac: Update.

2010-09-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	imap4d: fetch body with a nonempty section spec returns section
	body without headers.

	* imap4d/fetch.c (fetch_function_closure) <section_tag>: New
	member.
	(_frt_body_text): Output ffc->section_tag after the section
	part by default.
	(_frt_header, _frt_mime): Remove.
	(_frt_header0): Rewrite as a general-purpose _frt_header
	function.
	(parse_section_text): Set _frt_header as a driver function and
	set section_tag accordingly, instead of selecting
	_frt_header/_frt_mime. Set section_tag when selecting
	_frt_body_text.
	(parse_section): Default to _frt_body_text and fall back to
	_frt_body only when an empty section specifier is given.
	* imap4d/testsuite/imap4d/fetch.exp: Update accordingly.

2010-08-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/acl.c (expand_arg): Fix a memory leak.

2010-08-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* examples/mimetest.c (message_display_parts): Remove not
	needed locals.

2010-08-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/mime.c (mu_mime_get_num_parts): Assume MIME message
	is not scanned if nmtp_parts are 0 and boundary is NULL.
	* mailbox/rfc2047.c (mu_rfc2047_decode): Free the buffer prior
	to returning a non-zero status.
	* mailbox/message.c (mu_message_destroy): Install a kludge to
	work over the sloppy ref semantics.
	* mailbox/auth.c (mu_authority_destroy): Free auth_methods
	list.
	* mailbox/locker.c (destroy_dotlock): Free data.dot.nfslock.

2010-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* examples/Makefile.am (mta_CPPFLAGS): New variable.

2010-06-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mu-mailbox-get-size function.

	* libmu_scm/mu_mailbox.c (mu-mailbox-get-size): New function.

2010-05-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix mailbox corruption in imap4d.

	Delivery of a signal when a previous signal was being handled
	caused mailbox corruption.

	* imap4d/imap4d.c (imap4d_child_signal_setup): New function.
	(imap4d_mainloop): Call imap4d_child_signal_setup.
	* imap4d/signal.c (imap4d_child_signal): Reset all signal
	handlers before doing actual job.
	* lib/signal.c (mu_set_signals): Use sigaction.

2010-05-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Movemail improved.

	* movemail/movemail.c: New options: --ignore-errors and
	--program-id.
	(_compare_msgno): Remove now unneeded static.
	(main): Handle --ignore-errors and --program-id settings.
	Optimize the main loop for the case when --uidls is given.
	Return 1 on errors.
	* doc/texinfo/programs.texi: Document new features.

2010-05-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow to use `CALL proc' in MySQL queries.

	* sql/mysql.c (mu_mysql_connect): Set CLIENT_MULTI_RESULTS
	flag.

2010-05-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/url.c (_url_path_default): Fix improper use of sizeof
	(a typo, probably).

2010-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: Improve handling of not implemented options.

	* mh/mh_getopt.c (mh_opt_notimpl, mh_opt_notimpl_warning): New
	functions.
	* mh/mh_getopt.h (mh_opt_notimpl, mh_opt_notimpl_warning): New
	protos.
	* mh/ali.c (doc): Remove 'not implemented' stanza.
	* mh/pick.c: Likewise.
	* mh/anno.c: Use mh_opt_notimpl and mh_opt_notimpl_warning for
	not implemented options.
	* mh/comp.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.

2010-05-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH: a bugfix.

	* mh/mh_global.c (mh_read_profile): Set MU folder directory to
	mh_get_dir. This fixes the bug reported by Peter S Galbraith
	(Id. <15312.1273667793@mixed>, ref.
	http://sourceforge.net/mailarchive/forum.php?thread_name=15904.
	1273699954%40mixed&forum_name=mh-e-devel)

2010-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Upgrade gint to a5774356.

2010-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix GINT_INIT usage.

	* gint: Update to 4e48677eee5a
	* configure.ac (--without-guile): Remove option. Handled by
	GINT_INIT.
	(GINT_INIT): Don't call it within a conditional.

2010-05-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mailbox/rfc2047.c (getword): Initialize *pret to NULL after
	freeing it.

2010-04-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* libproto/include/mime0.h (struct _mu_mime): Use size_t for
	offsets, ssize_t for line_ndx.

2010-04-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for a sequence of semicolons before kw/value pair in a
	structured header.

	* mailbox/mimehdr.c (_header_get_param): Skip superfluous
	semicolons.

2010-04-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove line length limitation in mime parser.

	* libproto/include/mime0.h (struct _mu_mime): New member
	line_size.
	* mailbox/mime.c (_mime_setup_buffers): Use line_size instead
	of MIME_MAX_HDR_LEN.
	(_mime_parse_mpart_message): Reallocate cur_line as necessary.
	(mu_mime_create): Initialize line_size.

2010-04-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow for certain class of broken headers.

	* mailbox/mimehdr.c (_header_get_param): Tolerate unquoted
	value parts which contain tspecials, except ';'.

2010-04-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Accept additional whitespace and quotes in the disposition part
	of MIME headers.

	* mailbox/mimehdr.c (disp_segment_len): New function.
	(mu_mimehdr_get_disp, mu_mimehdr_aget_disp): Use
	disp_segment_len. Unquote the returned string.
	(_header_get_param): Allow for whitespace before '"'. Unquote
	the string before comparison.

2010-04-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/cfg_lexer.l (mu_cfg_parse_file): Parse only regular
	files.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix indirect memory leak in mu_decode_filter.

	* include/mailutils/stream.h (mu_stream_clr_flags): New
	function.
	* mailbox/stream.c (mu_stream_clr_flags): New function.
	* mailbox/mapfile_stream.c (_mapfile_open): Avoid unnecessary
	boolean operation.
	* mailbox/mutil.c (mu_decode_filter): Use mu_stream_clr_flags
	to clear bits.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mu_mimehdr_a?get_disp.

	* mailbox/mimehdr.c (mu_mimehdr_get_disp)
	(mu_mimehdr_aget_disp): Return disposition even if no
	parameters have been given.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory leaks in filter and filter_iconv code.

	* mailbox/filter.c (filter_destroy): Destroy the underlying
	stream, unless flag is given.
	(mu_filter_create): Treat last argument as stream flags.
	* mailbox/filter_iconv.c (_icvt_destroy): Free the icvt_stream
	structure. 
	* examples/mimetest.c (message_display_parts): Pass
	MU_STREAM_NO_CLOSE to the invocation of mu_filter_create.
	* mail/decode.c (display_submessage): Likewise.
	* mailbox/attachment.c (mu_message_save_attachment): Likewise.
	* mh/mh_list.c (eval_body): Likewise.
	* mh/mhn.c (mhn_message_size, show_internal): Likewise.
	(finish_text_msg): Likewise; call mu_stream_destroy 
	* imap4d/preauth.c (decode64_buf): remove unnecessary call to
	mu_stream_destroy.
	* libmu_auth/ldap.c (chk_md5, chk_smd5)
	(chk_sha, chk_ssha): Likewise. 
	* mailbox/mutil.c: Fix indentation.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory leak in mu_rfc2047_decode.

	* mailbox/rfc2047.c (getword): Change signature; return error
	code.
	(mu_rfc2047_decode): Reflect the above change.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvements in the Guile-related code.

	* gint: Upgrade.
	* libmu_scm/Makefile.am: Initialize BUILT_SOURCES.
	* libmu_scm/mu_address.c (address_get_fp): Change signature to
	match those of mu_address_aget family.
	(all functions): Use functions from mu_address_aget family.
	Downcase argument names. Refer to them in the docstring using
	@var notation.
	* libmu_scm/mu_body.c: Downcase argument names. Refer to them
	in the docstring using @var notation.
	* libmu_scm/mu_logger.c: Likewise.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_scm.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.

2010-04-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Migrate Guile support to GINT.

	* gint: New module.
	* am/guile.m4: Remove.
	* mu-aux/guile-doc-snarf: Remove.
	* mu-aux/guile-doc-snarf.awk: Remove.
	* mu-aux/Makefile.am (EXTRA_DIST): Remove guile-doc-snarf,
	guile-doc-snarf.awk 
	* Makefile.am: Add gint.
	* bootstrap.conf: Init gint submodule.
	* configure.ac: Rewrite Guile support using GINT_INIT.
	(AC_CONFIG_FILES): Add gint/Makefile.
	* guimb/scm/Makefile.am (sitedir): Change.
	* guimb/scm/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Include ../gint/gint.mk Adjust all
	variables. Remove unnecessary rules.
	* libmu_scm/mailutils.scm.in: Remove exports and includes.
	Remove obsolete code.
	* libmu_scm/mu_address.c: Use SCM_DEFINE_PUBLIC to declare
	public interfaces.
	* libmu_scm/mu_body.c: Likewise.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.
	* libmu_scm/mu_logger.c: Likewise.
	(mu_scm_logger_init): Make all constants public.
	* libmu_scm/mu_scm.c: Likewise.
	* libmu_scm/mu_guile.c: Use scm_c_catch instead of the obsolete
	scm_internal_lazy_catch.

2010-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix all FIXMEs from b2c1b1ff.  Revise attachment API.

	* include/mailutils/message.h (mu_message_save_attachment)
	(mu_message_encapsulate, mu_message_unencapsulate): Change type
	of the last argument.
	(mu_mime_io_buffer_create,mu_mime_io_buffer_destroy)
	(mu_mime_io_buffer_set_size,mu_mime_io_buffer_get_size)
	(mu_mime_io_buffer_set_charset,mu_mime_io_buffer_sget_charset)
	(mu_mime_io_buffer_aget_charset): New prototypes.
	(mu_mimehdr_get_disp,mu_mimehdr_aget_disp): Remove unneeded
	parameter.
	* include/mailutils/types.hin (mu_mime_io_buffer_t): New type.
	* mailbox/attachment.c (_msg_info): Rename structure to
	_mu_mime_io_buffer.
	<header_buf,header_len,mu_header_size>: Remove unreferenced
	members.
	<refcnt,bufsize,charset>: New members.
	<ioffset,ooffset>: Change type to size_t.
	(mu_mime_io_buffer_create,mu_mime_io_buffer_destroy)
	(mu_mime_io_buffer_set_size,mu_mime_io_buffer_get_size)
	(mu_mime_io_buffer_set_charset,mu_mime_io_buffer_sget_charset)
	(mu_mime_io_buffer_aget_charset): New functions.
	(mu_message_save_attachment)
	(mu_message_encapsulate, mu_message_unencapsulate): Take
	mu_mime_io_buffer_t as the last argument.
	* mailbox/mimehdr.c (mu_mimehdr_get_disp): Remove unneeded
	parameter.
	(mu_mimehdr_aget_disp): Remove unneeded parameter. Store return
	value into pvalue. 
	* examples/mimetest.c (message_display_parts): Use
	mu_mimehdr_aget_disp and mu_mime_io_buffer_* functions.
	* mailbox/testsuite/Mime: Update. 
	* mh/mhn.c (options, opt_handler): New option --charset.
	(store_handler): Use mu_message_aget_decoded_attachment_name.

2010-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* mailbox/rfc2047.c: Minor style fix.

2010-04-08  Wojciech Polak  <polak@gnu.org>

	Reflect recent RFC compatibility changes in Python/C++.

	* examples/python/mimetest.py: Update.
	* include/mailutils/cpp/message.h (get_attachment_name):
	Overload.
	* libmu_cpp/message.cc (Message::get_attachment_name):
	Overload.
	* python/libmu_py/message.c (api_message_get_attachment_name):
	Update.
	* python/mailutils/message.py (Message.get_attachment_name):
	Add optional charset parameter. Return (name, lang) tuple.

2010-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in mu_rfc2047_decode.

	* mailbox/rfc2047.c (mu_rfc2047_decode): Use temporary buffer
	for reading from the filter stream, to avoid preliminary
	breaking from the read loop when end of the buffer is reached.
	Realloc the buffer as necessary.

2010-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/mimehdr.c (_header_get_param): If buf is NULL on
	entry, make sure it always points to allocated memory
	afterward. 
	* examples/mimetest.c (charset): New variable.
	(main): New command line option -c.
	(message_display_parts): Use
	mu_message_aget_decoded_attachment_name. Pass fname to
	mu_message_save_attachment.

2010-04-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve MIME parameter parsing.

	* mailbox/mimehdr.c (_header_get_param): Improve error
	checking. Allow for optional whitespace around the '='.
	* mailbox/rfc2047.c (mu_rfc2047_decode): tocode=NULL is OK.

2010-04-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve compatibility with RFC 2231 and RFC 2047.

	* mailbox/mimehdr.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add
	mailbox/mimehdr.c.
	* mailbox/attachment.c (_header_get_param)
	(_get_attachment_name, mu_message_aget_attachment_name)
	(mu_message_get_attachment_name: Move to mailbox/mimehdr.c
	(with edits).
	(mu_message_save_attachment): Add a FIXME comment.
	* include/mailutils/message.h (MU_MIMEHDR_MULTILINE)
	(MU_MIMEHDR_CSINFO): New defines.
	(mu_mimehdr_get_disp,mu_mimehdr_aget_disp)
	(mu_mimehdr_get_param,mu_mimehdr_aget_param)
	(mu_mimehdr_decode_param)
	(mu_mimehdr_aget_decoded_param): New prototypes.
	(mu_message_aget_attachment_name): Change signature.
	(mu_message_aget_decoded_attachment_name): New prototype. 
	* mailbox/mutil.c (mu_hex2ul): Fix a silly bug (have anybody
	ever tried to use that function?!?)
	* mailbox/testsuite/Urls: Update. 
	* examples/mimetest.c (message_display_parts): Add a FIXME
	comment.
	* libmu_cpp/message.cc (Message::get_attachment_name):
	Likewise.
	* mh/mhn.c (store_handler): Likewise.
	* python/libmu_py/message.c (api_message_get_attachment_name):
	Likewise.

2010-04-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make mu_message_(a?)get_attachment_name RFC-compatible.

	* mailbox/attachment.c (_header_get_param): Rewrite.
	(_get_attachment_name): New auxiliary function.
	(mu_message_aget_attachment_name)
	(mu_message_get_attachment_name): Rewrite using
	_get_attachment_name.
	* mh/mhn.c (store_handler): Use
	mu_message_aget_attachment_name.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mailbox iterators in Scheme.

	* libmu_scm/mu_mailbox.c (struct mu_mailbox)<itr>: New member.
	(mu_scm_mailbox_free): Destroy the iterator.
	(mu_scm_mailbox_create0): Initialize itr to NULL.
	(mu-mailbox-first-message, mu-mailbox-next-message)
	(mu-mailbox-more-messages?): New function.
	* guimb/scm/sieve-core.scm (sieve-run): Rewrite main loop in
	the True Schemish Way.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement mailbox iterators.

	* include/mailutils/mailbox.h (mu_mailbox_get_iterator): New
	function.
	* libproto/include/mailbox0.h (struct _mu_mailbox)<iterator>:
	New member.
	* mailbox/mbxitr.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add mbxitr.c

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/attachment.c (_ISSPECIAL): Fix definition.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Style fix.

	* mailbox/attachment.c: Fix indentation.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of deprecated Guile interfaces in port code.

	* am/guile.m4 (MU_CHECK_GUILE): Check for SCM_DEVAL_P et al.
	* libmu_scm/mu_guile.c (mu_guile_init): Protect calls to
	SCM_DEVAL_P &c. by #ifdef GUILE_DEBUG_MACROS
	* libmu_scm/mu_port.c [!HAVE_SCM_T_OFF](scm_t_off): New
	typedef.
	(mu_port_make_from_stream): Use scm_new_port_table_entry
	instead of the deprecated scm_add_to_port_table

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix SCM syslog interface.

	* libmu_scm/mu_logger.c (log_tag): New static.
	(mu-openlog): Preserve log tag in log_tag, because openlog
	stores its first argument as-is. Simplify argument handling.
	(mu-logger): Simplify argument handling.
	(mu-closelog): Free log_tag.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove the uses of deprecated Guile functions.

	* am/guile.m4 (MU_CHECK_GUILE): Check for scm_t_off.
	* include/mailutils/guile.h (mu_scm_makenum)
	(mu_set_variable): Remove prototypes.
	* libmu_scm/mu_address.c: Remove calls to deprecated Guile
	functions.
	* libmu_scm/mu_body.c: Likewise.
	* libmu_scm/mu_guile.c: Likewise.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.
	* libmu_scm/mu_scm.c (mu_scm_makenum): Remove.
	(mu_set_variable): Remove. Use scm_c_define instead.

2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing include.

	* mailutils/mutil.h: Include mailutils/mutil.h

2010-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix parsing of per-user configuration files.

	The mu_cfg_parse_file function ignored special meaning of the
	initial "~/" in file names. This led to user configuration
	files not being read (mu_libcfg_parse_config creates such names
	if mu_load_user_rcfile is set).

	* mailbox/cfg_lexer.l (mu_cfg_parse_file): Expand initial tilde
	in the file name. Store expanded file name in the opool.
	(mu_get_config): Destroy tree only if it has actually been
	created.
	* mailbox/cfg_parser.y (mu_cfg_parse): Free allocated memory in
	case of error.
	(do_include): Fix memory leak.

2010-03-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.

	* bootstrap.conf: Define COPYRIGHT_HOLDER.

2010-03-19  Simon Josefsson  <simon@josefsson.org>

	Bugfix.

	* imap4d/auth_gsasl.c (auth_gsasl): Fix memory management.

2010-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/cfg_parser.y (mu_cfg_tree_union): Fix coredump on
	b->nodes==NULL.

2010-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Re-do configuration tree support using mu_list_t.

	* include/mailutils/cfg.h (mu_cfg_node)
	<next,node>: Remove members.
	<nodes>: New member.
	(mu_cfg_tree)<head,tail>: Remove.
	<nodes>: New member.
	(mu_cfg_iter_closure): New struct.
	(mu_cfg_preorder): Change prototype.
	(mu_cfg_postorder): Remove.
	(mu_cfg_create_node_list): New proto.
	(mu_cfg_tree_create_node): Change signature.
	(mu_cfg_tree_add_nodelist): New proto.
	(mu_cfg_find_node): Change signature.
	* include/mailutils/libargp.h (mu_argp_node_list): Remove
	struct. (mu_argp_node_list_init, mu_argp_node_list_add)
	(mu_argp_node_list_new, mu_argp_node_list_finish): Change
	signature.
	* libmu_argp/cmdline.c (mu_argp_node_list_init,
	mu_argp_node_list_add)
	(mu_argp_node_list_new, mu_argp_node_list_finish): Take
	mu_list_t as the nodelist argument. 
	* mailbox/cfg_parser.y (parse_head,parse_tail): Remove.
	(parse_node_list): New static, used instead of the above. All
	uses updated.
	(mu_cfg_alloc_node): Last argument is mu_list_t.
	(mu_cfg_create_node_list): New function.
	(mu_cfg_tree_postprocess): Rewrite.
	(mu_cfg_preorder): Rewrite.
	(mu_cfg_postorder): Remove.
	(mu_cfg_destroy_tree): Use mu_list_destroy to free the node
	list.
	(mu_cfg_scan_tree): Update calls to mu_cfg_preorder.
	(mu_cfg_tree_add_node): Rewrite.
	(mu_cfg_tree_add_nodelist): New function.
	(mu_cfg_find_node): Change type of the first argument.
	(mu_cfg_create_subtree): Rewrite. 
	* mailbox/cfg_format.c (mu_cfg_format_parse_tree)
	(mu_cfg_format_node): Use new mu_cfg_preorder function. 
	* libmu_argp/common.c: Update calls to mu_argp_node_ functions.
	* libmu_argp/auth.c: Likewise.
	* comsat/comsat.c: Likewise.
	* config/mailutils-config.c: Likewise.
	* dotlock/dotlock.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* libmu_argp/sieve.c: Likewise.
	* libmu_argp/tls.c: Likewise.
	* maidag/maidag.c: Likewise.
	* mimeview/mimeview.c: Likewise.
	* movemail/movemail.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

2010-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/listlist.c (mu_list_append_list)
	(mu_list_prepend_list): Initialize head.next and head.prev if
	the destination list was empty.
	* mailbox/freeitem.c: Include stdlib.h.
	* mailbox/list.c: Minor style fix.

2010-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement bidirectional iteration over lists.

	* include/mailutils/iterator.h (mu_itrctl_qry_direction)
	(mu_itrctl_set_direction): New mu_itrctl_req constants.
	* mailbox/iterator.c (mu_iterator_dup): Bugfix: copy dup as
	well.
	* mailbox/list.c (struct list_iterator)
	<backwards>: New member.
	(first, next): Move direction depends on the value of
	list_iterator.backwards.
	(list_itrctl): Handle mu_itrctl_qry_direction and
	mu_itrctl_set_direction 
	* examples/listop.c (ictl_dir): New function.
	(ictl_ins): Handle new subcommand "dir".
	(help): Show new subcommand "dir".
	* mailbox/testsuite/mailbox/list.exp: Add tests for iteration
	backwards.

2010-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mu_list_replace and mu_list_remove actually reclaim the memory
	associated with the item.

	* include/mailutils/iterator.h (mu_itrctl_delete_nd)
	(mu_itrctl_replace_nd): New mu_itrctl_req constants.
	* include/mailutils/list.h (mu_list_remove_nd)
	(mu_list_replace_nd): New prototypes.
	(mu_list_destroy_item_t): New typedef.
	(mu_list_set_destroy_item): Return mu_list_destroy_item_t.
	* mailbox/list.c (DESTROY_ITEM): New macro.
	(mu_list_destroy): Use DESTROY_ITEM.
	(mu_list_remove, mu_list_replace): Actually destroy the item
	being removed.
	(mu_list_remove_nd, mu_list_replace_nd): New functions.
	(mu_list_set_destroy_item): Return previous value of
	destroy_item.
	(list_itrctl): Handle mu_itrctl_delete_nd and
	mu_itrctl_replace_nd. 
	* mailbox/observer.c (mu_observable_create): Register
	destroy_item function.
	(mu_observable_destroy): Remove explicit loop. Rely on
	destroy_item instead.
	(mu_observable_detach): Use mu_iterator_ctl to actually remove
	the event.
	* mh/mh_alias.y (_insert_list): Remove.
	(alias_expand_list): Use mu_iterator_ctl to insert replacement
	list and remove the current item.
	* mh/sortm.c (addop): Register destroy_item function.
	(remop): Remove call to free.
	* movemail/movemail.c (main): <uidl loop>: Use mu_itrctl_delete
	to remove items. 
	* libmu_sieve/util.c: Minor change. 
	* mail/util.c (util_slist_compare): New static function.
	(util_slist_add): Register destroy_item and comparison
	functions for the new list.
	(util_slist_remove,util_slist_destroy): Rewrite. 
	* imap4d/authenticate.c (auth_add): Use mu_list_free_item as
	destroy_item function.
	* imap4d/util.c (util_register_event): Likewise. 
	* include/mailutils/cpp/list.h (List)<set_destroy_item>: Change
	return value.
	* libmu_cpp/list.cc (List::set_destroy_item): Reflect changes
	to mu_list_set_destroy_item.
	* libmu_argp/common.c: Include stdlib.h

2010-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement `iterator_ctl' function.

	* include/mailutils/iterator.h (mu_itrctl_req): New enum.
	(mu_iterator_skip, mu_iterator_ctl)
	(mu_iterator_set_itrctl): New prototypes.
	* include/mailutils/list.h (mu_list_free_item): New prototype.
	* libproto/include/iterator0.h (struct _mu_iterator)<itrctl>:
	New method.
	* libproto/include/list0.h (_mu_list_clear): New proto.
	* mailbox/iterator.c (mu_iterator_set_itrctl): New function.
	(mu_iterator_skip, mu_iterator_ctl): New functions.
	* mailbox/list.c (_insert_item): Re-implement function.
	(mu_list_insert): Use _insert_item again.
	(mu_list_remove): Don't keep track of the previous item.
	(list_itrctl): New function.
	(mu_list_get_iterator): Set itrctl method.
	* mailbox/listlist.c (clear_list): Rename to _mu_list_clear,
	remove static qualifier. All uses updated. 
	* mailbox/freeitem.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add
	freeitem.c. 
	* examples/listop.c (read_list): Rewrite to simplify calling
	convention. All callers updated.
	(inctl_tell,ictl_del,ictl_repl)
	(ictl_ins,ictl): New functions.
	(help): Add new commands.
	(shell): Handle "inctl" command.
	(delete): Fix memory leak.
	(main): Set mu_list_free_item as a destroy_item function. 
	* mailbox/testsuite/mailbox/listop.c: Add ictl tests. 
	* libmu_cfg/sieve.c (_add_path): Set mu_list_free_item as a
	destroy_item function.
	* mailbox/gocs.c (mu_gocs_store): Likewise.
	* maidag/lmtp.c (cfun_rcpt_to): Likewise.
	* imap4d/namespace.c (namespace_init): Likewise.
	* libmu_sieve/conf.c (_path_append): Likewise.

2010-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement new list functions.

	* include/mailutils/list.h (_mu_list_ptr_comparator)
	(mu_list_insert_list, mu_list_append_list)
	(mu_list_prepend_list): New prototypes.
	* libproto/include/list0.h (_mu_list_insert_sublist): New
	prototype.
	* mailbox/listlist.c: New function.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add
	listlist.c.
	* mailbox/list.c: Remove unnecessary parentheses.
	(def_comp): Rename to _mu_list_ptr_comparator. Remove static
	qualifier. All uses updated.
	(_insert_item): Remove.
	(mu_list_insert): Use _mu_list_insert_sublist instead of
	_insert_item.
	* examples/listop.c (print): Print number of elements.
	(count): New function.
	(ins): Use mu_list_insert if only one new element was given,
	mu_list_insert_list otherwise.
	(help): Update.
	(main)<count>: New keyword.
	* mailbox/testsuite/mailbox/list.exp: Update. Add new tests.

2010-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* mailbox/attachment.c (MAX_HDR_LEN): Remove unused define.
	* sieve/sieve.c (parser) <ARGP_KEY_NO_ARGS>: Don't check for
	the script,
	(main): ... do it here, instead.

2010-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Work around a libtool bug.

	* configure.ac [WITH_GSSAPI]: Remove any -Wl directives from
	GSSAPI_LIBS.

2010-02-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mail/send.c (mail_send0): Pipe message to the program if the
	value of sendmail variable begins with a slash. Otherwise,
	issue meaningful error messages if the mailer cannot be created
	or opened.

2010-02-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mbox/mbox.c (mbox_append_message): Fix qid
	calculation.

2010-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mailer/smtp.c (cram_md5): Remove left-over
	assignment to challenge_len.

2010-02-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix memory override in smtp.c code. Fix ESMTP capability
	parsing.

	* mailbox/base64.c (mu_base64_encode): Make sure output buffer
	is null-terminated.
	* imap4d/auth_gss.c (auth_gssapi): Assume buffer returned by
	mu_base64_encode is null-terminated.
	* libproto/mailer/smtp.c (cram_md5): Take challenge_len as
	argument. All callers updated.
	(smtp_auth): Fix eventual memory override. Assume buffer
	returned by mu_base64_encode is nul-terminated.
	(smtp_parse_ehlo_ack): Fix capability parsing: (a) do not
	depend on the continuation marker ('-' or ' ') and (b) fix
	parsing of the SIZE capability. Move call to mu_rtrim_cset out
	of the internal loop.

2010-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix TLS stream leak.

	* libmu_auth/tls.c (_tls_destroy): Destroy underlying streams,
	unless MU_STREAM_NO_CLOSE is set.
	(_tls_close): Likewise for close.

2010-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libproto/imap/mbox.c (imap_append_message0): Send trailing
	CRLF, not just LF.
	* mailbox/cfg_parser.y (mu_cfg_parse): Zero out _mu_cfg_debug
	to avoid destroying it doubly.
	* mailbox/mbx_default.c (plus_expand): Remove unused variable.

2010-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix improperly placed variable declarations.

	* imap4d/id.c
	* libproto/imap/folder.c
	* libproto/pop/mbox.c
	* sieve/sieve.c

2010-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* sieve/testsuite/sieve/ext.exp [!HAVE_LIBLTDL]: Use
	unsupported instead of returning 0.

2010-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix compilation without sendmail.

	* libproto/mailer/remote.c: Fix compilation with
	--disable-sendmail.
	* mail/testsuite/mail/send.exp: Ignore test (return
	UNSUPPORTED), if sendmail support is not compiled.
	* sieve/testsuite/sieve/redirect.exp: Likewise.
	* sieve/testsuite/sieve/reject.exp: Likewise.

2010-01-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	MH-related bugfixes.

	* mailbox/mbx_default.c (plus_expand): Do not treat the part
	between initial + and / as user name.
	* mh/mh_format.c (print_fmt_segment): New function.
	(print_fmt_string): Correctly handle multi-line inputs.

2010-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	More fixes in libmu_scm.

	* libmu_scm/mu_mailbox.c (mu-mailbox-get-port): Fix return
	value.
	* libmu_scm/mu_port.c (mu_port_flush): Avoid warnings on
	passing arg 2 to mu_stream_write.
	(mu_port_free): Return 0.
	* libmu_scm/mu_message.c (mu_scm_message_free): Return 0.

2010-01-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Do not use deprecated Guile functions.

	* libmu_scm/mu_address.c: Use scm_to_locale_string instead of
	relying on scm_i_string_chars.
	* libmu_scm/mu_logger.c: Likewise.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_scm.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	(mu_scm_message_add_owner): Don't use SCM_NEWCELL.
	(mu-message-get-envelope)
	(mu-message-get-envelope-date): New functions.
	(string_sloppy_member): Compare scm_i_string_length bytes from
	the car.
	(mu-message-get-header-fields): Don't use SCM_NEWCELL.
	* libmu_scm/mu_port.c (mu_port_make_from_stream): Don't use
	SCM_NEWCELL.

2010-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/stream.c (mu_stream_readline): Account for
	terminating null (fixes buffer overrun).
	(mu_stream_getline): Fix reallocation condition.

2010-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove incompatibly-copyrighted material.

	* configure.ac: Remove doc/rfc/Makefile.am
	* doc/Makefile.am (SUBDIRS): Remove rfc.
	(EXTRA_DIST): Add rfc/README.
	* doc/rfc/README: New file.
	* doc/rfc/CMC_V1.PS.gz: Remove.
	* doc/rfc/Makefile.am: Remove.
	* doc/rfc/rfc1413.txt: Remove.
	* doc/rfc/rfc1521.txt: Remove.
	* doc/rfc/rfc1731.txt: Remove.
	* doc/rfc/rfc1734.txt: Remove.
	* doc/rfc/rfc1738.txt: Remove.
	* doc/rfc/rfc1870.txt: Remove.
	* doc/rfc/rfc1891.txt: Remove.
	* doc/rfc/rfc1892.txt: Remove.
	* doc/rfc/rfc1893.txt: Remove.
	* doc/rfc/rfc1894.txt: Remove.
	* doc/rfc/rfc1939.txt: Remove.
	* doc/rfc/rfc1957.txt: Remove.
	* doc/rfc/rfc2045.txt: Remove.
	* doc/rfc/rfc2046.txt: Remove.
	* doc/rfc/rfc2047.txt: Remove.
	* doc/rfc/rfc2049.txt: Remove.
	* doc/rfc/rfc2060-errata
	* doc/rfc/rfc2060.txt: Remove.
	* doc/rfc/rfc2087.txt: Remove.
	* doc/rfc/rfc2088.txt: Remove.
	* doc/rfc/rfc2111.txt: Remove.
	* doc/rfc/rfc2177.txt: Remove.
	* doc/rfc/rfc2180.txt: Remove.
	* doc/rfc/rfc2192.txt: Remove.
	* doc/rfc/rfc2193.txt: Remove.
	* doc/rfc/rfc2195.txt: Remove.
	* doc/rfc/rfc2221.txt: Remove.
	* doc/rfc/rfc2222.txt: Remove.
	* doc/rfc/rfc2231.txt: Remove.
	* doc/rfc/rfc2245.txt: Remove.
	* doc/rfc/rfc2298.txt: Remove.
	* doc/rfc/rfc2342.txt: Remove.
	* doc/rfc/rfc2368.txt: Remove.
	* doc/rfc/rfc2384.txt: Remove.
	* doc/rfc/rfc2444.txt: Remove.
	* doc/rfc/rfc2449.txt: Remove.
	* doc/rfc/rfc2595.txt: Remove.
	* doc/rfc/rfc2683.txt: Remove.
	* doc/rfc/rfc2808.txt: Remove.
	* doc/rfc/rfc2821.txt: Remove.
	* doc/rfc/rfc2822.txt: Remove.
	* doc/rfc/rfc2831.txt: Remove.
	* doc/rfc/rfc3028.txt: Remove.
	* doc/rfc/rfc3206.txt: Remove.
	* doc/rfc/rfc3348.txt: Remove.
	* doc/rfc/rfc3431.txt: Remove.
	* doc/rfc/rfc3501.txt: Remove.
	* doc/rfc/rfc3691.txt: Remove.
	* doc/rfc/rfc4314.txt: Remove.
	* doc/rfc/rfc821.txt: Remove.
	* doc/rfc/rfc822.txt: Remove.
	* doc/rfc/rfc934.txt: Remove.
	* doc/rfc/sasl-mechanisms: Remove.

2010-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix indentation in Sieve scripts.

	* sieve/examples/ex-1.10.2.sv: Use GNU indentation style
	* sieve/examples/ex-2.3a.sv: Likewise.
	* sieve/examples/ex-2.5.1.sv: Likewise.
	* sieve/examples/ex-2.7.3.sv: Likewise.
	* sieve/examples/ex-3.1a.sv: Likewise.
	* sieve/examples/ex-3.1b.sv: Likewise.
	* sieve/examples/ex-3.2.sv: Likewise.
	* sieve/examples/ex-4.1.sv: Likewise.
	* sieve/examples/ex-4.2.sv: Likewise.
	* sieve/examples/ex-4.4a.sv: Likewise.
	* sieve/examples/ex-4.4b.sv: Likewise.
	* sieve/examples/ex-4.5.sv: Likewise.
	* sieve/examples/ex-5.1.sv: Likewise.
	* sieve/examples/ex-5.7.sv: Likewise.
	* sieve/examples/ex-9.sv: Likewise.
	* sieve/examples/ex-save-all.sv: Likewise.
	* sieve/examples/example.sv: Likewise.
	* sieve/examples/exn-5.4.sv: Likewise.
	* sieve/examples/t-complex.sv: Likewise.
	* sieve/examples/t-exists.sv: Likewise.
	* sieve/examples/t-fileinto.sv: Likewise.
	* sieve/examples/t-mailutils.sv: Likewise.

2010-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.

	Happy GNU year!

2010-01-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_cfg/init.c (mu_libcfg_parse_config): Do not produce
	error if user configuration file is absent.
	* libmu_sieve/sieve.l: Include config.h in %top section.
	* mh/mh_alias.l: Likewise.
	* mimeview/mimetypes.l: Likewise.
	* mailbox/cfg_lexer.l: Likewise.
	(mu_get_config): Call mu_cfg_tree_postprocess.

2009-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.1.90.

	* configure.ac, NEWS: Set version number 2.1.90 
	* testsuite/lib/mailutils.exp: Quote arguments to the --set
	option.
	(mu_exec): escape backslashes and double-quotes in $sw.
	* frm/testsuite/frm/test.exp: Quote arguments to the --set
	option.
	* mail/testsuite/lib/mail.exp: Likewise.
	* mailbox/testsuite/lib/mailbox.exp: Likewise.
	* messages/testsuite/messages/test.exp: Likewise.
	* sieve/testsuite/sieve/action.exp: Likewise.
	* readmsg/testsuite/readmsg/test.exp: Remove extra backslashes,
	not needed due to the changes in mu_exec

2009-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Support for multibyte-encoding in MH.

	* gnulib.modules (mbchar, mbiter, mbslen): New modules.
	* mh/mh.h (mh_charset): New function.
	* mh/mh_format.c (DFLWIDTH): New macro.
	(mbsubstrlen, mbsnlen): New functions.
	(compress_ws): Handle multibyte strings.
	(put_string): Use number of characters, not octets, to update
	ind.
	(print_hdr_segment): Handle multibyte strings.
	(print_simple_segment, print_fmt_string): Likewise.
	(reset_fmt_defaults): Restore default WS compression.
	(mh_format): Set LC_TYPE based on the settings of profile
	variables Charset and LC_BASE (new variable).
	* mh/mh_init.c (mh_charset): New function.
	(mh_decode_2047): Use mh_charset.

2009-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve configuration parsing (step 1).

	Remove obsolete options (these have been made hidden in v.
	2.0). Handle "include" and "program" after parsing the sources,
	not while reducing the tree, as was previously. Retain,
	however, old functions for compatibility, making them
	deprecated. Add "query" mode to mailutils-config.

	* include/mailutils/cfg.h (mu_cfg_node_tag): Remove
	(mu_cfg_statement): Rename to mu_cfg_node_statement.
	(mu_cfg_tree): New member: tail.
	(mu_cfg_perror): Change signature.
	(mu_cfg_vperror, mu_cfg_parse_error): New protos.
	(MU_CFG_PATH_DELIM, MU_CFG_PATH_DELIM_STR): New defines.
	(MU_PARSE_CONFIG_PLAIN,MU_CFG_FMT_LOCUS): New constant.
	(MU_CFG_DEPRECATED): New macro.
	(mu_parse_config,mu_get_config): Deprecated.
	(mu_cfg_format_parse_tree): Change signature.
	(mu_cfg_format_node, mu_cfg_parse_file): New protos.
	(mu_cfg_tree_free): Remove stale proto.
	(mu_cfg_find_node, mu_cfg_create_subtree): New protos.
	* include/mailutils/libcfg.h (mu_libcfg_parse_config): New
	proto.
	(mu_parse_config_files): Deprecated. 
	* include/mailutils/mutil.h (mu_make_file_name): New proto.
	(mu_retrieve_fp, mu_register_retriever)
	(mu_retrieve): Remove unused prototypes.
	* include/mailutils/opool.h (mu_opool_union): New proto. 
	* libmu_argp/Makefile.am (libmu_argp_a_SOURCES): Remove sources
	(see below):
	* po/POTFILES.in: Likewise.
	* libmu_argp/gsasl.c: Remove.
	* libmu_argp/pam.c: Remove.
	* libmu_argp/radius.c: Remove.
	* libmu_argp/sql.c: Remove.
	* libmu_argp/tls.c: Remove.
	* libmu_argp/virtdomain.c: Remove. 
	* config/mailutils-config.c: New option --query (-q)
	(main): Handle query mode. 
	* comsat/comsat.c: Define MU_CFG_COMPATIBILITY to suppress
	deprecation warnings. 
	* bootstrap.conf (XGETTEXT_OPTIONS): Add mu_cfg error reporting
	functions. 
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add
	mkfilename.c
	* mailbox/mkfilename.c: New file. 
	* imap4d/imap4d.c: Remove obsolete option (hidden since 2.0)
	* libmu_argp/auth.c: Likewise.
	* libmu_argp/cmdline.c: Likewise.
	* libmu_argp/tls.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* libmu_argp/common.c: Likewise.
	(mu_common_argp_options): New option --set. 
	* libmu_argp/muinit.c (mu_app_init): Rewrite using parse tree
	as a principal entity.
	* libmu_cfg/init.c (mu_libcfg_parse_config): New function.
	* mailbox/cfg_driver.c (make_file_name): Remove.
	(_cb_include): Use mu_make_file_name.
	(mu_build_container): Use deprecated code only unless
	MU_PARSE_CONFIG_PLAIN flag is set.
	(mu_cfg_tree_reduce): Do nothing if the tree is NULL.
	* mailbox/cfg_format.c (format_node): Print locus optionally.
	(mu_cfg_format_parse_tree): Take additional argument.
	(mu_cfg_format_node): New function.
	* mailbox/cfg_lexer.l: Update calls to diagnostic functions.
	(mu_cfg_parse_file): New function.
	(mu_get_config): Rewrite.
	* mailbox/cfg_parser.y (parse_tree): Replace with parse_head,
	parse_tail. All usages updated.
	(mu_cfg_free_node): New function.
	(mu_cfg_vperror): New function.
	(mu_cfg_perror,mu_cfg_parse_error): New function.
	(mu_cfg_tree_union): New function.
	(mu_cfg_tree_postprocess): New function.
	(mu_cfg_find_section): Use MU_CFG_PATH_DELIM instead of
	hardcoded slash.
	(mu_cfg_value_eq): New function.
	(mu_cfg_find_node): New function. Redesign of an old idea.
	(mu_cfg_create_subtree): New function.
	* mailbox/opool.c (mu_opool_union): New function. 
	* frm/testsuite/frm/test.exp: use --set option instead of the
	obsolete --mail-folder.
	* messages/testsuite/messages/test.exp: Likewise.
	* sieve/testsuite/sieve/action.exp: Likewise.
	* mail/testsuite/lib/mail.exp: use --set option instead of the
	obsolete --mail-spool.
	* mailbox/testsuite/lib/mailbox.exp: Likewise.
	* testsuite/lib/mailutils.exp: Likewise.
	* mailbox/mutil.c (mu_register_retriever)
	(mu_retrieve): Remove unused functions.

	Minor fix: 
	* frm/common.c (frm_abort): Initialize URL before usage.
	(frm_scan): Don't call frm_abort on a mailbox that was not
	opened successfully.

2009-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Disable whitespace compression in MH formatting code.

	Whitespace compression in its current form interacts badly with
	wide-character encodings. To prevent it from spoiling wide
	character text, it is disabled by default. The user may turn it
	back on by setting "Compress-WS: yes" in his .mh_profile.

	* mh/mh.h (MH_FMT_COMPWS): New format flag.
	* mh/mh_format.c (COMPRESS_WS): New macro.
	(reset_fmt_defaults): Set MH_FMT_COMPWS flag if Compress-WS
	global parameter is set to true.
	(mh_format, builtin_concat): Call COMPRESS_WS.

2009-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix format specifiers and usage of const char*
	arguments/variables.

	Affected files:

	* comsat/comsat.c
	* examples/header.c
	* examples/mailcap.c
	* examples/pop3client.c
	* examples/url-parse.c
	* imap4d/fetch.c
	* imap4d/id.c
	* imap4d/list.c
	* imap4d/select.c
	* imap4d/status.c
	* imap4d/store.c
	* imap4d/sync.c
	* imap4d/util.c
	* include/mailutils/sieve.h
	* libmu_argp/common.c
	* libmu_argp/muinit.c
	* libmu_sieve/actions.c
	* libmu_sieve/extensions/pipe.c
	* libmu_sieve/extensions/vacation.c
	* libmu_sieve/prog.c
	* libmu_sieve/require.c
	* libmu_sieve/runtime.c
	* libmu_sieve/sieve-priv.h
	* libmu_sieve/sieve.y
	* libproto/imap/folder.c
	* libproto/imap/mbox.c
	* libproto/mailer/sendmail.c
	* libproto/mbox/mbox.c
	* libproto/pop/pop3_list.c
	* libproto/pop/pop3_stat.c
	* maidag/lmtp.c
	* maidag/sieve.c
	* mail/copy.c
	* mail/decode.c
	* mail/envelope.c
	* mail/eq.c
	* mail/escape.c
	* mail/from.c
	* mail/mail.h
	* mail/mailline.c
	* mail/mailvar.c
	* mail/size.c
	* mail/util.c
	* mail/write.c
	* mailbox/cfg_format.c
	* mailbox/folder.c
	* mailbox/parse822.c
	* mailbox/system.c
	* messages/messages.c
	* mh/folder.c
	* mh/forw.c
	* mh/inc.c
	* mh/mh.h
	* mh/mh_alias.l
	* mh/mh_fmtgram.y
	* mh/mh_getopt.h
	* mh/mh_init.c
	* mh/mh_msgset.c
	* mh/mh_whatnow.c
	* mh/mhn.c
	* mh/pick.y
	* mimeview/mimetypes.y
	* python/libmu_py/debug.c
	* sieve/sieve.c

2009-12-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add TLS to MH.	Handle --debug-level and --debug-line-info
	options.

	* mailbox/mbx_default.c (attach_auth_ticket): Do not proceed if
	auth is NULL.
	* mh/mh_getopt.h (struct mh_argp_data): Change return type and
	signature of handler.
	(mh_argp_parse): Likewise.
	* mh/mh_argp.c (parse_opt): Rewrite using new handler
	prototype.
	(mh_argp_parse): Use new handler type. Assign argp children. 
	* mh/mh_init.c (mh_init): Call mu_init_tls_libs. 
	* mh/ali.c: Update opt_handler
	* mh/anno.c: Update opt_handler
	* mh/burst.c: Update opt_handler
	* mh/comp.c: Update opt_handler
	* mh/fmtcheck.c: Update opt_handler
	* mh/folder.c: Update opt_handler
	* mh/forw.c: Update opt_handler
	* mh/inc.c: Update opt_handler
	* mh/install-mh.c: Update opt_handler
	* mh/mark.c: Update opt_handler
	* mh/mhl.c: Update opt_handler
	* mh/mhn.c: Update opt_handler
	* mh/mhparam.c: Update opt_handler
	* mh/mhpath.c: Update opt_handler
	* mh/pick.c: Update opt_handler
	* mh/refile.c: Update opt_handler
	* mh/repl.c: Update opt_handler
	* mh/rmf.c: Update opt_handler
	* mh/rmm.c: Update opt_handler
	* mh/scan.c: Update opt_handler
	* mh/send.c: Update opt_handler
	* mh/sortm.c: Update opt_handler
	* mh/whatnow.c: Update opt_handler
	* mh/whom.c: Update opt_handler

2009-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mailer/smtp.c (smtp_open): Don't issue second EHLO
	if STARTTLS failed.

2009-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix reusability of smtp mailers.

	* libproto/mailer/smtp.c (_smtp_set_rcpt): Initialize smtp->ptr
	to smtp->buffer, not NULL.
	(smtp_close): Reset smtp->state.

2009-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mail/mail.c (parse_opt): Fix handling of the --user option.

2009-10-31  Jordi Mallach  <jordi@gnu.org>

	Spelling fixes.

2009-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_scm/mu_guile.c: Include setjmp.h.
	* readmsg/readmsg.c (readmsg_parse_opt): Bugfixes. Patch by
	Steve Cotton.

2009-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revamp common mu_gsasl_module_data as extern.

	* include/mailutils/gsasl.h (mu_gsasl_module_data): Mark as
	extern.

2009-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various fixes (mostly to placate gcc)

	* examples/base64.c, examples/mta.c, imap4d/auth_gss.c,
	imap4d/imap4d.c, imap4d/preauth.c, libmu_auth/ldap.c,
	libmu_auth/virtual.c, libmu_scm/mu_body.c, libmu_scm/mu_port.c,
	libproto/mailer/smtp.c, mailbox/acl.c, mailbox/secret.c,
	pop3d/pop3d.c, python/libmu_py/address.c, sql/odbc.c: Fix
	argument signedness. 
	* imap4d/fetch.c, imap4d/store.c (closures): Change type of
	`count' to int, to match the signature of util_msgset.
	* include/mailutils/guile.h (mu_scm_message_get): Fix return
	type (const is useless here).
	* libmu_scm/mu_message.c (mu_scm_message_get): Likewise.
	(scm_mu_message_copy): Fix type of the `wr' automatic variable.
	* libmu_scm/mu_mime.c (mu_scm_mime_get): Remove const qualifier
	from the return type.
	* libmu_argp/cmdline.c: Include stdlib.h.

2009-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/assoc.c (assoc_remove): Fix incorrect copying between
	assoc slots.
	* mailbox/cfg_parser.y (STRTONUM): Remove useless
	dereferencing. Change the loop from `while' to `for'.

2009-09-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix program descriptions (docstings).

	* config/mailutils-config.c: Terminate docstring with a period.
	* dotlock/dotlock.c: Likewise.
	* frm/frm.c: Likewise.
	* frm/from.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* maidag/maidag.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

2009-09-28  Jordi Mallach  <jordi@gnu.org>

	Harmonise --help output.

	* comsat/comsat.c: Add docstring.
	* movemail/movemail.c: Add docstring.

2009-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* include/mailutils/cfg.h (mu_cfg_perror): Mark as printflike.
	(mu_cfg_format_error): Likewise.
	* libmu_argp/radius.c (mu_radius_argp_option): Fix typo in the
	docstring.
	* mail/mail.h [!WITH_READLINE] (mailvar_set_compl): New define.

2009-09-24  Simon Josefsson  <simon@josefsson.org>

	SASL related fixes.

	* imap4d/auth_gsasl.c (auth_gsasl): Make IMAP server wait for
	empty final client response.
	* include/mailutils/gsasl.h (mu_gsasl_stream_create): Don't use
	deprecated GNU SASL types.

2009-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement global transcript settings in imap4d and pop3d.

	* imap4d/imap4d.c (imap4d_cfg_param): New global statement
	'transcript'.
	(imap4d_connection): The transcript parameter overrides global
	imap4d_transcript settings.
	* pop3d/pop3d.c (pop3d_cfg_param, pop3d_connection): Likewise.

2009-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/util.c (imap4d_getline): Do not report ERR_NO_IFILE if
	an empty line is read.
	* mailbox/msrv.c (server_section_parser): Catch null tags.

	Bugs reported by Simon Josefsson.

2009-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mbox/mboxscan.c (mbox_scan_internal): Fix body size
	calculation: -1 was returned for empty body. Bug reported by
	Con Tassios <ct@swin.edu.au>.
	* po/POTFILES.in: Add mail/mailvar.c

2009-09-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.1 "Ten Years Later"

	* NEWS: Update for version 2.1
	* configure.ac: Update for version 2.1
	(AM_INIT_AUTOMAKE): Add dist-lzma and dist-xz.
	* bootstrap (slurp): Remove call to silentize: not needed with
	recent gnulib.

2009-09-08  Wojciech Polak  <polak@gnu.org>

	Correct some pydocs.

2009-09-02  Wojciech Polak  <polak@gnu.org>

	Python: Allow to set mu_pam_service.

	* python/libmu_py/auth.c (api_set_pam_service): New function.
	* python/mailutils/auth.py (set_pam_service): New function.

2009-09-01  Wojciech Polak  <polak@gnu.org>

	Update NEWS.

2009-09-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/assoc.c (mu_assoc_count): Initialize count.
	* NEWS: Update.

2009-08-29  Wojciech Polak  <polak@gnu.org>

	Update pydocs.

	* python/mailutils/__init__.py: Update pydocs.
	* python/mailutils/mailbox.py: Likewise.
	* python/mailutils/mailcap.py: Likewise.
	* python/mailutils/registrar.py: Likewise.
	* python/mailutils/sieve.py: Likewise.

2009-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libproto/mailer/smtp.c: fix indentation

2009-08-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* libmu_scm/Makefile.am (install-data-hook): Make sure
	libguile-mailutils links to the versioned .so file.

2009-08-27  Wojciech Polak  <polak@gnu.org>

	Fix RPM spec.

	* mu-aux/mailutils.spec.in: Fix.

2009-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve configure script.

	* configure.ac: New option --with-pythondir
	(PYTHON_SITE_DIR, PYTHON_EXEC_DIR): New subst variables.
	* python/libmu_py/Makefile.am: use pythonexec_LTLIBRARIES,
	instead of pythonexec_LTLIBRARIES.
	(pythonexecdir): New variable.
	* python/mailutils/Makefile.am: use pythonsite_PYTHON, instead
	of pkgpython_PYTHON.
	(pythonsitedir): New variable.

2009-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix leftover diagnostic messages.

	* movemail/movemail.c (_cb_mailbox_ownership): Fix leftover
	diagnostic messages.
	* config/mailutils-config.c (options): Fix typo.

2009-08-27  Wojciech Polak  <polak@gnu.org>

	Update docs.

	* doc/texinfo/programs.texi: Update maidag scripting info.

2009-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor improvements in comsat and frm.

	* comsat/action.c (action_exec): Remove `line' argument. Do not
	explicitly add locus to the messages.
	(run_user_action): Add locus to diagnostics mu_debug_t, so it
	is prepended to all diagnostic messages automatically.
	* comsat/comsat.c: Improve help output
	* frm/frm.c (attr_help): Remove unnecessary variable.

2009-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix help messages.

	Option descriptions in `--help' output do not constitute
	conceptual sentences. Therefore, they should not begin with a
	capital letter, nor end with a final point.

	Affected files:

	comsat/comsat.c, config/mailutils-config.c, dotlock/dotlock.c,
	frm/frm.c, frm/from.c, guimb/main.c, imap4d/imap4d.c,
	libmu_argp/auth.c, libmu_argp/common.c, libmu_argp/gsasl.c,
	libmu_argp/pam.c, libmu_argp/radius.c, libmu_argp/sieve.c,
	libmu_argp/sql.c, libmu_argp/tls.c, libmu_argp/virtdomain.c,
	libmu_auth/sql.c, libmu_cfg/sql.c, maidag/maidag.c,
	maidag/mailquota.c, maidag/mailtmp.c, mail/mail.c,
	messages/messages.c, mh/ali.c, mh/anno.c, mh/burst.c,
	mh/comp.c, mh/fmtcheck.c, mh/folder.c, mh/forw.c, mh/inc.c,
	mh/install-mh.c, mh/mark.c, mh/mh_init.c, mh/mhl.c, mh/mhn.c,
	mh/mhparam.c, mh/mhpath.c, mh/pick.c, mh/refile.c, mh/repl.c,
	mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c, mh/sortm.c,
	mh/whatnow.c, mh/whom.c, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, pop3d/popauth.c,
	readmsg/readmsg.c, sieve/sieve.c

2009-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Change error messages to comply with the GNU standards.

	 The string MESSAGE should not begin with a capital letter when
	it
	 follows a program name and/or file name, because that isn't
	the
	 beginning of a sentence. (The sentence conceptually starts at
	the
	 beginning of the line.) Also, it should not end with a period. 
	* include/mailutils/diag.h (mu_diag_funcall): New prototype.
	* mailbox/diag.c: New function. 
	* comsat/action.c, comsat/comsat.c, comsat/oldcfg.c,
	config/mailutils-config.c, configure.ac, dotlock/dotlock.c,
	frm/common.c, frm/from.c, guimb/collect.c, guimb/main.c,
	guimb/util.c, imap4d/auth_gsasl.c, imap4d/auth_gss.c,
	imap4d/bye.c, imap4d/close.c, imap4d/imap4d.c, imap4d/login.c,
	imap4d/preauth.c, imap4d/signal.c, imap4d/starttls.c,
	imap4d/util.c, lib/mailcap.c, lib/tcpwrap.c,
	libmu_argp/mu_argp.c, libmu_auth/ldap.c, libmu_auth/radius.c,
	libmu_auth/sql.c, libmu_auth/tls.c, libmu_cfg/acl.c,
	libmu_cfg/common.c, libmu_cfg/init.c, libmu_cfg/ldap.c,
	libmu_cfg/sql.c, libmu_sieve/actions.c,
	libmu_sieve/comparator.c, libmu_sieve/extensions/moderator.c,
	libmu_sieve/prog.c, libmu_sieve/sieve.l,
	libproto/imap/folder.c, libproto/mbox/mbox.c, maidag/deliver.c,
	maidag/lmtp.c, maidag/maidag.c, maidag/mailquota.c,
	maidag/mailtmp.c, maidag/script.c, mail/alias.c, mail/cd.c,
	mailbox/cfg_lexer.l, mailbox/cfg_parser.y,
	mailbox/file_stream.c, mailbox/gocs.c, mailbox/msrv.c,
	mailbox/mutil.c, mailbox/registrar.c, messages/messages.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/mark.c, mh/mh_ctx.c,
	mh/mh_fmtgram.y, mh/mh_format.c, mh/mh_init.c, mh/mh_list.c,
	mh/mh_msgset.c, mh/mh_whatnow.c, mh/mh_whom.c, mh/mhl.c,
	mh/mhn.c, mh/pick.c, mh/refile.c, mh/repl.c, mh/rmf.c,
	mh/scan.c, mh/send.c, mimeview/mimetypes.l,
	mimeview/mimeview.c, movemail/movemail.c, pop3d/apop.c,
	pop3d/bulletin.c, pop3d/extra.c, pop3d/lock.c,
	pop3d/logindelay.c, pop3d/pop3d.c, pop3d/popauth.c,
	pop3d/quit.c, pop3d/signal.c, pop3d/user.c, readmsg/readmsg.c,
	sieve/sieve.c: Fix error messages.

2009-08-21  Wojciech Polak  <polak@gnu.org>

	Python: Bugfixes.

	* python/libmu_py/mailbox.c (api_mailbox_append_message):
	Bugfix.
	* python/libmu_py/header.c (api_header_get_value_n): New
	function.
	* python/mailutils/header.py (Header.get_value_n): New method.
	* python/mailutils/mailbox.py (Mailbox.__str__): New method.
	* python/mailutils/message.py (Message.__str__): Likewise.

2009-08-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* .gitignore: Add pathdefs.h
	* examples/Makefile.am (muauth_CPPFLAGS)
	(muemail_CPPFLAGS): New variables.
	* examples/argcv.c (main): Remove unused local.
	* include/mailutils/gsasl.h [USE_GSASL]: Change to WITH_GSASL.
	* include/mailutils/libcfg.h (mu_acl_cfg_init): New prototype.
	* include/mailutils/mu_auth.h (mu_authenticate): Password is
	const.
	* include/mailutils/python.h: Fix indentation.
	(mu_py_script_data): module_name is const char *.
	* libmu_auth/radius.c: Include radius/debug.h
	* libproto/mailer/smtp.c: Include io.h and secret.h
	* mail/mail.c: Fix indentation.
	* mail/util.c (util_rfc2047_decode): Fix local variable
	declaration.
	* mailbox/mu_auth.c (mu_authenticate): Password is const.
	* mh/mh.h (mh_alias_get, mh_alias_get_address)
	(mh_alias_get_alias): Name is const.
	* mh/mh_alias.y: Likewise.
	* mh/mh_list.c (print_header_value): Fix improper use of
	mu_toupper.
	* mh/mh_whatnow.c (invoke): Add typecasts.
	* python/libmu_py/nls.c (api_nls_set_locale): Remove unused
	automatic.
	* python/libmu_py/sieve.c (_sieve_error_printer): Provide
	missing return value.
	(_sieve_debug_printer): Likewise.

2009-08-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Movemail: allow to copy mailbox ownership when run as root.

	* movemail/movemail.c: Implement new configuration keyword
	"mailbox-ownership" (and the --owner command line option).
	* doc/texinfo/programs.texi: Document new movemail features.
	(Ownership): New subsection stub.
	* NEWS: Update

2009-08-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix in configure.ac.

	* configure.ac: Use PATH_MAILDIR (without leading underscore).

2009-08-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mail: bugfixes.

	* mail/file.c: Use "headers" instead of non-standard "z."
	* mail/mail.c: Avoid % interpretation in the argument to
	util_cache_command.
	* mail/util.c (_run_and_free): Avoid % interpretation in the
	argument to util_do_command.

2009-08-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mail: configurable `headers' output format.

	* mail/from.c: Rewrite using format string.
	* mail/mail.c (default_setup): Set default value for
	`headline'.
	(main): Fix call to util_do_command.
	* mail/mail.h [HAVE_STDARG_H]: Remove conditions.
	(mail_compile_headline): New proto.
	* mail/mailvar.c (mailvar_tab): New variable "headline".
	* mail/util.c: Minor fixes.
	* NEWS, doc/programs.texi: Update.

2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* comsat/comsat.h: Include confpaths.h, not paths.h.
	* lib/utmp.c: Likewise.
	* libmu_scm/mu_scm.h: Likewise.
	* libproto/mailer/sendmail.c: Likewise.
	* mail/mail.h: Likewise.
	* mailbox/mbx_default.c: Likewise.
	* mailbox/version.c: Likewise.
	* lib/daemon.c: Likewise. 
	* include/mailutils/mailer.h (struct timeval): forward decl.

2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve memory allocation in pop3d.

	* pop3d/pop3d.c (pop3d_alloc_die): New function.
	(main): Set mu_alloc_die_hook.
	(pop3d_mainloop): Use mu_alloc.
	* pop3d/pop3d.h: Include mailutils/alloc.h

2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvements of the configure system.

	* Makefile.am (MU_COND_LIBMU_CPP): New cond.
	(SUBDIRS): Use LIBMU_CPP_DIR
	* configure.ac: Rename --disable-c++ to --disable-cxx: autoconf
	cannot handle the former.
	(MU_COND_LIBMU_CPP): New cond.
	(AC_CONFIG_FILES): Add include/mailutils/cpp/Makefile
	* include/mailutils/Makefile.am (nobase_pkginclude_HEADERS):
	Remove
	(MU_COND_LIBMU_CPP): New cond.
	(SUBDIRS): Add CPP_DIR
	* include/mailutils/cpp/Makefile.am: Remove substitution vars.
	(cppincludedir, cppinclude_HEADERS): New variables.
	* include/mailutils/sys/Makefile.am (sysincludedir)
	(sysinclude_HEADERS): New variables.

2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix building with fribidi2.

	* configure.ac: Check for wcwidth and wchar.h.
	* frm/common.c (get_charset): Aways allocate output_charset.
	Provide a substitution for fribidi_wcwidth if it is not
	available.
	(puts_bidi): Use mu_fribidi_wcwidth.

2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in configure.ac.

	* am/enable.m4 (MU_ENABLE_SUPPORT): Change semantics of the
	last argument.
	(MU_ENABLE_BUILD): 4th argument gives additional conditions for
	AM_CONDITIONAL.
	* configure.ac: Enable building c++ interface when possible.
	Fix checks for guimb and mh utilities.
	* libmu_cpp/Makefile.am: Remove unnecessary substitution
	variables.

2009-08-12  Wojciech Polak  <polak@gnu.org>

	Restore old CVS ChangeLog.

2009-08-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite conditional compilation support.

	* Makefile.am: Conditionally add directories to SUBDIRS.
	* am/enable.m4 (MU_ENABLE_BUILD): New macro.
	* configure.ac: Require automake 1.11 Add MU_ENABLE_BUILDs for
	each utility. Remove unused substitution variables.
	* guimb/Makefile.am: Remove substitution variables.
	* guimb/scm/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* python/libmu_py/Makefile.am: Likewise.
	* python/mailutils/Makefile.am: Likewise.
	* README: Document --disable-build-* options.

2009-08-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

	* mailbox/mu_auth.c (mu_auth_runlist): Do not overwrite last
	meaningful error code by ENOSYS.

2009-08-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve command line and error handling in pop3d.

	* pop3d/pop3d.h: Remove unused includes.
	(ABORT): New state.
	(pop3d_command_handler_t, struct pop3d_command): New types.
	(pop3d_find_command): New function.
	(pop3d_stat,pop3d_top,pop3d_uidl,pop3d_user,pop3d_apop)
	(pop3d_auth,pop3d_capa,pop3d_dele,pop3d_list,pop3d_noop)
	(pop3d_quit,pop3d_retr,pop3d_rset): Remove const from the
	arguments. Functions are free to modify it.
	(pop3d_parse_command): New function. 
	* pop3d/cmd.c: New file.
	* pop3d/Makefile.am: Link in cmd.o
	* pop3d/apop.c: Use pop3d_parse_command to parse commands
	* pop3d/auth.c: Likewise.
	* pop3d/extra.c (pop3d_args, pop3d_cmd): Remove.
	(pop3d_parse_command): New function.
	(pop3d_abquit): use pop3d_error_string to convert error numbers
	to messages.
	* pop3d/pop3d.c (cb_bulletin_db): Protect by #ifdef USE_DBM
	(pop3d_mainloop): Change loop condition. Use
	pop3d_parse_command to parse commands, pop3d_find_command to
	lookup handlers in the command table and pop3d_error_string to
	convert error numbers to messages.
	(main): Call enable_stls if necessary. 
	* pop3d/capa.c, pop3d/dele.c, pop3d/list.c, pop3d/noop.c,
	pop3d/quit.c, pop3d/retr.c, pop3d/rset.c, pop3d/stat.c,
	pop3d/stls.c, pop3d/top.c, pop3d/uidl.c, pop3d/user.c: Remove
	const qualifier from the command handler argument.

2009-08-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* examples/argcv.c (main): Use fgets instead of getline.
	* mail/decode.c (mime_descend): Use util_get_hdr_value which
	does not cut off the additional arguments after the ';'.

2009-08-09  Wojciech Polak  <polak@gnu.org>

	Improve C++ and Python APIs.

	* include/mailutils/cpp/header.h (Header.has_key): New method.
	* libmu_cpp/header.cc: Likewise.
	* include/mailutils/cpp/mailbox.h (MailboxDefault): Make name
	optional.
	* libmu_cpp/mailbox.cc: Likewise.
	* python/mailutils/header.py (__contains__, has_key): New
	method.

2009-08-09  Wojciech Polak  <polak@gnu.org>

	Update descriptions.

	* README: Update.
	* doc/texinfo/mailutils.texi: Update.
	* mu-aux/mailutils.spec.in: Update.
	* direntry: Not used anymore. Remove.

2009-08-08  Wojciech Polak  <polak@gnu.org>

	* mailbox/version.c: Add missing TC DBM info.

2009-08-08  Wojciech Polak  <polak@gnu.org>

	Bugfix.

	* python/libmu_py/mailbox.c (api_mailbox_create_default): Make
	name optional.
	* python/mailutils/mailbox.py (MailboxDefault.__init__):
	Likewise.

2009-08-08  Wojciech Polak  <polak@gnu.org>

	Add ESMTP AUTH support.

	* libproto/mailer/smtp.c (smtp_auth, cram_md5): New function.

2009-08-08  Wojciech Polak  <polak@gnu.org>

	Move base64 routines to libmailutils.

	* mailbox/base64.c: New file.
	* imap4d/auth_gss.c: Use mu_base64_encode() and
	mu_base64_decode().
	* imap4d/util.c (util_base64_encode, util_base64_decode):
	Remove.

2009-08-08  Wojciech Polak  <polak@gnu.org>

	Add Tokyo Cabinet DBM support.

	* configure.ac: Add new option --with-tokyocabinet.
	* lib/mu_dbm.c: Add Tokyo Cabinet support.
	* lib/mu_dbm.h: Likewise.
	* pop3d/popauth.c: Likewise.

2009-08-05  Wojciech Polak  <polak@gnu.org>

	* configure.ac: Fix typo.

2009-08-04  Wojciech Polak  <polak@gnu.org>

	Fix readmsg's printing the last message in the mailbox ($).

	* readmsg/msglist.c (msglist): Bugfix.

2009-08-04  Wojciech Polak  <polak@gnu.org>

	Fix movemail --uidl.

	* mailbox/message.c (mu_message_get_uidl): Do not remove angle
	brackets from X-UIDL header.

2009-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* NEWS: Reword some passages.
	* mail/mail.c: Fix indentation.
	* mailbox/folder.c (mu_folder_create): Return meaningful error
	code.

2009-08-01  Wojciech Polak  <polak@gnu.org>

	Enable GNU TLS by default.

	* am/tls.m4: Use --without-gnutls instead of --with-gnutls.

2009-07-31  Wojciech Polak  <polak@gnu.org>

	* Makefile.am: Bugfix. Build libmu_sieve before libmu_py.

2009-07-29  Wojciech Polak  <polak@gnu.org>

	Add SieveMachine to C++/Python.

	* include/mailutils/cpp/sieve.h: New file.
	* libmu_cpp/sieve.cc: New file.
	* python/libmu_py/sieve.c: New file.
	* python/mailutils/sieve.py: New file.
	* include/mailutils/cstr.h: Do not use C++ keywords.
	* include/mailutils/tls.h: Likewise.

2009-07-14  Wojciech Polak  <polak@gnu.org>

	Add NLS to libmu_py.

	* python/libmu_py/nls.c: New file.
	* python/mailutils/nls.py: Likewise.

2009-07-13  Wojciech Polak  <polak@gnu.org>

	Add more is/set/unset attribute methods (Python).

	* python/libmu_py/attribute.c: Add userflag functions.
	* python/mailutils/attribute.py: Add more is/set/unset methods.
	* python/mailutils/mailbox.py (open): Bugfix.

2009-07-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes in client pop3.

	* libproto/pop/mbox.c (pop_get_message): Make sure the mailbox
	is scanned.
	(pop_top): Handle -ERR case.

2009-07-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	mail: implement struct command.

	* NEWS, doc/texinfo/programs.texi: Document struct command.
	* mail/struct.c: New file.
	* mail/Makefile.am (mail_SOURCES): Add struct.c
	* mail/decode.c (fprint_msgset, mime_descend): New functions.
	Rewrite the rest using mime_descend.
	* mail/mail.h (mail_struct): New function.
	(MDHINT_SELECTED_HEADERS): New define.
	(struct mime_descend_closure, mime_descend_fn): New types.
	(mime_descend): New proto.
	(util_get_content_type): Get two arguments.
	* mail/table.c (mail_command_table): Add st[ruct].
	* mail/util.c (util_get_content_type): Get two arguments. All
	callers updated.
	(util_get_hdr_value): use mu_header_aget_value_unfold and
	mu_rtrim_class.

2009-07-12  Paul Vojta  <vojta@math.berkeley.edu>

	Fix the way mail accounts for the status of messages.

	* mail/mail.h (MAIL_ATTRIBUTE_PRESERVED)
	(MAIL_ATTRIBUTE_TOUCHED): New define.
	* mail/from.c (mail_from0): Mark with 'R' only those messages
	that have been read in this mail session.
	* mail/hold.c (hold0): Set MAIL_ATTRIBUTE_PRESERVED
	* mail/mbox.c (mbox0): Don't mark message as read.
	* mail/quit.c (mail_mbox_commit): Force keepsave on not system
	mailboxes.
	* mail/touch.c: Use MAIL_ATTRIBUTE_TOUCHED
	* mail/undelete.c: Clear MAIL_ATTRIBUTE_PRESERVED and
	MAIL_ATTRIBUTE_MBOXED bits.
	* mail/testsuite/mail/write.exp: Account for the above changes.

2009-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement `mail -F'.

	* NEWS, doc/texinfo/programs.texi: Update.
	* mail/mail.c (parse_opt): Remove the fixme.
	* mail/mailvar.c (mailvar_tab): Add `byname'.
	* mail/reply.c (reply0): Use `byname' when deciding where to
	save the message.
	* mail/util.c: Fix comment.

2009-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Further improvements in `mail'.

	* NEWS: Update.
	* mail/mail.h (MOPTF_UNSET): New constant.
	* mail/mailvar.c (MAILVAR_TYPEMASK): New define.
	(struct mailvar_symbol): Remove `type'. Add `handler'. The
	latter supplies special handling for certain variables.
	(mailvar_tab): Update accordingly. Implement "debug" variable.
	(mailvar_set): Enforce correct variable type in variable-strict
	mode. Handle MOPTF_UNSET flag. Remove kludgy special handling
	for some attributes, use sym->handler instead.
	(set_decode_fallback, set_replyregex)
	(set_screen, set_mailbox_debug_level, set_debug): New
	functions.
	(describe_symbol): Handle alternative symbol types.
	* mail/set.c: Use MOPTF_UNSET when unsetting the variable.
	* mail/source.c: Set correct locus. This allows to display
	locations along with error messages.

2009-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve mail compliance to POSIX standard.

	* mail/mail.c: Redo -f option handling to fully comply to POSIX
	Set default diagnostics printer for interactive mode.
	* NEWS, doc/texinfo/programs.texi: Document the use of -f
	option.

2009-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve internal variable handling in mail. Implement envelope
	and variable commands.

	* NEWS: Update.
	* doc/texinfo/programs.texi: Document new variables and
	commands.
	* mail/envelope.c: New file.
	* mail/mailvar.c: New file.
	* mail/Makefile.am (mail_SOURCES): Add envelope.c and
	mailvar.c. 
	* mail/mail.h (EF_HIDDEN): New constant (mail_env_data_t,
	mail_env_entry, mail_env_entry_is_set) (mail_env_entry,
	util_getenv, util_printenv, util_setenv) (var_iterator_t,
	var_iterate_next, var_iterate_first)
	(var_iterate_end, var_compl): Removed.

	(union mailvar_value, struct mailvar_variable (mail_variable,
	mail_envelope, print_envelope) (mailvar_find_variable,
	mailvar_get, mailvar_print)
	(mailvar_variable_format, mailvar_set, mailvar_set_compl): Add
	prototypes. (MOPTF_OVERWRITE, MOPTF_QUIET) 
	* mail/table.c: List new commands: envelope, setq, variable.
	Implement completion for `set'.
	* mail/testsuite/mail/if.exp: Use setq to set a read-only
	variable.

	mail/alias.c, mail/decode.c, mail/delete.c, mail/escape.c
	mail/file.c, mail/folders.c, mail/from.c, mail/if.c,
	mail/mail.c, mail/mailline.c, mail/msgset.y, mail/pipe.c,
	mail/print.c, mail/quit.c, mail/reply.c, mail/send.c,
	mail/set.c, mail/shell.c, mail/top.c, mail/unset.c,
	mail/util.c: Use mailvar functions.

2009-07-11  Wojciech Polak  <polak@gnu.org>

	Add mailbox.get_uidls() to Python/C++.

	* libmu_cpp/mailbox.cc (get_uidls): New method.
	* python/libmu_py/mailbox.c (api_mailbox_get_uidls): New
	function.
	* python/mailutils/mailbox.py (get_uidls): New method.

2009-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* libmu_auth/ldap.c: Include mailutils/cstr.h.
	* libmu_auth/sql.c: Likewise.
	* mimeview/mimetypes.y: Use mu_tolower, instead of tolower.

2009-07-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the mu_mailbox_get_uidls function and --uidl option
	in movemail.

	* include/mailutils/mailbox.h (MU_UIDL_LENGH)
	(MU_UIDL_BUFFER_SIZE): New defines.
	(struct mu_uidl): New struct.
	(mu_mailbox_get_uidls): New prototype.
	* libproto/include/mailbox0.h (struct _mu_mailbox): New member
	_get_uidls.
	* libproto/pop/mbox.c: Implement _get_uidls.
	* libproto/pop/folder.c: Include mailutils/cctype.h. 
	* mailbox/mailbox.c (mu_mailbox_get_uidls): New function. 
	* movemail/movemail.c: Implement --uidl option: use UIDLs to
	avoid downloading same messages twice. Based on the idea of
	Alfred M. Szmidt. Implement --verbose option. 
	* libproto/imap/mbox.c: Fix comment. 
	* NEWS: Update.
	* doc/texinfo/programs.texi: Update.

2009-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update include/.gitignore.

2009-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use new string trimming functions in parsers.

	* include/mailutils/cstr.h (mu_str_stripws): New function.
	* mailbox/stripws.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add stripws.c 
	* examples/nntpclient.c (stripwhite): Remove. Use
	mu_str_stripws instead.
	(execute_line): Rewrite using new string functions.
	* examples/pop3client.c: Likewise.
	* mailbox/mailcap.c (stripwhite): Remove. Use mu_str_stripws
	instead.
	* mailbox/mime.c (_strltrim, _strttrim, _strtrim): Remove. Use
	mu_str_stripws instead. 
	* mail/mail.c: Use mu_str_stripws.
	* mail/mail.h (util_stripwhite): Remove prototype.
	* mail/util.c (util_stripwhite): Remove
	* examples/pop3client.c: Likewise.
	* imap4d/util.c: Use new string functions.
	* maidag/forward.c: Likewise.
	* maidag/lmtp.c: Likewise.
	* mh/mhn.c: Likewise. 
	* libproto/imap/folder.c: Remove unused local.
	* libproto/mailer/smtp.c (smtp_writeline): Minor optimization.

2009-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* include/mailutils/cstr.h (mu_str_skip_class_comp)
	(mu_str_skip_cset_comp): New prototypes.
	* mailbox/strskip.c (mu_str_skip_class_comp)
	(mu_str_skip_cset_comp): New functions.
	* libmu_auth/ldap.c (find_pwcheck): Fix typo in function call.
	* libproto/pop/mbox.c: Fix typos in diagnostic messages.

2009-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Introduce locale-independent character type and string
	functions.

	* include/mailutils/cctype.h: New file.
	* include/mailutils/cstr.h: New file.
	* include/mailutils/Makefile.am: Add new files.
	* mailbox/cstrcasecmp.c: New file.
	* mailbox/cstrlower.c: New file.
	* mailbox/cstrupper.c: New file.
	* mailbox/muctype.c: New file.
	* mailbox/strltrim.c: New file.
	* mailbox/strrtrim.c: New file.
	* mailbox/strskip.c: New file.
	* mailbox/Makefile.am: Add new files.
	* .gitignore: Update 
	* gnulib.modules: Remove strcase. 
	* comsat/comsat.h, imap4d/imap4d.h,
	include/mailutils/mailutils.h, include/mailutils/mutil.h,
	include/mailutils/sys/pop3.h, libmu_scm/mu_scm.h, mail/mail.h:
	Include cstr.h and cctype.h. 
	* comsat/oldcfg.c, config/mailutils-config.c,
	examples/mimetest.c, examples/mta.c, examples/nntpclient.c,
	examples/pop3client.c, imap4d/append.c, imap4d/create.c,
	imap4d/delete.c, imap4d/fetch.c, imap4d/id.c, imap4d/idle.c,
	imap4d/list.c, imap4d/namespace.c, imap4d/rename.c,
	imap4d/search.c, imap4d/status.c, imap4d/store.c, imap4d/uid.c,
	imap4d/util.c, libmu_argp/compat.c, libmu_auth/ldap.c,
	libmu_auth/sql.c, libmu_scm/mu_message.c,
	libmu_sieve/actions.c, libmu_sieve/comparator.c,
	libmu_sieve/extensions/list.c, libmu_sieve/extensions/spamd.c,
	libmu_sieve/extensions/vacation.c, libmu_sieve/load.c,
	libmu_sieve/sieve.l, libmu_sieve/tests.c,
	libproto/imap/folder.c, libproto/mailer/smtp.c,
	libproto/mbox/mbox.c, libproto/mh/folder.c, libproto/mh/mbox.c,
	libproto/pop/folder.c, libproto/pop/mbox.c,
	libproto/pop/pop3_connect.c, maidag/forward.c, maidag/lmtp.c,
	maidag/maidag.c, maidag/maidag.h, maidag/mailquota.c,
	mail/alt.c, mail/copy.c, mail/decode.c, mail/escape.c,
	mail/followup.c, mail/mail.c, mail/mailline.c, mail/msgset.y,
	mail/print.c, mail/reply.c, mail/send.c, mail/shell.c,
	mail/util.c, mail/write.c, mailbox/address.c, mailbox/amd.c,
	mailbox/assoc.c, mailbox/attachment.c, mailbox/attribute.c,
	mailbox/cfg_lexer.l, mailbox/date.c, mailbox/filter.c,
	mailbox/gdebug.c, mailbox/header.c, mailbox/kwd.c,
	mailbox/locale.c, mailbox/mailcap.c, mailbox/mailer.c,
	mailbox/message.c, mailbox/message_stream.c, mailbox/mime.c,
	mailbox/msrv.c, mailbox/mutil.c, mailbox/parse822.c,
	mailbox/progmailer.c, mailbox/rfc2047.c, mailbox/syslog.c,
	mailbox/url.c, mailbox/version.c, mh/mh.h, mh/mh_alias.l,
	mh/mh_ctx.c, mh/mh_fmtgram.y, mh/mh_init.c, mh/mh_list.c,
	mh/mh_msgset.c, mh/mh_sequence.c, mh/mh_whatnow.c,
	mh/mh_whom.c, mh/mhn.c, mh/mhparam.c, mh/pick.y, mh/sortm.c,
	mimeview/mimetypes.y, pop3d/bulletin.c, pop3d/expire.c,
	pop3d/pop3d.c, pop3d/pop3d.h, pop3d/popauth.c, pop3d/user.c,
	readmsg/msglist.c, readmsg/readmsg.c, readmsg/readmsg.h,
	sql/mysql.c, sql/postgres.c: Use locale-independent cclass and
	str functions.

2009-07-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Define the necessary PATH_ constants.

	* paths: New file.
	* am/config_paths.m4: New file.
	* include/confpaths.h.in: New file.
	* Makefile.am (EXTRA_DIST): Add paths.
	(DISTCLEANFILES): Add pathdefs.h
	* configure.ac: Invoke MU_CONFIG_PATHS
	(AC_CONFIG_FILES): Add include/confpaths.h
	* include/Makefile.am (EXTRA_DIST): Add confpaths.h.in
	* lib/utmp.c, libmu_scm/mu_scm.c, libproto/mailer/sendmail.c,
	mail/mail.c: Use PATH_* constants.
	* mail/mail.h: Remove definition of _PATH_SENDMAIL.
	* .gitignore, include/.gitignore: Update.

2009-07-05  Wojciech Polak  <polak@gnu.org>

	Fix libmu_cpp compilation.

	* examples/cpp/http.cc, examples/cpp/iconv.cc,
	examples/cpp/lsf.cc, examples/cpp/mailcap.cc,
	examples/cpp/msg-send.cc, examples/cpp/sfrom.cc,
	libmu_cpp/message.cc, libmu_cpp/mutil.cc, libmu_cpp/pop3.cc:
	Include missing <cstdlib>.

2009-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add maintainer-specific files.

	* maint.mk: New file.
	* config/maint.mk: New file.
	* README-hacking: Update.

2009-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix namespaces and inclusion directories.

	* README-hacking: Update.
	* configure.ac (MU_COMMON_INCLUDES): Remove.
	(MU_LIB_COMMON_INCLUDES,MU_APP_COMMON_INCLUDES): New variables.
	Link lib/gettext.h and lib.intprops.h to include.
	* gnulib.modules: Remove fnmatch.
	* comsat/Makefile.am, config/Makefile.am, dotlock/Makefile.am,
	frm/Makefile.am, guimb/Makefile.am, imap4d/Makefile.am,
	maidag/Makefile.am, mail/Makefile.am, movemail/Makefile.am,
	pop3d/Makefile.am, python/libmu_py/Makefile.am,
	readmsg/Makefile.am sieve/Makefile.am (INCLUDES): Use
	MU_APP_COMMON_INCLUDES
	* lib/Makefile.am, examples/Makefile.am,
	libmu_argp/Makefile.am, libmu_auth/Makefile.am,
	libmu_cpp/Makefile.am, libmu_sieve/Makefile.am,
	libproto/imap/Makefile.am, libproto/mailer/Makefile.am,
	libproto/mh/Makefile.am, libproto/nntp/Makefile.am,
	libproto/pop/Makefile.am, mailbox/Makefile.am,
	mapi/Makefile.am, messages/Makefile.am, mh/Makefile.am,
	sql/Makefile.am (INCLUDES): Use MU_LIB_COMMON_INCLUDES

2009-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* examples/mta.c: Remove include mu_asprintf.h.
	* libmu_auth/radius.c: Remove include inttostr.h.
	* libmu_scm/mu_dbgport.c: Silence gcc warnings.
	* libmu_sieve/extensions/pipe.c: Remove include <mu_dbm.h>.
	* libmu_sieve/sieve-priv.h: Remove include mu_asprintf.h.
	* maidag/python.c: Remove unused locals.
	* python/libmu_py/address.c: Likewise.
	* python/libmu_py/auth.c: Likewise.
	* python/libmu_py/body.c: Likewise.
	* python/libmu_py/secret.c: Likewise.
	* python/libmu_py/stream.c: Likewise.
	* python/libmu_py/url.c: Likewise.
	* python/libmu_py/util.c: Likewise.

2009-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/debug.c (mu_debug_printv): use mu_debug_vprintf
	* mailbox/message_stream.c (restore_envelope): supplied sender
	address must be a single word.

2009-06-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/mutil.c (mu_fd_wait): Handle exceptions.

2009-05-28  Wojciech Polak  <polak@gnu.org>

	Add Secret class to Python interface.

	* python/libmu_py/secret.c: New file.
	* python/mailutils/secret.py: New file.
	* python/mailutils/url.py (get_secret): New method.
	(get_passwd): Remove. 
	* python/mailutils/mailbox.py (MailboxBase.open): Access mode
	argument value can be now one of the following strings: "r",
	"w", "a", "c".

2009-05-26  Wojciech Polak  <polak@gnu.org>

	Add Secret class to libmu_cpp.

2009-05-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Enable Makefile silent rules.

	* Makefile.am (AUTOMAKE_OPTIONS): Remove.
	* bootstrap: Import from mailfromd.
	* configure.ac: Require autoconf 2.63 Enable silent-rules mode
	by default.
	* guimb/scm/Makefile.am: Add silent-rules markers.
	* include/mailutils/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* testsuite/Makefile.am: Likewise.

2009-05-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

2009-05-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* guimb/main.c (main_sym): Remove const qualifier.
	* imap4d/imap4d.h (util_getfullpath): 1st arg is const.
	* imap4d/util.c: Likewise.
	* include/mailutils/guile.h (mu_guile_load): 1st arg is const.
	* include/mailutils/sql.h (mu_sql_get_field): 3rd arg is const.
	* libmu_auth/radius.c: Cleanup trailing whitespace.
	* libmu_scm/mu_guile.c (mu_guile_load): 1st arg is const.
	(struct load_closure): Filename is const. All uses updated.
	* mailbox/monitor.c (RWLOCK_TRYRDLOCK, RWLOCK_TRYWRLOCK):
	Remove
	[!WITH_PTHREAD] (RWLOCK_DESTROY): Empty define.
	* mailbox/mutil.c (mu_aget_user_email_domain): Minor fix.
	* sql/sql.c (mu_sql_get_field): 3rd arg is const.

2009-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/secret.h: New file. *
	include/mailutils/types.hin (mu_secret_t): New type. *
	include/mailutils/auth.h (mu_ticket_destroy): Remove 2nd arg
	(owner). (mu_ticket_ref, mu_ticket_unref): New functions.
	(mu_ticket_set_destroy): New function. (mu_ticket_set_pop):
	Remove. (mu_ticket_get_cred, mu_ticket_set_get_cred): New
	functions. (mu_ticket_get_data): Return data pointer.
	(mu_ticket_set_secret, mu_ticket_set_plain): New functions.
	(mu_wicket_create): Remove 2nd arg. (mu_wicket_set_filename,
	mu_wicket_get_filename): Remove. (mu_wicket_set_ticket):
	Remove. (mu_wicket_get_ticket): Change proto.
	(mu_wicket_set_destroy, mu_wicket_set_data)
	(mu_wicket_get_data, mu_wicket_set_get_ticket): New functions.
	(mu_file_wicket_create): New function. *
	include/mailutils/mailutils.h: Include secret.h [MU_COMPAT]:
	Remove. * include/mailutils/url.h (mu_url_sget_passwd,
	mu_url_aget_passwd) (mu_url_get_passwd) (mu_url_get_secret):
	New function.

	* libproto/include/auth0.h: Rewrite.
	* libproto/include/imap0.h (struct _f_imap): Replace passwd
	with mu_secret_t secret.
	* libproto/include/url0.h (struct _mu_url): Replace passwd with
	mu_secret_t secret.
	(_get_passwd): Replace with _get_secret 
	* mailbox/secret.c: New function.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add secret.c. 
	* mailbox/ticket.c: Rewrite from scratch.
	* mailbox/wicket.c: Rewrite from scratch. 
	* libproto/imap/folder.c: Rewrite using mu_secret_t.
	* libproto/pop/mbox.c: Rewrite using mu_secret_t. 
	* libproto/mailer/prog.c, libproto/mailer/sendmail.c,
	mailbox/auth.c, mailbox/url.c, movemail/movemail.c: Reflect
	changes to ticket/wicket system.
	* mailbox/mbx_default.c: Use new mu_wicket_t functions. 
	* python/libmu_py/auth.c (api_wicket_get_filename)
	(api_wicket_set_filename): Remove. Not applicable any more.
	* python/libmu_py/url.c (api_url_get_passwd): Temporarily
	commented out. 
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	secret.h.
	* examples/url-parse.c: Use mu_secret_t calls. 
	* imap4d/namespace.c: Minor changes.
	* libmu_auth/pam.c: Likewise.

2009-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix some special cases of using mu_app_init.

	* libmu_argp/muinit.c (mu_app_init): Allow capa==NULL.
	* mailbox/cfg_driver.c (mu_config_clone_container): Do nothing
	if cont == NULL.

2009-05-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* maidag/deliver.c: Run filter scripts with user privileges.
	* maidag/script.c (apply_script): Use stat, not access, to
	check for the existence of the script file. Access takes into
	account accessibility of intermediate directories, which is
	irrelevant in this case.
	* mailbox/mutil.c (mu_expand_path_pattern): Bugfix. Remove the
	% format specifiers after expanding them.

2009-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* mailbox/filter.c (filter_close): Do not close transport
	stream if the MU_STREAM_NO_CLOSE flag is set.
	* imap4d/fetch.c (fetch_io): Fix memory leak: open the filter
	with MU_STREAM_NO_CLOSE flag and destroy it after use.
	* include/mailutils/header.h (mu_header_set_stream): Comment
	out. There is no such function, but perhaps there should be? 
	* libproto/mbox/folder.c (_folder_mbox_init): If there is no
	explicit path in the URL, use ".". This makes it possible to
	use URLs like: mbox:file. 
	* mailbox/nls.c (mu_set_locale) [ENABLE_NLS]: Remove ifdef.
	Setlocale must be enabled whenever possible, otherwise we
	cannot relay on mu_strftime malfunctions in non-english
	locales.
	* mh/mh_whom.c (mh_alias_expand): Handle NULL or empty inputs.

2009-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	* include/mailutils/address.h (struct _mu_address): Rename to
	struct mu_address: it is public interface.
	* include/mailutils/types.hin: Likewise.
	* examples/addr.c: Likewise.
	* mailbox/address.c: Likewise.
	* mailbox/parse822.c: Likewise. 
	* libmu_sieve/extensions/vacation.c (vacation_reply): Fix
	memory leaks.
	* libproto/mailer/mbox.c (remote_mbox_append_message): Use
	mu_address_create_hint instead of
	mu_set_user_email_domain/mu_address_create.
	* maidag/maidag.c (main): Set both diag and debug printers
	explicitly.
	* mail/from.c (mail_from0): minor change.
	* mail/reply.c (reply0): Fix memory leak.
	* mailbox/header.c: minor change.

2009-04-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve RFC822 address parsing.

	* examples/addr.c: Allow to modify hints via command line (-v)
	and within the shell (\...).
	* include/mailutils/address.h (MU_ADDR_HINT_*): New defines.
	(struct _mu_address): Definition.
	(mu_address_create_hint): New prototype.
	* include/mailutils/parse822.h (mu_parse822_address_list)
	(mu_parse822_mail_box, mu_parse822_group) (mu_parse822_address,
	mu_parse822_route_addr) (mu_parse822_route,
	mu_parse822_addr_spec)
	(mu_parse822_unix_mbox, mu_parse822_local_part): Take hint and
	hint flags.
	* mailbox/parse822.c: Likewise. 
	* libproto/include/Makefile.am (noinst_HEADERS): Remove
	address0.h
	* libproto/include/address0.h: Removed.
	* mailbox/address.c (mu_address_create_hint): New function.
	(mu_address_create): Rewrite using mu_address_create_hint. 
	* mh/mh_init.c (mh_expand_aliases): Use
	mu_header_sget_field_name
	* mh/mh_whom.c (mh_alias_expand): Rewrite using
	mu_address_create_hint. This fixes parsing addresses similar to
	"a@b <a@b>".
	* mh/send.c: New command line option --preserve (--keep)

2009-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow to set user's personal namespace in imap4d.

	* imap4d/imap4d.c (homedir): Remove variable.
	(real_homedir, imap4d_homedir, modify_homedir): New variables.
	(imap4d_cfg_param): New statements: homedir,
	personal-namespace.
	(imap4d_session_setup0): Initialize real_homedir and
	imap4d_homedir.
	* imap4d/imap4d.h (homedir, rootdir): Remove declarations.
	(real_homedir, imap4d_homedir, modify_homedir): New
	declarations. Include mailutils/vartab.h.
	* imap4d/list.c, imap4d/lsub.c, imap4d/namespace.c,
	imap4d/subscribe.c, imap4d/unsubscribe.c, imap4d/util.c: Use
	imap4d_homedir and real_homedir, where appropriate.
	* NEWS: Update. 
	* imap4d/preauth.c: Remove inclusion of mailutils/vartab.h

2009-04-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/imap/folder.c (imap_list): Fix memory overrun. Set
	response->level.

2009-04-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/mbx_default.c (mu_mailbox_create_default): Reset mail
	to NULL if it is "".

2009-04-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow to use mailer URLs as append-only mailboxes (deprecates
	remote+ mailboxes)

	* NEWS: Update. 
	* configure.ac (MU_LIB_REMOTE): Remove.
	(AC_CONFIG_FILES): Remove libproto/remote/Makefile.
	* include/mailutils/registrar.h (mu_remote_mbox_record):
	Remove.
	(MU_REMOTE_MBOX_PRIO): Remove. 
	* libproto/Makefile.am (SUBDIRS): Remove remote.
	* libproto/include/mailer0.h (_mu_mailer_mailbox_init)
	(_mu_mailer_folder_init): New protos.
	* libproto/include/registrar0.h (_url_smtp_init)
	(_mailer_smtp_init): Remove.
	(_mu_mailer_sendmail_init, _mu_mailer_prog_init): Add
	prototype. 
	* libproto/include/url0.h (struct _mu_url._uplevel): New
	member.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Remove
	url_sendmail.c and url_smtp.c.
	* libproto/mailer/mbox.c: Move from ../remote.
	* libproto/mailer/url_sendmail.c: Remove.
	* libproto/mailer/url_smtp.c: Remove.
	* libproto/mailer/prog.c: Fix namespace.
	* libproto/mailer/sendmail.c: Likewise.
	* libproto/mailer/smtp.c: Likewise.
	* libproto/mailer/remote.c: New file. 
	* libproto/remote/: Remove. 
	* maidag/Makefile.am (maidag_LDADD): Remove ${MU_LIB_REMOTE}.
	* maidag/deliver.c (deliver_url): Remove `remote+' hack.
	(deliver): Fix error message.
	* maidag/guile.c: Fix indentation.
	* maidag/maidag.c: Support `remote+' mailboxes for backward
	compatibility.
	* mailbox/mailbox.c (_create_mailbox0): Call u_init after
	ensuring that url->scheme coincides with record->scheme.
	* mailbox/url.c (mu_url_uplevel): Use url->_uplevel, if
	defined. 
	* libmu_argp/mu_argp.h (mu_check_option): Remove duplicate and
	incorrect prototype.

2009-04-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/remote/folder.c (_remote_is_scheme): Fix invalid
	return value.

2009-03-30  Wojciech Polak  <polak@gnu.org>

	Capture Python output in maidag.

	* include/mailutils/python.h (mu_py_capture_stdout,
	mu_py_capture_stderr): New prototypes.
	* maidag/python.c (python_check_msg): Redirect output.

2009-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* libmu_scm/mailutils.scm.in: Remove leftover reference to
	mu_guimb.inc

2009-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/copy.c: Set target mailbox permissions.
	* imap4d/rename.c: Remove useless variable. Add some comments.

2009-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement guile output redirection in maidag.

	* libmu_scm/mu_guimb.c: Remove
	* libmu_scm/mu_dbgport.c: New file.
	* libmu_scm/Makefile.am: Update.
	* include/mailutils/guile.h (mu_process_mailbox): Remove.
	(mu_scm_make_debug_port, mu_scm_debug_port_init): New
	prototypes.
	* libmu_scm/mu_scm.c (mu_scm_init): Call
	mu_scm_debug_port_init.
	* maidag/guile.c (scheme_check_msg): Redirect error/output to
	MU port. 
	* mailbox/mutil.c (mu_expand_path_pattern): Expand ~.

2009-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish removing mail.local and mail.remote.

2009-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove mail.local and mail.remote, Maidag should be used
	instead.

	* mail.local: Remove.
	* mail.remote: Remove.
	* Makefile.am, configure.ac: Update.
	* doc/texinfo/mailutils.texi: Rebuild master menu.
	* doc/texinfo/programs.texi: Update.

2009-03-25  Wojciech Polak  <polak@gnu.org>

	Return int from mu_py_init_*()

2009-03-25  Wojciech Polak  <polak@gnu.org>

	Update mailutils.spec.in.

2009-03-25  Wojciech Polak  <polak@gnu.org>

	Add python to mailutils-config.

2009-03-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove vestiges of scripts/ in Makefiles.

2009-03-24  Wojciech Polak  <polak@gnu.org>

	Add Python scripting to maidag.

	* maidag/python.c: New file.
	* maidag/script.c (script_tab): Add Python.
	* maidag/maidag.h (python_check_msg): New prototype.
	* configure.ac: Conditionally define python-related variables.

2009-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite scripting support in maidag.

	* include/mailutils/guile.h (mu_guile_init, mu_guile_load)
	(mu_guile_eval, mu_guile_mailbox_apply, mu_guile_message_apply)
	(mu_guile_safe_exec, mu_guile_safe_proc_call): New protos. 
	* libmu_scm/Makefile.am: Add mu_guile.c
	* libmu_scm/mu_guile.c: New file.
	* libmu_scm/mu_mailbox.c (struct mu_mailbox): Kludge: new
	member noclose.
	(mu_scm_mailbox_free): Do not close/destroy mailbox if it is
	marked noclose.
	(mu_scm_mailbox_create0): Kludge: new function. 
	* libmu_scm/mu_message.c (mu_scm_message_print): Bugfix. 
	* maidag/Makefile.am: Add guile.c and sieve.c.
	* maidag/deliver.c (maidag_stdio_delivery) [WITH_GUILE]: Remove
	block.
	(deliver_url): Call script_apply, instead of sieve_test.
	* maidag/maidag.c: Rewrite scripting support in a modular way.
	Remove options: --sieve, --source (and the corresponding config
	statements). Add options: --language, --script. Add configure
	statement: filter (block).
	* maidag/maidag.h (progfile_pattern, sieve_pattern): Remove.
	(script_list, sieve_debug_flags, message_id_header,
	sieve_enable_log): New prototypes.
	[WITH_GUILE]: Remove.
	(maidag_script_fun, struct maidag_script): New data type.
	(script_handler): New extern. (script_lang_handler,
	script_suffix_handler)
	(script_register, script_apply): New protos.
	(scheme_check_msg, sieve_check_msg): New protos.
	* maidag/script.c: Rewrite. Provide general-purpose serialized
	script support. 
	* guimb/guimb.h (struct guimb_data): Remove.
	* guimb/main.c: Rewrite in a cleaner way, using functions from
	mu_guile.c.
	* guimb/collect.c (guimb_catch_body, guimb_catch_handler)
	(guimb_exit): Remove. 
	* guimb/scm/sieve-core.scm (sieve-current-message,
	sieve-mailbox): Public.
	(sieve-run-current-message): New public function.
	(sieve-run): Call sieve-run-current-message for each message.
	* guimb/scm/sieve.scm.in (sieve-save-program): Change code
	generation to suit both per-mailbox and per-message invocation.
	This kicks mail.local out of whack. 
	* maidag/guile.c: New file.
	* maidag/sieve.c: New file.

2009-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

	* configure.ac (GUIMB): Rename to MU_SCM_BIN_PROGRAMS_BUILD.
	* guimb/Makefile.am: Likewise.

2009-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix imap4d input tokenizer.

	The proper delimiters are ( and ), listed in RFC as
	atom_specials. The characters "[]<>." are delimiters for FETCH,
	and "." is a delimiter for STORE. Fix tokenizer to recognize
	these only in the corresponding contexts.

	In particular, it fixes parsing of input atoms containing dots,
	as foo@bar.baz, which previous versions incorrectly split in
	three.

	* imap4d/util.c (ISDELIM): Delimiters are only ( and )
	* imap4d/imap4d.h (struct imap4d_parsebuf): new data type.
	(imap4d_parsebuf_t): New data type. (imap4d_parsebuf_exit,
	imap4d_parsebuf_peek) (imap4d_parsebuf_next,
	imap4d_parsebuf_token)
	(imap4d_parsebuf_data, imap4d_with_parsebuf): New prototypes.
	* imap4d/parsebuf.c: New file.
	* imap4d/Makefile.am: Add parsebuf.c
	* imap4d/fetch.c, imap4d/store.c: Rewrite using parsebuf
	functions.

2009-03-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/stream.c (mu_stream_readline): Fix byte counting.

2009-03-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve autoconf machinery, drop support for Guile < 1.8.

	* scripts/guile-1.4: Removed.
	* scripts/guile-1.6/guile-doc-snarf: Move to the parent dir.
	* scripts/guile-1.6/guile-doc-snarf.awk: Move to the parent
	dir.
	* scripts: Rename to mu-aux. All references updated.
	* am/enable.m4 (MU_ENABLE_SUPPORT): add fourth argument,
	action-default Translate + to x.
	* am/guile.m4 (MU_RESULT_ACTIONS): Remove.
	(MU_CHECK_GUILE): Rewrite. Drop support for versions < 1.8
	* am/lib.m4 (MU_CHECK_LIB): Rewrite using a cleaner approach.
	* bootstrap.conf: Remove build_aux assignment.
	* configure.ac: Assume a new naming scheme for optional builds:
	for each subst variable named MU_whatever_BUILD there is a
	corresponding Makefile.am variable named MU_whatever_LIST, if
	`whatever' is to be built MU_whatever_BUILD is set to
	'$(MU_whatever_LIST)' New option --disable-c++. Improve status
	output.
	* examples/Makefile.am, examples/cpp/Makefile.am,
	include/mailutils/Makefile.am, libmu_cpp/Makefile.am,
	libmu_scm/Makefile.am, libmu_sieve/Makefile.am,
	libmu_sieve/extensions/Makefile.am, libmu_sieve/load.c,
	mail.remote/Makefile.am, mail.remote/testsuite/Makefile.am,
	mailbox/Makefile.am, mh/Makefile.am, mimeview/Makefile.am,
	mu-aux/Makefile.am, python/mailutils/Makefile.am: Reflect
	changes to autoconf machinery. 
	* /include/mailutils/guile.h: Drop support for versions < 1.8
	* libmu_scm/mu_util.c: Likewise.

2009-03-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mail: fix parsing of arguments containing =.

	* mail/util.c (util_do_command): Do not use = as a delimiter.
	* mail/set.c (mail_set): = is no longer returned as a token.
	* mail/setenv.c (mail_setenv): Likewise.

2009-03-18  Wojciech Polak  <polak@gnu.org>

	Add scripting to libmu_py.

	* python/libmu_py/script.c: New file.

2009-03-14  Wojciech Polak  <polak@gnu.org>

	Split Python interface into libmu_py and c_api.so.

	* include/mailutils/python.h: New file.
	* python/c_api: Rename to python/libmu_py.

2009-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.

	* imap4d/bye.c: Discern between input and output errors.
	* imap4d/imap4d.h (ERR_NO_IFILE): New error code.
	* imap4d/util.c: Discern between input and output errors.
	Improve trace output.
	(imap4d_getline): Signal ERR_NO_IFILE on EOF.
	* movemail/movemail.c: Fix include statements.

2009-03-08  Wojciech Polak  <polak@gnu.org>

	Add new Python interface and example programs.

2009-03-07  Wojciech Polak  <polak@gnu.org>

	Improve libmu_cpp.

	* libmu_cpp/address.cc, libmu_cpp/envelope.cc,
	libmu_cpp/header.cc, libmu_cpp/url.cc: Use sget instead of
	aget.
	* libmu_cpp/list.cc (mulist_to_stl): New function.
	(List::to_stl): New method.
	* include/mailutils/cpp/list.h: Likewise.

2009-03-05  Wojciech Polak  <polak@gnu.org>

	Add Envelope class to libmu_cpp. Add new methods.

	* include/mailutils/cpp/envelope.h, libmu_cpp/envelope.cc: New
	files.

2009-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix coredumps on null passwords in pam and ldap auth.

	* libmu_auth/pam.c (mu_pam_service): Initialize to package
	name.
	(mu_pam_conv): Raise PAM_AUTHTOK_RECOVER_ERR, if password is
	NULL. Fix memory leak on errors.
	(mu_authenticate_pam): Fix return value.
	* libmu_auth/ldap.c (mu_ldap_authenticate): Prevent coredump on
	empty password.

2009-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the return of get_ticket.

2009-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix semantics of mu_attribute_to_string.

	* include/mailutils/attribute.h (MU_STATUS_BUF_SIZE): New
	define.
	* libproto/mbox/mbox.c: Update use of mu_attribute_to_string.
	* mailbox/amd.c: Likewise.
	* mailbox/attribute.c (mu_string_to_flags): Rewrite.
	(mu_attribute_to_string): Fill the string with flag letters
	only, without "Status:" prefix and final newline.
	* NEWS: Update.

2009-03-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	All client utilities: read ~/.mu-tickets.

	* NEWS: Update.
	* include/mailutils/mailbox.h (mu_ticket_file): New extern.
	* include/mailutils/message.h (mu_message_save_to_mailbox):
	Change proto.
	* include/mailutils/sieve.h (mu_sieve_get_ticket,
	mu_sieve_set_ticket): Remove.
	* libmu_sieve/actions.c (sieve_action_fileinto): Update call to
	mu_message_save_to_mailbox.
	* libmu_sieve/sieve-priv.h (struct mu_sieve_machine): Remove
	ticket.
	* libmu_sieve/sieve.y (mu_sieve_get_ticket,
	mu_sieve_set_ticket): Remove.
	* mailbox/mbx_default.c (mu_mailbox_create_default): Read a
	wicket file and attach a ticket if mailbox opened successfully.
	* mailbox/wicket.c: Re-format.
	* sieve/sieve.c: Remove special wicket-handling code. 
	* libmu_auth/radius.c, movemail/movemail.c: Add missing
	includes

2009-02-27  Wojciech Polak  <polak@gnu.org>

	Update libmu_cpp.

	* libmu_cpp/filter.cc, include/mailutils/cpp/filter.h,
	include/mailutils/cpp/stream.h: Split FilterStream.
	* libmu_cpp/mailbox.cc, include/mailutils/cpp/mailbox.h: Add
	new methods.
	* examples/cpp/iconv.cc: Reflect changes in filter.h.
	* examples/cpp/mimetest.cc: Likewise.
	* examples/cpp/http.cc: Bugfix.

2009-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes in AMD code.

	* libproto/include/amd.h (new_msg_file_name): Add an argument
	indicating whether an actual expunging is going to take place,
	as opposed to saving message flags.
	* libproto/maildir/mbox.c (maildir_new_message_name): Sync with
	above changes.
	* libproto/mh/mbox.c (_mh_new_message_name): Likewise.
	* mailbox/amd.c (_amd_message_save): Handle unlink requests
	(new_msg_file_name returning NULL name). This avoids creating
	temp files.
	(amd_expunge): Remove messages that have had
	MU_ATTRIBUTE_DELETED on mailbox open, if the underlying mailbox
	implementation allows that.

2009-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Define LOG_AUTHPRIV if syslog.h does not.

2009-02-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove leftover dependencies of libmailutils from gnulib.

	* bootstrap.conf (gnulib_extra_files): Remove.
	* gnulib.modules (inttostr): Add module.
	* include/mailutils/io.h: New file.
	* include/mailutils/Makefile.am: Add io.h 
	* mailbox/inttostr.c, mailbox/inttostr.h: Remove
	* mailbox/imaxtostr.c, mailbox/offtostr.c, mailbox/umaxtostr.c:
	Remove
	* mailbox/intprops.h: Remove
	* mailbox/asnprintf.c, mailbox/asprintf.c,
	mailbox/vasnprintf.c: New files.
	* mailbox/Makefile.am: Update. 
	* mailbox/mu_umaxtostr.c: rename to lib/mu_umaxtostr.c
	* mailbox/mu_umaxtostr.h: rename to lib/mu_umaxtostr.h
	* lib/Makefile.am (libmuaux_la_SOURCES): Add mu_umaxtostr.[ch] 
	* libmu_auth/radius.c, libmu_cfg/common.c, libmu_scm/mu_port.c,
	libproto/imap/folder.c, libproto/imap/mbox.c,
	libproto/mbox/mbox.c, libproto/mh/mbox.c, libproto/pop/mbox.c,
	mailbox/acl.c, mailbox/daemon.c, mailbox/mailer.c,
	mailbox/message.c, mailbox/mutil.c, mailbox/stream.c: Use
	mu_strerror. Avoid using mu_umaxtostr.

2009-02-19  Wojciech Polak  <polak@gnu.org>

	* imap4d/util.c (imap4d_readline): Bugfix.

2009-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/mailer/prog.c (_expand_sender): Allocate memory.

2009-02-18  Wojciech Polak  <polak@gnu.org>

	Update mailutils-config after renaming libraries.

2009-02-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update timestamp.

2009-02-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/imap/folder.c (imap_parse): fix parsing of numeric
	values after UIDNEXT, UIDVALIDITY and UNSEEN.
	* NEWS: Sync with configure.ac

2009-02-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/imap/folder.c (imap_parse): fix parsing of numeric
	values after UIDNEXT, UIDVALIDITY and UNSEEN.

2009-02-17  Wojciech Polak  <polak@gnu.org>

	Update RPM spec.

2009-02-16  Wojciech Polak  <polak@gnu.org>

	* am/lib.m4 (MU_CHECK_LIB): Switch to AC_TRY_LINK_FUNC.

2009-02-14  Wojciech Polak  <polak@gnu.org>

	Update docs.

	* doc/texinfo/libmuauth.texi: Move to libmu_auth.texi
	* doc/texinfo/libsieve.texi: Move to libmu_sieve.texi

2009-02-14  Wojciech Polak  <polak@gnu.org>

	Rename libraries.

	Rename libmuauth to libmu_auth, libargp to libmu_argp, libcfg
	to libmu_cfg, and libsieve to libmu_sieve.

	* auth/*: Move to libmu_auth/*
	* libargp/*: Move to libmu_argp/*
	* libcfg/*: Move to libmu_cfg/*
	* libsieve/*: Move to libmu_sieve/*
	* libmu_sieve/sieve.h: Rename to sieve-priv.h
	* include/mailutils/libsieve.h: Rename to sieve.h
	* configure.ac: Update, bump to 2.0.90.

2009-02-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Find best matching registrar records.

	* mailbox/registrar.c (mu_registrar_lookup_url): Find best
	matching record.

2009-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update THANKS.

2009-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/imap/mbox.c (imap_envelope_sender): Bugfix. Address
	was freed before using its member.

2009-02-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix opening remote mailbox URLs with path component.

	* include/mailutils/folder.h (mu_folder_create_from_record):
	Change type of the 2nd argument to mu_url_t.
	* include/mailutils/url.h (mu_url_uplevel): New proto.
	* mailbox/folder.c (mu_folder_create_from_record): Change type
	of the 2nd argument to mu_url_t.
	(mu_folder_create): Reflect changes to
	mu_folder_create_from_record.
	* mailbox/mailbox.c (mailbox_folder_create): Use
	mu_url_uplevel.
	* mailbox/url.c (mu_url_uplevel): New function.

2009-02-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* libproto/imap/mbox.c (imap_envelope_sender): Fix operation
	when buf == NULL or buflen == 0.

2009-02-10  Serge Monkewitz  <smm@ipac.caltech.edu>

	Fix alignment bug in assoc.c.

2009-01-30  Wojciech Polak  <polak@gnu.org>

	Add Folder class to libmu_cpp. Provide new examples lsf.cc and
	msg-send.cc.

	* examples/cpp/lsf.cc, examples/cpp/msg-send.cc,
	include/mailutils/cpp/folder.h, libmu_cpp/folder.cc: New files.

2009-01-04  Wojciech Polak  <polak@gnu.org>

	Add Debug class to libmu_cpp.

	* include/mailutils/cpp/debug.h, libmu_cpp/debug.cc: New files.
	* examples/cpp/mimetest.cc, examples/cpp/sfrom.cc,
	libmu_cpp/header.cc, include/mailutils/cpp/header.h: Accept
	default header value if missing.

2009-01-03  Wojciech Polak  <polak@gnu.org>

	libmu_cpp refactoring and improvements.

	* examples/cpp/mimetest.cc, include/mailutils/cpp/attribute.h,
	include/mailutils/cpp/body.h, include/mailutils/cpp/mime.h,
	include/mailutils/cpp/mutil.h,
	include/mailutils/cpp/registrar.h, libmu_cpp/attribute.cc,
	libmu_cpp/body.cc, libmu_cpp/mime.cc, libmu_cpp/mutil.cc,
	libmu_cpp/registrar.cc: New files.

2008-12-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.0.

	* NEWS, configure.ac: Version 2.0
	* README: Update
	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/programs.texi: Update.
	* doc/Makefile.am: Add usage.texi.
	* imap4d/imap4d.c (imap4d_cfg_param): Fix typo.
	* auth/tls.c (mu_tls_module_init): Add missing break.

2008-12-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs.

2008-12-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.

2008-12-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix TLS support, improve GOCS subsystem.

	* include/mailutils/gocs.h (gocs_init_fp): Rename to
	mu_gocs_init_fp. Change signature. (mu_gocs_mailbox_init,
	mu_gocs_locking_init, mu_gocs_source_email_init)
	(mu_gocs_mailer_init, mu_gocs_logging_init)
	(mu_gocs_debug_init): Fix prototypes.
	* include/mailutils/gsasl.h (mu_gsasl_module_init): Update
	prototype.
	* include/mailutils/libsieve.h (mu_sieve_module_init): Update
	prototype.
	* include/mailutils/mu_auth.h (struct mu_auth_module.init):
	Update type to mu_gocs_init_fp.
	* include/mailutils/radius.h (mu_radius_module_init): Update
	prototype. 
	* include/mailutils/tls.h (struct
	mu_tls_module_config.client_enable): Replace with .enable. It
	affects entire TLS subsystem, not only client part.
	(mu_tls_module_init): Update prototype.
	* include/mailutils/types.hin (mu_gocs_op): New enum. 
	* mailbox/gocs.c (mu_gocs_dummy, mu_gocs_mailbox_init)
	(mu_gocs_locking_init, mu_gocs_source_email_init)
	(mu_gocs_mailer_init, mu_gocs_logging_init)
	(mu_gocs_debug_init): Take two arguments.
	(mu_gocs_flush): After running set stage, call all init
	callbacks with mu_gocs_op_flush. 
	* auth/tls.c (mu_tls_module_config): Initialize .enable to 1.
	(mu_tls_module_init): Rewrite using new prototype. Use
	mu_gocs_op_flush to initialize the library.
	(mu_init_tls_libs): Initialize the library only if
	mu_tls_module_config.enable is set.
	* auth/gsasl.c (mu_gsasl_module_init): Update.
	* auth/ldap.c (mu_ldap_module_init): Update.
	* auth/pam.c (mu_pam_module_init): Update.
	* auth/radius.c (mu_radius_module_init): Update.
	* auth/sql.c (mu_sql_module_init): Update.
	* auth/virtual.c (mu_virtual_module_init): Update.
	* libcfg/tls.c (mu_tls_param): Update.
	* libsieve/conf.c (mu_sieve_module_init): Update.
	* doc/texinfo/programs.texi: Update.

2008-12-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fixes.

	* doc/texinfo/Makefile.am (final): Add fix-sentence-spacing.
	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/programs.texi: Update.
	* pop3d/pop3d.c, sieve/sieve.c: Use mu_cfg_bool, where
	appropriate.

2008-12-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update the docs.

2008-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.

	* mailbox/parsedate.y (DATE_SET): Change >= comparison to
	strict >.
	(__SET_SECOND,__SET_MINUTE,__SET_HOUR): Fix upper limit.

2008-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update .gitignores.

2008-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Makefile.am: Remove gen_start_date.

2008-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switched to Git repository.

	* m4: Rename to am.
	* README-alpha, README-hacking: Reflect the switch.
	* */.cvsignore: Rename to .gitignore, update.
	* gnulib.modules: Add gitlog-to-changelog.
	* ChangeLog: Remove.

2008-12-04  Wojciech Polak  <polak@gnu.org>

	* include/mailutils/cpp/url.h, libmu_cpp/url.cc,
	examples/cpp/addr.cc, examples/cpp/url-parse.cc:
	Reflect recent API changes.

2008-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* testsuite/etc/mailutils.rc.in: New file.
	* testsuite/etc/DISTFILES: Add mailutils.rc.in
	* testsuite/lib/mailutils.exp (mu_copy_file): Define $arg
	variable to simplify using $ in template files.
	
	* sieve/testsuite/lib/sieve.exp (SIEVE_ETC_DIR): New global
	(sieve_test): Explicitly pass -f.
	Use SIEVE_ETC_DIR/mailutils.rc as configuration file.
	
	* imap4d/testsuite/imap4d/list.exp: Update the '*' test to match 
	new contents of $MU_DATA_DIR/etc
	* libproto/pop/url.c (_url_pop_init): Remove obsolete call to
	mu_url_init.
	* sieve/sieve.c (sieve_mailbox): Print actual mailbox URL in case
	of failure.

2008-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/opool.h (mu_opool_set_bucket_size)
	(mu_opool_get_bucket_size): New protos.
	* mailbox/opool.c (struct _mu_opool.bucket_size): New member.
	(alloc_pool, copy_chars): Use opool->bucket_size to set bucket
	size.
	(mu_opool_create): Initialize bucket_size with the default
	value.
	(mu_opool_set_bucket_size,mu_opool_get_bucket_size): New
	functions.

2008-11-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add iterator support to opool.
	
	* include/mailutils/opool.h (mu_opool_get_iterator): New function.
	* mailbox/opool.c (mu_opool_get_iterator): New function.
	* mailbox/hdritr.c (hdr_data_dup): Bugfix: notify owner about the
	new iterator.

2008-11-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/sql.c (get_field): NULL value in an optional field is
	equivalent to MU_ERR_NOENT.

2008-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/amd.c (_amd_attach_message): Call mu_body_clear_modified
	and mu_message_clear_modified after constructing the message to
	make sure it is not marked as modified.

2008-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/argcv.c (quote_transtab): Add vertical tabulation
	character. 

2008-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/cfg_driver.c (mu_cfg_tree_reduce): Format parse tree
	before scanning the tree.
	* mailbox/cfg_parser.y (block rule): Accept empty blocks.
	(parse_param): bail out if callback is not declared when it
	should.
	* mailbox/daemon.c (mu_daemon_create_pidfile)
	(mu_daemon_remove_pidfile): If running with UID=0 and EUID != 0,
	temporarily switch to EUID=0 for accessing pidfile (when
	creating or deleting).

2008-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/cfg_parser.y (mu_cfg_format_error): Raise
	mu_cfg_error_count only if level is less or equal to error.
	(_scan_tree_helper): "unknown section" is a warning.

	* configure.ac, NEWS: Version 1.9.93.
	* include/mailutils/libargp.h (mu_app_cfg_verifier): New extern.
	* libargp/muinit.c (mu_app_cfg_verifier): New variable.
	(mu_app_init): Call mu_app_cfg_verifier if in lint mode.
	* mailbox/cfg_driver.c (mu_cfg_tree_reduce): Return 0 if no
	configuration is supplied.
	
2008-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libargp/muinit.c (mu_app_init): Do not parse configs if
	--config-help was given.

2008-11-09  Wojciech Polak  <polak@gnu.org>

	Fix typos.
	
	* doc/texinfo/mailcap.texi, doc/texinfo/mailutils.texi
	doc/texinfo/mom.texi, doc/texinfo/mu-mh.texi,
	doc/texinfo/mu_message.texi, doc/texinfo/programs.texi,
	doc/texinfo/sieve.texi: Fix typos.

2008-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Rewrite default mailbox format support to make sure it does not
	break format autodetection. Improve the docs.
	
	* configure.ac (MU_DEFAULT_SCHEME): New configuration variable.
	* mailbox/version.c (mu_conf_opt): Include default scheme.
	
	* examples/mimetest.c, examples/mta.c, libmu_scm/mu_scm.c: Remove
	mu_path_record. Use mu_registrar_set_default_record.

	* libproto/mbox/folder.c (_path_is_scheme): Rename to
	_mbox_is_scheme. Minor changes as well.
	(_path_record, mu_path_record): Removed.
	(_mbox_record): Use _mbox_is_scheme.

	* libsieve/actions.c: Remove unused variable.
	
	* include/mailutils/Makefile.am (types.h rule): Replace
	_MU_DEFAULT_RECORD_. Change MU_OFF_TYPE replacement pattern to
	_MU_OFF_TYPE_.
	
	* include/mailutils/mailbox.h (mu_mailbox_set_default_proto)
	(mu_mailbox_get_default_proto): Remove. See below.
	* include/mailutils/registrar.h (mu_registrar_set_default_scheme)
	(mu_registrar_get_default_scheme)
	(mu_registrar_get_default_record)
	(mu_registrar_set_default_record)
	(mu_registrar_lookup_scheme): New prototypes.
	(mu_path_record): Remove.
	(mu_register_all_mbox_formats): Remove mu_path_record.
	Set default scheme using mu_registrar_set_default_record.
	(mu_register_local_mbox_formats): Likewise.
	* include/mailutils/types.hin (MU_OFF_TYPE): Rename to
	_MU_OFF_TYPE_.
	(MU_DEFAULT_RECORD): New define.

	* mailbox/mailbox.c (mu_mailbox_set_default_proto)
	(mu_mailbox_get_default_proto): Remove.
	(mu_mailbox_create): Remove default_proto kludge. mu_registrar
	stuff is responsible for finding the correct record.
	* mailbox/registrar.c (mu_registrar_set_default_record)
	(mu_registrar_get_default_record)
	(mu_registrar_set_default_scheme)
	(mu_registrar_get_default_scheme)
	(mu_registrar_lookup_scheme): New functions.
	(mu_registrar_lookup_url): Fall back to default record if no
	matching record is found and the URL was not set explicitly
	(i.e. does not begin with a scheme).
	
	* mailbox/gocs.c: Use mu_registrar_set_default_scheme instead of
	mu_mailbox_set_default_proto.
	* libsieve/extensions/pipe.c, libsieve/extensions/spamd.c,
	libsieve/extensions/vacation.c: Fix comments.
	
	* doc/texinfo/getdate.texi: New file (from gnulib).
	* doc/texinfo/Makefile.am (mailutils_TEXINFOS): Add getdate.texi
	(fix-sentence-spacing): New rule. Forces single-space
	inter-sentence spacing.
	(check-tabs, check-sentence-spacing): New rules.
	(check-format): Depend on the above two.
	(check-refs, check-fixmes, check-unrevised): Fix copy-paste
	errors. Print diagnostics to stderr.

	* doc/texinfo/auth.texi, doc/texinfo/fdl.texi,
	doc/texinfo/framework.texi, doc/texinfo/imap4.texi,
	doc/texinfo/libmuauth.texi, doc/texinfo/mailbox.texi,
	doc/texinfo/mailcap.texi, doc/texinfo/mailutils.texi,
	doc/texinfo/mbox.texi, doc/texinfo/message.texi,
	doc/texinfo/mom.texi, doc/texinfo/mu_message.texi,
	doc/texinfo/mu_mime.texi, doc/texinfo/mu_scm.texi,
	doc/texinfo/muint.texi, doc/texinfo/pop3.texi,
	doc/texinfo/rendition.texi, doc/texinfo/sieve.texi,
	doc/texinfo/url.texi, doc/texinfo/usage.texi: Use GNU instead of
	@sc{gnu}, because latter looks awful when typeset (especially when
	followed by a capitalized word). Fix format by running `make final'.

	* doc/texinfo/programs.texi: Document more config statements.
	* doc/texinfo/libsieve.texi: Document loadable actions and tests.

2008-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix
	
	* mailbox/amd.c (_amd_message_save): Make sure message files have
	right permissions.
	(amd_message_stream_open): Remove useless flags addition.
	Permissions are taken care of in _amd_message_save.
	
	Allow to set mailbox permissions using fileinto Sieve action.
	
	* mailbox/permstr.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add permstr.c.
	* imap4d/imap4d.c (parse_mode_spec): Remove function.
	(cb_mailbox_mode): Use mu_parse_stream_perm_string instead of
	parse_mode_spec.
	* imap4d/imap4d.h (namespace_getfullpath)
	(namespace_checkfullpath): First arg is const.
	* imap4d/namespace.c (namespace_getfullpath)
	(namespace_checkfullpath): First arg is const.
	* include/mailutils/message.h (mu_message_save_to_mailbox): Add
	5th argument (permissions).
	* mailbox/message.c: Likewise.
	* include/mailutils/mutil.h (mu_parse_stream_perm_string): New
	proto.
	(mu_stream_flags_to_mode): Add isdir argument.
	* libsieve/actions.c (sieve_action_fileinto): New tag :permissions
	allows to set permissions to the mailbox being created.
	* mailbox/mutil.c (mu_stream_flags_to_mode): Add 2nd argument
	(isdir). Any bits in [go] sets imply raising 'x' bit for
	directories (i.e. if isdir != 0).
	
	* libproto/maildir/mbox.c, mailbox/amd.c: Update calls to
	mu_stream_flags_to_mode. 

	* NEWS, doc/texinfo/sieve.texi: Update.
	
	Allow to set file permissions of the local mailboxes during
	creation.
	
	* include/mailutils/stream.h (MU_STREAM_IRGRP, MU_STREAM_IWGRP)
	(MU_STREAM_IROTH, MU_STREAM_IWOTH, MU_STREAM_IMASK): New defines.
	* include/mailutils/mutil.h (mu_stream_flags_to_mode): New
	prototype.
	* libproto/maildir/mbox.c (maildir_create, maildir_flush)
	(maildir_scan0): Consider mailbox flags	to determine its file
	mode.
	* mailbox/amd.c (amd_open, amd_message_stream_open): Likewise.
	* mailbox/file_stream.c (_file_open): Likewise.
	* mailbox/mutil.c (mu_stream_flags_to_mode): New file.
	
	* imap4d/namespace.c (namespace_getfullpath)
	(namespace_checkfullpath): Return the namespace number in the last
	argument (if not null).
	* imap4d/append.c, imap4d/copy.c, imap4d/delete.c, imap4d/list.c,
	imap4d/rename.c, imap4d/select.c, imap4d/status.c: Update calls to
	namespace_getfullpath.  
	* imap4d/create.c (imap4d_create): Set mailbox flags depending on
	the namespace it is created in.
	* imap4d/imap4d.c (mailbox_mode): New variable.
	(parse_mode_spec): New function.
	(imap4d_cfg_param): New statements other-mailbox-mode and
	shared-mailbox-mode.
	* imap4d/imap4d.h (mailbox_mode): New proto.
	(namespace_getfullpath, namespace_checkfullpath): Add a parameter.
	
	* mailbox/progmailer.c (mu_progmailer_set_debug): Add missing
	return statement.	

2008-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement forwarding functionality in Maidag.
	
	* maidag/forward.c: New file.
	* maidag/Makefile.am (maidag_SOURCES): Add forward.c.
	* maidag/deliver.c (deliver_url): Call maidag_forward for local
	users.
	* maidag/maidag.c (forward_file, forward_file_checks): New
	variables.
	(maidag_cfg_param): New keywords forward-file and
	forward-file-checks.
	* maidag/maidag.h (FWD_IWGRP, FWD_IWOTH, FWD_LINK, FWD_DIR_IWGRP)
	(FWD_DIR_IWOTH, FWD_ALL): New defines.
	(forward_file, forward_file_checks): New variables.
	(enum maidag_forward_result): New data type.
	(maidag_forward): New prototype.

	Simplify calls to final delivery functions.
	
	* maidag/deliver.c (mda): Pass msg as a 1st argument to deliver.
	(deliver_to_user): Remove 1st argument.
	(deliver): Change type of the 1st argument to mu_message_t.
	* maidag/lmtp.c (dot_deliver): Pass msg as a 1st argument to
	deliver.
	* maidag/maidag.c (sieve_test): Change type of the 2nd argument to
	mu_message_t.
	* maidag/maidag.h (sieve_test, deliver): Pass mu_message_t,
	instead of mu_message_t.
	
	* mailbox/mailer.c (mu_mailer_create_from_url): Set default debug
	level.
	* sql/mysql.c (mu_mysql_connect): Avoid coredumps if conn->server
	is NULL.

2008-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make maidag handle mailer URLs.

	This makes it possible to `deliver' mails to mailers without
	explicitly specifying `remote+mailer' mailbox URLs.  In
	particular, it is handy for implementing mailing lists using
	`prog' mailers (as with Mailman).
	
	* maidag/deliver.c (notify_action): Do nothing if biff_user_name
	is empty.
	(deliver_to_user): Remove `name' argument.  Allow for auth==NULL.
	(is_remote_url): Use case-sensitive comparison.
	(is_mailer_url): New function.
	(deliver_url): Handle mailer URLs as if they were corresponding
	`remote+' mailbox URLs.  This allows to handle mailing lists.
	* maidag/lmtp.c (lmtp_groups): New global.
	(lmtp_set_privs): New function. Sets primary and
	supplementary group privileges.
	(maidag_lmtp_server): Call lmtp_set_privs.
	* maidag/maidag.c (lmtp_group): Remove.  It is superseded by
	lmtp_groups.
	(maidag_cfg_param): Allow to specify supplementary groups.
	* maidag/maidag.h (lmtp_group): Replace with lmtp_groups.
	
	Change mailer creation mechanism.
	
	* include/mailutils/mailer.h (mu_mailer_create_from_url): New
	proto.
	* mailbox/mailer.c (mu_mailer_create_from_url): New
	function.
	(mu_mailer_create): Rewrite using mu_mailer_create_from_url.
	* libproto/mailer/prog.c (_url_prog_init): Do not call
	mu_url_init.
	(url_to_argv): Reflect changes to mu_url functions.
	* libproto/mailer/url_sendmail.c (_url_sendmail_init): Do not call
	mu_url_init.
	* libproto/mailer/url_smtp.c (_url_smtp_init): Likewise.

	Minor fixes.
	
	* mailbox/mailbox.c (_create_mailbox0): Take care not to destroy
	url, if creation of the mailbox failed.
	(_create_mailbox): Destroy url if unable to create mailbox.
	
	* mailbox/mutil.c (mu_is_proto): Take starting | as a protocol
	specification. A kludge. 

	* include/mailutils/argcv.h: Fix indentation.

	Change handling of query part in a URL.

	Queries are now parsed into arguments and returned as arrays
	of arguments.
	
	* libproto/include/url0.h (struct _mu_url): Replace query with
	array of query arguments.	
	* include/mailutils/url.h (mu_url_dup): New proto.
	(mu_url_get_query): Remove.
	(mu_url_sget_query, mu_url_aget_query): Return query split into
	arguments.
	(mu_url_set_scheme): New function.
	(mu_url_decode_len): New function.
	* mailbox/url.c (mu_url_dup): New function.
	(mu_url_get_query): Remove.
	(mu_url_sget_query, mu_url_aget_query): Return query split into
	arguments.
	(mu_url_set_scheme): New function.
	(mu_url_decode_len): New function.

	* libproto/remote/mbox.c (remote_mbox_init): Use parsed out URL,
	instead of the full URL string.
	
	* examples/url-parse.c: Change query output.
	* mailbox/testsuite/Urls: Reflect changes to url-parse.  Add new
	testcases.
	
	* libproto/imap/url.c, libproto/pop/url.c: Reflect changes to URL
	functions.

2008-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Initial implementation of a `prog' mailer.
	
	* configure.ac: Enable/disable prog mailer support.
	* include/mailutils/progmailer.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add
	progmailer.h
	* include/mailutils/mailutils.h: Include progmailer.h
	* include/mailutils/registrar.h (MU_PROG_PRIO): New define.
	(mu_prog_record): New extern.
	(mu_register_all_mailer_formats): Register mu_prog_record.
	* include/mailutils/types.hin (mu_progmailer_t): New typedef.
	* libproto/include/registrar0.h (MU_PROG_SCHEME)
	(MU_PROG_SCHEME_LEN): New defines.
	* libproto/mailer/prog.c: New file.
	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add
	prog.c
	* libproto/mailer/sendmail.c: Rewrite using mu_progmailer_t
	* libproto/remote/folder.c (_remote_is_scheme): Remove unused
	variable.
	* mailbox/progmailer.c: New file 
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add progmailer.c

	* mailbox/acl.c (_expand_aclno): Add a fixme.
	* mail/send.c (msg_to_pipe): Bugfix: use pclose, instead of fclose.
	* examples/config/mailutils.schema: Update.

2008-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/config/mailutils.dict: Use GNU OID number.
	* examples/config/mailutils.schema: Use sub-OID assigned to GNU
	Mailutils.

	* libsieve/prog.c (mu_sv_code_command): Ensure tag arguments have
	the proper type.

	Fix handling of stdin stream (in particular, in sieve).
	
	* libsieve/extensions/spamd.c (spamd_test): Fix typo.
	*  mailbox/file_stream.c (struct _file_stream): New members
	size and size_computed.
	(_stdin_file_read, _stdin_file_readline): Fix types of fs_offset.
	(_stdin_file_size): New function.
	(_stdout_file_write): Register _stdin_file_size as stream_size
	method if seekable flag is set.
	* mailbox/message_stream.c (struct _mu_rfc822_message): Remove
	unused member.
	* sieve/sieve.c (sieve_message): Create a seekable stream.

2008-10-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/extensions/spamd.c: New tag :user.

	* sieve/sieve.c: New working mode: if `-f -' is given, treat
	stdin as an RFC2822 message, apply the script to it and exit with
	1 if the message gets deleted, 0 if it is not and EX_SOFTWARE on
	software errors.
	In traditional mode, exit with standard sysexit codes.
	* testsuite/sieve/i-numeric.exp: Reflect changes in sieve.
	* NEWS: Update.
	
2008-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/sql.c (decode_tuple): Use new tuple parsing mode, unless
	`positional' is set to true.
	* include/mailutils/sql.h (struct mu_sql_module_config)
	(struct mu_internal_sql_config): New member `positional'.
	* libcfg/sql.c (mu_sql_param): New statement `positional'.

	* auth/virtual.c (getpwnam_virtual): Close file.
	* doc/texinfo/programs.texi: Document virtmode.
	* testsuite/Makefile.am (EXTRA_DIST): Remove
	* testsuite/makespool: Remove.

	* NEWS: Update.
	* doc/texinfo/libmuauth.texi: Update.
	* doc/texinfo/mailutils.texi: Update.
	* doc/texinfo/programs.texi: Update.
	
	* include/mailutils/mailbox.h (mu_mailbox_create_from_url): New
	function.
	* include/mailutils/mutil.h (mu_aget_user_email_domain): New
	function.
	* libproto/include/address0.h: Remove obsolete comment.
	* libproto/remote/mbox.c (remote_mbox_append_message): If
	recipient address is not given, try to construct it from the URL.
	* mailbox/mailbox.c (mu_mailbox_create_from_url): New function.
	* mailbox/mutil.c (mu_aget_user_email_domain): New function.
	
	* maidag/deliver.c (deliver_to_user): Mailbox and auth must be
	freed by the caller.
	(deliver_url): New function.
	(deliver): Rewrite to allow for delivering to mailboxes explicitly
	specified by URLs (--url command line option).
	* maidag/maidag.c (options): New option --url.
	(main): Handle --url.
	* maidag/maidag.h (url_option): New global.
	* maidag/mailquota.c (check_quota): Return if auth == NULL.

2008-10-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/libsieve.h (mu_sieve_match_part_checker): New
	prototype.
	* libsieve/comparator.c (mu_sv_match_part_checker): Rename back to
	mu_sieve_match_part_checker.  The function was mistakingly renamed
	on 2008-07-19.  All references updated.
	* libsieve/tests.c: Likewise.
	* libsieve/sieve.h (mu_sv_match_part_checker): Remove prototype.

	* doc/texinfo/programs.texi: Update.

2008-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libproto/mailer/smtp.c: Implement SIZE extension (RFC 1870).
	* doc/rfc/rfc1870.txt: New file.

2008-10-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* po/POTFILES.in: Change cfg_lexer.c to cfg_lexer.l

2008-10-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/url.c (url_parse0): Allow for
	<user>:<password>;AUTH=<auth> syntax.

2008-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix remote+ records.
	
	* libproto/remote/folder.c (remote_url_init): Remove.
	(_remote_is_scheme): New function.
	(_remote_mbox_record): Add _is_scheme method.
	* libproto/remote/mbox.c (remote_mbox_init): Remove useless
	check. 
	* mailbox/assoc.c (mu_assoc_clear): Return immediately if assoc
	tab is NULL.
	* mailbox/mailbox.c (_create_mailbox0): Do not enforce exact record
	scheme match if the scheme ends with a plus sign.

	Minor fixes in configuration.
	
	* doc/texinfo/programs.texi: Document Locking, ACL, and
	Tcp-wrappers.
	* mailbox/cfg_driver.c (mu_cfg_assert_value_type): Convert
	MU_CFG_STRING to MU_CFG_ARRAY.
	* mailbox/cfg_parser.y: Replace `tag: value' with `tag: vallist'.
	This allows for constructs like `acl a b c {', which were
	understood by the previous version.
	* mailbox/version.c (mu_conf_opt): Add WITH_LIBWRAP.

2008-09-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* config/mailutils-config.c (main): Do not print flag descriptions
	on --info, this breaks existing scripts.
	New option --verbose makes --info print verbose descriptions.
	* include/mailutils/version.h (mu_fprint_options)
	(mu_fprint_conf_option): Take additional argument.
	* mailbox/argcv.c (quote_transtab): Handle \".
	* mailbox/cfg_driver.c (mu_cfg_string_value_cb): Bugfix
	* mailbox/cfg_lexer.l: Allow * and = in non-quoted words.
	Improve 'stray character' diagnostics'.
	(unescape_to_line): Handle \\ and \".
	* mailbox/version.c (mu_fprint_options)
	(mu_fprint_conf_option): New argument `verbose' instructs whether
	to print textual descriptions.
	(mu_fprint_conf_option): Print single space after the flag to
	facilitate writing parser scripts.
	* testsuite/lib/mailutils.exp: Reflect this change.

2008-09-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Define LOG_FACILITY_STRING, a string
	representation of syslog facility.
	* mailbox/cfg_lexer.l: Re-introduce pragmatic comment
	#debug=, for setting debugging level in config module.
	* mailbox/cfg_parser.y: Likewise.
	* mailbox/gdebug.c (mu_debug_level_from_string): Ignore trailing
	newline.
	* mailbox/version.c (mu_conf_option): Add SYSCONFDIR, MAILSPOOLDIR
	and LOG_FACILITY.

	* mh/mh_init.c (mh_list_format): Reformat to make it more
	readable. Use decode primitive on header fields that may be
	encoded.
	
	* doc/texinfo/mailutils.texi: Further update.
	* doc/texinfo/programs.texi: Likewise.

2008-09-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Configure doc hints.
	* config/mailutils-config.c (main): Use mu_fprint_conf_option.
	* mailbox/version.c (mu_conf_option): Change type.
	(mu_fprint_conf_option): New function.
	(mu_fprint_options): Use mu_fprint_conf_option.
	(mu_print_options): Fix signature
	(mu_check_option): Change return type.
	* testsuite/lib/mailutils.exp (mu_version): Reflect changes in the
	output produced by --show-config-options.
	
	* include/mailutils/version.h (struct mu_conf_option): New data
	type.
	(mu_check_option): Change return type.
	(mu_fprint_conf_option): New prototype.
	* libargp/common.c (mu_common_argp): Rename --rcfile-* options
	to --config-*. Retain old names for a while.
	
	* doc/texinfo/Makefile.am (RENDITION_TEXI): New variable.
	(check-format, check-refs, check-fixmes, check-unrevised)
	(all-check-docs, check-docs): New rules.
	* doc/texinfo/rendition.texi: New file.
	* doc/texinfo/macros.texi: New file.
	* doc/texinfo/mailutils.texi: Start rewriting
	* doc/texinfo/programs.texi: Likewise.
	
	* doc/texinfo/c-api.texi: Reformat.
	* doc/texinfo/fdl.texi: Likewise.
	* doc/texinfo/libmuauth.texi: Likewise.
	* doc/texinfo/libsieve.texi: Likewise.
	* doc/texinfo/mu-mh.texi: Likewise.
	* doc/texinfo/sieve.texi: Likewise.
	
	* doc/texinfo/gendocs_template: Rewrite.

2008-08-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix testsuite to avoid spawning /bin/cp.
	* imap4d/testsuite/imap4d.rcin: New file.
	* imap4d/testsuite/Makefile.am (EXTRA_DIST): Add imap4d.rcin
	* imap4d/testsuite/.cvsignore: Add imap4d.rc
	* imap4d/testsuite/lib/imap4d.exp: Use mu_makespool to prepare
	mailspools and mu_create_config to create test configuration
	file.  Specify the maximum amount of configuration data in the
	latter, instead of using command line options.
	* mail.local/testsuite/lib/mail.local.exp: Likewise.
	* pop3d/testsuite/lib/pop3d.exp: Likewise.
	
	* pop3d/testsuite/pop3d.rcin: New file.
	* pop3d/testsuite/Makefile.am (EXTRA_DIST): Add pop3d.rcin
	* pop3d/testsuite/.cvsignore: Add pop3d.rc.
	
	* testsuite/etc/passwd.in: Use Tcl variable for expansion.
	* testsuite/lib/mailutils.exp (mu_copy_file): New function.
	(mu_makespool, mu_create_config): New function.
	(mu_init): Remove unused variable MU_MAKESPOOL.
	(mu_prepare_spools): Use mu_makespool.
	(mu_cleanup_spools): Remove.
	
	* libcfg/init.c (mu_parse_config_files): Minor change.
	* mailbox/cfg_lexer.l (mu_get_config): Fix return value.	

2008-08-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/mutil.h, mailbox/mutil.c (mu_normalize_path):
	Remove useless second argument.  All uses changed.

	Rewrite IMAP namespace support.
	* imap4d/imap4d.c (imap4d_cfg_param): other-namespace and
	shared-namespace take proper lists as arguments.
	(imap4d_session_setup0): Call namespace_init_session.
	(main): Call namespace_init.
	* imap4d/imap4d.h (set_namespace): Remove.
	(namespace_init): Change proto.
	(namespace_init_session): New prototype.
	(namespace): New declaration.
	* imap4d/namespace.c: Rewrite using lists.
	* mailbox/cfg_parser.y (parse_param): Cast string to lists if
	the parameter has list type.

2008-08-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement ID extension.
	* imap4d/id.c: New file.
	* imap4d/Makefile.am (imap4d_SOURCES): Add id.c, remove version.c.
	* imap4d/commands.c: Add ID command.
	Remove X-VERSION command.
	(SELECT,EXAMINE): Switch to authenticated mode on failure.
	* imap4d/imap4d.c (imap4d_argc, imap4d_argv): New variables.
	(imap4d_cfg_param): New keyword `id-fields'.
	(main): Save command line arguments.
	* imap4d/imap4d.h (imap4d_argc, imap4d_argv): New declarations.
	* imap4d/select.c (imap4d_select0): Do not reset state to auth on
	failure, this is done by util_finish.
	* imap4d/version.c: Remove.
	* imap4d/capability.c: Announce ID capability, remove X-VERSION.
	* imap4d/testsuite/imap4d/x.exp: Use ID instead of X-VERSION.
	
	* TODO, NEWS: Update.
	
	* mailbox/cfg_parser.y (_set_fun,parse_param): Bugfix.
	
2008-08-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes.
	
	* libcfg/acl.c (parsearg): Initialize size.
	* mailbox/cfg_driver.c (mu_cfg_assert_value_type): Bugfix.
	* mailbox/cfg_lexer.l (mu_get_config): Close file.
	* mailbox/cfg_parser.y: Fix array creation.
	
	Change configuration file parser based on the lexer/parser from
	GNU Dico.
	
	* auth/gsasl.c: Remove deprecated data types.
	* imap4d/auth_gsasl.c (retrieve_password): Minor fix.

	* imap4d/imap4d.c, imap4d/imap4d.h, imap4d/namespace.c,
	lib/tcpwrap.c, libcfg/acl.c, libcfg/auth.c, libcfg/common.c,
	libcfg/ldap.c, libcfg/sieve.c, libcfg/sql.c, maidag/maidag.c,
	mail.local/main.c, mailbox/gdebug.c, mailbox/msrv.c,
	mimeview/mimeview.c, pop3d/bulletin.c, pop3d/pop3d.c,
	pop3d/pop3d.h, sieve/sieve.c: Reflect changes to the configuration
	system. 

	* mailbox/Makefile.am (AM_LFLAGS): New variable.
	(EXTRA_DIST) Add cfg_lexer.l.
	(libmailutils_la_SOURCES): Add alloc.c and opool.c
	(BUILT_SOURCES): Add cfg_lexer.c.
	(cfg_lexer.c): New goal.
	* mailbox/alloc.c, mailbox/opool.c: New files.
	* mailbox/cfg_lexer.c: Remove.
	* mailbox/cfg_lexer.l: New file.
	* mailbox/.cvsignore: Add cfg_lexer.c.
	
	* include/mailutils/Makefile.am: Add alloc.h and opool.h
	* include/mailutils/alloc.h: New file.
	* include/mailutils/opool.h: New file.
	
	* include/mailutils/cfg.h (mu_cfg_lexer_t,mu_cfg_alloc_t)
	(mu_cfg_free_t): Remove types.
	(MU_CFG_STRING, MU_CFG_LIST, MU_CFG_ARRAY): New defines.
	(mu_config_value_t): New data type.
	(struct mu_cfg_node): Change type of `label'.
	(struct mu_cfg_tree): Remove `alloc', `free'.
	New member `pool'.
	(mu_cfg_parse): Simplify the signature by removing superfluous
	arguments.
	(mu_cfg_tie_in): Remove.
	(mu_cfg_lexer_pool): New function.
	(mu_cfg_find_node, mu_cfg_find_node_label): Remove.
	(mu_cfg_callback_t): Change signature.
	(MU_CFG_LIST_MASK): New define.
	(MU_CFG_LIST_OF, MU_CFG_TYPE, MU_CFG_IS_LIST): New defines.
	(mu_cfg_get_debug): New function.
	(mu_cfg_assert_value_type, mu_cfg_string_value_cb): New functions.
	(mu_cfg_tree_set_alloc, mu_cfg_tree_alloc): Remove.
	* mailbox/cfg_driver.c: Adapt for new node structure.
	(mu_cfg_assert_value_type, mu_cfg_string_value_cb): New function.
	* mailbox/cfg_format.c: Adapt for new node structure.
	* mailbox/cfg_parser.y: Adapt for changes in cfg data types and
	lexer.
	
	* include/mailutils/mailutils.h: Include alloc.h and opool.h
	* include/mailutils/mu_auth.h (mu_authorization_add_module)
	(mu_authentication_add_module): New prototypes.

	* include/mailutils/syslog.h (mu_string_to_syslog_facility)
	(mu_string_to_syslog_priority): First argument is const char *.
	* mailbox/syslog.c: Likewise.
	
	* include/mailutils/types.hin (mu_opool_t): New type.
	* mailbox/list.c (mu_list_get_comparator): Add missing return
	statement.
	
2008-08-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Autobuild setup.
	* configure.ac: Add AB_INIT.
	* gnulib.modules: Add autobuild.
	
	Bugfixes.
	* TODO: Update.
	* imap4d/fetch.c: Prevent coredumps on inexpected end of statement
	(e.g. `FETCH 1:* (uid')

	* imap4d/imap4d.h (imap4d_select0): Update prototype.
	* imap4d/select.c (imap4d_select0): Do not advertise actual
	mailbox name with a NO response.
	Return to authenticated state on failure.
	
	* doc/rfc/Makefile.am (EXTRA_DIST): Add new rfcs.
	* doc/rfc/rfc1413.txt, doc/rfc/rfc2087.txt, doc/rfc/rfc2180.txt,
	doc/rfc/rfc2683.txt, doc/rfc/rfc3348.txt,
	doc/rfc/rfc4314.txt: New files. 

2008-08-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.
	* lib/tcpwrap.c (mu_tcp_wrapper_cb_hosts_deny_syslog):
	(mu_tcp_wrapper_cb_hosts_allow_syslog): Use syslog priorities,
	not facilities.
	(tcpwrapper_param): Rename allow-syslog-level and
	deny-syslog-level to allow-syslog-priority and
	deny-syslog-priority, correspondingly.	

	Version 1.9.92.

	* imap4d/list.c (imap4d_list): Fix addslash condition.

	Improve folder listing.
	* include/mailutils/registrar.h (_mu_record): New method
	`_list_p'.
	(mu_record_list_p): New function.
	* libproto/include/amd.h (MU_AMD_SIZE_FILE_NAME): New define.
	* libproto/maildir/folder.c (_maildir_is_scheme): Return
	MU_FOLDER_ATTRIBUTE_FILE|MU_FOLDER_ATTRIBUTE_DIRECTORY, on
	success.
	Implement _list_p method.
	* libproto/mbox/folder.c (list_helper): Change semantics of the
	2nd argument.  The record is used to determine whether or not
	to list a particular file.
	* libproto/mh/folder.c: Implement _list_p method.
	* mailbox/amd.c (SIZE_FILE_NAME): Replace with
	MU_AMD_SIZE_FILE_NAME from amd.h.
	* mailbox/registrar.c (mu_record_list_p): New function.
	
	Bugfix.
	* libproto/maildir/mbox.c (info_to_flags): Fix return value.

	Implement UNSELECT extension.
	* doc/rfc/Makefile.am: Add rfc3691.txt
	* doc/rfc/rfc3691.txt: New file.
	* imap4d/capability.c: Announce UNSELECT capability.
	* imap4d/close.c: Implement UNSELECT command.
	* imap4d/commands.c: Add UNSELECT command.
	* imap4d/imap4d.h (imap4d_unselect): New proto.
	* imap4d/testsuite/imap4d/anystate.exp: Reflect UNSELECT
	capability.
	* imap4d/testsuite/imap4d/examine.exp: Reflect yesterday's changes
	to STATUS output.

2008-08-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/status.c (imap4d_status): Remove extra whitespace 
	before closing parenthesis in untagged reply.

	Bugfixes.
	* imap4d/fetch.c (parse_fetch_body): Bugfix, allow another tokens
	after BODY.
	* imap4d/util.c (util_msgset): Make sure returned number of
	elements in set is always correct.
	* mailbox/folder.c (is_known_folder): Compare paths as well.  It
	was commented out on 2001-04-10 (7 years ago!!!) for unknown
	reasons.
	* mailbox/url.c (DECL_CMP): Bugfix. The macro effectively created
	a scheme comparator, no matter what its second argument was.

2008-08-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	New functions.
	* include/mailutils/list.h (mu_list_get_comparator)
	(mu_list_intersect_dup, mu_list_intersect): New prototypes.
	* mailbox/list.c (mu_list_get_comparator)
	(mu_list_intersect_dup, mu_list_intersect): New functions.

	Fix GSASL in imap4d.
	* auth/gsasl.c (_gsasl_readline): Prevent getting stuck in
	blocking streams.
	* imap4d/auth_gsasl.c: Remove deprecated functions and data types.
	* imap4d/auth_gss.c (auth_gssapi): Fix signature.
	* imap4d/copy.c (imap4d_copy0): Fix return value.
	* imap4d/imap4d.c (imap4d_cfg_param): Fix type of login-disabled.
	* include/mailutils/gsasl.h (struct mu_gsasl_module_data): New
	members: service, realm, hostname, anon_user.
	* libcfg/gsasl.c (mu_gsasl_param): New keywords: service,
	realm, hostname, anonymous-user.

2008-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/util.c (imap4d_readline): Fix loop break condition.
	* imap4d/testsuite/lib/imap4d.exp: Send newline after a literal.

	Bugfixes.
	* imap4d/copy.c, imap4d/fetch.c, imap4d/store.c: Do not report
	error on non-existing message sets (RFC 3501, section 6.4.8).
	* imap4d/testsuite/imap4d/IDEF0955.exp: Reflect this behavior.
	* imap4d/testsuite/imap4d/fetch.exp: Header names in replies 
	to BODY[HEADER.FIELDS...] are no longer quoted.

2008-08-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	More bugfixes in imap4d.
	* imap4d/authenticate.c (_auth_try): Fix call to p->handler.
	* imap4d/fetch.c (fetch_send_section_part): New argument
	close_bracket. 
	Never print .PEEK, it confuses some clients (notably Thunderbird).
	I need to verify RFC, though.
	All callers updated.
	* imap4d/idle.c: Use imap4d_getline to get the reply, to avoid
	modifying tok and command.
	* imap4d/imap4d.h (util_send_bytes, util_trim_nl): New prototypes.
	* imap4d/util.c (util_trim_nl): New function.
	(imap4d_getline): Use util_trim_nl.
	
	Bugfixes.
	* imap4d/fetch.c (fetch_send_section_part): Make sure the item tag
	always reflects peek status.  All callers updated.
	(fetch_io): Try to allocate as large a buffer as possible.
	Use util_send_bytes where fit.
	* imap4d/imap4d.h (imap4d_auth_handler_fp): Remove unused argument.
	* imap4d/store.c (imap4d_store0): Take into account eventual UID
	prefix. 
	* imap4d/util.c (util_send_bytes): New function.
	(util_send): Comment out transcript.
	(util_do_command): Fix coredump on invalid commands.
	(imap4d_readline): Transcript only first line of the input.
	Ensure entire literal is read.

	Fix input operations and RFC-compliance in imap4d.
	
	* imap4d/util.c (util_getword, util_getitem, util_token)
	(util_unquote): Remove.
	(imap4d_readline): Rewrite to reduce memory reallocation.  Add 
	support for non-synchronizing literals (RFC 2088).
	(imap4d_readline_ex): Remove.
	(util_do_command): Rewrite using new imap4d_readline.
	(util_parse_internal_date0): Remove.
	(imap4d_tokbuf_init, imap4d_tokbuf_destroy, imap4d_tokbuf_argc)
	(imap4d_tokbuf_getarg, util_isdelim)
	(imap4d_tokbuf_from_string): New functions.
	* imap4d/append.c, imap4d/auth_gss.c, imap4d/authenticate.c,
	imap4d/check.c, imap4d/close.c, imap4d/commands.c, imap4d/copy.c,
	imap4d/create.c, imap4d/delete.c, imap4d/examine.c,
	imap4d/imap4d.h, imap4d/list.c, imap4d/login.c, imap4d/logout.c,
	imap4d/lsub.c, imap4d/expunge.c, imap4d/idle.c, imap4d/noop.c,
	imap4d/rename.c, imap4d/search.c, imap4d/select.c,
	imap4d/starttls.c, imap4d/status.c, imap4d/store.c,
	imap4d/subscribe.c, imap4d/uid.c, imap4d/unsubscribe.c,
	imap4d/version.c: Rewrite using new imap4d_readline.
	* imap4d/namespace.c: Use new imap4d_readline.  Ensure that
	each reported prefix ends with a hierarchy delimiter.
	* imap4d/imap4d.c (imap4d_mainloop): Use new imap4d_readline.
	* imap4d/fetch.c: Rewrite parser from scratch.
	* imap4d/capability.c (imap4d_capability_init): Report LITERAL+
	capability.

	* imap4d/testsuite/imap4d/anystate.exp: Account for the LITERAL+
	capability.
	* imap4d/testsuite/imap4d/append.exp: Fix APPEND arguments (imap4d
	requires exactly three arguments, as per RFC3501.
	Fix octet count in literals returned by fetch (previous versions
	failed to include the trailing CRLF).
	* imap4d/testsuite/imap4d/create.exp: Likewise.
	* imap4d/testsuite/imap4d/fetch.exp: Fix FETCH arguments (previous
	versions incorrectly accepted header-list without parentheses.
	Fix result of FETCH 4 BODY[2.2.1]: it returns entire part, in the
	contrast to previous versions, which treated it as
	BODY[2.2.1.TEXT].

	* maidag/mailtmp.c (mail_tmp_finish): Ensure /dev/null is treated
	as mailbox.

2008-08-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix imap appends for AMD mailboxes.

	* imap4d/append.c (imap4d_append0): Provide size method for the
	message	stream.
	* imap4d/select.c (imap4d_select0): Call mu_mailbox_create_default.
	* mailbox/amd.c (amd_append_message): Improve error checking.

2008-08-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/create.c: Rewrite to create mailboxes honoring
	mailbox-type. 
	* mailbox/mailbox.c (mu_mailbox_create): Bugfix.

2008-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pop3d/retr.c (pop3d_retr): Use constant-size buffer.  This
	avoids running out of memory on messages that do not contain
	trailing newline.
	* pop3d/top.c (pop3d_top): Likewise.

2008-07-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libproto/include/amd.h: Fix indentation.
	* libproto/maildir/mbox.c (maildir_scan_dir): Do not assign uids
	before inserting message, it breaks their ordering.
	(maildir_scan0): Assign uids here.  A temporary solution.

2008-07-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix.
	
	* mh/mhn.c (normalize_path): First arg is const char *.
	(store_handler): Avoid unnecessary allocations (and coredumps,
	if mhn-storage profile is not set.

	Finish namespace cleanup in libsieve.

	* libsieve/actions.c, libsieve/comparator.c, libsieve/conf.c,
	libsieve/load.c, libsieve/prog.c, libsieve/register.c,
	libsieve/relational.c, libsieve/require.c, libsieve/runtime.c,
	libsieve/sieve.h, libsieve/sieve.l, libsieve/sieve.y,
	libsieve/tests.c, libsieve/util.c: Prefix all external
	identifiers, that are not intended for use by application
	programs, with mu_sv_.
	
	Minor fixes.
	
	* NEWS, configure.ac: Raise version to 1.9.91
	* mail/mailline.c (ml_getc): Fix indentation.
	* mailbox/mime.c (mu_mime_get_part): Return MU_ERR_NOENT if part
	is out of range.

	Keep namespace clean
	
	* libsieve/comparator.c, libsieve/prog.c, libsieve/require.c,
	libsieve/runtime.c, libsieve/sieve.h, libsieve/sieve.l,
	libsieve/sieve.y, libsieve/util.c: Prefix instr_ functions with
	mu_.
	(sieve_filename, sieve_line_num): Removed.  Use new global
	mu_sieve_locus instead.

2008-07-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix converting RFC822 streams to messages.
	
	* mailbox/message_stream.c (_mu_rfc822_stream): New members
	envelope, and envelope_length.
	(_mu_rfc822_read, _mu_rfc822_readline, _mu_rfc822_size): Skip
	eventual envelope string.
	(_mu_rfc822_open): Save envelope.
	(_mu_rfc822_destroy): Free envelope.
	(restore_envelope): Use message envelope, if it is present.

2008-06-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/header.c (header_readline): Revert yesterday's change.

2008-06-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/ldap.c (chk_sha): Remove useless return.
	* mailbox/header.c (mu_hdrent_find_stream_pos): Check for
	hrd->tail != NULL.
	(header_readline): Return immediately if header size is 0.

2008-06-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/radius.c (mu_grad_logger): New function.
	(mu_radius_module_init): Install a custom logger function.

2008-05-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libproto/include/amd.h (struct _amd_message.has_new_msg): New
	field.
	* mailbox/amd.c (amd_append_message): Cache information about
	mailbox size in file .mu-size.
	(make_size_file_name, read_size_file, write_size_file): New
	functions.
	(amd_expunge, amd_sync): Update size cache file.
	(amd_get_size): Use size cache file if no mailbox_size method is
	provided. 
	* mailbox/mbx_default.c (mu_normalize_mailbox_url): Accept `='
	suffix for all mailbox types.
	* movemail/movemail.c (main): Call mu_mailbox_sync before closing
	destination mailbox.

2008-05-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* lib/Makefile.am (libmuaux_la_SOURCES): Add userprivs.c.
	* lib/userprivs.c: New file.
	* lib/muaux.h (mu_switch_to_privs): New prototype.

	* libproto/include/amd.h (_amd_data.msg_finish_delivery): Pass
	original message as the 3rd argument.
	* libproto/maildir/mbox.c (maildir_msg_finish_delivery): Take
	original message as the 3rd argument.
	Use message attributes to select the subdirectory to place it
	into.
	* mailbox/amd.c (amd_append_message): Pass original message as the
	3rd argument to msg_finish_delivery.

	* mailbox/filter_trans.c (SOFTBRK): Remove unused macro.

	* movemail/movemail.c: New option --copy-permissions (-P).

2008-04-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement compilation of Sieve sources from the memory.
	
	* include/mailutils/libsieve.h (mu_sieve_compile_buffer): New
	function.
	* libsieve/sieve.h (sieve_lex_begin_string): New function.
	* libsieve/sieve.l: Remove support for AT&T lex.
	(sieve_lex_begin_string): New function.
	* libsieve/sieve.y (mu_sieve_compile_buffer): New
	function.

	* mailbox/header.c: Fix indentation.

2008-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libargp/tls.c (_tls_argp_parser): Take care not to pass NULL as
	the argument to the "tls" statement.

2008-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/comsat.c, imap4d/imap4d.c, imap4d/preauth.c,
	libargp/sieve.c, libcfg/ldap.c, libcfg/sieve.c: Fix translatable
	strings.

2008-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Require gettext 0.17
	* auth/ldap.c, auth/radius.c, libargp/tls.c, mailbox/cfg_lexer.c,
	pop3d/logindelay.c: Fix diagnostic messages.
	
2008-03-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* maidag/maidag.c (main): Fix autodetection of log_to_stderr.
	* maidag/deliver.c, maidag/maidag.h, maidag/mailtmp.c: Rename
	mailer_err to maidag_error.
	* maidag/util.c (mailer_err): Rename to maidag_error. Print to
	stderr only if log_to_stderr is set.

	Fix bootstrapping with gettext 0.17.
	
	* bootstrap.conf (avoided_gnulib_modules): Remove size_max
	(excluded_files): Remove m4/size_max.m4.
	(gnulib_extra_files): Add m4/inttostr.m4
	* gnulib.modules: Add intprops and stdint.

	* m4/intmax.m4, m4/intmax_t.m4, m4/inttostr.m4, m4/inttypes-h.m4,
	m4/inttypes-pri.m4, m4/inttypes.m4, m4/inttypes_h.m4: Remove

2008-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	* bootstrap.conf (XGETTEXT_OPTIONS): Update flags.
	* configure.ac, NEWS: Version 1.9.90
	* m4/.cvsignore: Add environ.m4

	* po/ca.po, po/es.po, po/fr.po, po/pl.po, po/ro.po, po/ru.po,
	po/rw.po, po/sv.po, po/uk.po, po/LINGUAS, po/ChangeLog: Remove.
	We will get po files directly from translationproject.org.

2008-03-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/folder.c, mh/mh_argp.c, mh/mh_getopt.c, mh/mh_init.c,
	mh/rmf.c: Use mu_program_name instead of
	program_invocation_short_name. 

2008-02-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/mh_ctx.c (mh_context_read): Allow for header continuation
	lines.
	* mh/mh_whom.c (mh_whom): Improve diagnostics.

2008-02-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/Makefile.am (AM_LDFLAGS): Remove.
	(LDADD): Add the necessary libraries.
	(aclck_LDADD, argcv_LDADD): Remove.
	(muemail_LDADD): Needs MU_APP_LIBRARIES.

2008-02-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libcfg/init.c: Fix error reporting.
	* mailbox/cfg_driver.c (mu_parse_config): Fix memory leak.

2008-02-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/load.c: Add forward declaration of _add_load_dir
	* mailbox/parsedate.y (DATE_SET): Fix bug introduced 2008-01-02:
	val can sometimes be negative.
	* examples/Makefile.am (aclck_LDADD): Define.

2008-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/comsat.c (comsat_cfg_param): Reword a help message
	for require-tty.
	* examples/header.c (cmd_readline): New function.
	New command 'readline'.
	* po/POTFILES.in: Remove stray reference to muerrno.c

2008-02-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/action.c (act_getline): Bugfix. Do not return eof
	on an empty line. Reported by Damon Harper.

2008-02-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/pop3client.c: Implement variable expansions in the
	prompt. 

	* NEWS: Update.

	* pop3d/bulletin.c (read_bulletin_db): Return success if db does
	not exist.
	* lib/strexit.c: New file.
	* lib/signal.c: New file.
	
2008-02-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pop3d/extra.c (pop3d_readline): After a failed authorization
	attempt many clients simply disconnect without issuing QUIT. 
	Do not count this as a protocol error.    

	* NEWS: Update.
	* imap4d/bye.c, imap4d/starttls.c, imap4d/util.c: Use exit codes
	from sysexits.h
	* imap4d/imap4d.c: Use mu_set_signals to install signals.
	Use exit codes from sysexits.h.
	* imap4d/imap4d.h: Include sysexits.h and muaux.h
	(ERR_TERMINATE): New define.
	(imap4d_sigchld,imap4d_signal): Remove.
	(imap4d_master_signal,imap4d_child_signal): New prototypes.
	* imap4d/signal.c (imap4d_master_signal,imap4d_child_signal): New
	functions.

	* pop3d/pop3d.h Include sysexits.h and muaux.h
	(ERR_TERMINATE): New define.
	(pop3d_signal): Remove.
	(pop3d_master_signal, pop3d_child_signal): New protos.
	* pop3d/signal.c (pop3d_master_signal, pop3d_child_signal): New
	functions.
	
	* pop3d/extra.c, pop3d/popauth.c
	* pop3d/pop3d.c: Use mu_set_signals to install signals.
	Use exit codes from sysexits.h.
	
	* include/mailutils/server.h (mu_m_server_set_strexit): New
	prototype.
	* include/mailutils/types.hin (MU_ARRAY_SIZE): New define.
	
	* lib/Makefile.am (libmuaux_la_SOURCES): Add signal.c, strexit.c.
	(noinst_HEADERS): Add muaux.h
	* lib/muaux.h: New file.

	* libsieve/extensions/spamd.c: Add NLS markers.

	* mailbox/header.c (header_readline): Minor rewrite.
	* mailbox/msrv.c (struct _mu_m_server): New member `strexit'.
	(mu_m_server_begin): Call alloc_children.
	(mu_m_server_restore_signals): New function.
	(mu_m_server_end): Call mu_m_server_restore_signals.
	(m_srv_conn): Reset signals in child branch.

	* po/POTFILES.in: Update.
	
	* mailbox/header.c (header_readline): Bugfix: account for
	multi-line headers.

	* imap4d/list.c (imap4d_list): Speed up LIST "" INBOX.
	* libproto/imap/folder.c (folder_imap_list): Remove erroneous
	assignments to f_imap->folder.

	Fix handling of remote mailboxes in clients:
	
	* libproto/imap/url.c (_url_imap_init,_url_imaps_init): Remove
	call to mu_url_init.
	* libproto/pop/url.c (_url_pop_init): Remove call to mu_url_init.
	* mailbox/mailbox.c (mailbox_folder_create): Bugfix: Lack of path
	component is not an error.
	
2008-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/msrv.c (struct _mu_m_server): New member `num_children'.
	New member `child_pid'.
	(children): Remove global.
	(m_server_list): New variable. Keeps track of created m_servers.
	(alloc_children, register_child, unregister_child)
	(terminate_children): New functions.
	(m_server_cleanup): New function.
	(mu_m_server_idle): Iterate over all registered m-servers until
	one of them recognizes the child.
	(mu_m_server_create,mu_m_server_destroy): Keep track of existing
	m-servers using m_server_list.
	(mu_m_server_set_max_children): Rewrite using alloc_children.
	(mu_m_server_run): Terminate all children before returning.
	(m_srv_conn): Use register_child to remember created children.

	* NEWS: Update.
	* examples/header.c: New command `itr'.
	(main): Empty input repeats the recent command.
	* include/mailutils/header.h (mu_header_get_iterator): New
	function.
	* libproto/include/header0.h (struct _mu_header): New member itr.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add hdritr.c
	* mailbox/hdritr.c: New file.
	* mailbox/header.c (mu_header_remove): Bugfix. Invalidate the
	header after removal.
	
2008-01-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/radius.c (_expand_query): Fix typo.
	* mailbox/cfg_lexer.c (copy_string0): New function.
	(copy_string): Rewrite using copy_string0.
	(copy_to): Parse strings correctly.
	(default_lexer): Bugfix. Return string if tag is quoted.

2008-01-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pop3d/bulletin.c (open_bulletin_mailbox): Bugfix.

2008-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/cfg_driver.c (mu_cfg_section_add_params): Initialize
	section.target with param->data;
	* mailbox/stream.c (mu_stream_vprintf): Bugfix.

2008-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/listop.c (find): Fix copy-n-paste error.
	(iter): Return error code.
	(main): Create iterators on demand.
	New command `close'.

	* mailbox/iterator.c (mu_iterator_detach): Bugfix.
	
2008-01-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/acl.h, include/mailutils/debug.hm4,
	mailbox/acl.c (mu_sockaddr_to_str, mu_sockaddr_to_astr)
	(mu_acl_check_sockaddr, mu_acl_check_inaddr): Use const pointers
	when appropriate.

	* include/mailutils/cfg.h (mu_offsetof): Move mu_offsetof to
	types.hin.
	* include/mailutils/types.hin (mu_offsetof): New macro.
	* mailbox/acl.c (MU_S_UN_NAME): New macro.
	(debug_sockaddr, mu_sockaddr_to_str, _acl_match)
	(_run_entry): Take into account salen for AF_UNIX.

2008-01-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/gocs.h (log_facility): Remove.
	* include/mailutils/syslog.h (mu_log_facility, mu_log_tag): New
	declarations.
	(MU_LOG_TAG): New define.
	* mailbox/gocs.c (mu_gocs_logging_init): Set mu_log_tag.
	* mailbox/syslog.c (mu_log_facility, mu_log_tag): New variables.
	* libcfg/common.c (mu_logging_param): New statement `tag'. 
	* comsat/comsat.c, imap4d/imap4d.c, imap4d/login.c,
	maidag/maidag.c, mail.local/main.c, pop3d/pop3d.c, pop3d/user.c,
	sieve/sieve.c: Use MU_LOG_TAG in openlog, and
	program_version in mu_m_server_create calls.

	* libsieve/conf.c (mu_sieve_module_init): Remove initial call to
	_path_append.
	* libsieve/load.c (sieve_init_load_path): New function.
	(load_module,sieve_load_add_path,sieve_load_add_dir): Call
	sieve_init_load_path.
	* mail.local/main.c (parse_opt): Bugfix. Translate -S option to
	sieve-filter configuration statement.

2008-01-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix NLS issues.
	
	* configure.ac: Define DEFAULT_TEXT_DOMAIN
	* comsat/comsat.c, dotlock/dotlock.c, frm/frm.c, frm/from.c,
	guimb/main.c, imap4d/imap4d.c, maidag/maidag.c, mail/mail.c,
	mail.local/main.c, mail.remote/mail.remote.c, messages/messages.c,
	mh/ali.c, mh/anno.c, mh/burst.c, mh/comp.c, mh/fmtcheck.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/install-mh.c, mh/mark.c,
	mh/mhl.c, mh/mhn.c, mh/mhparam.c, mh/mhpath.c, mh/pick.c,
	mh/refile.c, mh/repl.c, mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c,
	mh/sortm.c, mh/whatnow.c, mh/whom.c, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, pop3d/popauth.c,
	readmsg/readmsg.c, sieve/sieve.c, 
	Use MU_APP_INIT_NLS instead of mu_init_nls.
	* mailbox/nls.c (mu_init_nls): Do not call textdomain.
	
	* guimb/guimb.h, guimb/util.c (util_error): fmt is const.
	* include/mailutils/debug.hm4: include <mailutils/error.h>
	* include/mailutils/nls.h: Define _ and N_ only if
	DEFAULT_TEXT_DOMAIN is defined (for use in the library).
	* maidag/maidag.h, maidag/util.c (mailer_err) : fmt is const.
	* mail.local/mail.local.h (mailer_err): All mandatory args are
	consts. 
	* mailbox/msrv.c: Include limits.h

2008-01-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, configure.ac: Version 1.2.91.

	* mailbox/gdebug.c (mu_debug_level_from_string): Bugfix.

2008-01-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/ldap.c (_mu_ldap_search): Provide %u expansion for backward
	compatibility with other modules.
	* auth/radius.c, auth/sql.c: Use mu_vartab_t for expansion.
	* include/mailutils/mailutils.h: Include mailutils/assoc.h
	* lib/tcpwrap.c (mu_tcpwrapper_access): Ignore local sockets.
	* libargp/muinit.c (mu_app_init): Re-assign mu_program_name after
	command line parsing, so that --program-name takes effect.
	* libcfg/sql.c (mu_sql_param): Fix typo in statement name.
	* libproto/include/amd.h (struct _amd_message.create): New member.
	* libproto/maildir/mbox.c (maildir_create): New function.
	(_mailbox_maildir_init): Set amd->create.
	* mailbox/amd.c (amd_open): Call amd->create after successfully
	creating the directory.
	* mailbox/cfg_driver.c (_cb_include): Mask out
	MU_PARSE_CONFIG_GLOBAL in the flags.
	(mu_build_container): Bugfix. Take struct include_data as
	argument, instead of using an auto variable. All callers updated.
	* mailbox/ipsrv.c (mu_ip_tcp_accept): Bugfix: use client address,
	not server, to print diagnostics.
	* mailbox/msrv.c (m_srv_conn): Fix prefork condition for
	single-process mode.

	* TODO: Update.
	* include/mailutils/server.h (mu_m_server_set_foreground)
	(mu_m_server_foreground,mu_m_server_pidfile)
	(mu_m_server_set_default_address)
	(mu_m_server_get_srvlist)
	(mu_m_server_get_default_address): New functions.
	* libargp/muinit.c (get_canonical_name): Do not use xmalloc.
	* mailbox/ipsrv.c (mu_ip_server_get_sockaddr): Return
	MU_ERR_BUFSPACE if provided buffer is not long enough to
	accommodate the result.
	* mailbox/msrv.c (mu_m_server_set_foreground)
	(mu_m_server_foreground,mu_m_server_pidfile)
	(mu_m_server_set_default_address)
	(mu_m_server_get_srvlist)
	(mu_m_server_get_default_address)
	(mu_m_server_parse_url): New functions.

2008-01-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix message delivery to maildir boxes.
	
	* libproto/include/amd.h (struct _amd_message): Remove `deleted',
	add `orig_flags' instead.
	(struct _amd_data): Remove `msg_file_name', add `cur_msg_file_name'
	and `new_msg_file_name'.
	Add `mailbox_size'.
	* libproto/maildir/mbox.c (struct _maildir_message): Remove
	`newflag', add `dir'.
	(maildir_name_info_ptr): New function.
	(mk_info_filename): Bugfix.
	(maildir_cur_message_name, maildir_new_message_name): New
	functions.
	(maildir_msg_init): Set ->dir
	(maildir_msg_finish_delivery): Handle error conditions.
	(maildir_scan_dir): New argument `dirname'. Initialize orig_flags.
	(maildir_qfetch): Initialize dir.
	(_mailbox_maildir_init): Set cur_msg_file_name and
	new_msg_file_name.
	* libproto/mh/mbox.c (_mh_cur_message_name)
	(_mh_new_message_name): New functions.
	(mh_scan0): Initialize orig_flags.
	(_mailbox_mh_init): Set cur_msg_file_name and
	new_msg_file_name.
	* mailbox/amd.c (amd_message_qid, _amd_message_save)
	(amd_append_message, amd_expunge, amd_scan_message)
	(amd_pool_open, amd_header_fill): Use appropriate msg_file_name
	functions. 
	(amd_get_size): Implemented.
	* mailbox/mailbox.c (mu_mailbox_flush): Bugfix.

2008-01-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update.
	
	* mailbox/Makefile.am: Replace tcpsrv.c with ipsrv.c.
	* mailbox/tcpsrv.c: Replace with ...
	* mailbox/ipsrv.c: ... this file, which supports both TCP and UDP.

	* mailbox/msrv.c: Use mu_ip_server_t.
	* mailbox/server.c (mu_server_destroy): Bugfix.
	* comsat/comsat.c, comsat/comsat.h: Use m-server.

	* maidag/lmtp.c, maidag/maidag.h, pop3d/pop3d.c: Update to match
	changed m-server types.
	
	* include/mailutils/server.h (mu_tcp_*): Replace with mu_ip_*.
	Add new prototypes.
	* include/mailutils/types.hin: Likewise.

	* lib/tcpwrap.c, lib/tcpwrap.h (mu_tcp_wrapper_prefork): Update
	signature to match mu_m_server_prefork_fp.

	* examples/echosrv.c: Use mu_ip_server_t
	* imap4d/idle.c, imap4d/imap4d.c, imap4d/imap4d.h,
	imap4d/preauth.c, imap4d/util.c: Remove mu_gocs_daemon.
	* include/mailutils/gocs.h, include/mailutils/libargp.h,
	include/mailutils/libargp.h, libargp/cmdline.c,
	libargp/common.c, libcfg/common.c, libcfg/init.c,
	mailbox/daemon.c, mailbox/gocs.c: Remove mu_gocs_daemon.
	
	* mailbox/amd.c (amd_open): Provide a null-locker.
	* include/mailutils/locker.h, mailbox/locker.c
	(mu_locker_mod_flags): New function. 
	
	* examples/config/mailutils.schema: LDAP schema for Mailutils.
	* examples/config/Makefile.am: Add mailutils.schema
	
	* dotlock/dotlock.c (main): Remove superfluous invocation of
	mu_locker_set_flags.

	* libproto/mbox/mbox.c (mbox_quick_get_message): Return
	MU_ERR_NOENT if mailbox is empty.

	* mailbox/tcpsrv.c (family_to_proto): Rename to
	mu_address_family_to_domain.
	* po/POTFILES.in: Update.
	* pop3d/lock.c (pop3d_lock): use mu_locker_mod_flags, instead of
	mu_locker_set_flags.
	
	* include/mailutils/server.h (mu_m_server_prefork_fp): New
	function type.
	(mu_m_server_destroy, mu_m_server_set_prefork)
	(mu_m_server_configured_count, mu_m_server_end): New functions.
	* mailbox/msrv.c (struct _mu_m_server.prefork): New member.
	(mu_m_server_set_prefork): New function.
	(m_srv_conn): Use prefork to decide whether to proceed with a
	connection.
	
	* lib/tcpwrap.c, lib/tcpwrap.h (mu_tcp_wrapper_prefork): New
	function.
	
	* imap4d/imap4d.c, maidag/lmtp.c, maidag/maidag.c,
	pop3d/pop3d.c: Use m-server prefork to handle TCP wrappers.

	* po/POTFILES.in: Add more files.
	
2008-01-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* TODO, NEWS: Update.
	* mailbox/msrv.c: New file.
	* mailbox/Makefile.am: Add msrv.c.
	* include/mailutils/server.h (mu_tcp_server_conn_fp): Take
	sockaddr as argument
	(mu_tcp_server_create,mu_tcp_server_get_sockaddr): Likewise.
	(mu_m_server_*): New prototypes.
	* include/mailutils/types.hin (mu_m_server_t): New type.
	* mailbox/acl.c: Fix debugging output.
	(mu_sockaddr_to_str, mu_sockaddr_to_astr): New functions.

	* mailbox/tcpsrv.c: Handle AF_INET and AF_UNIX sockets.
	* examples/echosrv.c: Update mu_tcp_server_* calls.
	* examples/config/Makefile.am: Remove comsat.conf and
	mailutils.rc.
	
	* imap4d/imap4d.c, imap4d/imap4d.h, imap4d/signal.c,
	maidag/lmtp.c, maidag/maidag.c, maidag/maidag.h, pop3d/extra.c,
	pop3d/pop3d.c, pop3d/pop3d.h, pop3d/signal.c: Rewrite using
	m-server. 
	
	* include/mailutils/cfg.h (mu_offsetof): Bug fix.
	* mailbox/cfg_driver.c (dup_container): Bugfix. Offset was not
	copied.
	(mu_cfg_section_add_params): If identifier starts with a dot, it
	is hidden, i.e. its substatements are copied directly into the
	parent structure.
	* mailbox/cfg_lexer.c (isword): Take care of opening braces.
	(default_lexer): Several fixes.
	* mailbox/cfg_parser.y (mu_cfg_parse): Initialize debugging level
	from global settings.
	(_scan_tree_helper): Ensure debugging object has correct locus
	information before calling the section parser.
	(mu_cfg_scan_tree): If no debugging object is supplied, use the
	one from diag.c
	* mailbox/daemon.c (mu_daemon_create_pidfile): Return a meaningful
	error code.
	* mailbox/debug.c (mu_debug_create): Initialize printer to NULL.
	(mu_debug_vprintf): If printer is NULL, use
	mu_debug_default_printer.
	(mu_debug_check_level): Bugfix.

	* mailbox/server.c: Minor indentation fix.
	* mailbox/syslog.c (mu_diag_syslog_printer): Chop off \r as well.
	* mailbox/folder.c (mu_folder_create_from_record): Bugfixes.
	
	* include/mailutils/debug.hm4 (mu_sockaddr_to_str)
	(mu_sockaddr_to_astr): New functions.
	
	* include/mailutils/.cvsignore: Add debug.h

	* po/POTFILES.in: Update.
	
2008-01-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/property.h: Update
	* libproto/include/property0.h (struct property_item): Remove
	key, set and next.
	(struct _mu_property): Use mu_assoc_t to keep the items.
	* mailbox/property.c: Rewrite using mu_assoc_t for storage.
	
        * mailbox/parsedate.y (DATE_SET): Take an additional argument
	specifying upper limit for the value. Bail out if val is out of
	range. All callers updated.
        (SET_.*): Rewrite via __SET_.*

2007-12-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/comsat.c: New config statement require-tty.
	(main): Use /dev/null as the tty if require-tty is false.
	
	* examples/config/comsat.conf: Remove obsolete example file.
	* examples/config/mailutils.rc: Remove obsolete example file.

	* comsat/oldcfg.c: New file.
	* comsat/Makefile.am: Add oldcfg.c.
	* comsat/comsat.c: Handle old -c option and provide a new option
	for converting old-style config file to the new format.

	* comsat/Makefile.am: Remove cfg.c
	* comsat/cfg.c: Remove.
	* comsat/comsat.c: Use MU configuration and acls.
	* comsat/comsat.h: Include acl.h
	* libproto/maildir/mbox.c (maildir_qfetch): Bugfix.

	* NEWS: Update.
	
	* frm/testsuite/frm/test.exp: Call mu_init with -noflags option.
	Use --mail-folder option when necessary.
	* messages/testsuite/messages/test.exp: Likewise.
	* readmsg/testsuite/readmsg/test.exp: Likewise.
	* sieve/testsuite/lib/sieve.exp: Likewise.
	* sieve/testsuite/sieve/action.exp: Likewise.
	* sieve/testsuite/scripts/fileinto.sv: Use +file, instead of
	%file.
	
	* imap4d/imap4d.c: Register mailbox formats before parsing
	configuration.
	* imap4d/util.c (util_wcard_match): Replaced with a more efficient
	implementation, based on wildmat from GNU Radius.
	* imap4d/testsuite/imap4d/list.exp: Expect two non-mailbox files
	to appear in the list output (see libproto/mbox/folder.c, 2007-12-28).

	* libargp/common.c: New option --mail-folder.
	* libcfg/common.c: New statement mailbox/folder

	* libproto/maildir/folder.c (_maildir_is_scheme): Never return
	MU_FOLDER_ATTRIBUTE_DIRECTORY bit: maildir folders cannot contain
	subfolders.
	* libproto/maildir/mbox.c (maildir_msg_init): Bugfix: use full
	file name.
	Print additional diagnostics if stat fails.
	* libproto/mbox/folder.c (list_helper): Take additional argument,
	record, specifying a mu_record_t object to match entries
	against. If it is NULL, mu_registrar_lookup is used.
	Fix descending into subdirectories.

	* maidag/deliver.c (deliver): Split off deliver_to_user function;
	call it with user privileges. This fixes privileges of any created
	maildir folders.
	* maidag/maidag.c (set_debug_flags): Bugfix.

	* mail/mail.c (main): Open the mailbox with MU_STREAM_CREAT flag.

	* mailbox/amd.c (amd_open): Do not initialize amd->mtime to
	trigger initial scanning.
	(_amd_message_save): Check rename return value.
	(amd_is_updated): Do not check for msg_count==0, rely on the
	timestamp.

	* mailbox/mailbox.c (mu_mailbox_set_default_proto): Accept an
	argument without trailing semicolon.
	* mailbox/mbx_default.c (mu_set_mail_directory): Accept NULL
	argument.
	(mu_set_mailbox_pattern): Likewise.
	(mu_mailbox_create_default): Use FOLDER or MAIL environment
	variables only if _mu_mailbox_pattern is not set. In other words,
	setting mail-spool in the configuration file overrides these
	variables.

2007-12-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Additional mailbox URL parameters `type', `user' and `param' can
	appear in any local URLs.

	* TODO, NEWS: Update.
	
	* examples/url-parse.c: Print field/value pairs.
	* include/mailutils/argcv.h (MU_ARGCV_RETURN_DELIMS): New macro.
	(mu_argcv_get_np): New function.
	(mu_argcv_remove): New function.
	* include/mailutils/mutil.h (mu_scheme_autodetect_p): Change
	prototype.
	* include/mailutils/registrar.h (mu_registrar_lookup_url): New
	function.
	(struct _mu_record._is_scheme): Change signature.
	* include/mailutils/url.h (mu_url_sget_fvpairs)
	(mu_url_aget_fvpairs): New functions.
	(mu_url_expand_path): New function.

	* libproto/imap/folder.c (folder_imap_list): Fix signature.
	* libproto/nntp/folder.c (nntp_folder_list): Fix signature.
	* libproto/include/amd.h (amd_url_init): Remove.
	* libproto/include/registrar0.h: Fix scheme defines.
	* libproto/include/url0.h (struct _mu_url.fvpairs,fvcount): New
	members.
	* libproto/maildir/folder.c (_maildir_is_scheme): Change
	signature.
	(_maildir_url_init): Remove
	(_maildir_record): Remove url_init.
	* libproto/mbox/folder.c (_path_record): Remove url_init.
	(_mbox_record): Use mu_url_expand_path as url_init.
	(_path_is_scheme): Change signature.
	* libproto/mh/folder.c (_mh_is_scheme): Change signature.
	(_mh_url_init): Remove.
	(_mh_record): Use
	mu_url_expand_path as url_init.
	* libproto/mbox/Makefile.am (libmu_mbox_la_SOURCES): Remove url.c
	* libproto/mbox/url.c: Remove.
	
	* mail/mail.h, mail/util.c (util_url_to_string): New function.
	* mail/quit.c, mail/summary.c: Use util_url_to_string where
	appropriate.
	* mailbox/amd.c (amd_url_destroy, amd_url_init): Remove.
	* mailbox/argcv.c (mu_argcv_get_np): New function.
	(argcv_scan): Change signature. All callers updated.
	(argcv_get_n): Rewrite using argcv_get_np.
	(mu_argcv_remove): New function.

	* mailbox/file_stream.c (struct _prog_stream.argc): Fix data type.
	* mailbox/folder.c (mu_folder_create_from_record): URL initializer
	is optional.
	* mailbox/gdebug.c (mu_global_debug_from_string): Fix datatype of
	argc.
	* mailbox/mailbox.c (mailbox_folder_create): Rewrite.
	(_create_mailbox): Split off _create_mailbox0 function.
	Make URL initializer optional.
	* mailbox/mutil.c (mu_scheme_autodetect_p): Rewrite.
	* mailbox/registrar.c (mu_registrar_lookup_url): New function.
	(mu_registrar_lookup): Rewrite using mu_registrar_lookup_url.
	(mu_record_is_scheme,mu_record_set_is_scheme): Change signature.
	* mailbox/url.c (mu_url_destroy): Destroy fvpairs.
	(url_parse0): Use scheme "file" for URLs beginning with a /.
	Parse parameters.
	(mu_url_sget_fvpairs, mu_url_aget_fvpairs): New functions.
	(mu_url_expand_path): New function.
	* mailbox/testsuite/Urls: Update.
	
	* pop3d/bulletin.c (set_bulletin_db,set_bulletin_source): Allocate
	string storage.
	(read_bulletin_db): Return 0 if no record was found.
	(get_last_delivered_num): Return error code.
	(deliver_pending_bulletins): Rewrite.
	* pop3d/capa.c (pop3d_capa): Bugfix.

2007-12-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/lsf.c: Use mu_folder_enumerate + callback function, for
	speed up.
	* imap4d/imap4d.h (WCARD_NOMATCH,WCARD_MATCH)
	(WCARD_RECURSE_MATCH): Remove.
	* imap4d/list.c: Rewrite using mu_folder_enumerate.
	* imap4d/lsub.c (imap4d_lsub): Fix call to util_wcard_match.
	* imap4d/util.c (util_wcard_match): Return 0 for match, 1
	otherwise.
	* imap4d/testsuite/imap4d/list.exp: Fix two testcases to match
	the new (stricter RFC-compliant) behavior.
	* include/mailutils/folder.h (mu_folder_match_fp): New typedef.
	(mu_folder_enumerate_fp): New typedef.
	(mu_folder_enumerate): New function.
	(mu_folder_set_match, mu_folder_get_match): New functions.

	* libproto/imap/folder.c, libproto/include/imap0.h,
	libproto/nntp/folder.c : Use new folder list framework.
	* libproto/include/folder0.h (struct _mu_folder._list): Change
	signature.
	(_match): New member.
	* libproto/mbox/folder.c (_path_is_scheme): Improve automatic
	mailbox	format detection.
	(folder_mbox_list): Do not use glob, recursively scan
	subdirectories instead.
	* mailbox/folder.c (mu_folder_match): New function.
	(mu_folder_create_from_record): Set mu_folder_match as the default
	matcher.
	(mu_folder_set_match, mu_folder_get_match): New functions.
	(mu_folder_enumerate): New function.
	(mu_folder_list): Rewrite using mu_folder_enumerate.

2007-12-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update.
	* configure.ac (MU_LIB_REMOTE): New substitution variable.
	(AC_CONFIG_FILES): Add libproto/remote/Makefile.
	* imap4d/copy.c, imap4d/create.c, imap4d/delete.c, imap4d/fetch.c,
	imap4d/imap4d.c, imap4d/list.c, imap4d/lsub.c, imap4d/rename.c,
	imap4d/subscribe.c, imap4d/unsubscribe.c, imap4d/util.c: Spelling
	fixes.
	* include/mailutils/cfg.h (mu_cfg_error_count): New variable.
	* include/mailutils/gocs.h (struct mu_gocs_mailbox):  New member
	mailbox_pattern
	* include/mailutils/libargp.h (mu_rcfile_lint): New variable.
	* include/mailutils/mailbox.h (mu_set_mailbox_pattern): New
	function.
	(mu_mail_directory): Removed.
	(mu_mailbox_url): New function.
	* include/mailutils/mutil.h (mu_normalize_mailbox_url): Remove.
	* include/mailutils/registrar.h (mu_0_6_registrar_lookup): Remove.

	* libargp/common.c: New options --rcfile-lint and
	--mailbox-pattern.
	* libargp/muinit.c: Handle --rcfile-lint.
	* libcfg/common.c: New statement mailbox-pattern
	* libmu_scm/mu_mailbox.c (mu-mail-directory): Deprecated.
	(mu-user-mailbox-url): New function.

	* libproto/remote: New directory.
	* libproto/remote/folder.c: New file.
	* libproto/remote/mbox.c: New file.
	* libproto/remote/.cvsignore: New file.
	
	* libproto/Makefile.am (SUBDIRS): Add remote
	* libproto/mbox/folder.c, libproto/mbox/url.c: Indentation and
	spelling fixes. 
	* maidag/Makefile.am (maidag_LDADD): Add MU_LIB_REMOTE.
	* maidag/maidag.c: Register mu_remote_mbox_record.
	* mailbox/cfg_parser.y (mu_cfg_error_count): New variable.
	(mu_cfg_format_error,_mu_cfg_vperror): Increment
	mu_cfg_error_count.
	* mailbox/debug.c (mu_debug_check_level): Do not mask out 
	inheritance bit.
	* mailbox/gocs.c (mu_gocs_mailbox_init): Set mailbox pattern.
	* mailbox/mailbox.c (_create_mailbox): Bugfix.
	* mailbox/mbx_default.c (mu_set_mailbox_pattern): New function.
	(mu_set_mail_directory): Rewrite.
	(user_mailbox_name): Rewrite.
	* mailbox/mutil.c (mu_normalize_mailbox_url): Remove.
	* mailbox/registrar.c (mu_0_6_registrar_lookup): Remove.
	* guimb/scm/sieve-core.scm (sieve-main): Use mu-user-mailbox-url.

2007-12-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libcfg/acl.c (getword): Bugfix.
	* maidag/lmtp.c, maidag/maidag.c, maidag/maidag.h: Use ACLs.
	* pop3d/pop3d.c (pop3d_cfg_param): Add acl section.

2007-12-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/aclck.c, examples/addr.c, examples/base64.c,
	examples/decode2047.c, examples/echosrv.c, examples/encode2047.c,
	examples/header.c, examples/http.c, examples/iconv.c,
	examples/listop.c, examples/lsf.c, examples/mailcap.c,
	examples/mimetest.c, examples/msg-send.c, examples/muemail.c,
	examples/murun.c, examples/nntpclient.c, examples/pop3client.c,
	examples/sfrom.c, examples/url-parse.c: Include config.h. Use
	MU_ASSERT instead of assert.

	* include/mailutils/cfg.h (struct mu_cfg_section.offset): New
	member.
	* include/mailutils/debug.hm4 (MU_ASSERT): New member.
	* lib/utmp.c: Include config.h.
	* libcfg/Makefile.am (libmucfg_la_SOURCES): Add acl.c.
	* libcfg/acl.c: New file.
	* libcfg/common.c (cb_debug_level): Immediately set debugging
	level.
	* mailbox/acl.c: mu_acl_log expands its argument.
	* mailbox/cfg_driver.c (mu_create_canned_section)
	(mu_create_canned_param): Avoid creating container twice.
	* mailbox/cfg_format.c (format_param): Do not print type if
	argname contains a colon.
	* mailbox/cfg_parser.y (_scan_tree_helper): Compute target
	pointer.
	
	* imap4d/imap4d.c, imap4d/imap4d.h, pop3d/pop3d.c,
	pop3d/pop3d.h: Use MU ACLs
	

2007-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/comsat.c, imap4d/imap4d.c, maidag/maidag.c,
	pop3d/pop3d.c: Call mu_tcpwrapper_cfg_init.

	* include/mailutils/cfg.h (mu_cfg_section_add_container)
	(mu_cfg_section_add_params, mu_create_canned_section)
	(mu_create_canned_param, mu_get_canned_container): New functions.
	* lib/tcpwrap.c (mu_tcpwrapper_cfg_init): New function.
	* lib/tcpwrap.h (TCP_WRAPPERS_CONFIG): Change definition.
	* mailbox/cfg_driver.c (mu_create_canned_section)
	(mu_create_canned_param): Change prototypes.
	(add_parameters): Rename to mu_cfg_section_add_params, make
	extern. All callers changed.


	* include/mailutils/cfg.h (mu_cfg_section): New type.
	(struct mu_cfg_param.offset): New member
	(mu_offsetof): New define
	(mu_cfg_section_fp): Change signature
	(struct mu_cfg_section.label,target): New members.
	(struct mu_cfg_section.data): Remove.
	(struct mu_cfg_section.children): New member, instead of
	param and subsec which are removed.
	(mu_cfg_scan_tree): Change signature.
	(mu_config_register_section): Change signature.
	(mu_parse_config): Change signature.
	(mu_parse_config_tree): Rename to mu_cfg_tree_reduce.
	(mu_get_config): New proto.

	* include/mailutils/libcfg.h (mu_parse_config_files): Change
	prototype.
	
	* dotlock/dotlock.c, imap4d/imap4d.c, lib/tcpwrap.h,
	libargp/muinit.c, libcfg/auth.c, libcfg/common.c, libcfg/gsasl.c,
	libcfg/init.c, libcfg/ldap.c, libcfg/pam.c, libcfg/radius.c,
	libcfg/sieve.c, libcfg/sql.c, libcfg/tls.c, libcfg/virtdomain.c,
	maidag/maidag.c, mail.local/main.c, mail.remote/mail.remote.c,
	mailbox/cfg_format.c, mailbox/cfg_parser.y, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, readmsg/readmsg.c,
	sieve/sieve.c: Reflect changes to the cfg framework.
	
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add cfg_driver.c.
	* mailbox/cfg_driver.c: New file.
	* mailbox/cfg_lexer.c: Move driver part into a separate file.
	
	* examples/Makefile.am (AM_LDFLAGS): Remove libmuaux
	* examples/echosrv.c: Remove getopt.h

2007-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/Makefile.am: add echosrv.c.
	* examples/echosrv.c: New file.
	* include/mailutils/Makefile.am: Add server.h.
	* include/mailutils/server.h: New file.
	* include/mailutils/acl.h (mu_acl_t): Move to types.hin
	* include/mailutils/types.hin (mu_acl_t,mu_server_t)
	(mu_tcp_server_t): New types.
	* mailbox/Makefile.am: Add server.c and tcpsrv.c.
	* mailbox/server.c: New file.
	* mailbox/tcpsrv.c: New file.
	* mailbox/acl.c: Include <sys/wait.h>
	Rename all `sin' and `sun' to avoid name clashes.
	* mailbox/errors (MU_ERR_LOCK_EXT_FAIL): Do not abbreviate
	anything in error description.
	
	* auth/ldap.c (_construct_attr_array): Use mu_vartab_* to expand
	filter.
	* imap4d/preauth.c: Fix misleading comment.
	* mailbox/vartab.c (mu_vartab_expand): Support old prefix (%) for
	single-character variables.

2007-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, TODO: Update.
	* examples/Makefile.am: Add aclck
	* examples/aclck.c: New file. Test program for ACLs.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add acl.h,
	kwd.h and vartab.h.
	* include/mailutils/acl.h: New file. ACL declarations.
	* include/mailutils/kwd.h: New file. Declarations for simple
	string to token conversion.
	* include/mailutils/vartab.h: New file. Declarations of functions
	for variable expansion.	
	* include/mailutils/mailutils.h: Include acl.h, kwd.h and
	vartab.h.
	* include/mailutils/types.hin: Define mu_vartab_t

	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add acl.c, kwd.c,
	and vartab.c.
	* mailbox/acl.c: New file.
	* mailbox/kwd.c: New file.
	* mailbox/vartab.c: New file.

	* mailbox/cfg_parser.y (parse_cidr): Fix typo.
	* mailbox/list.c: Fix indentation.
	* mailbox/mailbox.c (_create_mailbox): Fix type of level.
	* mailbox/syslog.c: Use mu_kwd_* functions.

2007-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Add TCP wrappers support.
	* imap4d/Makefile.am, mu_daemon_argp_parser (LDADD): Add
	TCPWRAP_LIBRARIES. 
	* imap4d/imap4d.c: Include tcpwrap.h
	(imap4d_mainloop): Check the connection using tcp wrappers.
	* imap4d/preauth.c: Fix a typo in the comment.
	* maidag/maidag.h: Include tcpwrap.h
	* maidag/maidag.c, maidag/lmtp.c: Add TCP wrappers support.
	* pop3d/pop3d.c: Include tcpwrap.h
	(pop3d_mainloop): Check the connection using tcp wrappers.
	* lib/Makefile.am: Add tcpwrap.c and tcpwrap.h
	* lib/tcpwrap.c: New file.
	* lib/tcpwrap.h: New file.
	* libargp/common.c (mu_daemon_argp_parser): Bugfix.

2007-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	II. Extend --config-help output.  Each configuration parameter
	has a docstring which is displayed as a comment before it.
	A docstring is also added to the configuration group structure,
	for use in future.

	* include/mailutils/cfg.h (struct mu_cfg_param): New members
	`docstring' and `argname'.
	(struct mu_cfg_section): New member `docstring'.
	(mu_cfg_format_docstring): New function.
	* include/mailutils/libargp.h (mu_help_config_mode): New
	declaration.
	* libargp/cmdline.h (mu_help_config_mode): Remove.
	* libargp/muinit.c (mu_app_init): Better format the initial
	comment.
	* mailbox/cfg_format.c (mu_cfg_data_type_string): Use NLS.
	(mu_cfg_format_docstring): New function.
	(format_param,format_section): Use mu_cfg_format_docstring.
	* mailbox/cfg_lexer.c (mu_config_create_container): Initialize
	allocated memory chunk with zeros.
	(dup_container): Duplicate docstring.
	(mu_build_container): Document include statement.
	
	* dotlock/dotlock.c, imap4d/imap4d.c, libargp/tls.c,
	libcfg/auth.c, libcfg/common.c, libcfg/gsasl.c, libcfg/ldap.c,
	libcfg/pam.c, libcfg/radius.c, libcfg/sieve.c, libcfg/sql.c,
	libcfg/tls.c, libcfg/virtdomain.c, maidag/maidag.c,
	mail.local/main.c, mail.remote/mail.remote.c, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, readmsg/readmsg.c,
	sieve/sieve.c: Document configuration file statements.

	* pop3d/pop3d.h (expire): Change type to unsigned int. 

	* po/POTFILES.in: Add missing files.
	
	I. Implement --config-help option, which displays configuration
	file statements understood by the given program.
	
	* imap4d/imap4d.h: Include xalloc.h
	* frm/common.c, imap4d/imap4d.c: Shut compiler warnings.
	* include/mailutils/cfg.h (mu_cfg_format_tree): Rename to
	mu_cfg_format_parse_tree.
	(mu_cfg_format_container,mu_format_config_tree): New functions.
	(mu_parse_config_tree): New prototype.
	(mu_cfg_tree_create_node): Change signature (const char* instead
	of char*).
	* include/mailutils/gocs.h (mu_gocs_register): First arg is const.
	* include/mailutils/libargp.h (mu_argp_node_list_new): Mark
	invariable arguments as const.
	* include/mailutils/libcfg.h (mu_libcfg_init): Remove const from
	the arg.
	* include/mailutils/mutil.h (mu_spawnvp): Remove const from the
	2nd arg.
	* libargp/cmdline.c (mu_argp_node_list_new): Mark invariable
	arguments as const. 
	
	* lib/mailcap.h: New file.
	* lib/Makefile.am (libmuaux_la_SOURCES): Add mailcap.h
	* libargp/cmdline.h (mu_help_config_mode): New extern.
	* libargp/common.c: New option --config-help displays a
	configuration file summary.
	* libargp/muinit.c (mu_app_init): Handle --config-help.
	* libcfg/init.c (mu_libcfg_init): Remove const from the arg.
	* maidag/maidag.h (mda): New prototype.
	* mail/decode.c: Include mailcap.h
	* mail/mail.h: Define _GNU_SOURCE before including stdio.h
	* mail/send.c: Fix includes.
	* mail.remote/mail.remote.c: Include mu_umaxtostr.h

	* mailbox/cfg_format.c (mu_cfg_data_type_string)
	(mu_cfg_format_container): New function.
	* mailbox/cfg_lexer.c (mu_build_container): New function.
	(mu_parse_config_tree): Use mu_build_container.
	(mu_format_config_tree): New function.
	* mailbox/cfg_parser.y (mu_cfg_tree_create_node): Change proto.
	* mailbox/gocs.c (struct mu_gocs_entry): Name is const.
	(mu_gocs_register): 1st arg (capa) is const.
	* mailbox/mutil.c (mu_spawnvp): Remove const from the 2nd arg.
	* mh/mh_whatnow.c (invoke): Shut compiler warnings.
	* mimeview/mimetypes.l (mimetypes_open): Shut compiler warnings.
	* mimeview/mimeview.c: Include mailcap.h
	(display_file): Shut compiler warnings.
	* readmsg/readmsg.c: Include mu_umaxtostr.h
	* sieve/sieve.c (parser): Remove unused variable.
	
2007-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/virtual.c (site_virtual_pwddir): Replace with global
	struct mu_gocs_virtual mu_virtual_module_config

	* include/mailutils/cfg.h (MU_PARSE_CONFIG_GLOBAL)
	(MU_PARSE_CONFIG_VERBOSE, MU_PARSE_CONFIG_DUMP): New defines.
	(mu_cfg_tree_create,mu_cfg_tree_set_debug,mu_cfg_tree_set_alloc)
	(mu_cfg_tree_alloc,mu_cfg_tree_free)
	(mu_cfg_tree_create_node,mu_cfg_tree_add_node): New functions.
	* include/mailutils/gocs.h (struct mu_gocs_virtual): New data
	type.
	* include/mailutils/libargp.h (struct mu_argp_node_list): New data
	type.
	(mu_argp_node_list_init, mu_argp_node_list_add)
	(mu_argp_node_list_new, mu_argp_node_list_finish): New functions.
	* libargp/cmdline.h: New header.
	* libargp/Makefile.am (libmuargp_a_SOURCES): Add cmdline.h.
	
	* dotlock/dotlock.c, imap4d/imap4d.c, libargp/auth.c,
	libargp/cmdline.c, libargp/common.c, libargp/compat.c,
	libargp/gsasl.c, libargp/mu_argp.c, libargp/muinit.c,
	libargp/pam.c, libargp/radius.c, libargp/sieve.c, libargp/sql.c,
	libargp/tls.c, libargp/virtdomain.c, libcfg/common.c,
	libcfg/init.c, libcfg/virtdomain.c, maidag/maidag.c,
	mail.local/main.c, mail.remote/mail.remote.c, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, readmsg/readmsg.c,
	sieve/sieve.c: Change option parsing, using mu_cfg_tree_ functions.
	
	* mailbox/argcv.c: Fix a typo in comment.
	* mailbox/cfg_lexer.c (mu_parse_config_tree): New function.
	(_mu_parse_config): Rewrite using mu_parse_config_tree.
	* mailbox/cfg_parser.y (mu_cfg_format_error,_mu_cfg_vperror)
	(debug_print_node): Use default diag debug_t object, if the passed
	one is NULL. Reset locus after formatting.
	(mu_cfg_postorder): Return immediately if node == NULL.
	(mu_cfg_tree_create,mu_cfg_tree_set_debug,mu_cfg_tree_set_alloc)
	(mu_cfg_tree_alloc,mu_cfg_tree_free,mu_cfg_tree_create_node)
	(mu_cfg_tree_add_node): New functions.
	* mailbox/gocs.c (mu_gocs_store): Make sure no capa/data tuple
	gets registered twice.
		
	* NEWS: Update.
	* gnulib.modules: Add des. Sort lines.
	* imap4d/Makefile.am (imap4d_SOURCES): Add preauth.c
	* imap4d/preauth.c: New file.
	* imap4d/authenticate.c (imap4d_authenticate): Use
	imap4d_session_setup.
	* imap4d/imap4d.c (imap4d_session_setup)
	(imap4d_session_setup0): New functions.
	(imap4d_mainloop): Implement PREAUTH mode. 
	* imap4d/imap4d.h (RESP_PREAUTH): New define.
	(enum imap4d_preauth): New data type.
	(preauth_mode,preauth_program,preauth_only,ident_port): New
	globals.
	(imap4d_session_setup,imap4d_session_setup0): New functions.
	* imap4d/login.c (imap4d_login): Use imap4d_session_setup0.
	* imap4d/util.c (sc2string): Handle RESP_PREAUTH
	
	* lib/.cvsignore, m4/.cvsignore: Update.

	* mailbox/tcp.c: Fix indentation.
	
2007-12-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/cfg_format.c: New file.
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add cfg_format.c
	* mailbox/cfg_parser.y (mu_cfg_print_tree): Remove
	* include/mailutils/cfg.h (mu_cfg_format_tree): New prototype.

2007-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (AC_CONFIG_FILES): Remove include/gnu/Makefile.

2007-11-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, TODO: Update
	* include/mailutils/types.hin: New type mu_log_level_t.
	* include/mailutils/debug.hm4, include/mailutils/diag.h,
	mailbox/cfg_lexer.c, mailbox/cfg_parser.y, mailbox/dbgstderr.c,
	mailbox/dbgsyslog.c, mailbox/debug.c, mailbox/diag.c,
	mailbox/gdebug.c, mailbox/muerror.c, mailbox/syslog.c,
	sieve/sieve.c: Use mu_log_level_t instead of size_t for debugging
	and logging levels.

2007-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/action.c, comsat/comsat.c, imap4d/auth_gsasl.c,
	imap4d/auth_gss.c, imap4d/authenticate.c, imap4d/bye.c,
	imap4d/close.c, imap4d/imap4d.c, imap4d/login.c, imap4d/search.c,
	imap4d/signal.c, imap4d/starttls.c, imap4d/util.c, maidag/lmtp.c,
	maidag/maidag.c, maidag/script.c, mail.local/main.c,
	mail.local/script.c, pop3d/apop.c, pop3d/bulletin.c,
	pop3d/extra.c, pop3d/lock.c, pop3d/logindelay.c, pop3d/pop3d.c,
	pop3d/quit.c, pop3d/signal.c, pop3d/user.c, libsieve/util.c: Use
	mu_diag_output instead of syslog.

	* sieve/sieve.c: New option --no-program-name, for testsuite.
	* sieve/testsuite/lib/sieve.exp: Call sieve with the
	--no-program-name option. 

	* mailbox/cfg_lexer.c, mailbox/cfg_parser.y: Improve debugging.
	* mailbox/diag.c: New file.
	* mailbox/gdebug.c (mu_debug_level_from_string): New function.
	* mailbox/muerror.c (mu_verror, mu_error): Rewrite using mu_diag
	functions.
	* mailbox/syslog.c (mu_diag_level_to_syslog): New function.
	(mu_diag_syslog_printer): New function.

	* mh/mh_argp.c (mh_argp_parse): Set program name using
	mu_set_program_name.
	* mh/mh_init.c (mu_error_printer): No longer needed.
	* movemail/movemail.c (movemail_error_printer): No longer needed.
	
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add diag.h
	* include/mailutils/diag.h: New file.
	* include/mailutils/cfg.h (mu_cfg_lexer_t): Take mu_debug_t as its
	second argument.
	* include/mailutils/error.h: Include diag.h
	(mu_program_name,mu_set_program_name): Remove. Already declared in
	diag.h.
	(mu_error_set_print): Deprecated.

	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add diag.c
	
2007-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	III. Use mu_debug_t for diagnostics in cfg framework.
	
	* include/mailutils/cfg.h, mailbox/cfg_lexer.c,
	mailbox/cfg_parser.y (mu_cfg_tree_t):
	New data type. 
	(mu_cfg_perror_t): Remove
	(mu_cfg_parse): Change prototype.
	(mu_cfg_perror): Change type.
	(mu_cfg_format_error): New function.
	(mu_cfg_destroy_tree): Change signature.
	(mu_cfg_callback_t): Take mu_debug_t as its first argument,
	instead of mu_cfg_locus_t. The mu_debug_t is to be used for error
	reporting and debugging diagnostics. The cfg_lexer is responsible
	for storing the necessary locus data into it before calling
	callbacks.
	(mu_cfg_section_fp): Take an additional argument.
	(mu_cfg_scan_tree): Simplified prototype. The mu_cfg_tree_t passed
	as its first argument already contains all necessary data that
	were passed as arguments previously.
	(mu_parse_config): First two args are consts.

	* include/mailutils/libcfg.h, imap4d/imap4d.c, libcfg/auth.c,
	libcfg/common.c, libcfg/ldap.c, libcfg/sieve.c, libcfg/sql.c,
	maidag/maidag.c, mail.local/main.c, mimeview/mimeview.c,
	pop3d/pop3d.c, sieve/sieve.c: Reflect changes to the cfg
	framework. 

	* mailbox/debug.c (mu_debug_vprintf): Make sure the locus info is
	formatted on the first call.
	
	II. Further improvement of mu_debug_t. 
	
	* include/mailutils/debug.hm4 (struct mu_debug_locus): New data
	type.
	(mu_debug_set_locus, mu_debug_get_locus)
	(mu_debug_set_function, mu_debug_get_function): New prototypes.
	(mu_debug_printer_fp, mu_debug_syslog_printer)
	(mu_debug_stderr_printer): Change type of the first argument.
	(mu_debug_set_data): New function.
	(all proto): Remove argument names, use only types to avoid
	problems on some broken systems (FreeBSD comes to mind).
	* libproto/include/debug0.h (struct _mu_debug): printer: change
	type of the first argument.
	locus, function, data, destroy: New fields.

	* mailbox/dbgstderr.c (mu_debug_stderr_printer): Change type of
	the first argument.
	* mailbox/dbgsyslog.c (mu_debug_syslog_printer): Change type of
	the first argument.

	* mailbox/debug.c (mu_debug_destroy): Flush any left over data.
	Call destroy, if supplied.
	(mu_debug_set_data): New function.
	(mu_debug_vprintf): Print locus and function (if supplied) at the
	beginning of the buffer.
	(mu_debug_set_locus, mu_debug_get_locus, mu_debug_set_function)
	(mu_debug_get_function): New functions.

	* scripts/debugdef.m4 (MKDEBUG): Use mu_debug_set_locus and
	mu_debug_set_function to print source locations. This allows for
	easy i18n of the MU_DEBUG[0-9]* format strings.

	I. Introduce "global debug settings". Mailutils objects are supposed
	to set their default mu_debug_t objects basing on these settings.
	
	* include/mailutils/Makefile.am: Add debug.hm4. Build debug.h from
	it.
	* include/mailutils/debug.hm4: New file.
	* include/mailutils/debug.h: Remove generated file.
	* scripts/Makefile.am (EXTRA_DIST): Add debugdef.m4
	* scripts/debugdef.m4: New file.
	
	* include/mailutils/gocs.h (struct mu_gocs_debug): New data type.
	(mu_gocs_register_std): Argument is const.
	(mu_gocs_debug_init): New function.
	* include/mailutils/libargp.h (mu_debug_cmdline): New extern.
	* include/mailutils/libcfg.h (mu_debug_cfg_capa): New extern.
	* libargp/cmdline.c: Add mu_debug_cmdline
	* libargp/common.c: Add debug settings.
	* libargp/mu_argp.c (struct cap_buf.capa): Remove const qualifier.
	* libcfg/common.c (mu_locking_param): Remove superfluous `lock-'
	prefix from the statement names.
	(mu_debug_param): New parameter group.
	* libcfg/init.c: Add mu_debug_param.
	* mailbox/gocs.c (mu_gocs_debug_init): New function.
	
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add gdebug.c
	* mailbox/gdebug.c: New file
	* mailbox/debug.c (mu_debug_printf, mu_debug_vprintf)
	(mu_debug_check_level): New functions.
	(mu_debug_printv, mu_debug_print): Rewrite using new basic calls.
	
	* comsat/comsat.c, dotlock/dotlock.c, examples/muauth.c,
	mail.remote/mail.remote.c: Add debug capability.	
	* frm/frm.c, frm/from.c, guimb/main.c, imap4d/imap4d.c,
	mail/mail.c, mail.local/main.c, messages/messages.c,
	pop3d/pop3d.c, readmsg/readmsg.c: Add locking and debug capabilities.
	
	* examples/mimetest.c, examples/msg-send.c, frm/common.c,
	libargp/auth.c, libmu_scm/mu_message.c, mail/send.c, mh/send.c,
	mimeview/mimeview.c, movemail/movemail.c, sieve/sieve.c: Update
	invocation of mu_debug_set_level. 

	* libproto/imap/folder.c, libproto/imap/mbox.c,
	libproto/include/folder0.h, libproto/include/mailbox0.h,
	libproto/include/mailer0.h, libproto/mailer/sendmail.c,
	libproto/mailer/smtp.c, libproto/mbox/mbox.c,
	libproto/nntp/folder.c, libproto/nntp/nntp_debug.c,
	libproto/pop/mbox.c, libproto/pop/pop3_debug.c, mailbox/amd.c,
	mailbox/mailer.c, mailbox/message.c, mailbox/mu_auth.c: Use
	MU_DEBUG[0-9] for debugging.

	* mailbox/muerror.c: Include string.h
	* mailbox/syslog.c (syslog_to_n): Remove unused variable.
	* mailbox/assoc.c (struct _mu_assoc_elem): name is not const.
	* mailbox/cfg_lexer.c: Quoted strings can be continued to the
	following line either by using a trailing backslash or by
	concatenating strings together, as in C.
	* mailbox/mailbox.c (_create_mailbox): Initialize debug object
	using global "mailbox" level.
	(mu_mailbox_create): Fix bug introduced on 2007-11-26.
	
	* include/mailutils/libsieve.h (mu_sieve_set_debug_level): Change
	prototype.
	(mu_sieve_set_debug_object): New prototype.
	* libsieve/sieve.y (mu_sieve_machine_init): Initialize debug
	object from "sieve" global level.
	(mu_sieve_set_debug_level): Set only debug_level.
	(mu_sieve_set_debug_object): New function.

	* maidag/maidag.c: Remove explicit setting of debug object. Add
	"debug" group, which provides the required functionality.
	(set_debug_flags): Likewise. This function and the corresponding
	command line option are fading out in favor of global debug
	settings. 
	
2007-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (MU_APP_LIBRARIES): Load libmuaux after libmuargp
	and libcfg.
	(fgetpwent): Use AC_CHECK_FUNCS
	* auth/virtual.c: Use mu_fgetpwent if fgetpwent is not available.

	* lib/Makefile.am: Add back utmp.c
	* lib/utmp.c: Restore after unintended remove.
	* m4/utmp.m4: Fix quoting.
	
	* libcfg/gsasl.c, libcfg/ldap.c, libcfg/pam.c, libcfg/radius.c,
	libcfg/sieve.c, libcfg/sql.c, libcfg/tls.c, libcfg/virtdomain.c:
	Include stdlib.h

	* libproto/imap/folder.c, libproto/mbox/mbox.c,
	libproto/mbox/mbox0.h, libproto/pop/mbox.c, mailbox/attachment.c,
	mailbox/mailbox.c, mailbox/parsedate.y:	Do not use alloca.

	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add fgetpwent.c
	and intprops.h.
	* mailbox/fgetpwent.c (fgetpwent): Rename to mu_fgetpwent.
	* mailbox/gocs.c: Revert recent change. It broke the testsuite in
	sieve.
	* mailbox/syslog.c (log_facility): Initialize to LOG_FACILITY.
	
	* configure.ac, NEWS: Add LDAP support.
	* auth/Makefile.am (libmuauth_la_SOURCES): Add ldap.c.
	* auth/ldap.c: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add ldap.h.
	* include/mailutils/ldap.h: New file.
	* include/mailutils/libcfg.h (mu_ldap_cfg_capa): New extern.
	* include/mailutils/mu_auth.h (mu_auth_ldap_module): New extern.
	(MU_AUTH_REGISTER_ALL_MODULES): Register ldap.
	* libcfg/Makefile.am (libmucfg_la_SOURCES): Add ldap.
	* libcfg/ldap.c: New file.
	* libcfg/init.c (cfg_capa_table): Add ldap.
	* mailbox/gocs.c (mu_gocs_logging_init): Initialize log_facility
	to default if not specified otherwise. Need to revise this later.
	* mailbox/version.c (mu_conf_option): Reveal ldap, if supported.
	
	* mailbox/mu_auth.c (mu_auth_data_alloc): Add safety
	checks. Provide reasonable defaults for missing arguments.
	* mailbox/mutil.c (mutil_parse_field_map): Bugfix - increment by 2
	on each loop.
	
	* libargp/mu_argp.c (mu_build_argp): Do not bail out if an unknown
	capability is requested.
	 
	* include/mailutils/assoc.h (mu_assoc_count): New function.
	* mailbox/assoc.c: Likewise.
	
	* auth/radius.c (_expand_query): Static	

	* mailbox/cfg_lexer.c: Fixed memory management during cloning.
	
2007-11-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve debugging.
	
	* imap4d/login.c, pop3d/user.c: Print user db source along with
	the login name.
	* include/mailutils/debug.h (mu_debug_set_print): Change
	prototype.
	(mu_debug_printer_fp): New data type.
	(mu_debug_default_printer): New extern.
	(mu_debug_syslog_printer,mu_debug_stderr_printer): New prototypes.

	* libproto/include/debug0.h (struct _mu_debug): Remove unused 
	`buffer' and `buflen'. Add `stream'. Change signature of `_print' and
	rename it to `printer'.
	* mailbox/debug.c: Rewrite debugging support.
	(mu_debug_default_printer): New global.

	* mailbox/gocs.c (mu_gocs_logging_init): Initialize
	mu_debug_default_printer.

	* mailbox/memory_stream.c (_memory_truncate): Bugfix.
	(_memory_get_transport2): Implement method.
	
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add dbgstderr.c
	and dbgsyslog.c
	* mailbox/dbgstderr.c, mailbox/dbgsyslog.c: New files.
	* maidag/maidag.c, mail.local/main.c, sieve/sieve.c: Remove
	_mu_debug_printer, the default implementation will do.

	* mailbox/mu_auth.c: Improve debugging.
	
	* libsieve/comparator.c, libsieve/load.c, libsieve/sieve.l:
	Include ctype.h 
	
	* include/mailutils/libargp.h: Remove option declarations.
	* include/mailutils/mu_auth.h (struct mu_auth_data): New member
	`source'.
	(mu_auth_set_debug): New proto.
	* libargp/common.c: Define option values. New option --debug-auth.
	* libargp/auth.c, libargp/gsasl.c,
	libargp/pam.c, libargp/radius.c, libargp/sieve.c, libargp/sql.c,
	libargp/tls.c, libargp/virtdomain.c: Define option values.

2007-11-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/conf.c (mu_sieve_module_init): Initialize
	mu_sieve_library_path with SIEVE_MODDIR.

2007-11-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail.local/mail.local.h, mail.local/main.c: Limit verbosity of
	messages printed to stderr.

	* libsieve/extensions/pipe.c: Fix indentation.
	* libsieve/extensions/spamd.c: Use socket stream.
	* mailbox/socket_stream.c (_s_open): Default to RDWR mode.

	* libcfg/common.c (mu_logging_param): Use callback to parse the
	facility. 

	* README-alpha: Update.
	* auth/pam.c (mu_pam_module_init): Use struct.
	* include/mailutils/gocs.h (struct mu_gocs_pam): New data type.
	* include/mailutils/libcfg.h (mu_sieve_cfg_capa)
	(mu_daemon_cfg_capa,mu_auth_cfg_capa): New declarations.
	* libargp/common.c (mu_daemon_argp_parser): Handle ARGP_KEY_INIT.
	* libargp/pam.c (service_name): Remove.
	(pam_settings): Add new variable.
	(mu_pam_argp_parser): Reflect this.
	* libcfg/auth.c (mu_auth_section_parser): New function.
	(mu_auth_cfg_capa): New variable.
	* libcfg/common.c (mu_daemon_section_parser): Handle
	mu_cfg_section_start.
	* libcfg/init.c (cfg_capa_table): Add auth, sieve, daemon.
	(reserved_name): Remove auth and daemon.
	* mailbox/Makefile.am (EXTRA_DIST): Remove @MU_EXTRA_DIST@.
	* mailbox/daemon.c (mu_gocs_daemon_init): Remove extra checks.
	* mailbox/mu_auth.c (_add_module_list): Skip delimiters.
	* po/POTFILES.in: Update.

2007-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Add AM_PROG_LIBTOOL.

	* include/mailutils/libargp.h (mu_argp_build): Change proto.
	* libargp/compat.c (mu_argp_parse): Update call to mu_argp_build.
	* libargp/mu_argp.c (mu_argp_build): Optionally return expanded
	capability list in the third argument.
	* libargp/muinit.c (mu_app_init): Pass expanded capability list to 
	mu_libcfg_init.
	
	* include/mailutils/cfg.h (mu_cfg_parser_verbose): New variable.
	* include/mailutils/libargp.h (OPT_RCFILE_VERBOSE): New value.
	* libargp/Makefile.am (AM_CFLAGS): Rename to AM_CPPFLAGS, define
	SYSCONFDIR.
	* libargp/common.c (mu_common_argp, mu_common_argp_parser): New
	option rcfile-verbose. 
	* mailbox/Makefile.am (AM_CPPFLAGS): define SYSCONFDIR.
	* mailbox/cfg_lexer.c (_mu_parse_config): Implement `include'
	statement. Add verbose logging.
	* mailbox/cfg_parser.y (mu_cfg_parser_verbose): New variable.
	(mu_cfg_parse): Zero out parse_tree before returning.
	(_scan_tree_helper): Remove dependency on MU_CONFIG_VERBOSE envar.
	Use mu_cfg_parser_verbose instead.

	* config/mailutils.m4: New file
	* config/Makefile.am: Install mailutils.m4 to $(datadir)/aclocal

	* configure.ac (VI_CURRENT): Raise to 3;
	(MU_APP_LIBRARIES): Rename libargp.a to libmuargp.a
	* NEWS: Update.
	
	* comsat/comsat.c, dotlock/dotlock.c, examples/muauth.c,
	examples/muemail.c, frm/frm.h, guimb/main.c, imap4d/imap4d.c,
	libargp/auth.c, libargp/cmdline.c, libargp/common.c,
	libargp/gsasl.c, libargp/mu_argp.c, libargp/pam.c,
	libargp/radius.c, libargp/sieve.c, libargp/sql.c, libargp/tls.c,
	libargp/virtdomain.c, maidag/maidag.h, mail/mail.c,
	mail.local/main.c, mail.remote/mail.remote.c, messages/messages.c,
	mimeview/mimetypes.y, mimeview/mimeview.c, movemail/movemail.c, 
	pop3d/extra.c, pop3d/pop3d.c, pop3d/popauth.c, readmsg/readmsg.c,
	sieve/sieve.c: Include mailutils/libargp.h.

	* config/mailutils-config.c: New arguments to --link: cfg and argp.

	* include/mailutils/Makefile.am (pkginclude_HEADERS): Remove
	compat.h, add libargp.h, libcfg.h and version.h
	* include/mailutils/compat.h: Remove
	* include/mailutils/libargp.h: New file (from libargp/cmdline.h)
	* include/mailutils/libcfg.h: New file (from (libcfg/)
	* include/mailutils/version.h: New file

	* include/mailutils/folder.h (struct mu_0_6_folder_list): Remove
	(mu_0_6_folder_list, mu_0_6_folder_lsub)
	(mu_0_6_folder_list_destroy): Remove.

	* include/mailutils/mailutils.h: Include version.h
	Remove 0.6 compatibility layer.
	* mailbox/folder.c (list_to_0_6_folder_list, mu_0_6_folder_list)
	(mu_0_6_folder_lsub, mu_0_6_folder_list_destroy): Remove.
	
	* lib/Makefile.am (libmuaux_la_SOURCES): Remove argpinit.c,
	muinit.h and muinit.c

	* libargp/Makefile.am (noinst_LIBRARIES, noinst_HEADERS): Remove
	(lib_LIBRARIES): Add libmuargp.a
	* libargp/compat.c: New file.
	* libargp/muinit.c: New file.
	* libargp/cmdline.h: Remove.
	
	* libcfg/Makefile.am (noinst_HEADERS): Remove.
	* libcfg/auth.c, libcfg/common.c, libcfg/gsasl.c, libcfg/init.c,
	libcfg/pam.c, libcfg/radius.c, libcfg/sieve.c, libcfg/sql.c,
	libcfg/tls.c, libcfg/virtdomain.c: Include mailutils/libcfg.h
	
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add version.c
	* mailbox/cfg_lexer.c (_mu_parse_config): Do nothing if
	root_container is NULL.

	* mh/ali.c, mh/anno.c, mh/burst.c, mh/comp.c, mh/fmtcheck.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/install-mh.c, mh/mark.c,
	mh/mhl.c, mh/mhn.c, mh/mhparam.c, mh/mhpath.c, mh/pick.c,
	mh/refile.c, mh/repl.c, mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c,
	mh/sortm.c, mh/whatnow.c, mh/whom.c: Use mh_argp_init instead of
	mu_argp_init. 
	* mh/mh_argp.c, mh/mh_getopt.h (mh_argp_init): New function 
	
2007-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	* bootstrap (cp_mark_as_generated): Create target directory if
	needed.

	Make libmailutils independent from gnulib. Remove generated files
	from the repository. Bootstrap directly from the gnulib CVS.

	* scripts/gnulib-sync, autogen.sh: Remove.
	* bootstrap, bootstrap.conf: New files.
	* README-hacking: New file.
	
	* configure.ac: Update.
	* lib/Makefile.am: Update.
	* mailbox/Makefile.am: Update.
	* include/mailutils/Makefile.am (SUBDIRS): Remove gnu
	* include/mailutils/gnu/Makefile.am: Remove
	* examples/argcv.c, examples/mta.c, guimb/guimb.h,
	imap4d/imap4d.h, libargp/mu_argp.c, libargp/tls.c,
	maidag/maidag.h, mail/mail.h, mail/send.c,
	mail.local/mail.local.h, mh/mh.h: Remove getline.h
	* libproto/nntp/mbox.c: Include mailutils/md5.h
	* libargp/cmdline.h: Include strings.h
	* m4/debug.m4, m4/enable.m4, m4/gsasl.m4, m4/guile.m4,
	m4/mu_libobj.m4: Minor fix 
	* m4/intmax.m4,m4/inttypes-pri.m4,m4/inttypes_h.m4: Update
	* mailbox/alloca.h: Remove
	* mailbox/mailbox.c: Include string.h
	* mailbox/nls.c: Include locale.h
	* po/Makevars: Remove.

	* absolute-header.m4, alloca.m4, allocsa.m4, argp.m4, codeset.m4,
	d-type.m4, eealloc.m4, eoverflow.m4, error.m4, exitfail.m4,
	extensions.m4, fnmatch.m4, full-header-path.m4, getdelim.m4,
	getline.m4, getlogin_r.m4, getndelim2.m4, getopt.m4, getpass.m4,
	gettext.m4, glibc2.m4, glibc21.m4, glob.m4, gnulib.m4, iconv.m4,
	intdiv0.m4, isc-posix.m4, lcmessage.m4, lib-ld.m4, lib-link.m4,
	lib-prefix.m4, lock.m4, longdouble.m4, longlong.m4,
	mailbox-link.m4, mbchar.m4, mbiter.m4, mbrtowc.m4, mbstate_t.m4,
	mbswidth.m4, memchr.m4, mempcpy.m4, minmax.m4, obstack.m4,
	onceonly.m4, po.m4, printf-posix.m4, progtest.m4, regex.m4,
	restrict.m4, setenv.m4, signed.m4, size_max.m4, snprintf.m4,
	ssize_t.m4, stat-macros.m4, stdbool.m4, stdint.m4, stdint_h.m4,
	strcase.m4, strchrnul.m4, strdup.m4, strerror_r.m4, strndup.m4,
	strnlen.m4, strtok_r.m4, sysexits.m4, uint32_t.m4, uintmax_t.m4,
	ulonglong.m4, unistd_h.m4, unlocked-io.m4, vasnprintf.m4,
	vasprintf.m4, visibility.m4, vsnprintf.m4, wchar_t.m4, wcwidth.m4,
	wint_t.m4, xalloc.m4, xsize.m4: Remove.

	* alloca.c, allocsa.c, allocsa.h, asprintf.c, basename.c, error.c,
	error.h, exit.h, exitfail.c, exitfail.h, fnmatch.c, fnmatch_.h,
	fnmatch_loop.c, getpass.c, getpass.h, intprops.h, malloc.c,
	mbswidth.c, mbswidth.h, md5.c, md5.h, obstack.c, obstack.h,
	realloc.c, setenv.c, setenv.h, snprintf.c, snprintf.h, stdbool.h,
	stdbool_.h, strcasecmp.c, strncasecmp.c, strsignal.c, strtok_r.c,
	unsetenv.c, utmp.c, vasprintf.c, vasprintf.h, vsyslog.c,
	xalloc-die.c, xalloc.h, xalloc_die.c, xmalloc.c, xsize.h,
	xstrdup.c: Remove.
	
	* alloca.c, alloca_.h, argp-ba.c, argp-eexst.c, argp-fmtstream.c,
	argp-fmtstream.h, argp-fs-xinl.c, argp-help.c, argp-namefrob.h,
	argp-parse.c, argp-pin.c, argp-pv.c, argp-pvh.c, argp-xinl.c,
	argp.h, asnprintf.c, fnmatch.c, fnmatch_.h, fnmatch_loop.c,
	getdelim.c, getdelim.h, getline.c, getline.h, getlogin_r.c,
	getlogin_r.h, getndelim2.c, getndelim2.h, getopt.c, getopt.h,
	getopt1.c, getopt_.h, getopt_int.h, gettext.h, glob-libc.h,
	glob.c, glob_.h, malloc.c, mbchar.c, mbchar.h, mbuiter.h,
	memchr.c, mempcpy.c, mempcpy.h, minmax.h, pin.c, printf-args.c,
	printf-args.h, printf-parse.c, printf-parse.h, regcomp.c, regex.c,
	regex.h, regex_internal.c, regex_internal.h, regexec.c,
	stat-macros.h, stdbool_.h, stdint_.h, strcase.h, strcasecmp.c,
	strchrnul.c, strchrnul.h, strdup.c, strdup.h, strncasecmp.c,
	strndup.c, strndup.h, strnlen.c, strnlen.h, strnlen1.c,
	strnlen1.h, strtok_r.c, strtok_r.h, sysexit_.h, unlocked-io.h,
	vasnprintf.c, vasnprintf.h, vsnprintf.c, vsnprintf.h, wcwidth.h,
	xsize.h: Remove.
	
2007-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/sha1.h: Remove.
	* include/mailutils/sha1.h: Add.
	* mailbox/md5.h: Remove.
	* include/mailutils/md5.h: Add.
	* include/mailutils/Makefile.am: Update.
	* mailbox/Makefile.am: Update.
	* libproto/pop/mbox.c, libproto/pop/pop3_apop.c,
	libproto/pop/pop3_stls.c, mailbox/md5.c, mailbox/message.c,
	mailbox/sha1.c, pop3d/apop.c, pop3d/pop3d.h, sql/mysql.c: Fix
	usage of sha1_ and md5_.
	* mailbox/mu_auth.c, mailbox/mutil.c, mailbox/rfc2047.c: Eliminate
	strtok_r.

	* auth/sql.h (mu_internal_sql_config): Move to ...
	* include/mailutils/sql.h: ... here
	* imap4d/auth_gsasl.c: Bugfix.

	Move rc file and argp parsing into separate abstract layers.
	
	* include/mailutils/gocs.h, include/mailutils/pam.h,
	include/mailutils/radius.h, include/mailutils/syslog.h: New files
	* lib/argpinit.c, lib/muinit.c, lib/muinit.h: New files.
	* libsieve/conf.c: New file.

	* libcfg: New directory
	* libcfg/libcfg.h, libcfg/auth.c, libcfg/common.c, libcfg/init.c,
	libcfg/gsasl.c, libcfg/pam.c, libcfg/radius.c, libcfg/sieve.c,
	libcfg/sql.c, libcfg/tls.c, libcfg/virtdomain.c,
	libcfg/.cvsignore: New files.

	* libargp: New directory
	* libargp/auth.c, libargp/cmdline.h, libargp/common.c,
	libargp/gsasl.c, libargp/mu_argp.h, libargp/mu_argp.c,
	libargp/pam.c, libargp/radius.c, libargp/sieve.c, libargp/sql.c,
	libargp/tls.c, libargp/virtdomain.c, libargp/.cvsignore: New
	files.
	
	* mailbox/.cvsignore: Add cfg_parser.c and cfg_parser.h.
	* mailbox/gocs.c: New file.
	* Makefile.am (SUBDIRS): Add libargp and libcfg.
	* configure.ac (MU_APP_LIBRARIES): New variable
	(MU_COMMON_INCLUDES): add libargp and libcfg
	(AC_CONFIG_FILES): Add libargp and libcfg.

	* auth/gsasl.c, auth/pam.c, auth/radius.c, auth/sql.c, auth/sql.h,
	auth/tls.c, auth/virtual.c, comsat/comsat.h, frm/frm.h,
	guimb/guimb.h, imap4d/imap4d.h, include/mailutils/gsasl.h,
	include/mailutils/libsieve.h, include/mailutils/mailutils.h,
	include/mailutils/mu_auth.h, include/mailutils/tls.h,
	include/mailutils/sql.h, maidag/maidag.h, mail/mail.h,
	mail.local/mail.local.h, mailbox/daemon.c, mailbox/system.c,
	mh/mh_argp.c, mh/mh_getopt.h, pop3d/pop3d.h,
	readmsg/readmsg.h: Remove argp stuff 

	* comsat/comsat.c, config/mailutils-config.c, dotlock/dotlock.c,
	examples/muauth.c, examples/muemail.c, frm/frm.c, frm/from.c,
	guimb/main.c, imap4d/idle.c, imap4d/imap4d.c, imap4d/util.c,
	imap4d/version.c, maidag/lmtp.c, maidag/maidag.c,
	maidag/mailquota.c, mail/mail.c, mail/send.c, mail/version.c,
	mail.local/mailquota.c, mail.local/main.c,
	mail.remote/mail.remote.c, mailbox/mu_auth.c, messages/messages.c,
	mimeview/mimeview.c, movemail/movemail.c, pop3d/extra.c,
	pop3d/pop3d.c, pop3d/popauth.c, readmsg/readmsg.c, sieve/sieve.c:
	Use mu_app_init for parsing command line and
	configuration files.
	* comsat/Makefile.am, config/Makefile.am, dotlock/Makefile.am,
	examples/Makefile.am, frm/Makefile.am, guimb/Makefile.am,
	imap4d/Makefile.am, maidag/Makefile.am, mail/Makefile.am,
	mail.local/Makefile.am, mail.remote/Makefile.am,
	mailbox/Makefile.am, messages/Makefile.am, mimeview/Makefile.am,
	movemail/Makefile.am, pop3d/Makefile.am, readmsg/Makefile.am,
	sieve/Makefile.am: Use MU_APP_LIBRARIES. 

	* include/mailutils/Makefile.am: Add new files.
	* include/mailutils/argp.h: Remove.
	* include/mailutils/cfg.h: New file.
	* include/mailutils/daemon.h (MODE_INTERACTIVE,MODE_DAEMON): New
	defines (from removed argp.h).
	(mu_gocs_daemon): New decl.
	* include/mailutils/error.h (mu_program_name): New variable
	(mu_set_program_name): New function.
	* lib/Makefile.am (libmuaux_la_SOURCES): Add new files.	
	* libsieve/Makefile.am (libsieve_la_SOURCES): Remove argp.c, add
	conf.c instead.
	* libsieve/argp.c: Remove.
	
	* mailbox/cfg_parser.y (mu_cfg_parse_boolean): New function.
	* mailbox/mu_argp.c: Remove.

	* mailbox/muerror.c (mu_program_name): New variable
	(mu_set_program_name): New function
	(mu_default_error_printer): Print program name before diagnostic
	string.
	* mailbox/mutil.c (mu_sql_decode_password_type): New function.
	* mh/mh_whom.c (mh_alias_expand): Bugfix
	* po/POTFILES.in: Update
	* testsuite/lib/mailutils.exp (mu_init): Pass --no-site-rcfile
	--no-user-rcfile to all programs.
	
2007-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* maidag/lmtp.c: Use English reply texts.

	* auth/sql.c (decode_tuple_v1_0): Allow mailbox to be NULL.
	* comsat/comsat.c: Use mu_error for diagnostics where possible.
	* libproto/include/amd.h (struct _amd_data. qfetch): New member.
	* libproto/maildir/mbox.c (maildir_qfetch): Implement quick_get
	method.
	* libproto/mh/mbox.c (mh_qfetch): Likewise.
	* mailbox/amd.c (amd_quick_get_message): Likewise.

2007-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/sql.c, libproto/mbox/folder.c: Rename MU_READ_ERROR to
	MU_ERR_READ, for consistency.

	* comsat/Makefile.am (comsatd_LDADD): Add all mailbox formats.
	* comsat/cfg.c: Use mu_error instead of syslog.
	* comsat/comsat.c (comsat_daemon): Implement test mode.
	(notify_user): Use mailbox quick access mode instead of directly
	fiddling with the UNIX mailbox stream.

	* include/mailutils/stream.h (MU_STREAM_QACCESS): New define.
	* libproto/mbox/mbox.c: Implement _quick_get_message method.
	* libproto/mbox/mbox0.h (mbox_scan1): New function.
	* libproto/mbox/mboxscan.c (mbox_scan0): Split into mbox_scan0
	proper and mbox_scan_internal.
	(mbox_scan1): New function.
	Remove unused defines.
	* libsieve/load.c: Do not deallocate loaded modules.
	* mail.local/main.c (set_debug_flags): Fix typo.
	* mailbox/amd.c: Implement get_qid method.
	(amd_append_message): Signal MU_EVT_MESSAGE_APPEND.
	* mailbox/errors (MU_ERR_BADOP): New error code.
	(MU_READ_ERROR): Rename to MU_ERR_READ, for consistency.
	* mailbox/file_stream.c (_prog_destroy,_prog_close): Fix waiting
	for the children to terminate. Do not forcefully kill them.

	* mailbox/mailbox.c: Control allowed operations, depending on
	MU_STREAM_QACCESS bit.

2007-11-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* mailbox/Makefile.am: Update
	* libsieve/extensions/pipe.c: Update
	
	* libsieve/extensions/Makefile.am: Add pipe.c
	* libsieve/extensions/pipe.c: New file

	* Makefile.am, configure.ac: Add maidag.
	* frm/common.c, imap4d/sync.c, libsieve/runtime.c,
	mh/scan.c: Update declaration of observable actions.  
	* imap4d/select.c, imap4d/status.c, mh/anno.c, mh/forw.c,
	mh/repl.c: Use mu_mailbox_sync instead of
	mu_mailbox_save_attributes. 
	* include/mailutils/mailbox.h (mu_mailbox_sync): New function
	(mu_mailbox_save_attributes): Deprecated.
	* include/mailutils/message.h (mu_message_get_qid)
	(mu_message_set_qid): New functions.
	* include/mailutils/observer.h (MU_EVT_MESSAGE_APPEND): New event.
	(mu_observer_set_action_data): New function. Registers
	action-specific data.
	(mu_observable_notify): Get call-specific data as the third
	argument.
	* include/mailutils/types.hin (mu_message_qid_t): New data type.
	* libproto/imap/folder.c, libproto/imap/mbox.c,
	libproto/include/amd.h, libproto/maildir/mbox.c,
	libproto/mailer/sendmail.c, libproto/mailer/smtp.c,
	libproto/mbox/mboxscan.c, libproto/mh/mbox.c,
	libproto/nntp/mbox.c, libproto/pop/mbox.c, mailbox/folder.c,
	mailbox/mailer.c : Update calls to mu_observable_notify. 
	* libproto/include/mailbox0.h (struct _mu_mailbox): Rename
	_save_attributes to _sync.
	* mailbox/amd.c: Likewise.
	(_quick_get_message): New member.
	(MAILBOX_NOTIFY): Remove.
	* libproto/include/message0.h (struct _mu_message): New member
	_get_qid.
	* libproto/include/observer0.h (struct _mu_observer): New member
	_action_data.
	* libproto/mbox/mbox.c: Implement mbox_message_qid. Update calls
	to mu_observable_notify.
	(mbox_append_message): Report MU_EVT_MESSAGE_APPEND.
	* mailbox/observer.c (mu_observer_destroy): Call _destroy with
	_action_data as its third argument.
	(mu_observer_action, mu_observable_notify): Takes third argument
	(call data) 
	(mu_observer_set_action, mu_observer_set_destroy): Update signature.
	(mu_observer_set_action_data): New function.
	
	* libproto/mbox/mbox0.h, mail.local/main.c: Minor change
	
	* mail.local/Makefile.am (mail_local_LDADD): Add MU_LIB_MAILER
	
	* mailbox/file_stream.c (_file_open): Fix handling of
	MU_STREAM_APPEND. Remove assertion.

	* mailbox/mailbox.c (mu_mailbox_quick_get_message): New function
	(mu_mailbox_sync): New function.
	(mu_mailbox_get_size): Implement brute-force approach in case the
	mailbox does not provide a method.

	* mailbox/message.c (mu_message_get_qid, mu_message_set_qid): New
	function.

	* maildag/: New directory. A general-purpose mail delivery agent.
	* maildag/deliver.c: New file.
	* maildag/lmtp.c: New file.
	* maildag/maidag.c: New file.
	* maildag/maidag.h: New file.
	* maildag/mailtmp.c: New file.
	* maildag/mailquota.c: New file.
	* maildag/script.c: New file.
	* maildag/util.c: New file.
	* maildag/Makefile.am: New file.
	* maildag/.cvsignore: New file.
	
2007-11-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/cfg_lexer.c: Do not use obstack.
	* mailbox/refcount.c (mu_refcount_inc, mu_refcount_dec): Bugfix

	* auth/pam.c, auth/radius.c: Add configuration keywords.
	* mailbox/cfg_lexer.c (isword): Allow dots in words.

	* configure.ac, NEWS: version 1.2.90
	* mailbox/Makefile.am: Additional dependency
	cfg_parser.h:cfg_parser.y
	* mailbox/cfg_lexer.c (_mu_config_register_section): Zero out
	the root container after creation.
	(_mu_parse_config): Use `program' not `prog' for per-program
	sections.
	* pop3d/pop3d.c (cb_bulletin_db): Fix typo
	(pop3d_cfg_param): Protect some variables by ifdefs.

	* include/mailutils/argp.h (mu_argp_set_config_param): New
	function.
	* include/mailutils/cfg.h (mu_cfg_time): New value
	(struct mu_cfg_section): Revamp using lists.
	(enum mu_cfg_cont_type, struct mu_cfg_cont): New types.
	(mu_config_create_container, mu_config_clone_container)
	(mu_config_destroy_container): New functions.
	(mu_parse_config): New function.
	* include/mailutils/mu_auth.h (mu_authentication_clear_list)
	(mu_authorization_clear_list): New functions.
	* mailbox/cfg_lexer.c: Add missing includes
	(mu_config_create_container, mu_config_clone_container)
	(mu_config_destroy_container): New functions.
	(mu_parse_config): New function.
	(_mu_config_register_section): New function.
	(mu_config_register_section): New function.
	(_mu_parse_config): Fully implement system-wide/per-user
	configuration semantics.
	(mu_parse_config): Take two more arguments.
	* mailbox/cfg_parser.h: Remove automatically generated file.
	* mailbox/cfg_parser.y (find_container): New function
	(find_subsection,find_param): Rewrite using find_container
	(parse_param): Implement new data type mu_cfg_time (time_t value).
	(_scan_tree_helper): Complain about unknown sections only if
	MU_CONFIG_VERBOSE environment variable is set.
	* mailbox/mu_argp.c (assign_string): Bugfix.
	(mu_argp_set_config_param): New function.
	(mu_argp_parse): Remove eventual `lt-' prefix from program names.
	* mailbox/mu_auth.c: New options --clear-authorization and
	--clear-authentication.
	(mu_authorization_clear_list,mu_authentication_clear_list): New
	functions. 
	
	* include/mailutils/refcount.h (struct _mu_refcount): Move to
	refcount.c
	(mu_refcount_inc,mu_refcount_dec): Change return value.
	(mu_refcount_value): New function.
	* mailbox/refcount.c (struct _mu_refcount): Moved from refcount.h
	(mu_refcount_value): New function.
	(mu_refcount_create,mu_refcount_destroy,mu_refcount_inc)
	(mu_refcount_dec): Fix monitor usage.
	(mu_refcount_inc,mu_refcount_dec): Fix return type.
	
	* mailbox/Makefile.am (libmailutils_la_SOURCES): Add refcount.c
	* dotlock/dotlock.c, imap4d/imap4d.c, mail.local/main.c,
	mail.remote/mail.remote.c, mimeview/mimeview.c,
	movemail/movemail.c, pop3d/pop3d.c, pop3d/signal.c,
	readmsg/readmsg.c, sieve/sieve.c: Implement new configuration.

	* testsuite/lib/mailutils.exp: Set MU_CONFIG_FLAVOR envar to
	`none' to avoid reading configuration files.

2007-11-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/message.c (message_stream_size): Bugfix.

2007-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement socket stream type and shutdown method for streams:
	
	* mailbox/socket_stream.c: New file.
	* include/mailutils/stream.h (mu_socket_stream_create)
	(mu_stream_shutdown, mu_stream_set_shutdown): New functions.
	* libproto/include/stream0.h (struct _mu_stream): New member
	`_shutdown'. 
	* mailbox/file_stream.c (mu_stream_create): Bugfix.
	* mailbox/stream.c (mu_stream_shutdown)
	(mu_stream_set_shutdown): New functions.
	* mailbox/tcp.c (_tcp_shutdown): New function.
	(_tcp_stream_init): New function.
	(mu_tcp_stream_create_with_source_ip): Register _tcp_shutdown.
	
	Implement normal UNIX-style configuration files:
	
	* mailbox/cfg_lexer.c: New file.
	* mailbox/cfg_parser.y: New file.
	* mailbox/cfg_parser.h: New file.
	* mailbox/Makefile.am: Add cfg_ sources and socket_stream.c.
	
	* include/mailutils/cfg.h: New file.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add cfg.h.
	* include/mailutils/argp.h: Include cfg.h.
	(mu_create_argcv): Remove prototype.
	* include/mailutils/mu_auth.h (struct mu_auth_module): New member
	`cfg'.
	(MU_AUTH_REGISTER_ALL_MODULES): Call mu_auth_init first.

	* mailbox/mu_argp.c: Rewrite. Implement normal configuration
	(resource) file support. Overloaded command line options begin to
	phase out.
	* mailbox/mu_auth.c, auth/gsasl.c, auth/pam.c, auth/radius.c,
	auth/sql.c, auth/tls.c, auth/virtual.c, libsieve/argp.c,
	mailbox/system.c: Implement configuration statements.
	
	* imap4d/imap4d.c: Begin switching to the new configuration scheme.

	* mh/mh_whatnow.c, mh/send.c, sql/mysql.c, sql/odbc.c,
	sql/postgres.c: Keep the namespace clean. 

2007-10-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/escape.c (escape_deadletter): Add missing check.

2007-10-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* mailbox/url.c (url_parse0): The notation proto:///file means
	absolute file name.
	* mailbox/testsuite/Urls: Likewise
	
2007-09-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* README: Reword yesterdays changing by pointing to the
	documentation, instead of the raw texi file.
	* doc/texinfo/Makefile.am (master-menu, untabify, final): New
	goals.
	* doc/texinfo/mastermenu.el, doc/texinfo/untabify.el: New files
	* doc/texinfo/mailutils.texi: Rebuild master menu.

2007-09-03  Darel Henman  <dhenman@gmail.com>

	* README:  Edited text in README file related to the
	-enable-mh-utils option.  This was to correct a reference from
	a now non-existent mh README file to the ..doc/texinfo/mh-mh.texi file.


2007-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* config/mailutils-config.c (lib_descr): Add mailer.
	* doc/texinfo/programs.texi (Loader Flags): Update

2007-08-24  Darel Henman  <dhenman@gmail.com>

	* mailbox/mailer.c: Include <sys/time.h> to fix builds on CygWin.    


2007-08-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/mta.c: Accommodate for the change from 2007-08-09

2007-08-18  Wojciech Polak  <polak@gnu.org>

	* doc/texinfo/mailutils.texi (References): Added RFC 2487 and 2595.
	* doc/texinfo/url.texi (URL): Document POPS and IMAPS protocols.

2007-08-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libproto/mailer/smtp.c (smtp_send_message): Do not output space
	character after MAIL FROM: and RCPT TO:

2007-07-18  Wojciech Polak  <polak@gnu.org>

	Added support for new protocols: POPS (pops://)
	and IMAPS (imaps://).

	* include/mailutils/registrar.h: Register new protocols:
	mu_pops_record and mu_imaps_record.
	* libproto/imap/folder.c (_imaps_record, mu_imaps_record): Added.
	(folder_imap_open): Handle IMAPS connection.
	* libproto/imap/mbox.c (_mailbox_imap_and_imaps_init): New function.
	(_mailbox_imaps_init): Likewise.
	(_mailbox_imap_init): Call _mailbox_imap_and_imaps_init.
	* libproto/include/imap0.h (_f_imap): Added new variable imaps.
	* libproto/include/registrar0.h (MU_IMAPS_PORT, MU_IMAPS_SCHEME)
	(MU_IMAPS_SCHEME_LEN): Added new constants.
	(MU_POPS_PORT, MU_POPS_SCHEME, MU_POPS_SCHEME_LEN): Likewise.
	* libproto/pop/folder.c (_pops_record, mu_pops_record): Added.
	* libproto/pop/mbox.c (_pop_data): Added new variable pops.
	(_mailbox_pop_and_pops_init): New function.
	(_mailbox_pops_init): Likewise.
	(_mailbox_pop_init): Call _mailbox_pop_and_pops_init.
	(pop_open): Handle POPS connection.

2007-07-18  Wojciech Polak  <polak@gnu.org>

	* libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES):
	Added url_sendmail.c and url_smtp.c.
	* libproto/mailer/url_sendmail.c: Moved from mailbox/url_sendmail.c.
	(_url_sendmail_init): Call mu_url_init.
	* libproto/mailer/url_smtp.c: Moved from mailbox/url_smtp.c.
	(_url_smtp_init): Call mu_url_init.
	* libproto/pop/url.c (_url_pop_init, _url_pops_init): Call mu_url_init.
	* libproto/imap/url.c (_url_imap_init, _url_imaps_init): Likewise.
	* mailbox/Makefile.am (libmailutils_la_SOURCES):
	Removed url_sendmail.c and url_smtp.c.
	* mailbox/url_sendmail.c: Moved to libproto/mailer/url_sendmail.c.
	* mailbox/url_smtp.c: Moved to libproto/mailer/url_smtp.c.
	* mailbox/url.c (mu_url_init): New function.
	* include/mailutils/url.c (mu_url_init): New prototype.

2007-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* include/mailutils/libsieve.h (mu_stream_printf): Remove
	conflicting prototype.

2007-07-17  Wojciech Polak  <polak@gnu.org>

	* libproto/mailer: New directory. Keeps libmu_mailer.la.
	* libproto/mailer/Makefile.am: New file.
	* libproto/mailer/sendmail.c: Moved from mailbox/sendmail.c.
	* libproto/mailer/smtp.c: Moved from mailbox/smtp.c.
	* libproto/Makefile.am (SUBDIR): Added mailer.
	* examples/Makefile.am, guimb/Makefile.am, libmu_scm/Makefile.am,
	mail/Makefile.am, mail.remote/Makefile.am, mh/Makefile.am,
	sieve/Makefile.am: Added ${MU_LIB_MAILER}.
	* mailbox/sendmail.c: Moved to libproto/mailer/sendmail.c.
	* mailbox/smtp.c: Moved to libproto/mailer/smtp.c.
	* mailbox/mutil.c (mu_tls_begin): Removed placeholder.
	* mailbox/Makefile.am (libmailutils_la_SOURCES):
	Removed sendmail.c and smtp.c.
	* configure.ac: Added MU_LIB_MAILER.

2007-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/mh_ctx.c (mh_context_read): Avoid writing past blurb end.
	* mh/send.c: New mtstailor variable "username"

2007-07-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/imap4d.h (util_parse_822_date): First arg is const
	* imap4d/util.c: Likewise.
	* imap4d/search.c: Rewrite using parse tree instead of instruction
	array. Implement boolean shortcut evaluation.

2007-07-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/fetch.c, imap4d/select.c, imap4d/status.c, mh/inc.c,
	mh/mh_init.c, pop3d/bulletin.c: Fix format strings 
	* imap4d/search.c, libproto/mbox/folder.c, mailbox/envelope.c,
	examples/url-parse.c, mailbox/mu_auth.c: Minor fixes
	* include/mailutils/libsieve.h (mu_stream_printf): Remove
	* libsieve/actions.c (mu_stream_printf): Remove
	(mime_create_ds): Bugfix: datestr was never initialized! Nobody
	noticed this far?
	
2007-07-10  Wojciech Polak  <polak@gnu.org>

	* auth/tls.c (mu_tls_begin): New function.
	(_tls_stream_push): Added mu_error call.
	(_tls_open_client): Return MU_ERR_FAILURE instead of -1.
	* include/mailutils/tls.h (mu_tls_readline_fn)
	(mu_tls_writeline_fn, mu_tls_stream_ctl_fn): New data types.
	(mu_tls_begin): New prototype.
	* mailbox/mutil.c (mu_tls_begin): Placeholder.

	* libproto/pop/mbox.c (pop_parse_capa): New function.
	(pop_capa): Send CAPA, but don't parse the response,
	call pop_parse_capa() instead.
	(pop_reader, pop_writer, pop_stream_ctl): New static functions.
	(pop_stls): Uses now mu_tls_begin() from libmuauth.

	* libproto/imap/folder.c: (imap_reader, imap_writer)
	(imap_stream_ctl): New static functions.
	(tls): Uses now mu_tls_begin() from libmuauth.
	(folder_imap_open): Use MU_IMAP_PORT.

	* mailbox/smtp.c: Added STARTTLS support.
	(smtp_parse_ehlo_ack): New function.
	(smtp_starttls): New function.
	(stmp_reader, smtp_writer, smtp_stream_ctl): New static
	functions.

	* mailbox/stream.c: (mu_stream_vprintf)
	(mu_stream_printf, mu_stream_sequential_vprintf)
	(mu_stream_sequential_printf): New functions.
	* include/mailutils/stream.h: (mu_stream_vprintf)
	(mu_stream_printf, mu_stream_sequential_vprintf)
	(mu_stream_sequential_printf): New prototypes.

2007-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, configure.ac: Version 1.2.1
	* THANKS: Add Robby Villegas
	* examples/mta.c, libproto/imap/folder.c, libproto/nntp/folder.c,
	mimeview/mimetypes.l: Fix format string
	* libproto/imap/mbox.c: Minor fixes
	* mail/mail.c (mail_mainloop): Use "%s" to properly pass command
	to util_do_command. Remove call to util_escape_percent
	* mail/mail.h, mail/util.c (util_escape_percent): Delete

	* libproto/include/envelope0.h (date,sender): New members
	(_sender,_date): Rename to _get_sender, _get_date
	[__cplusplus]: Add missing }
	
	* include/mailutils/envelope.h, mailbox/envelope.c
	(mu_envelope_get_sender)
	(mu_envelope_sget_sender, mu_envelope_aget_sender)
	(mu_envelope_get_date, mu_envelope_sget_date)
	(mu_envelope_aget_date): New functions
	(mu_envelope_sender, mu_envelope_date): Rewrite as macros
	
	* guimb/util.c, imap4d/append.c, imap4d/fetch.c, imap4d/search.c, 
	libmu_scm/mu_message.c, libsieve/actions.c, libsieve/tests.c,
	mail/from.c, mailbox/amd.c, mailbox/mutil.c,
	readmsg/readmsg.c: Rewrite using new envelope accessors

	* libproto/mbox/mbox.c (write_array): New function
	(mbox_append_message0): Rewrite using new envelope accessors +
	write_array
	
2007-07-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (INTLINCS): Remove leftover variable
	(MU_LINK_POSTFLAGS): New subst
	* auth/Makefile.am, comsat/Makefile.am, 
	dotlock/Makefile.am, examples/Makefile.am,
	examples/cpp/Makefile.am, frm/Makefile.am, guimb/Makefile.am,
	imap4d/Makefile.am, lib/Makefile.am, libmu_cpp/Makefile.am,
	libmu_scm/Makefile.am, libproto/imap/Makefile.am,
	libproto/maildir/Makefile.am, libproto/mbox/Makefile.am,
	libproto/mh/Makefile.am, libproto/nntp/Makefile.am,
	libproto/pop/Makefile.am, libsieve/Makefile.am,
	libsieve/extensions/Makefile.am, mail/Makefile.am,
	mail.local/Makefile.am, mail.remote/Makefile.am,
	mailbox/Makefile.am, messages/Makefile.am, mh/Makefile.am,
	mimeview/Makefile.am, movemail/Makefile.am,
	pop3d/Makefile.am, readmsg/Makefile.am, sql/Makefile.am,
	sieve/Makefile.am(INCLUDES): Remove INTLINCS
	* config/Makefile.am (INCLUDES): Remove INTLINCS
	(mailutils_config_CFLAGS): Use MU_LINK_POSTFLAGS

2007-07-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* configure.ac: Change library version info
	* examples/url-parse.c: Rewrite using sget accessors
	* include/mailutils/url.h, mailbox/url.c (mu_url_sget_scheme) 
	(mu_url_aget_scheme, mu_url_sget_user, mu_url_aget_user)
	(mu_url_sget_passwd, mu_url_aget_passwd, mu_url_sget_auth) 
	(mu_url_aget_auth, mu_url_sget_host, mu_url_aget_host)
	(mu_url_sget_path, mu_url_aget_path, mu_url_sget_query) 
	(mu_url_aget_query): New functions
	(mu_url_get_scheme, mu_url_get_user, mu_url_get_passwd)
	(mu_url_get_auth, mu_url_get_host, mu_url_get_path)
	(mu_url_get_query)
	(mu_url_is_same_scheme, mu_url_is_same_user, mu_url_is_same_path)
	(mu_url_is_same_host, mu_url_is_same_port): Rewrite using sget
	accessors. 

	* libproto/imap/folder.c, libproto/imap/mbox.c,
	libproto/mbox/folder.c, libproto/mbox/mbox.c,
	libproto/nntp/folder.c, libproto/nntp/mbox.c, libproto/pop/mbox.c,
	mailbox/amd.c, mailbox/sendmail.c, mailbox/smtp.c,
	mailbox/wicket.c: Use mu_url_sget or mu_url_aget, depending on the
	needs.
	
	* mailbox/mailbox.c (mu_mailbox_get_debug): Propagate the debug
	state to the underlying folder.

2007-07-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail.local/Makefile.am (mail_local_LDADD): Add missing
	libraries. Reported by Robby Villegas.

2007-07-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/assoc.c (assoc_rehash): Fix an incorrect element
	size calculation.

2007-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* COPYING, COPYING.LESSER: Install official versions
	* configure.ac, NEWS: Version 1.2
	* libsieve/extensions/spamd.c: Append `X-' headers.
	* mail.local/main.c: Read message contents from the message
	stream, so any changes to its headers and/or body are propagated
	to the final delivery.

2007-06-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Remove the definition of ARG_UNUSED

	* mailbox/header.c (mu_hdrent_create): Minor change
	* libsieve/argp.c (sieve_argp_parser): Bug fix
	* libsieve/prog.c (sieve_code_command: Bug fixes
	
	* include/mailutils/types.hin (MU_ARG_UNUSED, MU_PRINTFLIKE): New
	macros.
	* lib/daemon.c: Use __attribute__ instead of ARG_UNUSED
	* auth/pam.c, auth/radius.c, auth/sql.c, auth/virtual.c,
	examples/nntpclient.c, examples/pop3client.c, imap4d/capability.c,
	imap4d/check.c, imap4d/close.c, imap4d/fetch.c,
	libproto/imap/folder.c, libproto/imap/url.c,
	libproto/maildir/folder.c, libproto/maildir/mbox.c,
	libproto/mbox/folder.c, libproto/mbox/url.c, libproto/mh/folder.c,
	libproto/mh/mbox.c, libproto/nntp/url.c, libproto/pop/mbox.c,
	libproto/pop/url.c, libsieve/util.c, libsieve/extensions/spamd.c,
	mail/decode.c, mail/escape.c, mail/exit.c, mail/folders.c,
	mail/if.c, mail/inc.c, mail/list.c, mail/mail.c, mail/mailline.c,
	mail/msgset.y, mail/quit.c, mail/source.c, mail/summary.c,
	mail/tag.c, mail/version.c, mailbox/amd.c, mailbox/auth.c,
	mailbox/file_stream.c, mailbox/filter_iconv.c,
	mailbox/filter_trans.c, mailbox/message_stream.c,
	mailbox/monitor.c, mailbox/mu_auth.c, mailbox/parsedate.y,
	mailbox/system.c, mailbox/url_sendmail.c, mh/ali.c, 
	mh/mhparam.c, pop3d/auth.c, pop3d/signal.c, sql/odbc.c: Use
	MU_ARG_UNUSED to mark unused formal parameters.
	
	* guimb/guimb.h, imap4d/imap4d.h, include/mailutils/debug.h,
	include/mailutils/error.h, include/mailutils/libsieve.h,
	include/mailutils/nntp.h, include/mailutils/pop3.h,
	libproto/include/imap0.h, libsieve/sieve.h, mail/mail.h, 
	mail.local/mail.local.h, mh/mh.h, pop3d/pop3d.h: Mark printf-like
	calls with MU_PRINTFLIKE.

	* po/Makevars (XGETTEXT_OPTIONS): Add Mailutils-specific
	printf-like calls.
	
	* NEWS: Update
	* include/mailutils/header.h (mu_header_append,mu_header_prepend):
	New functions
	* mailbox/header.c: Likewise
	* include/mailutils/mailer.h (mu_mailer_send_fragments): New
	function
	* mailbox/mailer.c: Likewise
	* include/mailutils/mutil.h (mu_rfc2822_msg_id): New function
	* mailbox/mutil.c: Likewise
	* mailbox/mime.c (_mime_set_content_type): Avoid risky usage of
	static buffers.

	* mh/TODO: Update
	* mh/mh_getopt.h (ARG_CHUNKSIZE): New value
	* mh/mh_init.c (mh_create_message_id): Rewrite using
	mu_rfc2822_msg_id
	* mh/send.c: Implement `--send'.
	
2007-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Prepare for the GPL v.3 release.  
	Relicense programs under GPL v.3, libraries under LPGL v.3
	
2007-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/header.c: Implement a terse runtime help.

2007-06-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	
	* mailbox/header.c (header_readline): Always nul-terminate the
	buffer.
	(mu_hdrent_find): Allow negative instance indices, meaning
	scanning from the bottom up.

	* include/mailutils/list.h: Fix typo
	* libsieve/argp.c: New option --clearpath
	* libsieve/load.c: Minor change
	* libsieve/sieve.h: Minor change
	* sieve/testsuite/sieve/ext.exp: Pass --clearpath option to sieve
	
	* mh/anno.c, mh/burst.c, mh/comp.c, mh/compcommon.c, mh/folder.c,
	mh/forw.c, mh/inc.c, mh/mark.c, mh/mh.h, mh/mh_alias.y,
	mh/mh_argp.c, mh/mh_ctx.c,  mh/mh_global.c, mh/mh_init.c,
	mh/mh_msgset.c, mh/mh_sequence.c, mh/mh_whatnow.c, mh/mh_whom.c,
	mh/mhl.c, mh/mhn.c, mh/mhparam.c, mh/mhpath.c, mh/pick.c,
	mh/refile.c, mh/repl.c, mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c,
	mh/sortm.c, mh/whom.c: Use mu_header_sget to retrieve context and
	configuration settings. Update all callers.

	* include/mailutils/header.h (MU_HEADER_REPLACE)
	(MU_HEADER_BEFORE): New macros
	(mu_header_remove,mu_header_insert)
	(mu_header_sget_value_n,mu_header_get_value_n)
	(mu_header_aget_value_n,mu_header_get_address_n)
	(mu_header_sget_field_name,mu_header_sget_field_value)
	(mu_header_get_value_unfold_n,mu_header_aget_value_unfold_n): New
	functions;
	(mu_header_sget_value,mu_header_get_value,mu_header_aget_value)
	(mu_header_get_address,mu_header_get_value_unfold)
	(mu_header_aget_value_unfold): Rewrite as macros
	(mu_header_set_set_value,mu_header_set_get_value)
	(mu_header_set_size,mu_header_set_lines): Remove functions

	* libproto/include/header0.h: Rewrite from scratch
	* mailbox/header.c: Rewrite from scratch
	
	* examples/header.c: New program
	* examples/Makefile.am (noinst_PROGRAMS): Add header
	* examples/addr.c: Remove unused vars
	* lib/mu_dbm.c, libproto/maildir/mbox.c, mh/mh_format.c: Remove
	unused functions 
	* libmu_scm/mu_message.c (_get_envelope_sender): Bugfix: the return
	value was wrong.
	* examples/mimetest.c, libproto/imap/mbox.c, libproto/mbox/mbox.c,
	libsieve/actions.c, mail/decode.c, mail/escape.c, mail/mail.h,
	mail/print.c, mail/retain.c, mail/send.c, mail.local/mailquota.c,
	mailbox/amd.c,  mailbox/sendmail.c: Prefer mu_header_sget 
	where possible. Remove obsolete header calls.
	* mail.remote/testsuite/Data: Remove extra white space
	* mail.local/main.c (main): Register all mailbox formats
	* mailbox/mime.c: Fix indentation
	* mh/mhn.c: shut up the gcc warning
	
2007-06-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* examples/addr.c, examples/mta.c, frm/common.c, imap4d/fetch.c,
	libmu_scm/mu_message.c, mail/alias.c, mail/alt.c, mail/from.c,
	mail/mail.h, mail/reply.c, mail/send.c, mail/util.c,
	mailbox/attachment.c, mailbox/mutil.c, mailbox/sendmail.c,
	mailbox/smtp.c, mh/mh.h, mh/mh_format.c, mh/mh_format.h,
	mh/mh_init.c: Use mu_address_sget functions, where possible.
	* include/mailutils/address.h (mu_address_set_local_part)
	(mu_address_set_domain,mu_address_set_route)
	(mu_address_set_email,mu_address_sget_comments)
	(mu_address_sget_local_part,mu_address_sget_personal)
	(mu_address_sget_domain,mu_address_sget_route)
	(mu_address_sget_email): New functions
	* mailbox/address.c: Likewise

2007-06-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Use AM_PROG_CC_C_O and AC_PROG_CXX
	* include/mailutils/property.h (mu_property_sget_value)
	(mu_property_aget_value): New functions
	* mailbox/property.c: Likewise
	* mailbox/Makefile.am: Merge DEFS and AM_CPPFLAGS
	* mailbox/mailer.c (mu_mailer_send_message): Set envelope from
	address according to the underlying mailer type.
	* mailbox/smtp.c (smtp_open,smtp_send_message): On invalid
	arguments, return EINVAL instead of spitting out assertion.
	(smtp_send_message): Null from address is an error.
	* mh/sortm.c: Stable sort.
	
2007-05-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* README: Fix typos, use LDFLAGS instead of LIBS
	* auth/tls.c (_tls_stream_push): Flush data. before returning.

2007-05-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* scripts/ylwrap: Rename to ...
	* scripts/gylwrap: ... this
	* doc/texinfo/Makefile.am, libsieve/Makefile.am,
	mailbox/Makefile.am, mailbox/Makefile.am, mh/Makefile.am,
	mimeview/Makefile.am, scripts/Makefile.am: Update to the
	above change.

2007-05-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	* Makefile.am (alpha): Change distdir format
	* examples/mimetest.c: Print more information about the message
	structure.
	* mailbox/mime.c (_mime_parse_mpart_message): One more fix
	* mailbox/testsuite/Mime: Fix to match new mimetest output and
	bugfixes in mime.c
	* imap4d/testsuite/imap4d/fetch.exp, mail/testsuite/mail/read.exp,
	mail/testsuite/mail/write.exp,
	readmsg/testsuite/readmsg/test.exp: Update to match bugfixes in
	mime.c  
	* testsuite/spool/mbox1: Fix msg#5
	
2007-05-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/daemon.c (mu_daemon_remove_pidfile): Reset pidfile.

2007-04-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (MU_BUILT_CXX_EXAMPLES): Define if c++ libs
	requested.
	* examples/cpp/Makefile.am: Build c++ examples
	* libmu_cpp/Makefile.am (libmu_cpp_la_LDFLAGS): Add -rpath

2007-04-30  Wojciech Polak  <polak@gnu.org>

	* libproto/pop/mbox.c: Fixed APOP handling.

2007-04-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/header.c (mu_header_get_value): Bugfix
	* mailbox/mbx_default.c (mu_mailbox_create_default): Fix memory
	leaks.

2007-03-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pop3d/bulletin.c (read_bulletin_db): Do not close DB too early.

2007-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/testsuite/imap4d/expunge.exp: Fix pattern
	* include/mailutils/assoc.h (mu_assoc_create): Add third argument.
	(mu_assoc_destroy,mu_assoc_clear): New functions
	* include/mailutils/header.h (mu_header_set_get_fvalue): Remove
	function.
	* libproto/imap/mbox.c (imap_header_get_fvalue): Remove
	* libproto/include/header0.h (struct _mu_header): Remove
	`fhdr_count' and `fhdr', add `cache'.
	Remove `_get_fvalue'
	* libproto/mbox/mbox.c: Remove rudimentary header caching
	* libproto/mbox/mbox0.h: Likewise
	* libproto/mbox/mboxscan.c: Likewise
	* mail/alias.c, mailbox/mutil.c: Update calls to mu_assoc_create
	* mailbox/assoc.c (mu_assoc_create): Take 3 arguments
	(mu_assoc_clear, mu_assoc_destroy): New functions
	* mailbox/header.c: Rewrite header caching

	* include/mailutils/locker.h: Rewrite
	* mailbox/locker.c: Rewrite

2007-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/mime.c (_mime_parse_mpart_message): The CRLF preceding
	the encapsulation line is conceptually attached to the boundary.
	* NEWS: Update

2007-02-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* Makefile.am: Add libmu_cpp
	* NEWS, README: Update
	* configure.ac: Add `--enable-experimental' option
	Rewrite DBM handling
	Withdraw old DBM support
	* auth/sql.c: Actually set quota if it is available
	* include/mailutils/mu_auth.h (struct mu_auth_data): New field
	`flags'.
	(mu_auth_data_set_quota): New function
	* lib/mu_dbm.h, lib/mu_dbm.c: Withdraw old DBM support. Fix style
	issues.
	* mail.local/mail.local.h (check_quota): Change signature
	* mail.local/mailquota.c: Get quota value from mu_auth_data, if
	available.
	* mail.local/main.c (check_quota): Change signature
	* mailbox/mu_auth.c (mu_auth_data_alloc): Fill auth object with
	zeroes.
	(mu_auth_data_set_quota): New function
	* pop3d/apop.c: Remove unused variables
	* pop3d/bulletin.c (deliver_pending_bulletins): Return
	immediately, if unable to count messages in the bulletin box
	* pop3d/popauth.c (action_list): Do not check db permissions.

	* pop3d/bulletin.c (read_bulletin_db,write_bulletin_db): Fix
	permissions.
	(open_bulletin_mailbox): Open the mailbox in read-only mode
	(set_bulletin_db): Do not try to open the mailbox.

2007-02-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* pop3d/bulletin.c: Fix copyright year
	* pop3d/expire.c, pop3d/top.c: A message is marked for expiration
	after RETR or TOP.
	* pop3d/logindelay.c (check_login_delay): Fix error message
	* pop3d/pop3d.c (pop3d_parse_opt): --expire=0 implies
	--delete-expired.
	
	* doc/texinfo/programs.texi: Document new pop3d options
	* libproto/mbox/mbox.c: Indentation fixes
	* NEWS: Update
	
2007-02-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/sql.c: Implement field mapping and retrieval by field
	names.
	* include/mailutils/mu_auth.h (struct mu_auth_data.quota): New
	field
	(mu_auth_data_destroy): New function
	* include/mailutils/mutil.h (mutil_parse_field_map): New function
	* include/mailutils/sql.h (mu_sql_dispatch.get_field_number): New
	field
	(mu_sql_get_field): New function
	* lib/mu_dbm.c, lib/mu_dbm.h (mu_dbm_datum_free): New function
	* mailbox/mu_auth.c (mu_auth_data_destroy): New function
	* mailbox/mutil.c (mutil_parse_field_map): New function

	* pop3d/bulletin.c: Implement bulletin facility
	* pop3d/Makefile.am: Add bulletin.c
	* pop3d/apop.c (pop3d_apop): Call pop3d_begin_session instead of
	duplicating code from user.c
	* pop3d/pop3d.c (--bulletin-source, --bulletin-db): New options
	* pop3d/pop3d.h (auth_data): New global
	* pop3d/user.c (pop3d_begin_session): New function. Implement
	bulletin facility
	* pop3d/popauth.c (action_list): Call mu_dbm_datum_free

	* readmsg/readmsg.c (main): -h shows `From ' headers as well.
	* readmsg/testsuite/readmsg/test.exp: Adapt for the new readmsg
	behavior
	
	* sql/sql.c, sql/mysql.c, sql/odbc.c, sql/postgres.c: Implement
	retrieval by field name.

2007-02-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/assoc.c: New file. Implementation of associative arrays.
	* mailbox/Makefile.am: Add assoc.c
	* mailbox/errors (MU_ERR_EXISTS): New error code
	* include/mailutils/assoc.h: New file
	* include/mailutils/Makefile.am: Add assoc.h
	* auth/radius.c (mu_radius_authenticate): Remove unused variable
	* include/mailutils/iterator.h (mu_iterator_current_kv): New
	function
	(mu_iterator_set_getitem): Change signature. All references
	updated.
	* mailbox/iterator.c: Likewise
	* libproto/nntp/nntp_iterator.c, libproto/pop/pop3_iterator.c,
	mailbox/list.c: Likewise
	* include/mailutils/types.hin (mu_assoc_t): New data type
	* libproto/include/iterator0.h (getitem): Change signature

	* mail/alias.c: Reimplement using mu_assoc_t
	* mail/mail.h: Include mailutils/assoc.h

	* mailbox/mu_argp.c: Improve diagnostics of errors in rc files.
	
2007-02-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/pipe.c (mail_pipe): Fix handling of cmd variable and
	command argument.
	* mail/send.c (compose_destroy): Do not free outfiles[i], the
	caller is responsible for that.
	* mailbox/amd.c (amd_envelope_date, amd_envelope_sender): If buf
	is NULL, return required length of the buffer.
	* mailbox/argcv.c (argcv_get_n): Prevent coredump if command='"'
	* mailbox/testsuite/Argcv: Test '"' case.
	* mailbox/header.c: Indentation fix
	* readmsg/readmsg.c: Improve compatibility with elm's
	implementation.
	* readmsg/readmsg.h: Add some includes
	* THANKS: Add Neil R. Ormos
	* NEWS: Update

2006-12-31  Wojciech Polak  <polak@gnu.org>

	Updated libmu_cpp to the current API 1.0.
	All method names now begin with a lowercase letter.
	Files affected:

	* libmu_cpp/address.cc, libmu_cpp/filter.cc, libmu_cpp/header.cc,
	libmu_cpp/iterator.cc, libmu_cpp/list.cc, libmu_cpp/mailbox.cc,
	libmu_cpp/mailcap.cc, libmu_cpp/mailer.cc, libmu_cpp/message.cc,
	libmu_cpp/pop3.cc, libmu_cpp/stream.cc, libmu_cpp/url.cc,
	include/mailutils/cpp/address.h, include/mailutils/cpp/error.h,
	include/mailutils/cpp/filter.h, include/mailutils/cpp/header.h,
	include/mailutils/cpp/iterator.h, include/mailutils/cpp/list.h,
	include/mailutils/cpp/mailbox.h, include/mailutils/cpp/mailcap.h,
	include/mailutils/cpp/mailer.h, include/mailutils/cpp/mailutils.h,
	include/mailutils/cpp/message.h, include/mailutils/cpp/pop3.h,
	include/mailutils/cpp/stream.h, include/mailutils/cpp/url.h
	* examples/cpp/addr.cc, examples/cpp/http.cc, examples/cpp/iconv.cc,
	examples/cpp/listop.cc, examples/cpp/mailcap.cc, examples/cpp/murun.cc,
	examples/cpp/sfrom.cc, examples/cpp/url-parse.cc: Updated.
	* libmu_cpp/Makefile.am: Updated.

2006-12-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac, NEWS: Version 1.1.90
	* mail/mail.c (default_setup): Set nullbody and nullbodymsg
	* mail/send.c: Sent empty messages only if nullbody is set
	* mailbox/amd.c (amd_open): Create directory if MU_STREAM_CREAT is
	given.
	* mimeview/mimeview.c (doc): Remove leftover \v
	* doc/texinfo/programs.texi (Mail Variables): Document nullbody
	and nullbodymsg

2006-12-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Require at least version 2.60 of autoconf
	* include/mailutils/stream.h (MU_STREAM_READY_EX): New define
	* mail.local/main.c: Allow to be run from console by a
	non-privileged user (useful with fetchmail)
	* mailbox/mutil.c (mu_fd_wait): Handle MU_STREAM_READY_EX
	* mailbox/sendmail.c (sendmail_send_message): Failing waitpid is
	not an error if errno==ECHILD (the calling program might have
	ignored SIGCHLD). 
	
2006-11-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Fix creation of MU_LTLIBOBJS.  Patch submitted by
	Kevin Buckley and Kenji Miyake
	* include/mailutils/stream.h (MU_STREAM_READY_EX): New define
	* mailbox/mutil.c (mu_fd_wait): Handle MU_STREAM_READY_EX
	* mail.local/main.c

2006-10-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac, NEWS: Raise version number to 1.1
	
	* NEWS: Update
	* mail.remote/mail.remote.c, sieve/sieve.c: Fix docstrings.
	* libproto/imap/folder.c (imap_parse): Preserve the remainder of
	the OK line after '[whatever]' for diagnostic purposes.

	* doc/texinfo/programs.texi: Document changes to mail
	* TODO: Update
	* examples/encode2047.c: new options -o/-t enable/disable special
	interpretation of the octal escapes in the input.
	* mailbox/testsuite/Argcv: Comment out 8-bit test case. Sorry, tcl
	looses badly in handling eight-bit binary data.
	* mailbox/testsuite/Encode2047: Feed input in octal notation and
	use encode2047 \o command to override tcl brokenness.
	* mailbox/testsuite/mailbox/encode2047.exp: Allow test string to
	begin with two back slashes.
	
	* m4/.cvsignore: Update
	* mail/escape.c (escape_sign): Print "-- \n" before the signature
	* mail/mail.h: Remove the declaration of cursor
	* mail/util.c: Allow use of ^ and $ as positioning commands

2006-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Check for large file support and fseeko. Replace
	the latter with fseek if it is not available.
	(MU_GUILE_SITE_DIR,MU_GUILE_SIEVE_MOD_DIR)
	(MU_GUILE_SIEVE_SCRIPTS,MU_GUILE_SIEVE_MOD_DATA): New variables
	* guimb/scm/Makefile.am: Do not try to install anything if Guile
	is not available
	* libmu_scm/Makefile.am: Likewise
	* mailbox/file_stream.c: Use fseeko instead of fseek

2006-10-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Updated
	* doc/texinfo/programs.texi: Updated

	* configure.ac (MU_GUILE_SITE_DIR,MU_GUILE_SIEVE_MOD_DIR)
	(MU_GUILE_SIEVE_SCRIPTS,MU_GUILE_SIEVE_MOD_DATA): New variables to
	clean build without Guile
	* guimb/scm/Makefile.am: Likewise
	* libmu_scm/Makefile.am: Likewise
	* mail/escape.c (escape_sign): Print "-- \n" before the signature.
	* mail/util.c (util_do_command): Implement ^ and $.

2006-10-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Require gettext 0.15
	(check_bdb): Bugfix
	* m4/iconv.m4, m4/intmax.m4, m4/inttypes.m4, m4/nls.m4,
	m4/printf-posix.m4, m4/progtest.m4: Update
	* mail.local/main.c: Formatting fix
	* scripts/gnulib-sync (copy_files): Adjust for gettext 0.15

2006-10-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/texinfo/mu_address.texi: Added to the repository
	* doc/texinfo/mu_body.texi: Likewise
	* doc/texinfo/mu_logger.texi: Likewise
	* doc/texinfo/mu_mailbox.texi: Likewise
	* doc/texinfo/mu_message.texi: Likewise
	* doc/texinfo/mu_mime.texi: Likewise
	* doc/texinfo/mu_scm.texi: Likewise
	* doc/texinfo/.cvsignore: Update

2006-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Add support for Berkeley DB 3 and 4

	* auth/radius.c: Return meaningful error codes.
	* auth/sql.c: Likewise
	* auth/virtual.c: Likewise
	* mailbox/system.c: Likewise

	* sql/mysql.c (octet2hex): Rename to mu_octet_to_hex to avoid name
	clashes with mysql
	
	* config/Makefile.am (mailutils_config_CFLAGS): Define I18NLIBS
	unconditional.
	* examples/Makefile.am (muath): New target

	* include/mailutils/mu_auth.h (enum mu_auth_key_type): New data
	type.
	(mu_get_auth): New function.
	* lib/mu_dbm.c: Support for Berkeley DB 3, 4
	* mailbox/mu_auth.c (mu_get_auth): New function.
	(mu_auth_runlist): Change return code convention: underlying calls
	should return meaningful error codes, not just 0/1.

	* examples/muauth.c: new file
	
2006-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/extensions/vacation.c (vacation_subject): Improve
	yesterday's fix, following Kostas' suggestion.

2006-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/prog.c (sieve_code_command): Avoid dead loop if a tag
	is not given the argument it requires. Improve the diagnostics.
	Bug reported by Kostas Zorbadelos.
	* libsieve/extensions/vacation.c (vacation_subject): Make sure
	subject is not null.

2006-09-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/action.c: Minor fixes
	* libproto/mbox/mboxscan.c (FAST_HEADER): Fix unfolding: Advance p
	only if ':' was found.
	Minor macro style fixes
	* mail/mail.h (struct mail_env_entry): New member v.bool
	* mail/set.c (mail_set): Init dummy to 1
	* mail/util.c: mail_env_entry->set means that the entry was ever
	set.  mail_env_entry->v.bool is the actual value of boolean
	variables.
	* mail.local/main.c: Minor indentation fixes
	* mailbox/mutil.c (mu_string_unfold): Convert \n followed by any
	amount of whitespace to single space.
	* mh/sortm.c: Minor fix

2006-09-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* dotlock/dotlock.c, mail.local/main.c, mail.remote/mail.remote.c,
	mh/ali.c, mh/anno.c, mh/burst.c, mh/comp.c,  mh/fmtcheck.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/install-mh.c, mh/mark.c,
	mh/mhl.c, mh/mhn.c, mh/mhparam.c, mh/mhpath.c, mh/pick.c,
	mh/refile.c, mh/repl.c, mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c,
	mh/sortm.c, mh/whom.c, mimeview/mimeview.c, sieve/sieve.c:
	Reformat argp docstring in accordance with the new argp
	guidelines.  Remove unneeded translators comment. 

	* config/mailutils-config.c, mh/mh.h, mh/mh_getopt.c,
	movemail/movemail.c: Include argp-namefrob.h is no longer needed 

	Update by gnulib-sync. 

	* lib/Makefile.am: Updated
	* m4/gnulib.m4: Updated 
	* mailbox/Makefile.am: Updated
	
	* lib/allocsa.c: Updated
	* lib/allocsa.h: Updated
	* lib/allocsa.valgrind: Updated
	* lib/asprintf.c: Updated
	* lib/error.c: Updated
	* lib/error.h: Updated
	* lib/exit.h: Updated
	* lib/exitfail.c: Updated
	* lib/exitfail.h: Updated
	* lib/getpass.c: Updated
	* lib/getpass.h: Updated
	* lib/mbswidth.c: Updated
	* lib/mbswidth.h: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Updated
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/unsetenv.c: Updated
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Updated
	* lib/xalloc-die.c: Updated
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Updated
	* m4/absolute-header.m4: Added to the repository
	* m4/alloca.m4: Updated
	* m4/allocsa.m4: Updated
	* m4/argp.m4: Updated
	* m4/d-type.m4: Updated
	* m4/eealloc.m4: Updated
	* m4/eoverflow.m4: Updated
	* m4/error.m4: Updated
	* m4/exitfail.m4: Updated
	* m4/extensions.m4: Updated
	* m4/fnmatch.m4: Updated
	* m4/getdelim.m4: Updated
	* m4/getline.m4: Updated
	* m4/getlogin_r.m4: Updated
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Updated
	* m4/glob.m4: Updated
	* m4/intmax_t.m4: Updated
	* m4/inttostr.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/mbchar.m4: Updated
	* m4/mbiter.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbswidth.m4: Updated
	* m4/md5.m4: Updated
	* m4/memchr.m4: Updated
	* m4/mempcpy.m4: Updated
	* m4/minmax.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/regex.m4: Updated
	* m4/setenv.m4: Updated
	* m4/sha1.m4: Updated
	* m4/signed.m4: Updated
	* m4/size_max.m4: Updated
	* m4/snprintf.m4: Updated
	* m4/ssize_t.m4: Updated
	* m4/stat-macros.m4: Updated
	* m4/stdbool.m4: Updated
	* m4/stdint.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/strcase.m4: Updated
	* m4/strchrnul.m4: Updated
	* m4/strdup.m4: Updated
	* m4/strndup.m4: Updated
	* m4/strnlen.m4: Updated
	* m4/strtok_r.m4: Updated
	* m4/sysexits.m4: Updated
	* m4/unistd_h.m4: Updated
	* m4/vasnprintf.m4: Updated
	* m4/vasprintf.m4: Updated
	* m4/vsnprintf.m4: Updated
	* m4/wchar_t.m4: Updated
	* m4/wcwidth.m4: Added to the repository
	* m4/wint_t.m4: Updated
	* m4/xalloc.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xsize.m4: Updated
	* mailbox/alloca.c: Updated
	* mailbox/alloca_.h: Updated
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pin.c: Updated
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Updated
	* mailbox/fnmatch.c: Updated
	* mailbox/fnmatch_.h: Updated
	* mailbox/fnmatch_loop.c: Updated
	* mailbox/getdelim.c: Updated
	* mailbox/getdelim.h: Updated
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getlogin_r.c: Updated
	* mailbox/getlogin_r.h: Updated
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Updated
	* mailbox/getopt_int.h: Updated
	* mailbox/gettext.h: Updated
	* mailbox/glob-libc.h: Updated
	* mailbox/glob.c: Updated
	* mailbox/glob_.h: Updated
	* mailbox/imaxtostr.c: Updated
	* mailbox/intprops.h: Updated
	* mailbox/inttostr.c: Updated
	* mailbox/inttostr.h: Updated
	* mailbox/malloc.c: Updated
	* mailbox/mbchar.c: Updated
	* mailbox/mbchar.h: Updated
	* mailbox/mbuiter.h: Updated
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/memchr.c: Updated
	* mailbox/mempcpy.c: Updated
	* mailbox/mempcpy.h: Updated
	* mailbox/minmax.h: Updated
	* mailbox/offtostr.c: Updated
	* mailbox/printf-args.c: Updated
	* mailbox/printf-args.h: Updated
	* mailbox/printf-parse.c: Updated
	* mailbox/printf-parse.h: Updated
	* mailbox/regcomp.c: Updated
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Updated
	* mailbox/regex_internal.c: Updated
	* mailbox/regex_internal.h: Updated
	* mailbox/regexec.c: Updated
	* mailbox/sha1.c: Updated
	* mailbox/sha1.h: Updated
	* mailbox/size_max.h: Updated
	* mailbox/stat-macros.h: Updated
	* mailbox/stdbool_.h: Updated
	* mailbox/stdint_.h: Updated
	* mailbox/strcase.h: Updated
	* mailbox/strcasecmp.c: Updated
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Updated
	* mailbox/strdup.c: Updated
	* mailbox/strdup.h: Updated
	* mailbox/strncasecmp.c: Updated
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Updated
	* mailbox/strnlen.c: Updated
	* mailbox/strnlen.h: Updated
	* mailbox/strnlen1.c: Updated
	* mailbox/strnlen1.h: Updated
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Updated
	* mailbox/sysexit_.h: Updated
	* mailbox/umaxtostr.c: Updated
	* mailbox/vasnprintf.c: Updated
	* mailbox/vasnprintf.h: Updated
	* mailbox/vsnprintf.c: Updated
	* mailbox/vsnprintf.h: Updated
	* mailbox/wcwidth.h: Added to the repository
	* mailbox/xsize.h: Updated

2006-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* THANKS: Add Damon Harper

	Implement changes proposed by Damon Harper:
	
	* comsat/action.c (act_getline): Change return type to
	unsigned. Return actual number of input lines processed or 0 on
	failure (either I/O, or memory allocation or EOF).
	(action_echo): Rewritten to use shell-like syntax
	(run_user_action): Rewritten main loop to make it cleaner. In
	particular, expand arguments after word splitting. Use new echo
	semantics.
	
	* mail/table.c (mail_escape_table): Add ~x

2006-08-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/mailbox.c: Include alloca.h

2006-07-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/page.c (top_of_page,cursor,page_map,page_size)
	(page_avail,page_map): Hide as static
	(fill_page_map): Reset cursor if it points past the last
	message.
	* mail/testsuite/mail/write.exp: Add new testcase 

2006-07-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Raise version number to 1.0.1
	* NEWS: Version 1.0.1
	* lib/mailcap.c (expand_string, run_test, run_mailcap): Fix memory
	allocation bugs. Place all temporary strings in the obstack. 

	Fix coredump on `cd x<TAB>' in mail. Bug reported by
	Daniel Kahn Gillmor.
	
	* include/mailutils/folder.h (mu_folder_create_from_record): New
	function.
	* mailbox/folder.c (mu_folder_create_from_record): New
	function.
	(mu_folder_create): Interface to mu_folder_create_from_record
	* mailbox/mutil.c (mu_scheme_autodetect_p): Return true if scheme
	is the name of an existing file or directory.
	
	* mail/mailline.c (file_generator): Remove leading pathlen
	characters from the returned names.
	
	* libproto/mbox/folder.c: Minor formatting changes
	* mail/mail.c: Likewise

	* THANKS: Add Daniel Kahn Gillmor
	
2006-07-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (AC_CHECK_FUNCS): Add setlocale

2006-07-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/rfc/rfc2231.txt: New file
	* doc/rfc/Makefile.am (EXTRA_DIST): Add rfc2231.txt
	* mh/TODO: Update

	Sources at this point are tagged rel-1_0 

	* NEWS: Update
	* configure.ac: Raise version number to 1.0
	* direntry: Update for 1.0
	* doc/texinfo/Makefile.am: Removed hack introduced on
	2006-06-15. It triggered unnecessary doc updates.
	* scripts/guile-1.6/guile-doc-snarf (snarf_doc): Do not use \n in
	the replacement part of a sed expression for the sake of older
	seds. Use a more sophisticated approach with changing hold/pattern
	spaces instead.
	* scripts/guile-1.6/guile-doc-snarf.awk: Adopt for the new output
	format of snarf_doc 

2006-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* gnulib.modules (mailutils): Add sha1
	* lib/Makefile.am: Update
	* mailbox/Makefile.am: Update
	* m4/gnulib.m4: Update
	* sql/mysql.c: Implement verification against mysql v4 passwords. 
	
	Update by gnulib-sync. 

	* lib/allocsa.c: Updated
	* lib/allocsa.h: Updated
	* lib/allocsa.valgrind: Updated
	* lib/asprintf.c: Updated
	* lib/error.c: Updated
	* lib/error.h: Updated
	* lib/exit.h: Updated
	* lib/exitfail.c: Updated
	* lib/exitfail.h: Updated
	* lib/getpass.c: Updated
	* lib/getpass.h: Updated
	* lib/mbswidth.c: Updated
	* lib/mbswidth.h: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Updated
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/unsetenv.c: Updated
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Updated
	* lib/xalloc-die.c: Updated
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Updated
	* m4/alloca.m4: Updated
	* m4/allocsa.m4: Updated
	* m4/argp.m4: Updated
	* m4/d-type.m4: Updated
	* m4/eealloc.m4: Updated
	* m4/eoverflow.m4: Updated
	* m4/error.m4: Updated
	* m4/exitfail.m4: Updated
	* m4/extensions.m4: Updated
	* m4/fnmatch.m4: Updated
	* m4/full-header-path.m4: Added to the repository
	* m4/getdelim.m4: Updated
	* m4/getline.m4: Updated
	* m4/getlogin_r.m4: Updated
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Updated
	* m4/glob.m4: Updated
	* m4/intmax_t.m4: Updated
	* m4/inttostr.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/mbchar.m4: Updated
	* m4/mbiter.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbswidth.m4: Updated
	* m4/md5.m4: Updated
	* m4/memchr.m4: Updated
	* m4/mempcpy.m4: Updated
	* m4/minmax.m4: Updated
	* m4/obstack.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/regex.m4: Updated
	* m4/restrict.m4: Updated
	* m4/setenv.m4: Updated
	* m4/sha1.m4: Added to the repository
	* m4/signed.m4: Updated
	* m4/size_max.m4: Updated
	* m4/snprintf.m4: Updated
	* m4/ssize_t.m4: Updated
	* m4/stat-macros.m4: Updated
	* m4/stdbool.m4: Updated
	* m4/stdint.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/strcase.m4: Updated
	* m4/strchrnul.m4: Updated
	* m4/strdup.m4: Updated
	* m4/strerror_r.m4: Updated
	* m4/strndup.m4: Updated
	* m4/strnlen.m4: Updated
	* m4/strtok_r.m4: Updated
	* m4/sysexits.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/unistd_h.m4: Added to the repository
	* m4/vasnprintf.m4: Updated
	* m4/vasprintf.m4: Updated
	* m4/vsnprintf.m4: Updated
	* m4/wchar_t.m4: Updated
	* m4/wint_t.m4: Updated
	* m4/xalloc.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xsize.m4: Updated
	* mailbox/alloca.c: Updated
	* mailbox/alloca_.h: Updated
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pin.c: Updated
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Updated
	* mailbox/fnmatch.c: Updated
	* mailbox/fnmatch_.h: Updated
	* mailbox/fnmatch_loop.c: Updated
	* mailbox/getdelim.c: Updated
	* mailbox/getdelim.h: Updated
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getlogin_r.c: Updated
	* mailbox/getlogin_r.h: Updated
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Updated
	* mailbox/getopt_int.h: Updated
	* mailbox/gettext.h: Updated
	* mailbox/glob-libc.h: Updated
	* mailbox/glob.c: Updated
	* mailbox/glob_.h: Updated
	* mailbox/imaxtostr.c: Updated
	* mailbox/intprops.h: Updated
	* mailbox/inttostr.c: Updated
	* mailbox/inttostr.h: Updated
	* mailbox/malloc.c: Updated
	* mailbox/mbchar.c: Updated
	* mailbox/mbchar.h: Updated
	* mailbox/mbuiter.h: Updated
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/memchr.c: Updated
	* mailbox/mempcpy.c: Updated
	* mailbox/mempcpy.h: Updated
	* mailbox/minmax.h: Updated
	* mailbox/offtostr.c: Updated
	* mailbox/printf-args.c: Updated
	* mailbox/printf-args.h: Updated
	* mailbox/printf-parse.c: Updated
	* mailbox/printf-parse.h: Updated
	* mailbox/regcomp.c: Updated
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Updated
	* mailbox/regex_internal.c: Updated
	* mailbox/regex_internal.h: Updated
	* mailbox/regexec.c: Updated
	* mailbox/sha1.c: Added to the repository
	* mailbox/sha1.h: Added to the repository
	* mailbox/size_max.h: Updated
	* mailbox/stat-macros.h: Updated
	* mailbox/stdbool_.h: Updated
	* mailbox/stdint_.h: Updated
	* mailbox/strcase.h: Updated
	* mailbox/strcasecmp.c: Updated
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Updated
	* mailbox/strdup.c: Updated
	* mailbox/strdup.h: Updated
	* mailbox/strncasecmp.c: Updated
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Updated
	* mailbox/strnlen.c: Updated
	* mailbox/strnlen.h: Updated
	* mailbox/strnlen1.c: Updated
	* mailbox/strnlen1.h: Updated
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Updated
	* mailbox/sysexit_.h: Updated
	* mailbox/umaxtostr.c: Updated
	* mailbox/vasnprintf.c: Updated
	* mailbox/vasnprintf.h: Updated
	* mailbox/vsnprintf.c: Updated
	* mailbox/vsnprintf.h: Updated
	* mailbox/xsize.h: Updated

	End of update

	* auth/sql.c: Minor fixes to get rid of the spurious gcc warnings.
	* libsieve/actions.c: Likewise
	* libsieve/prog.c: Likewise
	* libsieve/sieve.h: Likewise
	* libsieve/sieve.l: Likewise
	* libsieve/extensions/vacation.c: Likewise
	* mail/escape.c: Likewise
	* mailbox/argcv.c: Likewise
	* mailbox/file_stream.c: Likewise
	* mailbox/munre.c: Likewise
	* mailbox/mutil.c: Likewise
	* mh/mh_alias.l: Likewise
	* mh/mh_alias.y: Likewise
	* mh/mh_init.c: Likewise
	* mh/mh_whatnow.c: Likewise
	* mh/mh_whom.c: Likewise
	* mh/mhn.c: Likewise
	* sql/sql.c: Likewise
	
	* include/mailutils/header.h (MU_HEADER_DCC): New macro. Dcc is a
	header traditionally used by MH
	* include/mailutils/mutil.h (mu_unre_set_regex): First argument is
	const.
	* lib/daemon.c: Include stdlib.h
	* lib/mailcap.c: All functions, except display_stream_mailcap, are
	static.
	* libmu_scm/mu_message.c (struct mu_message.needs_destroy): New
	member
	(mu_scm_message_mark): Raise needs_destroy if the message has null
	owner.
	(mu_scm_message_free): Do not attempt to reference msg, unless its
	needs_destroy is set.
	(mu_scm_message_create): Initialize needs_destroy to 0.
	* libsieve/extensions/moderator.c (moderator_action): set deleted
	flag manually, do not use undeclared sieve_mark_deleted.
	* mailbox/amd.c (amd_close): Unlock the monitor before returning

	* mh/send.c (fix_fcc): Minor fix
	(fix_dcc): New function. Rewrites MH Dcc as standard Bcc header.
	(_action_send): Call fix_dcc

	* sql/mysql.c (mu_check_mysql_scrambled_password): Use
	get_salt_from_scrambled.
	
2006-06-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/filter_trans.c (trans_read): Break the loop if both
	transcoder and read return 0 bytes. This is necessary to correctly
	handle unfinished input strings
	* mailbox/testsuite/Decode2047: New testcase: an example of
	unfinished input.

	* configure.ac: Raise version number to 0.6.95
	* NEWS: Update

2006-06-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix generation of libmu_scm documentation. 
	
	* doc/texinfo/Makefile.am (INCFILES): Add mu_*.texi files
	* doc/texinfo/libmu_scm.texi: Include snarfed files.
	* libmu_scm/Makefile.am (GUILE_BUILT_SOURCES_X)
	(DISTCLEANFILES): Add guile-procedures.texi
	(guile-procedures.texi): New rule
	* libmu_scm/mailutils.scm.in: Use documentation module. Update
	documentation-files to make sure MU docs are found.
	* libmu_scm/mu_address.c, libmu_scm/mu_logger.c,
	libmu_scm/mu_mailbox.c, libmu_scm/mu_message.c,
	libmu_scm/mu_mime.c, libmu_scm/mu_scm.c,
	libmu_scm/mu_util.c: Update docstrings
	* scripts/guile-1.6/guile-doc-snarf: Fix docfile generation
	* scripts/guile-1.6/guile-doc-snarf.awk: Likewise
	* libmu_scm/.cvsignore, doc/texinfo/.cvsignore,
	include/mailutils/.cvsignore: Update
	* libproto/.cvsignore: New file

2006-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/tcp.c (mu_tcp_stream_create_with_source_ip):
	(mu_tcp_stream_create_with_source_host): New functions
	 * include/mailutils/stream.h: Likewise

	* mailbox/mailbox.c (mailbox_folder_create): Bugfix,
	strncmp(fname...
	* mailbox/registrar.c: Stop iterating when the matching record was
	found. 

2006-06-10  Thomas Seeling <thomas.seeling@gmx.net> (trivial changes)

	* mailbox/registrar.c (mu_registrar_record): Tolerate NULL
	argument. 

2006-05-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* guimb/main.c: Remove leftover optind usage. Thanks Jay
	Sulzberger <jays@panix.com> for reporting.

2006-05-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	* m4/mu_libobj.m4 (MU_REPLACE_FUNCS): Remove erroneous AC_DEFINE
	* examples/encode2047.c: Allow to change encoding and charset
	at runtime.
	* mailbox/filter_trans.c (trans_read): Bugfix. Do not break the
	loop if there are characters left in the buffer.
	* mailbox/testsuite/Makefile.am (EXTRA_DIST): Add Encode2047
	* mailbox/testsuite/RFC2047: Rename to ...
	* mailbox/testsuite/Decode2047: ... this
	* mailbox/testsuite/Encode2047: New file
	* mailbox/testsuite/mailbox/DISTFILES: Update
	* mailbox/testsuite/mailbox/rfc2047.exp: Rename to ...
	* mailbox/testsuite/mailbox/decode2047.exp: ... this
	* mailbox/testsuite/mailbox/encode2047.exp: New test

2006-05-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libproto/mbox/mbox.c (mbox_is_updated): Return 1 (not updated)
	if unable to measure stream size.
	* mail/quit.c (mail_mbox_close): Initialize held_count to 0
	* mailbox/header.c (mu_header_set_value): Fix length calculation.

2006-05-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/folder.c (main): Minor fix

	* mailbox/smtp.c (smtp_send_message): Avoid generating spurious
	newline when skipping an Fcc header. 

2006-05-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/mailer.c (save_fcc): Handle comma-delimited folder lists
	in Fcc lines.
	* mh/Makefile.am: Add mh_format.h
	* mh/mh_format.h: New file
	* mh/TODO: Update
	* mh/mh_format.c: Move declarations of strobj functions to
	mh_format.h
	* mh/mh_init.c (mh_file_to_message): Fix a memory leak
	* mh/mh_whatnow.c (mh_whatnow): consult VISUAL and EDITOR
	environment variables for the default editor
	* mh/repl.c (opt_handler, make_draft): Handle --fcc
	* mh/rmf.c (main): Fix coredump if invoked with no options.
	* mh/send.c (check_file): Change format of the mesg_list entries.
	(fix_fcc): Correctly handle comma-delimited lists of folders.
	(backup_file): New function.
	(_action_send): Rename draft file after sending it.
	* NEWS: Update.
	
2006-05-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/send.c (_action_send): Use %z instead of %Z to form Date
	header.
	
	* NEWS: Update
	* doc/texinfo/mu-mh.texi: Minor fix
	* mh/ali.c, mh/burst.c, mh/comp.c, mh/compcommon.c, mh/fmtcheck.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/mark.c, mh/mh_alias.l,
	mh/mh_alias.y, mh/mh_argp.c, mh/mh_ctx.c, mh/mh_fmtgram.y,
	mh/mh_format.c, mh/mh_init.c, mh/mh_list.c, mh/mh_msgset.c,
	mh/mh_stream.c, mh/mh_whatnow.c, mh/mh_whom.c, mh/mhl.c, mh/mhn.c,
	mh/pick.c, mh/pick.y, mh/refile.c, mh/repl.c, mh/rmf.c, mh/scan.c,
	mh/send.c, mh/sortm.c: Remove mh_error function, use mu_error
	instead.  

	* mh/folder.c: Improve compatibility with nmh: if a folder is
	specified along with -all, set the recursion depth to 2 (unless
	-recurse has also been given).
	(print_header,print_total): Default to -1
	(recurse): Removed in favor of max_depth.
	(has_folder,max_depth): New variable.
	(OPTION_IS_SET): New macro.
	(opt_handler): Updated for new variable usage.
	(_scan): Depth argument is now size_t
	Take into account max_depth.
	(action_print): Use OPTION_IS_SET with the three-state variables
	(main): Properly set/clear show_all and max_depth.

2006-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/folder.c (opt_handler): Allow -noheader and -nototal to be
	used with -all.
	* mh/mh_init.c (mh_error): Moved from mh_error.c
	* mh/Makefile.am (libmh_a_SOURCES): Remove mh_error.c
	* mh/mh_error.c: Removed

2006-05-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/folder.c (_scan): Bugfix
	* mh/mh.h (mh_makedir): New function
	* mh/mh_init.c (mh_makedir): New function
	(mh_check_folder): Use mh_makedir to create directories (or
	directory hierarchies).
	* NEWS: Update
	
2006-05-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/folder.c (_scan): Test for existence of the folder even if
	--fast was given. Exit with code 1 if the folder does not exist.

2006-04-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/texinfo/mu-mh.texi: New file
	* doc/texinfo/programs.texi: Update
	* doc/texinfo/Makefile.am (mailutils_TEXINFOS): Add mu-mh.texi
	(info_TEXINFOS): Remove muint.texi

	* mh/README: Removed. Documentation moved to its proper place in
	mailutils.info.

	* Makefile.am (SUBDIRS): Remove intl
	* configure.ac: Require external gettext
	Always define GNULIB_ARGP_EXTERN_BASENAME
	* config/Makefile.am (AM_CPPFLAGS): Removed
	* mailbox/Makefile.am: Likewise
	* movemail/Makefile.am: Likewise
	* include/mailutils/address.h (mu_address_set_personal)
	(mu_address_set_comments): New functions
	* mailbox/address.c: Likewise
	* mailbox/sendmail.c: Add extra debug info
	* mh/mh.h: Include <argp-namefrob.h>
	* mh/mh_getopt.c: Likewise
	* mh/mh_alias.y (mh_alias_get_internal): Set `inclusive'
	only if the alias matches
	(mh_alias_get_address): Initialize incl
	Use mu_address_set_personal to handle alias inclusion
	* mh/mh_whom.c (mh_alias_expand): Initialize incl
	
2006-04-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS, README: Updated

	* configure.ac: Minor change
	* guimb/scm/Makefile.am (sieve.scm): Use auxiliary sed script to
	create.
	(pkgdata_DATA): Rename to sievemod_DATA
	* guimb/scm/redirect.scm: Use handle-exception where necessary
	* guimb/scm/reject.scm: Likewise.
	* guimb/scm/vacation.scm: Likewise.
	
	* guimb/scm/sieve-core.scm: Rewrite as module. Change
	initialization of the syntax tables.
	(handle-exception,sieve-verbose-print): New macro
	(action-fileinto,action-keep,action-stop,action-discard): Produce
	verbose diagnostics if required.
	(sieve-run): Take thunk as an argument. Report implicit keep if it
	returns #t and the verbose mode is on.
	(sieve-main): Take thunk as an argument.
	* guimb/scm/sieve.scm.in: Load sieve-core as a module.
	Do not use make-shared-substring. Change
	initialization of the syntax tables. Construct the code so, that
	it returns #t if implicit keep is performed, pass the code as an
	argument to sieve-main.
	Fix handling of command line arguments when executing the compiled
	code (call without -o option).
	(lex-error,syntax-error): Rewritten
	(sieve-preprocess-arguments): Correctly handle #:comparator
	tags
	(sieve-parse-arguments): Fix handling of keywords (did not work with
	Guile 1.6.x)
	(sieve-parse-test): Bugfix 1: Some tests are not procedures.
	Bugfix 2: Do not ignore last test in allof, anyof constructs
	(sieve-save-program): Rewrite using with-output-to-file
	(grammar): New option --verbose.

	* include/mailutils/guile.h: Update
	* libmu_scm/Makefile.am (pkgdata_DATA): Rename to site_DATA
	* libmu_scm/mailutils.scm.in: Change module definition

	* libmu_scm/mu_message.c: Throw exceptions on errors.
	* libmu_scm/mu_scm.c (mu-strerror): New function
	* libmu_scm/mu_scm.h: Include mailutils/errno.h
	* m4/guile.m4: New option --with-guiledir. AC_SUBST all GUILE_.*
	variables. Use $GUILE_CONFIG instead of guile-config.
	
2006-04-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	* guimb/scm/sieve-core.scm: Always load mailutils module
	(sieve-main): Use (mu-mail-directory) instead of mu-path-maildir.
	* include/mailutils/guile.h: Add support for Guile 1.8
	(mu_scm_error): New function
	* include/mailutils/mutil.h (mu_spawnvp): Change type of the 2nd
	argument.
	* libmu_scm/mailutils.scm.in (mu-libs): Use "libmailutils" instead
	of "libmailbox"
	* libmu_scm/mu_address.c: Rewritten using Guile 1.8 API.
	Throw 'mailutils-error instead of returning #f on error.
	* libmu_scm/mu_body.c: Likewise
	* libmu_scm/mu_logger.c: Likewise
	* libmu_scm/mu_mailbox.c: Likewise
	* libmu_scm/mu_message.c: Likewise
	* libmu_scm/mu_mime.c: Likewise
	* libmu_scm/mu_port.c: Likewise
	* libmu_scm/mu_scm.c: Likewise
	* libmu_scm/mu_util.c: Likewise

	* libproto/imap/mbox.c (imap_envelope_date): bugfix
	* mailbox/amd.c [WITH_PTHREAD][HAVE_PTHREAD_H]: Fix typo
	* mailbox/locker.c (lock_external): Minor fix
	* mailbox/mutil.c (mu_spawnvp): Change type of the 2nd argument.

2006-04-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update
	* gnulib.modules (muaux): Remove xstrtol
	* libproto/pop/mbox.c (parse_answer0,parse_answer1): Use strtoul
	instead of strtoumax. This is a temporary change.
	* m4/gnulib.m4: Remove gl_XSTRTOL.
	* m4/xstrtol.m4: Removed
	* lib/xstrtol.h: Removed
	* lib/xstrtol.c: Removed
	* lib/xstrtoul.c: Removed

	* NEWS: Update
	* README: Document --with-berkeley-db option
	* configure.ac (--with-berkeley-db): New option
	(--with-db2): Deprecated. Remove from the help list.
	Raise version number to 0.6.94
	
	* lib/mu_dbm.c: Add support for Berkeley DB >= 3
	* lib/mu_dbm.h: Likewise
	* pop3d/popauth.c: Likewise
	* mailbox/nls.c: Include stdlib.h

	* doc/texinfo/address.texi, doc/texinfo/attribute.texi,
	doc/texinfo/auth.texi, doc/texinfo/body.texi,
	doc/texinfo/envelope.texi, doc/texinfo/folder.texi,
	doc/texinfo/framework.texi, doc/texinfo/headers.texi,
	doc/texinfo/imap4.texi, doc/texinfo/iterator.texi,
	doc/texinfo/libsieve.texi, doc/texinfo/locker.texi,
	doc/texinfo/mailbox.texi, doc/texinfo/mailcap.texi,
	doc/texinfo/mailer.texi, doc/texinfo/mbox.texi,
	doc/texinfo/message.texi, doc/texinfo/mime.texi,
	doc/texinfo/nntp.texi, doc/texinfo/parse822.texi,
	doc/texinfo/pop3.texi, doc/texinfo/smtp.texi,
	doc/texinfo/stream.texi, doc/texinfo/url.texi: Reflect namespace
	changes.

2006-04-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* THANKS: Add Willem Jaap Zwart
	* NEWS: Update
	* imap4d/imap4d.h (is_atom): New function
	* imap4d/list.c (print_file,print_dir): Rewrite using an
	auxiliary function. Make sure the string is properly quoted if it
	is not a valid atom.
	* imap4d/util.c (is_atom): New function.
	* libproto/imap/folder.c (list_copy): Do nothing if src is NULL.
	(imap_list): Use mu_argcv_get instead of strtok_r to parse last
	two tokens of the reply, so that file names containing white space
	are processed.
	* mailbox/argcv.c: Fix indentation.

2006-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/append.c, imap4d/fetch.c, libproto/imap/mbox.c,
	libproto/mbox/mbox.c, libsieve/actions.c, mailbox/message.c,
	mailbox/message_stream.c, mh/mh_init.c, mh/send.c: Use mu_strftime
	* include/mailutils/envelope.h (MU_ENVELOPE_DATE_FORMAT)
	(MU_ENVELOPE_DATE_LENGTH): New defines
	* include/mailutils/mutil.h (mu_strftime): New function
	* include/mailutils/nls.h (mu_set_locale,mu_restore_locale): New
	functions
	* mailbox/mutil.c (mu_strftime): New function
	* mailbox/nls.c (mu_locale_set): New variable
	(mu_set_locale,mu_restore_locale): New functions
	(mu_init_nls): Use mu_set_locale. Store its return in mu_locale_set.

	* scripts/generr.awk: Report error if no output lines were
	produced. 
	
2006-03-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* Makefile.am (SUBDIRS): Add libproto
	* configure.ac: Define MU_LIB_.* variables
	(MU_AUTHLIBS): Initialize to empty value.
	(AC_CONFIG_FILES): Add libproto Makefiles

	* libproto: New directory
	* libproto/Makefile.am: New file
	* libproto/imap: New directory
	* libproto/include: New directory
	* libproto/maildir: New directory
	* libproto/mbox: New directory
	* libproto/mh: New directory
	* libproto/nntp: New directory
	* libproto/pop: New directory

	* mailbox/imap/folder.c, mailbox/imap/mbox.c, mailbox/imap/url.c,
	mailbox/imap/Makefile.am, mailbox/imap/.cvsignore: Move to
	libproto/imap 

	* mailbox/include/address0.h, mailbox/include/amd.h,
	mailbox/include/attribute0.h, mailbox/include/auth0.h,
	mailbox/include/body0.h, mailbox/include/debug0.h,
	mailbox/include/envelope0.h, mailbox/include/filter0.h,
	mailbox/include/folder0.h, mailbox/include/header0.h,
	mailbox/include/imap0.h, mailbox/include/iterator0.h,
	mailbox/include/list0.h, mailbox/include/mailbox0.h,
	mailbox/include/mailer0.h, mailbox/include/message0.h,
	mailbox/include/mime0.h, mailbox/include/monitor0.h,
	mailbox/include/observer0.h, mailbox/include/property0.h,
	mailbox/include/registrar0.h, mailbox/include/stream0.h,
	mailbox/include/url0.h, mailbox/include/Makefile.am,
	mailbox/include/.cvsignore: Move to libproto/include 

	* mailbox/maildir/folder.c, mailbox/maildir/maildir.h,
	mailbox/maildir/mbox.c, mailbox/maildir/Makefile.am,
	mailbox/maildir/.cvsignore: Move to libproto/maildir

	* mailbox/mbox/folder.c, mailbox/mbox/mbox.c,
	mailbox/mbox/mbox0.h, mailbox/mbox/mboxscan.c, mailbox/mbox/url.c,
	mailbox/mbox/Makefile.am, mailbox/mbox/.cvsignore: Move to
	libproto/mbox. 
	
	* mailbox/mh/folder.c, mailbox/mh/mbox.c, mailbox/mh/Makefile.am,
	mailbox/mh/.cvsignore: Move to libproto/mh

	* mailbox/nntp/folder.c, mailbox/nntp/mbox.c,
	mailbox/nntp/nntp0.h, mailbox/nntp/nntp_article.c,
	mailbox/nntp/nntp_body.c, mailbox/nntp/nntp_carrier.c,
	mailbox/nntp/nntp_connect.c, mailbox/nntp/nntp_create.c,
	mailbox/nntp/nntp_date.c, mailbox/nntp/nntp_debug.c,
	mailbox/nntp/nntp_destroy.c, mailbox/nntp/nntp_disconnect.c,
	mailbox/nntp/nntp_group.c, mailbox/nntp/nntp_head.c,
	mailbox/nntp/nntp_help.c, mailbox/nntp/nntp_ihave.c,
	mailbox/nntp/nntp_iterator.c, mailbox/nntp/nntp_last.c,
	mailbox/nntp/nntp_list_active.c,
	mailbox/nntp/nntp_list_distribpats.c,
	mailbox/nntp/nntp_list_distributions.c,
	mailbox/nntp/nntp_list_extensions.c,
	mailbox/nntp/nntp_list_newsgroups.c,
	mailbox/nntp/nntp_list_times.c, mailbox/nntp/nntp_mode_reader.c,
	mailbox/nntp/nntp_newgroups.c, mailbox/nntp/nntp_newnews.c,
	mailbox/nntp/nntp_next.c, mailbox/nntp/nntp_post.c,
	mailbox/nntp/nntp_quit.c, mailbox/nntp/nntp_readline.c,
	mailbox/nntp/nntp_response.c, mailbox/nntp/nntp_sendline.c,
	mailbox/nntp/nntp_stat.c, mailbox/nntp/nntp_stream.c,
	mailbox/nntp/nntp_timeout.c, mailbox/nntp/url.c,
	mailbox/nntp/Makefile.am, mailbox/nntp/.cvsignore: Move to
	libproto/nntp 

	* mailbox/pop/folder.c, mailbox/pop/mbox.c,
	mailbox/pop/pop3_apop.c, mailbox/pop/pop3_capa.c,
	mailbox/pop/pop3_carrier.c, mailbox/pop/pop3_connect.c,
	mailbox/pop/pop3_create.c, mailbox/pop/pop3_debug.c,
	mailbox/pop/pop3_dele.c, mailbox/pop/pop3_destroy.c,
	mailbox/pop/pop3_disconnect.c, mailbox/pop/pop3_iterator.c,
	mailbox/pop/pop3_list.c, mailbox/pop/pop3_lista.c,
	mailbox/pop/pop3_noop.c, mailbox/pop/pop3_pass.c,
	mailbox/pop/pop3_quit.c, mailbox/pop/pop3_readline.c,
	mailbox/pop/pop3_response.c, mailbox/pop/pop3_retr.c,
	mailbox/pop/pop3_rset.c, mailbox/pop/pop3_sendline.c,
	mailbox/pop/pop3_stat.c, mailbox/pop/pop3_stls.c,
	mailbox/pop/pop3_stream.c, mailbox/pop/pop3_timeout.c,
	mailbox/pop/pop3_top.c, mailbox/pop/pop3_uidl.c,
	mailbox/pop/pop3_uidla.c, mailbox/pop/pop3_user.c,
	mailbox/pop/url.c, mailbox/pop/Makefile.am,
	mailbox/pop/.cvsignore: Move to libproto/pop. 
	
	* auth/Makefile.am, comsat/Makefile.am, config/Makefile.am,
	dotlock/Makefile.am, examples/Makefile.am, frm/Makefile.am,
	guimb/Makefile.am, imap4d/Makefile.am, libmu_scm/Makefile.am,
	libsieve/Makefile.am, libsieve/extensions/Makefile.am,
	mail/Makefile.am, mail.local/Makefile.am, mail.remote/Makefile.am,
	mailbox/Makefile.am, mapi/Makefile.am, messages/Makefile.am,
	mh/Makefile.am, mimeview/Makefile.am, movemail/Makefile.am,
	pop3d/Makefile.am, readmsg/Makefile.am, sieve/Makefile.am: Use
	MU_LIB_.* variables instead of referring to the libraries by their
	relative paths. 

	* po/POTFILES.in: Update
	
	* mailbox/amd.c: Protect definition of _XOPEN_SOURCE by an extra
	ifdef.
	* libsieve/extensions/vacation.c (regex_comparator): Fix error
	diagnostics
	* mail/mail.h (cursor): Fix declaration

	* mailbox/Makefile.am: Fix INCLUDES and SUBDIRS
	* mailbox/filter_trans.c (base64_encode): Split into two
	functions.
	(B_encode): New function for RFC 2047 encoding
	* mailbox/rfc2047.c: Minor indentation fix
	* mh/mhn.c (finish_msg): Make sure part header is preserved.

2006-02-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/Makefile.am, libmu_cpp/Makefile.am, libmu_scm/Makefile.am,
	mailbox/imap/Makefile.am, mailbox/maildir/Makefile.am,
	mailbox/mbox/Makefile.am, mailbox/mh/Makefile.am,
	mailbox/nntp/Makefile.am, mailbox/pop/Makefile.am,
	mapi/Makefile.am: Set version info  
	* mailbox/Makefile.am: Compile libmailutils first, then recurse
	into the subdirs.
	* m4/guile.m4: Use improved sed expression, proposed by Thien-Thi
	Nguyen. 
	
2006-02-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Update

	* mh/mhn.c (split_args): New function
	(_message_is_external_body ): Use split_args to parse
	additional arguments
	(mhn_edit): Fix invocation of edit_modify (was not getting
	additional arguments after ';')
	(parse_header_directive): New function
	(mhn_header): New function
	(mhn_compose): Bugfix: initialize env.line
	Call mhn_header to optionally encode Subject line

	* mailbox/rfc2047.c (mu_rfc2047_encode): Return EINVAL if any of
	the arguments is NULL.

	* frm/common.c (get_personal): Fix coredump on empty From: headers.

2006-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/message_stream.c (restore_envelope): Restore line
	accidentally deleted with the recent changes.
	
2006-02-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix displaying source locations in Sieve action logs:
	
	* libsieve/prog.c (sieve_change_source)
	(sieve_check_source_changed): New functions
	(sieve_code_action,sieve_code_test): Call
	sieve_check_source_changed.
	* libsieve/sieve.h (sieve_change_source): New function
	* libsieve/sieve.l (push_source,pop_source): Do not code
	SOURCE instruction directly, use sieve_change_source() to let the
	code generator know it should do it.

	Fix build on platforms without program_invocation_short_name:

	* mailbox/Makefile.am (AM_CFLAGS): Use AM_CPPFLAGS instead.
	* config/Makefile.am, movemail/Makefile.am (AM_CPPFLAGS): Add
	GNULIB_ARGP_EXTERN_BASENAME=1
	* config/mailutils-config.c, movemail/movemail.c: Include
	argp-namefrob.h 

2006-02-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/stream.c (mu_stream_getline)
	(mu_stream_sequential_getline): New function

	* mailbox/message_stream.c (_mu_rfc822_open, restore_envelope): Use
	mu_stream_getline

	* include/mailutils/stream.h (mu_stream_getline)
	(mu_stream_sequential_getline): New function

	* include/mailutils/libsieve.h (mu_sieve_machine_inherit_report):
	Replace by mu_sieve_machine_inherit
	* libsieve/sieve.y: Likewise
	* libsieve/extensions/moderator.c: Likewise.
	* libsieve/extensions/vacation.c: Fix the leading comment.
	* mailbox/argp-namefrob.h: Restored changes accidentally lost in
	gnulib.

2006-02-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Raise version number to 0.6.93
	* include/mailutils/libsieve.h (mu_sieve_machine_dup)
	(mu_sieve_machine_inherit_report): New functions
	* include/mailutils/message.h (mu_stream_to_message): New
	function.
	* include/mailutils/mutil.h (mu_mh_delim): New function
	* libsieve/actions.c: Minor stylistic changes
	* libsieve/require.c: Likewise
	* libsieve/sieve.h: Likewise
	* libsieve/sieve.y (mu_sieve_machine_inherit_report)
	(mu_sieve_machine_dup): New functions
	* libsieve/util.c: Minor stylistic changes
	* libsieve/extensions/moderator.c: New file. Automatic moderator
	for Mailman-driven mailing lists.
	* libsieve/extensions/Makefile.am: Add moderator module
	
	* mailbox/message_stream.c: New file. Derived from mh/mh_stream.c
	* mailbox/Makefile.am: Add message_stream.c
	* mailbox/mutil.c (mu_mh_delim): New function
	* mh/mh_stream.c: Rewritten using mu_stream_to_message. Actually,
	the source can be removed now and the function moved elsewhere,
	e.g. to mh_init...
	* sieve/sieve.c (main): Register all mailbox/mailer formats.
	
2006-01-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/comp.c: Fix semantics of -build/-draftmessage/-[no]draftfolder
	options for compatibility with other implementations of MH
	* mh/forw.c: Likewise
	* mh/whatnow.c: Likewise
	* mh/repl.c: Likewise
	* mh/compcommon.c: Bugfix.
	* mh/mh.h (mh_draft_message): New prototype.
	(xmalloc,xrealloc): Remove prototypes
	* mh/mh_argp.c (parse_opt): Pass ARGP_KEY_INIT to the application
	handler.
	* mh/mh_init.c (mh_draft_message): New function
	* mh/mh_whatnow.c (quit): Don't call rename if both file and
	draftfile are the same.

	* imap4d/select.c (imap4d_select0): Fix status display.

2006-01-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/select.c (imap4d_select0): Create INBOX if it does not
	exist.

	* mailbox/Makefile.am (AM_CFLAGS): Define
	GNULIB_ARGP_EXTERN_BASENAME
	* mailbox/argp-namefrob.h: Bugfix (stray #)
	* mailbox/mutil.c (__argp_base_name): New function

	* THANKS: Add Helmut Leitner.
	* mail/mail.c (parse_opt): Try to catch arguments separated from
	the option by whitespace. Solution proposed by Helmut Leitner.
	Avoid queueing multiple "set mode=send" options.

	* sql/mysql.c (connect): Initialize socket_name to NULL

	* include/mailutils/compat.h (registrar_lookup): Define to
	mu_0_6_registrar_lookup
	* include/mailutils/mailbox.h (mu_mailbox_set_default_proto)
	(mu_mailbox_get_default_proto): New prototypes.
	* include/mailutils/registrar.h (mu_registrar_lookup): Changed
	declaration.
	(mu_0_6_registrar_lookup): New prototype.
	* mailbox/mailbox.c (mu_mailbox_set_default_proto)
	(mu_mailbox_get_default_proto): New functions.
	(mu_mailbox_create): Append default_proto to the mailbox URL, if
	the latter does not already contain one.
	Update invocation of mu_registrar_lookup

	* mailbox/mbx_default.c (tilde_expand): Remove
	(mu_mailbox_create_default): Use  mu_tilde_expansion instead of
	tilde_expand
	
	* mailbox/mu_argp.c (mu_mailbox_argp_option)
	(mu_common_argp_parser): New option --mailbox-type
	* mailbox/mutil.c (mu_tilde_expansion): Expand tilde after
	the protocol specification.

	* mailbox/registrar.c (mu_registrar_lookup): Return error
	code. Use an extra argument to return the flags.
	(mu_0_6_registrar_lookup): New function for compatibility with
	previous versions.
	
	* mailbox/folder.c: Update invocations of mu_registrar_lookup
	* mailbox/mailer.c: Likewise
	* mailbox/mbox/folder.c: Likewise.

	* NEWS: Update
	
2006-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/mh_ctx.c (mh_context_read): Allow for empty lines and
	conventional comment characters ('#') in the context file. 
	* mh/mh_init.c (mh_is_my_name): Bugfix: do not use strtok_r, which 
	modifies its argument.
	
	* include/mailutils/header.h (MU_HEADER_X_MAILER): New define
	* mail/send.c (mail_send0): Use MU_HEADER_X_MAILER
	* mh/replcomps: Remove X-Mailer. Send will add it if needed.
	* mh/replgroupcomps: Likewise
	* mh/send.c (read_mts_profile): Support localname and localdomain
	variables.
	(read_mts_profile): Support x-mailer variable.
	* NEWS: Updated

2006-01-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/mail.h (exec_compl): New prototype
	* mail/mailline.c (ml_command_completion): Fix coredump
	(exec_compl,exec_generator): New functions
	* mail/table.c: Use exec_compl to complete first argument to !

	* mailbox/parse822.c (mu_parse822_time): Assume UTC for invalid or
	unknown timezones.

2006-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Sources before this point are tagged alpha_0_6_92
	
	* mailbox/mu_umaxtostr.c: New file
	* mailbox/mu_umaxtostr.h: New file

	* configure.ac: Remove HAVE_DECL_PROGRAM_INVOCATION_NAME hack,
	newer argp does that itself.
	Raise version number to 0.6.93
	* gnulib.modules (mailutils): Add inttostr
	* examples/Makefile.am, imap4d/Makefile.am,
	libsieve/extensions/Makefile.am, pop3d/Makefile.am  (AM_LDFLAGS):
	Load libmuaux before libmailutils. 
	
	* mailbox/imap/Makefile.am (libmu_imap_la_LIBADD): New variable
	* mailbox/pop/Makefile.am (libmu_pop_la_LIBADD): New variable
	
	* examples/muemail.c: Include stdlib.h
	
	* imap4d/fetch.c, imap4d/imap4d.c, imap4d/search.c,
	mailbox/daemon.c, mailbox/message.c, mailbox/imap/mbox.c,
	mh/burst.c, mh/compcommon.c, mh/folder.c, mh/forw.c,
	mh/mh_global.c, mh/mh_msgset.c, mh/mh_sequence.c, mh/mhn.c,
	mh/mhpath.c, mh/pick.c, mh/repl.c, mh/sortm.c, pop3d/apop.c,
	pop3d/capa.c, pop3d/dele.c, pop3d/list.c, pop3d/logindelay.c,
	pop3d/pop3d.c, pop3d/stat.c, pop3d/uidl.c, pop3d/user.c: Use
	mu_umaxtostr to format size_t and off_t values
	
	* imap4d/imap4d.h, libmu_scm/mu_port.c, mh/mh.h, pop3d/pop3d.h:
	Include mu_umaxtostr.h 
	
	* mh/mh_format.c: Recognize EET and EEST time zones
	
	* mailbox/pop/mbox.c: Fix parsing of pop3 server replies.
	Use mu_umaxtostr to format size_t and off_t values
	
	* mailbox/imap/folder.c: Add gettext markers
	* mailbox/mbox/mbox.c: Likewise
	* mailbox/mbox/mbox0.h: Include mailutils/nls.h
	
	* mail/set.c, mail/unset.c, mail/mail.h,
	mail/util.c (util_printenv): Change return type to void. 
	All callers updated.

	* mail.local/mail.local.h: Define USE_MAILBOX_QUOTAS after
	including mu_dbm.h
	* mail.local/mailquota.c: Issue error message if unable to open
	the database.

	* mailbox/Makefile.am (AM_CFLAGS): Define
	GNULIB_ARGP_DISABLE_DIRNAME
	(EXTRA_DIST): Remove pin.c

	* po/POTFILES.in: Updated. Sorted alphabetically

	* scripts/gnulib-sync (expand_modules): Implement 'avoid' feature.
	Avoid expanding dirname into mailbox/, since it drags xalloc with
	it. 
	
	Update by gnulib-sync.

	* lib/fnmatch.c: Updated  
	* lib/malloc.c: Updated
	* lib/strcasecmp.c: Updated
	* lib/strncasecmp.c: Updated
	* m4/gnulib.m4: Updated
	* m4/xstrtol.m4: Updated
	
	* lib/allocsa.c: Updated
	* lib/allocsa.h: Updated
	* lib/allocsa.valgrind: Updated
	* lib/asprintf.c: Updated
	* lib/error.c: Updated
	* lib/error.h: Updated
	* lib/exit.h: Updated
	* lib/exitfail.c: Updated
	* lib/exitfail.h: Updated
	* lib/getpass.c: Updated
	* lib/getpass.h: Updated
	* lib/mbswidth.c: Updated
	* lib/mbswidth.h: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Updated
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/unsetenv.c: Updated
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Updated
	* lib/xalloc-die.c: Updated
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Updated
	* m4/alloca.m4: Updated
	* m4/allocsa.m4: Updated
	* m4/argp.m4: Updated
	* m4/d-type.m4: Updated
	* m4/eealloc.m4: Updated
	* m4/eoverflow.m4: Updated
	* m4/error.m4: Updated
	* m4/exitfail.m4: Updated
	* m4/extensions.m4: Updated
	* m4/fnmatch.m4: Updated
	* m4/getdelim.m4: Updated
	* m4/getline.m4: Updated
	* m4/getlogin_r.m4: Updated
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Updated
	* m4/glob.m4: Updated
	* m4/intmax_t.m4: Updated
	* m4/inttostr.m4: Added to the repository
	* m4/inttypes.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/mbchar.m4: Updated
	* m4/mbiter.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbswidth.m4: Updated
	* m4/md5.m4: Updated
	* m4/memchr.m4: Updated
	* m4/mempcpy.m4: Updated
	* m4/minmax.m4: Updated
	* m4/obstack.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/regex.m4: Updated
	* m4/restrict.m4: Updated
	* m4/setenv.m4: Updated
	* m4/signed.m4: Updated
	* m4/size_max.m4: Updated
	* m4/snprintf.m4: Updated
	* m4/stat-macros.m4: Updated
	* m4/stdbool.m4: Updated
	* m4/stdint.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/strcase.m4: Updated
	* m4/strchrnul.m4: Updated
	* m4/strdup.m4: Updated
	* m4/strerror_r.m4: Updated
	* m4/strndup.m4: Updated
	* m4/strnlen.m4: Updated
	* m4/strtok_r.m4: Updated
	* m4/sysexits.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/vasnprintf.m4: Updated
	* m4/vasprintf.m4: Updated
	* m4/vsnprintf.m4: Updated
	* m4/wchar_t.m4: Updated
	* m4/wint_t.m4: Updated
	* m4/xalloc.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xsize.m4: Updated
	* mailbox/alloca.c: Updated
	* mailbox/alloca_.h: Updated
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pin.c: Added to the repository
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Updated
	* mailbox/fnmatch.c: Updated
	* mailbox/fnmatch_.h: Updated
	* mailbox/fnmatch_loop.c: Updated
	* mailbox/getdelim.c: Updated
	* mailbox/getdelim.h: Updated
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getlogin_r.c: Updated
	* mailbox/getlogin_r.h: Updated
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Updated
	* mailbox/getopt_int.h: Updated
	* mailbox/gettext.h: Updated
	* mailbox/glob-libc.h: Updated
	* mailbox/glob.c: Updated
	* mailbox/glob_.h: Updated
	* mailbox/imaxtostr.c: Added to the repository
	* mailbox/intprops.h: Added to the repository
	* mailbox/inttostr.c: Added to the repository
	* mailbox/inttostr.h: Added to the repository
	* mailbox/malloc.c: Updated
	* mailbox/mbchar.c: Updated
	* mailbox/mbchar.h: Updated
	* mailbox/mbuiter.h: Updated
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/memchr.c: Updated
	* mailbox/mempcpy.c: Updated
	* mailbox/mempcpy.h: Updated
	* mailbox/minmax.h: Updated
	* mailbox/offtostr.c: Added to the repository
	* mailbox/printf-args.c: Updated
	* mailbox/printf-args.h: Updated
	* mailbox/printf-parse.c: Updated
	* mailbox/printf-parse.h: Updated
	* mailbox/regcomp.c: Updated
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Updated
	* mailbox/regex_internal.c: Updated
	* mailbox/regex_internal.h: Updated
	* mailbox/regexec.c: Updated
	* mailbox/size_max.h: Updated
	* mailbox/stat-macros.h: Updated
	* mailbox/stdbool_.h: Updated
	* mailbox/stdint_.h: Updated
	* mailbox/strcase.h: Updated
	* mailbox/strcasecmp.c: Updated
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Updated
	* mailbox/strdup.c: Updated
	* mailbox/strdup.h: Updated
	* mailbox/strncasecmp.c: Updated
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Updated
	* mailbox/strnlen.c: Updated
	* mailbox/strnlen.h: Updated
	* mailbox/strnlen1.c: Updated
	* mailbox/strnlen1.h: Updated
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Updated
	* mailbox/sysexit_.h: Updated
	* mailbox/umaxtostr.c: Added to the repository
	* mailbox/vasnprintf.c: Updated
	* mailbox/vasnprintf.h: Updated
	* mailbox/vsnprintf.c: Updated
	* mailbox/vsnprintf.h: Updated
	* mailbox/xsize.h: Updated

2006-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix bug reported by Ronan KERYELL <Ronan.Keryell@enstb.org>
	(Debian Bug#344420):
	
	* mailbox/file_stream.c (_file_write): Return ENOSPC if fwrite
	returns 0.
	* mailbox/mbox/mbox.c (mbox_append_message0): Preserve return
	status from mu_stream_write, if it is not 0.
	* movemail/movemail.c (main): Exit on first detected IO
	error. Make sure the source mailbox is not modified if not all
	messages were moved successfully.

	* THANKS: Add Ronan KERYELL

	Support automatic home directory creation in imap4d
	
	* imap4d/authenticate.c (imap4d_authenticate): Call
	imap4d_check_home_dir before switching to user's privileges. Bail
	out if it returns with an error.
	Use util_chdir instead of chdir to change to user's home
	directory.
	* imap4d/login.c (imap4d_login): Likewise
	* imap4d/imap4d.c (create_home_dir,home_dir_mode): New variables
	(options): New option --create-home-dir
	(imap4d_check_home_dir): New function
	* imap4d/imap4d.h (imap4d_check_home_dir,util_chdir): New
	prototype.
	* imap4d/util.c (util_chdir): New function.	
	* doc/texinfo/programs.texi: Document --create-home-dir option.
	* NEWS: Update
	
2006-01-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	* README-alpha: Update cvs co information

2006-01-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Updated
	* THANKS: Add Walter Neumann
	* doc/texinfo/programs.texi: Document inplacealiases and
	recursealiases.
	* mail/alias.c (alias_expand): Recursively expand aliases if
	recursealiases is set.
	* mail/mail.c (default_setup): Provide defaults for inplacealiases
	and recursealiases.
	* mail/mail.h (is_address_field): New prototype.
	* mail/send.c (compose_header_set): Check for valid arguments at
	the beginning of the function (value can be NULL, e.g. if the user hit
	C-D at Cc: prompt).
	Call util_merge_addresses() only if inplacealiases is set. Expand
	aliases before calling it.
	* mail/util.c (is_address_field): Remove static qualifier.
	(util_header_expand): Expand aliases unless inplacealiases is set.
	* mail/testsuite/mail/send.exp: Set inplacealiases.

2005-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* lib/mu_dbm.c: Allow specifying full file name (including the
	suffix). 

2005-12-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/comp.c, mh/forw.c, mh/repl.c: Make sure -nodraftfolder
	cancels Draft-Folder variable, not only -draftfolder option.

2005-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/util.c (util_do_command): Bugfix

2005-12-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/list.c (list_file,print_dir,print_file): Use
	mkfullname. Fixes [bug #15144].

	* imap4d/create.c: Do not create anything and return OK if the
	argument is suffixed with a hierarchy separator. Fixes [bug #15142].
	* imap4d/status.c (imap4d_status): Flush attributes before opening
	the mailbox.
	(status_unseen): Remove superfluous condition
	Fixes [bug #15143].
	
2005-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/burst.c (finish_stream): Set map.first if necessary
	(burst_digest): Initialize eb_length
	(burst_rename): Skip messages that do not need to be renamed.
	(main): Do not process inplace if burst_count is 0

	* include/mailutils/stream.h (mu_temp_file_stream_create): New
	function.
	* mailbox/file_stream.c: Likewise.
	
	* mh/burst.c: New option --length allows to set a minimal
	encapsulation boundary length.
	(burst_digest): Take into account minimal EB length.

	* mh/README: Update
	* mh/TODO: Update

	* mh/burst.c (burst): Keep message sequence number in msgno.
	(burst_rename): Fix loop limits
	(main): Fix calculation of last_uid.
	Keep message sequence numbers in ms.
	(burst_digest): Initial implementation of RFC 934

2005-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/rfc/rfc934.txt: New file.
	* doc/rfc/Makefile.am (EXTRA_DIST): Add rfc934.txt

	* mailbox/amd.c (amd_msg_lookup): Bugfix. Use msg_count == 0
	to determine if the msg_array is empty.
	* mailbox/mime.c (mu_mime_get_part): Set stream_size function.

	* mh/burst.c: New file. Initial implementation of burst command.
	* mh/Makefile.am (PROGRAMS_MH,EXTRA_PROGRAMS): Add burst
	* mh/TODO: Update
	* mh/forw.c (msg_copy): Implement FSA described in RFC 934
	* mh/mh_getopt.h (enum mh_arg): New declaration, instead of
	multiple defines.
	* mh/mh_init.c (mh_expand_name): Accept names starting with mh:/
	protocol indicator.
	* mh/.cvsignore: Add burst, sort entries.
	
2005-11-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/header.c: Fix indentation
	* mh/mh.h (mh_context_destroy,mh_context_merge): New proto
	* mh/mh_ctx.c (mh_context_destroy,mh_context_merge): New
	functions.
	* mh/mh_init.c (mh_expand_name): Make sure the returned value can
	safely be freed.
	* mh/send.c (read_mts_profile): Allow .mtstailor to override
	system-wide configuration values.

2005-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/msgset.y (msgset_negate): Fix loop break condition.

	* sieve/sieve.c (options): Add --dry-run, an alias for -n. 

2005-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/cd.c, mh/folder.c: Fix diagnostic messages

2005-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Declare HAVE_DECL_PROGRAM_INVOCATION_NAME,
	otherwise argp-help.c can bail out at line 1693
	* examples/argcv.c: Temporarily include config.h to make sure
	replaced symbols are referenced properly.
	The use of config.h in example files should be reduced to minimum.
	
	* auth/sql.h (sql_interface): Fix data type
	* include/mailutils/errno.hin: Include errno.h
	Provide ECANCELED if it is missing (mainly for cygwin).
	* mailbox/errors (MU_ERR_CANCELED): New error code.

	* Makefile.am (EXTRA_DIST): Remove MU_EXTRA_DIST
	* configure.ac: Call MU_FINISH
	* m4/mu_libobj.m4 (MU_LIBSOURCE,MU_LIBSOURCES): Construct the list
	of EXTRA_DIST sources.
	(MU_FINISH): New defun
	* mailbox/Makefile.am (EXTRA_DIST): Add MU_EXTRA_DIST

2005-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Determine the size of off_t and define an
	equivalent mu_off_t type. We cannot use off_t in the library since
	its size depends on whether large file support is used or not,
	which will lead to arbitrary crashes if a user application and the
	library use off_t of different sizes. 
	(MU_COMMON_INCLUDES): New substitute variable
	
	* gnulib.modules (mailutils): Add glob

	* include/mailutils/types.h: Removed
	* include/mailutils/types.hin: New file
	* include/mailutils/Makefile.am: Build types.h
	
	* auth/Makefile.am (UNCLUDES): Rewritten using MU_COMMON_INCLUDES
	* comsat/Makefile.am: Likewise
	* config/Makefile.am: Likewise
	* dotlock/Makefile.am: Likewise
	* examples/Makefile.am: Likewise
	* frm/Makefile.am: Likewise
	* guimb/Makefile.am: Likewise
	* imap4d/Makefile.am: Likewise
	* lib/Makefile.am: Likewise
	* libmu_cpp/Makefile.am: Likewise
	* libmu_scm/Makefile.am: Likewise
	* libsieve/Makefile.am: Likewise
	* libsieve/extensions/Makefile.am: Likewise
	* mail/Makefile.am: Likewise
	* mail.local/Makefile.am: Likewise
	* mail.remote/Makefile.am: Likewise
	* mailbox/Makefile.am: Likewise
	* mailbox/imap/Makefile.am: Likewise
	* mailbox/maildir/Makefile.am: Likewise
	* mailbox/mbox/Makefile.am: Likewise
	* mailbox/mh/Makefile.am: Likewise
	* mailbox/nntp/Makefile.am: Likewise
	* mailbox/pop/Makefile.am: Likewise
	* mapi/Makefile.am: Likewise
	* messages/Makefile.am: Likewise
	* mh/Makefile.am: Likewise
	* mimeview/Makefile.am: Likewise
	* movemail/Makefile.am: Likewise
	* pop3d/Makefile.am: Likewise
	* readmsg/Makefile.am: Likewise
	* sieve/Makefile.am: Likewise
	* sql/Makefile.am: Likewise
	
	* auth/tls.c: Use mu_off_t instead of off_t
	* examples/argcv.c: Likewise
	* examples/base64.c: Likewise
	* examples/mimetest.c: Likewise
	* examples/murun.c: Likewise
	* examples/nntpclient.c: Likewise
	* examples/pop3client.c: Likewise
	* include/mailutils/header.h: Likewise
	* include/mailutils/mailbox.h: Likewise
	* include/mailutils/stream.h: Likewise
	* include/mailutils/types.h: Likewise
	* libmu_scm/mu_port.c: Likewise
	
	* mail.local/main.c: Likewise
	* mailbox/amd.c: Likewise
	* mailbox/body.c: Likewise
	* mailbox/file_stream.c: Likewise
	* mailbox/filter.c: Likewise
	* mailbox/filter_iconv.c: Likewise
	* mailbox/filter_rfc822.c: Likewise
	* mailbox/filter_trans.c: Likewise
	* mailbox/header.c: Likewise
	* mailbox/mailbox.c: Likewise
	* mailbox/mapfile_stream.c
	* mailbox/memory_stream.c
	* mailbox/message.c: Likewise
	* mailbox/mime.c: Likewise
	* mailbox/stream.c: Likewise
	* mailbox/tcp.c: Likewise
	* mailbox/imap/folder.c: Likewise
	* mailbox/imap/mbox.c: Likewise
	* mailbox/include/amd.h: Likewise
	* mailbox/include/filter0.h: Likewise
	* mailbox/include/header0.h: Likewise
	* mailbox/include/imap0.h: Likewise
	* mailbox/include/mailbox0.h: Likewise
	* mailbox/include/stream0.h: Likewise
	* mailbox/mbox/mbox.c: Likewise
	* mailbox/mbox/mboxscan.c: Likewise
	* mailbox/nntp/mbox.c: Likewise
	* mailbox/nntp/nntp_stream.c: Likewise
	* mailbox/pop/mbox.c: Likewise
	* mailbox/pop/pop3_stream.c: Likewise
	* mh/mh_stream.c: Likewise
	* pop3d/pop3d.c: Likewise

	* m4/gnulib.m4: Update
	* m4/mu_libobj.m4: Update
	
	Update by gnulib-sync:

	* lib/allocsa.c: Updated
	* lib/allocsa.h: Updated
	* lib/allocsa.valgrind: Updated
	* lib/asprintf.c: Updated
	* lib/error.c: Updated
	* lib/error.h: Updated
	* lib/exit.h: Updated
	* lib/exitfail.c: Updated
	* lib/exitfail.h: Updated
	* lib/getpass.c: Updated
	* lib/getpass.h: Updated
	* lib/intprops.h: Updated
	* lib/mbswidth.c: Updated
	* lib/mbswidth.h: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Updated
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/unsetenv.c: Updated
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Updated
	* lib/xalloc-die.c: Updated
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Updated
	* lib/xstrtol.c: Updated
	* lib/xstrtol.h: Updated
	* lib/xstrtoul.c: Updated
	* m4/alloca.m4: Updated
	* m4/allocsa.m4: Updated
	* m4/argp.m4: Updated
	* m4/d-type.m4: Added to the repository
	* m4/eealloc.m4: Updated
	* m4/eoverflow.m4: Updated
	* m4/error.m4: Updated
	* m4/exitfail.m4: Updated
	* m4/extensions.m4: Updated
	* m4/fnmatch.m4: Updated
	* m4/getdelim.m4: Updated
	* m4/getline.m4: Updated
	* m4/getlogin_r.m4: Added to the repository
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Updated
	* m4/glob.m4: Added to the repository
	* m4/intmax_t.m4: Updated
	* m4/inttypes.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/mbchar.m4: Updated
	* m4/mbiter.m4: Added to the repository
	* m4/mbrtowc.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbswidth.m4: Updated
	* m4/md5.m4: Updated
	* m4/memchr.m4: Updated
	* m4/mempcpy.m4: Updated
	* m4/minmax.m4: Updated
	* m4/obstack.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/regex.m4: Updated
	* m4/restrict.m4: Updated
	* m4/setenv.m4: Updated
	* m4/signed.m4: Updated
	* m4/size_max.m4: Updated
	* m4/snprintf.m4: Updated
	* m4/stat-macros.m4: Added to the repository
	* m4/stdbool.m4: Updated
	* m4/stdint.m4: Added to the repository
	* m4/stdint_h_gl.m4: Updated
	* m4/strcase.m4: Updated
	* m4/strchrnul.m4: Updated
	* m4/strdup.m4: Added to the repository
	* m4/strerror_r.m4: Updated
	* m4/strndup.m4: Updated
	* m4/strnlen.m4: Updated
	* m4/strtok_r.m4: Updated
	* m4/sysexits.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/vasnprintf.m4: Updated
	* m4/vasprintf.m4: Updated
	* m4/vsnprintf.m4: Updated
	* m4/wchar_t.m4: Updated
	* m4/wint_t.m4: Updated
	* m4/xalloc.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xstrtol.m4: Updated
	* mailbox/alloca.c: Updated
	* mailbox/alloca_.h: Updated
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Updated
	* mailbox/fnmatch.c: Added to the repository
	* mailbox/fnmatch_.h: Added to the repository
	* mailbox/fnmatch_loop.c: Added to the repository
	* mailbox/getdelim.c: Updated
	* mailbox/getdelim.h: Updated
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getlogin_r.c: Added to the repository
	* mailbox/getlogin_r.h: Added to the repository
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Updated
	* mailbox/getopt_int.h: Updated
	* mailbox/gettext.h: Updated
	* mailbox/glob-libc.h: Added to the repository
	* mailbox/glob.c: Added to the repository
	* mailbox/glob_.h: Added to the repository
	* mailbox/malloc.c: Added to the repository
	* mailbox/mbchar.c: Updated
	* mailbox/mbchar.h: Updated
	* mailbox/mbuiter.h: Added to the repository
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/memchr.c: Updated
	* mailbox/mempcpy.c: Updated
	* mailbox/mempcpy.h: Updated
	* mailbox/minmax.h: Updated
	* mailbox/printf-args.c: Updated
	* mailbox/printf-args.h: Updated
	* mailbox/printf-parse.c: Updated
	* mailbox/printf-parse.h: Updated
	* mailbox/regcomp.c: Updated
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Updated
	* mailbox/regex_internal.c: Updated
	* mailbox/regex_internal.h: Updated
	* mailbox/regexec.c: Updated
	* mailbox/size_max.h: Updated
	* mailbox/stat-macros.h: Added to the repository
	* mailbox/stdbool_.h: Updated
	* mailbox/stdint_.h: Added to the repository
	* mailbox/strcase.h: Updated
	* mailbox/strcasecmp.c: Updated
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Updated
	* mailbox/strdup.c: Added to the repository
	* mailbox/strdup.h: Added to the repository
	* mailbox/strncasecmp.c: Updated
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Updated
	* mailbox/strnlen.c: Updated
	* mailbox/strnlen.h: Updated
	* mailbox/strnlen1.c: Updated
	* mailbox/strnlen1.h: Updated
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Updated
	* mailbox/sysexit_.h: Updated
	* mailbox/vasnprintf.c: Updated
	* mailbox/vasnprintf.h: Updated
	* mailbox/vsnprintf.c: Updated
	* mailbox/vsnprintf.h: Updated
	* mailbox/xsize.h: Updated

	* examples/argcv.c: Add missing includes
	* examples/mailcap.c: Likewise
	* examples/url-parse.c: Likewise
	* mail/send.c: Likewise
	* mailbox/list.c: Likewise
	* mh/mh_alias.l: Likewise
	* mimeview/mimetypes.l: Likewise
	* examples/nntpclient.c: Add missing forward declarations

	* libsieve/sieve.h (mu_sieve_yylex,mu_sieve_yyerror): Add
	declarations.
	* libsieve/sieve.y (yylex,yyerror): Remove declarations
	* include/mailutils/mutil.h (mu_is_proto): New function.
	* mailbox/mutil.c: Likewise
	* mailbox/mbx_default.c (is_proto): Replace by mu_is_proto. All
	callers updated
	* mailbox/mailbox.c (mailbox_folder_create): Do not try to select
	previous level if given a protocol spec, other than `file:'

	* mh/mh.h (mh_file_to_message): Change signature
	* mh/mh_init.c: Likewise
	* mimeview/Makefile.am (AM_CPPFLAGS): Add -D_GNU_SOURCE=1, needed
	for compiling lex sources
	* mh/Makefile.am: Likewise
	
2005-11-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/argcv.c: Include <mailutils/error.h>
	* examples/base64.c: Include <config.h>
	* readmsg/readmsg.h: Likewise
	* mail/z.c (z_parse_args): change type of return_count
	(mail_z): Change type of count to off_t
	* include/mailutils/stream.h: Fix indentation

	* scripts/gnulib-sync: Replace AC_LIBSOURCE with MU_LIBSOURCE
	
2005-11-14  Sergey Poznyakoff  <gray@gnu.org.ua>

        * examples/argcv.c: Include <mailutils/error.h>
        * examples/base64.c: Include <config.h>
        * readmsg/readmsg.h: Likewise
        * mail/z.c (z_parse_args): change type of return_count
        (mail_z): Change type of count to off_t
        * include/mailutils/stream.h: Fix indentation
	* mailbox/file_stream.c (struct _fise_stream.offset): Change type
	to off_t
	
2005-11-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (AUTHLIBS,AUTHLIBS_DEPENDENCY,AUTHINCS): Prefixed
	with MU_
	* mail/msgset.y (check_set): Was displaying `inappropriate message'
	diagnostics if the first message from the set was deleted. Fixed.
	* mail/util.c, mailbox/registrar.c: Add typecasts
	* mh/mh.h: Add includes needed for W.*() macros
	* comsat/Makefile.am, config/Makefile.am, examples/Makefile.am,
	frm/Makefile.am, guimb/Makefile.am, imap4d/Makefile.am,
	libmu_scm/Makefile.am, libsieve/Makefile.am, mail/Makefile.am, 
	mail.local/Makefile.am, mail.remote/Makefile.am,
	mailbox/Makefile.am, messages/Makefile.am, mh/Makefile.am,
	movemail/Makefile.am, pop3d/Makefile.am, readmsg/Makefile.am,
	sieve/Makefile.am: Load MU_AUTHLIBS before libmailutils. Fixes
	cygwin build.

2005-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Somewhat reluctantly append $(EXEEXT) to popauth
	binary name to fix cygwin builds.
	* mail.remote/Makefile.am (PROGRAMS_SMTP): Likewise
	* mh/Makefile.am (PROGRAMS_MH): Likewise

2005-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac (GUIMB): Fix assignment to work on cygwin too
	* THANKS: Add D. J. Henman

2005-11-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	* comsat/Makefile.am, dotlock/Makefile.am, examples/Makefile.am,
	frm/Makefile.am, guimb/Makefile.am, imap4d/Makefile.am,
	mail.local/Makefile.am, mail.remote/Makefile.am, mapi/Makefile.am,
	messages/Makefile.am, mh/Makefile.am, movemail/Makefile.am,
	pop3d/Makefile.am, readmsg/Makefile.am, sieve/Makefile.am: Load
	libmuauth before libmailutils.  

2005-11-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Fix typo
	* comsat/comsat.c: Fix typo in the comment

2005-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/sieve.l (pop_source): Clear sieve_filename if
	context_stack is empty.

2005-10-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* Makefile.am (release): Rename to alpha
	(alphacheck): New rule
	* configure.ac: Always define program_name to
	program_invocation_name

	* libsieve/actions.c (build_mime): Split into three smaller
	functions, each for its own task.
	Add Content-Type,Content-Transfer-Encoding headers to the
	DSN. Proposed by Kostas Zorbadelos. 
	* sieve/testsuite/Reject: Updated to match the above changes	
	* sieve/testsuite/sieve/reject.exp: Updated
	* examples/http.c: Include <sys/time.h>
	* mailbox/imap/folder.c (imap_writeline): Fix handling of input
	lines longer than 254 chars. Proposed by Daniel Kahn Gillmor.
	* THANKS: Add Kostas Zorbadelos and Daniel Kahn Gillmor.	

2005-10-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Updated
	* include/mailutils/compat.h: New file. Compatibility defines for
	programs using mailutils interface version 0:0:0.
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Add compat.h
	* include/mailutils/folder.h (mu_0_6_folder_list)
	(mu_0_6_folder_lsub,mu_0_6_folder_list_destroy): Compatibility
	functions.
	* include/mailutils/mailutils.h: Include compat.h, if required
	* include/mailutils/message.h (message_unref): Rename to
	mu_message_unref. All callers updated
	* include/mailutils/mime.h (MIME_INCREAMENTAL_PARSER): Remove
	(MIME_MULTIPART_MIXED,MIME_MULTIPART_ALT): Prefix with MU_. All
	uses changed.
	* include/mailutils/monitor.h (struct mu__monitor): Rename to
	mu_monitor. All uses changed.
	* include/mailutils/registrar.h (struct _mu_record): Fix member
	names. All uses changed
	* include/mailutils/sql.h (rdl_init_t,rdl_done_t): Prefix with mu_
	* mail/util.c (util_do_command): Minor fix
	
	* libsieve/actions.c,libsieve/extensions/vacation.c,
	mailbox/filter.c, mailbox/folder.c, mailbox/mime.c,
	mailbox/registrar.c, mailbox/rfc2047.c, mh/mhl.c, mh/mhn.c: Synch
	with the above changes.

	* mail/if.c (mail_if): Fix 'r' condition
	(mail_else): Fix handling of nested ifs
	* mail/mail.c: New option --exec (-E)
	(mail_cmdline): Invalidate the page when a new mail arrives
	(main): Fix handling of modes.
	* mail/quit.c (mail_mbox_close): mbox can be NULL (e.g.
	--exec=quit was given)
	* mail/util.c (util_do_command): Accept traditional contracted
	forms (`d*', `p9')
	Fix bug in handling conditional branches (bug introduced on
	2005-08-11).
	* mail/testsuite/if.mail: New test script.
	* mail/testsuite/Makefile.am (EXTRA_DIST): Add if.mail
	* mail/testsuite/mail/if.exp: New test case.
	* mail/testsuite/mail/DISTFILES: Add if.exp

2005-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/argcv.c: Include config.h

2005-10-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: New option --without-fribidi allows to disable
	fribidi support.
	Check for FRIBIDI_CHARSET_CAP_RTL vs. FRIBIDI_CHAR_SET_CAP_RTL.
	* README: Updated
	
2005-09-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/decode2047.c: Allow to specify charset from the command
	line.
	* examples/encode2047.c: Allow to specify charset and encoding
	from the command line.
	* include/mailutils/filter.h (mu_rfc_2047_B_filter): New filter.
	* include/mailutils/libsieve.h (MU_SIEVE_CHARSET): New define
	* libsieve/extensions/vacation.c: Implemented :mime. Correctly
	handle subject line, no matter what the charset is.
	Fixed bug in creating `References:' header.

	* mailbox/filter.c (mu_filter_get_list): Add mu_rfc_2047_B_filter
	* mailbox/filter_trans.c (mu_rfc_2047_B_filter): New filter. Alias
	to base64.
	
	* include/mailutils/iterator.h: Minor stylistic changes
	* mailbox/iterator.c: Likewise
	* mailbox/wicket.c: Likewise
	* mh/mhn.c: Likewise
	
2005-09-22  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Minor wording change.
	* config/mailutils-config.c: New command line argument "sieve".

2005-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/imap/mbox.c (delete_to_string): Make sure the message
	set does not end with a comma. Bug reported by Gerd Flaig
	(<gefla@pond.sub.org>), I suppose.

2005-09-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/send.c (expand_aliases): Use mh_expand_aliases

	* mh/forw.c,mh/repl.c: Implemented --annotate

	* mh/mh_init.c (mh_quote,mh_expand_aliases): New functions
	* mh/mh.h (mh_quote,mh_expand_aliases): New functions
	(struct mh_whatnow_env): New fields to support annotation.
	* mh/mh_whatnow.c: Support message annotation. Improved error
	reporting after launching external programs.
	
	* mh/anno.c (main): Make the first annotated message current. 
	(opt_handler): Quote --text argument, if necessary.

	* mh/TODO: Updated
	
2005-09-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/page.c (cond_page_invalidate,page_move): Bugfix.

2005-09-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	* imap4d/search.c (imap4d_search): Fix potential vulnerability:
	pass format string as a third argument to util_finish
	* imap4d/copy.c, imap4d/fetch.c, imap4d/store.c: Always pass
	format string as a third argument to util_finish. Although this is not
	necessary, since 'buffer' is guaranteed to contain a normal error
	string, without format specifiers, yet this will simplify maintenance.

2005-08-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	* examples/lsf.c: New test program. List folders
	* examples/Makefile.am: Add lsf
	* mailbox/imap/folder.c (guess_level,list_copy): Fixed
	(imap_parse): Handle NO case explicitly.
	* mailbox/mbox/folder.c: Minor fix.

2005-08-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove obsolete usage of mu_folder_list (ex. folder_list). It
	seems to have been introduced when mu_list_t (ex. list_t) has
	not yet been there. All callers updated. Mbox format
	implementation has been tested. Imap format one is being tested. 
	
	* include/mailutils/folder.h (struct mu_list_response.level): New
	member
	(struct mu_folder_list): Removed. Use mu_list_t instead
	(mu_folder_list): Use mu_list_t. Take an extra argument: a maximum
	recursion level.
	(mu_folder_lsub): Change typo of the last argument (mu_list_t
	now).
	(mu_folder_list_destroy): Removed
	(mu_list_response_free): New function
	* lib/mu_asprintf.h: Remove vestiges of __P(). Define _GNU_SOURCE,
	if not already defined.

	* mailbox/imap/folder.c: Rewritten for new
	mu_folder_list,mu_folder_lsub semantics.  
	* mailbox/imap/mbox.c: Likewise
	* mailbox/include/folder0.h: Likewise.
	* mailbox/include/imap0.h: Likewise.
	* mailbox/mbox/folder.c: Likewise.
	* mailbox/nntp/folder.c: Likewise.
	* mail/mailline.c: Use new mu_folder_list
	* mailbox/folder.c: Likewise.

	* auth/radius.c: Updated for recent libgnuradius 

	* mh/folder.c: Implement --pack, --verbose, --dry-run (just in case).
	* mh/TODO: Updated
	* mh/inc.c: Minor bugfixes.
	* mh/mark.c: Likewise
	* mh/mh.h (mh_context_iterator): Changed signature
	* mh/mh_ctx.c (mh_context_iterate): Bugfix
	* mh/mh_getopt.h (ARG_PACK): New define

2005-08-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Raise version number to 0.6.92
	Raise library current interface version to 1
	* NEWS: Updated
	
	* include/mailutils/filter.h,
	include/mailutils/registrar.h, include/mailutils/types.h,
	mailbox/filter.c, mailbox/filter_rfc822.c, mailbox/filter_trans.c,
	mailbox/folder.c, mailbox/getopt.h, mailbox/locker.c,
	mailbox/parse822.c, mailbox/registrar.c, mailbox/sendmail.c,
	mailbox/smtp.c, mailbox/url.c, mailbox/imap/folder.c,
	mailbox/include/address0.h, mailbox/include/attribute0.h,
	mailbox/include/auth0.h, mailbox/include/body0.h,
	mailbox/include/debug0.h, mailbox/include/envelope0.h,
	mailbox/include/filter0.h, mailbox/include/folder0.h,
	mailbox/include/header0.h, mailbox/include/iterator0.h,
	mailbox/include/list0.h, mailbox/include/mailbox0.h,
	mailbox/include/mailer0.h, mailbox/include/message0.h,
	mailbox/include/mime0.h, mailbox/include/observer0.h,
	mailbox/include/property0.h, mailbox/include/stream0.h,
	mailbox/include/url0.h, mailbox/maildir/folder.c,
	mailbox/mbox/folder.c, mailbox/mh/folder.c, mailbox/nntp/folder.c,
	mailbox/pop/folder.c: Fix-up structure names from types.h

	Final seasoning: Replace munre_ with mu_unre_
	
	* include/mailutils/mutil.h
	* libsieve/extensions/vacation.c
	* mail/followup.c
	* mail/reply.c
	* mail/util.c
	* mailbox/munre.c
	* mh/mh_format.c
	* mh/mh_init.c

2005-08-27  Wojciech Polak  <polak@gnu.org>

	Normalize global namespace. Part 2: Symbols defined in header files
	mailer.h, message.h, mime.h, monitor.h, observer.h, parse822.h,
	property.h, registrar.h, stream.h, tls.h, types.h, url.h.

	Files affected:

	* auth/gsasl.c, auth/tls.c, comsat/action.c, comsat/comsat.c,
	comsat/comsat.h, dotlock/dotlock.c, examples/addr.c,
	examples/base64.c, examples/decode2047.c, examples/encode2047.c,
	examples/http.c, examples/iconv.c, examples/listop.c,
	examples/mailcap.c, examples/mimetest.c, examples/msg-send.c,
	examples/mta.c, examples/murun.c, examples/nntpclient.c,
	examples/numaddr.c, examples/pop3client.c, examples/sfrom.c,
	examples/url-parse.c, frm/common.c, frm/frm.c, frm/frm.h,
	frm/from.c, guimb/collect.c, guimb/guimb.h, guimb/util.c,
	imap4d/append.c, imap4d/auth_gsasl.c, imap4d/authenticate.c,
	imap4d/capability.c, imap4d/copy.c, imap4d/fetch.c, imap4d/imap4d.c,
	imap4d/imap4d.h, imap4d/rename.c, imap4d/search.c, imap4d/status.c,
	imap4d/store.c, imap4d/sync.c, imap4d/util.c,
	include/mailutils/address.h, include/mailutils/attribute.h,
	include/mailutils/auth.h, include/mailutils/body.h,
	include/mailutils/envelope.h, include/mailutils/filter.h,
	include/mailutils/folder.h, include/mailutils/gsasl.h,
	include/mailutils/guile.h, include/mailutils/header.h,
	include/mailutils/iterator.h, include/mailutils/libsieve.h,
	include/mailutils/list.h, include/mailutils/locker.h,
	include/mailutils/mailbox.h, include/mailutils/mailcap.h,
	include/mailutils/mailer.h, include/mailutils/message.h,
	include/mailutils/mime.h, include/mailutils/monitor.h,
	include/mailutils/mu_auth.h, include/mailutils/mutil.h,
	include/mailutils/nntp.h, include/mailutils/observer.h,
	include/mailutils/parse822.h, include/mailutils/pop3.h,
	include/mailutils/property.h, include/mailutils/refcount.h,
	include/mailutils/registrar.h, include/mailutils/stream.h,
	include/mailutils/tls.h, include/mailutils/types.h,
	include/mailutils/url.h, include/mailutils/sys/nntp.h,
	include/mailutils/sys/pop3.h, lib/mailcap.c, libmu_scm/mu_address.c,
	libmu_scm/mu_body.c, libmu_scm/mu_mailbox.c, libmu_scm/mu_message.c,
	libmu_scm/mu_mime.c, libmu_scm/mu_port.c, libmu_scm/mu_scm.c,
	libsieve/actions.c, libsieve/argp.c, libsieve/comparator.c,
	libsieve/load.c, libsieve/prog.c, libsieve/register.c,
	libsieve/relational.c, libsieve/require.c, libsieve/runtime.c,
	libsieve/sieve.h, libsieve/sieve.l, libsieve/sieve.y, libsieve/tests.c,
	libsieve/util.c, libsieve/extensions/list.c, libsieve/extensions/spamd.c,
	libsieve/extensions/timestamp.c, libsieve/extensions/vacation.c,
	mail/alias.c, mail/alt.c, mail/copy.c, mail/decode.c, mail/delete.c,
	mail/edit.c, mail/escape.c, mail/file.c, mail/followup.c, mail/from.c,
	mail/hold.c, mail/mail.c, mail/mail.h, mail/mailline.c, mail/mbox.c,
	mail/msgset.y, mail/next.c, mail/page.c, mail/pipe.c, mail/previous.c,
	mail/print.c, mail/quit.c, mail/reply.c, mail/retain.c, mail/send.c,
	mail/size.c, mail/summary.c, mail/tag.c, mail/top.c, mail/touch.c,
	mail/undelete.c, mail/util.c, mail/visual.c, mail/write.c,
	mail.local/mail.local.h, mail.local/main.c, mail.local/script.c,
	mail.remote/mail.remote.c, mailbox/address.c, mailbox/amd.c,
	mailbox/attachment.c, mailbox/attribute.c, mailbox/auth.c,
	mailbox/body.c, mailbox/envelope.c, mailbox/file_stream.c,
	mailbox/filter.c, mailbox/filter_iconv.c, mailbox/filter_rfc822.c,
	mailbox/filter_trans.c, mailbox/folder.c, mailbox/header.c,
	mailbox/iterator.c, mailbox/list.c, mailbox/locker.c, mailbox/mailbox.c,
	mailbox/mailcap.c, mailbox/mailer.c, mailbox/mapfile_stream.c,
	mailbox/mbx_default.c, mailbox/memory_stream.c, mailbox/message.c,
	mailbox/mime.c, mailbox/monitor.c, mailbox/mu_argp.c, mailbox/mu_auth.c,
	mailbox/mutil.c, mailbox/observer.c, mailbox/parse822.c,
	mailbox/property.c, mailbox/registrar.c, mailbox/rfc2047.c,
	mailbox/sendmail.c, mailbox/smtp.c, mailbox/stream.c, mailbox/tcp.c,
	mailbox/ticket.c, mailbox/url.c, mailbox/url_sendmail.c,
	mailbox/url_smtp.c, mailbox/wicket.c, mailbox/imap/folder.c,
	mailbox/imap/mbox.c, mailbox/imap/url.c, mailbox/include/amd.h,
	mailbox/include/attribute0.h, mailbox/include/auth0.h,
	mailbox/include/body0.h, mailbox/include/envelope0.h,
	mailbox/include/filter0.h, mailbox/include/folder0.h,
	mailbox/include/header0.h, mailbox/include/imap0.h,
	mailbox/include/iterator0.h, mailbox/include/list0.h,
	mailbox/include/mailbox0.h, mailbox/include/mailer0.h,
	mailbox/include/message0.h, mailbox/include/mime0.h,
	mailbox/include/observer0.h, mailbox/include/property0.h,
	mailbox/include/registrar0.h, mailbox/include/stream0.h,
	mailbox/include/url0.h, mailbox/maildir/folder.c, mailbox/maildir/mbox.c,
	mailbox/mbox/folder.c, mailbox/mbox/mbox.c, mailbox/mbox/mbox0.h,
	mailbox/mbox/mboxscan.c, mailbox/mbox/url.c, mailbox/mh/folder.c,
	mailbox/mh/mbox.c, mailbox/nntp/folder.c, mailbox/nntp/mbox.c,
	mailbox/nntp/nntp0.h, mailbox/nntp/nntp_article.c,
	mailbox/nntp/nntp_body.c, mailbox/nntp/nntp_carrier.c,
	mailbox/nntp/nntp_connect.c, mailbox/nntp/nntp_destroy.c,
	mailbox/nntp/nntp_disconnect.c, mailbox/nntp/nntp_head.c,
	mailbox/nntp/nntp_help.c, mailbox/nntp/nntp_ihave.c,
	mailbox/nntp/nntp_iterator.c, mailbox/nntp/nntp_list_active.c,
	mailbox/nntp/nntp_list_distribpats.c,
	mailbox/nntp/nntp_list_distributions.c,
	mailbox/nntp/nntp_list_extensions.c, mailbox/nntp/nntp_list_newsgroups.c,
	mailbox/nntp/nntp_list_times.c, mailbox/nntp/nntp_newgroups.c,
	mailbox/nntp/nntp_newnews.c, mailbox/nntp/nntp_post.c,
	mailbox/nntp/nntp_readline.c, mailbox/nntp/nntp_sendline.c,
	mailbox/nntp/nntp_stream.c, mailbox/nntp/url.c, mailbox/pop/folder.c,
	mailbox/pop/mbox.c, mailbox/pop/pop3_capa.c, mailbox/pop/pop3_carrier.c,
	mailbox/pop/pop3_connect.c, mailbox/pop/pop3_destroy.c,
	mailbox/pop/pop3_disconnect.c, mailbox/pop/pop3_iterator.c,
	mailbox/pop/pop3_lista.c, mailbox/pop/pop3_readline.c,
	mailbox/pop/pop3_retr.c, mailbox/pop/pop3_sendline.c,
	mailbox/pop/pop3_stls.c, mailbox/pop/pop3_stream.c,
	mailbox/pop/pop3_top.c, mailbox/pop/pop3_uidla.c, mailbox/pop/url.c,
	messages/messages.c, mh/ali.c, mh/anno.c, mh/comp.c, mh/compcommon.c,
	mh/folder.c, mh/forw.c, mh/inc.c, mh/mark.c, mh/mh.h, mh/mh_alias.y,
	mh/mh_ctx.c, mh/mh_format.c, mh/mh_init.c, mh/mh_list.c, mh/mh_msgset.c,
	mh/mh_stream.c, mh/mh_whatnow.c, mh/mh_whom.c, mh/mhl.c, mh/mhn.c,
	mh/mhpath.c, mh/pick.c, mh/pick.h, mh/pick.y, mh/refile.c, mh/repl.c,
	mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c, mh/sortm.c,
	mimeview/mimetypes.y, mimeview/mimeview.c, movemail/movemail.c,
	pop3d/apop.c, pop3d/dele.c, pop3d/expire.c, pop3d/extra.c, pop3d/list.c,
	pop3d/lock.c, pop3d/pop3d.c, pop3d/pop3d.h, pop3d/quit.c, pop3d/retr.c,
	pop3d/rset.c, pop3d/stat.c, pop3d/top.c, pop3d/uidl.c, pop3d/user.c,
	readmsg/msglist.c, readmsg/readmsg.c, readmsg/readmsg.h, sieve/sieve.c,
	sql/odbc.c.
	
2005-08-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Normalize global namespace. All exportable symbols begin with mu_.
	Part 1: Symbols defined in header files address.h, argcv.h,
	attribute.h, auth.h, body.h, daemon.h, debug.h, envelope.h,
	errno.h, error.h, filter.h, folder.h, gsasl.h, guile.h, header.h,
	iterator.h, libsieve.h, list.h,	locker.h, mailbox.h.
	
	Files affected:
	
	* configure.ac, auth/gsasl.c, auth/radius.c, comsat/action.c,
	comsat/cfg.c, comsat/comsat.c, dotlock/dotlock.c, examples/addr.c,
	examples/argcv.c, examples/base64.c, examples/iconv.c,
	examples/listop.c, examples/mimetest.c, examples/msg-send.c,
	examples/mta.c, examples/murun.c, examples/nntpclient.c,
	examples/numaddr.c, examples/pop3client.c, examples/sfrom.c,
	frm/common.c, frm/frm.c, frm/from.c, guimb/collect.c,
	guimb/main.c, guimb/util.c, imap4d/append.c, imap4d/auth_gsasl.c,
	imap4d/authenticate.c, imap4d/bye.c, imap4d/capability.c,
	imap4d/close.c, imap4d/copy.c, imap4d/expunge.c, imap4d/fetch.c,
	imap4d/imap4d.c, imap4d/imap4d.h, imap4d/rename.c,
	imap4d/search.c, imap4d/select.c, imap4d/status.c, imap4d/store.c,
	imap4d/sync.c, imap4d/util.c, include/mailutils/address.h,
	include/mailutils/argcv.h, include/mailutils/attribute.h,
	include/mailutils/auth.h, include/mailutils/body.h,
	include/mailutils/daemon.h, include/mailutils/envelope.h,
	include/mailutils/error.h, include/mailutils/filter.h,
	include/mailutils/folder.h, include/mailutils/gsasl.h,
	include/mailutils/guile.h, include/mailutils/header.h,
	include/mailutils/iterator.h, include/mailutils/libsieve.h,
	include/mailutils/list.h, include/mailutils/locker.h,
	include/mailutils/mailbox.h, include/mailutils/nntp.h,
	include/mailutils/pop3.h, include/mailutils/types.h,
	lib/mailcap.c, libmu_scm/mu_address.c, libmu_scm/mu_body.c,
	libmu_scm/mu_guimb.c, libmu_scm/mu_logger.c,
	libmu_scm/mu_mailbox.c, libmu_scm/mu_message.c,
	libmu_scm/mu_mime.c, libmu_scm/mu_scm.c, libmu_scm/mu_util.c,
	libsieve/Makefile.am, libsieve/actions.c, libsieve/argp.c,
	libsieve/comparator.c, libsieve/load.c, libsieve/prog.c,
	libsieve/register.c, libsieve/relational.c, libsieve/require.c,
	libsieve/runtime.c, libsieve/sieve.h, libsieve/sieve.l,
	libsieve/sieve.y, libsieve/tests.c, libsieve/util.c,
	libsieve/extensions/list.c, libsieve/extensions/spamd.c,
	libsieve/extensions/timestamp.c, libsieve/extensions/vacation.c,
	m4/longdouble.m4, m4/signed.m4, m4/size_max.m4, m4/wchar_t.m4,
	m4/wint_t.m4, m4/xsize.m4, mail/alias.c, mail/copy.c,
	mail/decode.c, mail/delete.c, mail/escape.c, mail/exit.c,
	mail/file.c, mail/followup.c, mail/from.c, mail/hold.c,
	mail/inc.c, mail/mail.c, mail/mailline.c, mail/mbox.c,
	mail/msgset.y, mail/next.c, mail/page.c, mail/print.c,
	mail/quit.c, mail/reply.c, mail/retain.c, mail/send.c,
	mail/shell.c, mail/summary.c, mail/tag.c, mail/touch.c,
	mail/undelete.c, mail/util.c, mail/write.c, mail.local/main.c,
	mail.local/script.c, mail.remote/mail.remote.c,
	mailbox/Makefile.am, mailbox/address.c, mailbox/amd.c,
	mailbox/argcv.c, mailbox/attachment.c, mailbox/attribute.c,
	mailbox/auth.c, mailbox/body.c, mailbox/daemon.c,
	mailbox/envelope.c, mailbox/file_stream.c, mailbox/filter.c,
	mailbox/filter_iconv.c, mailbox/filter_rfc822.c,
	mailbox/filter_trans.c, mailbox/folder.c, mailbox/header.c,
	mailbox/iterator.c, mailbox/list.c, mailbox/locker.c,
	mailbox/mailbox.c, mailbox/mailer.c, mailbox/mbx_default.c,
	mailbox/message.c, mailbox/mime.c, mailbox/mu_argp.c,
	mailbox/mu_auth.c, mailbox/muerror.c, mailbox/mutil.c,
	mailbox/observer.c, mailbox/parse822.c, mailbox/registrar.c,
	mailbox/rfc2047.c, mailbox/sendmail.c, mailbox/smtp.c,
	mailbox/ticket.c, mailbox/wicket.c, mailbox/imap/Makefile.am,
	mailbox/imap/folder.c, mailbox/imap/mbox.c, mailbox/include/amd.h,
	mailbox/include/folder0.h, mailbox/include/imap0.h,
	mailbox/include/list0.h, mailbox/include/mime0.h,
	mailbox/maildir/Makefile.am, mailbox/maildir/mbox.c,
	mailbox/mbox/Makefile.am, mailbox/mbox/folder.c,
	mailbox/mbox/mbox.c, mailbox/mbox/mboxscan.c,
	mailbox/mh/Makefile.am, mailbox/mh/folder.c, mailbox/mh/mbox.c,
	mailbox/nntp/Makefile.am, mailbox/nntp/folder.c,
	mailbox/nntp/mbox.c, mailbox/nntp/nntp_iterator.c,
	mailbox/nntp/nntp_list_active.c,
	mailbox/nntp/nntp_list_distribpats.c,
	mailbox/nntp/nntp_list_distributions.c,
	mailbox/nntp/nntp_list_extensions.c,
	mailbox/nntp/nntp_list_newsgroups.c,
	mailbox/nntp/nntp_list_times.c, mailbox/pop/Makefile.am,
	mailbox/pop/folder.c, mailbox/pop/mbox.c, mailbox/pop/pop3_capa.c,
	mailbox/pop/pop3_iterator.c, messages/messages.c, mh/ali.c,
	mh/anno.c, mh/comp.c, mh/folder.c, mh/forw.c, mh/inc.c, mh/mark.c,
	mh/mh_alias.y, mh/mh_argp.c, mh/mh_ctx.c, mh/mh_format.c,
	mh/mh_init.c, mh/mh_list.c, mh/mh_msgset.c, mh/mh_sequence.c,
	mh/mh_stream.c, mh/mh_whatnow.c, mh/mh_whom.c, mh/mhn.c,
	mh/mhpath.c, mh/pick.c, mh/pick.y, mh/refile.c, mh/repl.c,
	mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c, mh/sortm.c,
	mimeview/mimetypes.y, mimeview/mimeview.c, movemail/movemail.c,
	pop3d/apop.c, pop3d/dele.c, pop3d/expire.c, pop3d/extra.c,
	pop3d/list.c, pop3d/lock.c, pop3d/pop3d.c, pop3d/popauth.c,
	pop3d/quit.c, pop3d/retr.c, pop3d/rset.c, pop3d/stat.c,
	pop3d/top.c, pop3d/uidl.c, pop3d/user.c, readmsg/msglist.c,
	readmsg/readmsg.c, sieve/sieve.c, sql/odbc.c.

2005-08-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* scripts/ylwrap: Updated from Radius repository

2005-08-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/testsuite/Makefile.am (EXTRA_DIST): Add Argcv

2005-08-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	* auth/sql.h: Avoid redefinition of _XOPEN_SOURCE
	* mailbox/imap/folder.c: Likewise
	* mailbox/maildir/mbox.c: Likewise
	* mailbox/mbox/mbox0.h: Likewise
	* mailbox/mh/mbox.c: Likewise

	* lib/Makefile.am: Updated
	* mailbox/Makefile.am: Updated
	
	Update by gnulib-sync:

	* lib/allocsa.c: Updated
	* lib/allocsa.h: Updated
	* lib/allocsa.valgrind: Updated
	* lib/asprintf.c: Updated
	* lib/error.c: Updated
	* lib/error.h: Updated
	* lib/exit.h: Updated
	* lib/exitfail.c: Updated
	* lib/exitfail.h: Updated
	* lib/fnmatch.c: Updated
	* lib/fnmatch_.h: Updated
	* lib/fnmatch_loop.c: Updated
	* lib/getpass.c: Updated
	* lib/getpass.h: Updated
	* lib/intprops.h: Added to the repository
	* lib/malloc.c: Updated
	* lib/mbswidth.c: Updated
	* lib/mbswidth.h: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Updated
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/unsetenv.c: Updated
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Updated
	* lib/xalloc-die.c: Added to the repository
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Updated
	* lib/xstrtol.c: Updated
	* lib/xstrtol.h: Updated
	* lib/xstrtoul.c: Updated
	* m4/alloca.m4: Updated
	* m4/allocsa.m4: Updated
	* m4/argp.m4: Updated
	* m4/eealloc.m4: Updated
	* m4/eoverflow.m4: Updated
	* m4/error.m4: Updated
	* m4/exitfail.m4: Updated
	* m4/extensions.m4: Updated
	* m4/fnmatch.m4: Updated
	* m4/getdelim.m4: Added to the repository
	* m4/getline.m4: Updated
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Updated
	* m4/intmax_t.m4: Updated
	* m4/intmax_t.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/inttypes_h_gl.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longdouble.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/longlong_gl.m4: Updated
	* m4/mbchar.m4: Added to the repository
	* m4/mbrtowc.m4: Updated
	* m4/mbrtowc.m4: Updated
	* m4/mbstate_t.m4: Updated
	* m4/mbswidth.m4: Updated
	* m4/md5.m4: Updated
	* m4/memchr.m4: Added to the repository
	* m4/mempcpy.m4: Updated
	* m4/minmax.m4: Added to the repository
	* m4/obstack.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/onceonly.m4: Updated
	* m4/regex.m4: Updated
	* m4/restrict.m4: Updated
	* m4/setenv.m4: Updated
	* m4/signed.m4: Updated
	* m4/size_max.m4: Updated
	* m4/snprintf.m4: Updated
	* m4/stdbool.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/stdint_h_gl.m4: Updated
	* m4/strcase.m4: Updated
	* m4/strchrnul.m4: Updated
	* m4/strerror_r.m4: Updated
	* m4/strndup.m4: Updated
	* m4/strnlen.m4: Updated
	* m4/strtok_r.m4: Updated
	* m4/sysexits.m4: Updated
	* m4/uint32_t.m4: Updated
	* m4/uintmax_t_gl.m4: Updated
	* m4/ulonglong_gl.m4: Updated
	* m4/unlocked-io.m4: Updated
	* m4/vasnprintf.m4: Updated
	* m4/vasprintf.m4: Updated
	* m4/vsnprintf.m4: Updated
	* m4/wchar_t.m4: Updated
	* m4/wint_t.m4: Updated
	* m4/xalloc.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xsize.m4: Updated
	* m4/xstrtol.m4: Updated
	* mailbox/alloca.c: Updated
	* mailbox/alloca_.h: Updated
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Updated
	* mailbox/getdelim.c: Added to the repository
	* mailbox/getdelim.h: Added to the repository
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Updated
	* mailbox/getopt_int.h: Updated
	* mailbox/gettext.h: Updated
	* mailbox/mbchar.c: Added to the repository
	* mailbox/mbchar.h: Added to the repository
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/memchr.c: Added to the repository
	* mailbox/mempcpy.c: Updated
	* mailbox/mempcpy.h: Updated
	* mailbox/minmax.h: Updated
	* mailbox/printf-args.c: Updated
	* mailbox/printf-args.h: Updated
	* mailbox/printf-parse.c: Updated
	* mailbox/printf-parse.h: Updated
	* mailbox/regcomp.c: Added to the repository
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Updated
	* mailbox/regex_internal.c: Added to the repository
	* mailbox/regex_internal.h: Added to the repository
	* mailbox/regexec.c: Added to the repository
	* mailbox/size_max.h: Added to the repository
	* mailbox/stdbool_.h: Added to the repository
	* mailbox/strcase.h: Updated
	* mailbox/strcasecmp.c: Updated
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Updated
	* mailbox/strncasecmp.c: Updated
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Updated
	* mailbox/strnlen.c: Updated
	* mailbox/strnlen.h: Added to the repository
	* mailbox/strnlen1.c: Added to the repository
	* mailbox/strnlen1.h: Added to the repository
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Updated
	* mailbox/sysexit_.h: Updated
	* mailbox/unlocked-io.h: Updated
	* mailbox/vasnprintf.c: Updated
	* mailbox/vasnprintf.h: Updated
	* mailbox/vsnprintf.c: Updated
	* mailbox/vsnprintf.h: Updated
	* mailbox/xsize.h: Updated

	End of gnulib update
	
	* README-alpha,gnulib.modules,comsat/Makefile.am,
	config/Makefile.am,config/mailutils-config.c,dotlock/Makefile.am,
	examples/Makefile.am,frm/Makefile.am,guimb/Makefile.am,
	imap4d/Makefile.am,lib/.cvsignore,lib/Makefile.am,
	libsieve/extensions/Makefile.am,mail/Makefile.am,
	mail.local/Makefile.am,mail.remote/Makefile.am,
	mailbox/Makefile.am,mailbox/imap/folder.c,mapi/Makefile.am,
	messages/Makefile.am,mh/Makefile.am,mimeview/Makefile.am,
	movemail/Makefile.am,readmsg/Makefile.am,scripts/gnulib-sync,
	sieve/Makefile.am: Rename libmailbox to libmailutils. Rename
	the convenience library (lib/libmailutils) to libmuaux.

	* auth/lbuf.h,comsat/comsat.c,examples/mta.c,guimb/guimb.h,
	imap4d/auth_gsasl.c,imap4d/fetch.c,imap4d/imap4d.c,
	imap4d/imap4d.h,imap4d/list.c,imap4d/namespace.c,imap4d/search.c,
	imap4d/status.c,imap4d/util.c,include/mailutils/address.h,
	include/mailutils/argcv.h,include/mailutils/argp.h,
	include/mailutils/attribute.h,include/mailutils/auth.h,
	include/mailutils/body.h,include/mailutils/daemon.h,
	include/mailutils/debug.h,include/mailutils/envelope.h,
	include/mailutils/error.h,include/mailutils/filter.h,
	include/mailutils/folder.h,include/mailutils/gsasl.h,
	include/mailutils/guile.h,include/mailutils/header.h,
	include/mailutils/iterator.h,include/mailutils/libsieve.h,
	include/mailutils/list.h,include/mailutils/locker.h,
	include/mailutils/mailbox.h,include/mailutils/mailcap.h,
	include/mailutils/mailer.h,include/mailutils/message.h,
	include/mailutils/mime.h,include/mailutils/monitor.h,
	include/mailutils/mu_auth.h,include/mailutils/mutil.h,
	include/mailutils/nls.h,include/mailutils/observer.h,
	include/mailutils/parse822.h,include/mailutils/property.h,
	include/mailutils/refcount.h,include/mailutils/registrar.h,
	include/mailutils/stream.h,include/mailutils/tls.h,
	include/mailutils/types.h,include/mailutils/url.h,lib/md5.h,
	lib/mu_asprintf.h,lib/mu_dbm.h,lib/strsignal.c,
	libmu_scm/mu_address.c,libsieve/argp.c,libsieve/sieve.h,
	libsieve/sieve.l,libsieve/sieve.y,mail/alias.c,mail/decode.c,
	mail/folders.c,mail/mail.c,mail/mail.h,mail/mailline.c,
	mail/msgset.y,mail/send.c,mail/util.c,mail.local/mail.local.h,
	mail.local/main.c,mailbox/amd.c,mailbox/attribute.c,
	mailbox/auth.c,mailbox/body.c,mailbox/debug.c,mailbox/envelope.c,
	mailbox/filter.c,mailbox/filter_rfc822.c,mailbox/filter_trans.c,
	mailbox/folder.c,mailbox/header.c,mailbox/locker.c,
	mailbox/mailbox.c,mailbox/mailer.c,mailbox/message.c,
	mailbox/mu_argp.c,mailbox/mu_auth.c,mailbox/observer.c,
	mailbox/property.c,mailbox/registrar.c,mailbox/stream.c,
	mailbox/ticket.c,mailbox/wicket.c,mailbox/imap/folder.c,
	mailbox/imap/mbox.c,mailbox/include/amd.h,
	mailbox/include/attribute0.h,mailbox/include/auth0.h,
	mailbox/include/debug0.h,mailbox/include/envelope0.h,
	mailbox/include/filter0.h,mailbox/include/folder0.h,
	mailbox/include/header0.h,mailbox/include/imap0.h,
	mailbox/include/list0.h,mailbox/include/mailbox0.h,
	mailbox/include/mailer0.h,mailbox/include/message0.h,
	mailbox/include/observer0.h,mailbox/include/registrar0.h,
	mailbox/include/stream0.h,mailbox/include/url0.h,
	mailbox/maildir/maildir.h,mailbox/mbox/folder.c,
	mailbox/mbox/mbox.c,mailbox/mbox/mbox0.h,mailbox/nntp/folder.c,
	mailbox/nntp/mbox.c,mailbox/nntp/nntp0.h,mh/fmtcheck.c,mh/mh.h,
	mh/mh_alias.l,mh/mh_alias.y,mh/mh_format.c,mh/mh_getopt.h,
	mh/mh_list.c,mh/mh_msgset.c,mh/mhn.c,mh/pick.h,mh/refile.c,
	mh/scan.c,mh/sortm.c,readmsg/readmsg.c,readmsg/readmsg.h,
	sieve/sieve.c,include/mailutils/errno.hin: Remove __P() and
	__PMT() wrappers. 

2005-08-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mh/mhn.c (has_nonascii,finish_text_msg): New functions
	(mhn_edit): Use quoted-printable encoding if the text contains
	non-ascii characters.

2005-08-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	* configure.ac: Add -lgnuradius to AUTHLIBS
	* auth/radius.c (mu_radius_argp_parser): Only run init() if radius
	auth is really required.
	(mu_radius_authenticate,mu_auth_radius_user_by_name)
	(mu_auth_radius_user_by_uid): Fail if the module was not
	initialized
	* mail/escape.c: Use strerror uniformly
	
	* mailbox/argcv.c: Make handling of quotes consistent with shell
	rules. In particular, single quotes need not be quoted, and are
	not removed when appearing within a doubly-quoted string.
	* mailbox/testsuite/Argcv: Adapt to the modified argcv.c

	* auth/radius.c: New file. Radius authentication/authorization.
	* auth/Makefile.am (libmuauth_la_SOURCES): Add radius.c. Sorted
	sources alphabetically

	* examples/config/mailutils.dict: New file. 
	* examples/config/Makefile.am (EXTRA_DIST): Add mailutils.dict.
	Sorted files alphabetically
	
	* NEWS: Updated
	* configure.ac: Raised version number to 0.6.91.
	Check for libgnuradius (new option --disable/--enable-radius)
	At the end of configuration display the summary of enabled
	features.

	* include/mailutils/mu_auth.h (mu_auth_radius_module): New module
	(MU_AUTH_REGISTER_ALL_MODULES): Register radius
	* m4/enable.m4 (MU_ENABLE_SUPPORT): Fixed quoting error. Allow
	action-if-true to disable the feature.
	* mailbox/mu_argp.c (mu_conf_option): Reflect radius capability.

	* po/POTFILES.in: Updated

2005-08-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mail/var.c: Renamed to ...
	* mail/escape.c: ... to fix a long-standing historical
	inconsistency. 
	(var_shell,var_command,var_help,var_sign,var_bcc) 
	(var_cc,var_deadletter,var_editor,var_print,var_headers)
	(var_insert,var_quote,var_type_input,var_read,var_subj) 
	(var_to,var_visual,var_write,var_exit,var_pipe): Renamed:
	s/var_/escape_/. All callers updated
	* mail/Makefile.am,mail/mail.h,mail/table.c: Likewise

	* include/mailutils/argcv.h (argcv_get_n): New function
	* mailbox/argcv.c: Likewise
	
	* mail/alias.c (alias_iterate_first,alias_iterate_next)
	(alias_iterate_end): New functions for readline completion
	support. 
	* mail/cd.c (mail_cd): Check chdir return value
	* mail/file.c (mail_expand_name): Do not proceed to opening the
	mailbox if failed to get its name
	* mail/help.c (mail_help): Use mail_command_help()
	* mail/list.c (mail_list): Use mail_command_list()
	* mail/mail.h (mail_command_entry): Rewritten
	(mail_escape_entry,struct mail_command): New data type
	(mail_command_table,mail_escape_table): Variables removed
	(util_find_entry): Change prototype
	(util_help,util_command_list)
	(mail_find_command,mail_find_escape,mail_command_help)
	(mail_escape_help,mail_command_list): New functions
	(util_help): Removed
	(alias_iterate_first,alias_iterate_next,alias_iterate_end)
	(var_iterate_first,var_iterate_next,var_iterate_end): New functions
	(file_compl,no_compl,msglist_compl,msglist_file_compl,dir_compl
	(command_compl,alias_compl,var_compl): New functions for readline
	completion support
	* mail/mailline.c (file_compl,no_compl,msglist_compl)
	(msglist_file_compl,dir_compl)
	(command_compl,alias_compl,var_compl): New functions for readline
	completion support
	* mail/send.c: Use mail_find_escape()
	* mail/table.c (mail_command_table,mail_escape_table): Changed
	data type
	(mail_find_command,mail_command_help,mail_command_list)
	(mail_command_name,mail_find_escape,mail_escape_help): New
	functions
	* mail/util.c: Rewritten mail variables support using list_t.
	(util_find_entry,util_help): Rewritten to work with opaque data
	tables
	(util_command_list): New function
	(var_iterate_first,var_iterate_next,var_iterate_end): New
	functions
	(util_folder_path): Convert folder to full name
	* mail/var.c: Use mail_find_command() and mail_escape_help().
	* mailbox/mbox/folder.c (get_pathname): Make sure no extra slash
	is inserted.
	* mailbox/list.c (list_to_array): Bugfix. The counter was not
	incremented.
	
	* po/POTFILES.in: Add mail/cd.c

2005-08-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/rfc/rfc3501.txt: New file
	* doc/rfc/Makefile.am: Add rfc3501.txt

	* imap4d/copy.c (imap4d_copy0): Minor improvement
	* imap4d/fetch.c (imap4d_fetch0): Ignore non-existing uids instead
	of diagnosing an error. This complies to RFC 3501.
	* imap4d/util.c (util_msgset): For message sets in form X:Y where
	Y is a not-existing UID greater than maximum UID value in the
	mailbox, replace Y with the latter.

	* imap4d/testsuite/imap4d/IDEF0955.exp: Synchronize with the
	recent changes.

2005-07-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	* NEWS: Updated
	
	* examples/mimetest.c: Produce more detailed diagnostics
	* mail/copy.c: Likewise
	* mail/quit.c: Likewise
	* mail/send.c: Likewise
	* mail/page.c (cond_page_invalidate): Bugfix

	* mailbox/errors (MU_READ_ERROR): New error code
	
	* include/mailutils/folder.h: Moved MU_FOLDER_ATTRIBUTE_.* to
	types.h
	* include/mailutils/types.h (MU_FOLDER_ATTRIBUTE_FILE)
	(MU_FOLDER_ATTRIBUTE_DIRECTORY): New defines
	* include/mailutils/registrar.h (_is_scheme, registrar_lookup):
	Take three arguments. All callers updated
	Raised path_record priority to 1000.
	* mailbox/registrar.c: Likewise
	* mailbox/folder.c: Updated calls to registrar_lookup and
	declarations of _is_scheme methods
	* mailbox/mailer.c: Likewise
	* mailbox/maildir/folder.c: Likewise
	* mailbox/mbox/folder.c: Likewise
	* mailbox/mh/folder.c: Likewise
	
	* mailbox/list.c (_insert_item): Bugfix
	* mailbox/testsuite/mailbox/list.exp: New tests
	* mailbox/mailbox.c (mailbox_folder_create): New function
	(mailbox_create): Use mailbox_folder_create.

	* mailbox/rfc2047.c (rfc2047_encode): Bugfix.

	* mail/page.c (page_move): Fix start msg calculation
	
	* include/mailutils/list.h (list_insert): Accept additional
	argument indicating whether to insert item before or after the
	reference one.
	* mailbox/list.c: Likewise
	* examples/listop.c (ins): New option 'before' allows to insert an
	item before another one.
	* mailbox/testsuite/mailbox/list.exp: Test new list operations.
	* mh/mh_alias.y: Updated list_insert invocations
	* mh/mh_format.c (builtin_putnum): Minor fix
	 
	* comsat/comsat.c: Use registrar_record instead of directly
	accessing registrar list.
	* examples/mimetest.c: Likewise
	* examples/msg-send.c: Likewise
	* examples/mta.c: Likewise
	* libmu_scm/mu_scm.c: Likewise
	* mail.local/main.c: Likewise
	* mail.remote/mail.remote.c: Likewise

	* mailbox/registrar.c (registrar_get_list): Split into two
	calls. The registrar_get_list proper is deprecated.
	(registrar_get_iterator,registrar_lookup): New functions
	(registrar_record,unregistrar_record): Use _registrar_get_list

	* mailbox/folder.c (folder_create): Rewritten using
	registrar_lookup()
	* mailbox/mailbox.c (mailbox_create): Likewise
	* mailbox/mailer.c (mailer_create): Likewise

	* mailbox/sendmail.c: Updated declarations of struct _record
	objects.
	* mailbox/smtp.c: Likewise
	* mailbox/imap/folder.c: Likewise
	* mailbox/maildir/folder.c: Likewise
	* mailbox/mbox/folder.c: Likewise
	* mailbox/mh/folder.c: Likewise
	* mailbox/nntp/folder.c: Likewise
	* mailbox/pop/folder.c: Likewise
	
	* include/mailutils/registrar.h (struct _record.priority): New
	member.
	(registrar_get_list): Mark as deprecated
	(registrar_get_iterator,registrar_lookup): New function
	(MU_IMAP_PRIO etc): New defines
	(mu_register_all_mbox_formats,mu_register_local_mbox_formats)
	(mu_register_remote_mbox_formats,mu_register_all_mailer_formats)
	(mu_register_extra_formats): Use registrar_record

	* include/mailutils/types.h: Minor stylistic fix

2005-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* mailbox/locker.c (locker_lock): Allow for non-absolute file
	names. 

2005-07-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	* libsieve/extensions/vacation.c: Unconditionally include mu_dbm.h
	* mailbox/mutil.c (mu_get_homedir): Use EUID to determine user
	identity.

2005-07-08  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/mime.c (_mime_get_param): Initialize was_quoted to
	0. Problem reported by Shashank Kavishwar <s_kavishwar@hotmail.com>.
	
2005-07-07  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* libsieve/actions.c: Fall back to "Sender:" and "From:" headers
	(in that order), if the envelope sender is not available.

2005-06-29  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/argcv.c (argcv_scan): Improved scanning.
	* mailbox/testsuite/Argcv: New tests

	* mailbox/argcv.c (argcv_scan,argcv_quoted_length)
	(argcv_quote_copy): Fixed handling of unmatched quotes.

2005-06-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* include/mailutils/argcv.h (argcv_unescape_char): Renamed to
	argcv_unquote_char
	(argcv_escape_char): Renamed to argcv_quote_char.
	(argcv_quoted_length,argcv_quote_copy): New functions
	* mailbox/argcv.c (argcv_scan,xtonum): Improved parser
	(argcv_unescape_char): Renamed to
	argcv_unquote_char
	(argcv_escape_char): Renamed to argcv_quote_char.
	(argcv_quoted_length,argcv_quote_copy): New functions
	(argcv_unquote_copy): (ex. unescape_copy): Fixed handling of
	escaped sequences.
	(argcv_get,argcv_free,argcv_string): Standardized return value.

	* comsat/action.c: argcv_unescape_char renamed to argcv_unquote_char
	* libsieve/sieve.l: Likewise

	* examples/argcv.c: New file
	* examples/Makefile.am: Add argcv.c

	* mailbox/testsuite/Argcv: New file
	* mailbox/testsuite/mailbox/argcv.exp: New test
	* mailbox/testsuite/mailbox/DISTFILES: Add argcv.exp
	
2005-06-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* NEWS: Updated
	* README-alpha: Updated
	* include/mailutils/mailbox.h
	(mu_path_maildir,mu_path_folder_dir): Removed
	(mu_set_mail_directory,mu_set_folder_directory)
	(mu_mail_directory,mu_folder_directory)
	(mu_construct_user_mailbox_url,mailbox_get_flags): New functions.
	* mailbox/mbx_default.c: Likewise.
	* include/mailutils/mutil.h (mu_normalize_maildir): Renamed to
	(mu_normalize_mailbox_url)
	* libmu_scm/mu_mailbox.c (scm_mu_mail_directory)
	(scm_mu_folder_directory): New function
	* libmu_scm/mu_scm.c (_mu_scm_path_maildir)
	(_mu_scm_path_folder_dir): Removed
	
	* auth/sql.c: Use mu_mail_directory, mu_folder_directory and
	related calls.
	* guimb/collect.c: Likewise.
	* mailbox/mu_argp.c: Likewise.
	* mailbox/mutil.c: Likewise.
	* mailbox/system.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/send.c: Likewise.
	* mh/whom.c: Likewise.
	
	* mh/mh.h (mh_global_profile_get): Changed prototype.
	* mh/mh_global.c: Likewise.
	
	* mailbox/imap/mbox.c (imap_messages_count): Use SELECT or EXAMINE
	depending on the mailbox status.
	(imap_expunge): Return EACCES if the mailbox is read-only

	* examples/http.c: Accept up to two arguments: hostname to connect
	to and URL of the page to get.

	* imap4d/close.c: Do not attempt to flush a mailbox opened in
	read-only mode.

	* mail/file.c (mail_file): Invalidate current page map.
	* mail/mail.h: Updated
	* mail/page.c (set_cursor): Use page_move(0) to correctly update
	the map.

	* mailbox/errors (MU_ERR_BAD_FILENAME): New error code.
	* mailbox/mailbox.c (mailbox_get_flags): New function
	
	* imap4d/util.c: Minor correction
	* mail/decode.c: Likewise
	* mail.local/main.c: Likewise
	* frm/from.c: Removed unused variable

2005-06-15  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* examples/mta.c (mta_smtp): Fixed race condition between printing
	the port number, which will be used by the testsuite, and actually
	starting to listen on that port.
	* mail/page.c: New file. Implements an abstract output page.
	* mail/Makefile.am (mail_SOURCES): Add page.c. Alphabetized
	sources.
	
	* mail/delete.c, mail/edit.c, mail/eq.c, mail/file.c,
	mail/followup.c, mail/from.c, mail/headers.c, mail/hold.c,
	mail/mail.c, mail/mailline.c, mail/mbox.c, mail/msgset.y,
	mail/next.c, mail/previous.c, mail/print.c, mail/reply.c,
	mail/size.c, mail/summary.c, mail/top.c, mail/touch.c,
	mail/undelete.c, mail/util.c, mail/visual.c, mail/write.c,
	mail/z.c: Use new pager functions.
	
	* mail/mail.h: New declarations

	* mail/testsuite/mail/z.exp: Fixed tests to match our improved
	output. 

2005-06-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/amd.c (amd_expunge): Unlink the message file if
	msg_file_name returns NULL.
	* mailbox/maildir/mbox.c (maildir_message_name): Return NULL for
	deleted messages.

	* mailbox/include/stream0.h (struct rbuffer.count): Changed type
	to size_t. Reported by Joseph Caputo <caputo@qedinfo.com>
	* mailbox/stream.c (refill): Removed useless typecast

	* mail/util.c (util_save_outgoing): Rewritten using mailbox
	functions. `set record' can now point to any valid mailbox type.

2005-06-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* frm/common.c (get_charset): Make sure output_charset is not NULL.

2005-06-06  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/amd.c (amd_envelope_date): Always convert date to ctime
	format. 

2005-05-31  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/maildir/mbox.c (maildir_uniq): Fix memory overwrite.

2005-05-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mailbox/amd.c (amd_envelope_date): Reformat Delivery-Date value
	to standard ctime format. Fix memory leak.
	(amd_envelope_sender): Propagate return from header_aget_value()
	back to the caller.
	* mailbox/mbox/mbox.c (restore_sender,restore_date): New
	functions.
	(mbox_append_message0): Use above functions to create sender/date
	values if these are not supplied.
	* movemail/movemail.c (move_message): Fix error diagnostics format.

2005-05-24  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* examples/Makefile.am (noinst_PROGRAMS): Add encode2047. Sorted
	alphabetically.
	* examples/encode2047.c: New file.
	* examples/base64.c (main): Add option -E (encoding). The program
	can now be used to test any encoder/decoder filters, so its name
	is kind of misnomer.
	* mailbox/errors (MU_ERR_BAD_2047_ENCODING): New error code.
	* mailbox/filter_trans.c (qp_encode): Do not keep track of the
	whitespace. Proposed by Amit Jhawar <ajhawar@frontbridge.com>.
	(Q_printable_char_p): TAB is not a printable char.
	(Q_encode): Bugfix: 0x20 is represented by underscore, not vice
	versa.
	* mailbox/rfc2047.c (rfc2047_encode): Bugfix. Use proper encoding
	types. Convert "base64" to "B" and "quoted-printable" to
	"Q". Check return values from stream creation functions. Do not
	destroy input_stream if output_stream was destroyed (prevents
	coredump).
	* scripts/config.rpath: Removed automatically generated file.
	* THANKS: Added Kidong Lee and Amit Jhawar.
	* examples/.cvsignore: Add encode2047. Sort entries.
	
2005-05-23  Kidong Lee  <briankdlee@yahoo.com>

	* mailbox/rfc2047.c (rfc2047_encode): Rewritten using filters
	and streams.

2005-05-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
	
	* mailbox/mutil.c: include <sys/select.h>
	* lib/mailcap.c: Provide a replacement for FNM_CASEFOLD
	Reported by Jerry Heyman <heymanj@acm.org>.

	* configure.ac: Compute the value of ULONG_MAX for use in the
	testsute.
	* imap4d/testsuite/Makefile.am (site.exp): Set MU_ULONG_MAX
	* imap4d/testsuite/imap4d/IDEF0955.exp: Compute upper limit for
	the message set spec based on the value of MU_ULONG_MAX.
	* imap4d/testsuite/imap4d/IDEF0956.exp: Likewise

2005-05-20  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* imap4d/fetch.c (fetch_getcommand): Changed proto to make gcc 4.0
	happy. 

2005-05-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* auth/sql.c (sql_escape_string): Escape backslashes.
	
	The sources before this point are tagged alpha_0_6_90.

2005-05-17  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* configure.ac: Updated FSF address. Raised version number to
	0.6.90
	
	Updated FSF address:
	
	* COPYING, COPYING.LESSER, Makefile.am, NEWS, 
	auth/Makefile.am, auth/gsasl.c, auth/lbuf.c, auth/lbuf.h,
	auth/pam.c, auth/sql.c, auth/sql.h, auth/tls.c,
	auth/virtual.c, comsat/Makefile.am, comsat/action.c,
	comsat/cfg.c, comsat/comsat.c, comsat/comsat.h,
	config/Makefile.am, config/mailutils-config.c,
	doc/Makefile.am, doc/man/Makefile.am, doc/rfc/Makefile.am,
	doc/texinfo/COPYING.DOC, doc/texinfo/Makefile.am,
	doc/texinfo/fdl.texi, doc/texinfo/mailutils.texi,
	doc/texinfo/muint.texi, dotlock/Makefile.am,
	dotlock/dotlock.c, examples/Makefile.am, examples/addr.c,
	examples/base64.c, examples/decode2047.c, examples/http.c,
	examples/iconv.c, examples/listop.c, examples/mailcap.c,
	examples/mimetest.c, examples/msg-send.c,
	examples/mta.c, examples/muemail.c, examples/murun.c,
	examples/nntpclient.c, examples/numaddr.c,
	examples/pop3client.c, examples/sfrom.c,
	examples/url-parse.c, examples/config/Makefile.am,
	examples/cpp/Makefile.am, examples/scheme/Makefile.am,
	examples/scheme/reply.scm, frm/Makefile.am,
	frm/common.c, frm/frm.c, frm/frm.h, frm/from.c,
	frm/testsuite/Makefile.am, frm/testsuite/frm/test.exp,
	guimb/Makefile.am, guimb/collect.c, guimb/guimb.h,
	guimb/main.c, guimb/util.c, guimb/scm/Makefile.am,
	guimb/scm/mimeheader.scm, guimb/scm/numaddr.scm,
	guimb/scm/redirect.scm, guimb/scm/reject.scm,
	guimb/scm/sieve-core.scm, guimb/scm/sieve.scm.in,
	guimb/scm/vacation.scm, imap4d/Makefile.am,
	imap4d/append.c, imap4d/auth_gsasl.c, imap4d/auth_gss.c,
	imap4d/authenticate.c, imap4d/bye.c, imap4d/capability.c,
	imap4d/check.c, imap4d/close.c, imap4d/commands.c,
	imap4d/copy.c, imap4d/create.c, imap4d/delete.c,
	imap4d/examine.c, imap4d/expunge.c, imap4d/fetch.c,
	imap4d/idle.c, imap4d/imap4d.c, imap4d/imap4d.h,
	imap4d/list.c, imap4d/login.c, imap4d/logout.c,
	imap4d/lsub.c, imap4d/namespace.c, imap4d/noop.c,
	imap4d/rename.c, imap4d/search.c, imap4d/select.c,
	imap4d/signal.c, imap4d/starttls.c, imap4d/status.c,
	imap4d/store.c, imap4d/subscribe.c, imap4d/sync.c,
	imap4d/uid.c, imap4d/unsubscribe.c, imap4d/util.c,
	imap4d/version.c, imap4d/testsuite/Makefile.am,
	imap4d/testsuite/imap4d/IDEF0955.exp,
	imap4d/testsuite/imap4d/IDEF0956.exp,
	imap4d/testsuite/imap4d/anystate.exp,
	imap4d/testsuite/imap4d/append.exp,
	imap4d/testsuite/imap4d/create.exp,
	imap4d/testsuite/imap4d/examine.exp,
	imap4d/testsuite/imap4d/expunge.exp,
	imap4d/testsuite/imap4d/fetch.exp,
	imap4d/testsuite/imap4d/list.exp,
	imap4d/testsuite/imap4d/search.exp,
	imap4d/testsuite/imap4d/x.exp,
	imap4d/testsuite/lib/imap4d.exp,
	include/Makefile.am, include/mailutils/Makefile.am,
	include/mailutils/address.h, include/mailutils/argcv.h,
	include/mailutils/argp.h, include/mailutils/attribute.h,
	include/mailutils/auth.h, include/mailutils/body.h,
	include/mailutils/daemon.h, include/mailutils/debug.h,
	include/mailutils/envelope.h, include/mailutils/errno.hin,
	include/mailutils/error.h, include/mailutils/filter.h,
	include/mailutils/folder.h, include/mailutils/gsasl.h,
	include/mailutils/guile.h, include/mailutils/header.h,
	include/mailutils/iterator.h, include/mailutils/libsieve.h,
	include/mailutils/list.h, include/mailutils/locker.h,
	include/mailutils/mailbox.h, include/mailutils/mailcap.h,
	include/mailutils/mailer.h, include/mailutils/mailutils.h,
	include/mailutils/message.h, include/mailutils/mime.h,
	include/mailutils/monitor.h, include/mailutils/mu_auth.h,
	include/mailutils/mutil.h, include/mailutils/nls.h,
	include/mailutils/nntp.h, include/mailutils/observer.h,
	include/mailutils/parse822.h, include/mailutils/pop3.h,
	include/mailutils/property.h, include/mailutils/refcount.h,
	include/mailutils/registrar.h, include/mailutils/sql.h,
	include/mailutils/stream.h, include/mailutils/tls.h,
	include/mailutils/types.h, include/mailutils/url.h,
	include/mailutils/gnu/Makefile.am,
	include/mailutils/sys/Makefile.am,
	include/mailutils/sys/nntp.h, include/mailutils/sys/pop3.h,
	lib/Makefile.am, lib/allocsa.c, lib/allocsa.h,
	lib/asprintf.c, lib/daemon.c, lib/error.c, lib/error.h,
	lib/exit.h, lib/exitfail.c, lib/exitfail.h,
	lib/fnmatch_.h, lib/fnmatch_loop.c, lib/getpass.c,
	lib/getpass.h, lib/mailcap.c, lib/malloc.c,
	lib/mbswidth.c, lib/mbswidth.h, lib/mu_asprintf.h,
	lib/mu_dbm.c, lib/mu_dbm.h, lib/obstack.c, lib/obstack.h,
	lib/realloc.c, lib/setenv.c, lib/setenv.h, lib/snprintf.c,
	lib/snprintf.h, lib/stdbool_.h, lib/unsetenv.c, lib/utmp.c,
	lib/vasprintf.c, lib/vasprintf.h, lib/xalloc.h,
	lib/xalloc_die.c, lib/xmalloc.c, lib/xsize.h,
	lib/xstrtol.c, lib/xstrtol.h, libmu_scm/Makefile.am,
	libmu_scm/mailutils.scm.in, libmu_scm/mu_address.c,
	libmu_scm/mu_body.c, libmu_scm/mu_guimb.c,
	libmu_scm/mu_logger.c, libmu_scm/mu_mailbox.c,
	libmu_scm/mu_message.c, libmu_scm/mu_mime.c,
	libmu_scm/mu_port.c, libmu_scm/mu_scm.c,
	libmu_scm/mu_scm.h, libmu_scm/mu_util.c,
	libsieve/Makefile.am, libsieve/actions.c, libsieve/argp.c,
	libsieve/comparator.c, libsieve/load.c, libsieve/prog.c,
	libsieve/register.c, libsieve/relational.c,
	libsieve/require.c, libsieve/runtime.c, libsieve/sieve.h,
	libsieve/sieve.l, libsieve/sieve.y, libsieve/tests.c,
	libsieve/util.c, libsieve/extensions/Makefile.am,
	libsieve/extensions/list.c, libsieve/extensions/spamd.c,
	libsieve/extensions/timestamp.c,
	libsieve/extensions/vacation.c, m4/db2.m4, m4/enable.m4,
	m4/gnulib.m4, m4/gsasl.m4, m4/guile.m4, m4/mu_libobj.m4,
	m4/tls.m4, mail/Makefile.am, mail/alias.c,
	mail/alt.c, mail/cd.c, mail/copy.c, mail/decode.c,
	mail/delete.c, mail/dp.c, mail/echo.c, mail/edit.c,
	mail/eq.c, mail/exit.c, mail/file.c, mail/folders.c,
	mail/followup.c, mail/from.c, mail/headers.c, mail/help.c,
	mail/hold.c, mail/if.c, mail/inc.c, mail/list.c,
	mail/mail.c, mail/mail.h, mail/mailline.c, mail/mbox.c,
	mail/msgset.y, mail/next.c, mail/pipe.c, mail/previous.c,
	mail/print.c, mail/quit.c, mail/reply.c, mail/retain.c,
	mail/save.c, mail/send.c, mail/set.c, mail/setenv.c,
	mail/shell.c, mail/size.c, mail/source.c, mail/summary.c,
	mail/table.c, mail/tag.c, mail/top.c, mail/touch.c,
	mail/unalias.c, mail/undelete.c, mail/unset.c,
	mail/util.c, mail/var.c, mail/version.c, mail/visual.c,
	mail/write.c, mail/z.c, mail/testsuite/Makefile.am,
	mail/testsuite/lib/mail.exp, mail/testsuite/mail/alias.exp,
	mail/testsuite/mail/folder.exp,
	mail/testsuite/mail/read.exp, mail/testsuite/mail/send.exp,
	mail/testsuite/mail/tag.exp, mail/testsuite/mail/write.exp,
	mail/testsuite/mail/z.exp, mail.local/Makefile.am,
	mail.local/mail.local.h, mail.local/mailquota.c,
	mail.local/main.c, mail.local/script.c,
	mail.local/testsuite/Data,
	mail.local/testsuite/Makefile.am,
	mail.local/testsuite/lib/mail.local.exp,
	mail.local/testsuite/mail.local/deliver.exp,
	mail.remote/Makefile.am, mail.remote/mail.remote.c,
	mail.remote/testsuite/Data,
	mail.remote/testsuite/Makefile.am,
	mail.remote/testsuite/lib/mail.remote.exp,
	mail.remote/testsuite/mail.remote/send.exp,
	mailbox/Makefile.am, mailbox/address.c, mailbox/alloca_.h,
	mailbox/amd.c, mailbox/argcv.c, mailbox/argp-ba.c,
	mailbox/argp-eexst.c, mailbox/argp-fmtstream.c,
	mailbox/argp-fmtstream.h, mailbox/argp-fs-xinl.c,
	mailbox/argp-help.c, mailbox/argp-namefrob.h,
	mailbox/argp-parse.c, mailbox/argp-pv.c,
	mailbox/argp-pvh.c, mailbox/argp-xinl.c, mailbox/argp.h,
	mailbox/asnprintf.c, mailbox/attachment.c,
	mailbox/attribute.c, mailbox/auth.c, mailbox/body.c,
	mailbox/daemon.c, mailbox/date.c, mailbox/debug.c,
	mailbox/envelope.c, mailbox/errors, mailbox/fgetpwent.c,
	mailbox/file_stream.c, mailbox/filter.c,
	mailbox/filter_iconv.c, mailbox/filter_rfc822.c,
	mailbox/filter_trans.c, mailbox/folder.c,
	mailbox/getline.c, mailbox/getline.h, mailbox/getndelim2.c,
	mailbox/getndelim2.h, mailbox/getopt.c,
	mailbox/getopt1.c, mailbox/getopt_.h, mailbox/getopt_int.h,
	mailbox/gettext.h, mailbox/header.c, mailbox/iterator.c,
	mailbox/list.c, mailbox/locale.c, mailbox/locker.c,
	mailbox/mailbox.c, mailbox/mailcap.c, mailbox/mailer.c,
	mailbox/mapfile_stream.c, mailbox/mbx_default.c,
	mailbox/md5.c, mailbox/md5.h, mailbox/memory_stream.c,
	mailbox/mempcpy.c, mailbox/mempcpy.h, mailbox/message.c,
	mailbox/mime.c, mailbox/minmax.h, mailbox/monitor.c,
	mailbox/mu_argp.c, mailbox/mu_auth.c, mailbox/muerrno.cin,
	mailbox/muerror.c, mailbox/munre.c, mailbox/mutil.c,
	mailbox/nls.c, mailbox/observer.c, mailbox/parse822.c,
	mailbox/parsedate.y, mailbox/printf-args.c,
	mailbox/printf-args.h, mailbox/printf-parse.c,
	mailbox/printf-parse.h, mailbox/property.c,
	mailbox/regex.c, mailbox/regex.h, mailbox/registrar.c,
	mailbox/rfc2047.c, mailbox/sendmail.c, mailbox/smtp.c,
	mailbox/strcase.h, mailbox/strcasecmp.c,
	mailbox/strchrnul.c, mailbox/strchrnul.h,
	mailbox/stream.c, mailbox/strndup.c, mailbox/strndup.h,
	mailbox/strnlen.c, mailbox/strtok_r.c, mailbox/strtok_r.h,
	mailbox/sysexit_.h, mailbox/system.c, mailbox/tcp.c,
	mailbox/ticket.c, mailbox/unlocked-io.h, mailbox/url.c,
	mailbox/url_sendmail.c, mailbox/url_smtp.c,
	mailbox/vasnprintf.c, mailbox/vasnprintf.h,
	mailbox/vsnprintf.c, mailbox/vsnprintf.h, mailbox/wicket.c,
	mailbox/xsize.h, mailbox/imap/Makefile.am,
	mailbox/imap/folder.c, mailbox/imap/mbox.c,
	mailbox/imap/url.c, mailbox/include/Makefile.am,
	mailbox/include/address0.h, mailbox/include/amd.h,
	mailbox/include/attribute0.h, mailbox/include/auth0.h,
	mailbox/include/body0.h, mailbox/include/debug0.h,
	mailbox/include/envelope0.h, mailbox/include/filter0.h,
	mailbox/include/folder0.h, mailbox/include/header0.h,
	mailbox/include/imap0.h, mailbox/include/iterator0.h,
	mailbox/include/list0.h, mailbox/include/mailbox0.h,
	mailbox/include/mailer0.h, mailbox/include/message0.h,
	mailbox/include/mime0.h, mailbox/include/monitor0.h,
	mailbox/include/observer0.h, mailbox/include/property0.h,
	mailbox/include/registrar0.h, mailbox/include/stream0.h,
	mailbox/include/url0.h, mailbox/maildir/Makefile.am,
	mailbox/maildir/folder.c, mailbox/maildir/maildir.h,
	mailbox/maildir/mbox.c, mailbox/mbox/Makefile.am,
	mailbox/mbox/folder.c, mailbox/mbox/mbox.c,
	mailbox/mbox/mbox0.h, mailbox/mbox/mboxscan.c,
	mailbox/mbox/url.c, mailbox/mh/Makefile.am,
	mailbox/mh/folder.c, mailbox/mh/mbox.c,
	mailbox/nntp/Makefile.am, mailbox/nntp/folder.c,
	mailbox/nntp/mbox.c, mailbox/nntp/nntp0.h,
	mailbox/nntp/nntp_article.c, mailbox/nntp/nntp_body.c,
	mailbox/nntp/nntp_carrier.c, mailbox/nntp/nntp_connect.c,
	mailbox/nntp/nntp_create.c, mailbox/nntp/nntp_date.c,
	mailbox/nntp/nntp_debug.c, mailbox/nntp/nntp_destroy.c,
	mailbox/nntp/nntp_disconnect.c, mailbox/nntp/nntp_group.c,
	mailbox/nntp/nntp_head.c, mailbox/nntp/nntp_help.c,
	mailbox/nntp/nntp_ihave.c, mailbox/nntp/nntp_last.c,
	mailbox/nntp/nntp_list_active.c,
	mailbox/nntp/nntp_list_distribpats.c,
	mailbox/nntp/nntp_list_distributions.c,
	mailbox/nntp/nntp_list_extensions.c,
	mailbox/nntp/nntp_list_newsgroups.c,
	mailbox/nntp/nntp_list_times.c,
	mailbox/nntp/nntp_mode_reader.c,
	mailbox/nntp/nntp_newgroups.c, mailbox/nntp/nntp_newnews.c,
	mailbox/nntp/nntp_next.c, mailbox/nntp/nntp_post.c,
	mailbox/nntp/nntp_quit.c, mailbox/nntp/nntp_readline.c,
	mailbox/nntp/nntp_response.c, mailbox/nntp/nntp_sendline.c,
	mailbox/nntp/nntp_stat.c, mailbox/nntp/nntp_stream.c,
	mailbox/nntp/nntp_timeout.c, mailbox/nntp/url.c,
	mailbox/pop/Makefile.am, mailbox/pop/folder.c,
	mailbox/pop/mbox.c, mailbox/pop/pop3_apop.c,
	mailbox/pop/pop3_capa.c, mailbox/pop/pop3_carrier.c,
	mailbox/pop/pop3_connect.c, mailbox/pop/pop3_create.c,
	mailbox/pop/pop3_debug.c, mailbox/pop/pop3_dele.c,
	mailbox/pop/pop3_destroy.c, mailbox/pop/pop3_disconnect.c,
	mailbox/pop/pop3_list.c, mailbox/pop/pop3_lista.c,
	mailbox/pop/pop3_noop.c, mailbox/pop/pop3_pass.c,
	mailbox/pop/pop3_quit.c, mailbox/pop/pop3_readline.c,
	mailbox/pop/pop3_response.c, mailbox/pop/pop3_retr.c,
	mailbox/pop/pop3_rset.c, mailbox/pop/pop3_sendline.c,
	mailbox/pop/pop3_stat.c, mailbox/pop/pop3_stls.c,
	mailbox/pop/pop3_stream.c, mailbox/pop/pop3_timeout.c,
	mailbox/pop/pop3_top.c, mailbox/pop/pop3_uidl.c,
	mailbox/pop/pop3_uidla.c, mailbox/pop/pop3_user.c,
	mailbox/pop/url.c, mailbox/testsuite/Addrs,
	mailbox/testsuite/Mailcap, mailbox/testsuite/Makefile.am,
	mailbox/testsuite/Mime, mailbox/testsuite/RFC2047,
	mailbox/testsuite/Urls, mailbox/testsuite/lib/mailbox.exp,
	mailbox/testsuite/mailbox/address.exp,
	mailbox/testsuite/mailbox/base64.exp,
	mailbox/testsuite/mailbox/list.exp,
	mailbox/testsuite/mailbox/mailcap.exp,
	mailbox/testsuite/mailbox/mime.exp,
	mailbox/testsuite/mailbox/rfc2047.exp,
	mailbox/testsuite/mailbox/url.exp, messages/Makefile.am,
	messages/messages.c, messages/testsuite/Makefile.am,
	messages/testsuite/messages/test.exp, mh/Makefile.am,
	mh/ali.c, mh/anno.c, mh/comp.c, mh/compcommon.c,
	mh/fmtcheck.c, mh/folder.c, mh/forw.c, mh/inc.c,
	mh/install-mh.c, mh/mailutils-mh.eli, mh/mark.c, mh/mh.h,
	mh/mh_alias.l, mh/mh_alias.y, mh/mh_argp.c, mh/mh_ctx.c,
	mh/mh_error.c, mh/mh_fmtgram.y, mh/mh_format.c,
	mh/mh_getopt.c, mh/mh_getopt.h, mh/mh_global.c,
	mh/mh_init.c, mh/mh_list.c, mh/mh_msgset.c,
	mh/mh_sequence.c, mh/mh_stream.c, mh/mh_whatnow.c,
	mh/mh_whom.c, mh/mhl.c, mh/mhn.c, mh/mhparam.c,
	mh/mhpath.c, mh/pick.c, mh/pick.h, mh/pick.y, mh/refile.c,
	mh/repl.c, mh/rmf.c, mh/rmm.c, mh/scan.c, mh/send.c,
	mh/sortm.c, mh/whatnow.c, mh/whom.c, mimeview/Makefile.am,
	mimeview/mimetypes.l, mimeview/mimetypes.y,
	mimeview/mimeview.c, mimeview/mimeview.h,
	movemail/Makefile.am, movemail/movemail.c,
	po/.cvsignore, po/ca.po, po/es.po, po/fr.po, po/pl.po,
	po/ro.po, po/ru.po, po/uk.po, pop3d/Makefile.am,
	pop3d/apop.c, pop3d/auth.c, pop3d/capa.c, pop3d/dele.c,
	pop3d/expire.c, pop3d/extra.c, pop3d/list.c, pop3d/lock.c,
	pop3d/logindelay.c, pop3d/noop.c, pop3d/pop3d.c,
	pop3d/pop3d.h, pop3d/popauth.c, pop3d/quit.c,
	pop3d/retr.c, pop3d/rset.c, pop3d/signal.c, pop3d/stat.c,
	pop3d/stls.c, pop3d/top.c, pop3d/uidl.c, pop3d/user.c,
	pop3d/testsuite/Makefile.am, pop3d/testsuite/lib/pop3d.exp,
	pop3d/testsuite/pop3d/read.exp, readmsg/Makefile.am,
	readmsg/msglist.c, readmsg/readmsg.c,
	readmsg/readmsg.h, readmsg/testsuite/Makefile.am,
	readmsg/testsuite/readmsg/test.exp,
	scripts/Makefile.am, scripts/config.rpath,
	scripts/generr.awk, scripts/texify.sed,
	scripts/ylwrap, scripts/guile-1.4/Makefile.am,
	scripts/guile-1.4/guile-doc-snarf,
	scripts/guile-1.4/guile-func-name-check,
	scripts/guile-1.4/guile-snarf.awk,
	scripts/guile-1.6/Makefile.am,
	scripts/guile-1.6/guile-doc-snarf,
	scripts/guile-1.6/guile-doc-snarf.awk, sieve/Makefile.am,
	sieve/sieve.c, sieve/testsuite/Makefile.am,
	sieve/testsuite/Redirect, sieve/testsuite/Reject,
	sieve/testsuite/lib/sieve.exp,
	sieve/testsuite/sieve/action.exp,
	sieve/testsuite/sieve/address.exp,
	sieve/testsuite/sieve/allof.exp,
	sieve/testsuite/sieve/anyof.exp,
	sieve/testsuite/sieve/envelope.exp,
	sieve/testsuite/sieve/exists.exp,
	sieve/testsuite/sieve/ext.exp,
	sieve/testsuite/sieve/false.exp,
	sieve/testsuite/sieve/header.exp,
	sieve/testsuite/sieve/i-casemap.exp,
	sieve/testsuite/sieve/i-numeric.exp,
	sieve/testsuite/sieve/i-octet.exp,
	sieve/testsuite/sieve/mul-addr.exp,
	sieve/testsuite/sieve/not.exp,
	sieve/testsuite/sieve/redirect.exp,
	sieve/testsuite/sieve/reject.exp,
	sieve/testsuite/sieve/relational.exp,
	sieve/testsuite/sieve/size.exp,
	sieve/testsuite/sieve/true.exp, sql/Makefile.am,
	sql/mysql.c, sql/odbc.c, sql/postgres.c, sql/sql.c,
	testsuite/Makefile.am, testsuite/makespool,
	testsuite/lib/mailutils.exp

2005-05-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* imap4d/fetch.c (imap4d_fetch0): Reduce memory consumption within
	the mailbox scanning loop. Break the loop when an invalid msgno is
	encountered or the message cannot be retrieved.
	(fetch_io): Check for integer overflow (IDEF0956).
	(fetch_full,fetch_rfc822_header,fetch_rfc822_text)
	(fetch_operation): Propagate return value back to the caller.
	
	* imap4d/util.c (util_finish): Fix potential vulnerability
	(IDEF0954).
	(util_msgset): Do not allow values greater than the maximum id
	number (either message number or UID) in the mailbox. Fixes (IDEF0955).
	
	* mailbox/header.c (header_get_field_name): Fix buffer overflow
	(IDEF0957).

	* doc/texinfo/sieve.texi: Fix typo

	* imap4d/testsuite/imap4d/IDEF0955.exp: New test
	* imap4d/testsuite/imap4d/IDEF0956.exp: New test
	* imap4d/testsuite/imap4d/DISTFILES: Add new files
	
2005-05-11  Sergey Poznyakoff 

	* mailbox/parsedate.y (DATE_INIT): Bugfix. Several fields in
	struct pd_date are used regardless of .mask, so it is better to
	zero out the entire structure.

2005-03-25  Sergey Poznyakoff 

	* NEWS: Updated
	* mail/decode.c (display_message0): Do not interpret MIME
	parts if metamail is unset.
	* mail/mail.c (default_setup): Set metamail
	* testsuite/etc/mail.rc: Unset metamail
	* doc/texinfo/programs.texi: Updated metamail documentation

2005-03-18  Sergey Poznyakoff

	* TODO: Updated
	* README-alpha: Updated
	* mail/shell.c (mail_execute): Restore argv[0] before exiting,
	else argcv_free coredumps.

2005-03-15  Sergey Poznyakoff  

	* mailbox/mailbox.c (mailbox_flush): Do not re-save all messages
	if the mailbox was opened in append mode.

2005-03-14  Sergey Poznyakoff 

	* mimeview/mimetypes.l (<HEX>): Bugfix
	* mimeview/mimetypes.y (b_string): Bugfix
	
2005-03-13  Sergey Poznyakoff 

	Sources are tagged alpha_0_6_1
	
	* Makefile.am (SUBDIRS): Reordered. Due to the specifics
	of gnulib imports, libmailutils depends on libmailbox.
	Added config/.
	* configure.ac (AC_CONFIG_FILES): Added config/Makefile
	* lib/mailcap.c (mime_context_fill): Return integer code
	(display_stream_mailcap): Bail out if mime_context_fill
	returns 1

	* mailbox/Makefile.am: Removed mailutils-config.c. It should
	live in a separate directory to satisfy interlibrary dependencies.
	* mailbox/mailutils-config.c: Moved to config
	* config: New directory
	* config/mailutils-config.c: New file
	* config/Makefile.am: New file
	
	* po/POTFILES.in: Updated

2005-03-13  Sergey Poznyakoff 

	* lib/mailcap.c Include ctype.h
	(mime_context_fill): Remove leading whitespace
	when preparing lists.
	(mime_context_get_content_type_value): Return integer code.
	(expand_string): Fixed expansion of %{name}
	* mh/send.c: Use gettext markers in verbose diagnostics.

2005-03-12  Sergey Poznyakoff 

	* README: Updated. Switch to outline mode.
	* README-alpha: Updated. Switch to outline mode.
	* mailbox/mutil.c: Minor indentation fix
	* mailbox/pop/pop3_sendline.c: Do not redefine _GNU_SOURCE
	* mailbox/nntp/nntp_sendline.c: Likewise

2005-03-12  Sergey Poznyakoff 

	* lib/mailcap.c: New file. Routines for displaying MIME
	messages.
	* lib/Makefile.am: Added mailcap.c
	* mimeview/mimeview.c: Rewritten using display_stream_mailcap.
	* mail/decode.c: Implemented built-in mailcap mechanism
	* mail/Makefile.am: (mail_LDADD): Changed order of loading
	libmailutils/libmailbox
	* mimeview/Makefile.am (mimeview_LDADD): Likewise
	* doc/texinfo/programs.texi (mail): Documented variable
	mimenoask
	* po/POTFILES.in: Updated
	* examples/mta.c (header): Removed unused global
	* NEWS: Updated
	
2005-03-10  Sergey Poznyakoff

	* TODO: Updated
	* imap4d/imap4d.h (define _GNU_SOURCE): Removed. Defined
	in config.h
	* mailbox/mailcap.c (mu_mailcap_entry_get_value): Bugfix: return
	ENOENT if no matching entry is found.
	* mailbox/mutil.c (mu_true_answer_p): Ignore leading whitespace.
	* mh/mh_init.c (mh_vgetyn): Synchronize with the changes to
	mu_true_answer_p().
	* mimeview/mimeview.c: Handle --no-ask and --no-interactive (-h)
	options. Continue search for a matching entry when necessary.
	Implement 'test' and 'print' commands.
	* doc/texinfo/programs.texi (mimeview): Documented new options
	
2005-03-09  Sergey Poznyakoff

	* mimeview/mimetypes.l: Bugfix: accept ',' as OR
	* mimeview/mimetypes.y: Fixed precedences of ',' and '+'.

2005-03-08  Sergey Poznyakoff

	* TODO: Updated
	* configure.ac (DEFAULT_CUPS_CONFDIR): New variable
	* doc/texinfo/programs.texi (mimeview): Documented the program
	* mimeview/Makefile.am (AM_CFLAGS): Use DEFAULT_CUPS_CONFDIR
	* mimeview/mimeview.c (create_filter,print_exit_status)
	(get_pager): New function
	(run_mailcap): Pipe file contents to the command if its invocation
	does not contain %s.
	Use pager if `copiousoutput' is specified in mailcap

	* po/POTFILES.in: Updated
	
2005-03-08  Sergey Poznyakoff 

	TODO:121 said: "file viewer, based on the mimetypes api. I want to do
	a "v foo.blah", have it look up .blah in mime.types, and do the 
	action spec'ed in mailcap."
	So, here it goes:

	* mimeview: New directory
	* mimeview/mimetypes.y: New file
	* mimeview/mimetypes.l: New file
	* mimeview/mimeview.c: New file
	* mimeview/mimeview.h: New file
	* mimeview/Makefile.am: New file
	* mimeview/.cvsignore: New file	 

	* configure.ac: Added mimeview
	* Makefile.am: Likewise
	* doc/texinfo/programs.texi (mimeview): New section.
	(mail): Document recently added variables.
	* mailbox/mailcap.c (mu_mailcap_entry_copiousoutput): Bugfix
	
2005-03-07  Sergey Poznyakoff

	* TODO: Updated
	* NEWS: Updated
	* mail/decode.c (mail_decode): Implemented new variable
	`metamail' that turns on use of metamail program for
	displaying MIME messages.
	(run_metamail): New function
	* mailbox/mutil.c (mu_spawnvp): Minor fixes

2005-03-06  Sergey Poznyakoff 

	* NEWS: Updated
	
	* auth/sql.c: Use a uniform way of filename quoting in diagnostic
	messages.
	* frm/common.c: Likewise
	* frm/from.c: Likewise
	* imap4d/authenticate.c: Likewise
	* imap4d/login.c: Likewise
	* libsieve/actions.c: Likewise
	* libsieve/extensions/vacation.c: Likewise
	* mail/var.c: Likewise
	* mail.local/mailquota.c: Likewise
	* mail.local/main.c: Likewise
	* mail.remote/mail.remote.c: Likewise
	* mailbox/mu_argp.c: Likewise
	* messages/messages.c: Likewise
	* mh/forw.c: Likewise
	* mh/mh_ctx.c: Likewise
	* mh/mh_init.c: Likewise
	* mh/send.c: Likewise
	* movemail/movemail.c: Likewise
	* pop3d/apop.c: Likewise
	* pop3d/lock.c: Likewise
	* pop3d/user.c: Likewise
	* readmsg/readmsg.c: Likewise
	* sieve/sieve.c: Likewise
	
	* mailbox/errors (MU_ERR_NO_QUERY): Fixed wording

2005-03-05  Wojciech Polak

	* frm/Makefile.am: Removed install-exec-hook after the changes
	from 2005-03-02.

2005-03-05  Sergey Poznyakoff 

	POSIX compatibility issues in mail
	
	* mail/alt.c (mail_is_my_name): Do not check `metoo'. The
	caller is responsible for that.
	* mail/reply.c (reply0): Check for `metoo' before calling
	mail_is_my_name().
	(mail_reply): Honor `flipr' variable
	* mail/decode.c: Mark message as read and shown
	* mail/mbox.c: Likewise
	* mail/pipe.c: Likewise
	* mail/print.c: Likewise
	* mail/top.c: Likewise
	* mail/undelete.c: Likewise
	* mail/visual.c: Likewise
	* mail/from.c (mail_from0): If `showto' is set and the
	mail comes from the user that invoked the program, show
	`To:' address instead of `From:'.
	* mail/mail.c (default_setup): Added variables, required by
	POSIX: flipr, showto, bang. Added placeholders for debug,
	onehop and sendwait.
	* mail/mail.h (util_mark_read): New function
	* mail/shell.c: If `bang' is set, expand every occurrence
	of ! in argument array.
	* mail/touch.c: Rewritten in accordance with POSIX specs:
	do not mbox deleted and saved messages.
	* mail/util.c (util_mark_read): New function
	
2005-03-04  Sergey Poznyakoff  

	* mail/mail.h (MAIL_ATTRIBUTE_SHOWN): New attribute. Shows
	that the message has been displayed during the current session.
	* mail/next.c (mail_next): Rewritten in accordance with POSIX:
	if the current message has not been shown yet, then show
	it. Otherwise advance to the nearest next non-deleted message.
	* mail/print.c (mail_print_msg): Set MAIL_ATTRIBUTE_SHOWN after
	displaying the message
	* mail/top.c (top0): set read attribute and MAIL_ATTRIBUTE_SHOWN
	after displaying the message

2005-03-02  Sergey Poznyakoff

	* frm/Makefile.am: Build `from'
	* frm/frm.c: Moved part of code to be shared between `frm' and
	`from' to common.c
	* frm/common.c: New file
	* frm/from.c: New file
	* frm/frm.h: New file
	* mail/quit.c: Save messages that were marked for saving to mbox
	and then deleted
	* mailbox/mbox/mbox.c (mbox_scan): Store the number of messages
	into *pcount if we don't need to rescan the mailbox.

	* po/POTFILES.in: Updated

	* from/from.c: Removed
	* from/Makefile.am: Removed
	* from/.cvsignore: Removed
	* from/testsuite: Removed
	* from/testsuite/from/test.exp: Removed
	* from/testsuite/from/DISTFILES: Removed

	* configure.ac: Removed from
	* Makefile.am: Likewise
	* doc/texinfo/programs.texi: Document `from'
	
2005-02-28  Sergey Poznyakoff

	* configure.ac: Check for FriBidi
	* frm/Makefile.am: Link with libfribidi
	* frm/frm.c: Rewritten output routines using FriBidi. Arabic
	subject lines look almost OK, except that all characters are
	displayed in isolated variant. 
	* frm/testsuite/frm/test.exp: Fixed to match the new frm output.

2005-02-27  Wojciech Polak

	* frm/Makefile.am: Added install-exec-hook for creating
	the symbolic link 'from' to 'frm'.
	* from/Makefile.am: Changed bin_PROGRAMS to noinst_PROGRAMS.

2005-02-27  Sergey Poznyakoff 

	* gnulib.modules: Add mbswidth
	* frm/frm.c: Implemented -t. Changed implementation of -Q.
	Rewritten action() to correctly handle multibyte characters
	and to provide for eventual using the BIDI algorithm.
	(print_line,format_field,format_field_simple)
	(format_field_align): New functions
	(util_getcols): Measure /dev/tty if unable to open stdout.
	(to work correctly with piped output).
	(rfc2047_decode_wrapper): Cache the determined locale.
	(get_personal): Do not limit the returned string length.
	Do not attempt to decode the raw header text, since
	parse822 will skip non-ascii characters, decode the already
	obtained personal part instead.

	* mailbox/address.c (address_aget_personal)
	(address_aget_comments): Bugfix
	* sql/mysql.c: Provide place handlers for handling MySQL 4.1.x
	scrambled passwords.
	
	Update by gnulib-sync:
	
	* m4/mbrtowc.m4: New file
	* m4/mbswidth.m4: New file
	* lib/mbswidth.c: New file
	* lib/mbswidth.h: New file
	* lib/Makefile.am: Updated
	* m4/gnulib.m4: Updated

2005-02-26  Wojciech Polak

	* mh/send.c (expand_aliases): Bugfix. Do not use statically
	allocated buffer. Use header_aget_field_name() instead.
	The utility froze with header names longer than 16 bytes.

2005-02-26  Wojciech Polak

	* mailbox/url_smtp.c (_url_smtp_init): Do not reject
	an URL with user name, password, or auth method specified.
	We will use it in further ESMTP authentication.

2005-02-26  Sergey Poznyakoff

	* sql/mysql.c: Do not use any libmysql functions to
	scramble passwords: mysql people are evidently
	unable to keep this API stable.

2005-02-25  Sergey Poznyakoff 

	* NEWS: Updated
	* auth/sql.c (mu_sql_password_type): New variable
	(--sql-password-type): New command line option
	(mu_sql_getpass): New function.
	(mu_sql_authenticate): Recognize hashed, plaintext
	and mysql scrambled passwords.
	* auth/sql.h (sql_interface): new decl
	(mu_sql_expand_query): New proto.
	* imap4d/auth_gsasl.c (cb_retrieve): Fall back to SQL
	if plaintext password file is not available.
	* include/mailutils/sql.h (mu_sql_getpass)
	(mu_sql_password_type,mu_sql_expand_query):
	(mu_check_mysql_scrambled_password): New function
	* mail.local/mailquota.c: Include <auth/sql.h>. A temporary
	solution.

	* mailbox/muerror.c (mu_syslog_error_printer): Bugfix.
	* sql/mysql.c (mu_check_mysql_scrambled_password): New function.

	* mail/mail.c: Updated copyright date.
	
2005-02-25  Sergey Poznyakoff 

	* NEWS: Updated
	* include/mailutils/libsieve.h (sieve_get_identifier): New
	function.
	(sieve_arg_error): New function.
	* libsieve/actions.c: Removed spurious indications of action
	names in diagnostic messages. Sieve_error prepends them
	automatically now.
	* libsieve/tests.c: Likewise.
	* libsieve/extensions/list.c: Likewise.
	* libsieve/extensions/timestamp.c: Likewise.
	* libsieve/extensions/vacation.c: Likewise.
	* libsieve/runtime.c (instr_action,instr_test): Update
	mach->identifier.
	* libsieve/sieve.h (struct sieve_machine.identifier): New
	field.
	
	* libsieve/util.c (sieve_value_create): Bugfix.
	(sieve_error): Prepend action or test identifier to the diagnostic
	message.
	(sieve_arg_error): New function.
	
	* po/POTFILES.in: Updated
	
2005-02-24  Sergey Poznyakoff

	Update by gnulib-sync.
	
	* lib/stdbool.h: New file
	* m4/unlocked-io.m4: New file
	* m4/argp.m4: Updated
	* m4/gnulib.m4: Updated
	* mailbox/Makefile.am: Updated

2005-02-23  Sergey Poznyakoff  

	Synchronized with the recent gnulib. Provide a way to
	facilitate further synchronizations.
	
	* gnulib.modules: New file
	* scripts/gnulib-sync: New file. Script for synchronizing
	mailutils tree with gnulib.
	* configure.ac: Updated to use new gnulib files.
	* m4/mu_libobj.m4 (MU_LIBSOURCES,MU_REPLACE_FUNCS): New defun.
	(MU_CHECK_FUNCS): Removed.

	* Makefile.am: Remove headers/
	* frm/frm.c (parse_opt): Bugfix. Was using optarg instead of arg
	* mail.local/main.c: Likewise
	* pop3d/popauth.c: Likewise
	* readmsg/readmsg.c: Likewise
	* include/mailutils/argp.h: Include errno.h
	* include/mailutils/gnu/Makefile.am: Remove posix/regex.h
	* libsieve/argp.c (sieve_argp_option): Use N_()
	* mailbox/message.c: Use new md5 calls
	* mailbox/pop/mbox.c: Likewise
	* mailbox/pop/pop3_apop.c: Likewise
	* mailbox/message.c: Likewise
	* mh/mh_error.c: Include mailutils/argp.h
	* mh/mh_getopt.c: Include string.h
	* pop3d/Makefile.am (INCLUDES): Add $(top_srcdir)/mailbox
	* pop3d/pop3d.h: Minor fix

	* lib/xalloc_die.c: New file
	* m4/gnulib.m4: New file

	* headers/.cvsignore
	* headers/Makefile.am
	* headers/getopt.h
	* headers/regex.h
	* headers/argp.h
	* headers/posix/.cvsignore
	* headers/posix/Makefile.am
	* headers/posix/regex.h
	* headers/posix

	Update by gnulib-sync. 

	* lib/asprintf.c: New file 
	* mailbox/alloca.h: New file
	* mailbox/argp.h: New file
	* mailbox/getopt.h: New file
	* lib/allocsa.c: Added to the repository
	* lib/allocsa.h: Added to the repository
	* lib/allocsa.valgrind: Added to the repository
	* lib/asprintf.c: Updated
	* lib/error.c: Added to the repository
	* lib/error.h: Updated
	* lib/exit.h: Added to the repository
	* lib/exitfail.c: Added to the repository
	* lib/exitfail.h: Added to the repository
	* lib/fnmatch.c: Updated
	* lib/fnmatch_.h: Added to the repository
	* lib/fnmatch_loop.c: Added to the repository
	* lib/getpass.c: Updated
	* lib/getpass.h: Added to the repository
	* lib/malloc.c: Updated
	* lib/obstack.c: Updated
	* lib/obstack.h: Updated
	* lib/realloc.c: Updated
	* lib/setenv.c: Updated
	* lib/setenv.h: Added to the repository
	* lib/snprintf.c: Updated
	* lib/snprintf.h: Updated
	* lib/stdbool_.h: Added to the repository
	* lib/unsetenv.c: Added to the repository
	* lib/vasprintf.c: Updated
	* lib/vasprintf.h: Added to the repository
	* lib/xalloc.h: Updated
	* lib/xmalloc.c: Updated
	* lib/xsize.h: Added to the repository
	* lib/xstrtol.c: Updated
	* lib/xstrtol.h: Updated
	* lib/xstrtoul.c: Added to the repository
	* m4/alloca.m4: Added to the repository
	* m4/allocsa.m4: Added to the repository
	* m4/argp.m4: Added to the repository
	* m4/eealloc.m4: Added to the repository
	* m4/eoverflow.m4: Added to the repository
	* m4/error.m4: Added to the repository
	* m4/exitfail.m4: Added to the repository
	* m4/extensions.m4: Added to the repository
	* m4/fnmatch.m4: Added to the repository
	* m4/getline.m4: Added to the repository
	* m4/getndelim2.m4: Added to the repository
	* m4/getopt.m4: Updated
	* m4/getpass.m4: Added to the repository
	* m4/gettext_gl.m4: Added to the repository
	* m4/glibc21_gl.m4: Added to the repository
	* m4/iconv.m4: Added to the repository
	* m4/intmax.m4: Added to the repository
	* m4/intmax_t.m4: Added to the repository
	* m4/intmax_t.m4: Added to the repository
	* m4/inttypes.m4: Added to the repository
	* m4/inttypes_h_gl.m4: Added to the repository
	* m4/inttypes_h_gl.m4: Added to the repository
	* m4/lib-ld_gl.m4: Added to the repository
	* m4/lib-prefix_gl.m4: Added to the repository
	* m4/longdouble.m4: Added to the repository
	* m4/longdouble.m4: Added to the repository
	* m4/longlong_gl.m4: Added to the repository
	* m4/longlong_gl.m4: Added to the repository
	* m4/mailbox-link.m4: Added to the repository
	* m4/mbstate_t.m4: Added to the repository
	* m4/md5.m4: Added to the repository
	* m4/mempcpy.m4: Added to the repository
	* m4/nls.m4: Added to the repository
	* m4/obstack.m4: Added to the repository
	* m4/onceonly.m4: Added to the repository
	* m4/onceonly.m4: Added to the repository
	* m4/po_gl.m4: Added to the repository
	* m4/printf-posix.m4: Added to the repository
	* m4/progtest.m4: Added to the repository
	* m4/regex.m4: Updated
	* m4/restrict.m4: Added to the repository
	* m4/setenv.m4: Added to the repository
	* m4/signed.m4: Added to the repository
	* m4/size_max.m4: Added to the repository
	* m4/size_max.m4: Added to the repository
	* m4/snprintf.m4: Added to the repository
	* m4/ssize_t.m4: Added to the repository
	* m4/stdbool.m4: Added to the repository
	* m4/stdint_h_gl.m4: Added to the repository
	* m4/stdint_h_gl.m4: Added to the repository
	* m4/strcase.m4: Added to the repository
	* m4/strchrnul.m4: Added to the repository
	* m4/strerror_r.m4: Added to the repository
	* m4/strndup.m4: Added to the repository
	* m4/strnlen.m4: Added to the repository
	* m4/strtok_r.m4: Added to the repository
	* m4/sysexits.m4: Added to the repository
	* m4/uint32_t.m4: Added to the repository
	* m4/uintmax_t_gl.m4: Added to the repository
	* m4/uintmax_t_gl.m4: Added to the repository
	* m4/ulonglong_gl.m4: Added to the repository
	* m4/ulonglong_gl.m4: Added to the repository
	* m4/vasnprintf.m4: Added to the repository
	* m4/vasprintf.m4: Added to the repository
	* m4/vsnprintf.m4: Added to the repository
	* m4/wchar_t.m4: Added to the repository
	* m4/wint_t.m4: Added to the repository
	* m4/xalloc.m4: Added to the repository
	* m4/xsize.m4: Added to the repository
	* m4/xsize.m4: Added to the repository
	* m4/xstrtol.m4: Added to the repository
	* mailbox/alloca.c: Added to the repository
	* mailbox/alloca_.h: Added to the repository
	* mailbox/argp-ba.c: Updated
	* mailbox/argp-eexst.c: Updated
	* mailbox/argp-fmtstream.c: Updated
	* mailbox/argp-fmtstream.h: Updated
	* mailbox/argp-fs-xinl.c: Updated
	* mailbox/argp-help.c: Updated
	* mailbox/argp-namefrob.h: Updated
	* mailbox/argp-parse.c: Updated
	* mailbox/argp-pv.c: Updated
	* mailbox/argp-pvh.c: Updated
	* mailbox/argp-xinl.c: Updated
	* mailbox/argp.h: Updated
	* mailbox/asnprintf.c: Added to the repository
	* mailbox/getline.c: Updated
	* mailbox/getline.h: Updated
	* mailbox/getndelim2.c: Added to the repository
	* mailbox/getndelim2.h: Added to the repository
	* mailbox/getopt.c: Updated
	* mailbox/getopt1.c: Updated
	* mailbox/getopt_.h: Added to the repository
	* mailbox/getopt_int.h: Added to the repository
	* mailbox/gettext.h: Added to the repository
	* mailbox/md5.c: Updated
	* mailbox/md5.h: Updated
	* mailbox/mempcpy.c: Added to the repository
	* mailbox/mempcpy.h: Added to the repository
	* mailbox/minmax.h: Added to the repository
	* mailbox/printf-args.c: Added to the repository
	* mailbox/printf-args.h: Added to the repository
	* mailbox/printf-parse.c: Added to the repository
	* mailbox/printf-parse.h: Added to the repository
	* mailbox/regex.c: Updated
	* mailbox/regex.h: Added to the repository
	* mailbox/strcase.h: Added to the repository
	* mailbox/strcasecmp.c: Added to the repository
	* mailbox/strchrnul.c: Updated
	* mailbox/strchrnul.h: Added to the repository
	* mailbox/strncasecmp.c: Added to the repository
	* mailbox/strndup.c: Updated
	* mailbox/strndup.h: Added to the repository
	* mailbox/strnlen.c: Updated
	* mailbox/strtok_r.c: Updated
	* mailbox/strtok_r.h: Added to the repository
	* mailbox/sysexit_.h: Added to the repository
	* mailbox/vasnprintf.c: Added to the repository
	* mailbox/vasnprintf.h: Added to the repository
	* mailbox/vsnprintf.c: Added to the repository
	* mailbox/vsnprintf.h: Added to the repository
	* mailbox/xsize.h: Added to the repository
	* scripts/config.rpath: Added to the repository
	
2005-02-21  Sergey Poznyakoff

	* libsieve/actions.c: Further unification of diagnostic style.
	* libsieve/argp.c: Likewise.
	* mail/mail.c: Likewise.
	* mail.local/mailquota.c: Likewise.
	* mailbox/mu_argp.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/send.c: Likewise.
	* sieve/sieve.c: Likewise.
	* mail.local/main.c: Add debug flag 'i' for symmetry with sieve

2005-02-16  Sergey Poznyakoff

	Fix a long-standing issue in mailbox and imap4d:
	be able to handle a case when a third-party program deletes
	some messages in the mailbox being open by imap4d (imap4d
	cannot and should not lock it, hence the possibility).
	
	* mailbox/amd.c (amd_pool_flush): New function.
	(amd_close): Call amd_pool_flush()
	and initialize amd data so that subsequent amd_open() works
	properly.
	(amd_destroy): Call amd_pool_flush.
	* mailbox/mbox/mbox.c (mbox_close): Initialize all private data
	so that subsequent mailbox_open() works properly.
	(mbox_is_updated): Updated comment

	* imap4d/bye.c (imap4d_bye0): Handle ERR_MAILBOX_CORRUPTED
	* imap4d/imap4d.h (ERR_MAILBOX_CORRUPTED): New error code.
	(imap4d_set_observer): New function
	* imap4d/select.c (imap4d_select0): Call imap4d_set_observer()
	* imap4d/sync.c (imap4d_set_observer): New function.
	(imap4d_sync): Check if the mailbox was shrunk (in libmailbox
	terms 'corrupted'). If so, reopen it and issue untagged alert.

2005-02-16  Sergey Poznyakoff

	* imap4d/auth_gsasl.c (cb_validate): Provide normal authentication
	for PLAIN and LOGIN mechanisms.

2005-02-11  Sergey Poznyakoff 

	* imap4d/unsubscribe.c: Rewritten. Thanks Andrew Barnes
	for reporting the bug.

2005-02-03  Sergey Poznyakoff

	* guimb/main.c (parse_opt): Use arg instead of optarg.
	Thanks James Dolter for reporting.

2005-01-17  Sergey Poznyakoff 

	* mailbox/parsedate.y (mu_parse_date): Initialize struct tm
	* mailbox/nntp/folder.c (nntp_folder_open): Do not use alloca
	* mailbox/nntp/mbox.c: Do not use alloca
	
	* doc/texinfo/Makefile.am: Rewritten to use gendocs.sh
	* doc/texinfo/index.html.in: Removed
	* doc/texinfo/gendocs_template: New file
	* doc/texinfo/fdl.texi: Fixed sectioning
	* doc/texinfo/programs.texi: Likewise.
	* doc/texinfo/url.texi: Likewise.
	* doc/texinfo/mailutils.texi: Fixed sectioning. Print table
	of contents after summary page, as suggested by GNU standards.

2005-01-05  Sergey Poznyakoff 

	* configure.ac (AUTHLIBS_DEPENDENCY,SQLLIB_DEPENDENCY): New
	variables. I still hope to find a better solution, though
	(see comment to imap4d_DEPENDENCIES in imap4d/Makefile.am).
	New SQL driver: ODBC (--with-sql=odbc or --with-odbc)
	Raised version number to 0.6.1
	* NEWS: Updated
	* README: Updated
	* auth/Makefile.am: Use explicit PROG_DEPENDENCIES
	* imap4d/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	
	* include/mailutils/sql.h (mu_sql_dispatch.errstr): Changed
	return type to const char*
	* sql/mysql.c: Likewise
	* sql/postgres.c: Likewise
	* sql/sql.c: Likewise
	
	* sql/odbc.c: New file. ODBC SQL driver.	
	* sql/Makefile.am: Add odbc.c
	
	* mail/testsuite/mail/read.exp: Updated to match recent changes
	in diagnostic messages.

2005-01-04  Sergey Poznyakoff 

	* libsieve/extensions/vacation.c: New action. Based on
	guimb/scm/vacation.scm and on ideas and code fragments from
	Felix Egli <fegli@goldnet.ch>.
	* libsieve/extensions/Makefile.am: Add vacation
	* include/mailutils/libsieve.h (sieve_get_message_sender)
	(stream_printf): New prototypes.
	* THANKS: Add Felix Egli

2005-01-04  Sergey Poznyakoff 

	* auth/sql.c: Revise error messages for accordance with GNU standards:
	begin messages with a capital letter, unless they are prefixed
	with `file:line:' or their exact look is important due to
	compatibility reasons. Do not end messages with a period.
	Avoid using contracted negations
	* auth/tls.c: Likewise
	* comsat/action.c: Likewise
	* comsat/cfg.c: Likewise
	* comsat/comsat.c: Likewise
	* dotlock/dotlock.c: Likewise
	* frm/frm.c: Likewise
	* from/from.c: Likewise
	* guimb/collect.c: Likewise
	* guimb/main.c: Likewise
	* guimb/util.c: Likewise
	* imap4d/auth_gss.c: Likewise
	* imap4d/imap4d.c: Likewise
	* imap4d/list.c: Likewise
	* imap4d/signal.c: Likewise
	* imap4d/util.c: Likewise
	* libsieve/actions.c: Likewise
	* libsieve/comparator.c: Likewise
	* libsieve/prog.c: Likewise
	* libsieve/runtime.c: Likewise
	* libsieve/sieve.l: Likewise
	* libsieve/tests.c: Likewise
	* libsieve/util.c: Likewise
	* mail/alt.c: Likewise
	* mail/copy.c: Likewise
	* mail/decode.c: Likewise
	* mail/file.c: Likewise
	* mail/if.c: Likewise
	* mail/mail.c: Likewise
	* mail/mailline.c: Likewise
	* mail/quit.c: Likewise
	* mail/send.c: Likewise
	* mail/source.c: Likewise
	* mail/unalias.c: Likewise
	* mail/util.c: Likewise
	* mail/var.c: Likewise
	* mail/z.c: Likewise
	* mail.local/mailquota.c: Likewise
	* mail.local/main.c: Likewise
	* mail.local/script.c: Likewise
	* mailbox/mailutils-config.c: Likewise
	* mailbox/mu_argp.c: Likewise
	* messages/messages.c: Likewise
	* mh/fmtcheck.c: Likewise
	* mh/folder.c: Likewise
	* mh/forw.c: Likewise
	* mh/inc.c: Likewise
	* mh/mark.c: Likewise
	* mh/mh_argp.c: Likewise
	* mh/mh_ctx.c: Likewise
	* mh/mh_fmtgram.y: Likewise
	* mh/mh_format.c: Likewise
	* mh/mh_init.c: Likewise
	* mh/mh_list.c: Likewise
	* mh/mh_msgset.c: Likewise
	* mh/mh_whom.c: Likewise
	* mh/mhl.c: Likewise
	* mh/mhn.c: Likewise
	* mh/pick.c: Likewise
	* mh/refile.c: Likewise
	* mh/repl.c: Likewise
	* mh/rmf.c: Likewise
	* mh/scan.c: Likewise
	* mh/send.c: Likewise
	* movemail/movemail.c: Likewise
	* pop3d/apop.c: Likewise
	* pop3d/extra.c: Likewise
	* pop3d/lock.c: Likewise
	* pop3d/pop3d.c: Likewise
	* pop3d/popauth.c: Likewise
	* pop3d/signal.c: Likewise
	* readmsg/readmsg.c: Likewise
	* sieve/sieve.c: Likewise

	* mail/testsuite/mail/read.exp: Updated to match new output format
	of the decode command

2005-01-04  Sergey Poznyakoff

	* mailbox/errors: Add gettext markers
	* po/POTFILES.in: Depend on mailbox/errors directly
	* scripts/generr.awk: Assume textual messages are
	already quoted.

2005-01-02  Jordi Mallach

	* doc/texinfo/programs.texi: Typo fix.

2005-01-01  Sergey Poznyakoff

	Generate automatically errno.h and muerrno.c from a single
	plain text file. This facilitates maintaining of mailutils-
	specific error codes.
	
	* include/mailutils/errno.h: Removed
	* include/mailutils/errno.hin: New file
	* include/mailutils/Makefile.am: Generate errno.h
	* mailbox/muerrno.c: Removed
	* mailbox/muerrno.cin: New file
	* mailbox/errors: New file
	* mailbox/Makefile.am: Generate muerrno.c
	* scripts/generr.awk: New file
	* scripts/Makefile.am: Add generr.awk

	Fix a recently spotted problem in the testsuite:
	
	* imap4d/testsuite/imap4d/list.exp: Use new -sort flag to
	avoid dependency on any particular ordering. Also corrected
	expected outputs due to inclusion of two new mailboxes quite
	some time ago (went unnoticed so far due to fuzzy matching
	technique + ordering-dependent output).
	* imap4d/testsuite/lib/imap4d.exp (imap4d_test): New flag -sort
	toggles on sorting of untagged responses. Notice that -sort
	and -re are mutually exclusive.
	* testsuite/lib/mailutils.exp (mu_test): Upvar expect_out	
	
2004-12-28  Wojciech Polak

	Fixed displaying mail headers in different languages.

	* mail/util.c (util_rfc2047_decode): Fixed reading
	a language environment variable.
	* frm/frm.c (rfc2047_decode_wrapper): Likewise.
	(util_getcols): Imported function from mail/util.c.
	(action): Try to print only one line per message.
	* from/from.c (rfc2047_decode_wrapper): Fixed.

2004-12-23  Sergey Poznyakoff

	* configure.ac: Version 0.6
	* NEWS: Likewise
	* README: Updated
	* auth/gsasl.c: Updated for GSASL >=0.2.3. Previous versions
	won't work.
	* auth/lbuf.c (_auth_lb_writelines): Bugfix
	* mail.local/mail.local.h (USE_MAILBOX_QUOTAS): New define
	* mail.local/mailquota.c: Use USE_MAILBOX_QUOTAS.
	(sql_retrieve_quota): Assume unlimited quotas for empty fields.
	* mail.local/main.c: Use USE_MAILBOX_QUOTAS.
	
2004-12-17  Sergey Poznyakoff

	* configure.ac: Do not allow to specify modules more than once
	* auth/sql.c (sql_escape_string): Escape occurrences of ' and "
	in string.
	(mu_sql_expand_query): prevent possible sql injection
	* mail.local/mailquota.c (sql_retrieve_quota): Allow for NULL
	columns
	* sql/postgres.c (destroy): Bugfix: do not free pgconn

2004-12-05  Sergey Poznyakoff  

	* Makefile.am: Added sql/
	* configure.ac: Rewritten sql-related part. Allow to specify
	several SQL libraries simultaneously.

	* sql: New directory
	* sql/Makefile.am: New file
	* sql/.cvsignore: New file
	* sql/sql.c: New file
	* sql/mysql.c: New file
	* sql/postgres.c: New file
	
	* auth/mysql.c: Removed
	* auth/pgsql.c: Removed
	* auth/sql.c: Rewritten using general SQL interface.
	* auth/Makefile.am: Removed mysql.c and pgsql.c
	* include/mailutils/sql.h: New file
	* include/mailutils/Makefile.am: Added sql.h

	* include/mailutils/errno.h: Added new error codes.
	* mailbox/muerrno.c: Likewise.
	
	* mail.local/mail.local.h (quota_query): New variable
	* mail.local/mailquota.c: Retrieve quotas from SQL database
	* mail.local/main.c: New option --quota-query

	* scripts/sqlmod.sh: New file
	* scripts/Makefile.am: Added sqlmod.sh

	* doc/texinfo/programs.texi: Documented mailbox quotas

	* NEWS: Updated
	* README: Updated
	* po/POTFILES.in: Updated

2004-12-02  Sergey Poznyakoff

	* doc/texinfo/programs.texi: Documented movemail.

2004-11-18  Sergey Poznyakoff

	* mailbox/imap/folder.c (authenticate_imap_select): Use
	ENOSYS as the default status value to allow MU_ERR_AUTH_FAILURE
	to be propagated back to the caller.
	(imap_parse): Display "NO/Bad Tagged" error diagnostics only if
	status != MU_ERR_AUTH_FAILURE. Should we display it at all?
	* movemail/movemail.c: Emacs-interaction mode (--emacs)

2004-11-17  Wojciech Polak

	Added initial version of `libmu_cpp',
	a C++ wrapper for Mailutils.

	* libmu_cpp: Added new directory.
	* libmu_cpp/address.cc: New file.
	* libmu_cpp/filter.cc: Likewise.
	* libmu_cpp/iterator.cc: Likewise.
	* libmu_cpp/mailbox.cc: Likewise.
	* libmu_cpp/mailer.cc: Likewise.
	* libmu_cpp/message.cc: Likewise.
	* libmu_cpp/stream.cc: Likewise.
	* libmu_cpp/header.cc: Likewise.
	* libmu_cpp/list.cc: Likewise.
	* libmu_cpp/mailcap.cc: Likewise.
	* libmu_cpp/pop3.cc: Likewise.
	* libmu_cpp/url.cc: Likewise.
	* libmu_cpp/Makefile.am: Likewise.

	* include/mailutils/cpp: Added new directory.
	* include/mailutils/cpp/address.h: New file.
	* include/mailutils/cpp/error.h: Likewise.
	* include/mailutils/cpp/header.h: Likewise.
	* include/mailutils/cpp/list.h: Likewise.
	* include/mailutils/cpp/mailcap.h: Likewise.
	* include/mailutils/cpp/mailutils.h: Likewise.
	* include/mailutils/cpp/message.h: Likewise.
	* include/mailutils/cpp/stream.h: Likewise.
	* include/mailutils/cpp/filter.h: Likewise.
	* include/mailutils/cpp/iterator.h: Likewise.
	* include/mailutils/cpp/mailbox.h: Likewise.
	* include/mailutils/cpp/mailer.h: Likewise.
	* include/mailutils/cpp/pop3.h: Likewise.
	* include/mailutils/cpp/url.h: Likewise.
	* include/mailutils/cpp/Makefile.am: Likewise.

	* examples/cpp/addr.cc: New file.
	* examples/cpp/http.cc: Likewise.
	* examples/cpp/listop.cc: Likewise.
	* examples/cpp/sfrom.cc: Likewise.
	* examples/cpp/iconv.cc: Likewise.
	* examples/cpp/mailcap.cc: Likewise.
	* examples/cpp/murun.cc: Likewise.
	* examples/cpp/url-parse.cc: Likewise.
	* examples/cpp/Makefile.am: Likewise.
	
2004-11-15  Wojciech Polak

	* examples/config: New directory.
	* examples/cpp: Likewise.
	* examples/scheme: Likewise.
	* examples/config/Makefile.am: New file.
	* examples/cpp/Makefile.am: Likewise.
	* examples/scheme/Makefile.am: Likewise.

	* examples/comsat.conf: Moved to config/.
	* examples/dot.biffrc: Likewise.
	* examples/gnu-imap4d.pam: Likewise.
	* examples/gnu-pop3d.pam: Likewise.
	* examples/mailutils.rc: Likewise.
	* examples/reply.scm: Moved to scheme/.
	* examples/Makefile.am: Updated.
	* configure.ac: Updated.

2004-11-15  Sergey Poznyakoff 

	* imap4d/imap4d.c: New option --tls-required: do not allow
	authentication until TLS negotiation succeeds.
	* imap4d/authenticate.c (imap4d_authenticate): Do not proceed if
	tls_required is set.
	* imap4d/login.c (imap4d_login): Likewise.
	* imap4d/imap4d.h (IMAP_CAPA_STARTTLS,IMAP_CAPA_LOGINDISABLED)
	(IMAP_CAPA_XTLSREQUIRED): New defines
	* imap4d/starttls.c (imap4d_starttls): Clear tls_required upon
	successful TLS handshake.
	(starttls_init): Use IMAP_CAPA_STARTTLS instead of hardcoded
	literal.
	* include/mailutils/header.h (MU_HEADER_X_EXPIRE_TIMESTAMP): New
	define.

	* pop3d/pop3d.c: New option --tls-required: do not allow
	authentication until TLS negotiation succeeds.
	New option --delete-expired: delete expired messages before
	closing the mailbox.
	* pop3d/capa.c (pop3d_capa): Announce XTLSREQUIRED if appropriate
	* pop3d/expire.c (expire_mark_message): New function
	* pop3d/pop3d.h: New declarations.
	* pop3d/quit.c (pop3d_fix_mark): Use expire_mark_message to
	process expired messages. Apart from the new functionality, it
	also fixes a bug: len was incorrectly used as a replace indicator
	in header_set_value, thus each retrieval of the message was
	resetting its expiration date.
	
	* pop3d/stls.c (pop3d_stls): Set state to AUTHORIZATION upon
	successful completion of TLS negotiation.

	* configure.ac: Raised version number to 0.5.1
	* NEWS: Entry for 0.5.1

2004-11-03  Sergey Poznyakoff 

	* dotlock/dotlock.c: Removed -T option (CAN-2004-0984)

2004-10-26  Sergey Poznyakoff

	* imap4d/store.c (imap4d_store0): Send \r\n at the end of
	the unsolicited response.

2004-09-18  Sergey Poznyakoff 

	* configure.ac: Bugfix
	* mailbox/mime.c (_mime_munge_content_header): Bugfix

2004-08-31  Wojciech Polak

	* mailbox/file_stream.c (prog_stream_create): Changed type
	of the second argument to const char*.
	(filter_prog_stream_create): Likewise.
	(_prog_stream_create): Changed type of the third argument
	to const char*.
	* include/mailutils/stream.h (prog_stream_create): Changed
	type of the second argument to const char*.
	(filter_prog_stream_create): Likewise.
	* doc/texinfo/stream.texi: Updated.

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.14.1.

2004-08-24  Sergey Poznyakoff

	* mail/util.c (util_do_command): Fixed coredump on unparseable
	input strings.
	* THANKS: Added Dan Jacobson

2004-08-20  Sergey Poznyakoff 

	* include/mailutils/guile.h (MU_SCM_SYMBOL_VALUE): New define
	(_mu_scm_mailer,_mu_scm_debug): Removed externs.
	* include/mailutils/list.h (list_set_destroy_item): Use __PMT in
	nested declarations.
	* libmu_scm/mu_message.c: Properly access mu-mailer and mu-message
	values.

2004-08-11  Sergey Poznyakoff

	* mail/send.c (mail_send0): Fixed coredump on reading a
	single escape char.

2004-08-08  Sergey Poznyakoff

	* headers/argp.h: Protect typedef int error_t by an additional
	#ifndef. Thanks Alex S. Moore <asmoore@edge.net> for helping
	find out the problem.

2004-08-07  Sergey Poznyakoff  

	* Makefile.am: Raised automake requirements to version
	1.8.5
	* examples/nntpclient.c: Minor fixes.
	* imap4d/Makefile.am (INCLUDES): Added -Imailbox
	* imap4d/imap4d.h: Added missing includes
	* include/mailutils/nls.h [!ENABLE_NLS]: Define gettext()
	* include/mailutils/nntp.h: Minor changes. The screen is 80x24!
	* mailbox/locker.c (_locker_lock_dotlock): Make sure the lock file
	is writable for the owner.
	* mailbox/imap/folder.c (authenticate_imap_sasl_anon): Use
	auth_state instead of state. Possibly this was a typo...
	* mailbox/include/imap0.h (struct _f_imap.capac): Changed
	type to int.
	* mailbox/maildir/mbox.c (maildir_gethostname): Fixed a gross
	memory allocation bug.

	* mailbox/message.c: Minor changes.
	* mailbox/mbox/url.c: Likewise.
	* mailbox/nntp/folder.c: Likewise.
	* mailbox/nntp/mbox.c: Likewise.
	* mailbox/nntp/nntp_article.c: Likewise.
	* mailbox/nntp/nntp_connect.c: Likewise.
	* mailbox/nntp/nntp_date.c: Likewise.
	* mailbox/nntp/nntp_head.c: Likewise.
	* mailbox/nntp/nntp_ihave.c: Likewise.
	* mailbox/nntp/nntp_post.c: Likewise.

	* scripts/guile-1.6/guile-doc-snarf: Bugfix. Always use $AWK.

2004-08-06  Sergey Poznyakoff

	* include/mailutils/daemon.h: Include types.h

2004-07-07  Sergey Poznyakoff

	* libsieve/extensions/spamd.c (decode_float): Return
	signed long value, as SpamAssassin scores can be negative.
	(spamd_test): Updated accordingly

2004-07-05  Sergey Poznyakoff

	* include/mailutils/registrar.h (mu_register_extra_formats): New
	macro.
	(mu_register_all_formats): Call mu_register_extra_formats()
	* mailbox/mu_argp.c (mu_conf_option): Added ENABLE_NNTP
	* mailbox/nntp/Makefile.am: Add nntp0.h
	* mh/Makefile.am: Added libmu_nntp.la
	* readmsg/readmsg.c (main): Call mu_register_extra_formats()

2004-07-05  Sergey Poznyakoff 

	* include/mailutils/registrar.h (mu_register_all_mbox_formats):
	Removed nntp_record. It is not a *mailbox* format.
	* mailbox/mailutils-config.c: Added mu_nntp
	
	* mailbox/include/iterator0.h (_iterator.getitem): Changed
	declaration. There's no use passing a pointer to the const
	location, since the function *must* assign to it anyway.
	* include/mailutils/iterator.h (iterator_set_getitem): Changed
	declaration
	* mailbox/iterator.c (iterator_set_getitem): Changed
	declaration
	(iterator_current): Additional typecast on pitem
	
	* mailbox/list.c: Updated declaration of getitem method.
	* mailbox/nntp/nntp_iterator.c: Likewise
	* mailbox/pop/pop3_iterator.c: Likewise
	
	* mailbox/mailbox.c: Include <list.h>
	* mailbox/mailer.c: Likewise

2004-07-05  Alain Magloire

	* configure.ac: enable NNTP support.

	* example/Makefile.am: Enable NNTP.
	* frm/Makefile.am: Enable NNTP.
	* from/Makefile.am: Enable NNTP.
	* messages/Makefile.am: Enable NNTP.
	* readmsg/Makefile.am: Enable NNTP.
	* guimb/Makefile.am: Enable NNTP.
	* mail/Makefile.am: Enable NNTP.
	* sieve/Makefile.am: Enable NNTP.

	* imap4d/Makefile.am: Put @AUTHLIBS@ before libmailbox.a (failed
	on cygwin if not).
	* pop3d/Makefile.am: Put @AUTHLIBS@ before libmailbox.a (failed on
	cygwin if not).
	* mail.local/Makefile.am: Put @AUTHLIBS@ before libmailbox.a
	(failed on cygwin if not).

	* mailbox/stream.c (stream_wait): Bugfix.  If we buffer return
	true if the cache still	have data.

	* include/mailutils/nntp.h: Define the default NNTP port number.
	* include/mailutils/pop3.h: Define the default POP3 port number.
	* include/mailutils/registrar.h: Enable NNTP.

	* mailbox/nntp/folder.c: New file.
	* mailbox/nntp/mbox.c: New file.
	* mailbox/nntp/url.c: New file.
	* mailbox/nntp/Makefile.am: Updated.

2004-07-03  Sergey Poznyakoff

	* mailbox/list.c (list_data_dup): Bugfix: *ptr was not assigned.
	* doc/texinfo/muint.texi: Automake does	not allow two independent
	texi sources to include the same file (version.texi, in this
	case). What a stupid lossage! However it handles all files whose
	name matches "vers*.texi" as version.texi, which allows to
	override the bug: include vers-muint.texi instead of version.texi.

2004-07-01  Sergey Poznyakoff

	* include/mailutils/iterator.h (iterator_current)
	(iterator_set_getitem): Changed proto
	(iterator_get_list): Removed.
	* mailbox/include/iterator0.h (struct _iterator.getitem): Changed
	declaration.
	* mailbox/iterator.c (iterator_current)
	(iterator_set_getitem): Changed declaration
	* mailbox/list.c (getitem): Changed declaration

	* mailbox/rfc2047.c (rfc2047_decode): Fixed buffer
	handling

	* examples/mta.c: Minor fix
	* examples/nntpclient.c: Fixed printf formats
	(com_newgroups,com_newnews): Variable declarations are only allowed
	before the statements.

	* mailbox/nntp/nntp_article.c: Fixed printf formats
	* mailbox/nntp/nntp_body.c: Likewise
	* mailbox/nntp/nntp_head.c: Likewise

	* mailbox/nntp/nntp_iterator.c: Added missing include
	(nntp_itr_getitem): Changed declaration

	* mailbox/pop/pop3_iterator.c (pop3_itr_getitem): Changed
	declaration

2004-06-30  Alain Magloire

	* configure.ac: Add nntp directory.
	* doc/rfc/pop3.texit: add new API.

	* mailbox/Makefile.am: Add nntp directory.

	* mailbox/nntp/Makefile.am: Add new files.
	* mailbox/nntp/nntp_iterator.c: New file.
	* mailbox/nntp/nntp_list_active.c: Use the an iterator_t instead of a lis_t..
	* mailbox/nntp/nntp_list_distribpats.c: instead of a lis_t. file.
	* mailbox/nntp/nntp_list_times.c: instead of a lis_t. file.
	* mailbox/nntp/nntp_list_newgroups.c: instead of a lis_t. file.
	* mailbox/nntp/nntp_list_newnews.c: instead of a lis_t. file.

	* mailbox/pop3/Makefile.am: Add new files.
	* mailbox/pop3/pop3_iterator.c: New file.
	* mailbox/pop3/pop3_capa.c: instead of a lis_t. file.
	* mailbox/pop3/pop3_lista.c: instead of a lis_t. file.
	* mailbox/pop3/pop3_uidla.c: instead of a lis_t. file.

	* include/mailutils/Makefile.am: Add nntp.h and pop3.h.
	* include/mailutils/nntp.h: Add new declarations.
	* include/mailutils/sys/Makefile.am: Add nntp and pop3.hh
	* include/mailutils/sys/nntp.h: Add new declarations.
	* include/mailutils/pop3.h: NAdd new declarations.

	* example/Makefile.am: Adjusted to new API.
	* example/nntpclient.c: Adjusted to new API.
	* example/pop3client.c: Adjusted to new API.
	* example/.cvsignore: Add nntpclient.

2004-06-30  Alain Magloire

	* mailbox/list.c (list_get_iterator): Bug fix, wrong size for calloc()
	(list_data_dup): Copy the elements.

2004-06-30  Sergey Poznyakoff

	* libsieve/extensions/spamd.c (spamd_shutdown): Bugfix

2004-06-29  Alain Magloire

	Continuing the framework for NNTP support

	* mailbox/nntp/.cvsignore: New file.
	* mailbox/nntp/nntp_help.c: New file.
	* mailbox/nntp/nntp_ihave.c: New file.
	* mailbox/nntp/nntp_list_active.c: New file.
	* mailbox/nntp/nntp_list_distribpats.c: New file.
	* mailbox/nntp/nntp_list_distributions.c: New file.
	* mailbox/nntp/nntp_list_newsgroups.c: New file.
	* mailbox/nntp/nntp_list_times.c: New file.
	* mailbox/nntp/nntp_newgroups.c: New file.
	* mailbox/nntp/nntp_newnews.c: New file.
	* mailbox/nntp/nntp_post.c: New file.

	* mailbox/nntp/nntp_article.c: implementation.
	* mailbox/nntp/nntp_body.c: implementation.
	* mailbox/nntp/nntp_connect.c: implementation.
	* mailbox/nntp/nntp_date.c: implementation.
	* mailbox/nntp/nntp_destroy.c: implementation.
	* mailbox/nntp/nntp_group.c: implementation.
	* mailbox/nntp/nntp_head.c: implementation.
	* mailbox/nntp/nntp_list_extensions.c: implementation.
	* mailbox/nntp/nntp_stat.c: implementation.
	* mailbox/nntp/nntp_stream.c: implementation.

	* include/mailutils/nntp.h: Declarations.
	* include/mailutils/sys/nntp.h: Declarations.

	* examples/nntpclient.c: Adjusted.
	* examples/pop3client.c: Minor bug fixes.

2004-06-28  Sergey Poznyakoff

	* mailbox/filter_iconv.c (internal_icvt_read)
	(copy_pass): Fixed mistyped conditions.

	* mailbox/include/iterator0.h (struct _iterator): rewritten as
	a general-purpose iterator structure.
	* include/mailutils/iterator.h (iterator_create): Changed
	proto.
	(iterator_attach,iterator_detach,iterator_advance)
	(iterator_set_first,iterator_set_next)
	(iterator_set_getitem,iterator_set_finished_p)
	(iterator_set_dup,iterator_set_destroy): New functions.
	* mailbox/iterator.c: Likewise
	* include/mailutils/list.h (list_get_iterator): New function
	* mailbox/list.c: Likewise

	* examples/listop.c: Replace iterator_create with
	list_get_iterator.
	* examples/nntpclient.c: Likewise
	* examples/pop3client.c: Likewise
	* imap4d/util.c: Likewise
	* libsieve/comparator.c: Likewise
	* libsieve/prog.c: Likewise
	* libsieve/register.c: Likewise
	* libsieve/require.c: Likewise
	* libsieve/sieve.l: Likewise
	* mail/retain.c: Likewise
	* mail/util.c: Likewise
	* mailbox/filter.c: Likewise
	* mailbox/folder.c: Likewise
	* mailbox/mailbox.c: Likewise
	* mailbox/mailer.c: Likewise
	* mailbox/mu_auth.c: Likewise
	* mailbox/mutil.c: Likewise
	* mailbox/observer.c: Likewise
	* mh/ali.c: Likewise
	* mh/mh_alias.y: Likewise
	* mh/pick.y: Likewise
	* mh/refile.c: Likewise

2004-06-27  Sergey Poznyakoff

	* direntry: New file

2004-06-27  Sergey Poznyakoff 

	-= Version 0.5 released =-

2004-06-27  Sergey Poznyakoff

	* doc/texinfo/muint.texi: Include version.texi
	* NEWS: Updated
	* configure.ac: Raised version number to 0.5
        * mailbox/memory_stream.c (_memory_write): Minor fix
        * mailbox/filter_iconv.c (internal_icvt_read)
	(copy_octal): Fixed memory allocation errors.
			
2004-06-23  Sergey Poznyakoff

	* guimb/collect.c (guimb_catch_body): Use scm_c_eval_string
	* include/mailutils/guile.h: Provide a definition of
	scm_c_eval_string for Guile 1.4x
	* include/mailutils/mutil.h: Forward declaration of struct timeval
	needed for the prototype of mu_fd_wait().
	* libmu_scm/Makefile.am (mailutils.scm): Fixed producing rule.
	* libmu_scm/mailutils.scm.in: Added an end-of-file comment
	* libmu_scm/mu_mailbox.c: Use SCM_UNSPECIFIED where appropriate.
	* libmu_scm/mu_message.c: Likewise.

2204-06-20 Alain Magloire

	* examples/nntpclient.c: An example of using nntp.

	* mailbox/nntp/nntp_date.c: New file.
	* mailbox/nntp/nntp_group.c: New file.
	* mailbox/nntp/nntp_last.c: New file.
	* mailbox/nntp/nntp_list_extensions.c: New file.
	* mailbox/nntp/nntp_mode_reader.c: New file.
	* mailbox/nntp/nntp_next.c: New file.
	* mailbox/nntp/nntp_quit.c: New file.
	* mailbox/nntp/nntp_stat.c: New file.
	* mailbox/nntp/Makefile.am
	* mailbox/nntp/nntp_article.c: Use new macros.
	* mailbox/nntp/nntp_body.c: Use new macros.
	* mailbox/nntp/nntp_connect.c: Use new macros.
	* mailbox/nntp/nntp_head.c: Use new macros.
	* mailbox/nntp/nntp_response.c: Use new macros.
	* include/mailutils/nntp.h: New declarations.
	* include/mailutils/sys/nntp.h: New declarations and macros..

2204-06-20 Alain Magloire

	* mailbox/pop/pop3_lista.c: Destroy the list on error.
	* mailbox/pop/pop3_uidla.c: Destroy the list on error.

2004-06-15  Alain Magloire

	* mailbox/tcp.c(_tcp_close): Check the return value of close(2).

2004-06-15  Sergey Poznyakoff

	* libmu_scm/Makefile.am (mailutils.scm): Fixed producing rule.

2004-06-14 Alain Magloire

	* mailbox/nntp/Makefile.am: New file
	* mailbox/nntp/nntp_article.c: New file
	* mailbox/nntp/nntp_header.c: New file
	* mailbox/nntp/nntp_body.c: New file
	* include/mailutils/nntp.h: adjustment.

2004-06-12 Alain Magloire

	* THANKS: Move part of it to AUTHORS file, reorder alphabetically
	* AUTHORS: Reorder alpha.

2004-06-12 Alain Magloire

	Putting the framework for NNTP support.

	* include/mailutils/nntp.h: New file
	* include/mailutils/sys/nntp.h: New file
	* mailbox/nntp/nntp_carrier.c: New file
	* mailbox/nntp/nntp_connect.c: New file
	* mailbox/nntp/nntp_create.c: New file
	* mailbox/nntp/nntp_debug.c: New file
	* mailbox/nntp/nntp_destroy.c: New file
	* mailbox/nntp/nntp_disconnect.c: New file
	* mailbox/nntp/nntp_readline.c: New file
	* mailbox/nntp/nntp_response.c: New file
	* mailbox/nntp/nntp_sendline.c: New file
	* mailbox/nntp/nntp_stream.c: New file
	* mailbox/nntp/nntp_timeout.c: New file

2004-06-12  Sergey Poznyakoff

	* auth/gsasl.c: Revised use of const modifiers
	* auth/lbuf.c: Likewise
	* auth/lbuf.h: Likewise
	* auth/mysql.c: Likewise
	* auth/pam.c: Likewise
	* auth/pgsql.c: Likewise
	* auth/sql.c: Likewise
	* auth/tls.c: Likewise
	* auth/virtual.c: Likewise
	* examples/iconv.c: Likewise
	* imap4d/auth_gsasl.c: Likewise
	* imap4d/imap4d.c: Likewise
	* imap4d/util.c: Likewise
	* include/mailutils/mu_auth.h: Likewise
	* include/mailutils/mutil.h: Likewise
	* include/mailutils/stream.h: Likewise
	* libmu_scm/mu_mailbox.c: Likewise
	* mailbox/file_stream.c: Likewise
	* mailbox/filter_iconv.c: Likewise
	* mailbox/mapfile_stream.c: Likewise
	* mailbox/mu_auth.c: Likewise
	* mailbox/mutil.c: Likewise
	* mailbox/stream.c: Likewise
	* mailbox/system.c: Likewise
	* mailbox/include/stream0.h: Likewise
	* mailbox/maildir/maildir.h: Likewise
	* mailbox/maildir/mbox.c: Likewise
	* mh/mh_format.c: Likewise
	* mh/mh_init.c: Likewise
	* mh/send.c: Likewise
	* pop3d/extra.c: Likewise

	* mail/util.c: Commented out unused static functions
	* comsat/cfg.c: Likewise

	* mail/from.c: Minor fix
	* mailbox/daemon.c: Likewise

	* mailbox/muerrno.c: Added missing includes
	* mailbox/rfc2047.c: Likewise
	* mailbox/maildir/folder.c: Likewise
	* mailbox/mbox/url.c: Likewise
	* mailbox/mh/folder.c: Likewise
	* mh/mh.h: Likewise
	* mh/mh_alias.l: Likewise

	* mh/mh_fmtgram.y: Provide forward declarations for yyerror and
	yylex.
	* libsieve/sieve.y: Likewise

2004-06-09  Sergey Poznyakoff

	* NEWS: Updated
	* doc/texinfo/programs.texi: Updated
	* include/mailutils/mutil.h (mu_decode_filter): New function
	(mu_default_fallback_mode): New variable.
	(mu_set_default_fallback): New function.
	* mailbox/mutil.c: Likewise
	* libmu_scm/Makefile.am: Do not use $< in explicit rules
	* mail/util.c (util_setenv): Special handling for decode-fallback
	variable
	* mail.remote/mail.remote.c: Fixed doc string
	* mailbox/mu_auth.c: Add missing gettext markers
	* mailbox/rfc2047.c: Use mu_decode_filter.
	* mh/mh_global.c (mh_read_profile): Handle new profile
	variable "Decode-Fallback".
	* pop3d/pop3d.c (options): Fixed typo in doc string
	* include/mailutils/stream.h: Forward declaration of struct
	timeval is needed for stream_wait().

2004-06-06  Sergey Poznyakoff

	* include/mailutils/filter.h (filter_iconv_create): New prototype.
	* mailbox/filter_iconv.c: Fixed several bugs. Use an extra
	argument to filter_iconv_create to decide what to do
	if conversion fails (mu_iconv_fallback_mode).
	* examples/iconv.c: Updated call to filter_iconv_create()
	* mailbox/rfc2047.c: Likewise.

2004-06-05  Sergey Poznyakoff

	* NEWS: Updated
	* configure.ac: Check for iconv.h and iconv_t
	(MU_COMMON_LIBRARIES): New subst symbol
	* comsat/Makefile.am: Use MU_COMMON_LIBRARIES
	* dotlock/Makefile.am
	* examples/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* from/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* mail.remote/Makefile.am: Likewise.
	* mailbox/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* movemail/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.

	* mailbox/file_stream.c (_file_read, _file_readline): Check for
	eof.
	* mailbox/list.c (list_set_destroy_item): Minor fix

	* include/mailutils/errno.h (MU_ERR_BUFSPACE): New error code
	* mailbox/muerrno.c: Likewise

	* include/mailutils/stream.h (MU_STREAM_STRICT): New flag
	* libsieve/extensions/spamd.c: Minor formatting fix
	* mailbox/mailutils-config.c (main): add LINK_POSTFLAGS

	* mailbox/rfc2047.c: (rfc2047_decode): Implemented charset
	recoding using iconv filters.
	* mailbox/filter_iconv.c: New file. Implementation of
	iconv filter streams.
	* examples/iconv.c: New file

	* po/POTFILES.in: Updated

2004-06-04  Sergey Poznyakoff

	* NEWS: Updated
	* examples/pop3client.c: Minor fixes.
	* libsieve/extensions/spamd.c: Minor formatting changes
	* mailbox/pop/pop3_sendline.c: Bugfix

2004-06-04  Sergey Poznyakoff

	Use abstract transport layer in streams, instead of
	integer file descriptors. Among other things, this
	fixes a long standing bug in imap4d: now it can use
	SASL over TLS.

	* auth/gsasl.c: Use stream transport instead of fd.
	* auth/tls.c: Likewise.
	* pop3d/extra.c: Likewise.

	* include/mailutils/types.h (mu_transport_t): New data type
	* include/mailutils/gsasl.h (gsasl_stream_create): Changed
	prototype
	* include/mailutils/tls.h (tls_stream_create)
	(tls_stream_create_client): Changed prototype

	* include/mailutils/mutil.h (mu_fd_wait): New function
	* include/mailutils/stream.h (stream_get_fd)
	(stream_get_fd2,stream_set_fd): Removed
	(stream_get_transport2,stream_get_transport)
	(stream_wait,stream_set_get_transport2)
	(stream_set_wait): New functions
	* mailbox/stream.c: Likewise
 	* mailbox/include/stream0.h (struct _stream._get_fd): Removed
	(_get_transport2,_wait): New methods

	* examples/http.c: Use new stream functions
	* imap4d/auth_gsasl.c: Likewise
	* imap4d/util.c: Likewise
	* libsieve/extensions/spamd.c: Likewise
	* mailbox/body.c: Likewise
	* mailbox/file_stream.c: Likewise
	* mailbox/filter.c: Likewise
	* mailbox/mapfile_stream.c: Likewise
	* mailbox/message.c: Likewise
	* mailbox/mime.c: Likewise
	* mailbox/mutil.c: Likewise
	* mailbox/tcp.c: Likewise
	* mailbox/imap/mbox.c: Likewise
	* mailbox/mbox/mbox.c: Likewise
	* mailbox/pop/mbox.c: Likewise
	* mailbox/pop/pop3_readline.c: Likewise
	* mailbox/pop/pop3_sendline.c: Likewise
	* mh/mhn.c: Likewise
	* examples/http.c: Likewise
	* imap4d/idle.c: Likewise
	* include/mailutils/sys/pop3.h: Likewise

	* mail/file.c (mail_file): minor fix
	* mailbox/folder.c: minor fix
	* mailbox/mailcap.c: minor fix

2004-06-02  Sergey Poznyakoff

	* configure.ac: Raised version number to 0.4.90
	* NEWS: Likewise
        * mailbox/muerrno.c (MU_ERR_CONN_CLOSED,MU_ERR_PARSE):
        New error codes.
        (MU_ERR_NOENT): New error code. Use it instead
	of ENOENT to avoid misguiding diagnostics
        'No such file or directory'. Use ENOENT only for its
	direct purpose.
        * include/mailutils/errno.h: Likewise.

	* auth/gsasl.c: Revise the usage of return codes.
	* auth/tls.c: Likewise.
	* examples/addr.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* lib/mu_dbm.c: Likewise.
	* mail/util.c: Likewise.
	* mailbox/address.c: Likewise.
	* mailbox/amd.c: Likewise.
	* mailbox/attachment.c: Likewise.
	* mailbox/attribute.c: Likewise.
	* mailbox/auth.c: Likewise.
	* mailbox/body.c: Likewise.
	* mailbox/debug.c: Likewise.
	* mailbox/envelope.c: Likewise.
	* mailbox/file_stream.c: Likewise.
	* mailbox/filter.c: Likewise.
	* mailbox/filter_trans.c: Likewise.
	* mailbox/folder.c: Likewise.
	* mailbox/header.c: Likewise.
	* mailbox/iterator.c: Likewise.
	* mailbox/list.c: Likewise.
	* mailbox/mailcap.c: Likewise.
	* mailbox/mailer.c: Likewise.
	* mailbox/mapfile_stream.c: Likewise.
	* mailbox/mbx_default.c: Likewise.
	* mailbox/memory_stream.c: Likewise.
	* mailbox/message.c: Likewise.
	* mailbox/mime.c: Likewise.
	* mailbox/monitor.c: Likewise.
	* mailbox/mu_auth.c: Likewise.
	* mailbox/observer.c: Likewise.
	* mailbox/property.c: Likewise.
	* mailbox/refcount.c: Likewise.
	* mailbox/registrar.c: Likewise.
	* mailbox/rfc2047.c: Likewise.
	* mailbox/sendmail.c: Likewise.
	* mailbox/smtp.c: Likewise.
	* mailbox/stream.c: Likewise.
	* mailbox/tcp.c: Likewise.
	* mailbox/ticket.c: Likewise.
	* mailbox/url.c: Likewise.
	* mailbox/wicket.c: Likewise.
	* mailbox/imap/folder.c: Likewise.
	* mailbox/imap/mbox.c: Likewise.
	* mailbox/mbox/folder.c: Likewise.
	* mailbox/mbox/mbox.c: Likewise.
	* mailbox/mbox/url.c: Likewise.
	* mailbox/pop/mbox.c: Likewise.
	* mailbox/pop/pop3_capa.c: Likewise.
	* mailbox/pop/pop3_carrier.c: Likewise.
	* mailbox/pop/pop3_list.c: Likewise.
	* mailbox/pop/pop3_lista.c: Likewise.
	* mailbox/pop/pop3_retr.c: Likewise.
	* mailbox/pop/pop3_stat.c: Likewise.
	* mailbox/pop/pop3_timeout.c: Likewise.
	* mailbox/pop/pop3_top.c: Likewise.
	* mailbox/pop/pop3_uidl.c: Likewise.
	* mailbox/pop/pop3_uidla.c: Likewise.
	* mh/mh_ctx.c: Likewise.

2004-06-01  Sergey Poznyakoff

	* examples/mailcap.c (main): Bugfix: fields_count had wrong type.
	* include/mailutils/mailutils.h: Remove guile.h. (reverses another
	part of changes made 2004-01-10).

2004-05-27  Sergey Poznyakoff

	* NEWS: Updated
	* include/mailutils/filter.h (rfc_2047_Q_filter): New filter
	type.
	* mailbox/filter.c (mailbox/filter.c): Register rfc_2047_Q_filter
	* mailbox/filter_trans.c: New implementation of RFC 2047 "Q" filter.
	Reorganized all functions.
	* mailbox/rfc2047.c: Correctly decode "Q" encoding.

	* mail/send.c (mail_send0): Check ignoreeof variable for
	interactive sessions only.
	* mailbox/mbox/folder.c: Include mutil.h

2004-05-07  Sergey Poznyakoff

	* mail/from.c (mail_from0): Use Date: header if 'datefield' is
	set.
	* mail/mail.c (main): Start interactive mode with an empty mailbox
	if 'emptystart' is set.

	* NEWS: Updated
	* doc/texinfo/programs.texi (Mail Variables): Documented new
	variables.

2004-05-07  Sergey Poznyakoff

	* mail/util.c (util_get_sender): Updated to match recent
	changes (see the previous entry).
	* mailbox/argcv.c (argcv_scan): Honor escaped whitespace.

2004-04-27  Sergey Poznyakoff

	* NEWS: Updated
	* doc/texinfo/mailutils.texi: Added variable and keyword
	index
	* doc/texinfo/programs.texi: Documented new features
	* doc/texinfo/Makefile.am: Updated

	* mail/mail.c (main): Changed initialization sequence.
	Set xmailer and default sender fields on startup.
	* mail/mail.h (mail_sender,mail_nosender)
	(get_sender_address): New functions.
	* mail/retain.c: Likewise.
	* mail/send.c: Do not add X-Mailer if xmailer variable is
	unset.
	* mail/table.c (sender,nosender): New commands
	* include/mailutils/Makefile.am: Added daemon.h

2004-04-26  Wojciech Polak

	Added -P, --pidfile=FILE options for the daemons.

	* mailbox/daemon.c: New file. Added pidfile support
	and a placeholder for a further universal daemon routines.
	* mailbox/mu_argp.c: Added new pidfile option.
	* mailbox/Makefile.am: Added daemon.c.
	* include/mailutils/daemon.h: New file.
	* include/mailutils/argp.h (daemon_param): Added *pidfile.

	* pop3d/pop3d.c (main): Call daemon_create_pidfile()
	if the -P or --pidfile option was specified.
	(daemon_param): Set initial NULL for the pidfile name.
	* imap4d/imap4d.c (main): Likewise.
	* pop3d/pop3d.h: Include <mailutils/daemon.h>.
	* imap4d/imap4d.h: Likewise.

2004-04-14  Sergey Poznyakoff

	* mail.remote/mail.remote.c: Use "auth" capability.
	* mail.remote/Makefile.am (mail_remote_LDADD): Add @AUTHLIBS@
	* mailbox/mu_argp.c (read_rc, mu_create_argcv): Do not bail
	out if mu_tilde_expansion() returns NULL. There may be users
	without homedir.
	* mailbox/mutil.c (mu_get_user_email): Use mu_get_auth_by_uid()
	instead of getpwuid().

2004-04-14  Jordi Mallach

	* examples/pop3client.c (pop_completion): Use rl_completion_matches.
	Fixes potential crash on 64-bit architectures.

2004-04-08  Sergey Poznyakoff

	* configure.ac: Add AM_ICONV
	* mailbox/smtp.c (smtp_send_message): Correctly handle long
	header lines. Fixes bug reported by William MacBain
	<macbain@ott-fortimail.dnsalias.org>
	* comsat/comsat.c (comsat_main): Make info text clearer.
	* sieve/sieve.c (options): Likewise
	* frm/frm.c: Likewise
	* dotlock/dotlock.c (main): Fixed diagnostics to better suit
	i18n.
	* guimb/main.c (options): Add translators comment
	* libsieve/actions.c: Likewise.
	* libsieve/tests.c: Likewise.
	* libsieve/comparator.c (sieve_match_part_checker): Likewise.
	* mail/if.c (mail_if): Likewise.
	* pop3d/popauth.c: Likewise.
	* mail.remote/testsuite/mail.remote/send.exp: Updated copyright
	date
	* mailbox/mutil.c: Add missing gettext marker

	* examples/pop3client.c: Rewritten to drop the readline dependency.

2004-02-08  Wojciech Polak

	* pop3d/pop3d.c (pop3d_mainloop): Terminate the session
	after receiving an illegal TLS packet.
	* imap4d/starttls.c (imap4d_starttls): Likewise.

2004-02-08  Wojciech Polak

	* doc/texinfo/*: Updated to the current API.
	* doc/man/*: Too many outdated stuff... Replaced it
	with the "always fresh" man pages ;).

2004-02-05  Sergey Poznyakoff

	* include/mailutils/header.h (MU_HEADER_DELIVERY_DATE)
	(MU_HEADER_ENVELOPE_TO): New macros.
	* mailbox/amd.c (amd_envelope_date): Use Delivery-Date
	if X-Envelope-Date is not present.

2004-02-03  Sergey Poznyakoff

	* mailbox/maildir/mbox.c (maildir_message_cmp): Compare the
	rest of filenames if the timestamps are equal
	* mail/if.c (mail_if): 'if t'  is true if stdout is connected
	to a terminal.
	* mailbox/mbox/url.c (_url_path_init): Missed typecast.

2004-02-03  Sergey Poznyakoff

       * scripts/texify.sed: New file
       * scripts/Makefile.am: Added texify.sed
       * doc/texinfo/Makefile.am (.c.inc rule): Use texify.sed

2004-02-03  Linus Nordberg  <linus@nordberg.se>

       * mailbox/pop/pop3_readline.c: Include sys/time.h.

       * mailbox/maildir/mbox.c: Include limits.h.
       (maildir_uniq): Use _POSIX_PATH_MAX if PATH_MAX is not
       defined.

       * mailbox/file_stream.c: Include signal.h.

2004-02-01  Sergey Poznyakoff

	* mailbox/maildir/mbox.c (maildir_message_lookup): Fixed bug
	(rc could have been used uninitialized). Thanks Wojciech
	for noticing
	(maildir_scan0): Fixed typo in notification loop.

2004-01-27  Sergey Poznyakoff

	* mailbox/smtp.c: Control the value
	of READ_RECIPIENTS property to decide whether the message
	should be scanned for recipient addresses.
	* mailbox/sendmail.c: Likewise.
	* mail.remote/mail.remote.c: New option -t (compatible with
	sendmail).
	Simplified the help message.
	(main): Restructured.
	* mail.remote/testsuite/mail.remote/send.exp (mail_remote_test):
	Added OPTION statement
	* mail.remote/testsuite/Data: Added new test.

	* mailbox/mailbox.c (mailbox_lock, mailbox_unlock): New
	functions.
	* include/mailutils/mailbox.h: Likewise
	* imap4d/close.c (imap4d_close): Return NO on failure.

	* mailbox/include/mailer0.h (struct _mailer): Removed
	unused field properties_count.

	* TODO: Updated
	* NEWS: Updated

2004-01-22  Sergey Poznyakoff

	* mailbox/amd.c: Use sorted message array with binary
	searches/inserts. This speeds up the mh/maildir
	operations considerably. Testing on a MH  folder
	with 6000 messages shows the following data:

		       Time of execution
                    List       Array+Bsearch     %    Speedup (times)
        scan        24.795     7.526          30.3    3.294
        refile (to) 10.915     0.068           0.6    160.514
        rmm         10.893     0.105             1    103.742

	* mailbox/include/amd.h: Likewise.
	* mailbox/maildir/mbox.c: Likewise.
	* mailbox/mh/mbox.c: Likewise.

	* imap4d/auth_gss.c: Support for GSS. Submitted by
	Simon Josefsson.
	* m4/gssapi.m4: Likewise.

2004-01-20  Wojciech Polak

	* doc/texinfo/*.texi: Major reorganization in the documentation.

2004-01-19  Wojciech Polak

	* libsieve/tests.c (retrieve_header): Unfold the header,
	use header_aget_field_value_unfold().

2004-01-15  Sergey Poznyakoff

	* imap4d/util.c (util_base64_encode): Bugfix. Patch submitted
	by Simon Josefsson.

	* imap4d/Makefile.am: Added local folder format support.
	* pop3d/Makefile.am: Likewise.
	* imap4d/imap4d.c (main): Call mu_register_local_mbox_formats().
	* pop3d/pop3d.c: Likewise.
	* imap4d/namespace.c (namespace_checkfullpath): Preserve an
	eventual URL scheme specification.
	Fixed indentation.
	* include/mailutils/registrar.h (mu_register_local_mbox_formats)
	(mu_register_remote_mbox_formats): New macros.
	* mailbox/maildir/mbox.c: Added UID support.
	* mailbox/mh/mbox.c (mh_scan0): Removed misleading comment

2004-01-15  Wojciech Polak

	* mailbox/mbox/mbox.c: Minor. Use only one printing style
	while debugging.

2004-01-14  Sergey Poznyakoff

	* mailbox/mbox/mbox.c (mbox_append_message0): Truncate the
	stream back to its original size if an error occurred.
	* mail.local/main.c (deliver): Likewise.
	* frm/frm.c: Minor fix in help output.

	* mail/copy.c: Check for error return from mailbox_append_message
	* mail/quit.c: Likewise.
	* mail/send.c: Likewise.

2004-01-13  Sergey Poznyakoff

	* frm/frm.c: Lots of changes for compatibility with ELM.
	* frm/testsuite/frm/test.exp: Updated

2004-01-13  Sergey Poznyakoff

	Implemented 'file:' URLs

	* include/mailutils/registrar.h: Removed file_record
	* mailbox/include/registrar0.h: Likewise
	* examples/mimetest.c: Likewise
	* mailbox/mbox/folder.c: Likewise

	* include/mailutils/mutil.h (mu_scheme_autodetect_p): New function
	* mailbox/mutil.c: Likewise

	* mailbox/amd.c (amd_url_init): Use mu_scheme_autodetect_p().
	* mailbox/maildir/folder.c (_maildir_is_scheme): Likewise.
	* mailbox/mh/folder.c (_mh_is_scheme): Likewise.

	* mailbox/url_file.c: Removed. File not needed anymore.
	* mailbox/url_path.c: Likewise.
	* mailbox/Makefile.am (url_file.c,url_path.c): Removed

	* mailbox/mbox/url.c (_url_path_init): Moved from ../url_path.c
	* mailbox/mbox/file.c: Removed. File not needed anymore.
	* mailbox/mbox/Makefile.am (file.c): Removed

	* frm/frm.c: Improved handling of --select option.
	(action): Optimized select condition.
	* from/from.c: Include missing headers

2004-01-13  Wojciech Polak

	* from/from.c: Use mu_error() where appropriate.
	(from_rfc2047_decode): New function.
	* messages/messages.c: Use mu_error().

2004-01-12  Wojciech Polak

	* frm/frm.c (frm_rfc2047_decode): New function.
	(get_personal): Call the frm_rfc2047_decode().
	* mail/util.c (util_rfc2047_decode): Test LANG
	if LC_ALL is null.

2004-01-12  Sergey Poznyakoff

	* include/mailutils/mailutils.h: Removed gsasl.h (reverses part
	of changes made 2004-01-10). Reason: unconditional inclusion
	causes compilation failure if libgsasl is not installed.

	* NEWS: Updated

	* mailbox/maildir/maildir.h: New file.
	* mailbox/amd.c (amd_url_init): New function
	* mailbox/include/amd.h: Likewise.
	* mailbox/include/registrar0.h (_url_mh_init,_folder_mh_init)
	(_url_maildir_init,_folder_maildir_init): Removed.

	* mailbox/maildir/url.c: Removed.
	* mailbox/maildir/maildir.h: New file
	* mailbox/maildir/folder.c: Auto-detection of maildir format.
	* mailbox/maildir/mbox.c (mkfilename): Renamed to
	maildir_mkfilename. Made external.
	* mailbox/maildir/Makefile.am: Removed url.c, added maildir.h

	* mailbox/mbox/folder.c (_path_is_scheme): New
	function. Implements auto-detection for the "path" scheme.

	* mailbox/mh/url.c: Removed
	* mailbox/mh/Makefile.am: Removed url.c
	* mailbox/mh/folder.c: Auto-detection of MH format.

	* mailbox/url.c: Fixed indentation
	* frm/frm.c: Minor changes.

2004-01-11  Sergey Poznyakoff

	* mailbox/amd.c (amd_open,amd_close): Bugfix

2004-01-11  Wojciech Polak

	* libmu_scm/mailutils.scm.in (mu-libs): Added libmu_maildir.

2004-01-11  Wojciech Polak

	* readmsg/readmsg.c (main): Use mu_register_all_mbox_formats().
	* guimb/main.c (main): Use mu_register_all_formats().
	* scripts/mailutils.spec.in: Updated.
	* include/mailutils/Makefile.am: Added missing refcount.h.

2004-01-10  Wojciech Polak

	* include/mailutils/mailutils.h: Added missing header files.
	* include/mailutils/gsasl.h: Include <gsasl.h>.

	* messages/messages.c (main): Use mu_register_all_mbox_formats().
	(messages_count): Improved diagnostics.
	* messages/Makefile.am: Updated.
	* frm/frm.c (main): Unified diagnostic messages.
	* frm/Makefile.am: Updated.

2004-01-09  Sergey Poznyakoff

	* NEWS: Documented new features.

2004-01-08  Sergey Poznyakoff

	* configure.ac (LIBMU_SCM_DEPS): Added maildir

	* mailbox/amd.c: New file. Abstract mail directory level.
	* mailbox/Makefile.am: Added amd.c

	* mailbox/include/amd.h: New file.
	* mailbox/include/Makefile.am: Added amd.h

	* mailbox/maildir/mbox.c: Implemented
	* mailbox/maildir/folder.c: New file
	* mailbox/maildir/url.c: New file
	* mailbox/maildir/Makefile.am: Added folder.c and url.c

	* mailbox/mh/mbox.c: Re-implemented via AMD.

	* mailbox/include/registrar0.h: Added maildir support
	* libmu_scm/mu_scm.c: Likewise.
	* mailbox/mu_argp.c: Likewise.

	* include/mailutils/registrar.h (mu_register_all_mbox_formats)
	(mu_register_all_mailer_formats,mu_register_all_formats): New
	macros.

	* frm/frm.c (main): Use mu_register_all_mbox_formats
	* from/from.c: Likewise.
	* movemail/movemail.c: Likewise.

	* mail/mail.c (main): Use mu_register_all_formats
	* sieve/sieve.c: Likewise
	* mh/mh_init.c (mh_init): Likewise

	* lib/Makefile.am: Minor formatting change
	* messages/messages.c: Likewise

	* pop3d/pop3d.h (pop3d_mark_retr,pop3d_is_retr)
	(pop3d_unmark_retr): Added external declarations.

2004-01-06  Sergey Poznyakoff

	* m4/Makefile.am: Removed.
	* m4/.cvsignore: Updated
	* configure.ac: Removed m4/Makefile.am
	* Makefile.am: Removed m4

2004-01-05  Sergey Poznyakoff

	* include/mailutils/mutil.h (mu_true_answer_p): New function.
	* mailbox/mutil.c: Likewise

	* mail/var.c: (parse_headers): Use mu_true_answer_p()
	* mh/mh.h (is_true): Likewise.
	* mh/mh_init.c (mh_vgetyn): Likewise.
	* sieve/sieve.c (is_true_p): Likewise.

	* movemail/movemail.c (move_message): Improved diagnostics

	* libsieve/runtime.c (instr_run): Adjust pc before calling handler.
	* libsieve/actions.c (sieve_action_stop); Restored zero assignment
	to pc. This is possible due to the changes to runtime.c

2004-01-05  Sergey Poznyakoff

	* include/mailutils/libsieve.h (sieve_locus_t): New datatype.
	(sieve_action_log_t): Changed type of the second argument.
	* libsieve/actions.c (sieve_action_stop): Bugfix. Account for
	-4 offset.
	* libsieve/comparator.c (sieve_match_part_checker): Use
	extended regular expressions by default.
	* libsieve/prog.c (sieve_code_source,sieve_code_line): New
	functions.
	(sieve_code_action,sieve_code_test): Include line info before
	coding the instruction.
	* libsieve/runtime.c (instr_source,instr_line)
	(sieve_get_locus): New functions
	* libsieve/sieve.h (sieve_op_t.line): New member
	* libsieve/sieve.l (push_source,pop_source): Include line info
	* libsieve/sieve.y (sieve_machine_destroy)
	(sieve_machine_begin): Initialize and destroy source_list
	* libsieve/util.c (sieve_log_action): Updated call to
	mach->logger.

	* libsieve/tests.c: Improved debugging messages
	* libsieve/extensions/list.c: Likewise.
	* libsieve/extensions/spamd.c: Likewise.
	* libsieve/extensions/timestamp.c: Likewise.
	* examples/numaddr.c: Likewise.

	* mail.local/main.c: Brought in sync with recent changes to
	libsieve
	* sieve/sieve.c: Likewise.

	* sieve/testsuite/lib/sieve.exp: Default to --line-info=no

	* include/mailutils/list.h (list_locate): New function
	* mailbox/list.c: Likewise

2004-01-04  Wojciech Polak

	* mail/send.c (mail_send): Bugfix. Removed free(p)
	and prevent from later segmentation fault.

2004-01-03  Wojciech Polak

	* auth/tls.c (generate_dh_params): Adapt to GnuTLS >= 1.0.0.
	* po/POTFILES.in: Added movemail/movemail.c

2004-01-03  Sergey Poznyakoff

	* guimb/scm/sieve.scm.in (sieve-version): New function. Supports
	the required --version option.

2004-01-03  Sergey Poznyakoff

	* configure.ac: Fixed INTLINCS
	* examples/Makefile.am: Reverted to mod_LTLIBRARY for
	numaddr.la
	* libmu_scm/Makefile.am: Removed a too general implicit rule.
	It caused config.h to be rebuilt incorrectly.

2004-01-02  Wojciech Polak

	Happy GNU Year! :)

	* libsieve/extensions: New directory.
	* libsieve/extensions/Makefile.am: New file.
	* libsieve/Makefile.am: Added `SUBDIRS = . extensions'.
	* examples/timestamp.c: Moved to ../libsieve/extensions/
	* examples/list.c: Likewise.
	* examples/spamd.c: Likewise.
	* examples/Makefile.am: Updated.
	Added `noinst_LTLIBRARIES = numaddr.la'.
	* configure.ac (AC_PREREQ): Bump to 2.59.
	(AC_CONFIG_FILES): Added libsieve/extensions/Makefile.
	* Makefile.am: Require at least version 1.8.

2003-12-30  Sergey Poznyakoff

	* examples/spamd.c (spamd_test): Use EUID to determine
	user's identity.
	* movemail/movemail.c: Allow to use traditional Emacs
	invocation (password as the last argument) with usual
	Mailutils URLs.

2003-12-30  Sergey Poznyakoff

	* examples/murun.c: Close output stream
	* include/mailutils/locker.h (enum mu_locker_set_mode): New
	data type
	(locker_set_default_flags): Changed declaration
	(locker_set_default_retry_timeout)
	(locker_set_default_retry_count)
	(locker_set_default_expire_timeout)
	(locker_set_default_external_program): New functions
	* mailbox/locker.c: Likewise
	* mailbox/mu_argp.c: New locker options
	* mail.local/main.c: Adapt for new locker functions.

	* mailbox/file_stream.c (prog_stream_wait,start_program_filter)
	(_prog_close,_prog_open): Bugfixes

	* mh/mhl.c: Minor fix
	* movemail/movemail.c: --keep-messages option (an alias for -p)

2003-12-29  Sergey Poznyakoff

	* comsat/comsat.c (main): Minor fix (do not use hardcoded
	log facility)
	* mail.local/main.c: New option --message-id-header

	* imap4d/imap4d.c: Fixed first argument to socket (Thanks
	Daniel Dehennin <nebuchadnezzar@nerim.net> for reporting)
	* mailbox/tcp.c: Likewise
	* pop3d/pop3d.c: Likewise
	* mailbox/mu_argp.c: Minor style fix

2003-12-28  Jeff Bailey  <jbailey@nisa.net>

	* doc/texinfo/Makefile.am: Use ../$(srcdir) instead of .. to
	support srcdir != builddir invocations of make html.

	* doc/texinfo/programs.texi: Provide sample invocation of
	mail.local.  Include note about virtual hosting.

2003-12-28  Sergey Poznyakoff

	* movemail/movemail.c: Minor changes for compatibility with
	the Emacs implementation.

2003-12-28  Sergey Poznyakoff

	* movemail: New directory
	* movemail/movemail.c: New file
	* movemail/Makefile.am: New file
	* movemail/.cvsignore: New file

	* Makefile.am: Added movemail
	* configure.ac: Likewise
	* examples/spamd.c: Minor changes
	* examples/list.c: Minor changes

2003-12-26  Sergey Poznyakoff

	* COPYING: New file
	* COPYING.LIB: Renamed to
	* COPYING.LESSER: this
	* Makefile.am: Updated
	* README: Updated
	* autogen.sh: Updated
	* configure.ac: Fixes to work with automake 1.8/autoconf 2.59
	* m4/db2.m4: Likewise
	* m4/debug.m4: Likewise
	* m4/getopt.m4: Likewise
	* m4/gsasl.m4: Likewise
	* m4/gssapi.m4: Likewise
	* m4/guile.m4: Likewise
	* m4/lib.m4: Likewise
	* m4/mu_libobj.m4: Likewise
	* m4/tls.m4: Likewise

	* doc/texinfo/body.texi: Minor fixes.
	* doc/texinfo/libsieve.texi: Likewise

2003-12-26  Sergey Poznyakoff

	* examples/list.c: New sieve extension test.
	* examples/spamd.c: Modified.
	* examples/Makefile.am: Added list.c

	* dotlock/dotlock.c: Changed multiline doc string to
	a single-line one: gettext 0.13 is unable to handle
	translator comments with multiline msgids.
	* mail.local/main.c: Likewise
	* mail.remote/mail.remote.c: Likewise
	* mh/anno.c: Likewise
	* mh/fmtcheck.c: Likewise
	* mh/folder.c: Likewise
	* mh/forw.c: Likewise
	* mh/inc.c: Likewise
	* mh/install-mh.c: Likewise
	* mh/mark.c: Likewise
	* mh/mhl.c: Likewise
	* mh/mhn.c: Likewise
	* mh/mhpath.c: Likewise
	* mh/pick.c: Likewise
	* mh/refile.c: Likewise
	* mh/repl.c: Likewise
	* mh/rmf.c: Likewise
	* mh/rmm.c: Likewise
	* mh/scan.c: Likewise
	* mh/send.c: Likewise
	* mh/whom.c: Likewise
	* sieve/sieve.c: Likewise

2003-12-25  Sergey Poznyakoff

	Added changes from the backup repository

2003-12-24  Sergey Poznyakoff

	* examples/spamd.c: New file.
	* examples/Makefile.am: Added spamd.c
	* include/mailutils/libsieve.h (sieve_match_part_checker):
	Prototype.

2003-12-23  Sergey Poznyakoff

	* examples/pop3client.c: Added typecasts
	* include/mailutils/errno.h: New error codes
	* mailbox/muerrno.c: Likewise
	* mail.remote/testsuite/Data: Updated to synchronize
	with the changes dated 2003-12-04
	* mailbox/file_stream.c: Rewritten support for program
	streams.
	(filter_prog_stream_create): New function.
	* include/mailutils/stream.h (filter_prog_stream_create): New
	function.
	* examples/murun.c: New file
	* examples/Makefile.am: Added murun.c

2003-12-17  Wojciech Polak

	* configure.ac: Set AM_GNU_GETTEXT_VERSION(0.13).
	* m4/Makefile.am: Updated (gettext 0.13).

2003-12-17  Sergey Poznyakoff

	* dotlock/dotlock.c: Added translators' comment
	* mail.local/main.c: Likewise
	* mail.remote/mail.remote.c: Likewise
	* mh/anno.c: Likewise
	* mh/fmtcheck.c: Likewise
	* mh/folder.c: Likewise
	* mh/forw.c: Likewise
	* mh/inc.c: Likewise
	* mh/install-mh.c: Likewise
	* mh/mark.c: Likewise
	* mh/mhl.c: Likewise
	* mh/mhn.c: Likewise
	* mh/mhpath.c: Likewise
	* mh/pick.c: Likewise
	* mh/refile.c: Likewise
	* mh/repl.c: Likewise
	* mh/rmf.c: Likewise
	* mh/rmm.c: Likewise
	* mh/scan.c: Likewise
	* mh/send.c: Likewise
	* mh/whom.c: Likewise
	* sieve/sieve.c: Likewise

2003-12-12  Sergey Poznyakoff

        Temporarily switched to the back-up repository
        on mirddin. Change map:

        Date from       Date to         Repository
        ========        =======         ==========
        1999-09-10      2003-12-01      Savannah
        2003-12-04      2003-12-25      Mirddin

2003-12-05  Sergey Poznyakoff

	* mailbox/imap/mbox.c (mailbox_imap_open): Bugfix. Thanks
	Stephen Bylo <Stephen.Bylo@radixs.com> for reporting.

2003-12-04  Sergey Poznyakoff

	* mh/mhn.c (stream_getline): Bugfix
	* mailbox/parse822.c (parse822_route_addr): Handle empty
	addresses. Patch provided by Rob Casey <rob.casey@bluebottle.com>
	* mailbox/smtp.c (smtp_send_message): Send sender and recipient
	addresses enclosed in angle brackets.
	* mailbox/testsuite/Addrs: Fixed null address test.

2003-12-01  Sergey Poznyakoff

	* mailbox/sendmail.c (sendmail_send_message): Don't
	close the descriptor if it happens to make a part of tunnel
	pipe.

2003-11-28  Sergey Poznyakoff

	* mailbox/argcv.c (argcv_escape_char,escape_copy): Bugfix

2003-11-04  Sergey Poznyakoff

	* mh/anno.c (main): Remove trailing colon from the component name.

2003-11-04  Sergey Poznyakoff

	* mailbox/rfc2047.c (rfc2047_decode): Bugfix.

	* mh/mh_argp.c (mh_argp_parse): Changed prototype.
	* mh/mh_getopt.h: Likewise.
	* mh/ali.c: Updated calls to mh_argp_parse()
	* mh/anno.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhparam.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/whom.c: Likewise.

2003-11-04  Sergey Poznyakoff

	* mailbox/parse822.c: Be more liberal in parsing
	local parts.
	* mh/ali.c (getcols): Return default of 80 columns if
	both ioctl() and getenv() fail.
	(ali_print_name_list): Bugfix.
	(main): In -user mode, print the argument verbatim if it
	is not a member of any alias.
	* mh/mh_alias.l (pop_source): Always free ali_filename.
	Grammar: Bugfixes.
	(mh_alias_read): Provide a debugging hook
	(ali_verbatim): New function.
	* mh/mh_alias.y: Fixed grammar.
	(ali_member): Compare addresses if strcmp() fails.
	* mh/mh.h (ali_verbatim): New function.

	* examples/pop3client.c: Added missing includes

2003-10-28  Sergey Poznyakoff

	* mail/mail.c: Implemented -a (--append) option.
	* mail/mail.h (mail_sendheader,send_append_header)
	(send_append_header2): New functions.
	* mail/send.c: Likewise.
	* mail/table.c: New command "sendheader"

2003-10-27  Alain Magloire

	* mailbox/mapfile_stream.c(_mapfile_size): Only call msync() if
	the file was also open with PROT_WRITE.
	(_mapfile_flush): Ditto.

2003-10-25  Sergey Poznyakoff

	* mailbox/list.c (list_do): Bugfix

2003-10-24  Sergey Poznyakoff

	* mailbox/list.c (list_do): Rewritten using iterators.
	* mh/mh_alias.l: Resolve a conflict between the angle bracket
	indicating file inclusion and the one starting a valid
	RFC822 address.
	* mh/mh_alias.y: Allow for full RFC822 addresses.

2003-10-18  Sergey Poznyakoff

	* pop3d/quit.c (pop3d_fix_mark): Use only valid C comments.
	Fixed erroneous format specification.
	Format X-Expire-Timestamp value only if necessary.
	* pop3d/pop3d.c (options): Minor fix in help line wording.
	(pop3d_parse_opt): Fixed duplicate case.

	* pop3d/capa.c: Indicate login-delay capability.
	* pop3d/logindelay.c (login_delay_capa): New function.
	* pop3d/pop3d.h: Likewise.

2003-10-17  Alain Magloire

	First try of implementing CAPA EXPIRE in pop3d.

	* pop3d/expire.c: New file.
	* pop3d/pop3d.c: New options --expire, expire new global variable.
	* pop3d/quit.c (pop3d_fix_mark): Set the X-Expire-Timestamp for
	RETR messages.
	* pop3d/capa.c: Advertise EXPIRE.
	* pop3d/pop3d.h: Declaration of global variable expire.
	* pop3d/retr.c: Set a flag on downloaded messages.

2003-10-17  Sergey Poznyakoff

	* mailbox2: It is hopelessly obsolete. Removed. We'd better modify
	the files "in situ".

2003-10-17  Sergey Poznyakoff

	* doc/texinfo/programs.texi (pop3d): Documented new option.
	* examples/timestamp.c: New file. Implements sieve extension
	test "timestamp".
	* examples/Makefile.am: Added timestamp.c

2003-10-13  Sergey Poznyakoff

	* NEWS: Updated
	* pop3d/logindelay.c: Couple of bugfixes.
	* pop3d/popauth.c (options): New option --permissions allows to
	override default permissions on the database file.

2003-10-11  Sergey Poznyakoff

	* pop3d/logindelay.c: New file
	* pop3d/Makefile.am: Added logindelay.c
	* pop3d/pop3d.c: New options --login-delay, --stat-file
	* pop3d/pop3d.h (check_login_delay,update_login_delay): New
	functions.
	* pop3d/quit.c (pop3d_quit): Call update_login_delay().
	* pop3d/user.c (pop3d_user): Call check_login_delay().

	* mh/mh_format.c (builtin_formataddr): Fixed checking for duplicate
	addresses.

2003-10-10  Alain Magloire

	GNU Mailutils 0.4 was released.  New code added.

	* configure.ac: Added include/mailutils/sys/Makefile.
	* mailbox/pop/Makefile.am (libmu_pop_la_sources): Added all the
	pop3_*.c code now part of libmu_pop.a
	* include/mailutils/Makefile.am (pkginclude_HEADERS): Added file
	pop3d.h
	(SUBDIRS): New directory sys added.
	* include/mailutils/sys/Makefile.am: new Makefile.am
	* example/Makefile.am: pop3client.c Added.

	* doc/rfc/rfc3206.txt: New publish RFC for POP3

2003-10-10  Alain Magloire

	* mailbox/pop/pop3_readline.c (pop3_getline): Use
	stream_sequential_readline() instead of stream_readline() and do
	not maintain any offsets.
	* include/mailutils/sys/pop3d.h (struct mu_pop3_work_buf): Remove
	of the offset field.
	* examples/pop3client.c: Changes to check for errors.

2003-10-10  Sergey Poznyakoff

	* configure.ac: Raised patchlevel number
	* mail/print.c (mail_print): Pass MSG_SILENT flag.
	* pop3d/pop3d.c: New option --undelete tells pop3d to
	undelete all delete messages on startup.
	* pop3d/user.c: Handle undelete_on_startup flag.
	* pop3d/extra.c (pop3d_mark_deleted,pop3d_is_deleted)
	(pop3d_unset_deleted,pop3d_undelete_all): New functions
	* pop3d/pop3d.h: Likewise.
	* pop3d/dele.c: Use new pop3d_.*_deleted calls.
	* pop3d/list.c: Likewise.
	* pop3d/quit.c: Likewise.
	* pop3d/retr.c: Likewise.
	* pop3d/rset.c: Likewise.
	* pop3d/stat.c: Likewise.
	* pop3d/top.c: Likewise.
	* pop3d/uidl.c: Likewise.

2003-10-09  Alain Magloire

	Possible use:
		list_count (list, &total);
		array = malloc (total *(sizeof *array));
		if (users != NULL)
		  list_to_array (list, users, total, &total);
        copy in the array the number of items.

	* mailbox/list.c (list_to_array): New function.
	* include/mailutils/list.h (list_to_array): Declaration.

2003-10-09  Alain Magloire

	Scenario: the attribute_set_delete() use the header field
	"Status: d" to store the information.  During a POP session,
	if messages had the "Status: D", the messages would be
	deleted during the update state(QUIT), not what is expected.
	Only messages mark deleted with the command DELE, should be deleted.
	Sergey proposed an implementation, using attribute_xxx_userflag()
	instead for delete markers.

	* pop3d/dele.c: Use for attribute_is_userflag()
	* pop3d/list.c: Use for attribute_is_userflag()
	* pop3d/retr.c: Use for attribute_is_userflag()
	* pop3d/rset.c: Use for attribute_is_userflag()
	* pop3d/top.c: Use for attribute_is_userflag()
	* pop3d/uidl.c: Use for attribute_is_userflag()
	* pop3d/pop3d.h (POP3_ATTRIBUTE_DELE): New define.
	* pop3d/quit.c (pop3d_fix_mark): Use for attribute_is_userflag()
	(pop3d_quit): Call to pop3d_fix_mark.


2003-10-07  Alain Magloire

	Reuse the mailutils mu_debug_t object to do debug tracing
	no need to reinvent another scheme.

	* include/mailutils/pop3.h: New declaration mu_pop3_set_debug.
	* include/mailutils/sys/pop3.h: new field mu_debug_t in structure.
	* mailbox/pop/pop3_debug.c:  Use of mu_debug_t object.
	* examples/pop3client.c: Fix SIGSEGV and print error messages.

2003-10-06  Alain Magloire

	* mailbox/pop/pop3_stls.c: New file.
	* mailbox/pop/pop3_pass.c: Obscure the buffer with the passwd for
        security reasons.
	* mailbox/pop/pop3_apop.c: Obscure the buffer with the digest for
        security reasons.
	* include/mailutils/pop3.h: Declaration mu_pop3_stls().
	* include/mailutils/sys/pop3.h: New states added to accommodate STLS
        command.
	* doc/texinfo/pop3.texi: Corrected some typos.

2003-10-06  Sergey Poznyakoff

	* configure.ac: Raised version number to 0.4

	* lib/getopt.c: Moved to ...
	* mailbox/getopt.c: ... here
	* lib/getopt1.c: Moved to ...
	* mailbox/getopt1.c: ... here
	* lib/Makefile.am: Removed getopt.
	* mailbox/Makefile.am: Added getopt.

	* m4/getopt.m4: New file
	* m4/mu_libobj.m4 (MU_HEADER): Prevent multiple inclusions.
	* m4/Makefile.am: Added getopt.m4

	* imap4d/imap4d.h: Added missing includes
	* mail/mail.h: Likewise
	* mail/util.c: Likewise
	* mailbox/ticket.c: Likewise
	* auth/tls.c: Likewise
	* from/from.c: Likewise
	* readmsg/readmsg.c: Likewise
	* readmsg/readmsg.h: Likewise

	* mail/decode.c (display_message): Bugfix
	* mailbox/locale.c (mu_charset_lookup): Bugfix
	* mailbox/mailutils-config.c: Minor fix in the help string.
	* mh/repl.c: Likewise.
	* mh/mh.h (mh_format_str): Added prototype.

	* NEWS: Updated

2003-10-05  Alain Magloire

	* examples/pop3client.c:  A simple example illustrating the use
	of the low level POP3 function calls.

2003-10-05  Alain Magloire

	Implementation of the lower level functions for POP3 in a separate
	library.
	This the first draft, the code is not yet enabled in the Makefile.am

	* mailbox/pop/pop3_apop.c: APOP
	* mailbox/pop/pop3_capa.c: CAPA
	* mailbox/pop/pop3_carrier.c: TCP stream.
	* mailbox/pop/pop3_connect.c:
	* mailbox/pop/pop3_create.c:
	* mailbox/pop/pop3_debug.c:
	* mailbox/pop/pop3_dele.c: DELE
	* mailbox/pop/pop3_destroy.c:
	* mailbox/pop/pop3_disconnect.c:
	* mailbox/pop/pop3_lista.c: LIST
	* mailbox/pop/pop3_list.c: LIST
	* mailbox/pop/pop3_noop.c: NOOP
	* mailbox/pop/pop3_pass.c: PASS
	* mailbox/pop/pop3_quit.c: QUIT
	* mailbox/pop/pop3_readline.c:
	* mailbox/pop/pop3_response.c:
	* mailbox/pop/pop3_retr.c: RETR
	* mailbox/pop/pop3_rset.c: RSET
	* mailbox/pop/pop3_sendline.c:
	* mailbox/pop/pop3_stat.c: STAT
	* mailbox/pop/pop3_stream.c:
	* mailbox/pop/pop3_timeout.c:
	* mailbox/pop/pop3_top.c: TOP
	* mailbox/pop/pop3_uidl.c: UIDL
	* mailbox/pop/pop3_uidla.c: UIDL
	* mailbox/pop/pop3_user.c: USER

	* include/mailutils/pop3.h: Declaration of the public functions.
	* include/mailutils/sys/pop3.h: Declaration of the internal
	functions and structures.

	* doc/texinfo/pop3.texi: updated.

2003-10-05  Alain Magloire

	When list_destroy() is called, we need to provide also
	a way to free the item is necessary. To do this we added a new
	function:

	extern int list_set_destroy_item __P ((list_t list,
	       void (*destroy_item) __P((void *))));

	This function let us register a function to call on the item
	when the list is being destroy.
	Unresolved Problems: What about list_remove() and list_replace() ?
	should destroy_item() be called when the item is no longer in the
	list ?

	* mailbox/list.c (list_destroy) : Call to list->destroy_item() when
	the data is free().
	(list_set_destroy_item): New function.
	* mailbox/include/list0.h (destroy_item): New field in the structure.
	* include/mailutils/list.h (list_set_destroy_item): New declaration.

2003-09-27  Wojciech Polak

	* mailutils.spec.in: Updated and moved to ...
	* scripts/mailutils.spec.in: ... here.
	* scripts/Makefile.am: Updated.
	* configure.ac: Likewise.
	* Makefile.am: Likewise.

2003-09-27  Sergey Poznyakoff

	* configure.ac: Moved fgetpwent from AC_CHECK_FUNCS to
	MU_CHECK_FUNCS.

	* lib/Makefile.am: Removed fgetpwent.c
	* mailbox/Makefile.am: Added fgetpwent.c
	* lib/fgetpwent.c: Moved to ...
	* mailbox/fgetpwent.c: ... here

	* imap4d/imap4d.h: Added missing include
	* imap4d/search.c (imap4d_search0): Use case-insensitive
	comparison
	* imap4d/status.c (status_get_handler): Likewise
	* imap4d/util.c: Fixed wording of the comment.

	* mailbox/locker.c (_locker_destroy_private): Bugfix

2003-09-25  Sergey Poznyakoff

	* mailbox/munre.c (munre_set_regex): Bugfix again.
	* mailbox/filter_trans.c (qp_decode): Bugfix. According
	to RFC, underscore represents space.
	* mailbox/rfc2047.c (rfc2047_decode): Ignore whitespace between
	the encoded segments.
	* mailbox/testsuite/RFC2047: Reflect the recent changes.
	* NEWS: Updated

	* mail/mail.h (mail_nounfold,mail_unfold)
	(mail_header_is_unfoldable): New functions.
	* mail/print.c (mail_print_msg): Unfold the header value, if
	required.
	* mail/retain.c: Rewritten.
	(mail_nounfold,mail_unfold)
        (mail_header_is_unfoldable): New functions.
	* mail/table.c: Added new command words.
	* mail/mail.c: Default to "unfold subject"
	* mail/util.c (util_slist_remove): New function.

	* auth/lbuf.c: Added missing includes.
	* auth/lbuf.h: Likewise.

2003-09-22  Sergey Poznyakoff

	* mailbox/munre.c (munre_set_regex): Bugfix.
	* mh/replgroupcomps: Added trailing newline

2003-09-21  Sergey Poznyakoff

	Added decoding of RFC 2047 headers to MUA programs (mail and mh).
	Fixed incorrect session termination in imap and pop clients.

	* mailbox/locale.c: New file. Contains locale-dependent functions.
	* mailbox/Makefile.am: Added locale.c

	* include/mailutils/mutil.h (mu_charset_lookup): New function.
	* mail/from.c (mail_from0): Use util_rfc2047_decode for
	"From" and "Subject" headers.
	* mail/mail.c (main): Set default value for the "charset" variable.
	* mail/mail.h (util_rfc2047_decode): New function.
	* mail/util.c: Likewise.
	* mail/print.c: Use util_rfc2047_decode for printing headers.
	* doc/texinfo/programs.texi: Documented "charset" mail
	variable

	* mh/mh_format.c (mh_format): Use header_aget_value_unfold when
	retrieving the header value.
	(builtin_decode): New function. Implements (decode).
	* mh/README: Updated

	* mailbox/imap/folder.c (authenticate_imap_sasl_anon): Fixed typo
	in debug output.
	(folder_imap_open): Issue LOGOUT if all the authentication methods
	have failed.
	* mailbox/imap/mbox.c (imap_get_fd): Removed. Use imap_get_fd2
	instead.
	* mailbox/pop/mbox.c (_pop_user): Do not close the stream on
	authentication failures.

	* imap4d/login.c: Minor fix

2003-09-20  Sergey Poznyakoff

	Install under mailutils/gnu only those headers which are
	missing on the system.
	Include regex to libmailbox if the system's libc lacks it.
	Add new functions for handling reply subject headers.

	* Makefile.am: Added headers
	* m4/mu_libobj.m4 (MU_HEADER,MU_FINISH_LINKS): New macros
	* configure.ac: Use MU_HEADER and MU_FINISH_LINKS where needed
	* m4/regex.m4: Likewise

	* dotlock/Makefile.am: Fixed INCLUDES
	* lib/Makefile.am: Updated
	* mailbox/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* include/mailutils/gnu/Makefile.am: Likewise.
	* libsieve/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* mail.remote/Makefile.am: Likewise.
	* mailbox/imap/Makefile.am: Likewise.
	* mailbox/maildir/Makefile.am: Likewise.
	* mailbox/mbox/Makefile.am: Likewise.
	* mailbox/mh/Makefile.am: Likewise.
	* mailbox/pop/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.
	* from/Makefile.am: Likewise.
	* comsat/Makefile.am: Likewise.
	* auth/Makefile.am: Likewise.

        * headers: New directory
        * headers/Makefile.am: New file
        * headers/posix/Makefile.am: New file

	* include/mailutils/gnu/argp.h: Moved to ...
	* headers/argp.h: ... here
	* include/mailutils/gnu/getopt.h: Moved to ...
	* headers/getopt.h: ... here

	* lib/regex.h: Moved to ...
	* headers/regex.h: ... here
	* lib/posix/regex.h: Moved to ...
	* headers/posix/regex.h: ... here
	* lib/posix/Makefile.am: Removed
	* lib/posix/.cvsignore: Removed
	* lib/posix: Removed

	* lib/regex.c: Moved to ...
	* mailbox/regex.c: ... here

	* include/mailutils/gnu/.cvsignore: Updated

	* mailbox/munre.c: New file
	* include/mailutils/mutil.h (munre_set_regex)
	(munre_subject): New functions.

	* mail/followup.c: Use munre_subject() and util_reply_prefix().
	* mail/reply.c: Likewise
	* mail/mail.c (struct argp_option options): Removed irrelevant
	OPTION_DOC.
	(main): Set default replyprefix
	* mail/mail.h (util_reply_prefix): New function
	* mail/util.c: Likewise
	(util_setenv): A hack to properly handle "replyregex".
	* mail/var.c (run_editor): Fixed return type.

	* mh/mh_format.c (builtin_unre): Use munre_subject()
	(builtin_isreply,builtin_reply_regex): New functions
	* mh/mh.h (mh_set_reply_regex): New function.
	* mh/mh_init.c: Likewise.
	* mh/mh_global.c (mh_read_profile): Read Reply-Regex

	* mh/README: Updated
	* mh/replcomps: Updated
	* mh/replgroupcomps: Updated

	* doc/texinfo/programs.texi: Updated

2003-09-18  Sergey Poznyakoff

	* mailbox/mh/mbox.c (_mh_message_delete): Zero out the
	msg_pool slot occupied by the message being deleted.
	(mh_pool_lookup): On success return the address of the
	msg_pool slot.

	* pop3d/pop3d.h (process_cleanup): New function
	* pop3d/signal.c: Likewise
	* pop3d/pop3d.c (pop3d_daemon): Collect finished children
	synchronously.

2003-09-16  Sergey Poznyakoff

	* mh/repl.c (opt_handler): Force RCPT_ALL if --group is given.

2003-09-11  Sergey Poznyakoff

	* mailbox/imap/folder.c (authenticate_imap_login): Do not
	close the stream on authentication failures.
	(authenticate_imap_select): Bugfix
	(imap_parse): Use MU_ERR_AUTH_FAILURE where appropriate.

	* doc/texinfo/programs.texi: Updated

2003-09-10  Sergey Poznyakoff

	* include/mailutils/errno.h (MU_ERR_BAD_AUTH_SCHEME)
	(MU_ERR_AUTH_FAILURE): New error codes.
	* mailbox/muerrno.c: Likewise.

	* mailbox/include/auth0.h (struct _authority): Keep a list
	of authentication methods.
	* mailbox/auth.c (authority_authenticate): Authentication
	methods are now stored as a list.
	* mailbox/mailbox.c (mailbox_create): Bugfix. Return failure
	if the folder cannot be created.

	* mailbox/imap/folder.c: Allow user to specify several possible
	authentication methods after AUTH= (an extension to RFC 2192).
	(folder_imap_get_authority): Select an appropriate authentication
	mechanism if AUTH=*, as suggested by RFC.

	* mailbox/pop/folder.c (folder_pop_get_authority): Return
	an appropriate error code.

	* mh/rmf.c (rmf): Bugfix.

2003-09-10  Sergey Poznyakoff

	* mailbox/imap/folder.c (read_capa): New function.
	(check_capa): Call read_capa.
	(authenticate_imap_login): Check for LOGINDISABLED.
	(tls): Reread the capabilities after successful TLS
	negotiation.

2003-09-09  Sergey Poznyakoff

	* include/mailutils/address.h (address_aget_personal): Added
	missing prototype.

2003-09-05  Wojciech Polak

	* mailbox/wicket.c: Moved stat() (checking the file
	permissions) to wicket_create().
	* sieve/sieve.c (tickets_default): New variable.
	(main): Check the tickets_default.

2003-09-05  Sergey Poznyakoff

	* lib/mu_dbm.c (mu_fcheck_perm, mu_check_perm): Return
	MU_ERR_UNSAFE_PERMS when appropriate.
	* mailbox/muerrno.c: Fixed indentation.
	* pop3d/popauth.c: Use mu_strerror.

	* mh/ali.c (main): Bugfix. Lists were not initialized.
	* mh/mh_alias.l (push_source): Honor Path variable.

2003-09-04  Wojciech Polak

	* include/mailutils/errno.h: Added MU_ERR_UNSAFE_PERMS.
	* mailbox/muerrno.c: Likewise.
	* mailbox/wicket.c (get_ticket): Check file permissions.

2003-09-02  Wojciech Polak

	* mailbox/pop/mbox.c (pop_get_message): Check UIDL capability
	before using pop_uidl().

2003-09-02  Sergey Poznyakoff

	* mail/mail.c: Fixed description of --file argument.
	* mailbox/filter_trans.c (qp_decode): Fixed bug that
	could overflow the receiving buffer.

2008-09-02  Wojciech Polak

	* mail/next.c (mail_next): Check return code from msgset_parse
	to prevent segmentation fault.
	* mail/previous.c (mail_previous): Likewise.

2008-09-01  Wojciech Polak

	* pop3d/pop3d.c (pop3d_daemon): Added startup notification.
	* imap4d/imap4d.c (imap4d_daemon): Likewise.

2003-08-30  Wojciech Polak

	* auth/tls.c (mu_check_tls_environment): Improved diagnostics.
	* mailbox/pop/mbox.c (POP_AUTH_USER_ACK): Protect password
	in debug mode (PASS ***).

2003-08-29  Sergey Poznyakoff

	* imap4d/bye.c: Do not attempt to write to the output
	stream if a signal was caught.
	* imap4d/signal.c (imap4d_signal): Minor fix
	* pop3d/extra.c (pop3d_abquit): Flush and close the mailbox
	only unless we're not in the AUTHORIZATION state.
	Do not attempt to write to the output stream if a signal was
	caught.
	* include/mailutils/errno.h (MU_ERR_NOUSERNAME)
	(MU_ERR_NOPASSWORD): New error codes.
	* mailbox/muerrno.c: Likewise.
	* mailbox/mailbox.c (mailbox_flush): Test the first argument.
	* mailbox/ticket.c (ticket_pop): Fallback to command line
	prompt if _pop() failed and stdin is connected to a terminal.
	* mailbox/imap/folder.c: Provide a better diagnostics.
	* mailbox/pop/mbox.c (_pop_user): Send QUIT before dropping
	the connection.	Provide a better diagnostics.
	* sieve/sieve.c: Destroy the mailbox if the attempt to open it has
	failed.

2003-08-29  Wojciech Polak

	* mailbox/pop/mbox.c (pop_capa): New function.
	Moved CAPA support to pop_capa. Conform to RFC 2595:
	reissue CAPA after successful STLS negotiation.
	(tls): Renamed to pop_stls().

2003-08-29  Sergey Poznyakoff

	* auth/gsasl.c: Lots of fixes.
	* auth/lbuf.h (_auth_lb_writelines): New function.
	* auth/lbuf.c: Likewise
	* imap4d/util.c (util_run_events): Use iterator instead of
	list_do. Iterators are safer.

2003-08-28  Sergey Poznyakoff

	Implemented the TLS protocol for IMAP and POP mailboxes.
	Split libmailbox to the core library (libmailbox) and
	the protocol implementation libraries (libmu_$PROTONAME).

	* auth/lbuf.h: New file.
	* auth/lbuf.c: New file.
	* auth/tls.c: Implemented client TLS stream.
	* auth/gsasl.c: Use lbuf stuff.
	* auth/Makefile.am: Updated.

	* mailbox/mbx_file.c: Moved to ...
	* mailbox/mbox/file.c: ... here
	* mailbox/mbox/Makefile.am: Changed target to lib_LTLIBRARY
	* mailbox/mh/Makefile.am: Likewise
	* mailbox/imap/Makefile.am: Likewise
	* mailbox/pop/Makefile.am: Likewise
	* mailbox/maildir/Makefile.am: Likewise

	* dotlock/Makefile.am: Adopted _LDADD for the new library layout.
	* examples/Makefile.am: Likewise
	* from/Makefile.am: Likewise
	* guimb/Makefile.am: Likewise
	* imap4d/Makefile.am: Likewise
	* mail/Makefile.am: Likewise
	* mailbox/Makefile.am: Likewise
	* messages/Makefile.am: Likewise
	* mh/Makefile.am: Likewise
	* pop3d/Makefile.am: Likewise
	* readmsg/Makefile.am: Likewise
	* sieve/Makefile.am: Likewise
	* comsat/Makefile.am: Likewise
	* frm/Makefile.am: Likewise
	* mail.local/Makefile.am: Likewise

	* configure.ac: Moved Kerberos libs to SERV_AUTHLIBS.
	* Makefile.am: Changed the order of SUBDIRS

	* mailbox/mailutils-config.c: --link part rewritten to reflect
	the new library layout.

	* mailbox/imap/folder.c: Implemented client side TLS
	* mailbox/imap/mbox.c (imap_expunge): Use EXPUNGE instead
	of closing and reopening the mailbox. This way the user
	is not prompted twice for his credentials. Besides, it
	appears to be faster, in spite of what the comment before
	the function said.
	* mailbox/pop/mbox.c: Implemented client side TLS.
	* mailbox/include/imap0.h (struct _f_imap): New members
	capav and capac to hold the array of capabilities.

	* examples/decode2047.c (ISPRINT): Fixed.
	* from/from.c: Use "tls" command line capability.
	* frm/frm.c: Likewise
	* messages/messages.c: Likewise.
	* mail/mail.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.

	* mail/mail.h: Include tls.h
	* readmsg/readmsg.h: Likewise.

	* include/mailutils/stream.h (stream_get_fd2): New function.
	(stream_set_fd): Changed type of the second arg.
	* mailbox/stream.c: Likewise.
	* mailbox/include/stream0.h (struct _stream): Changed
	_get_fd member.

	* mailbox/body.c: Fixed _get_fd methods.
	* mailbox/file_stream.c: Likewise.
	* mailbox/filter.c: Likewise.
	* mailbox/message.c: Likewise.
	* mailbox/mime.c: Likewise.
	* mailbox/mbox/mbox.c: Likewise.
	* mailbox/mapfile_stream.c: Likewise.
	* mailbox/tcp.c: Likewise.

	* include/mailutils/tls.h (tls_stream_create_client)
	(tls_stream_create_client_from_tcp): New functions.
	(mu_tls_enable): New variable

	* libmu_scm/mailutils.scm.in: Modified for the new
	library layout.

	* mailbox/sendmail.c: Added missing includes
	* mailbox/smtp.c: Likewise.
	* mailbox/pop/folder.c: Minor wording change.

	* NEWS: Updated
	* TODO: Updated

2003-08-27  Sergey Poznyakoff

	* NEWS: Updated
	* mailbox/mime.c (_mime_parse_mpart_message): Allow for
	empty part body.
	* examples/mimetest.c: Print the number of lines along with the
	message sizes.

	* testsuite/spool/mbox1: Added fifth message for testing
	empty MIME parts.
	* mailbox/testsuite/Mime: Updated for the new contents of
	mbox1
	* frm/testsuite/frm/test.exp: Likewise.
	* from/testsuite/from/test.exp: Likewise.
	* imap4d/testsuite/imap4d/examine.exp: Likewise.
	* imap4d/testsuite/imap4d/expunge.exp: Likewise.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* mail/testsuite/mail/folder.exp: Likewise.
	* mail/testsuite/mail/write.exp: Likewise.
	* messages/testsuite/messages/test.exp: Likewise.
	* readmsg/testsuite/readmsg/test.exp: Likewise.
	* sieve/testsuite/sieve/header.exp: Likewise.

2003-08-22  Sergey Poznyakoff

	* examples/mta.c (mta_send): Fixed printing of envelope
	to addresses.
	* include/mailutils/address.h (address_format_string): Missed
	prototype.
	* mailbox/header.c: Added missing include
	* mailbox/sendmail.c (sendmail_send_message): Use header
	and body streams sequentially instead of using message
	stream. This allows to catch the modified/added headers.
	* mailbox/smtp.c (smtp_send_message): Likewise.
	* mh/TODO: Updated
	* mh/ali.c (main): Minor change.
	* mh/comp.c (query_mode): Unused variable
	* mh/folder.c (create_flag): A three-state flag.
	(_scan): Fixed behavior on non-existing folders.
	* mh/mh.h: Added new protos
	* mh/mh_alias.l (yyparse): Forward declaration.
	* mh/mh_alias.y (yyerror,yylex): Forward declarations.
	(alias_expand_list,mh_alias_get_internal)
	(mh_alias_get_address): Get an extra argument (for handling
	';' aliases).
	* mh/mh_global.c (mh_global_sequences_drop): New function
	* mh/mh_init.c (mh_getyn): Bugfix
	* mh/mh_stream.c (struct _mhdraft_message.body_start,body_end):
	Changed type to off_t.
	* mh/mh_whom.c (mh_alias_expand): New function
	(scan_addrs): Expand aliases
	* mh/rmf.c: Switch to +inbox after deleting the current folder.
	Improved diagnostics.
	* mh/send.c: Handle aliases.
	* mh/whom.c (main): Bugfix.

2003-08-21  Sergey Poznyakoff

	* include/mailutils/iterator.h (iterator_dup): New function
	* mailbox/iterator.c: Likewise.
	* include/mailutils/list.h (list_insert): New function.
	* mailbox/list.c: Likewise.
	* mh/ali.c: New file
	* mh/mh_alias.y: New file
	* mh/mh_alias.l: New file
	* mh/Makefile.am: Added new files
	* mh/.cvsignore: Likewise.
	* mh/mh.h (mh_alias_read,mh_alias_get)
	(mh_alias_get_address,mh_alias_get_alias)
	(mh_read_aliase,smh_alias_enumerate): New functions.
	* mh/mh_getopt.h: Updated
	* mh/mh_whom.c (scan_addrs): Added support for aliases
	* mh/mhparam.c: Fixed year in the copyleft header.
	* mh/whom.c: Added support for aliases.
	* mh/mh_init.c: Minor cleanup

2003-08-20  Sergey Poznyakoff

	* comsat/action.c (expand_escape): Use argcv_unescape_char()
	instead of backslash().
	* libsieve/sieve.l: Fixed handling of escape sequences in
	strings. Thanks Fabrice Bauzac <fabrice.bauzac@wanadoo.fr>
	for reporting.
	* mailbox/argcv.c (argcv_unescape_char,argcv_escape_char):
	New functions.
	* include/mailutils/argcv.h: Likewise.

2003-08-19  Sergey Poznyakoff

	* mh/replgroupcomps: New file.
	* mh/Makefile.am (mhlib_DATA): Added components and
	replgroupcomps.
	* mh/repl.c: Implemented -group.
	* mh/mh_format.c (builtin_in_reply_to): Bugfix.
	* mh/mh_msgset.c (_mh_msgset_parse): Fixed the semantics
	of last:N and prev:N.
	* mh/mh.h: Updated

2003-08-18  Sergey Poznyakoff

	* mail/mail.h (ml_readline_with_intr): New function.
	* mail/mailline.c: Likewise.
	* mail/send.c: Use ml_readline_with_intr() when prompting
	for header fields.

2003-08-18  Sergey Poznyakoff

	* pop3d/extra.c (pop3d_abquit): Flush message headers.
	* NEWS: Updated.
	* mail/mail.c (main): If the send mode was interrupted by
	the user, exit with zero status if mailx is set.
	* doc/texinfo/programs.texi: Updated.

2003-08-18  Sergey Poznyakoff

	* mail/send.c (mail_send, mail_send0): Use `mailx'
	to control mailx compatibility mode. Thanks Peter S Galbraith
	<p.galbraith@globetrotter.net> for the idea.
	* doc/texinfo/programs.texi: Document  `mailx' variable
	* NEWS: Added entry about `mailx' variable

2003-08-17  Sergey Poznyakoff

	* mail/send.c (mail_send0): Fixed typo in variable name.
	* mh/mhparam.c: New file
	* mh/Makefile.am: Added mhparam
	* mh/.cvsignore: Likewise.
	* mh/mh.h (mh_global_profile_iterate): New function
	* mh/mh_global.c: Likewise.
	* mh/mh_getopt.c (mh_getopt): Implemented -version option.
	* mh/README: Updated

2003-08-13  Sergey Poznyakoff

	* mh/mh_sequence.c (mh_seq_add): Update current_message
	if the sequence being set is "cur". Free temporary storage.
	* mh/components: New file
	* mh/Makefile.am: Added components
	* mh/mh.h (mh_interactive_mode_p, mh_getyn_interactive): New
	functions.
	* mh/mh_init.c (mh_interactive_mode_p, mh_getyn_interactive)
	(mh_vgetyn): New functions.
	(mh_real_install): Use mh_getyn_interactive().
	* mh/pick.c (main): Use mh_interactive_mode_p().

2003-08-12  Sergey Poznyakoff

	* mh/folder.c (_scan): Prompt for creating the folder
	unless --create was given.
	* mh/scan.c (main): Display "no messages in ..." warning
	for empty folders.

2003-08-12  Sergey Poznyakoff

	* mh/mh_msgset.c (mh_msgset_uids): New function.
	* mh/mh.h: Likewise.
	* mh/mark.c (main): Convert msgset to uids.
	* mh/scan.c (list_message): Output an extra newline only
	if the formatted buffer does not end with one.

2003-08-12  Sergey Poznyakoff

	* mail/mail.h (mail_execute): New function.
	* mail/shell.c (mail_execute): New function.
	* mail/var.c (run_editor): A wrapper around mail_execute().
	(var_shell): Use run_editor.
	* mh/mh_format.c (print_simple_segment): Bugfix.
	* mh/replcomps: Improved.

2003-08-11  Sergey Poznyakoff

	* mh/mh.h (enum mh_opcode): New opcode mhop_nop.
	* mh/mh_fmtgram.y (fi production): Preserve the
	result of the last comparison.
	* mh/mh_format.c (mh_format): Count the newline as output
	character (for compatibility with other implementations).
	Set arg_num when evaluating headers.
	(mh_format,mh_format_dump): Handle mhop_nop.
	* mh/repl.c: New option --format.

	* mail/mail.c (main): set rc by default

2003-08-10  Sergey Poznyakoff

	* mh/inc.c (opt_handler): Added missing support for
	-format option. Thanks Peter S Galbraith
	<p.galbraith@globetrotter.net> for reporting.

2003-08-07  Sergey Poznyakoff

	* NEWS: Updated
	* TODO: Updated
	* include/mailutils/header.h (header_get_value_unfold)
	(header_aget_value_unfold,header_get_field_value_unfold)
	(header_aget_field_value_unfold): New functions.
	* mailbox/header.c: Likewise.
	* include/mailutils/mutil.h (mu_string_unfold): New function.
	* mailbox/mutil.c: Likewise.
	* mailbox/mbox/mboxscan.c (FAST_HEADER): Do not remove
	intermediate newlines from the folded headers.
	* frm/frm.c: use header_get_value_unfold
	* mail/from.c: Likewise.

2003-07-26  Sergey Poznyakoff

	Done the following from the TODO:

	-** First argument to mu_auth_fp (and second one to
	mu_auth_runlist) should be struct mu_auth_data ** instead
	of void	*.
	-** (sieve) Implement boolean shortcut evaluation for
	`allof' and `anyof'
	-* util_strcasestr() from mail/util.c provides the same
	functionality as i_ascii_casemap_contains() from
	libsieve/comparator. Merge both versions.

	Detailed list of changes:

	* TODO: Updated
	* configure.ac: Fixed --with-mysql, --with-postgres

	* include/mailutils/mu_auth.h (mu_auth_fp, mu_auth_runlist):
	Changed prototypes.
	* include/mailutils/libsieve.h (struct sieve_runtime_tag): Minor
	change.
	* include/mailutils/mutil.h (mu_strcasestr): New function.

	* auth/mysql.c: Reflect changes to mu_auth_fp
	* auth/pam.c: Likewise.
	* auth/pgsql.c: Likewise.
	* auth/sql.c: Likewise.
	* auth/tls.c: Likewise.
	* auth/virtual.c: Likewise.
	* mailbox/system.c: Likewise.

	* examples/Makefile.am (INCLUDES): Add mailbox (for getline.h)
	* examples/mta.c: include getline.h

	* imap4d/authenticate.c (comp): Minor change
	* imap4d/fetch.c (send_parameter_list): Minor change
	* imap4d/util.c (util_strcasestr): Reimplemented via
	mu_strcasestr()

	* libsieve/README: Documented boolean shortcuts
	* libsieve/comparator.c (i_ascii_casemap_contains): Reimplemented
	via mu_strcasestr()
	* libsieve/prog.c (sieve_code_anyof, sieve_code_allof): New
        functions.
	(struct check_arg): Minor change
	* libsieve/runtime.c (instr_nop): New function
	(instr_allof, instr_anyof): Removed
	* libsieve/sieve.h (sieve_code_anyof,sieve_code_allof): New
        functions.
	(instr_allof, instr_anyof): Removed
	* libsieve/sieve.y: Implemented boolean shortcuts for ALLOF and
	ANYOF

	* mail/mail.h (ml_readline, readline): Removed const from
	the declaration.
	* mail/mailline.c: Likewise.

	* mailbox/body.c (lazy_create): Removed unused function.
	* mailbox/iterator.c (iterator_get_list): Minor change
	* mailbox/mailcap.c: include <mailutils/stream.h>
	* mailbox/mbx_default.c (is_proto): Minor change
	* mailbox/rfc2047.c (insert_quoted): Minor change

	* mailbox/mu_auth.c (mu_auth_runlist,mu_auth_nosupport): Changed
	type of the first argument.

	* mailbox/mutil.c (mu_strcasestr): New function.

	* pop3d/pop3d.h (pop3d_bye): Added missing prototype

2003-07-22  Sergey Poznyakoff

	* mailbox/argcv.c: Implemented escaping/unescaping
	of non-printable characters
	* TODO: Updated.
	* NEWS: Updated
	* mh/Makefile.am (mh_finish_install): Fixed. Thanks
	Andreas Voegele <voegelas@gmx.net> for the patch.

2003-07-16  Sergey Poznyakoff

	* NEWS: Updated
	* TODO: Updated
	* examples/listop.c: New file. A test shell for list operations.
	* examples/Makefile.am: Added listop.c
	* include/mailutils/iterator.h (iterator_get_list): New function.
	* mailbox/iterator.c: Rewritten to reduce the time of list
	traversal.
	* mailbox/list.c (list_remove): Call iterator_advance.
	* mailbox/include/iterator0.h (struct _iterator): Rewritten
	(iterator_advance): New function.
	* mailbox/include/list0.h (struct _list): Keep the linked list
	of associated iterators.
	* mailbox/testsuite/lib/mailbox.exp (mailbox_prog_start)
	(mailbox_prog_command,mailbox_prog_stop,mailbox_prog_test): New
	functions.
	* mailbox/testsuite/mailbox/list.exp: New file. Tests generic list
	operations.
	* mailbox/testsuite/mailbox/DISTFILES: Added list.exp

2003-07-08  Sergey Poznyakoff

	* configure.ac: Raised version number
	* NEWS: Started entry for 0.3.2
	* comsat/comsat.c: Bugfix.
	* pop3d/apop.c: Provide more extensive diagnostics.

2003-07-01  Sergey Poznyakoff

	* auth/pam.c: Minor indentation fix.
	* comsat/comsat.c (notify_user): Bugfix: do not pass
	size_t instead of off_t.
	* mail.local/main.c (deliver): Likewise.

2003-06-26  Sergey Poznyakoff

	* mailbox/mu_auth.c (mu_auth_register_module): Fixed memory
	overrun.
	* pop3d/popauth.c: New option --create

2003-06-23  Sergey Poznyakoff

	* doc/Readme.mysql: Removed. File not relevant anymore.
	* include/mailutils/nls.h: Minor change.
	* mail/mail.c (parse_opt): Use util_cache_command, except
	for -n, which should be executed immediately.
	(main): Run cached commands after sourcing the startup files.
	* mail/mail.h (util_cache_command,util_run_cached_commands):
	New functions.
	* mail/util.c: Likewise.

2003-06-22  Alain Magloire

	* doc/texinfo/pop3.texi: First draft documenting the new low level
	API for POP3.

2003-06-21  Wojciech Polak

	* mailutils.spec.in: Major changes. Added new packages,
	changed package names. Thanks Bennett Todd <bet@rahul.net>
	for testing.

2003-06-11  Sergey Poznyakoff

	* autogen.sh: A hack to force automake to install COPYING file.
	* Makefile.am: Changed AUTOMAKE_OPTIONS, added COPYING.LIB
	to EXTRA_DIST.
	* README: Minor change.
	* COPYING.FDL: Moved to ...
	* doc/texinfo/COPYING.DOC: ... here
	* doc/texinfo/Makefile.am: Added COPYING.DOC.
	* mh/mhn.c (store_handler): Fixed indentation.

2003-06-07  Wojciech Polak

	* configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1.
	  (INTLINCS): Added `-I../intl'.
	* m4/Makefile.am: Added nls.m4 and po.m4.
	* po/Makevars: Added MSGID_BUGS_ADDRESS.

2003-06-07  Sergey Poznyakoff

	* NEWS: Updated

2003-06-02  Sergey Poznyakoff

	* imap4d/fetch.c (fetch_internaldate): Bugfix. Coredumped
	on invalid dates.

2003-05-28  Sergey Poznyakoff

	* mh/mhn.c (store_handler): Honor the `name' attribute of
	the Content-Type header.

2003-05-26  Sergey Poznyakoff

	* imap4d/auth_gss.c (auth_gssapi): Check return codes
	from gss_wrap, gss_unwrap.
	* NEWS: Added entry for 0.3.1
	* mh/mhn.c (_message_is_external_body): Check subtype before
	dereferencing it.

2003-05-24  Alain Magloire

	* configure.ac: Check for "long long" and "long double".
	* lib/snprintf.c: Change to be under LGPL not GPL.
	(vsnprintf): implement "%lld", "%qd", "%Lg"
	* lib/snprintf.h: New macro LONG_LONG, LONG_DOUBLE
	default to long long, long double.

2003-05-20  Sergey Poznyakoff

	* imap4d/auth_gss.c (auth_gssapi): Do not output surplus text
	after the '+'.
	Don't use strdup as the username is not zero terminated.

2003-05-19  Wojciech Polak

	* mailbox/pop/mbox.c: Moved variable `capa' to struct _pop_data.

2003-05-14  Wojciech Polak

	* mailbox/pop/mbox.c: Added the CAPA support (to determine
	  any protocol extension).
	* TODO: Updated.

2003-04-30  Wojciech Polak

	* doc/texinfo/mailutils.texi: Changed @dircategory according
	  to the GNU Directory.
	* po/POTFILES.in: Added auth/mysql.c and auth/pgsql.c.

2003-04-23  Sergey Poznyakoff

	* configure.ac: Renamed --enable-mysql to --with-mysql. Added
	  --with-postgres option.
	  Use AC_FUNC_MALLOC and AC_FUNC_REALLOC instead of old jm_*
	  versions.
	* README: Documented --with-mysql and --with-postgres

	* auth/pgsql.c: New file.
	* auth/mysql.c: New file.
	* auth/sql.h: New file.
	* auth/Makefile.am: Added new files.
	* auth/sql.c: Moved mysql-specific code to mysql.c

	* m4/lib.m4: New file.
	* m4/malloc.m4: Removed.
	* m4/realloc.m4: Removed.
	* m4/Makefile.am: Added lib.m4, removed malloc.m4 and realloc.m4

	* lib/xmalloc.c: Adjusted for use with new AC_CHECK_ macros.

	* include/mailutils/mu_auth.h: Include <mailutils/types.h>,
	  protect the file contents by #ifndef .. #endif
	* mailbox/mu_argp.c (mu_conf_option): Reflect HAVE_PGSQL

2003-04-22  Sergey Poznyakoff

	* mailbox/imap/folder.c (imap_literal_string): Bugfix. Literal
	  length may be {0}.

2003-04-18  Sergey Poznyakoff

	* mailbox/imap/folder.c (imap_string): Bugfix. Handle numbers.
	* mh/mhn.c (mhn_store_command): Bugfix. Properly use message
	  part numbers.

2003-04-11  Sergey Poznyakoff

	* mailbox/filter_trans.c (qp_decode): Bugfix.

2003-04-03  Sergey Poznyakoff

	* examples/base64.c (main): Use custom ISPRINT macro
	  so we don't depend on the current locale settings.
	* examples/decode2047.c (print): Likewise.
	* testsuite/lib/mailutils.exp: Set LC_ALL to C before proceeding.

2003-04-02  Sergey Poznyakoff

	* mh/mhn.c (normalize_path): Bugfix.

2003-03-29  Sergey Poznyakoff

	Minor changes to avoid duplicating some symbols (namely
	argp_program_version and argp_program_bug_address). This
	allows the package to build on MacOS.

	* include/mailutils/argp.h (mu_argp_init): New function.
	* mailbox/mu_argp.c: Likewise.

	* comsat/comsat.c (main): Use mu_argp_init.
	* frm/frm.c: Likewise.
	* from/from.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* mail/mail.c: Likewise.
	* mail.local/main.c: Likewise.
	* mail.remote/mail.remote.c: Likewise.
	* mailbox/mailutils-config.c: Likewise.
	* messages/messages.c: Likewise.
	* mh/anno.c: Likewise.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/whom.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* pop3d/popauth.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.
	* dotlock/dotlock.c: Likewise.

	* mail.local/mail.local.h: include <sys/types.h> (necessary for
	  Darwin).
	* mail/mail.h (struct message_set): Changed type of msg_part to
	  size_t.
	* libsieve/comparator.c (i_ascii_casemap_contains): Fixed
	  obsolete label usage.

	* THANKS: Added Timothy Carpenter

2003-03-27  Sergey Poznyakoff

	* mailbox/filter_trans.c (_hexdigits): Must be zero-terminated,
	  otherwise the native Darwin loader refuses to load it.
	  (qp_decode): Bugfix: in accordance with rfc1892 a sequence
	  of whitespace is allowed in an encoded string provided that
	  it is followed by a printable character.
	  (qp_encode): Preserve trailing whitespace.
	* include/mailutils/nls.h [!ENABLE_NLS]: Provide defines for
	  dgettext and ngettext.
	* mailbox/argp-parse.c: Include <mailutils/nls.h>
	* mh/mhn.c (mhn_store_command): If no message part is available
	  ignore %p and %P metacharacters.
	  (store_handler): Unlink the file if it exists.

2003-03-26  Sergey Poznyakoff

        * mailbox/mu_auth.c (mu_auth_data_alloc): Fixed COPY macro.
	* mh/mhn.c (main): Ignore sighups.
	* mh/mh_format.c (builtin_formataddr): Bugfix.

2003-03-26  Sergey Poznyakoff

	* include/mailutils/errno.h (MU_ERR_FAILURE): New macro
	* mailbox/muerrno.c: Likewise
	* mailbox/mutil.c (mu_rfc2822_references,mu_rfc2822_in_reply_to):
	  Return MU_ERR_FAILURE on error.
	* mh/mh_format.c (builtin_concat): Extra safety check
	  (builtin_in_reply_to,builtin_references): Check return value
	  from the underlying library calls.
	* mh/mh_msgset.c (_mh_msgset_parse): Accept "all" message spec
	  on folders with only one message.
	* mh/mhn.c: Print information about the external body parts.
	* mh/whom.c (mh_option): Bugfix

2003-03-24  Sergey Poznyakoff

	* mh/mhn.c (stream_getline,parse_content_type): A couple of
	  bugfixes.

2003-03-24  Sergey Poznyakoff

	* mh/mhn.c: Implemented external-body.
	* mh/TODO: Updated

	* configure.ac (ATTRIBUTE_UNUSED): Renamed to ARG_UNUSED
	  to avoid confusion.
	* auth/pam.c: Use ARG_UNUSED where necessary
	* lib/daemon.c: Likewise.
	* mail/decode.c: Likewise.
	* mail/exit.c: Likewise.
	* mail/folders.c: Likewise.
	* mail/if.c: Likewise.
	* mail/inc.c: Likewise.
	* mail/list.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/tag.c: Likewise.
	* mail/var.c: Likewise.
	* mail/version.c: Likewise.
 	* mail/mailline.c: Likewise.
	* mail/msgset.y: Likewise.
	* mail/quit.c: Likewise.
	* mail/source.c: Likewise.
	* mail/summary.c: Likewise.
	* mailbox/auth.c: Likewise.
	* mailbox/body.c: Likewise.
	* mailbox/filter_trans.c: Likewise.
	* mailbox/monitor.c: Likewise.
	* mailbox/parsedate.y: Likewise.
	* mailbox/stream.c: Likewise.
	* mailbox/url_file.c: Likewise.
	* mailbox/url_path.c: Likewise.
	* mailbox/url_sendmail.c: Likewise.
	* mailbox/mh/folder.c: Likewise.
	* mailbox/mh/mbox.c: Likewise.
	* mailbox/mh/url.c: Likewise.
	* mailbox/pop/mbox.c: Likewise.
	* mailbox/pop/url.c: Likewise.
	* mailbox/imap/folder.c: Likewise.
	* mailbox/imap/url.c: Likewise.
	* mailbox/mbox/folder.c: Likewise.
	* mailbox/mbox/url.c: Likewise.
	* imap4d/capability.c: Likewise.
	* imap4d/check.c: Likewise.
	* imap4d/close.c: Likewise.
	* imap4d/fetch.c: Likewise.
	* pop3d/auth.c: Likewise.
	* pop3d/signal.c: Likewise.

2003-03-22  Jordi Mallach

	* mailbox/Makefile.am (EXTRA_DIST): Added parsedate.y.

2003-03-22  Sergey Poznyakoff

	* configure.ac: Raised version number to 0.3.1
	  Define macro ATTRIBUTE_UNUSED.
	* mailbox/parsedate.y: New file
	* mailbox/.cvsignore: Updated
	* mailbox/Makefile.am: Updated
	* mh/Makefile.am: Minor formatting change.
	* mh/README: Updated.
	* mh/TODO: Updated.
	* mh/pick.c: Implemented --after and --before.
	* mh/pick.h: Likewise.
	* mh/pick.y: Likewise.
	* mail/from.c (mail_from0): Bugfix.
	* include/mailutils/mutil.h (mu_parse_date): New function.

2003-03-20  Sergey Poznyakoff

	* mh/README: Updated.
	* mh/mhn.c: Recognize mhn-compose-* profile components.

2003-03-20  Sergey Poznyakoff

	* mh/mhn.c: Implemented #forw directive.
	* mh/forw.c: Fixed --mime mode.
	* mh/TODO: Updated

2003-03-19  Sergey Poznyakoff

	* mh/anno.c: Minor changes for consistency with the overall
	  GNU mh options layout.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/forw.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mh_getopt.h: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhn.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/sortm.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/whom.c: Likewise.

2003-03-19  Sergey Poznyakoff

	* doc/rfc/Makefile.am: Added rfc1521.txt
	* doc/rfc/rfc1521.txt: Added to the repository.
	* mailbox/filter_trans.c (base64_encode): Bugfix.
	* mh/mhn.c: Implemented basic editing functionality.
	* mh/mh_init.c (mh_create_message_id): Minor change.
	* mh/README: Updated
	* mh/TODO: Updated

2003-03-19  Sergey Poznyakoff

	* mh/mhn.c: Added framework for compose mode.
	* mh/mh.h (mh_create_message_id): New function.
	* mh/mh_init.c: Likewise.
	* mh/send.c: Use mh_create_message_id().

2003-03-17  Sergey Poznyakoff

	* mh/mh.h (MHL_DISABLE_BODY): New flag.
	* mh/mh_list.c (eval_body,mhl_format_run): MHL_DISABLE_BODY
	  bit inhibits the 'body:' keyword.
	* mh/mhn.c: Implemented store mode.
	* mh/README: Updated
	* mh/TODO: Updated

2003-03-16  Wojciech Polak

	* mh/mh_init.c (mh_getyn, mh_real_install): Added an extra
	  space after the question marks.
	* configure.ac: Minor, changed GDBM to GNU DBM.
	* mailbox/mailcap.c: Updated copyright.
	* include/mailutils/mailcap.h: Likewise.

2003-03-15  Sergey Poznyakoff

	* mh/mhn.c: New file. Implementation of mhn utility (partial).
	* mh/.cvsignore: Added mhn
	* mh/Makefile.am: Likewise.
	* mh/forw.c: Implemented --mime.
	* mh/TODO: Updated.
	* mh/mh.h (mhl_format_run): Changed prototype
	  (MHL_DECODE,MHL_CLEARSCREEN,MHL_BELL): New defines.
	* mh/mh_getopt.h: Updated.
	* mh/mh_list.c (mhl_format_run): Changed declaration.
	  (eval_body): Decode message body on request.
	* mh/mh_ctx.c: Bugfix. Thanks Wojciech for noticing!
	* mh/mhl.c: Updated invocations of mhl_format_run().
	* mh/repl.c: Likewise.
	* po/POTFILES.in: Added new files.

2003-03-14  Sergey Poznyakoff

	* TODO: Reformatted in Emacs outline mode
	* mh/compcommon.c: New file.
	* mh/forw.c: New file.
	* mh/.cvsignore: Added forw
	* mh/Makefile.am: Likewise.
	* mh/TODO: Updated
	* mh/comp.c (format_str,check_draft_disposition): Removed
	  (main): Use mh_comp_draft().
	* mh/mh.h (mh_comp_draft,check_draft_disposition): New functions.
	* mh/mh_stream.c (_body_readline,_body_stream_size): Bugfix.
	* mh/mh_whom.c (scan_addrs): Bugfix.
	* po/POTFILES.in: Added new files.

2003-03-13  Sergey Poznyakoff

	Reorganized directory layout under mailbox/.

	* configure.ac: Added mailbox/ subdirectories
	* mailbox/Makefile.am: Likewise.
	* po/POTFILES.in: Added missing files.
	* mh/README: Updated

	* mailbox/mbox/Makefile.am: New file
	* mailbox/mbox/.cvsignore: New file
	* mailbox/mbox/folder.c: Moved from ../
	* mailbox/mbox/mbox.c: Moved from ../
	* mailbox/mbox/url.c: Moved from ../
	* mailbox/mbox/mboxscan.c: Moved from ../
	* mailbox/mbox/mbox0.h: New file

	* mailbox/mh/Makefile.am: New file
	* mailbox/mh/.cvsignore: New file
	* mailbox/mh/folder.c: Moved from ../
	* mailbox/mh/mbox.c: Moved from ../
	* mailbox/mh/url.c: Moved from ../

	* mailbox/maildir/Makefile.am: New file
	* mailbox/maildir/.cvsignore: New file
	* mailbox/maildir/mbox.c: New file

	* mailbox/imap/Makefile.am: New file
	* mailbox/imap/.cvsignore: New file
	* mailbox/imap/folder.c: Moved from ../
	* mailbox/imap/mbox.c: Moved from ../
	* mailbox/imap/url.c: Moved from ../

	* mailbox/pop/Makefile.am: New file
	* mailbox/pop/.cvsignore: New file
	* mailbox/pop/folder.c: Moved from ../
	* mailbox/pop/mbox.c: Moved from ../
	* mailbox/pop/url.c: Moved from ../

	* mailbox/folder_mbox.c: Moved to mbox/folder.c
	* mailbox/mbx_mbox.c: Moved to mbox/mbox.c
	* mailbox/url_mbox.c: Moved to mbox/url.c
	* mailbox/mbx_mboxscan.c: Moved to mbox/mboxscan.c

	* mailbox/folder_mh.c: Moved to mh/folder.c
	* mailbox/mbx_mh.c: Moved to mh/mh.c
	* mailbox/url_mh.c: Moved to mh/url.c

	* mailbox/mbx_maildir.c: Moved to maildir/mbox.c

	* mailbox/folder_imap.c: Moved to imap/folder.c
	* mailbox/mbx_imap.c: Moved to imap/mbox.c
	* mailbox/url_imap.c: Moved to imap/url.c

	* mailbox/folder_pop.c: Moved to pop/folder.c
	* mailbox/mbx_pop.c: Moved to pop/mbox.c
	* mailbox/url_pop.c: Moved to pop/url.c

2003-03-11  Sergey Poznyakoff

	* auth/sql.c (mu_sql_authenticate): Bugfix.
	* mh/.cvsignore: Added 'whom'.
	* mh/mh_whom.c: New file.
	* mh/whom.c: New file.
	* mh/Makefile.am: Added new files
	* mh/TODO: Updated
	* mh/mh.h (mh_draft_name,mh_whom): New functions.
	* mh/mh_getopt.h: Updated
	* mh/mh_init.c (mh_draft_name): New function.
	* mh/mh_whatnow.c (whom): Use mh_whom.
	* mh/send.c (draft_name): Removed.
	* mh/whatnow.c (main): Use 'draft' by default.

2003-03-10  Sergey Poznyakoff

	* comsat/comsat.c: Use ngettext.
	* mh/sortm.c: New file. Source for the sortm utility.
	* mh/.cvsignore: Added sortm
	* mh/Makefile.am: Likewise
	* mh/README: Updated
	* mh/TODO: Updated
	* mh/mh_getopt.h: Updated

2003-03-03  Sergey Poznyakoff

	* configure.ac: New option --with-included-argp
	* README: Documented --with-included-argp
	* doc/texinfo/muint.texi: New file. Root for the "Mailutils
	  internals" manual.
	* doc/texinfo/Makefile.am: Added rules to generate muint.info
	* doc/texinfo/mom.texi: Minor changes.
	* po/POTFILES.in: Added missed files.

2003-02-24  Alain Magloire

	* doc/texinfo/mom.texi: Draft explanation of the
	Mailutils Object Model (MOM).

2003-02-24  Sergey Poznyakoff

	* include/mailutils/mailcap.h: Added missing prototypes, protected
	  argument decls with __P and the whole stuff with extern "C".
	* mailbox/mailcap.c: Fixed indentation, adopted for 80-column
	  screen.
	* doc/texinfo/mailcap.inc: Removed. Auto-generated file
	* examples/mailcap.c: New file.
	* examples/Makefile.am: Added mailcap.c
	* examples/.cvsignore: Added mailcap
	* mailbox/testsuite/Mailcap: New file. Test data for mailcap.
	* mailbox/testsuite/Makefile.am: Added Mailcap
	* mailbox/testsuite/mailbox/mailcap.exp: New file.
	* mailbox/testsuite/mailbox/DISTFILES: Added mailcap.exp

2003-02-23  Alain Magloire

	* mailbox/refcount.c: Added a simple thread-safe implementation.
	* include/mailutils/types.h: Added structure for refcount.
	* include/mailutils/refcount.h: Added a simple thread-safe implementation.

2003-02-23  Alain Magloire

	* include/mailutils/types.h: Added the mailcap structure.
	* include/mailutils/mailcap.h: Include types.h

2003-02-23  Alain Magloire

	* doc/texinfo/mailcap.texi: Document the mailcap functions.
	* doc/texinfo/mailcap.inc: Code example.
	* doc/texinfo/Makefile.am: Added mailcap.texi and mailcap.inc

	* mailbox/Makefile.am: Added mailcap.c
	* mailbox/mailcap.c: include <mailutils/mailcap.h>
	* include/mailutils/Makefile.am: Added mailcap.h

2003-02-22  Alain Magloire

	First implementation of rfc1524.

	* mailbox/mailcap.c: First implementation of rfc1524.
	* include/mailutils/mailcap.h: First implementation of rfc1524.

2003-02-22  Sergey Poznyakoff

	* include/mailutils/header.h (MU_HEADER_FCC): New macro
	* mailbox/mailer.c: Handle Fcc headers.
	* mailbox/sendmail.c: Ignore Fcc.
	* mailbox/smtp.c: Likewise.
	* mailbox/mbx_default.c (plus_expand): Bugfix
	* mailbox/mbx_mh.c (_mh_message_save): Bugfix
	* mh/folder.c (action_print): Minor change
	* mh/mh_argp.c (parse_opt): Pass the argument to ARG_FOLDER
	  without the leading '+'. This should be fixed later.
	* mh/refile.c: Fixed expanding of the draftfile name.
	* mh/send.c (send): Fix up the folder dir by appending a
	  format specifier (mh:/) to it.
	* mh/mh_init.c: Moved .*_to_message stuff to mh_stream.c
	* mh/mh_stream.c: Improved .*_to_message functions.

2003-02-21  Sergey Poznyakoff

	* mail/testsuite/mail/folder.exp: Reflect changes to mailbox/date.c
	* mail/testsuite/mail/write.exp: Likewise

2003-02-21  Sergey Poznyakoff

	* configure.ac: New option --with-mh-bindir sets installation
	  directory for MH binaries
	* mh/Makefile.am: Install binaries into a separate directory to
	  prevent namespace pollution.
	* README: Updated
	* mailbox/date.c (wdays): Two typos! Ouch...
	* mh/README: Updated.
	* mh/folder.c: Do not mark current folder when in fast mode
	* mh/mh_whatnow.c: Execute default programs using full path
	  specification.
	* mh/mh_stream.c: New file.
	* mh/mh.h (mhdraft_stream_create): New function.
	* mh/mh_init.c (mh_stream_to_message): Use MH draft streams.

2003-02-20  Sergey Poznyakoff

	* mh/README: Updated
	* mh/TODO: Updated
	* mh/refile.c: New option --copy.
	  Properly handle trailing folder names. As a side-effect
	  it accepts messages and folders given in any order. Good!
	* mh/mh_argp.c (parse_opt): Call the handler with ARG_FOLDER
	  key if argument starts with +.
	* mh/anno.c (opt_handler): Removed superfluous case '+'.
	* mh/comp.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mark.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/pick.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.

2003-02-18  Sergey Poznyakoff

	* configure.ac: Provide a replacement for vsyslog
	* lib/vsyslog.c: New file.
	* lib/Makefile.am: Add vsyslog.c
	* mh/README: Minor changes.
	* mh/TODO: Minor changes.

	* mh/mh.h (MHA_REQUIRED,MHA_OPTARG,MHA_OPT_CLEAR): New defines.
	* mh/mh_fmtgram.y (mh_code_builtin): Minor fix.
	* mh/mh_format.c (builtin_me): Enclose the address in <> brackets.
	  (builtin_formataddr): Minor fix.
	  (builtin_tab): Fixed optarg column.

2003-02-16  Sergey Poznyakoff

	The sources up to here are tagged rel_0_3.

	* libmu_scm/Makefile.am: Use $< only in implicit rules. Non-gnu
	  implementation of make expand it to a null string if used
	  within an explicit rule.
	* mh/Makefile.am: Likewise.

2003-02-16  Sergey Poznyakoff

	* configure.ac: Added check for declaration of strerror.
	  Raised version number to 0.3
	* NEWS: Updated

	* guimb/Makefile.am: Added $(top_srcdir)/mailbox to INCLUDES.
	* guimb/guimb.h: Include <getline.h>
	* mail/mail.h (util_noapp): Added prototype.
	* mail/msgset.y: Declaration of check_set().
	* mail.remote/mail.remote.c: Include <mailutils/error.h>
	* mailbox/date.c: Added a clarifying comment.
	* mailbox/stream.c (stream_seek): Fixed type of size auto
	  variable.

	* mh/mh_sequence.c: New file.
	* mh/pick.h: New file.
	* mh/pick.y: New file.
	* mh/pick.c: Implemented.
	* mh/Makefile.am: Added mh_sequence.c and pick.y. Provide
	  for multiple parsers within an application.
	* mh/.cvsignore: Updated.
	* mh/README: Updated
	* mh/TODO: Updated

	* mh/mh.h (mh_seq_add, mh_seq_delete, mh_seq_read): New functions.
	* mh/mh_argp.c (parse_opt): Pass argp_state to the handler
	  (my_argp_parse): Changed declaration. The new argument `flags'
	  is accepted. Use my_argp_parse() wrapper instead of
	  argp_parse().
	* mh/mh_getopt.h: Updated.

	* mh/anno.c: Changed invocation of mh_argp_parse and updated
	  the definition of opt_handler.
	* mh/comp.c: Likewise.
	* mh/mhl.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/send.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/install-mh.c: Likewise.
	* mh/mark.c: Likewise. Use new mh_sequence functions.

	* doc/texinfo/fdl.texi: Minor change.
	* doc/texinfo/programs.texi: Advice on how to use mail.local
	  with SQL authentication.

2003-02-14  Wojciech Polak

	* po/POTFILES.in: Added auth/tls.c.
	* doc/texinfo/mailutils.texi: Updated copyright year.

2003-02-14  Sergey Poznyakoff

	* mail/msgset.y: Bugfix. '*' should not select deleted
	  messages.
	* mail/next.c: Skip deleted messages.
	* mail/previous.c: Likewise.
	* mail/undelete.c (undelete0): Set cursor if it is zero.
	* mh/pick.c: New file. A framework for pick command
	* mh/Makefile.am: Added pick.c
	* mh/.cvsignore: Likewise.
	* mh/mh_getopt.h: Updated.
	* mh/mh_init.c (mh_real_install): Create inbox.
	* mh/refile.c: Fixed copyright year.
	* mh/send.c: Get personal data from the value of the profile
	  component "signature" or from the environment variable
	  SIGNATURE.

2003-02-14  Sergey Poznyakoff

	* configure.ac: New option --enable-mh-utils.
	  Added check for Emacs lisp directory
	* include/mailutils/address.h (address_get_nth): New function.
	  Get Nth subaddress from an address.
	* mailbox/address.c: Likewise.
	* mh/mailutils-mh.eli: New file. Source for mailutils-mh.el --
	  an elisp module that configures mh-e.el for use with mailutils.
	* mh/Makefile.am: Added rules for generating mailutils-mh.el
	* mh/mh_format.c (builtin_formataddr): Rewritten to prevent
	  formatting the duplicate addresses.
	  (builtin_putaddr): Use print_hdr_string to format output string.

	* po/POTFILES.in: Added more files.
	* README: Updated
	* mh/README: Updated

2003-02-13  Sergey Poznyakoff

	* imap4d/append.c (imap4d_append): Bugfix.
	* include/mailutils/stream.h (stream_seek): New function.
	* mailbox/stream.c: Likewise.
	* mailbox/mbx_mh.c (_mh_message_save): Check if the envelope
	  date has a newline.
	* mailbox/message.c (message_size): Bugfix. Retrieve
	  the header and the body with appropriate calls instead of
	  addressing corresponding members of the message_t structure.

	* mh/mh_list.c: New file. The parser and run-time driver for
	  mhl format files.
	* mh/mhl.format: New file. The default format for mhl.
	* mh/Makefile.am: Added mh_list.c and mhl.format.

	* mh/folder.c: Use ARG_ macros instead of single-char option
	  letters.
	* mh/mh_getopt.h: Added new ARG_ macros.
	* mh/mh.h (mh_file_to_message,mh_stream_to_message): New
	  functions.
	  (mhl_format_compile,mhl_format_run,mhl_format_destroy):
	  New functions.
	* mh/mh_init.c (mh_file_to_message,mh_stream_to_message): New
	  functions.
	* mh/mh_fmtgram.y (mh_format_parse): Bugfix. Initialize prog to
	  zero.
	* mh/mh_format.c (mh_format_str): New function.
	* mh/mhl.c: Finished.
	* mh/repl.c: Handle --filter argument.
	* mh/send.c: Use mh_.*_to_message.

	* mh/README: Updated.
	* mh/TODO: Updated.
	* NEWS: Updated.

2003-02-12  Sergey Poznyakoff

	* mailbox/file_stream.c (prog_stream_create): New function.
	  Creates a stream connected to the stdin or stdout of
	  a given program.
	* include/mailutils/stream.h (prog_stream_create): New function.
	* mh/mhl.c: New file. A framework for mhl program.
	* mh/Makefile.am: Added mhl
	* mh/.cvsignore: Likewise.
	* mh/TODO: Updated.
	* mh/mh_getopt.h: Added new ARG_ macros.

	* NEWS: Added entry for version 0.3
	* README: Updated.

2003-02-12  Sergey Poznyakoff

	* mh/mh_format.c (builtin_formataddr): Do not include
	  own email unless RCPT_ME is set.
	* mh/mh_init.c (mh_is_my_name): Honor Alternate-Mailboxes
	  variable, use wildcard matching.

2003-02-10  Wojciech Polak

	* */*: Fixed and/or updated copyrights.
	* README: Updated.

	* auth/tls.c: Changed `--ssl-key' arg to FILE type.

2003-02-10  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/rfc2047.c: avoid cutting utf-8 strings in the middle of
	  a multibyte character.

2003-02-10  Sergey Poznyakoff

	* mailbox/mbx_mh.c (mh_expunge, mh_save_attributes): Bugfix
	* mh/mh.h (mh_annotate): New function.
	* mh/mh_init.c: Likewise.
	* mh/anno.c: Use mh_annotate

2003-02-10  Sergey Poznyakoff

	* include/mailutils/header.h (MU_HEADER_ENV_SENDER,
	  MU_HEADER_ENV_DATE): New macros.
	* mailbox/mbx_mh.c (_mh_message_save): Bugfix.
	  (mh_save_attributes): Implemented

	* mh/install-mh.c: New file.
	* mh/anno.c: New file.
	* mh/mark.c: New file
	* mh/Makefile.am: Added install-mh, anno and mark
	* mh/.cvsignore: Likewise.
	* mh/mh_global.c (mh_auto_install): New global.
	  (mh_read_profile): Call mh_install() if necessary.
	  (mh_global_sequences_iterate)
	  (mh_global_context_iterate): New functions.
	* mh/mh_init.c (mh_install_help, mh_real_install)
	  (mh_install): New functions.
	  (mh_open_msg_file): Rewritten.
	* mh/mh_whatnow.c: Implemented push command.
	* mh/TODO: Updated

	* mh/mh.h (mh_context_iterator): New type.
	  (mh_open_msg_file): Changed declaration.
	  (mh_install, mh_global_context_iterate)
	  (mh_global_sequences_iterate,mh_context_iterate)
	  (mh_usedraft): New functions.
	* mh/mh_ctx.c (mh_context_iterate): New function.
	* mh/mh_getopt.h: Added ARG_ macros.

	* mh/comp.c: Fixed option handling.
	* mh/fmtcheck.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/whatnow.c: Likewise.

	* mh/send.c: Add from: header to the outgoing message.

	* po/POTFILES.in: Added new files.

2003-02-08  Sergey Poznyakoff

	* mh/mh.h: Added new includes.
	  (mh_open_msg_file,mh_usedraft): New functions.
	* mh/mh_init.c (mh_open_msg_file): New function. Based on
	  refile.c:open_source().
	* mh/mh_whatnow.c (mh_usedraft): New function.
	* mh/refile.c (open_source): Removed in favor of mh_open_msg_file().
	* mh/send.c: Implemented basic functionality.

2003-02-08  Sergey Poznyakoff

	* examples/decode2047.c (main): Added return statement.
	* mailbox/mbx_mh.c (_mh_message_save): Allow for mh-specific
	  delimiter (a string of dashes) between the headers and the body.
	* mailbox/mutil.c (mu_spawnvp): Bugfix, PROG was not used.

	* mh/send.c: New file. A framework for send utility.
	* mh/.cvsignore: Added send.
	* mh/Makefile.am: Likewise.
	* mh/mh_whatnow.c: Implemented refile command.

	* mh/mh_getopt.h (struct mh_option): Removed `longopt' member.
	* mh/comp.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mh_getopt.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/whatnow.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.

	* mh/TODO: Updated

2003-02-07  Wojciech Polak

	* doc/texinfo/programs.texi: Added info about WITH_GNUTLS
	  and WITH_GSASL to the `General Information' node.

2003-02-07  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/rfc2047.c: implemented a preliminary RFC2047 encoder.

2003-02-06  Sergey Poznyakoff

	* libsieve/actions.c (build_mime): Call message_unref.
	* mailbox/body.c (lazy_create): Removed. Use mu_tempname()
	  instead.

2003-02-03  Sergey Poznyakoff

	* auth/Makefile.am: Removed leftover AUTH_AUTHOBJS from LIBADD
	* auth/gsasl.c (buffer_grow, _gsasl_strerror): Fixed declarations.
	* auth/tls.c (_tls_strerror): Fixed declaration.
	* guimb/guimb.h: Added missing includes
	* guimb/main.c: Removed include <mailutils/argp.h>
	* imap4d/auth_gsasl.c (create_gsasl_stream,gsasl_replace_streams):
	  Fixed declarations.
	  (auth_step_base64): New function. A wrapper around
	  gsasl_server_step_base64 to cope with GSASL_TOO_SMALL_BUFFER
	  error code.
	  (auth_gsasl): Use auth_step_base64(). Output any surplus
	  data returned with GSASL_OK code (proposed by Simon Josefsson
	  <jas@extundo.com>)
	* imap4d/bye.c (imap4d_bye0): Added missing argument to syslog.
 	* pop3d/extra.c (pop3d_abquit): Likewise.
	* imap4d/util.c (util_set_input, util_set_output): Bugfix

	* include/mailutils/stream.h (stream_set_strerror)
	  (stream_strerror): Changed prototype
	* mailbox/stream.c: Likewise.
	* mailbox/include/stream0.h (struct _stream): Changed declaration
	  of _strerror method.
	* mailbox/file_stream.c (_file_strerror): Changed prototype
	* mailbox/list.c (list_set_comparator): Bugfix.
	* mailbox/mailutils-config.c: include <mu_asprintf.h>
	* mailbox/monitor.c [!WITH_PTHREAD] (STATIC_UNLOCK): expand
	  to empty string to avoid spurious warnings.
	* mailbox/mutil.c: Added missing includes
	* mailbox/rfc2047.c: Likewise.

	* libmu_scm/mu_body.c: Added missing typecasts.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_mime.c: Likewise.
	* libmu_scm/mu_scm.c: Likewise.
	* mail.local/script.c (prog_mda): Removed unused variables.
	* mailbox/Makefile.am (mailutils_config_CFLAGS): Added
	  -I${top_srcdir}/lib.

	* mh/mh_format.c (print_hdr_segment): Count a tab for eight
	  spaces.
	  (builtin_concat): Compress whitespace before further processing.
	* mh/mh_getopt.c: Added missing includes.
	* mh/comp.c (opt_handler): Removed unused variable

2003-01-31  Sergey Poznyakoff

	* mailbox/file_stream.c (_file_readline): Make sure the
	  terminal zero is always added.

	* mh/mh.h (mh_format): Changed declaration.
	  (mh_format_debug): New function.
	* mh/mh_format.c (mh_format): Use dynamically allocated buffer.
	  (builtin_printstr): Removed.
	  (builtin_printhdr): New function.
	  (builtin_putnum,builtin_putnumf)
	  (builtin_putstr,builtin_putstrf): Bugfix.

	* mh/mh_fmtgram.y (mh_format_debug): New function.
	* mh/inc.c: Updated calls to mh_format
	* mh/scan.c: Likewise.
	* mh/repl.c: Updated calls to mh_format.
	  (format_str): Use printhdr.
	  (make_draft): Disable interactive prompting when build_only
	  flag is set.
	* mh/replcomps: Use printhdr.
	* mh/mh_init.c (mh_read_formfile): Bugfix.

	* mh/fmtcheck.c: New command line option --debug.
	* mh/README: Changed printstr to printhdr

	* pop3d/extra.c (pop3d_readline): Fixed misguiding diagnostics.
	  Check for eof.
	* pop3d/signal.c (pop3d_sigchld): Don't try to print to stdout
	  if SIGPIPE received.

2003-01-30  Sergey Poznyakoff

	* mailbox/rfc2047.c (rfc2047_decode): Bugfix.
	* imap4d/idle.c: Fixed wording of OK message.

2003-01-29  Sergey Poznyakoff

	* imap4d/idle.c: Do not wait for 'DONE' command longer than
	  timeout seconds.

	* mailbox/rfc2047.c: New file. Initial implementation of
	  rfc2047_decode. Based on input from Kidong Lee
	  <brian@ahmlhs.com>.

	* mailbox/Makefile.am: Added rfc2047.c

	* examples/decode2047.c: New file. Test program for rfc2047
	  decoder functions.
	* examples/Makefile.am: Added decode2047.c
	* include/mailutils/errno.h (MU_ERR_BAD_2047_INPUT): New error
	  code.
	* mailbox/muerrno.c: Likewise.
	* include/mailutils/mime.h (rfc2047_decode): New function.

	* mailbox/testsuite/RFC2047: New file. Test data for rfc 2047.
	* mailbox/testsuite/Makefile.am: Added RFC2047
	* mailbox/testsuite/mailbox/rfc2047.exp: New file. Testcase for
	  decoding rfc 2047 strings.
	* mailbox/testsuite/mailbox/DISTFILES: Added rfc2047.exp

2003-01-28  Sergey Poznyakoff

	* auth/gsasl.c (_gsasl_get_fd): New function.
	  (gsasl_stream_create): Install _get_fd method
	* auth/tls.c (_tls_get_fd): New function.
	  (tls_stream_create): Install _get_fd method
	* imap4d/idle.c: New file. Implements IDLE command
	  (rfc 2177)
	* imap4d/Makefile.am: Added imap4d/idle.c
	* imap4d/capability.c (imap4d_capability_init): Announce
	  IDLE capability.
	* imap4d/commands.c: Added entry for IDLE command.
	* imap4d/imap4d.h (imap4d_idle, util_wait_input): New functions.
	* imap4d/util.c (util_wait_input): New function.
	* imap4d/noop.c: Removed misleading comment.
	* imap4d/testsuite/imap4d/anystate.exp: Reflect IDLE capability.

2003-01-28  Sergey Poznyakoff

	* comsat/comsat.c: Removed unneeded colon in the argument to perror.
	* imap4d/imap4d.c: Likewise.
	* guimb/main.c: Fixed help output.
	* mailbox/mailutils-config.c: Likewise.

2003-01-26  Sergey Poznyakoff

	* imap4d/auth_gss.c: Removed newline from the syslog diagnostic
	  message.

	* imap4d/bye.c: Cleaned wording in diagnostics.
	* imap4d/search.c: Likewise.
	* libsieve/require.c: Likewise.
	* mailbox/mu_argp.c: Likewise.
	* mh/mh_fmtgram.y: Likewise.
	* mh/mh_format.c: Likewise.
	* pop3d/extra.c: Likewise.
	* sieve/sieve.c: Likewise.

	* mail/summary.c: Use ngettext
	* mh/folder.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* pop3d/user.c: Likewise.

	* mail.remote/mail.remote.c: Use mu_error instead of fprintf
	* readmsg/readmsg.c: Likewise.

	* mh/comp.c: Fixed use of OPTION_DOC options.
	* mh/fmtcheck.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/rmf.c: Likewise.

2003-01-23  Wojciech Polak

	* mailbox/mu_argp.c: Added WITH_GNUTLS and WITH_GSASL
	  to `mu_conf_option'.

2003-01-23  Wojciech Polak

	* doc/texinfo/programs.texi: Added the 'encryption' node.

2003-01-23  Sergey Poznyakoff

	* libsieve/util.c (_comp_action): Bugfix. Incorrectly handled
	  multiple patterns.

	* sieve/testsuite/scripts/mul-addr.sv: New file. Script for
	  testing "multiple patterns" bug.
	* sieve/testsuite/sieve/mul-addr.exp: New file. Testcase for
	  "multiple patterns" bug.
	* sieve/testsuite/scripts/DISTFILES: Updated
	* sieve/testsuite/sieve/DISTFILES: Updated

	* imap4d/auth_gsasl.c: Removed leftover "while"

2003-01-22  Sergey Poznyakoff

	Renamed mu_errstring to mu_strerror for consistency
	with usual practice.
	Files affected:

	* comsat/comsat.c
	* dotlock/dotlock.c
	* examples/http.c
	* examples/mimetest.c
	* examples/msg-send.c
	* examples/mta.c
	* examples/sfrom.c
	* examples/url-parse.c
	* frm/frm.c
	* from/from.c
	* guimb/collect.c
	* imap4d/auth_gsasl.c
	* imap4d/select.c
	* include/mailutils/errno.h
	* libsieve/actions.c
	* libsieve/argp.c
	* libsieve/prog.c
	* libsieve/require.c
	* libsieve/runtime.c
	* libsieve/sieve.l
	* mail/alt.c
	* mail/file.c
	* mail/mail.c
	* mail/send.c
	* mail/util.c
	* mail/var.c
	* mail.local/main.c
	* mail.remote/mail.remote.c
	* mailbox/mbx_mbox.c
	* mailbox/mbx_pop.c
	* mailbox/message.c
	* mailbox/mu_argp.c
	* mailbox/muerrno.c
	* mailbox/wicket.c
	* mh/comp.c
	* mh/inc.c
	* mh/mh_ctx.c
	* mh/mh_init.c
	* mh/mh_msgset.c
	* mh/mh_whatnow.c
	* mh/refile.c
	* mh/repl.c
	* pop3d/apop.c
	* pop3d/lock.c
	* readmsg/readmsg.c
	* sieve/sieve.c

2003-01-22  Sergey Poznyakoff

	* configure.ac: Raised version number to 0.2.2
	  Added support for cram-md5 password file
	* auth/Makefile.am: Define SITE_CRAM_MD5_PWD
	* auth/gsasl.c: Implemented gsasl stream. Added
	  argp stuff.
	* imap4d/auth_gsasl.c (auth_gsasl): Make sure the
	  streams are reset after issuing OK tagged response.
	* imap4d/imap4d.c (imap4d_capa): Require "gsasl" capability
	  if compiled with gsasl support.
	  (main): Call auth_.*_init's after mu_argp_parse.
	* imap4d/imap4d.h (util_get_input, util_get_output)
	  (util_set_input, util_set_output): New functions.
	  (util_register_event, util_event_remove, util_run_events): New
	  functions.
	* imap4d/util.c (util_finish): Check event queue if the
	  state has changed.
	  (util_register_event, util_event_remove, util_run_events): New
	  functions.

	* include/mailutils/gsasl.h (gsasl_stream_create): Changed
	  declaration.
	  (mu_gsasl_init_argp): New function.
	  (gsasl_cram_md5_pwd): New global.

	* mailbox/stream.c (stream_sequential_readline, stream_strerror):
	  Check for stream == NULL.

	* imap4d/store.c (imap4d_store0): Fixed STORE untagged output in
	  accordance with rfc2060-errata document.
	* imap4d/fetch.c (fetch_flags0): Likewise.
	* imap4d/testsuite/imap4d/expunge.exp: Likewise.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* imap4d/testsuite/imap4d/search.exp: Likewise.

	* doc/rfc/rfc2177.txt: New file.
	* doc/rfc/Makefile.am: Added rfc2177.txt

2003-01-22  Sergey Poznyakoff

	* configure.ac: Renamed AUTHOBJS to IMAP_AUTHOBJS for
	  clarity. Added call to MU_CHECK_GSASL.

	* m4/gsasl.m4: New file. Detect the presence of libgsasl library.
	* m4/Makefile.am: Added gsasl.m4

	* auth/gsasl.c: New file. Placeholder for gsasl stream support.
	* auth/Makefile.am: Added gsasl.c.
	* auth/tls.c: Include stdlib.h
	  (mu_deinit_tls_libs): Changed return type to void

	* imap4d/Makefile.am: Renamed AUTHOBJS to IMAP_AUTHOBJS.
	* imap4d/authenticate.c: Rewritten capability and authentication
	  systems.
	* imap4d/capability.c: Use comparator function for list deletions.
	* imap4d/imap4d.c (tls_available,tls_done): Removed.
	  (main): Call auth_gssapi_init, auth_gsasl_init
	* imap4d/imap4d.h (tls_available,tls_done): Removed.
	  (starttls_init,util_atexit): New functions.
	  (imap4d_auth_handler_fp): New data type.
	  (auth_gssapi_init,auth_gsasl_init): New functions/macros
	* imap4d/starttls.c (tls_available,tls_done): Static variables.
	  (imap4d_starttls): Register mu_deinit_tls_libs as an 'atexit'
	  function.
	  (starttls_init): New function.
	* imap4d/util.c (util_setio): Make sure both streams are
	  line-buffered.
	  (util_get_input,util_get_output)
	  (util_set_input,util_set_output): New functions for manipulating
	  io streams.
	  (util_atexit): New function.

	* imap4d/auth_gss.c (auth_gssapi): Changed declaration and return
	  values to match new authentication framework.
	  (auth_gssapi_init): New function
	* imap4d/auth_gsasl.c: New file.

	* include/mailutils/list.h (list_comparator_t): New datatype.
	  (list_set_comparator): New function
	* include/mailutils/tls.h (mu_deinit_tls_libs): Changed type
	  to void.
	* include/mailutils/gsasl.h: New file.
	* include/mailutils/Makefile.am: Added gsasl.h.

	* mailbox/include/list0.h (struct _list): New member comp.
	* mailbox/list.c (list_set_comparator): New function.
	  (list_remove, list_replace): Use list->comp for
	  comparing list items with the supplied data.

	* pop3d/extra.c (pop3d_setio): Make sure both streams are
	  line-buffered.

	* mailbox/.cvsignore: Updated

2003-01-21  Sergey Poznyakoff

	Implemented LOGINDISABLED.

	* imap4d/capability.c (imap4d_capability_add)
	  (imap4d_capability_remove, imap4d_capability_init): New
	  functions.
	* imap4d/imap4d.h: Likewise.
	* imap4d/imap4d.c (login_disabled): New global.
	  (argp_option options): Added --login-disabled option.
	  (imap4d_parse_opt): Handle --login-disabled option.
	  (main): Call imap4d_capability_init().
	  Register "STARTTLS" capability if tls is OK.
	* imap4d/starttls.c: When TLS negotiation succeeds, remove
	  "STARTTLS" capability and reset login_disabled.

	* imap4d/login.c: Fail if login_disabled is set.
	* imap4d/util.c (util_msgset): Edited comment.
	  (util_start,util_getstate): Removed.

2003-01-20  Sergey Poznyakoff

	* configure.ac: Invoke AM_GNU_GETTEXT with no-libtool,
	  need-ngettext
	* lib/Makefile.am (INCLUDES): Added @INTLINCS@
	* lib/posix/regex.h: Define __restrict_arr to empty string
	  unless it was already defined elsewhere.

	* m4/tls.m4: Reverted order of checks for libgnutls
	  and libgcrypt.

	* mailbox/Makefile.am (mailutils_config_CFLAGS): Define I18NLIBS.
	* mailbox/mailutils-config.c (main): Use I18NLIBS instead of
	  hardcoding library names.

	* THANKS: Added Simon Josefsson

2003-01-19  Wojciech Polak

	* auth/tls.c (mu_check_tls_environment): Removed file permissions
	  check for `ssl_cert'. Thanks Simon Josefsson for reporting.

2003-01-18  Sergey Poznyakoff

	* imap4d/util.c (util_token): Fixed comment.

	* mailbox/mbx_mh.c (mh_check_message): New function.
	  (mh_body_size,mh_check_message,mh_header_size)
	  (mh_header_lines): Use mh_check_message() to make sure
	  the message has been scanned.

	* mh/comp.c: New file. Implements comp utility.
	* mh/Makefile.am: Added comp.
	* mh/mh.h (mh_err_memory,mh_file_copy): New functions.
	* mh/mh_init.c: Likewise.
	* mh/mh_argp.c: Use mh_err_memory to report low memory
	  diagnostics.
	* mh/mh_ctx.c: Likewise.
	* mh/mh_msgset.c: Likewise.
	* mh/mh_whatnow.c: Likewise.

	* mh/repl.c: Changed semantics of --use option. It takes an
	  optional argument of yes/no.
	  (make_draft): Changed declaration.

	* mh/TODO: Updated.
	* mh/README: Updated.

2003-01-18  Wojciech Polak

	* imap4d/util.c (util_bye): Check 'tls_available' before
	  calling mu_deinit_tls_libs(). Just for make sure...
	* pop3d/extra.c (pop3d_bye): Likewise.

2003-01-18  Sergey Poznyakoff

	* include/mailutils/stream.h (stream_set_strerror)
	  (stream_sequential_read,stream_sequential_readline)
	  (stream_sequential_write,stream_strerror): New functions.

	* include/mailutils/tls.h: Removed inclusion of gnutls.h
	  (tls_stream_create): New declaration.
	  (mu_check_tls_environment, mu_init_tls_libs)
	  (mu_deinit_tls_libs): Added prototypes.

	* mailbox/file_stream.c (_file_strerror): New function.
	  (file_stream_create): Register strerror function.
	  (stdio_stream_create): Enable caching only if the
	  file is not seekable and MU_STREAM_SEEKABLE bit is
	  set in flags. Register different sets of
	  (read,readline,write) handlers depending on the
	  setting of MU_STREAM_SEEKABLE bit.

	* mailbox/include/stream0.h (struct _stream): Removed
	  unused member `roff'. Added new member `offset' for
	  support of sequential access functions.
	  (_strerror): New method. Return stream-specific
	  error description (if any).
	* mailbox/stream.c (stream_set_strerror): New function.
	  (stream_sequential_read,stream_sequential_readline)
	  (stream_sequential_write): New functions for sequential
	  access to stream.
	  (stream_strerror): New function. Return stream-specific
	  error description (if any).

	* auth/tls.c: Implemented TLS streams. All tls-specific details
	  are now hidden within this module.

	* examples/base64.c: Use sequential access for the output stream
	* examples/msg-send.c: Open stdio stream with MU_STREAM_SEEKABLE
	  bit set.
	* mail.remote/mail.remote.c: Likewise.

	* imap4d/bye.c (imap4d_bye0): Use util_is_master() and util_bye()
	* imap4d/imap4d.c (imap4d_mainloop): Changed proto following
	  that of pop3.
	* imap4d/imap4d.h (util_setio): Changed declaration.
	  (util_is_ofile): Removed.
	  (util_is_master): New.
	  (imap4d_deinit_tls_server): Removed.
	* imap4d/signal.c (imap4d_signal): Use util_is_master().
	* imap4d/starttls.c (imap4d_starttls): Flush output
	  before initializing tls.
	* imap4d/util.c (ifile, ofile, sfile): Removed.
	  (istream, ostream): New statics.
	  (util_send_lowlevel): Removed
	  (util_send, util_out, util_finish, imap4d_readline)
	  (util_flush_output): Rewritten using streams.
	  (util_setio): Changed argument types
	  (util_is_ofile): Removed.
	  (util_is_master): New function.
	  (imap4d_init_tls_server): Rewritten using TLS streams.
	  (imap4d_deinit_tls_server): Removed.
	  (util_bye): New function.

	* pop3d/extra.c (ifile, ofile): Removed.
	  (istream, ostream): New streams.
	  (pop3d_setio,pop3d_init_tls_server): Rewritten using streams.
	  (pop3d_flush_output,pop3d_is_master): Likewise.
	  (pop3d_outf,pop3d_readline): Likewise.
	  (pop3d_deinit_tls_server): Removed.
	  (pop3d_bye): New function.
	* pop3d/pop3d.c (pop3d_mainloop): use pop3d_bye().

	* mh/mh_format.c (builtin_references): Fixed typo.
	  (builtin_package, builtin_package_string)
	  (builtin_version): New functions.
	* mh/replcomps: Emit X-Mailer header.
	* mh/repl.c (format_str): Likewise.
	* mh/README: Updated

2003-01-17  Wojciech Polak

	* imap4d/capability.c: Small fix.

2003-01-17  Wojciech Polak

	* imap4d/imap4d.c: Added TLS support.
	  (ifile, ofile): Removed globals.
	  (tls_available, tls_done): Added globals.
	* imap4d/imap4d.h: Include <mailutils/tls.h>
	  (ifile, ofile): Removed declarations.
	  (tls_available, tls_done): Added declarations.
	  (imap4d_starttls): Added prototype.
	  (imap4d_init_tls_server): Likewise.
	  (imap4d_deinit_tls_server): Likewise.
	  (util_setio): Likewise.
	  (util_flush_output): Likewise.
	  (util_is_ofile): Likewise.
	  (imap4d_readline_ex): Changed prototype. Use void instead of FILE *.
	  (imap4d_readline): Likewise.
	  (ERR_TLS): New define.
	* imap4d/starttls.c: New file. The STARTTLS command support.
	* imap4d/util.c: Added TLS support (via GnuTLS).
	  (ifile, ofile, sfile): Added static variables.
	  (util_send_lowlevel): New function.
	  (imap4d_init_tls_server): Likewise.
	  (imap4d_deinit_tls_server): Likewise.
	  (util_setio): Likewise.
	  (util_flush_output): Likewise.
	  (util_is_ofile): Likewise.
	* imap4d/bye.c: Added TLS support.
	* imap4d/commands.c: Likewise.
	* imap4d/capability.c: Likewise.
	* imap4d/signal.c: Use util_is_ofile().
	* imap4d/Makefile.am: Updated.

2003-01-17  Sergey Poznyakoff

	* imap4d/sync.c: Always return EXIST and RECENT untagged
	  responses. Thanks Simon Josefsson <jas@extundo.com>
	  for reporting.
	* libmu_scm/Makefile.am (install-data-hook): Bugfix.

2003-01-17  Sergey Poznyakoff

	* pop3d/extra.c (pop3d_readline): Bugfix: add terminating
	  zero, and check return value from gnutls_record_recv.
	* pop3d/pop3d.h (ERR_TLS_IO): New def.

2003-01-16  Sergey Poznyakoff

	* mh/mh_getopt.c (mh_getopt): Bugfix
	* mh/mh.h (struct mh_whatnow_env): Added `draftfile' member.
	* mh/mh_whatnow.c: Reorganized. Implemented disposition
	  shell.
	* mh/repl.c: Handle draft file. Added --use option.
	* mh/README: Updated.

2003-01-16  Sergey Poznyakoff

	* include/mailutils/mutil.h (mu_rfc2822_references)
	  (mu_rfc2822_in_reply_to): New functions.
	* mail/reply.c (concat,strip_message_id)
	  (get_msgid_header): Removed
	  (make_in_reply_to,make_references): Rewritten using new rfc2822
	  functions.
	* mailbox/mutil.c (mu_rfc2822_references)
          (mu_rfc2822_in_reply_to): New functions.

	* mh/replcomps: New file. Default format for repl utility.
	* mh/Makefile.am: Added mhlibdir

	* mh/mh_getopt.h (struct mh_option): Replaced `int key'
	  with `char *longopt'.
	  (mh_argv_preproc): New function.
	  (mh_optind,mh_optarg): Globals removed.

	* mh/mh_argp.c (struct mh_argp_data): Moved to mh_getopt.h
	  (parse_opt,mh_argp_parse): Rewritten. Argument parsing goes
	  in two stages: first any old-style mh arguments are expanded
	  to corresponding GNU long options, then argp_parse is run
	  over the constructed argv array.
	* mh/mh_getopt.c (mh_getopt): Rewritten. The main purpose is
	  to expand old-style options to their double-dash equivalents.
	  (mh_argv_preproc): New function. Preprocess the argv array.

	* mh/mh_fmtgram.y (want_arg): New lexical tie-in to correctly
	  process trailing whitespace in calls like %(putaddr To: ).

	* mh/mh_format.c (builtin_in_reply_to, builtin_references):
	  New functions. Interfaces to rfc2822 functions.

	* mh/mh.h (RCPT_DEFAULT): Default value for rcpt_mask
	* mh/mh_global.c: Initialize rcpt_mask with RCPT_DEFAULT.
	* mh/mh_init.c (mh_expand_name): Correctly handle full and
	  relative pathname specifications.

	* mh/fmtcheck.c: Use new struct mh_option
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/whatnow.c: Likewise.

	* mh/README: Updated.
	* mh/TODO: Updated.

2003-01-15  Wojciech Polak

	* auth/tls.c: Fixed typo.
	* pop3d/pop3d.h (pop3d_init_tls_server): Added prototype.
	  (pop3d_deinit_tls_server): Likewise.
	* pop3d/pop3d.c: Fixed TLS cleanup.

2003-01-15  Sergey Poznyakoff

	* m4/db2.m4: Fixed version reference in the comment.
	* mail/msgset.y: Added missing NLS markers.
	* mailbox/mutil.c: Fixed indentation.

	* mh/mh_whatnow.c: New file.
	* mh/whatnow.c: New file. Source for whatnow utility.
	* mh/Makefile.am: Removed unnecessary _SOURCE declarations.
	  Added new files and targets.
	* mh/mh.h: Include argcv.h and getline.h
	  (struct mh_whatnow_env): New datatype.
	  (mh_spawnp, mh_whatnow): New functions.

	* mh/mh_argp.c (mh_argp_parse): Fixed parsing order: global
	  profile arguments first, then the command line arguments.
	* mh/mh_format.c: Added missing NLS markers.
	  (builtin_concat,builtin_printstr): New functions.
	* mh/mh_init.c (mh_spawnp): New function.
	* mh/repl.c: Almost finished.
	* mh/mh_ctx.c: Shut compiler warnings.
	* mh/TODO: Updated.
	* mh/README: Updated.
	* mh/.cvsignore: Updated.

	* po/POTFILES.in: Added missing files.

2003-01-14  Wojciech Polak

	* auth/tls.c (mu_init_tls_libs): gnutls_global_init() returns
	  zero on success, so reverse this state for 'tls_available'
	  variable.

2003-01-14  Sergey Poznyakoff

	* m4/db2.m4: New file. Version-specific stuff for Berkeley DB.
	* m4/tls.m4: Added copyleft header.
	* m4/Makefile.am: Added db2.m4
	* configure.ac: Check for newer version of Berkeley DB
	* lib/mu_dbm.c [WITH_BDB2] (mu_dbm_firstkey): db->cursor
	  takes three or four arguments, depending on the release
	  of DB 2. Take care of it.
	* auth/tls.c (mu_init_tls_server): Check return value from
	  gnutls_certificate_set_x509_key_file(). Use gnutls_strerror(),
	  instead of gnutls_perror(), as the latter confuses mail clients.
	  (mu_init_tls_libs): Removed useless initialization of the auto
	  variable.

	* mail/mail.h (msgset_parse,util_get_message):
	  In order to get rid of superfluous 'Inappropriate message'
	  diagnostics and provide a behaviour consistent with that
	  of standard implementations, moved the flags argument
	  from util_get_message to msgset_parse.
	  (msgset_count): New function.
	  (util_isdeleted): Reverted to older declaration (before
	  2002-10-13).

	* mail/msgset.y (msgset_parse): Take a new argument: flags
	  (meaning the same as in the util_get_message call).
	  (msgset_count): New function.

	* mail/util.c (util_foreach_msg,util_range_msg): Updated
	  calls to msgset_parse.
	  (util_isdeleted): Reverted to older declaration.

	* mail/copy.c: Updated calls to msgset_parse.
	* mail/decode.c: Likewise.
	* mail/delete.c: Likewise.
	* mail/eq.c: Likewise.
	* mail/followup.c: Likewise.
	* mail/from.c: Likewise.
	* mail/headers.c: Likewise.
	* mail/next.c: Likewise.
	* mail/pipe.c: Likewise.
	* mail/previous.c: Likewise.
	* mail/quit.c: Likewise.
	* mail/tag.c: Likewise.
	* mail/write.c: Likewise.

2003-01-14  Wojciech Polak

	* pop3d/pop3d.h (ERR_TLS_ACTIVE, TLS_ACTIVE): New defines.
	* pop3d/pop3d.c: Added support for ERR_TLS_ACTIVE.
	* pop3d/stls.c: Likewise.

	* doc/rfc/Makefile.am: Added rfc2595.txt
	* TODO: Updated.

2003-01-13  Wojciech Polak

	* auth/tls.c: New file. Added main TLS/SSL code (via GnuTLS).
	* include/mailutils/tls.h: New file. TLS header file.
	* auth/Makefile.am: Updated.
	* include/mailutils/Makefile.am: Likewise.

	* pop3d/pop3d.c: Added TLS support.
	* pop3d/pop3d.h: include <mailutils/tls.h>
	  (pop3d_stls): New prototype.
	* pop3d/stls.c: New file. The STLS command support.
	* pop3d/extra.c (pop3d_init_tls_server): New function.
	  (pop3d_deinit_tls_server): New function.
	  (pop3d_outf): Added TLS support (GnuTLS).
	  (pop3d_readline): Added TLS support (GnuTLS).
	* pop3d/capa.c (pop3d_capa): Added STLS.
	* pop3d/Makefile.am: Updated.

	* m4/tls.m4: New file. Implements MU_CHECK_TLS defun.
	* m4/Makefile.am: Updated.
	* configure.ac: Added GnuTLS support (--with-gnutls).

2003-01-13  Sergey Poznyakoff

	* m4/gssapi.m4: Fixed typo.
	* mh/mh.h (RCPT_NONE,RCPT_TO,RCPT_ME,RCPT_ALL): New defines.
	  (rcpt_mask): New global declaration.
	  (mh_get_message): Added missing __P().
	  (mh_decode_rcpt_flag): New function.
	* mh/mh_format.c (mh_decode_rcpt_flag,builtin_rcpt): New
	  functions.
	* mh/mh_global.c (rcpt_mask): New global. Keeps cumulative
	  value of all --cc/--nocc command line options.
	* mh/repl.c: Changed default format to use (rcpt) to decide
	  whether or not to include an address to the cc: header.
	  Implemented --cc/--nocc.
	* mh/README: New file. A list of differences from standard
	  MH implementation.

2003-01-12  Wojciech Polak

	* auth/sql.c: Added missing NLS markers.

2003-01-12  Jordi Mallach  <jordi@gnu.org>

	* mail/mail.c: Update year in copyright notice.

2003-01-12  Sergey Poznyakoff

	* imap4d/fetch.c: Properly quote return strings.
	  In envelope responses emit a single NIL to represent
	  a non-existent envelope structures.
	  Thanks Nic Ferrier <nferrier@tapsellferrier.co.uk> for
	  reporting the bug.
	* imap4d/testsuite/imap4d/fetch.exp: Test new fetch responses.
	* imap4d/testsuite/imap4d/create.exp: Likewise.

2003-01-11  Sergey Poznyakoff

	* mailbox/mbx_mh.c (mh_scan0): Do not actually read
	  contents of the message files, only register them in
	  the message pool.
	  Moved notification into a separate loop. This way
	  observable action receives notifications
	  in the proper order.

	* mh/mh_format.c (builtin_unre): New function. Implements
	  extension format function 'unre': remove leading whitespace
	  and eventual 're:' prefix from the subject header line.
	* mh/mh.h (mh_expand_name): Changed declaration.
	* mh/mh_init.c: Likewise.
	* mh/mh_global.c: Changed calls to mh_expand_name.
	* mh/refile.c: Likewise.
	* mh/rmf.c: Likewise.

	* mh/scan.c: When called without arguments do the work by
	  installing observable action. This speeds up execution
	  by the factor of three.

	* mh/repl.c: Added --build option. Implemented --[no]draftfolder
	  --[no]query.

2003-01-10  Sergey Poznyakoff

	* libmu_scm/Makefile.am (mailutils.scm target): Bugfix. Use $<
	  instead of $?.
	* libmu_scm/mailutils.scm.in: Explicitly load libmailbox before
	  loading libmu_scm. Fixed 1.6 branch of the conditional.

2003-01-10  Sergey Poznyakoff

	* lib/posix/regex.h: Removed redefinition of __restrict_arr
	* libsieve/comparator.c (comp_false): Fixed declaration.
	  (sieve_match_part_checker): shut compiler warnings
	  about possibly uninitialized variables.
	* libsieve/sieve.h: include <string.h>
	* libsieve/tests.c (sieve_test_address,sieve_test_header): Removed
	  unused variables.
	* examples/.cvsignore: Added base64

2003-01-06  Sergey Poznyakoff

	* doc/texinfo/libsieve.texi: Reflect recent changes to
	  libsieve.
	* pop3d/extra.c (pop3d_setio, pop3d_flush_output)
	  (pop3d_is_master): New functions.
	  (pop3d_readline): Fixed prototype: second arg should be size_t.
	* pop3d/pop3d.c (ifile,ofile): Removed globals.
	  (pop3d_mainloop): Changed declaration.
	* pop3d/pop3d.h (ifile,ofile): Removed declarations.
	  (getpwnam_ip_virtual,getpwnam_host_virtual): Removed
	  prototypes.
	  (pop3d_setio, pop3d_flush_output, pop3d_is_master): New
	  functions.
          (pop3d_readline): Fixed prototype.
	* pop3d/signal.c (pop3d_signal): Use pop3d_is_master().
	* pop3d/user.c (pop3d_user): Use pop3d_flush_output().

2003-01-06  Sergey Poznyakoff

	* libsieve/tests.c
          (do_count): New function. A common handler for :count tag.
	  (retrieve_header): Use header_get_field_{name|value}, since
	  header_aget_value cannot return multiple header values.
	  (sieve_test_address,sieve_test_header,sieve_test_envelope):
	  Use do_count.

	* sieve/testsuite/sieve/relational.exp: Enabled rel-header.sv
	  testcase.

	* libsieve/require.c: Handle "relational" as a special case.
	* libsieve/sieve.h: Updated.
	* libsieve/sieve.l (multiline_strip_tabs): Forward declaration.
	* libsieve/util.c (sieve_tag_lookup): Check for taglist != NULL
	  before calling list_do().

2003-01-05  Sergey Poznyakoff

	* doc/rfc/rfc3431.txt: New file.
	* doc/rfc/Makefile.am: Add rfc3431.txt
	* testsuite/spool/relational.mbox: Mailbox for testing relational
	  operations in sieve.
	* testsuite/spool/DISTFILES (relational.mbox): Added.
	* include/mailutils/libsieve.h (sieve_relcmp_t,sieve_relcmpn_t):
	  New types.
	  (sieve_register_comparator): Changed prototype.
	  (sieve_require_relational,sieve_str_to_relcmp)
	  (sieve_get_relcmp): New functions.
	* libsieve/relational.c: New file.
	* libsieve/Makefile.am: Added relational.c.
	* libsieve/comparator.c (sieve_register_comparator)
	  (_find_comparator,comp_false,sieve_match_part_checker):
	  Added support for relational tests.
	* libsieve/tests.c (sieve_test_address,sieve_test_header):
	  Likewise.
	* sieve/testsuite/scripts/rel-address.sv: New file.
	* sieve/testsuite/scripts/rel-hairy.sv: New file.
	* sieve/testsuite/scripts/rel-header.sv: New file.
	* sieve/testsuite/scripts/DISTFILES (rel-address.sv,rel-hairy.sv)
	  (rel-header.sv): New files
	* sieve/testsuite/sieve/relational.exp: New file.
	* sieve/testsuite/sieve/DISTFILES (relational.exp): Added

	* mail/z.c (mail_z): Fixed scrolling.
	* po/POTFILES.in: Added libsieve/relational.c.

2003-01-03  Wojciech Polak

	* pop3d/extra.c (pop3d_readline): Don't use `static char buffer[512]'.
	  Use also ifile directly instead of FILE *fp.
	* pop3d/pop3d.h (pop3d_readline): Changed prototype.
	* pop3d/pop3d.c: Use pop3d_readline(buffer, sizeof (buffer)).
	* pop3d/user.c: Likewise.

2003-01-02  Sergey Poznyakoff

	* configure.ac: New ac_subst variable BUILD_MH_EXEC_HOOK
	* mh/Makefile.am: Enable install-exec-hook only if
	  BUILD_MH_EXEC_HOOK is set.

2003-01-01  Wojciech Polak

	* COPYING: Removed.

2002-12-31  Jeff Bailey  <jbailey@gnu.org>

	* auth/Makefile.am: Correct copyright year, add license
	information.
	* sieve/testsuite/Makefile.am: Likewise.
	* testsuite/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.
	* scripts/guile-1.6/Makefile.am: Likewise.
	* scripts/guile-1.4/Makefile.am: Likewise.
	* scripts/Makefile.am: Likewise.
	* readmsg/testsuite/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* messages/testsuite/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* pop3d/testsuite/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* mapi/Makefile.am: Likewise.
	* mail.remote/testsuite/Makefile.am: Likewise.
	* mail.remote/Makefile.am: Likewise.
	* mail.local/testsuite/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* mailbox2/pop3/Makefile.am: Likewise.
	* mailbox2/mbox/Makefile.am: Likewise.
	* mailbox2/include/mailutils/sys/Makefile.am: Likewise.
	* mailbox2/include/mailutils/Makefile.am: Likewise.
	* mailbox2/include/Makefile.am: Likewise.
	* mailbox2/Makefile.am: Likewise.
	* mailbox/testsuite/Makefile.am: Likewise.
	* mailbox/include/Makefile.am: Likewise.
	* mailbox/Makefile.am: Likewise.
	* mail/testsuite/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* m4/Makefile.am: Likewise.
	* libsieve/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* lib/posix/Makefile.am: Likewise.
	* lib/Makefile.am: Likewise.
	* include/mailutils/gnu/Makefile.am: Likewise.
	* include/mailutils/Makefile.am: Likewise.
	* include/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* imap4d/testsuite/Makefile.am: Likewise.
	* guimb/scm/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* from/testsuite/Makefile.am: Likewise.
	* from/Makefile.am: Likewise.
	* frm/testsuite/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* dotlock/Makefile.am: Likewise.
	* doc/texinfo/Makefile.am: Likewise.
	* doc/rfc/Makefile.am: Likewise.
	* doc/man/Makefile.am: Likewise.
	* doc/Makefile.am: Likewise.
	* comsat/Makefile.am: Likewise.
	* Makefile.am: Likewise.

	* configure.ac: Update FSF Address

2002-12-31  Wojciech Polak

	* COPYING: New file.
	* mailutils.spec.in: Fixed.

2002-12-31  Sergey Poznyakoff

	* include/mailutils/guile.h: New file. Interface declarations
	  for libmu_scm.h
	* include/mailutils/Makefile.am: Added guile.h.
	* libmu_scm/mu_scm.h: Include <mailutils/guile.h>
	* libmu_scm/mu_mime.c: Removed unneeded includes.
	* libmu_scm/mu_scm.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.

	* libmu_scm/mu_guimb.c: Include "mu_scm.h"

	* guimb/Makefile.am: Removed -I$(top_srcdir)/libmu_scm
	* mail.local/Makefile.am: Likewise.

	* mail.local/script.c: Include <mailutils/guile.h>

	* mailbox/Makefile.am (mailutils_config_CFLAGS): Corrected
	  definition of AUTHLIBS.

	* guimb/guimb.h: Added missing includes.

	* include/mailutils/body.h: Use __PMT in nested declarations
	  for C++ compatibility.
	* include/mailutils/debug.h: Likewise.
	* include/mailutils/envelope.h: Likewise.
	* include/mailutils/error.h: Likewise.
	* include/mailutils/filter.h: Likewise.
	* include/mailutils/header.h: Likewise.
	* include/mailutils/message.h: Likewise.
	* include/mailutils/mutil.h: Likewise.
	* include/mailutils/observer.h: Likewise.
	* include/mailutils/registrar.h: Likewise.
	* include/mailutils/stream.h: Likewise.
	* include/mailutils/attribute.h: Likewise.
	* include/mailutils/auth.h: Likewise.

	* include/mailutils/argp.h: Enclosed declarations in extern "C"
	  block.

2002-12-29  Wojciech Polak

	* mail/mail.c: Updated FSF address.
	* mailbox/mu_argp.c: Likewise.
	* mh/mh_argp.c: Likewise.

2002-12-29  Wojciech Polak

	* Makefile.am: Added "dist-bzip2" to AUTOMAKE_OPTIONS.

2002-12-29  Sergey Poznyakoff

	* mail/mail.c (realcursor): Removed. The position of the point
	  is kept in the cursor variable.
	* mail/util.c (util_msglist_command, util_msglist_esccmd): Removed.
	  (util_foreach_msg,util_range_msg): New functions. Iterate across
	  message set or range calling given function for each message.

	* mail/mail.h (util_msglist_command, util_msglist_esccmd): Removed.
	  (realcursor): Removed.
	  (util_foreach_msg,util_range_msg): New functions.

	* mail/delete.c: Rewritten using new iterator functions.
	* mail/dp.c: Likewise.
	* mail/edit.c: Likewise.
	* mail/eq.c: Likewise.
	* mail/file.c: Likewise.
	* mail/followup.c: Likewise.
	* mail/from.c: Likewise.
	* mail/headers.c: Likewise.
	* mail/hold.c: Likewise.
	* mail/mbox.c: Likewise.
	* mail/msgset.y: Likewise.
	* mail/next.c: Likewise.
	* mail/previous.c: Likewise.
	* mail/print.c: Likewise.
	* mail/reply.c: Likewise.
	* mail/size.c: Likewise.
	* mail/summary.c: Likewise.
	* mail/top.c: Likewise.
	* mail/undelete.c: Likewise.
	* mail/var.c: Likewise.
	* mail/visual.c: Likewise.
	* mail/write.c: Likewise.
	* mail/z.c: Likewise.

2002-12-29  Wojciech Polak

	* auth/*: Fixed C source copyrights to be compatible with the
          GNU 'Maintaining' document, i.e. "This program" -> "GNU Mailutils".
	* cmc/*: Likewise.
	* examples/*: Likewise.
	* imap4d/*: Likewise.
	* include/mailutils/*: Likewise.
	* libmu_scm/*: Likewise.
	* libsieve/*: Likewise.
	* mailbox/*: Likewise.
	* mailbox2/*: Likewise.
	* mapi/*: Likewise.
	* mh/*: Likewise.
	* pop3d/*: Likewise.

	* po/POTFILES.in: Added missing mail/msgset.y.

2002-12-29  Sergey Poznyakoff

	* mail/util.c: Removed unneeded global env_cursor.
	* mailbox/mailutils-config.c: Reflect addition
	  of NLS libraries.

2002-12-28  Sergey Poznyakoff

	* dotlock/dotlock.c: Reverted today's changes. Failed experiment.
	* mail.remote/mail.remote.c: Likewise.
	* mail.local/main.c: Added call to mu_init_nls.

	* sieve/testsuite/Redirect: Reflect changes to libsieve/actions.c.

2002-12-28  Sergey Poznyakoff

	* doc/texinfo/Makefile.am: Added fdl.texi

	* include/mailutils/stream.h: New flag MU_STREAM_ALLOW_LINKS:
	  allow links on a file. Needed for MH.
	* mailbox/file_stream.c: Handle MU_STREAM_ALLOW_LINKS.
	* mailbox/mbx_mh.c: Create message stream with
	  MU_STREAM_ALLOW_LINKS bit set.

	* libsieve/actions.c: Use X-Loop-Prevention header instead
	  of X-Sender.

	* mail/followup.c: Bugfix: do not translate header names
	* mail/from.c: Bugfix: date field has always fixed length.
	* mailbox/argp-help.c: include mailutils/nls.h. Otherwise
	  i18n is disabled.

2002-12-28  Wojciech Polak

	* doc/texinfo/mailutils.texi: Fixed copyright (FDL).
	* doc/texinfo/fdl.texi: New file.

2002-12-28  Sergey Poznyakoff

	* dotlock/dotlock.c: Exclude '\v' from xgettext markers.
	* mail.local/main.c: Likewise.
	* mail.remote/mail.remote.c: Likewise.

2002-12-27  Wojciech Polak

	* doc/texinfo/mailutils.texi: Use @copying.
	* doc/texinfo/programs.texi: Minor formatting.

2002-12-27  Sergey Poznyakoff

	* auth/Makefile.am: Added NLS support.
	* auth/pam.c: Likewise.
	* auth/sql.c: Likewise.
	* auth/virtual.c: Likewise.

	* mail/reply.c: The To: and Cc: needn't be translated.

	* dotlock/dotlock.c: Added missing N_() markers.
	* frm/frm.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* libsieve/argp.c: Likewise.
	* mail/mail.c: Likewise.
	* mail.local/main.c: Likewise.
	* mail.remote/mail.remote.c: Likewise.
	* mailbox/mu_argp.c: Likewise.
	* mailbox/mu_auth.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.
	* readmsg/readmsg.c: Likewise.
	* sieve/sieve.c: Likewise.
	* pop3d/popauth.c: Likewise.
	* comsat/comsat.c: Likewise.

	* po/POTFILES.in: Updated

2002-12-27  Jordi Mallach  <jordi@gnu.org>

	* mh/inc.c: Fixed typo.
	* mh/repl.c: Likewise.

2002-12-27  Sergey Poznyakoff

	* configure.ac: Set version number to 0.2.1.

	* mail/mail.c: Removed startup banner.
	  Bugfix: --quit option was handled incorrectly
	* doc/texinfo/programs.texi: Removed references to `set quiet'

	* mail/quit.c: Use ngettext
	* mail/summary.c: Likewise.
	* frm/frm.c: Likewise.
	* mail/testsuite/mail/folder.exp: Reflect recent changes in
          the handling of plurals.
	* mail/testsuite/mail/write.exp: Likewise.

	* mail.remote/Makefile.am: Added @INTLINCS@ and @LTLIBINTL@

	* AUTHORS: Added Wojciech Polak.

2002-12-27  Wojciech Polak

	* mail/summary.c: Small NLS improvement.
	* mail/quit.c: Likewise.
	* frm/frm.c: Likewise.

2002-12-26  Wojciech Polak

	* po/POTFILES.in: Updated.
	* dotlock/dotlock.c: Added NLS.
	* from/from.c: Likewise.
	* mail.remote/mail.remote.c: Likewise.
	* mh/fmtcheck.c: Likewise.
	* mh/folder.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/mh_argp.c: Likewise.
	* mh/mh_ctx.c: Likewise.
	* mh/fmtgram.y: Likewise.
	* mh/mh_getopt.c: Likewise.
	* mh/mh_init.c: Likewise.
	* mh/mh_msgset.c: Likewise.
	* mh/mhpath.c: Likewise.
	* mh/refile.c: Likewise.
	* mh/repl.c: Likewise.
	* mh/rmf.c: Likewise.
	* mh/rmm.c: Likewise.
	* mh/scan.c: Likewise.

2002-12-26  Wojciech Polak

	* po/POTFILES.in: Updated.
	* sieve/sieve.c: Enabled NLS.
	* doc/texinfo/mailutils.texi: Small improvement.
	* COPYING.FDL: The Free Documentation License has been
	  upgraded from 1.1 to 1.2.

2002-12-25  Wojciech Polak

	* po/POTFILES.in: Updated.
	* mailbox/mu_argp.c: Added NLS.
	* mailbox/muerrno.c: Likewise.
	* mailbox/message.c: Likewise.
	* libsieve/*: Likewise.

2002-12-25  Sergey Poznyakoff

	* comsat/action.c: Do not include \r\n to the i18n strings.
	* pop3d/popauth.c: Fixed typo in docstring.

	Thanks to Jordi Mallach for both.

2002-12-25  Sergey Poznyakoff

	* imap4d/fetch.c (fetch_internaldate) Do not use %X in strftime
	  format: it produces locale-dependent output.
	* mh/mh_format.c (mh_format): Fixed format spec.

2002-12-24  Wojciech Polak

	* po/POTFILES.in: Updated.
	* po/.cvsignore: Removed Makevars.
	* mail.local/*: Added NLS.
	* mailbox/Makefile.am: Removed "-I${top_srcdir}/intl" from INCLUDES
	  due to @INTLINCS@.

2002-12-24  Sergey Poznyakoff

	* doc/texinfo/Makefile.am: Fixed referencing /scripts/missing
	  program.
	* po/.cvsignore: Removed LINGUAS.

2002-12-24  Sergey Poznyakoff

	* configure.ac: Specify use-libtool to AM_GNU_GETTEXT.
	  Define WITH_INCLUDED_LIBINTL and INTLINCS if we are using
	  the included gettext.

	* include/mailutils/nls.h: When using included libintl, use
	  only intl/libgnuintl.h. Using system default libintl.h
	  on systems with older libintls causes random coredumps.

	* mailbox/mu_argp.c (mu_conf_option): Added WITH_INCLUDED_LIBINTL.
	* libsieve/sieve.l: Documented the grammar.

	* po/.cvsignore: New file
	* .cvsignore: Updated.
	* m4/.cvsignore: Ignore gettext's m4 files.
	* m4/Makefile.am: Include gettext's m4 into the distribution.
	* scripts/.cvsignore: Ignore autogenerated files.

	* auth/Makefile.am: Added @INTLINCS@ and @LTLIBINTL@ where
	  appropriate.
	* comsat/Makefile.am: Likewise.
	* dotlock/Makefile.am: Likewise.
	* examples/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* from/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* libsieve/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* mailbox/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.

2002-12-24  Wojciech Polak

	* po/POTFILES.in: Updated.
	* imap4d/*: Added NLS.
	* guimb/*: Likewise.
	* sieve/sieve.c: Likewise.

2002-12-23  Wojciech Polak <polak@gnu.org>

	* po/: New directory.
	* po/Makevars: New file.
	* po/POTFILES.in: Likewise.
	* po/LINGUAS: Likewise.
	* po/ChangeLog: Likewise.
	* mailbox/nls.c: New file. NLS main code.
	* mailbox/Makefile.am: Updated.
	* include/mailutils/nls.h: New file. NLS main header file.
	* include/mailutils/Makefile.am: Updated.
	* configure.ac: Added NLS support, added AC_CONFIG_AUX_DIR([scripts]).
	* Makefile.am: Added 'intl po' to SUBDIRS.
	* mail/*: Added NLS support.
	* messages/*: Likewise.
	* readmsg/*: Likewise.
	* comsat/*: Likewise.
	* pop3d/*: Likewise.
	* frm/*: Likewise.

	* mail/delete.c: Fixed. MSG_NODELETED.

2002-12-22  Jeff Bailey <jbailey@nisa.net>

	* mailbox/mbx_maildir.c: Initial checking of template

	* mailbox/Makefile.am: (libmailbox_la_SOURCES) Add mbx_maildir.c

2002-12-20  Sergey Poznyakoff

	* libsieve/sieve.l: Implemented shell-like extension for
	  multiline strings. They can start now with text:[-][delimiter],
	  the dash meaning 'strip leading tabs', the 'delimiter'
	  overriding default end-of-text delimiter (.)
	* doc/texinfo/libsieve.texi: Documented text:[-][delimiter]
	  extension.
	* TODO: Updated

2002-12-16  Sergey Poznyakoff

	* doc/texinfo/Makefile.am: Added trailing slash to the default
	  BASE_URL
	* doc/texinfo/libmu_scm.texi: Fixed use of @deffn
	* doc/texinfo/libmuauth.texi: Likewise.
	* doc/texinfo/libsieve.texi: Likewise.

	The sources are tagged "rel_0_2".

2002-12-15  Sergey Poznyakoff

	* configure.ac: Raised version number to 0.2
	* doc/texinfo/libmuauth.texi: Spell check.
	* doc/texinfo/libsieve.texi: Likewise.
	* TODO: Updated.

2002-12-14  Sergey Poznyakoff

	* mail/previous.c: Skip deleted messages
	* mail/next: Likewise.

	* auth/sql.c (mu_auth_sql_by_uid): Fixed typo.

	* include/mailutils/libsieve.h: Changed type of `number'
	  to size_t.
	* libsieve/sieve.y (union): Likewise
	* include/mailutils/mu_auth.h: Removed duplicate declaration
	  of mu_auth_data_free.
	* libsieve/actions.c (build_mime): To improve readability,
	  output additional newline before reporting the reason.
	* libsieve/sieve.l: Allow backslashes in quoted strings.
	* sieve/testsuite/Reject: Updated

	* doc/texinfo/libmu_scm.texi: New file. Documents libmu_scm
	  library.
	* doc/texinfo/Makefile.am: Added libmu_scm.texi
	* doc/texinfo/libmuauth.texi: Updated
	* doc/texinfo/libsieve.texi: Updated
	* doc/texinfo/mailutils.texi: Updated
	* doc/texinfo/programs.texi: Updated
	* doc/texinfo/imap4.texi: Updated
	* doc/texinfo/mailer.texi: Updated

	* TODO: Updated
	* mh/TODO: New file
	* NEWS: Updated

2002-12-13  Sergey Poznyakoff

	* mail.local/mail.local.h: Create temporary mailbox instead of
	  the temporary message, to avoid problems when running sieve
	  fileinto.
	* mail.local/main.c: Likewise.
	* mail.local/script.c: Likewise.
	* doc/texinfo/Makefile.am: Added rules for generating
	  web documentation.
	* doc/texinfo/index.html.in: New file. Template for generating
	  web documentation index page.
	* doc/texinfo/framework.texi: Updated.
	* doc/texinfo/libsieve.texi: Likewise.
	* doc/texinfo/mailutils.texi: Likewise.
	* doc/texinfo/programs.texi: Likewise.

2002-12-12  Sergey Poznyakoff

	* mail.local/main.c (_sieve_action_log): Use vasprintf.
	* libsieve/sieve.l: Allow #include within a :text block
	* mh/inc.c: Use mu_errstring instead of strerror.
	* mh/mh_init.c (mh_open_folder): Changed default open
	  flags to MU_STREAM_RDWR.

2002-12-11  Sergey Poznyakoff

	* examples/numaddr.c: Fixed malformed comment.
	* doc/texinfo/libsieve.texi: Updated.

2002-12-11  Sergey Poznyakoff

	* configure.ac: Added --enable-experimental option to enable
	  building of experimental/unfinished utilities. Currently it
	  controls mh utils.
	* README: Document --enable-experimental option.
	* examples/addr.c: Include string.h. Add typecasts to the
	  arguments of printf-like functions where necessary.
	* examples/base64.c: Likewise.
	* examples/mimetest.c: Add typecasts to the
	  arguments of printf-like functions where necessary.
	* examples/mta.c: Likewise.
	* mail/var.c: Likewise.
	* mailbox/folder_imap.c: Likewise.
	* mailbox/mbx_imap.c: Likewise.
	* mailbox/mbx_mbox.c: Likewise.
	* mailbox/mbx_mh.c: Likewise.
	* mh/mh_global.c: Likewise.

	* mh/mh_format.c (struct mh_machine): Changed type of arg_num to
	  long.

	* imap4d/imap4d.c: Cast third argument to accept to
          socklen_t*. Add typecasts to the arguments of printf-like
	  functions where necessary.
	* pop3d/pop3d.c: Likewise.
	* lib/mu_dbm.c: Include xalloc.h
	* sieve/sieve.c: Include mu_asprintf.h

	* examples/numaddr.c: Added extensive comments.
	* doc/texinfo/libsieve.texi: Updated.
	* doc/texinfo/programs.texi: Updated.

2002-12-10  Sergey Poznyakoff

	* mailbox/filter_trans.c (qp_decode): Bugfix: extend chr to
	  accommodate three characters and terminate it with zero.
	* libsieve/comparator.c (i_octet_regex): Removed misleading
	  comment.
	* mail/mail.h: Include mu_asprintf.h

	* TODO: Updated
	* doc/texinfo/libsieve.texi: Likewise.

2002-12-10  Sergey Poznyakoff

	* configure.ac: Define and export SIEVE_MODDIR.
	* examples/Makefile.am: Use SIEVE_MODDIR.
	* libsieve/Makefile.am: Likewise.

	* libsieve/actions.c (sieve_register_standard_actions):
	  Register "fileinto" in non-required state to comply to the
	  RFC.
	* libsieve/argp.c (sieve_argp_parser): Always add SIEVE_MODDIR
	  to sieve_library_path.

	* doc/texinfo/libsieve.texi: Documented some aspects of the`
	  input language.
	* doc/texinfo/programs.texi: Documented :sieve option group

	* examples/addr.c: Include mutil.h
	* guimb/guimb.h: Include mu_asprintf.h
	* mail/mail.h: Likewise.
	* imap4d/append.c: Removed debugging hook
	* imap4d/auth_gss.c: Added typecasts to shut the compiler
	  warnings.
	* libmu_scm/mu_body.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* mailbox/locker.c: Likewise.
	* imap4d/util.c: Initialize automatic variable.
	* libsieve/tests.c: Likewise.
	* mail/util.c: Likewise.
	* mailbox/adxodress.c: Likewise.
	* mailbox/file_stream.c: Likewise.

	* mailbox/date.c: Added missing includes
	* mailbox/tcp.c: Removed unused variables.

	* imap4d/search.c (_scan_body): Bugfix. Add null terminator to
	  the string read.
	* imap4d/testsuite/imap4d/search.exp: Fixed `wine' testcase.
	  Fixed `SELECT INBOX' testcase.

2002-12-10  Sergey Poznyakoff

	* include/mailutils/libsieve.h
	  (sieve_include_path,sieve_library_path): New globals
	* libmu_scm/Makefile.am: Fixed install-data-hook. Thanks to
	  Jordi Mallach.
	* libsieve/argp.c: New file. Sieve-specific command line handling.
	* libsieve/Makefile.am: Added argp.c
	* libsieve/load.c (sieve_load_add_path,sieve_load_add_dir): New
	  functions.
	* libsieve/sieve.h: Likewise.
	* libsieve/sieve.l: New extension statement #searchpath controls
	  the search path for dynamically loaded extensions.
	* mail.local/main.c (argp_capa): Added "sieve" capability.
	  (main): Invoke mu_sieve_argp_init().
	* sieve/sieve.c: Likewise.
	* sieve/testsuite/sieve/ext.exp: Use -L option instead of setting
	  environment variable.
	* mailbox/mu_argp.c (mu_license_argp_option): Removed short
	  option 'L', it is used by sieve argp stuff.

2002-12-09  Sergey Poznyakoff

	* libsieve/actions.c (build_mime,sieve_action_redirect): free
	  return from mu_get_user_email().
	* libsieve/sieve.y (statement production): Gross bugfix: do not
	  run sieve_slist_destroy on the list, just list_destroy. All the
	  items are already registered in the memory pool and will be
	  freed by sieve_machine_destroy.
	* libsieve/tests.c (_get_address_part): Bugfix: assign to *data
	  only if ret is not null.
	* libsieve/util.c (_comp_action): Do not run comparator if the
	  sample is NULL.
	* mail.local/main.c (sieve_test): Bugfix: run
	  sieve_machine_destroy() only if the compilation succeeded.
	  (deliver): Removed unused variable sb. Use isize instead.

	* mailbox/mutil.c (mu_get_user_email): Added comment.

2002-12-05  Sergey Poznyakoff

	* lib/Makefile.am (INCLUDES): Fixed path.
	* configure.ac: Check for libltdl only if enable_shared
	  is set.

	* examples/mta.c: Do not use asprintf.

	* lib/pin.c: It is needed by argp stuff. Moved to ...
	* mailbox/pin.c: ... here
	* lib/Makefile.am: Moved pin.c from lib to mailbox
	* mailbox/Makefile.am: Likewise.

	* comsat/comsat.h: Removed unneeded inclusion of getopt.h
	* frm/frm.c: Likewise.
	* imap4d/imap4d.h: Likewise.
	* pop3d/pop3d.h: Likewise.
	* mail.local/mail.local.h: Likewise.
	* mh/mh_getopt.c: Likewise.
	* readmsg/readmsg.h: Likewise.

	* imap4d/fetch.c (fetch_internaldate): Added typecast to shut up
	  the compiler warning.
	* mailbox/mbx_default.c (get_homedir): Returned value is not
	  const.

2002-12-05  Sergey Poznyakoff

	* configure.ac: Check for presence of getopt.h
	* examples/mta.c: Do not use program_invocation_short_name:
	  examples are not linked against libmailutils.
	* frm/testsuite/frm/test.exp: Override FOLDER environment
	  variable.
	* from/testsuite/from/test.exp: Likewise.
	* messages/testsuite/messages/test.exp: Likewise.
	* readmsg/testsuite/readmsg/test.exp: Likewise.
	* sieve/testsuite/lib/sieve.exp: Likewise.

	* guimb/scm/Makefile.am: Use $? instead of $< in explicit rules.
	* libmu_scm/Makefile.am: Likewise.

	* lib/getopt.h: Moved to ...
	* include/mailutils/gnu/getopt.h: ... here.
	* include/mailutils/gnu/Makefile.am: getopt.h moved from lib to
	  include/mailutils/gnu
	* lib/Makefile.am: Likewise.
	* include/mailutils/gnu/argp.h: Include local copy of getopt.h if
	  the system does not provide one.

	* mailbox/Makefile.am (mailutils_config_LDADD): Added
	  libmailutils.la
	* mailbox/mailutils-config.c (main): Do not print duplicate
	  --link arguments.

2002-12-04  Sergey Poznyakoff

	* include/mailutils/argp.h (mu_print_options, mu_check_option):
	  New functions.
	* mailbox/mu_argp.c: Likewise.
	* mailbox/mailutils-config.c: Added --info option (prints and
	  tests for the values of compilation options). Improved help
	  output.
	* doc/texinfo/programs.texi: Documented mailutils-config.

2002-12-04  Sergey Poznyakoff

	* TODO: Updated
	* configure.ac: Add mysql libraries to MYSQLLIBS
	* mailbox/Makefile.am: New target mailutils-config
	* mailbox/mailutils-config.c: New file. A utility
	  program that prints compiler and loader flags
	  necessary to build a program using mailutils
	  libraries.

2002-12-03  Sergey Poznyakoff

	* libsieve/actions.c (sieve_action_reject): Fixed diagnostic
	  messages.
	* m4/gssapi.m4: Bugfix: Properly restore LIBS, LDFLAGS and CFLAGS.

2002-12-02  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/mime.c (_mime_body_read): reset the part offset when
	resetting the message.

2002-11-29  Sergey Poznyakoff

	* mailbox/date.c: New version of mu_tm2time function.
	  The previous version of mu_tm2time incorrectly handled dates within
	  the DST period.
	* mailbox/mutil.c: Moved time functions to date.c
	* mailbox/Makefile.am: Added date.c
	* imap4d/fetch.c (fetch_internaldate): Use
	  mu_parse_ctime_date_time.
	* imap4d/testsuite/imap4d/fetch.exp: Fixed wrong dates.

	* NEWS: Updated.
	* doc/texinfo/libsieve.texi: Updated.

	* libsieve/actions.c (sieve_action_keep): Remove the delete
	  mark from the message.
	* guimb/scm/sieve-core.scm (action-keep): Likewise.
	* libsieve/sieve.y (sieve_machine_init): Fixed inconsistent return
	  value.

	* auth/Makefile.am: Removed traces of ansi2knr.c
	* comsat/Makefile.am: Likewise.
	* dotlock/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* from/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* libmu_scm/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* mail.remote/Makefile.am: Likewise.
	* mapi/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* readmsg/Makefile.am: Likewise.

2002-11-29  Sergey Poznyakoff

	* mailbox/file_stream.c (_stdin_file_read): Test for eof
	  condition.

	* examples/base64.c: New file. Sample base64 encoder-decoder.
	* examples/Makefile.am: Added base64
	* mailbox/testsuite/Encode: New file. Data for base64 test.
	* mailbox/testsuite/Decode: Likewise.
	* mailbox/testsuite/Makefile.am: Added Encode, Decode.
	* mailbox/testsuite/mailbox/base64.exp: New file. Testcase for
	  base64 filters.
	* mailbox/testsuite/mailbox/DISTFILES: Added base64.exp
	* testsuite/lib/mailutils.exp (mu_test_file): Fixed comment.

2002-11-28  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/filter_trans.c (qp_encode): fixed quoted-printable
	encoding.

	* mailbox/mime.c (_mime_set_content_type): when a MIME message has
	only one part, set the Content-transfer-encoding of the message to
	be the one of the part.

2002-11-27  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/filter_trans.c (trans_read): applied patch from Sergey
	Poznyakoff, so that filters don't forget the last bytes of a
	file. Fixed an uninitialized variable problem.

	* libsieve/load.c: fixed compilation when HAVE_LIBLTDL is not
	defined.

2002-11-25  Sergey Poznyakoff

	* doc/texinfo/Makefile.am: Fake configure into including
	  srcdir to VPATH.
	* include/mailutils/libsieve.h (sieve_malloc,sieve_mstrdup)
	  (sieve_mrealloc,sieve_mfree): New functions.
	* libsieve/util.c: Likewise.
	* libsieve/comparator.c: Use sieve_m.* memory allocation
	  functions.
	* libsieve/prog.c: Likewise.
	* libsieve/sieve.l: Likewise.
	* libsieve/sieve.y: Likewise.

	* doc/texinfo/libsieve.texi: Updated

2002-11-25  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* mailbox/address.c (address_concatenate): cleanup the address
	cache during concatenation.

2002-11-25  Sergey Poznyakoff

	* mail.local/main.c (deliver): Bugfix: n and isize were not
	  declared.
	* sieve/sieve.c (options): Fixed spelling in the help line.
	* libsieve/load.c: Removed debugging hacks. Always call lt_dlinit
	  and add a call to lt_dlexit to the destructor.
	* examples/Makefile.am: Pointed moddir to more appropriate
	  place.
	* mail/z.c: Bugfix. Use mail_from0(), not mail_from().

	* doc/texinfo/libmuauth.texi: New file. A placeholder for
	  documentation regarding libmuauth.
	* doc/texinfo/libsieve.texi: New file. Documentation for the
	  sieve library.
	* doc/texinfo/Makefile.am: Replaced explicit rules to generate
	  *.c.texi files with an implicit rule generating *.inc files.
	  The rule itself is modified to preserve the heading comment.
	  Added libmuauth.texi and libsieve.texi to sources.

	* doc/texinfo/.cvsignore: Added *.inc

	* doc/texinfo/programs.texi: Documented new version of sieve (not
	  fully, still...)
	* doc/texinfo/mailutils.texi: Added references to libmuauth and
	  libsieve.

	* doc/texinfo/framework.texi: Include *.inc files instead of
	  *.c.texi. Added standard GNU copyright header.
	* doc/texinfo/address.texi: Likewise.
	* doc/texinfo/attribute.texi: Likewise.
	* doc/texinfo/auth.texi: Likewise.
	* doc/texinfo/body.texi: Likewise.
	* doc/texinfo/c-api.texi: Likewise.
	* doc/texinfo/encoding.texi: Likewise.
	* doc/texinfo/envelope.texi: Likewise.
	* doc/texinfo/folder.texi: Likewise.
	* doc/texinfo/headers.texi: Likewise.
	* doc/texinfo/imap4.texi: Likewise.
	* doc/texinfo/iterator.texi: Likewise.
	* doc/texinfo/locker.texi: Likewise.
	* doc/texinfo/mailbox.texi: Likewise.
	* doc/texinfo/maildir.texi: Likewise.
	* doc/texinfo/mailer.texi: Likewise.
	* doc/texinfo/mbox.texi: Likewise.
	* doc/texinfo/message.texi: Likewise.
	* doc/texinfo/mh.texi: Likewise.
	* doc/texinfo/mime.texi: Likewise.
	* doc/texinfo/nntp.texi: Likewise.
	* doc/texinfo/parse822.texi: Likewise.
	* doc/texinfo/pop3.texi: Likewise.
	* doc/texinfo/sendmail.texi: Likewise.
	* doc/texinfo/smtp.texi: Likewise.
	* doc/texinfo/stream.texi: Likewise.
	* doc/texinfo/url.texi: Likewise.

2002-11-22  Sergey Poznyakoff

	* configure.ac: Added check for installed libltdl. Bumped
	  version number to 0.1.3.
	* mailbox/mu_argp.c (mu_conf_option): Added HAVE_LIBLTDL
	* examples/numaddr.c: New file. Sample loadable test for sieve.
	* examples/Makefile.am: Added numaddr.c
          (AM_LDFLAGS): Removed libmailutils. It's not used by examples.
	* libsieve/load.c: New file. Support for loadable extensions for
	  sieve.
	* libsieve/Makefile.am: Added load.c
	* libsieve/require.c (sieve_require): Implemented loadable tests.
	* libsieve/comparator.c (sieve_require_comparator): Implemented
	  loadable comparators.
	* include/mailutils/libsieve.h (sieve_require_action)
	  (sieve_require_test): New functions.
	* libsieve/register.c: Likewise.
	* sieve/Makefile.am (sieve_LDFLAGS): Added -export-dynamic
	* sieve/sieve.c (main): Removed unneeded goto. Added call
	  to sieve_machine_destroy at the end.
	* sieve/testsuite/Reject: Use regexp instead of hardcoded
	  version number.

	* testsuite/spool/bigto.mbox: New file. A mailbox for
	  testing the behaviour of various utilities on
	  structured headers that contain long lists of addresses.
	* testsuite/spool/DISTFILES: Added bigto.mbox
	* frm/testsuite/frm/test.exp: Test frm -l on long to: headers.
	* sieve/testsuite/scripts/numaddr.sv: New file. A script invoking
	  loadable test.
	* sieve/testsuite/scripts/DISTFILES: Added numaddr.sv
	* sieve/testsuite/sieve/ext.exp: New file. Test for sieve loadable
	  extensions.
	* sieve/testsuite/sieve/DISTFILES: Added ext.exp

2002-11-21  Sergey Poznyakoff

	* mailbox/file_stream.c (_file_destroy): Bugfix. Do not close the
	  stream.
	* imap4d/append.c (imap4d_append0): Simplified a lot.

	* imap4d/testsuite/lib/imap4d.exp (default_imap4d_start): Save
	  imap4d spawn id in the global variable.
	  (default_imap4d_stop): Moved functionality from imap4d_exit
	  (imap4d_stop): Call default_imap4d_stop unless it has already
	  been called.
	  (imap4d_exit): Call imap4d_stop
	* imap4d/testsuite/imap4d/anystate.exp: Call imap4d_stop at the
	  end.
	* imap4d/testsuite/imap4d/append.exp: Likewise.
	* imap4d/testsuite/imap4d/create.exp: Likewise.
	* imap4d/testsuite/imap4d/examine.exp: Likewise.
	* imap4d/testsuite/imap4d/expunge.exp: Likewise.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* imap4d/testsuite/imap4d/list.exp: Likewise.
	* imap4d/testsuite/imap4d/search.exp: Likewise.
	* imap4d/testsuite/imap4d/x.exp: Likewise.

	* mail/testsuite/lib/mail.exp (default_mail_start): Save
	  mail spawn id in the global variable.
	  (default_mail_stop): Moved functionality from mail_exit
	  (mail_stop): Call default_mail_stop unless it has already
	  been called.
	  (mail_exit): Call mail_stop
	* mail/testsuite/mail/alias.exp: Call mail_stop at the end.
	* mail/testsuite/mail/folder.exp: Likewise.
	* mail/testsuite/mail/read.exp: Likewise.
	* mail/testsuite/mail/send.exp: Likewise.
	* mail/testsuite/mail/tag.exp: Likewise.
	* mail/testsuite/mail/write.exp: Likewise.

	* pop3d/testsuite/lib/pop3d.exp: Fixed exit functions.

	* mailbox/mailbox.c (mailbox_flush,mailbox_append_message)
	  (mailbox_save_attributes,mailbox_expunge): Return EACCES
	  if mailbox was open read only.

2002-11-21  Sergey Poznyakoff

	* mailbox/parse822.c (parse822_quoted_string): Free qstr before
	  returning error status. Otherwise, addresses like
		"A wrong quote\" <addr@dom.ain>
	  hit the assert in parse822_word() and coredump.
	  (parse822_word_dot): Removed misleading comment.
	* mailbox/testsuite/Addrs: Added a testcase for this.

2002-11-20  Sergey Poznyakoff

	* mailbox/mailer.c: Fixed indentation.

	* include/mailutils/libsieve.h (sieve_test_lookup)
	  (sieve_action_lookup,sieve_register_test)
	  (sieve_register_action,sieve_register_comparator)
	  (sieve_comparator_lookup,sieve_require_comparator)
	  (sieve_get_comparator): Accept the pointer to
	  sieve machine as first argument.
	* libsieve/sieve.h (struct sieve_machine): New members
	  test_list, action_list and comp_list provide independent
	  symbol space for this particular instance of sieve.
	* libsieve/actions.c (build_mime,sieve_action_redirect): Removed
	  unused argument.
	  (sieve_register_standard_actions): Changed declaration.
	* libsieve/comparator.c (sieve_register_comparator)
	  (sieve_require_comparator,sieve_comparator_lookup)
	  (sieve_get_comparator)
	  (sieve_register_standard_comparators): Accept the pointer
	  to sieve machine as first argument.
	* libsieve/register.c (sieve_test_lookup,sieve_action_lookup)
	  (sieve_register_test,sieve_register_action): Accept the pointer
	  to sieve machine as first argument.
	* libsieve/require.c: Adjust for above changes.
	* libsieve/sieve.y: Likewise.
	* libsieve/tests.c: Likewise.
	  (sieve_test_header): New tag :mime. Directs header to test
	  headers in all parts of a multipart message, not only main
	  message headers.
	* libsieve/util.c (sieve_tag_lookup): New function.

	* sieve/sieve.c: Added "mailer" capability. Removed spurious
	  --mailer-url command line switch.
	  (main): Do not create mailer. sieve_message() will do it
	  if necessary.
	* sieve/testsuite/scripts/header-mime.sv: New file. Test script
	  for 'header :mime' extension.
	* sieve/testsuite/scripts/DISTFILES: Added header-mime.sv
	* sieve/testsuite/sieve/header.exp: Test :mime tag.

	* mail.local/mail.local.h (mda): Changed prototype.
	  (struct mda_data): Replaced FILE *fp with message_t msg.
	* mail.local/script.c: Adjust for above changes.
	* mail.local/main.c (make_tmp): Create a message instead
	  of returning file pointer.
	  (argp_capa): Added "mailer" capability.
	  (sieve_test): Second argument.
	  (mda,deliver): Take message_t as first argument, instead of
	  FILE*.

2002-11-19  Sergey Poznyakoff

	* libsieve/comparator.c (i_ascii_casemap_contains): Fixed
	  typecast.
	* mailbox/mutil.c (mu_set_user_email): Set user's domain as
	  well.
	* sieve/testsuite/Reject: Fixed `envelope from' address.


2002-11-19  Sergey Poznyakoff

	* sieve/sieve.c: New options: --verbose to verbosely log executed
	  actions, --log-facility to switch all diagnostic output to
	  syslog.
	* libsieve/comparator.c (i_ascii_numeric_is): Support for
	  :comparator i;ascii-numeric. Fixed handling of
	  :comparator i;ascii-casemap :matches and :contains.
	  Added i;ascii-numeric :is comparator.
	* libsieve/runtime.c (sieve_message): New function.
	* libsieve/sieve.y (sieve_machine_init,sieve_machine_destroy):
	  Fixed inconsistencies.
	* libsieve/tests.c (_get_address_part): Made static to avoid
	  name clashes.
	* libmu_scm/mu_address.c: Likewise.
	* libsieve/util.c (sieve_slist_destroy): Use list_do. It is
	  faster.

	* sieve/testsuite/lib/sieve.exp (sieve_test): Pass --verbose
	  switch to sieve. Added -retcode option.

	* sieve/testsuite/scripts/i-casemap-contains.sv: New file.
	* sieve/testsuite/scripts/i-casemap-is.sv: New file.
	* sieve/testsuite/scripts/i-casemap-matches.sv: New file.
	* sieve/testsuite/scripts/i-casemap-regex.sv: New file.
	* sieve/testsuite/scripts/i-numeric-contains.sv: New file.
	* sieve/testsuite/scripts/i-numeric-is.sv: New file.
	* sieve/testsuite/scripts/i-octet-contains.sv: New file.
	* sieve/testsuite/scripts/i-octet-is.sv: New file.
	* sieve/testsuite/scripts/i-octet-matches.sv: New file.
	* sieve/testsuite/scripts/i-octet-regex.sv: New file.
  	* sieve/testsuite/scripts/DISTFILES: Added scripts for testing
	  comparators.

	* sieve/testsuite/sieve/i-casemap.exp: New file.
	* sieve/testsuite/sieve/i-numeric.exp: New file.
	* sieve/testsuite/sieve/i-octet.exp: New file.
	* sieve/testsuite/sieve/DISTFILES: Added scripts for testing
	  comparators.

	* testsuite/spool/sieve.mbox: Add X-Number header to msg 2
	  for testing i;ascii-numeric comparator.
	* sieve/testsuite/Redirect: Reflect changed headers in msg 2
	* sieve/testsuite/Reject: Likewise
	* sieve/testsuite/sieve/action.exp: Likewise.

	* testsuite/lib/mailutils.exp: Bugfix: always check for newline
	  after matched pattern.

	* mail.local/Makefile.am: Added libsieve.la
	* mail.local/mail.local.h: Include libsieve.h
	* mail.local/main.c: Support for user-defined sieve filters.
	  Improved debugging.

	* TODO: Updated.

2002-11-18  Sergey Poznyakoff

	* mailbox/mailer.c (mailer_get_url): New function.
	* mailbox/sendmail.c (sendmail_send_message): Bugfix: stream_read
	  should not use sendmail->offset for positioning.

	* examples/mta.c: Test if environment variable MTA_APPEND is set.

	* include/mailutils/libsieve.h: Added comments.
	* libsieve/actions.c: Implemented reject and redirect.
	* libsieve/sieve.h (struct sieve_machine): New members
	  mailer and daemon_email.
	* libsieve/sieve.l: Call multiline_add for each line in ML state.
	* libsieve/sieve.y (sieve_get_mailer,sieve_set_mailer)
	  (sieve_get_daemon_email,sieve_set_daemon_email): New functions.

	* sieve/Makefile.am: Enable testsuite subdir.
	* sieve/sieve.c: New option --email sets user email address.

	* sieve/testsuite/Reject: New file
	* sieve/testsuite/Redirect: New file
	* sieve/testsuite/Makefile.am: Added Reject and Redirect
	* sieve/testsuite/lib/sieve.exp (sieve_test): Pass --email
	  and --mailer options to sieve.
	  (sieve_driver_test): New procedure.

	* sieve/testsuite/scripts/redirect.sv: New file
	* sieve/testsuite/scripts/reject.sv: New file
	* sieve/testsuite/scripts/DISTFILES: Added redirect.sv and
	  reject.sv

	* sieve/testsuite/sieve/redirect.exp: New file
	* sieve/testsuite/sieve/reject.exp: New file
	* sieve/testsuite/sieve/DISTFILES: Added redirect.exp and
	  reject.exp

	* libmu_scm/mu_message.c (mu_message_set_header): Fixed memory
	  leak.

2002-11-15  Sergey Poznyakoff

	* sieve/examples/ex-3.1b.sv: Require redirect.
	* sieve/examples/example.sv: Likewise.
	* sieve/testsuite/sieve/action.exp: Adapted for changed sieve
	  diagnostics format.
	* sieve/testsuite/sieve/address.exp: Likewise.
	* sieve/testsuite/sieve/allof.exp: Likewise.
	* sieve/testsuite/sieve/anyof.exp: Likewise.
	* sieve/testsuite/sieve/envelope.exp: Likewise.
	* sieve/testsuite/sieve/exists.exp: Likewise.
	* sieve/testsuite/sieve/false.exp: Likewise.
	* sieve/testsuite/sieve/header.exp: Likewise.
	* sieve/testsuite/sieve/size.exp: Likewise.

2002-11-15  Sergey Poznyakoff

	* mailbox/list.c (list_replace): New function.
	* include/mailutils/list.h: Likewise.
	* mailbox/address.c (address_aget_local_part,address_aget_domain):
	  New functions.
	* include/mailutils/address.h: Likewise.
	* mail.local/main.c (parse_opt): Use argp_error to report
	  diagnostics.

	* include/mailutils/libsieve.h (sieve_retrieve_t): Extra argument.
	  (sieve_destructor_t,sieve_tag_checker_t): New types.
	  (sieve_value_t): New member v.ptr.
	  (sieve_tag_def_t): Removed num member.
	  (sieve_tag_group_t): New data type.
	  (sieve_runtime_tag): Changed type of tag member to char *.
	  (sieve_register_t): Removed unused members. Changed type of
	  tags member.
	  (sieve_register_test,sieve_register_action): Changed type of
	  fourth argument (tags).
	  (sieve_machine_destroy,sieve_machine_add_destructor): New
	  functions.

	* libsieve/comparator.c: Added support for :regex matching type.
	* libsieve/prog.c: More thorough checking of tags.
	* libsieve/register.c (sieve_register_test)
	  (sieve_register_action): Changed type of fourth argument (tags).
	* libsieve/require.c (sieve_require): Commented unimplemented
	  parts of code.
	* libsieve/runtime.c (instr_run): Do not run the handler when
	  in disassemble mode.
	* libsieve/sieve.h (struct sieve_machine): New member destr_list.
	  (sieve_match_part_checker): New function.
	* libsieve/sieve.y (sieve_machine_init): Fixed return value.
	  (sieve_machine_add_destructor,sieve_machine_destroy): New
	  functions.

	* libsieve/tests.c: Implemented the rest of required sieve tests
	  (address and envelope).
	* libsieve/util.c (sieve_value_create,sieve_type_str)
	  (sieve_print_value): Handle SVT_POINTER data type.
	  (sieve_print_value_list) tag member is now char *.
	  (_comp_action): Call cp->retr continuously until it returns
	  non-zero.

2002-11-14  Frederic Gobry  <frederic.gobry@smartdata.ch>

	* include/mailutils/address.h: added declaration of address_dup.


2002-11-14  Sergey Poznyakoff

	* sieve/lex-sieve.lex: Removed
	* include/mailutils/libsieve.h
	  (sieve_comparator_t,sieve_retrieve_t): New datatypes.
	  (sieve_vlist_do,sieve_vlist_compare,sieve_comparator_lookup)
	  (sieve_register_comparator,sieve_get_comparator): New functions.
	* libsieve/actions.c: (sieve_action_discard): Log output made
	  compatible with that of CMU ported sieve.
	* libsieve/require.c (sieve_require): Handle "comparator-" prefix
	  in require statements.
	* libsieve/runtime.c (instr_action): Increase action_count.
	  (sieve_run): Log implicit keep action.
	* libsieve/sieve.h (struct sieve_machine) New member action_count.
	  (sieve_register_standard_comparators): New function.
	  (sieve_require_comparator): New function.
	* libsieve/sieve.y (action production):  Fixed number of arguments
	  in call to sieve_compile_error().
	* libsieve/tests.c: Implemented header test.
	* libsieve/util.c (sieve_vlist_do, sieve_vlist_compare): New
	  functions.
	* libsieve/comparator.c: New file.
	* libsieve/Makefile.am: Added comparator.c
	* sieve/examples/t-complex.sv: require "redirect".

2002-11-14  Sergey Poznyakoff

	Started actually rewriting sieve to use libsieve library.
	The CMU-based sources are available under the tag
	ver-0-1-2-with-cmu-sieve.

	* Makefile.am: Added libsieve.
	* configure.ac: Likewise.

	* mailbox/mbx_mboxscan.c (mbox_scan0): Compute uids before
	  calling DISPATCH_ADD_MSG.
	* mailbox/mbx_mh.c (mh_scan0): Implemented EVT_MESSAGE_ADD
	  notification.
	* include/mailutils/libsieve.h: Changed sieve_machine_t to be
	  a pointer to structure.
	* libsieve/Makefile.am: Removed sv.c
	* libsieve/sv.c: Removed.
	* libsieve/runtime.c: Reflect change of sieve_machine_t type.
	* libsieve/sieve.y: Likewise.
	* libsieve/sieve.h (struct sieve_machine): New members: filename,
	  logger, ticket, mu_debug.
	* libsieve/actions.c: Implemented stop, keep, discard and
	  fileinto.
	* libsieve/tests.c: Implemented true, false, exists and size.
	* libsieve/util.c (sieve_value_get, sieve_log_action)
	  (sieve_mark_deleted): New functions.

	* sieve/gram-sieve.y: Removed.
	* sieve/parseaddr.c: Removed.
	* sieve/sv.h: Removed.
	* sieve/tree.h: Removed.
	* sieve/addr-lex.l: Removed.
	* sieve/imparse.c: Removed.
	* sieve/parseaddr.h: Removed.
	* sieve/sieve-lex.l: Removed.
	* sieve/svcb.c: Removed.
	* sieve/util.c: Removed.
	* sieve/imparse.h: Removed.
	* sieve/script.c: Removed.
	* sieve/svctx.c: Removed.
	* sieve/util.h: Removed.
	* sieve/interp.c: Removed.
	* sieve/script.h: Removed.
	* sieve/sieve.h: Removed.
	* sieve/svfield.c: Removed.
	* sieve/addr.y: Removed.
	* sieve/interp.h: Removed.
	* sieve/sieve_err.c: Removed.
	* sieve/svfield.h: Removed.
	* sieve/comparator.c: Removed.
	* sieve/message.c: Removed.
	* sieve/sieve_err.h: Removed.
	* sieve/svutil.c: Removed.
	* sieve/comparator.h: Removed.
	* sieve/message.h: Removed.
	* sieve/sieve-gram.y: Removed.
	* sieve/sieve_interface.h: Removed.
	* sieve/tree.c: Removed.
	* sieve/AUTHORS: Removed.
	* sieve/COPYING: Removed.
	* sieve/NEWS: Removed.
	* sieve/README: Removed.

	* sieve/Makefile.am: Pruned for the new implementation.
	* sieve/sieve.c: Use libsieve calls.

2002-11-13  Sergey Poznyakoff

	* include/mailutils/libsieve.h: (sieve_vprintf_t): Removed.
	  (sieve_parse_error_t): New data type.
	  (sieve_compile): Changed prototype declaration.
	  (sieve_get_data,sieve_get_message,sieve_get_message_num)
	  (sieve_get_debug_level,sieve_mailbox,sieve_disass)
	  (sieve_machine_init,sieve_machine_set_error)
	  (sieve_machine_set_parse_error): New functions.
	* libsieve/README: Replaced BNZ with BZ.
	* libsieve/actions.c (fileinto_args): Fileinto takes string,
	  not string-list.
	* libsieve/prog.c (sieve_code_command): Implemented implicit
	  typecast from string to string-list.
	* libsieve/require.c: Use sieve_compile_error() to report parse
	  errors.
	* libsieve/sieve.l: Likewise.
	* libsieve/util.c: Likewise.
	* libsieve/runtime.c: Verbose debugging.
	  (instr_branch, instr_brz): New functions.
	  (sieve_get_data,sieve_get_message,sieve_get_message_num)
	  (sieve_get_debug_level,sieve_disass,sieve_mailbox): New
	  functions
	* libsieve/sieve.h (sieve_op_t): New member `pc'.
	  (struct sieve_machine): New members: errbuf,mailbox,msgno,
	  msg,parse_error_printer.
	  (sieve_error,sieve_debug): Removed prototype.
	  (sieve_compile_error,instr_branch,instr_brz): New function.
	* libsieve/sieve.y: Implemented conditional blocks. The grammar
	  is complete.
	* libsieve/sv.c: Modified to reflect changes in the API.

2002-11-13  Sergey Poznyakoff

	* mail/util.c (util_do_command): Interpret empty line as "next"
	  command only when in interactive mode.

2002-11-12  Sergey Poznyakoff

	* libsieve/prog.c: New file. Code generator functions.
	* libsieve/runtime.c: New file. Runtime support.
	* libsieve/Makefile.am: Added prog.c and runtime.c.
	* include/mailutils/libsieve.h: Added basic code generation and
	  debugging (conditional blocks still not implemented).
	* libsieve/actions.c: Likewise.
	* libsieve/register.c: Likewise.
	* libsieve/sieve.h: Likewise.
	* libsieve/sieve.l: Likewise.
	* libsieve/sieve.y: Likewise.
	* libsieve/sv.c: Likewise.
	* libsieve/tests.c: Likewise.
	* libsieve/util.c: Likewise.

2002-11-08  Sergey Poznyakoff

	* include/mailutils/libsieve.h: New file.
	* include/mailutils/Makefile.am: Added libsieve.h
	* libsieve/sieve.h: Moved publicly available declarations to
	  <mailutils/libsieve.h>
	* libsieve/sieve.y: Fixed the grammar. Added union, types and the
	  basic actions.
	* libsieve/sieve.l: Likewise.
	* libsieve/Makefile.am: Added new files.
	* libsieve/util.c (sieve_slist_destroy, sieve_value_create): New
	  functions.
	* libsieve/tests.c: New file. Provides standard sieve tests (all
	  noops, so far).
	* libsieve/actions.c: New file. Provides standard sieve actions (all
	  noops, so far).
	* libsieve/require.c: New file. Handles "require" statement.
	* libsieve/register.c: New file. Contains the sieve namespace
	  functions.

2002-11-07  Sergey Poznyakoff

	* mailbox/stream.c: Fix memory leak. Patch provided by
	  Frederic Gobry <frederic.gobry@smartdata.ch>
	* mailbox/tcp.c: Likewise.

	* mail.local/mailquota.c: Fixed comment.
	* mail.local/main.c: Avoid unnecessary memory allocation.

	* libsieve/: New directory
	* libsieve/Makefile.am: New file.
	* libsieve/.cvsignore: New file.
	* libsieve/sieve.y: New file.
	* libsieve/sieve.l: New file.
	* libsieve/sieve.h: New file.
	* libsieve/util.c: New file.
	* libsieve/sv.c: New file.

	* sieve/ylwrap: Moved to ...
	* scripts/ylwrap:  ... here
	* scripts/Makefile.am: Added ylwrap
	* sieve/Makefile.am: Removed ylwrap

2002-11-07  Sergey Poznyakoff

	* mail/mail.h (msgset_member,msgset_negate): New functions.
	* mail/msgset.y: Added negation of message sets.
	  `from ! subject:/daily/' outputs all messages whose subject
	  does not contain the word 'daily'.
	* mail/z.c: Fixed behaviour of z. when the total number of
	  messages is less than the number of line per page of output.

2002-11-05  Sergey Poznyakoff

	* mail/reply.c: Add In-Reply-To and References headers to the
	  outgoing message.
	* mail/var.c (var_quote): Output prefix sequence before each line
	  of multiline headers.
	* mail/from.c (mail_from0): Function shared between from.c and
	  headers.c
	* mail/headers.c: Use mail_from0 to avoid spurious diagnostics
	  about deleted messages.
	* mail/msgset.y (yylex): allow for '-' in field names. Notice,
	  that if the dash means 'range' and the first message in the
	  range is not numeric, there should be whitespace between
	  them.
	* mail/util.c (util_get_message): Expanded semantics of the last
	  argument. It now contains flags that control how
	  util_get_message operates. Flags are a bitwise sum of the
	  following:
		MSG_ALL		Return any message (deleted or not)
		MSG_NODELETED	Do not return deleted messages.
		MSG_SILENT	Do not output warnings about deleted
				messages.
	* mail/mail.h (mail_from0): New function.
	  (MSG_ALL,MSG_NODELETED,MSG_SILENT): New macros.

	* mail/copy.c: Use MSG_.* macros in calls to util_get_message.
	* mail/delete.c: Likewise.
	* mail/followup.c: Likewise.
	* mail/hold.c: Likewise.
	* mail/mbox.c: Likewise.
	* mail/pipe.c: Likewise.
	* mail/print.c: Likewise.
	* mail/quit.c: Likewise.
	* mail/size.c: Likewise.
	* mail/top.c: Likewise.
	* mail/undelete.c: Likewise.
	* mail/write.c: Likewise.

	* mail/testsuite/mail/send.exp: Changed to reflect new reply behaviour.

	* include/mailutils/header.h: Added MU_HEADER_REFERENCES.
	* mail.local/main.c (make_tmp): Initialize auth to NULL.

2002-11-04  Sergey Poznyakoff

	* auth/virtual.c (mu_auth_virt_domain_by_name): Bugfix. Didn't
	  allocate enough storage for mailbox_name.

	* mh/mh_format.c (print_string): Pad right if necessary.
	* m4/enable.m4: Translate dot to underscore in variable names.
	* configure.ac: Use MU_ENABLE_SUPPORT for virtual-domains.
	* imap4d/testsuite/lib/imap4d.exp: Use ENABLE_VIRTUAL_DOMAINS
	* pop3d/testsuite/lib/pop3d.exp: Likewise.
	* mailbox/mu_argp.c: Likewise.
	* mailbox2/mutil.c: Likewise.

	* README: Documented new --disable options.
	* doc/texinfo/message.texi: correct the prototype of
	  message_is_multipart() (patch by Olivier Bornet).
	* examples/http.c: Removed include <sys/select.h>

	* pop3d/pop3d.c (main): Improved check for debugging mode.
	* imap4d/imap4d.c: Likewise.

	* pop3d/testsuite/Makefile.am: Added config to test_dirs.
	* imap4d/testsuite/Makefile.am: Likewise.

	* testsuite/lib/mailutils.exp (mailer_test): New procedure for
	  testing mailers.
	  (mu_init): New option -noflags skips the default initialization
	  of MU_TOOL_FLAGS.
	* mail.remote/testsuite/lib/mail.remote.exp: Invoke mu_init with
	  -noflags.
	* mail.remote/testsuite/lib/mail.remote.exp (mailer_remote_test):
	  Use mailer_test.

	* mail.local/mail.local.h (switch_user_id): Changed prototype
	  to honour mu_auth_data->change_uid member.
	* mail.local/main.c: Likewise.
	* mail.local/script.c: Likewise.

	* mail.remote/testsuite/mail.remote/send.exp: Broke long lines.

	Added testsuite framework for mail.local:

	* mail.local/Makefile.am: Added SUBDIRS.
	* mail.local/testsuite: New directory
	* mail.local/testsuite/Makefile.am: New file
	* mail.local/testsuite/.cvsignore: New file
	* mail.local/testsuite/Data: New file
	* mail.local/testsuite/lib: New directory
	* mail.local/testsuite/lib/mail.local.exp: New file
	* mail.local/testsuite/lib/DISTFILES: New file
	* mail.local/testsuite/mail.local: New directory
	* mail.local/testsuite/mail.local/deliver.exp: New file
	* mail.local/testsuite/mail.local/DISTFILES: New file

2002-11-04  Sergey Poznyakoff

	* examples/mta.c: include <mailutils/argp.h>
	* mailbox/getline.c: include <unistd.h> (for ssize_t)
	* mh/mh_fmtgram.y (cond production): added missing semicolon,
	  required by modern yaccs.
	* sieve/sieve-gram.y (sizetag production): Likewise.

2002-11-03  Sergey Poznyakoff

	* configure.ac: Added testsuite for mail.remote

	* examples/mta.c: New file. A "fake" MTA for testing "mail" and
	  "mail.remote"
	* examples/Makefile.am: Added mta.c
	* examples/.cvsignore: Likewise.

	* testsuite/etc/mail.rc: Added indentprefix.
	* mail/testsuite/mail/send.exp: New file. Test sending commands.
	* mail/testsuite/mail/DISTFILES: Added send.exp
	* mail/testsuite/Makefile.am: Add top_builddir to site.exp

	* mail.remote/testsuite: New directory.
	* mail.remote/Makefile.am: Added testsuite
	* mail.remote/testsuite/Makefile.am: New file.
	* mail.remote/testsuite/.cvsignore: New file.
	* mail.remote/testsuite/Data: New file. Data for testing mail.remote.
	* mail.remote/testsuite/lib: New directory
	* mail.remote/testsuite/lib/mail.remote.exp: New file.
	* mail.remote/testsuite/lib/DISTFILES: New file.
	* mail.remote/testsuite/mail.remote: New directory
	* mail.remote/testsuite/mail.remote/send.exp: New file.
	* mail.remote/testsuite/mail.remote/DISTFILES: New file.

	* mail.local/main.c: Fixed indentation.
	* mailbox/smtp.c: Likewise.
	  (smtp_address_add): New function. A wrapper around
	  address_union.
	  (_smtp_set_rcpt): Rewritten based on address_union call.
	* mail.remote/Makefile.am: Renamed some variables to avoid name
	  clashes.
	* mh/Makefile.am: Likewise.

	* mailbox/file_stream.c: Some applications (e.g. mail.remote)
	  implicitly rely on the possibility to seek on stdin streams.
	  To provide this functionality:
	  (struct _file_stream): Added cache member.
	  It is a memory stream used to provide seeking capability for
	  stdio streams.
	  (_file_destroy): Destroy cache if necessary.
	  (_stdin_file_read,_stdin_file_readline,_stdout_file_write): New
	  functions. Provide IO operations for stdio streams.
	  (stdio_stream_create): Register new IO functions.

	* testsuite/lib/mailutils.exp (mu_test_file): Minor fixes.

2002-11-01  Jeff Bailey  <jbailey@gnu.org>

	* mh/Makefile.am: Use MHPROGRAMS and MHLIBRARIES instead of
	MH_PROGRAMS and MH_LIBRARIES so that automake doesn't complain.

	* mail.remote/Makefile.am: Use SMTPPROGRAMS instead of
	SMTP_PROGRAMS so that automake doesn't complain.

	* configure.ac: Adjust for above changes.

	* mh/Makefile.am: Use AM_YFLAGS instead of YFLAGS.

	* libmu_scm/Makefile.am: Use AM_CPPFLAGS instead of CPPFLAGS

	* autogen.sh: Redo using 'autoreconf'.  This is now the right
	tool to use for generating the build environment.

	* Makefile.am: Require version 1.7.1, add std-options to
	AUTOMAKE_OPTIONS

	* configure.in: Require version 2.54.  Update quoting.  Change
	AC_ARG_WITH and AC_ARG_ENABLE to use AC_HELP_STRING

	* m4/enable.m4: Change AC_ARG_ENABLE to use AC_HELP_STRING

	* lib/Makefile.am: Remove ansi2knr

	* lib/ansi2knr.c: Remove

	* lib/ansi2knr.1: Remove

2002-11-01  Sergey Poznyakoff

	* m4/enable.m4: Fixed action-if-false.
	* Makefile.am: Restored to pre-2002-10-29 state.
	* configure.ac: Substitute MH_PROGRAMS, MH_LIBRARIES and
	  SMTP_PROGRAMS variables.
	* mh/Makefile.am: Build the targets conditionally.
	* mail.remote/Makefile.am: Likewise.

2002-10-29  Sergey Poznyakoff

	Following the proposition of Olivier Bornet
	<Olivier.Bornet@smartdata.ch>, added a possibility to
	disable the support for certain protocols.

	* m4/enable.m4: New file. Implements MU_ENABLE_SUPPORT defun.
	* m4/Makefile.am: Added enable.m4
	* configure.ac: New switches --disable-pop, --disable-imap
	  --disable-mh, --disable-smtp and --disable-sendmail allow
	  to disable corresponding protocols.
	* Makefile.am: Conditionally build directories depending on
	  protocols that may be disabled.
	* mailbox/mu_argp.c: Updated to reflect the set of ENABLE_
	  defines.
	* mailbox/folder_imap.c: Conditionally compile the contents.
	* mailbox/folder_mh.c: Likewise.
	* mailbox/folder_pop.c: Likewise.
	* mailbox/mbx_imap.c: Likewise.
	* mailbox/mbx_mh.c: Likewise.
	* mailbox/mbx_pop.c: Likewise.
	* mailbox/sendmail.c: Likewise.
	* mailbox/smtp.c: Likewise.
	* mailbox/url_imap.c: Likewise.
	* mailbox/url_mh.c: Likewise.
	* mailbox/url_pop.c: Likewise.
	* mailbox/url_sendmail.c: Likewise.
	* mailbox/url_smtp.c: Likewise.

	* sieve/sieve.c: Option -M none disables creating
	  the mailer.
	* sieve/testsuite/lib/sieve.exp: Start sieve with "-M none".

	Bugfixes to the docs, contributed by Olivier Bornet:

	* doc/texinfo/mailbox.texi: Documented the return code.
	* doc/texinfo/headers.texi: Fixed names of the macro-
	  definitions.

2002-10-15  Sergey Poznyakoff

	* guimb/scm/README: Updated.
	* mailbox/parse822.c (parse822_phrase): Allow for dots
	  in non-quoted personal phrase.
	* mailbox/testsuite/Addrs: New test: parse non-quoted
	  phrase containing dots.

2002-10-14  Alain Magloire

	* mailbox/getline.c: New LGPL implementation,
	With a patch for Sergey.
	* mailbox/getline.h: New LGPL implementation.

2002-10-14  Sergey Poznyakoff

	* configure.ac: Provide GUILE_BINDIR variable for Makefiles.
	* guimb/scm/Makefile.am: Likewise.
	* guimb/scm/reject.scm: Fixed Reporting-UA line.
	* guimb/scm/sieve-core.scm: Allow to be executed directly by
	  guile.
	* guimb/scm/sieve.scm.in: Cleaned up the source.
	* libmu_scm/Makefile.am: Use install-data-hook to create the
	  libguile-mailutils symlink.
	* libmu_scm/mu_scm.c (mu-path-maildir, mu-path-folder-dir): New
	  globals.
	* libmu_scm/mailutils.scm.in: Export new globals.

2002-10-13  Sergey Poznyakoff

	* guimb/scm/sieve-core.scm: Changed sieve-register-.* functions
	  to allow for actions to accept tags.
	  (sieve-get-opt-arg): New function. Returns the argument to a
	  given tag.
	* guimb/scm/sieve.scm.in: Use new sieve-register style.
	  (sieve-preprocess-arguments): New function. Preprocess
	  and group arguments into optional and positional types.
	  (sieve-parse-arguments): New function. Parses arguments
	  to an action or a test.
	  (sieve-register-action,sieve-register-test): Rewritten.
	* guimb/scm/mimeheader.scm: Updated to use new register style
	* guimb/scm/numaddr.scm: Likewise.
	* guimb/scm/redirect.scm: Likewise.
	* guimb/scm/reject.scm: Likewise.

	* guimb/scm/vacation.scm: New file. Implements "vacation"
 	  extension.
	* guimb/scm/Makefile.am: Added vacation.scm

	* libmu_scm/mu_message.c (mu_message_set_header): Bugfix.
	* libmu_scm/mu_scm.c (_mu_scm_package_string, in scheme
	  mu-package-string): New global.

	* mail/eq.c: Allow a single argument as an extension to the
	  standard '=' command. The effect is to move the current
	  pointer to the given message.

	* mail/util.c (util_error_range): New function. Outputs "message
	  out of range" diagnostics.
	  (util_get_message): New function. A wrapper around
	  mailbox_get_message with the proper diagnostics.
	* mail/mail.h: Likewise.

	* mail/copy.c: Use util_get_message()
	* mail/delete.c: Likewise.
	* mail/followup.c: Likewise.
	* mail/from.c: Likewise.
	* mail/hold.c: Likewise.
	* mail/mbox.c: Likewise.
	* mail/pipe.c: Likewise.
	* mail/print.c: Likewise.
	* mail/quit.c: Likewise.
	* mail/reply.c: Likewise.
	* mail/size.c: Likewise.
	* mail/top.c: Likewise.
	* mail/undelete.c: Likewise.
	* mail/var.c: Likewise.
	* mail/write.c: Likewise.
	* mail/decode.c: Updated util_isdeleted() invocation.

	* mail.local/Makefile.am: Added /mailbox to INCLUDES
	* lib/getline.h: Removed.
	* mailbox/Makefile.am: Added /mailbox to INCLUDES

2002-10-02  Sergey Poznyakoff

	* configure.ac: Check if environ is declared.
	* mail/setenv.c: Protect the declaration of environ by #if.
	* mail/send.c (mail_send): Set save_to right after entering
	  the function.
	  (mail_send0): deduce savefile basing on the localpart of
	  the first address (when save_to is set).
	  Expand aliases in every address-related header.
	* mail/alias.c (alias_expand): Return NULL if no suitable
	  expansion was found.
	* mail/followup.c: Removed unneeded typecasts.
	* mail/mailline.c: Likewise.
	* mail/shell.c: Likewise.
	* mail/util.c (util_header_expand): New function. Expand
	  the address-related fields of a header.
	* mail/mail.h: Likewise.

	* mail.local/mail.local.h: Added missing includes.
	* pop3d/popauth.c: Likewise.

2002-10-02  Sergey Poznyakoff

	* mailbox/address.c (_address_get_nth): Get nth sub-address
	  from an address.
	  (most of the functions): Rewritten using _address_get_nth
	  (address_aget_personal, address_aget_comments): new functions.
	  (address_dup): New function. Create a copy of a (single)
	  address.
	  (address_contains_email): New function. Check if the given email
	  is contained in the address.
	  (address_union): New function. Create a union of two addresses.
	* include/mailutils/address.h (address_contains_email,
	  address_union): new functions.

	* mail/setenv.c: New file. Implements `setenv' command: an
	  extension allowing to manipulate the shell environment.
	* mail/table.c: Added setenv command.
	* mail/Makefile.am: Added setenv.c
	* mail/decode.c: Use util_get_crt() to check the value of
	  the crt variable.
	* mail/print.c: Likewise.
	* mail/mail.h (mail_setenv, util_get_crt, util_merge_addresses):
	  New functions.
	* mail/reply.c (mail_reply): Bugfix.
	* mail/send.c (compose_header_set): COMPOSE_SINGLE_LINE part
	  rewritten.
	* mail/util.c (util_get_crt): Return the value of the "crt"
	  variable. The variable may be either boolean or numeric,
	  meaning the minimum number of lines the body of the message
	  must contain in order to be put through the pager.
	  (util_merge_addresses): Add new address to the comma-separated
	  address list, unless it is already present there.
	* mail/var.c (dump_headers): Do not print extra newline after
	  the headers.
	* doc/texinfo/programs.texi: Documented crt variable
	  and setenv command.

2002-10-01  Sergey Poznyakoff

	* guimb/scm/sieve-core.scm: Added :regex tag -- an
	  extension allowing to use POSIX regexp in address
	  and header tests.
	* mh/repl.c: New file. A framework for the `repl' program.
	* mh/Makefile.am: Added repl
	* mh/.cvsignore: Likewise.

2002-09-30  Sergey Poznyakoff

	* configure.ac: Changed check for CURSES_LIBS
	* mh/Makefile.am (scan_LDADD): Use CURSES_LIBS instead of
	  directly linking -lcurses

2002-09-27  Sergey Poznyakoff

	* mh/mh_format.c (strobj_len,print_string): Extra safety not to
	  dereference NULL pointer.
	  (_parse_date): Use local time if the date cannot be parsed.
	* mh/refile.c: Implemented --draft and --file switches.

2002-09-27  Sergey Poznyakoff

	* mail/file.c: Fixed typo.
	* mh/folder.c (main): Correctly set current message number.
	* mh/inc.c: Do not use current_folder global.
	* mh/mh.h (mh_msgset_reverse,mh_msgset_negate,mh_msgset_current,
	  mh_msgset_free): new functions.
	  (mh_context_get_value,mh_msgset_parse): Changed.

	* mh/mh_ctx.c: Descriptive comment regarding the allocation
	  of the return values.
	* mh/mh_msgset.c (mh_msgset_reverse,mh_msgset_negate,
	  mh_msgset_current, mh_msgset_free): new functions.
	  Added comments.
	* mh/mhpath.c: Minor fixes.
	* mh/refile.c: Use new mh_msgset_parse() syntax.
	* mh/rmm.c: Fixed args_doc string. Use new mh_msgset_parse()
	  syntax.
	* mh/scan.c: Use mh_iterate(). Accept message specifications
	  from the command line.
	* mh/mh_format.c (mh_format_dump): Bugfix: missed break;

2002-09-26  Sergey Poznyakoff

	* mail/mail.h (struct compose_env): Changed structure. Renamed
	  to compose_env_t.
	  (compose_init, compose_header_set, compose_header_get,
	   compose_destroy): New functions.

	* mail/send.c: Likewise. Use new compose functions.
	* mail/followup.c: Use new compose functions.
	* mail/reply.c: Likewise.
	* mail/util.c (util_msglist_esccmd): Declaration updated.

	* mail/var.c: Implemented "editheaders" variable.
	* doc/texinfo/programs.texi: Documented "editheaders" variable.
	* mh/Makefile.am (install-exec-hook): Remove "folders" before
	  linking "folder" to it.

2002-09-25  Sergey Poznyakoff

	* mailbox/mutil.c: Fixed typo in #if directive.
	* mailbox/parse822.c (const char *days): Bugfix. "Sun" must
	  be the first entry in the array.
	* mh/fmtcheck.c: New file. Source for fmtcheck command. It is
	  planned as a replacement for fmtdump, providing a broader
	  set of options for debugging user formats. Currently only
	  dump (listing) mode is implemented.
	* mh/mh_format.c (mh_format_dump): New function. Produces the
	  listing of compiled format code.
	  (builtin_me, builtin_profile, builtin_putstr, print_string,
	   builtin_putnum, builtin_putnumf, builtin_tws,
	   builtin_pretty): Implemented.
	  (builtin_pers): Enclose the return in a pair of double-quotes.
	* mh/mh_init.c (mh_my_email): New function.
	* mh/mh.h (mh_format_dump, mh_my_email): New function.
	* mh/Makefile.am: Added fmtcheck

2002-09-24  Sergey Poznyakoff

	* mail/mail.c (mail_cmdline): removed unnecessary conditional.
	* mail/send.c (mail_send0): Bugfix. A dot ends the message
	  only if it is the only character on the line. Thanks
	  to Thomas Esser <te@dbs.uni-hannover.de> for noticing.
	* mail/util.c (util_save_outgoing): Removed extra newline
	  at the end of the envelope `from' line.

	* mh/folder.c: Fixed scanning of folders and output.
	* mh/mh.h: Changed mh_opcode_t type.
	* mh/mh_fmtgram.y: Stricter typing of productions. The cntl
	  production allows for empty lists (e.g. %<{reply-to}%?{from}%>).
	  Enable debugging when MHFORMAT_DEBUG environment variable is
	  set.
	  (yylex): Skip whitespace after the function name.
	  (branch_fixup): The produced jump offset was wrong. Fixed.
	  (mh_code_builtin): Fixed passing of escape arguments.
	* mh/mh_format.c (strobj_is_null,strobj_realloc): New function.
	  (print_string): Accept an explicit width argument.
	  (print_obj): New function.
	  (mh_format): Use the new functions.
	  (builtin_lit): Fixed.
	  (builtin_formataddr,builtin_putaddr): Implemented.

2002-09-22  Sergey Poznyakoff

	* mh/mh_argp.c (mh_argp_parse): Complain about non-processed
	  arguments unless "index" is non-null.
	* mh/folder.c: Implemented -header. Several fixes.
	* mh/rmf.c: New file. Implements rmf command.
	* mh/Makefile.am: Added rmf. Added install hook to link 'folder'
	  to 'folders'
	* mh/.cvsignore: Added rmf.

2002-09-21  Sergey Poznyakoff

	* mailbox/header.c (header_parse): Bugfix: do not
	  bail out if len==0.
	* mailbox/mbx_mh.c (mh_append_message): Scan the
	  mailbox if it has not been scanned yet.
	* mh/mh_global.c: New file. Global configuration
	  functions.
	* mh/folder.c: New file. Implementation of the folder
	  command.
	* mh/mh.h: New prototypes.
	* mh/inc.c (opt_handler): Use is_true().
	* mh/refile.c: Likewise.
	* mh/mh_argp.c: Use new configuration functions.
	* mh/mh_init.c: Likewise.
	* mh/scan.c: Likewise.

	* mh/Makefile.am: Added folder.c and mh_global.c
	* mh/.cvsignore: Added folder.
	* frm/frm.c: Fixed indentation.

2002-09-19  Sergey Poznyakoff

	* mh/mhpath.c: New file. Source for mhpath command.
	* mh/Makefile.am: Added mhpath.
	* mh/.cvsignore: Likewise.
	* mh/mh_msgset.c (msgset_preproc): Expand the second part
	  of the message spec as well (the one after dash).
	  (mh_msgset_parse): Fill message set with message ordinal
	  numbers.
	  (mh_search_message): Binary search for a message with the
	  given sequence number.
	  (mh_get_message): Retrieve the message with the given sequence
	  number.
	* mh/mh.h (mh_get_message): New prototype.
	* mh/mh_init.c (mh_iterate): Rewritten to expect msgset to
	  contain message ordinal numbers.

2002-09-19  Sergey Poznyakoff

	* mailbox/mbx_mh.c (_mh_message_save): Take into account
	  trailing newline returned by envelope_date (should it
	  be returned, by the by?)
	  Output a newline to separate the headers from the body.
	  (mh_envelope_date): Make sure the returned value is
	  terminated with a '\n' character (if the buffer space
	  permits).
	* mh/inc.c (main): Use mh_open_folder.
	* mh/mh.h (mh_init2, mh_is_my_name, mh_iterate): Added prototypes.
	  (mh_open_folder, mh_expand_name): Changed prototypes.
	* mh/mh_init.c (mh_init2): Fixed generation of the sequence file
	  name.
	  (mh_open_folder): Take an extra argument: a flag specifying
	  whether the folder should be created.
	  (mh_expand_name): Changed return data type.
	* mh/mh_msgset.c (mh_msgset_parse): Sort the message set and
	  remove any duplicates from it.
	* mh/refile.c: Initial implementation.
	* mh/rmm.c: Updated mh_open_folder invocations.
	* mh/scan.c: Likewise.
	* mh/.cvsignore: Updated.

2002-09-18  Sergey Poznyakoff

	* mailbox/mailbox.c: Include message.h
	* mailbox/mbx_default.c (mu_path_folder_dir): New global. Holds
	  the name of the user's folder directory.
	* include/mailutils/mailbox.h: Likewise
	* mailbox/mbx_mh.c: Preserve the envelope information in the
	  message header.
	* libmu_scm/mu_guimb.c (_scheme_main): Removed unused variable.

	* mh/mh_ctx.c: New file. Context-related functions.
	* mh/mh_msgset.c: New file. Mh-specific message sets.
	* mh/refile.c: New file. The framework for the refile command.
	* mh/Makefile.am: Added new programs.
	* mh/mh.h (mh_builtin_fp, mh_msgset_t): New types.
	  Added new prototypes.
	* mh/mh_argp.c (struct mh_argp_data): New member `doc'. Keeps the
	  documentation string.
	  (parse_opt): Pass the data->doc member to mh_getopt.
	  (mh_argp_parse): Initialize data.doc.
	* mh/mh_getopt.c (mh_getopt, mh_help): Accept new argument:
	  a pointer to the doc string.
	* mh/mh_getopt.h: Likewise.
	* mh/mh_init.c: Changed handling of MH profiles.
	  (mh_open_folder, mh_get_dir, mh_expand_name, mh_iterate): New
	  functions

	* mh/rmm.c: Use new mh functions.
	* mh/scan.c: Likewise.

2002-09-17  Sergey Poznyakoff

	* m4/gssapi.m4: Removed unused variable

	* mh/rmm.c: New file. Source for rmm program.
	* mh/Makefile.am: Added rmm.c
	* mh/mh.h (mh_open_folder): new function.

	* mh/mh_init.c: Split mh_init() in two. The second part,
	  mh_init2(), gets called after parsing the arguments.
	  (mh_open_folder): New function. Open current folder.

	* mh/mh_format.c (mh_format): Bugfix (NULL pointer dereference).
	* mh/mh_argp.c (mh_argp_parse): Increased number of arguments.
	  The last argument points to a location where to store the
	  ordinal number of the first non-option argument (can be NULL).
	  Call mh_init2() after parsing.
	* mh/mh_getopt.h (mh_argp_parse): Updated declaration.
	* mh/inc.c (main): Updated invocation of mh_argp_parse.
	* mh/scan.c: Likewise.

2002-09-12  Sergey Poznyakoff

	In order to make libmailutils self-contained, shuffled several
	files from lib/ to mailutils/.

	Added standalone guile module.

	* m4/mu_libobj.m4: New file. mu-specific version of
	  AC_LIBOBJS.
	* m4/Makefile.am: Added mu_libobj.m4

	* configure.ac: Use MU_LIBOBJS on functions needed for
	  libmailbox.
	  Add mailutils.scm to GUILE_PKGDATA.

	* libmu_scm/Makefile.am: Install libmu_scm. Added new rule
	  for building guile standalone mailutils module -- mailutils.scm
	* libmu_scm/.cvsignore: Updated.
	* libmu_scm/mu_scm.c (mu-register-format): New
	  primitive. Registers desired mailbox/mailer formats.
	  (mu_scm_init): Unconditionally register path_record format.
	* libmu_scm/mailutils.scm.in: Source for mailutils.scm -- a module
	  interface file for mailutils.
	* libmu_scm/.cvsignore: Updated
	* guimb/Makefile.am: Load libmu_scm.la

	* lib/Makefile.am: Removed argp-related stuff.
	* lib/strndup.c: Moved to mailbox/
	* lib/strtok_r.c: Likewise.
	* lib/strnlen.c: Likewise.
	* lib/getline.c: Likewise.
	* lib/strchrnul.c: Likewise.
	* lib/argp-ba.c: Likewise.
	* lib/argp-eexst.c: Likewise.
	* lib/argp-fmtstream.c: Likewise.
	* lib/argp-fs-xinl.c: Likewise.
	* lib/argp-help.c: Likewise.
	* lib/argp-parse.c: Likewise.
	* lib/argp-pv.c: Likewise.
	* lib/argp-pvh.c: Likewise.
	* lib/argp-xinl.c: Likewise.
	* lib/argcv.c: Likewise.
	* lib/argp-fmtstream.h: Likewise.
	* lib/argp-namefrob.h: Likewise.
	* lib/getopt.h: Likewise.

	* mailbox/Makefile.am: Added argp-related stuff.
	* mailbox/strndup.c: Moved from lib/
	* mailbox/strtok_r.c: Likewise.
	* mailbox/strnlen.c: Likewise.
	* mailbox/getline.c: Likewise.
	* mailbox/strchrnul.c: Likewise.
	* mailbox/argp-ba.c: Likewise.
	* mailbox/argp-eexst.c: Likewise.
	* mailbox/argp-fmtstream.c: Likewise.
	* mailbox/argp-fs-xinl.c: Likewise.
	* mailbox/argp-help.c: Likewise.
	* mailbox/argp-parse.c: Likewise.
	* mailbox/argp-pv.c: Likewise.
	* mailbox/argp-pvh.c: Likewise.
	* mailbox/argp-xinl.c: Likewise.
	* mailbox/argcv.c: Likewise.
	* mailbox/argp-fmtstream.h: Likewise.
	* mailbox/argp-namefrob.h: Likewise.
	* mailbox/getopt.h: Likewise.

	* include/mailutils/gnu/: New directory. Holds GNU headers that
	  might be missing on the system, but are necessary for mailutils.
	* include/mailutils/Makefile.am: Added gnu to SUBDIRS.
	* include/mailutils/gnu/Makefile.am: New file.
	* include/mailutils/gnu/.cvsignore: New file.
	* lib/argp.h: Moved to ...
	* include/mailutils/gnu/argp.h: ... here
	* lib/argcv.h: Moved to ...
	* include/mailutils/argcv.h: ... here
	* include/mailutils/argp.h: Conditionally include <gnu/argp.h>

	* mailbox/mu_argp.c: Changed license to Lesser GPL
	* mailbox/mu_auth.c: Likewise.
	* mailbox/system.c: Likewise.

	* auth/pam.c: Likewise
	* auth/sql.c: Likewise
	* auth/virtual.c: Likewise

	* comsat/cfg.c: Removed include <argcv.h>
	* comsat/comsat.h: Include mailutils/argcv.h
	* sieve/sieve.c: Likewise.
	* imap4d/fetch.c: Likewise.
	* mail/mail.h: Likewise.
	* mailbox/argcv.c: Likewise.
	* mh/mh_argp.c: Likewise.
	* dotlock/dotlock.c: Include mailutils/argp.h
	* mh/mh_getopt.h: Likewise.
	* mailbox/Makefile.am: Fixed INCLUDES
	* mh/mh.h: Removed include <argp.h>
	* mh/mh_error.c: Likewise.
	* mailbox/mu_argp.c: Removed include <xalloc.h>

2002-09-10  Sergey Poznyakoff

	Added support for Guile 1.6.0:

	* configure.ac: Changed check for guile. Raised patchlevel to
	  0.1.1
	* m4/guile.m4: New file. Check for guile presence and usability.
	  Determine its version.
	* m4/Makefile.am: Add guile.m4

	* scripts/Makefile.am: Updated
	* scripts/guile-1.4: New directory. Contains scripts for use
	  with guile 1.4.x
	* scripts/guile-1.6: New directory. Contains scripts for use
	  with guile 1.6 and hopefully higher.
	* scripts/guile-1.4/Makefile.am: New file.
	* scripts/guile-doc-snarf: Moved to ...
	* scripts/guile-1.4/guile-doc-snarf: ... here
	* scripts/guile-func-name-check: Moved to ...
	* scripts/guile-1.4/guile-func-name-check: ... here
	* scripts/guile-snarf.awk: Moved to ...
	* scripts/guile-1.4/guile-snarf.awk: ... here

	* scripts/guile-1.6/Makefile.am: New file.
	* scripts/guile-1.6/guile-doc-snarf: New file.
	* scripts/guile-1.6/guile-doc-snarf.awk: New file.

	* guimb/Makefile.am: Added @GUILE_INCLUDES@ and @GUILE_LIBS@.
	* libmu_scm/Makefile.am: Added @GUILE_INCLUDES@. Changed
	  snarfing rules.
	* mail.local/Makefile.am: Added @GUILE_INCLUDES@ and @GUILE_LIBS@.
	* guimb/scm/sieve.scm.in: string->obarray-symbol is deprecated
	  in 1.6.0. Use another approach.

	* libmu_scm/mu_address.c: Upgrade to guile 1.6.0
	* libmu_scm/mu_body.c: Likewise.
	* libmu_scm/mu_guimb.c: Likewise.
	* libmu_scm/mu_logger.c: Likewise.
	* libmu_scm/mu_mailbox.c: Likewise.
	* libmu_scm/mu_message.c: Likewise.
	* libmu_scm/mu_scm.c: Likewise.
	* libmu_scm/mu_scm.h: Likewise.

	* auth/sql.c (mu_sql_authenticate): Removed unused variable.

2002-09-05  Sergey Poznyakoff

	* mailbox/mbx_mh.c: Rewritten to use MH sequence numbers
	  as UIDs. This allows to simplify the code and to get rid
	  of mh_message_number(), which didn't fit well in the
	  mailutils framework.
	* mh/mh.h: Changed type of `prog' to mh_instr_t, which is
	  a union of all objects that can be held in a program text
	  cell. This fixes potential problems due to sizeof(int)!=
	  sizeof(void*).
	* mh/mh_fmtgram.y: Likewise.
	* mh/mh_format.c: Likewise.
	* mh/mh_init.c (mh_message_number): A wrapper around
	  message_get_uid call. Returns the sequence number of
	  the message.

2002-09-04  Sergey Poznyakoff

	* README: Verbose description of --with-mail-spool configuration
	  option. Spell-checked the file.

	* examples/http.c: New file. Example of stream functions.
	* examples/Makefile.am: Added http.c
	* doc/texinfo/Makefile.am: Added http.c.texi.
	* doc/texinfo/.cvsignore: Likewise.
	* doc/texinfo/stream.texi: Include http.c.texi.

2002-09-03  Sergey Poznyakoff

	* mailbox/md5-rsa.c: Removed.
	* mailbox/md5-rsa.h: Removed.
	* mailbox/md5.c: Introduced instead.
	* mailbox/md5.h: Likewise.
	* mailbox/Makefile.am: Use md5.[ch]
	* mailbox/message.c: Likewise.
	* mailbox/mbx_pop.c: Likewise.
	  (pop_get_message): Bugfix: check that the message number be not
	  out of range.

	* doc/texinfo/framework.texi: Included parse822 as extra node.

2002-09-03  Sergey Poznyakoff

	* configure.ac: Bumped version number to 0.1
	* Makefile.am: Added copyleft header. Removed README-alpha from
	  EXTRA_DIST and added it to AUTOMAKE_OPTIONS. Removed incomplete
	  mh.
	* auth/Makefile.am: Added copyleft header.
	* comsat/Makefile.am: Likewise
	* doc/Makefile.am: Likewise
	* doc/man/Makefile.am: Likewise
	* doc/rfc/Makefile.am: Likewise
	* doc/texinfo/Makefile.am: Likewise
	* dotlock/Makefile.am: Likewise
	* examples/Makefile.am: Likewise
	* frm/Makefile.am: Likewise
	* frm/testsuite/Makefile.am: Likewise
	* from/Makefile.am: Likewise
	* from/testsuite/Makefile.am: Likewise
	* guimb/Makefile.am: Likewise
	* guimb/scm/Makefile.am: Likewise
	* imap4d/Makefile.am: Likewise
	* imap4d/testsuite/Makefile.am: Likewise
	* include/Makefile.am: Likewise
	* include/mailutils/Makefile.am: Likewise
	* lib/Makefile.am: Likewise
	* lib/posix/Makefile.am: Likewise
	* libmu_scm/Makefile.am: Likewise
	* m4/Makefile.am: Likewise
	* mail/Makefile.am: Likewise
	* mail/testsuite/Makefile.am: Likewise
	* mail.local/Makefile.am: Likewise
	* mail.remote/Makefile.am: Likewise
	* mailbox/Makefile.am: Likewise
	* mailbox/include/Makefile.am: Likewise
	* mailbox/testsuite/Makefile.am: Likewise
	* mapi/Makefile.am: Likewise
	* messages/Makefile.am: Likewise
	* messages/testsuite/Makefile.am: Likewise
	* mh/Makefile.am: Likewise
	* pop3d/Makefile.am: Likewise
	* pop3d/testsuite/Makefile.am: Likewise
	* readmsg/Makefile.am: Likewise
	* readmsg/testsuite/Makefile.am: Likewise
	* scripts/Makefile.am: Likewise
	* sieve/testsuite/Makefile.am: Likewise
	* testsuite/Makefile.am: Likewise

	* doc/texinfo/mailutils.texi: Commented out inclusion of
	  c-api.texi
	* examples/url-parse.c: Indent output with explicit \t.
	* mailbox/testsuite/Urls: Add comment regarding the use of tabs.

	* sieve/md5-rsa.h: Removed.
	* sieve/md5-rsa.c: Removed.
	* sieve/Makefile.am: Added copyleft header. Removed
	  RSA-copyrighted code, use lib/md5 instead.
	* sieve/script.c: Use FSF md5 functions.

2002-09-02  Sergey Poznyakoff

	* NEWS: Updated.
	* README: Updated.
	* TODO: Updated.
	* doc/texinfo/mailer.texi: Removed confusing note: yes, one
	  always has to give -t to sendmail to force it to get recipient
	  addresses from the headers.
	* doc/texinfo/mailutils.texi: Commented out references to
	  mailbox2 stuff.
	* examples/addr.c: Untabified. Needed for proper conversion to
	  *.texi
	* examples/mimetest.c: Likewise.
	* examples/msg-send.c: Likewise.
	* examples/muemail.c: Likewise.
	* examples/sfrom.c: Likewise.
	* examples/url-parse.c: Likewise.

2002-09-02  Sergey Poznyakoff

	* comsat/comsat.c: Removed erroneous redeclaration of
	  getutent.
	* doc/texinfo/c-api.texi: Removed reference to non-implemented
	  NNTP.
	* doc/texinfo/programs.texi: Documented sieve.

	* guimb/scm/sieve.scm: Removed.
	* guimb/scm/sieve.scm.in: Added to the repository.
	* guimb/scm/Makefile.am: Make sieve.scm from sieve.scm.in
	* guimb/scm/.cvsignore: Added sieve.scm
	* guimb/scm/sieve-core.scm (sieve-expand-filename): Fixed syntax error.

	* mailbox/mutil.c (mu_tempname): New function. Creates a unique
	  temporary file name in tmpdir.
	* include/mailutils/mutil.h: Likewise.
	* mail/edit.c: Use mu_tempname
	* mail/visual.c: Likewise.
	* examples/mimetest.c: Likewise.

	* testsuite/lib/mailutils.exp: Couple of fixes.
	* sieve/testsuite/sieve/DISTFILES: Temporarily removed compile.exp:
	  it uses files not included in the distribution.

2002-08-29  Sergey Poznyakoff

	* Makefile.am: Added examples/ to SUBDIRS.
	* configure.ac: Build mailbox/testsuite/Makefile and
	  examples/Makefile
	* doc/texinfo/Makefile.am: Rules to generate examples .texi
	  from sources in ../examples.
	* doc/texinfo/address.texi: include address.c.texi
	* doc/texinfo/url.texi: include url-parse.c.texi

	* doc/texinfo/ex-address.texi: Removed. Auto-generated file.
	* doc/texinfo/ex-url.texi: Likewise.
	* doc/texinfo/sfrom.c.texi: Likewise.
	* doc/texinfo/.cvsignore: Added autogenerated files.

	* examples/Makefile: Removed.
	* examples/Addrs: Removed. Incorporated into mailbox/testsuite.
	* examples/Addrs.good: Likewise.
	* examples/Urls: Likewise.
	* examples/Urls.good: Likewise.
	* examples/mail.MysqlMailer.c: Removed obsolete file. mail.local
	  provides the same functionality.
	* examples/mbox-check.c: Removed.
	* examples/mbox-dates.c: Removed.
	* examples/mbox-explode.c: Removed.

	* examples/Makefile.am: New file.
	* examples/sfrom.c: New file.
	* examples/addr.c: Added copyleft header. Set user email domain
	  to localhost on startup.
	* examples/mimetest.c: Added copyleft header. Changed output
	  format to better suit testing.
	* examples/msg-send.c: Added copyleft header. Reindented.
	* examples/muemail.c: Likewise.
	* examples/url-parse.c: Likewise.

	* guimb/scm/sieve-core.scm (sieve-expand-filename): Do not attempt
	  to expand meta-characters understood by mailbox_create_default.

	* lib/argp-help.c: Define __P() if necessary.
	* mail/copy.c (mail_copy0): Make sure we really got the message.
	* mail/next.c (mail_next): Do not allow the cursor to grow past
	  total number of messages.
	* mailbox/locker.c: Provide definition for MAXHOSTNAMELEN, if
	  necessary.

	* testsuite/lib/mailutils.exp (mu_version): Check if MU_CAPABILITY
	  exists. One never knows...
	  (mu_command): Additional diagnostics
	  (mu_expect_list,mu_test): Commented out extra checks.

	* mailbox/Makefile.am: Added testsuite
	* mailbox/testsuite: New directory.
	* mailbox/testsuite/Makefile.am: New file.
	* mailbox/testsuite/.cvsignore: New file.
	* mailbox/testsuite/Addrs: New file.
	* mailbox/testsuite/Mime: New file.
	* mailbox/testsuite/Urls: New file.
	* mailbox/testsuite/lib: New directory.
	* mailbox/testsuite/lib/DISTFILES: New file.
	* mailbox/testsuite/lib/mailbox.exp: New file.
	* mailbox/testsuite/mailbox: New directory.
	* mailbox/testsuite/mailbox/DISTFILES: New file.
	* mailbox/testsuite/mailbox/address.exp: New file.
	* mailbox/testsuite/mailbox/mime.exp: New file.
	* mailbox/testsuite/mailbox/url.exp: New file.

2002-08-28  Sergey Poznyakoff

	* sieve/interp.c (sieve_interp_alloc): Fill allocated memory
	  with zeroes.
	* sieve/svcb.c: Implemented envelope test (see comment, though)
	* sieve/sieve-gram.y: Include "sieve.h"
	* sieve/sieve-lex.l: Handle C-style comments.
	* sieve/sieve.c: Handle --license option. Additional debugging
	  flags: 'a' to produce address parser traces, 'g' to produce
	  main parser traces.
	* sieve/sieve_interface.h (addrdebug, yydebug): external
	  declarations.

	* include/mailutils/argp.h (mu_license_text): External
	  declaration.
	* mailbox/mu_argp.c (mu_license_text): removed static
	  qualifier.

	* configure.ac: Added testsuite for sieve. Changed version number
	  to 0.0.9e.
	* sieve/Makefile.am: Likewise

	* sieve/testsuite: New directory.
	* sieve/testsuite/Makefile.am: New file.
	* sieve/testsuite/.cvsignore: New file.
	* sieve/testsuite/lib: New directory.
	* sieve/testsuite/lib/DISTFILES: New file.
	* sieve/testsuite/lib/sieve.exp: New file.
	* sieve/testsuite/scripts: New directory.
	* sieve/testsuite/scripts/DISTFILES: New file.
	* sieve/testsuite/scripts/addr_is_all.sv: New file.
	* sieve/testsuite/scripts/addr_is_domain.sv: New file.
	* sieve/testsuite/scripts/addr_is_local.sv: New file.
	* sieve/testsuite/scripts/addr_matches.sv: New file.
	* sieve/testsuite/scripts/address.sv: New file.
	* sieve/testsuite/scripts/allof00.sv: New file.
	* sieve/testsuite/scripts/allof01.sv: New file.
	* sieve/testsuite/scripts/allof11.sv: New file.
	* sieve/testsuite/scripts/anyof00.sv: New file.
	* sieve/testsuite/scripts/anyof01.sv: New file.
	* sieve/testsuite/scripts/anyof11.sv: New file.
	* sieve/testsuite/scripts/discard.sv: New file.
	* sieve/testsuite/scripts/envelope1.sv: New file.
	* sieve/testsuite/scripts/exists1.sv: New file.
	* sieve/testsuite/scripts/exists2.sv: New file.
	* sieve/testsuite/scripts/exists3.sv: New file.
	* sieve/testsuite/scripts/false.sv: New file.
	* sieve/testsuite/scripts/fileinto.sv: New file.
	* sieve/testsuite/scripts/header1.sv: New file.
	* sieve/testsuite/scripts/header2.sv: New file.
	* sieve/testsuite/scripts/header3.sv: New file.
	* sieve/testsuite/scripts/keep.sv: New file.
	* sieve/testsuite/scripts/not.sv: New file.
	* sieve/testsuite/scripts/null.sv: New file.
	* sieve/testsuite/scripts/size1.sv: New file.
	* sieve/testsuite/scripts/size2.sv: New file.
	* sieve/testsuite/scripts/stop.sv: New file.
	* sieve/testsuite/scripts/true.sv: New file.

	* sieve/testsuite/sieve: New directory.
	* sieve/testsuite/sieve/DISTFILES: New file.
	* sieve/testsuite/sieve/action.exp: New file.
	* sieve/testsuite/sieve/address.exp: New file.
	* sieve/testsuite/sieve/allof.exp: New file.
	* sieve/testsuite/sieve/anyof.exp: New file.
	* sieve/testsuite/sieve/compile.exp: New file.
	* sieve/testsuite/sieve/envelope.exp: New file.
	* sieve/testsuite/sieve/exists.exp: New file.
	* sieve/testsuite/sieve/false.exp: New file.
	* sieve/testsuite/sieve/header.exp: New file.
	* sieve/testsuite/sieve/not.exp: New file.
	* sieve/testsuite/sieve/size.exp: New file.
	* sieve/testsuite/sieve/true.exp: New file.

	* testsuite/lib/mailutils.exp (mu_exec): added -arg-list option.
	* testsuite/spool/sieve.mbox: New file. Mailbox for testing sieve.
	* testsuite/spool/DISTFILES: Added sieve.mbox
	* imap4d/testsuite/imap4d/list.exp: Updated to match new spooldir
	  contents.

2002-08-27  Sergey Poznyakoff

	* frm/frm.c: Fixed return status when the mailbox does not exist.
	* frm/Makefile.am: Added testsuite
	* frm/testsuite: new directory.
	* frm/testsuite/Makefile.am: new file.
	* frm/testsuite/.cvsignore: new file.
	* frm/testsuite/frm: new directory.
	* frm/testsuite/frm/DISTFILES: new file.
	* frm/testsuite/frm/test.exp: new file.

	* from/Makefile.am: Added testsuite
	* from/testsuite: new directory.
	* from/testsuite/Makefile.am: new file.
	* from/testsuite/.cvsignore: new file.
	* from/testsuite/from: new directory.
	* from/testsuite/from/DISTFILES: new file.
	* from/testsuite/from/test.exp: new file.

	* messages/messages.c: Added "mailbox" command line capability.
	* messages/Makefile.am: Added testsuite
	* messages/testsuite: new directory.
	* messages/testsuite/Makefile.am: new file.
	* messages/testsuite/.cvsignore: new file.
	* messages/testsuite/messages: new directory.
	* messages/testsuite/messages/DISTFILES: new file.
	* messages/testsuite/messages/test.exp: new file.

	* readmsg/readmsg.h: Added include <mailutils/url.h>
	* readmsg/readmsg.c (struct argp_option options): Fixed definition
	  of -a option.
	  (print_header): Last header was never seen.

	* readmsg/Makefile.am: Added testsuite
	* readmsg/testsuite: new directory.
	* readmsg/testsuite/Makefile.am
	* readmsg/testsuite/.cvsignore: new file.
	* readmsg/testsuite/readmsg: new directory.
	* readmsg/testsuite/readmsg/DISTFILES: new file.
	* readmsg/testsuite/readmsg/test.exp: new file.

	* imap4d/testsuite/config/unix.exp: Renamed to ...
	* imap4d/testsuite/config/default.exp: ... this
	* imap4d/testsuite/config/DISTFILES: Likewise.

	* mail/testsuite/config/unix.exp: Renamed to ...
	* mail/testsuite/config/default.exp: ... this
	* mail/testsuite/config/DISTFILES: Likewise.

	* pop3d/testsuite/config/unix.exp: Renamed to ...
	* pop3d/testsuite/config/default.exp: ... this
	* pop3d/testsuite/config/DISTFILES: Likewise.

	* configure.ac: Added new testsuites.
	* testsuite/lib/mailutils.exp (mu_start): Modified.

2002-08-26  Sergey Poznyakoff

	* frm/frm.c: Don't bail out if the mailbox does not exist.
	* imap4d/append.c (imap4d_append0): Skip leading whitespace.
	* imap4d/fetch.c (fetch_envelope0): Emit whitespace before
	  "from" header.
	* imap4d/util.c: Fixed typo in comment.
	* imap4d/testsuite/imap4d/append.exp: New file
	* imap4d/testsuite/imap4d/create.exp: New file
	* imap4d/testsuite/imap4d/expunge.exp: New file
	* imap4d/testsuite/imap4d/examine.exp: Replaced
	  [imap4d_uidvalidity] with simple regexp.
	* imap4d/testsuite/imap4d/fetch.exp: Likewise.
	* imap4d/testsuite/lib/imap4d.exp (imap4d_test): Added new
	  options: -long to emit long IMAP4D literal after the command,
	  -silent to be silent about the results of the testcase.

	* imap4d/testsuite/imap4d/DISTFILES: Added new files.

	* testsuite/lib/mailutils.exp (mu_expect_list): New procedure

2002-08-23  Sergey Poznyakoff

	* configure.ac: Added check for socklen_t.

	* imap4d/commands.c: Fixed allowed states for X-VERSION command.
	* imap4d/fetch.c (fetch_operation) Fix section specification
	  output.
        * mail/testsuite/mail/folder.exp: Enabled "folders" test.
	* imap4d/testsuite/imap4d/examine.exp:	Moved get_uidvalidity
	  to imap4d.exp and renamed it to imap4d_uidvalidity.
	* imap4d/testsuite/lib/imap4d.exp: Likewise
	  (imap4d_test): Added new switches: -literal and -noliteral

	* imap4d/testsuite/imap4d/fetch.exp: New file
	* imap4d/testsuite/imap4d/x.exp: New file
	* imap4d/testsuite/imap4d/DISTFILES: Added fetch.exp, x.exp
	* imap4d/testsuite/imap4d/search.exp: Added comments

	* testsuite/spool/mbox: Changed `organization' header
	* testsuite/spool/mbox1: Likewise.
	* mail/testsuite/mail/write.exp: Adjusted tests to the changes in
	  mbox and mbox1.

	* libmu_scm/mu_address.c (mu_address_get_count): Fixed
	  type of `count' variable
	* mailbox/list.c (list_remove): Removed cast from void* to int,
	  it does not work on 64-bit machines. Besides, pointer comparison
	  is strictly defined by C.
	* mailbox/observer.c (observable_detach): Likewise.
	* mailbox/tcp.c (_tcp_open): Changed type of `namelen' to
	  socklen_t.
	* mh/mh_format.c: Changed type of `len' to size_t.

	* mail/folders.c (mail_folders): Protect directory name with
	  quotes.

2002-08-23  Sergey Poznyakoff

	* testsuite/lib/mailutils.exp: Introduced -re flag
	  to handle a pattern as a regular expression, and --
	  flag to escape exact strings that actually happen
	  to start with "-re".

	* imap4d/testsuite/lib/imap4d.exp: Properly handle
	  --re and -- flags.

	* imap4d/testsuite/imap4d/examine.exp: Use -re to check
	  uidvalidity value, as we can never be sure the seconds
	  don't change between computing the uidvalidity value and
	  running the test.

2002-08-23  Sergey Poznyakoff

	* configure.ac: Check if crypt is declared.
	* auth/sql.c: Include <crypt.h> when available
	* imap4d/imap4d.h: Include <url.h>
	* imap4d/util.c: Descriptive comment on util_uidvalididty.

	* lib/mu_asprintf.c: Removed.
	* lib/mu_asprintf.h: Provide declarations for (v)asprintf.
	* lib/Makefile.am: Removed mu_asprintf.c

	* mailbox/mu_argp.c: Do not use asprintf.
	* mailbox/mutil.c: Do not use asprintf.
	* mailbox/parse822.c (parse822_time): Tolerate unknown
	  timezone abbreviations.
	* mailbox/system.c: Include <crypt.h> when available

	* imap4d/testsuite/imap4d/search.exp: New file. Provides tests
	  for SEARCH command.
	* imap4d/testsuite/imap4d/DISTFILES: Added search.exp

	* testsuite/spool/teaparty.mbox: Fixed timestamps.
	* pop3d/testsuite/pop3d/read.exp: Updated to match new mailbox.
	* mail/testsuite/mail/z.exp: Likewise.
	* mail/testsuite/mail/tag.exp: Likewise.

2002-08-22  Sergey Poznyakoff

	* configure.ac: Create imap4d/testsuite/Makefile
	* imap4d/Makefile.am: Added testsuite
	* imap4d/testsuite: Added to repository
	* imap4d/testsuite/Makefile.am: Likewise.
	* imap4d/testsuite/config: Likewise.
	* imap4d/testsuite/config/DISTFILES: Likewise.
	* imap4d/testsuite/config/unix.exp: Likewise.
	* imap4d/testsuite/lib: Likewise.
	* imap4d/testsuite/lib/DISTFILES: Likewise.
	* imap4d/testsuite/lib/imap4d.exp: Likewise.
	* imap4d/testsuite/imap4d: Likewise.
	* imap4d/testsuite/imap4d/DISTFILES: Likewise.
	* imap4d/testsuite/imap4d/anystate.exp: Likewise.
	* imap4d/testsuite/imap4d/examine.exp: Likewise.
	* imap4d/testsuite/imap4d/list.exp: Likewise.

	* imap4d/util.c (util_uidvalidity): New function. A wrapper
	  around mailbox_uidvalidity. When a mailbox is selected whose
	  first message does not keep X-UIDVALIDITY value, the uidvalidity
	  is computed based on the return of time(). Now, if we call
	  "EXAMINE mailbox" or "STATUS mailbox (UIDVALIDITY)" the same
          mailbox is opened second time and the uidvalidity recalculated.
	  Thus each subsequent call to EXAMINE or STATUS upon an already
	  selected mailbox will return different uidvalidity value. To
	  avoid this, util_uidvalidity() first sees if it is asked to
	  operate upon an already opened mailbox and if so, returns
	  previously computed value.

	* imap4d/imap4d.h (util_uidvalidity): New function
	* imap4d/select.c (imap4d_select_status): Use util_uidvalidity.
	* imap4d/status.c (status_uidvalidity): Likewise.
	* imap4d/list.c (imap4d_list): Added comment describing
	  when INBOX should be output.

	* frm/frm.c: Fixed coredump when MAIL environment variable
	  has an empty value.
	* mailbox/mutil.c (mu_tilde_expansion): Bugfix. Was freeing
	  passed homedir, which caused grief later.

2002-08-21  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* README: Make this a bit more current.

2002-08-21  Sergey Poznyakoff

	Added pop3d testsuite.

	* testsuite/makespool: New option -subst: sets sed command
	  to be used.
	* testsuite/etc/passwd.in: New file. Template for etc/passwd
	  for testing pop3d and imap4d.
	* testsuite/etc/DISTFILES: Added passwd.in
	* testsuite/lib/mailutils.exp (mu_init,mu_version): Modified.

	* configure.ac: Added pop3d/testsuite/Makefile
	* pop3d/Makefile.am: Likewise.

	* pop3d/testsuite: Added to repository
	* pop3d/testsuite/Makefile.am: Likewise.
	* pop3d/testsuite/config: Likewise.
	* pop3d/testsuite/config/DISTFILES: Likewise.
	* pop3d/testsuite/config/unix.exp: Likewise.
	* pop3d/testsuite/lib: Likewise.
	* pop3d/testsuite/lib/DISTFILES: Likewise.
	* pop3d/testsuite/lib/pop3d.exp: Likewise.
	* pop3d/testsuite/pop3d: Likewise.
	* pop3d/testsuite/pop3d/DISTFILES: Likewise.
	* pop3d/testsuite/pop3d/read.exp: Likewise.

	* mail/testsuite/lib/mail.exp: Updated
	* mailbox/mu_argp.c: New hidden option
	  --show-config-options. Displays a list of configuration
	  defines from config.h

2002-08-20  Sergey Poznyakoff

	* Makefile.am: Added testsuite subdirectory
	* configure.ac: Likewise.
	* auth/virtual.c: A couple of bugfixes. Introduced
	  --virtual-passwd-dir switch to override the
	  default placement of virtual domain password files.

	* testsuite: New dir. Common files for all testsuites.
	* testsuite/lib: New dir.
	* testsuite/lib/mailutils.exp: New file. Common test driver.

	* mail/testsuite/spool: Moved to ...
	* testsuite/spool: ... here

	* mail/testsuite/folder: Moved to ...
	* testsuite/folder: ... here

	* mail/testsuite/etc: Moved to ...
	* testsuite/etc: ... here

	* mail/testsuite/Makefile.am: Removed etc, spool and folder test
	  dirs.
	* mail/testsuite/lib/mail.exp: Updated.
	* mail/testsuite/mail/folder.exp: Updated.
	* mail/testsuite/mail/write.exp: Updated.

2002-08-15  Sergey Poznyakoff

	* configure.ac: If -lcrypt is present, add it to LIBS
	  not to AUTHLIBS.
	* auth/system.c: Moved to ...
	* mailbox/system.c: ... here.
	* auth/Makefile.am: Moved system.c to
	* mailbox/Makefile.am: ... here.

	* mailbox/mu_auth.c: Provide "generic:system" as
	  default.

	* mailbox/sendmail.c (sendmail_send_message): Bugfix. In spite
	  of what the comment said, -t option is not implicit and must
	  be specified.

	* mail/from.c: Bugfix: display even messages without Subject: or
	  From: headers.
	* mail/reply.c: Fixed improper use of header_aget_value().
	* mail/util.c (util_do_command): For compatibility with older
	  mails	treat a number alone on the line as "print NUMBER".

2002-08-14  Sergey Poznyakoff

	* auth/virtual.c: Removed vestiges of mu_virtual_domain.
	* doc/texinfo/programs.texi: Documented authentication concepts
	  and related command line options.
	* mail/testsuite/makespool: Added GNU copyleft header.

2002-08-13  Sergey Poznyakoff

	* pop3d/apop.c: Switched to the new authentication/authorization
	  functions.

2002-08-13  Sergey Poznyakoff

	To avoid confusion, pruned libmailbox directory.

	* libmailbox/mailbox.c: Removed obsolete files.
	* libmailbox/maildir.c: Likewise.
	* libmailbox/mh.c: Likewise.
	* libmailbox/unixmbox.c: Likewise.
	* libmailbox/Makefile.am: Likewise.
	* libmailbox/mailbox.h: Likewise.
	* libmailbox/maildir.h: Likewise.
	* libmailbox/mh.h: Likewise.
	* libmailbox/unixmbox.h: Likewise.

	* MySql/Makefile.am: Removed.
	* MySql/MySql.c: Likewise.
	* MySql/MySql.h: Likewise.
	* MySql/.cvsignore

	* auth/sql.c: Merged sql core stuff from MySql/MySql.c.
	* auth/virtual.c: All functions made static.
	* auth/system.c: Likewise.
	* Makefile.am: Removed MySql
	* configure.ac: Likewise.

2002-08-13  Sergey Poznyakoff

	Moved authentication specific calls scattered all over the
	code to one place: libmuauth library. The new code returns
	authorization credentials in struct mu_auth_data. It contains
	all information from struct passwd as well as some
	mailutils-specific information. New options `--authentication'
	and `--authorization' provide a way to override default
	settings.

	* configure.ac: Check for prototypes of strtok_r, strchrnul,
	  strndup, asprintf, vasprintf. Create auth/Makefile
	* Makefile.am: Added auth to SUBDIRS.
	* MySql/Makefile.am: Added INCLUDES
	* MySql/MySql.c: Include <mailutils/error.h>

	* comsat/comsat.c: Switched to the new
	  authentication/authorization functions.
	* guimb/scm/sieve-core.scm: Likewise.
	* imap4d/authenticate.c: Likewise.
	* imap4d/bye.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* imap4d/login.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* imap4d/rename.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* pop3d/user.c: Likewise.
	* libmu_scm/mu_util.c: Likewise.
	* mail.local/main.c: Likewise.
	* mail.local/script.c: Likewise.
	* mailbox/mbx_default.c: Likewise.
	* mailbox/message.c: Likewise.
	* mailbox/wicket.c: Likewise.

	* mailbox/mu_argp.c: Removed pam- and sql-specific stuff
	* mailbox/mu_auth.c: New file. Basic authentication/authorization
	  functions.
	* mailbox/Makefile.am: Added mu_auth.c

	* auth/: New directory. The libmuauth library.
	* auth/system.c: New file. System-specific
	  (passwd/shadow) auth functions.
	* auth/pam.c: New file. PAM-specific auth functions.
	* auth/sql.c: New file. SQL-specific auth functions.
	* auth/virtual.c: New file. Virtual-domain-specific auth functions.
	* auth/Makefile.am: New file.

	* pop3d/virtual.c: Removed.
	* pop3d/Makefile.am: Removed virtual.c

	* include/mailutils/mu_auth.h: New file. Prototypes for mailutils
	  authentication/authorization functions.
	* include/mailutils/Makefile.am: Added mu_auth.h.
	* include/mailutils/argp.h (mu_register_capa): New prototype.

	* include/mailutils/mutil.h (mu_register_getpwnam,
	  mu_register_getpwuid,mu_getpwnam,mu_getpwuid,
	  mu_virtual_domain): Removed.
	* mailbox/mutil.c: Likewise.

        * lib/argp-help.c: Provide declarations for strchrnul, strndup
	  if necessary.
	* lib/mu_asprintf.c: Likewise for vasprintf,asprintf

	* imap4d/imap4d.h: Include <mailutils/mu_auth.h>
	* comsat/comsat.h: Likewise.
	* mail.local/mail.local.h: Likewise.
	* pop3d/pop3d.h: Likewise.

	* mailbox/smtp.c (message_has_bcc): Fixed inconsistency in
	  passing arguments to header_get_value().
	* mail/set.c (mail_set): Fixed inconsistency in passing arguments
	  to strtoul().
	* mail/util.c (util_get_homedir): Do not strdup return.
	  mu_get_homedir() does it now.
	* mail/var.c (var_insert): Changed declaration to avoid
	  `auth shadows parameter' warning.

	* mailbox/locker.c (_locker_lock_dotlock): Bugfix: do not leave
	  temporary lock file in case of errors

	* mailbox/mailbox.c: Include <mailutils/attribute.h>
	* mh/mh_init.c: Free return value of mu_get_homedir().

2002-08-08  Sergey Poznyakoff

	* .cvsignore: Updated

	* mail/testsuite/.cvsignore: Updated
	* mail/testsuite/lib/mail.exp (default_mail_test): Ignore trailing
	  whitespace.
	* mail/testsuite/mail/alias.exp: Remove trailing whitespace from
	  the patterns.
	* mail/testsuite/mail/read.exp: Likewise.
	* mail/testsuite/mail/tag.exp: Likewise.
	* mail/testsuite/mail/write.exp: Likewise.

	* mailbox/mu_argp.c: Initialize argp_program_bug_address.
	* comsat/comsat.c: Removed argp_program_bug_address. Use
	  PACKAGE_STRING, provided by the new autoconf.
	* dotlock/dotlock.c: Likewise.
	* frm/frm.c: Likewise.
	* from/from.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* mail/mail.c: Likewise.
	* mail.local/main.c: Likewise.
	* mail.remote/mail.remote.c: Likewise.
	* messages/messages.c: Likewise.
	* mh/inc.c: Likewise.
	* mh/scan.c: Likewise.
	* sieve/sieve.c: Likewise.
	* pop3d/capa.c: Likewise.
	* pop3d/pop3d.c: Likewise. Imply debug mode if the input stream is
	  connected to a tty. Don't try to switch to "mail" group id in
	  debug mode.

	* pop3d/popauth.c: Parse arguments using mu_argp instead of
	  getopt_long.
	* readmsg/readmsg.c: Likewise.

2002-08-07  Sergey Poznyakoff

	* mail/mail.h (struct mail_env_entry): Reorganized. Added
	  type member and changed "value" to be a union.
	  (environment functions): Changed prototypes.
	  (util_folder_path): New prototype.
	* mail/util.c: Rewritten internal environment functions.
	  Environment variables are now typed, so setting "set folder=1"
	  won't cause coredumps anymore. The function util_getenv() is
	  used to retrieve a variable of given data type. util_find_env()
	  takes second argument specifying whether it should create a
	  missing variable. This function is used only in util.c and
	  var.c.
	* mail/set.c: Use util_setenv().

	* mail/alt.c: Use util_getenv().
	* mail/copy.c: Use util_getenv(). Honour outfolder variable, when
	  set.
	* mail/decode.c: Use util_getenv().
	* mail/delete.c: Likewise.
	* mail/file.c (mail_expand_name): Use util_getenv() and
	  util_folder_path().
	* mail/folders.c: Use util_getenv().
	* mail/if.c: Likewise.
	* mail/mail.c: Likewise. Provide default for "regexp" internal
	  variable.
	* mail/msgset.y: Likewise.
	* mail/pipe.c: Likewise.
	* mail/print.c: Likewise.
	* mail/quit.c: Likewise.
	* mail/send.c: Likewise.
	* mail/top.c: Likewise.
	* mail/var.c: Likewise.
	* mail/mailline.c: Likewise.

	* mail/write.c: Honour "outfolder" variable. If called without
	  arguments, deduce output file name from the number of current
	  message.

	* mail/testsuite/makespool: Bugfix.
	* mail/testsuite/lib/mail.exp (mail_start): New flag -reuse-spool.
	  (default_mail_test): If command is empty do not send anything.
	  (mail_test_file): New function. Test the contents of an
	  arbitrary file.
	* mail/testsuite/mail/write.exp: New file. Tests for message
	  saving and disposing commands: delete, mbox, [sS]ave, [wW]rite
	* mail/testsuite/mail/DISTFILES: Added write.exp

2002-08-06  Sergey Poznyakoff

	* Makefile.am: Removed distcheck kludge. Testsuite doesn't
	  need it anymore.
	* mail/testsuite/makespool: New file. Prepares data
	  for testsuite.
	* mail/testsuite/Makefile.am: Added EXTRA_DIST and
	  distclean-local
	* mail/testsuite/lib/mail.exp: Fixed paths.
	  (mail_prepare_spools,mail_cleanup_spools): new procedures.
	* mail/testsuite/mail/folder.exp: Corrected paths.

2002-08-06  Sergey Poznyakoff

	* Makefile.am: Added distcheck rule needed for
	  test suite.
	* configure.ac: Added missing AH_BOTTOM and descriptions to
	  AC_DEFINEs. Replaced sr_STRUCT_TM.* with AC_CHECK_MEMBERS
	  (no aggregate members, so it's safe here).
	* acconfig.h: Removed
	* doc/texinfo/Makefile.am: DISTCLEANFILES
	* lib/Makefile.am: Use LTLIBOBJS.

	* m4/tm_gmtoff.m4: Removed.
	* m4/tm_isdst.m4: Removed.
	* m4/tm_zone.m4: Removed.
	* m4/Makefile.am: Removed tm_ files.

	* mail/testsuite/Makefile.am: Fixed generation of site.exp. Added
	  DISTCLEANFILES.

	* mailbox/mutil.c: Changed HAVE_TM_.* to HAVE_STRUCT_TM_.*
	* mailbox/parse822.c: Likewise.
	* mailbox2/mutil.c: Likewise.
	* mailbox2/parse822.c: Likewise.
	* mh/mh_format.c: Likewise.

	* imap4d/authenticate.c (imap4d_auth_capability): New function.
	* imap4d/imap4d.h: Likewise.
	* imap4d/capability.c (imap4d_capability): call
	  imap4d_auth_capability() to output AUTH= capabilities.

2002-08-05  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* lib/Makefile.am: Remove libtool hacks, automake now handles
	LIBOBJS correctly.

	* .cvsignore: Add autom4te.cache

	* configure.in: Rename to ...
	* configure.ac: ... this, and update to autoconf 2.5

	* Makefile.am: Now requires Automake 1.6

	* m4/malloc.m4: Update from gnulib

	* m4/realloc.m4: Update from gnulib

	* m4/regex.m4: Update from gnulib

	* m4/utmp.m4: Change LIBOBJS to use AC_LIBOBJ

2002-08-05  Sergey Poznyakoff

	* imap4d/version.c: New file. Support for X-VERSION command
	* imap4d/Makefile.am: Added version.c

	* imap4d/imap4d.c (main): Imply debug mode if the input stream is
	  connected to a tty. Don't try to switch to "mail" group id in
	  debug mode.
	  (imap4d_mainloop): Do not reveal our version. One may issue
	  X-VERSION command in authenticated state to get it.
	* imap4d/imap4d.h (imap4d_version): New function.

	* imap4d/list.c (imap4d_list): Remove state check. Bugfix:
	  allow a meta-closure (*) in any position of the word.

	* imap4d/util.c (util_finish): Do not allow to switch to
	  a higher state in case of command failure.
	  (util_do_command): Run the command only if it is allowed in
	  the current state.

	* imap4d/commands.c: Added entry for X-VERSION
	* imap4d/capability.c: Indicate X-VERSION capability.
	* imap4d/append.c: Remove state check.
	* imap4d/authenticate.c: Likewise.
	* imap4d/check.c: Likewise.
	* imap4d/close.c: Likewise.
	* imap4d/copy.c: Likewise.
	* imap4d/create.c: Likewise.
	* imap4d/delete.c: Likewise.
	* imap4d/examine.c: Likewise.
	* imap4d/expunge.c: Likewise.
	* imap4d/fetch.c: Likewise.
	* imap4d/login.c: Likewise.
	* imap4d/logout.c: Likewise.
	* imap4d/lsub.c: Likewise.
	* imap4d/namespace.c: Likewise.
	* imap4d/noop.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/search.c: Likewise.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise.
	* imap4d/store.c: Likewise.
	* imap4d/subscribe.c: Likewise.
	* imap4d/uid.c: Likewise.
	* imap4d/unsubscribe.c: Likewise.

2002-08-03  Sergey Poznyakoff

	Use of attributes made consistent throughout the package:

	* imap4d/fetch.c (fetch_flags0): Use util_print_flags.
	* imap4d/search.c (cond_keyword): Likewise for
	  util_attribute_matches_flag.
	* imap4d/imap4d.h (util_print_flags,util_attribute_to_type,
	  util_attribute_matches_flag): New prototypes.
	* imap4d/select.c (imap4d_select_status): Run imap4d_sync()
	  to output EXISTS and RECENT untagged responses.
	* imap4d/store.c (get_attribute_type):  Removed.
	  util_attribute_to_type() does the job.
	  (imap4d_store0): Use util_attribute_to_type().
	* imap4d/sync.c: Output the actual number of recent messages.

	* imap4d/util.c: For consistency, reduced all operations
	  with flags to manipulations with _imap4d_attrlist array
	  RFC2060 states that  \Seen flag means "Message has been read",
	  so it should be mapped to our MU_ATTRIBUTE_READ.
	  (util_print_flags, util_attribute_matches_flag): New functions.

	* include/mailutils/mutil.h (mu_register_getpwuid): Fixed proto.
	* mailbox/mutil.c: Likewise.

	* include/mailutils/attribute.h (MU_ATTRIBUTE_IS_UNSEEN,
	  MU_ATTRIBUTE_IS_UNREAD): New macros.
	* mailbox/attribute.c (attribute_is_recent): Use
	  MU_ATTRIBUTE_IS_UNSEEN.
	  (attribute_set_flags): If the required bits are already set,
          do not modify anything
	  (attribute_unset_flags): If the required bits are already
          cleared, do not modify anything
	* mailbox/mbx_mbox.c (mbox_messages_recent): use
          MU_ATTRIBUTE_IS_UNSEEN.
          (mbox_message_unseen): use MU_ATTRIBUTE_IS_UNREAD.
        * mailbox/mbx_mh.c (mh_messages_recent, mh_message_unseen): Likewise.

	* imap4d/bye.c (imap4d_bye0): Use mailbox_flush.
	* imap4d/close.c (imap4d_close): Likewise.
	* mail/quit.c (mail_mbox_close): Likewise.
	* pop3d/quit.c (pop3d_quit): Likewise.
	* include/mailutils/mailbox.h (mailbox_flush): New prototype.
	* mailbox/mailbox.c (mailbox_flush): New function. Marks all
          messages as seen and saves the attributes to the mailbox,
          optionally expunging it.
	* mailbox/folder_imap.c (imap_flags): Empty attribute
	  list means MU_ATTRIBUTE_SEEN.
	* mailbox/mbx_imap.c (flags_to_string): Map \Seen to
	  MU_ATTRIBUTE_READ.

2002-08-02  Sergey Poznyakoff

	* MySql/MySql.c (getMpwuid): Bugfix. It should take a pointer as
	  its argument;
	* MySql/MySql.h: Likewise
	* imap4d/sync.c: Rearranged functions to let implicit prototyping
	  work.
	* imap4d/fetch.c: include argcv.h
	  (fetch_send_address): Added const specifier to the declaration.

2002-08-01  Sergey Poznyakoff

	* imap4d/util.c (util_msgset): Some comments
	* mailbox/mu_argp.c (read_rc): Bugfix. linebuf must be freed
	  no matter was the string accepted or not.
	* pop3d/pop3d.c (pop3d_argp_capa): Bugfix. Was missing
	  "mailbox" capability.

2002-08-01  Sergey Poznyakoff

	* imap4d/util.c (util_msgset): Bugfix.

	* imap4d/sync.c (notify_deleted): Implemented "immediate decrement
	  rule" required by RFC2060
	  Interchanged reset_uid() and notify(). Notify decides whether
	  and when reset_uid must be called.
	  (notify): Call reset_uid(). when necessary.
	  (reset_uid): Do not call notify().
	  (imap4d_sync): Call notify().

	* imap4d/imap4d.h (fetch_flags0): New prototype.

	* imap4d/fetch.c (fetch_flags0): New function. Produces untagged
	  fetch response for FETCH and STORE commands. If necessary outputs
	  also UID.
	* imap4d/store.c (imap4d_store0): Use fetch_flags0.


2002-07-27  Sergey Poznyakoff

	* imap4d/fetch.c: Do not use strtok_r to parse header values (it
	  ignores the quotes). *Lots* of bugfixes beside that.
	* imap4d/util.c (util_msgset): Always return sorted msgset with
	  no duplicates. Fixed transcript support.
	* THANKS: Added Jordy Mallach

2002-07-26  Sergey Poznyakoff

	Provide session transcript support for the daemons. The
	transcript is triggered by --transcript option to the
	daemon. Its output goes to LOG_FACILITY.debug.
	Fixed a couple of bugs in imap4d (Thanks, Jordy!)

	* include/mailutils/argp.h (struct daemon_param): New member
	  `transcript'.
	* mailbox/mu_argp.c (daemon option group): New option
	  --transcript.

	* imap4d/util.c: Provide session transcript support.

	* imap4d/fetch.c (bodystructure,send_parameter_list): Fixed
	  possible NULL dereference.
	* imap4d/imap4d.c (struct daemon_param): Initialize typescript
	  member.
	* imap4d/login.c: Changed PAM error handling.
	* imap4d/signal.c: Handle SIGPIPE separately. Many clients seem to
	  not wait for a response to LOGOUT command.

	* pop3d/extra.c (pop3d_outf): New function. Provides output
	  functionality with session transcript support.
	  (pop3d_readline): Support for session transcript.
	* pop3d/pop3d.h (pop3d_outf): New prototype.
	* pop3d/apop.c: Use pop3d_outf instead of fprintf
	* pop3d/capa.c: Likewise.
	* pop3d/dele.c: Likewise.
	* pop3d/list.c: Likewise.
	* pop3d/noop.c: Likewise.
	* pop3d/quit.c: Likewise.
	* pop3d/retr.c: Likewise.
	* pop3d/rset.c: Likewise.
	* pop3d/stat.c: Likewise.
	* pop3d/top.c:  Likewise.
	* pop3d/uidl.c: Likewise.
	* pop3d/user.c: Likewise.
	  (pop3d_user): Removed unneeded PAM_ERROR.
	* pop3d/pop3d.c: Likewise.
	  (struct daemon_param): Initialize transcript member.

2002-07-23  Sergey Poznyakoff

	* imap4d/imap4d.c (imap4d_parse_opt): Fixed dereference of
	  child_inputs. Thanks to Jordi Mallach.
	* pop3d/pop3d.c (pop3d_parse_opt): Likewise.
	  (pop3d_argp_capa): Reordered capabilities to match those of
	  imap4d.
	* comsat/comsat.c (comsatd_parse_opt): Likewise.

	header_aget_value was modified on May 9 but its invocations
	throughout the code were not examined. Here goes the fix:

	* imap4d/fetch.c: Properly check the return from
	  headers_aget_value.
	* mail/followup.c: Likewise.
	* mail/reply.c: Likewise.

2002-07-22  Sergey Poznyakoff

	* mail/delete.c (mail_delete): Initialize auto variables.
	* mail/testsuite/mail/tag.exp: Test "tag" command and message
	  selection.
	* mail/testsuite/mail/z.exp: Test "z" command.
	* mail/testsuite/mail/DISTFILES: Added tag.exp, z.exp
	* mail/testsuite/spool/teaparty.mbox: A mailbox for tag.exp and z.exp.
	* mail/testsuite/spool/DISTFILES: Added teaparty.mbox
	* mail/testsuite/etc/mail.rc: Set screen and columns.

2002-07-17  Sergey Poznyakoff

	* mail/quit.c (mail_mbox_commit): Do not store deleted messages
	  into mbox (Thanks Matthew Whitworth).

2002-07-16  Sergey Poznyakoff

	Based on ideas of Matthew Whitworth, moved mailbox file
	expansion into a separate function:

	* mail/file.c (mail_expand_name): New function. Expands mail
	  special characters in a filename.
	* mail/mail.h: Likewise.
	* mail/copy.c (mail_copy0): Use mail_expand_name().

	* mail/quit.c (mail_mbox_commit): Fixed typo.
	  (mail_mbox_close): Do not expunge mailboxes if readonly is set.
	  Helps in testing mail.
	* mail/alt.c: Use mu_errstring() where appropriate.

	* mail/testsuite/mail/folder.exp: (new file) A regression test
	  for folder and file commands.
	* mail/testsuite/mail/DISTFILES: Added folder.exp
	* mail/testsuite/folder: (new dir) Data for folder.exp test.
	* mail/testsuite/folder/DISTFILES: New file
	* mail/testsuite/folder/one: New file
	* mail/testsuite/folder/two: New file

	* mail/testsuite/Makefile.am: Added folder.
	* mail/testsuite/lib/mail.exp: Set MBOX variable.
	* mail/testsuite/mail/read.exp: Force readonly mode before
	  proceeding.
	* mail/testsuite/spool/mbox: (new)
	* mail/testsuite/spool/DISTFILES: Added mbox

	* THANKS: Added Matthew Whitworth

2002-07-15  Sergey Poznyakoff

	* mail/folders.c (mail_folders): If the value of "folder" variable
	  does not start with '/' or '~', assume it is relative to the
	  user's homedir.
	* mail/file.c (mail_file): Likewise. Thanks to Matthew Whitworth
	  <matthew@okcomputer.org> for reporting.

2002-07-13  Sergey Poznyakoff

	* mailbox/mbx_default.c (mailbox_create_default): If the
	  mailbox name does not start with a '/' and does not contain
	  a protocol specification, assume it is a file name relative
	  to the cwd and convert it to the absolute file name.
	* mail/size.c: Do not move the cursor after running the command.

	* mail/testsuite/lib/mail.exp: Expect the prompt to appear after
	  the last pattern.

	* mail/testsuite/mail/read.exp: Added tests for size and decode
	  commands.
	* mail/testsuite/spool/mbox1: Added two MIME messages.

2002-07-03  Sergey Poznyakoff

	* mail/testsuite/lib/mail.exp: Be more stringent in testing.
	* mail/testsuite/mail/read.exp: Added tests for Print, top,
	  ignore and retain commands.

2002-07-02  Sergey Poznyakoff

	* mail/mail.c (mail_capa): Added "mailbox" capability.

	Added framework for dejagnu testsuite.

	* configure.in: Call AC_CANONICAL_SYSTEM.
	  Create mail/testsuite/Makefile
	* mail/Makefile.am: Added testsuite to SUBDIRS.
	* mail/testsuite: New dir.
	* mail/testsuite/Makefile.am: new file.
	* mail/testsuite/.cvsignore: new file.
	* mail/testsuite/config: New dir.
	* mail/testsuite/config/DISTFILES: new file.
	* mail/testsuite/config/unix.exp: Configuration file for Unix.
	* mail/testsuite/etc: New dir.
	* mail/testsuite/etc/DISTFILES: new file.
	* mail/testsuite/etc/mail.rc: site-specific config for testing mail.
	* mail/testsuite/lib: New dir.
	* mail/testsuite/lib/DISTFILES: new file.
	* mail/testsuite/lib/mail.exp: Dejagnu entry points for testing mail.
	* mail/testsuite/mail: New dir.
	* mail/testsuite/mail/DISTFILES: new file.
	* mail/testsuite/mail/alias.exp: Test alias/unalias commands
	* mail/testsuite/mail/read.exp: Test mail reading commands
	* mail/testsuite/spool: New dir.
	* mail/testsuite/spool/DISTFILES: new file.
	* mail/testsuite/spool/mbox1: A mailbox for testing.

2002-06-29  Sergey Poznyakoff

	* mail/headers.c: Fix divide by zero (noted by Matthew Whitworth).

2002-06-27  Sergey Poznyakoff

	* libmu_scm/mu_message.c (mu_message_set_header_fields): Bugfix.
	* imap4d/login.c (imap4d_login): Removed FIXME note: the user
	  need not have a homedir at all.
	* mail.local/main.c (make_progfile_name): moved to ...
	* mailbox/mutil.c (mu_expand_path_pattern): ... there.
	* mail.local/mail.local.h (make_progfile_name): Removed
	  prototype.
	* include/mailutils/mutil.h (mu_expand_path_pattern): new
	  prototype.
	* mail.local/script.c (mda_init,mda_next): use mu_expand_path_pattern.

2002-05-24  Walter J. Mack <wmack@componentsw.com>

	* include/mailutils/types.h: Include definition for __PMT
	* include/mailutils/list.h: use __PMT in typedef
	* include/mailutils/registrar.h: change all callback function
	  specs from __P to __PMT
	* include/mailutils/filter.h: Likewise.
	* include/mailutils/envelope.h: Add conditional closing bracket
	  to balance earlier extern "C" {

2002-05-16  Sergey Poznyakoff

	* guimb/scm/sieve-core.scm (sieve-expand-filename): New function.
	  Expands ~ in the given pathname, using geteuid.
	  (action-fileinto): Use sieve-expand-filename. Be more robust
	  in error handling.
	* libmu_scm/mu_util.c: Interfaces to functions from mutil.c
	* libmu_scm/mu_scm.h (mu_scm_mutil_init): Prototype.
	* libmu_scm/mu_scm.c (mu_scm_init): Init mu_util.c.
	* libmu_scm/Makefile.am: Added mu_util.c.
	* mail.local/mail.local.h (switch_user_id): prototype.
	* mail.local/script.c (mda_catch_body): Switch to the
	  user's uid and change to his homedir before running his
	  filtering script. Switch back to root before running
	  mda().

2002-05-14  Sergey Poznyakoff

	* mail.remote/Makefile.am: Removed reference to non-existent
	  mail.remote.h

2002-05-13  Sam Roberts

	* comsat/comsat.h, frm/frm.c, from/from.c, guimb/main.c,
	  imap4d/imap4d.h, include/mailutils/Makefile.am,
	  include/mailutils/argp.h, include/mailutils/mailutils.h,
	  include/mailutils/mu_argp.h, mail/mail.h, mail.local/mail.local.h,
	  messages/messages.c, pop3d/pop3d.h, sieve/sieve.c: Removed
	  redundant mu_ prefix from mailutils/mu_argp.h.
	* TODO: Updated.
	* Makefile.am, mail.remote/.cvsignore, mail.remote/mail.remote.c,
	  configure.in: mail.remote now working as an SMTP forwarder.
	* include/mailutils/: mu_features.h, types.h: Merged mu_features.h
	  into types.h.
	* mailbox/mu_argp.c: Added :mailer group, with option --mailer,-M
	  to set the default mailer URL.
	* mailbox/smtp.c: Now clearing Bcc: even when there is an explicit
	  TO argument. Not the best thing to do, but it seems to be What
	  Everybody Does.
	* doc/texinfo/mailer.texi: Updated now that smtp mailer is working.
	* mailbox/sendmail.c: Looking at other utilities makes me think
	  that providing -t to sendmail is optional, need to test this.
	* mailbox/parse822.c: Updated TODO list and ran through GNU indent.
	* include/mailutils/errno.h, mailbox/muerrno.c: An unsupported
	  mailer URL now gives a more specific error than EINVAL.
	* mail/mailline.c: Silenced warnings that can appear depending on
	  the presence of readline, and various terminal APIs.
	* include/mailutils/mailer.h, mailbox/mailer.c,
	  mailbox/include/mailer0.h: mailer_get|set_url_default() new
	  functions to set the default mailer
	* lib/mu_asprintf.h: Removed dependency on mailutils.

2002-05-13  Sergey Poznyakoff

	To avoid dependency problems moved mu_argp.c to mailbox. Changed
	license to Lesser GPL.

	* lib/mu_argp.h: Moved to ...
	* include/mailutils/mu_argp.h: here.
	* lib/mu_argp.c: Moved to ...
	* mailbox/mu_argp.c: here.

	* lib/Makefile.am: Removed mu_argp.* stuff.
	* mailbox/Makefile.am: Added mu_argp.c
	* include/mailutils/Makefile.am: Added mu_argp.h

	* comsat/comsat.h: Changed mu_argp.h to mailutils/mu_argp.h
	* frm/frm.c: Likewise.
	* from/from.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.h: Likewise.
	* imap4d/search.c: Likewise.
	* mail/mail.h: Likewise.
	* mail.local/mail.local.h: Likewise.
	* messages/messages.c: Likewise.
	* pop3d/pop3d.h: Likewise.
	* sieve/sieve.c: Likewise.

	* lib/utmp.c: Added missing includes.

2002-05-12  Sam Roberts

	* doc/xml2texi.rb: Converts doxygen XML output to texinfo function
	  documentation.

2002-05-10  Sam Roberts

	* mailbox/tcp.c: Not a good day, second typo in a row in
	  tcp_stream_create.
	* include/mailutils/errno.h, mailbox/muerrno.c, mailbox/tcp.c:
	  tcp_stream_create now has more informative errors for no host or
	  port
	* from/from.c: From now uses mu_argp, and has a debug flag.
	* mailbox/tcp.c: The arg check I added was checking floating data
	  instead of actual args, serious error, fixed.
	* examples/: Addrs, Addrs.good, Makefile, mbox-check.c,
	  mbox-dates.c, mbox-explode.c, mimetest.c, msg-send.c: Tweaked
	  header files to build without errors.
	* examples/muemail.c: Test program for current email address
	  completion configuration.
	* mailbox/parse822.c: Group names no longer appearing in address
	  lists (still parsed correctly).

2002-05-08  Sam Roberts

	* mailbox/: smtp.c, include/mailer0.h: Implemented correct
	  semantics for sending mail to bcc'ed addresses.
	* include/mailutils/mailer.h, mailbox/mailer.c:
	    mailer_check_to(): ensures that there all the to addresses are
	    qualified.
	    mailer_check_from(): ensures that there is only one address, and
	    it is qualified.
	* include/mailutils/header.h, mailbox/header.c:
	   header_parse(): wasn't ignoring LWSP after "bcc : ...", fixed.	header_set_value():
	   header_set_value(): there was no way to remove a field, now
	    calling set with a field value of NULL removes the field.
	   header_get_value(): was concatenating the values of all the
	    fields with the same name, now it doesn't.
	   header_get_address(): convenience function to get an address_t
	    from a header field.
	   header.h: sorted API functions to top of header, and ones used in
	    implementing header_t to the bottom.
	* include/mailutils/address.h, mailbox/address.c:
	    address_concatenate() - appends one address list to another
	    address_get_group_count() - the number of groups in an address_t
	    address_get_unix_mailbox_count() - the number of unix mailboxes..
	* include/mailutils/mutil.h, mailbox/mutil.c:
	   mu_get_host_name(): returns this host name, looking gethostname()
	    up with gethostbyname() if possible.
 	   mu_get_user_email_domain() and family now use mu_get_host_name()
	* mailbox/parse822.c: address parsing now creates email addresses
	  for unqualified "unix" style mailboxes by using the
	  mu_get_user_email_domain().
	* include/mailutils/message.h, mailbox/message.c:
	  message_create_copy(): creates a copy of a message, useful when you
	  want to operate on a temporary copy of a message.
	* mailbox/mbx_imap.c: Moved message copy code into
	  message_create_copy().
	* mailbox/tcp.c: Attempting to connect to port 0 is now an error,
	  and resolver failures cause MU_ERR_GETHOSTBYNAME instead of the
	  less-than-useful EINVAL.
	* include/mailutils/errno.h, mailbox/muerrno.c: Added smtp and
	  mailer return codes.
	* mailbox/url_smtp.c: _url_smtp_init(): using url_parse(), now
	  accepts host AND port as args
	* include/mailutils/url.h, mailbox/url.c:
	   url_is_scheme(url_t, const char*): new function

2002-05-02  Sergey Poznyakoff

	* comsat/comsat.c: Provide extern declarations for *utent calls.

	* lib/utmp.c: (new) Replacements for {set,get,end}utent calls.
	* lib/Makefile.am: Added utmp.c

	* m4/utmp.m4: (new) Detect presense of utmp.h and
	  {set,get,end}utent calls.
	* m4/Makefile.am: Added utmp.m4
	* configure.in: Call MU_CHECK_UTMP.

	* readmsg/msglist.c: Renamed isnumber to is_number. Apparently,
	  OS X defines a macro with this name.
	* libmu_scm/mu_address.c (_get_address_part): Bugfix. Was passing
	  too short a length to fun().
	* guimb/scm/numaddr.scm: Changed runtime error reporting.
	* guimb/scm/redirect.scm: Likewise. Initialize sender variable.
	* guimb/scm/sieve-core.scm: Provide new runtime-message function.

	* imap4d/select.c (imap4d_select0): Removed unused variable.
	* mail.local/mail.local.h: Changed mda() declaration.
	* mail.local/main.c: Likewise.
	* mail.local/script.c (mda_catch_body): Check if the message is
	  to be delivered here, instead of doing it in deliver(). If the
	  message was modified, drop it to the separate temporary file
	  first, so that all modifications get to the user's maildrop.

2002-04-26  Sam Roberts

	* include/mailutils/mutil.h: Included <mailutils/types.h>, which
	  will get <sys/types.h> & uid_t.
	* lib/argp-help.c, messages/messages.c: Made inclusions of
	  <malloc.h> conditional on autoconf check.

2002-04-19  Sergey Poznyakoff

	* guimb/scm/sieve.scm (sieve-parse-command): Bugfix: must always
	  return a list whose car is the token type.
	  New command line options: --debug and --lib-dir
	* guimb/scm/mimeheader.scm: (new) Implements "mimeheader"
	  extension test. The test is similar to "header" but works
	  on multipart MIME messages also.
	* guimb/scm/Makefile.am: Added mimeheader.scm

	* libmu_scm/mu_message.c: New interfaces: mu-message-multipart?,
	  mu-message-get-num-parts, mu-message-get-part
	* libmu_scm/mu_port.c (mu_port_mark): Do nothing if the port
	  is not in open state.

2002-04-15  Sam Roberts

	* doc/texinfo/programs.texi, include/mailutils/mutil.h,
	  lib/mu_argp.c, mailbox/mutil.c: mu_get_user_email() assumed
	  we could deliver to the current host, on dialup systems,
	  and workstations this may not be true, so allow user names
	  to be qualified with the domain that should be used for email
	   mu_set_user_email() - email address to use for NULL (current) user
	   mu_set_user_email_domain() - domain to use to qualify an @-less
	     username
	   mu_get_user_email() - now uses default address and domain, if set
	   -E,--email-addr - config option, calls mu_set_user_email()
	   -D,--email-domain - config option, calls mu_set_user_email_domain()
	   :address - group for the above config options
	* lib/Makefile.am, lib/mu_asprintf.c, lib/mu_asprintf.h,
	  mailbox/Makefile.am: One way to get rid of the annoying warnings
	  about asprintf() not being declared is to always call a mailutils
	  wrapper function, which in turn calls the real function. That means
	  the wrappers (and other functions in lib) will still compile with
	  warnings, but the mailbox and utility code can compile clean.
	* doc/texinfo/programs.texi: Updated to match lib/mu_argp.c.

2002-04-15  Sergey Poznyakoff

	* acconfig.h: Added placeholders for
	  PROGRAM_INVOCATION_NAME_DECLARED and
	  HAVE_PROGRAM_INVOCATION_NAME.
	  (@BOTTOM@): Provide external declarations for
	  program_invocation_.*name if necessary.
	* configure.in: Check if program_invocation_.*name are
	  declared and/or defined.
	* lib/Makefile.am: Always compile pin.c
	* lib/pin.c: include <config.h>

	* mh/mh.h: Added missing includes. Removed external
	  declaration of program_invocation_short_name.
	* mh/mh_argp.c (mh_argp_parse): Removed local declarations
	  of program_invocation_.* variables.
	* mh/mh_getopt.c: Removed include <mh.h>
	* mh/mh_init.c: Added include <stdarg.h>

	* libmu_scm/mu_scm.h: include <mailutils/url.h>

2002-04-15  Sergey Poznyakoff

	* imap4d/namespace.c (namespace_getfullpath): Translate
	  INBOX to the corresponding filename.

	* imap4d/copy.c (imap4d_copy0): Removed unnecessary code:
	  namespace_getfullpath() now translates INBOX to filename.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise.

2002-04-14  Sam Roberts

	* include/mailutils/mutil.h, mailbox/locker.c, mailbox/mutil.c:
	  Implemented symlink unrolling before locking.
	* lib/mu_argp.c: Config files in ~/ all start with .mu again.

2002-04-12  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* configure.in: Bump version to 0.0.9d

2002-04-11  Sergey Poznyakoff

	* lib/mu_argp.c: Fixed auto-arranging of
	  options groups. Fixed spelling of license option.

	* comsat/comsat.c: Fixed spelling of "license" option.
	* frm/frm.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.

	* mail/mail.c: "mailutils" capability does not exist any more.
	  Changed to "common", "license".
	* messages/messages.c: Likewise.
	* pop3d/pop3d.c: Likewise.

	* mail.local/main.c: Added "license" capability.

2002-04-10 Sam Roberts

	* mail.local/main.c: split mailutils capabilities
	* frm/frm.c: mailutils capabilities were split, and it now reports
	  failure, rather than calling failure success.
	* comsat/comsat.c, guimb/main.c, imap4d/imap4d.c: mailutils
	  capabilities were split up
	* mail.remote/: Makefile.am, mail.remote.c: A stub mail.remote. It
	  is waiting on completion of the smtp mailer_t.
	* lib/mu_argp.c: Default per-utility config files are ~/.programrc.
	  If you want to segregate you mailutils configuration, make
	  ~/.mailutils a directory, and put your config files in it (same
	  name, minus the leading ".").  Also organized all common options
	  under the heading "Common options", moved the daemon and auth
	  options before the common options, and implemented a --lock-flags
	  option.
	* include/mailutils/locker.h, mailbox/locker.c:
	  (locker_set_default_flags) new function to set the default locking
	  flags Fixed bug wherein lock count wasn't incremented for external
	  locking.  Fixed bug wherein the right flags wasn't checked during
	  union init.

2002-04-10  Sergey Poznyakoff

	* imap4d/list.c: Removed imap_match().
	* imap4d/util.c (util_wcard_match): from list.c
	* imap4d/imap4d.h: Proto for util_wcard_match() and defines
	  for its return values.
	* imap4d/lsub.c: Output only those list items that match
	  given wildcard expression.

	* mailbox/mutil.c (mu_register_retriever): Register a retrieving
	  function.
	  (mu_retrieve): Retrieve information using stack of retriever
	  functions.
	  (mu_getpwnam,mu_register_getpwnam): Rewritten using retriever
	  functions.
	  (mu_getpwuid,mu_register_getpwuid): Likewise.

	* include/mailutils/mutil.h: Prototypes for general-purpose
	  retrieval functions.

2002-04-08  Sergey Poznyakoff

	* include/mailutils/locker.h (MU_LOCKER_KERNEL): New locker
	  type: implies kernel-locking.
	* mailbox/locker.c: Reorganized. Default locking type is DOTLOCK.
	  If the mailbox to be locked is not writable for the user,
	  locking type changes to NULL (no locking at all). If the
	  directory where the mailbox resides is not writable, the
	  locking type switches to KERNEL.

	* m4/gssapi.m4: Fixed typo.

2002-04-04  Sergey Poznyakoff

	* imap4d/lsub.c (imap4d_lsub): Return OK response, unless
   	  something grave has happened.

2002-03-28  Sergey Poznyakoff

	Several bugfixes:
	 1. mail -f~user/path coredumps
	 2. mail --mail-spool [other than mbox URL]://hostname did not
	    work (same for frm and others).
	 3. mail --mail-spool imap://hostname did not work (at least
	    with our imap4d).

	* imap4d/list.c (print_dir): Enclose empty filename
	  in doublequotes.
	* mailbox/folder_imap.c (imap_string): Return 1 if
	  the input is not a quoted string.
	  (imap_list): Ignore NIL delimiters, correctly handle
	  strings, not enclosed in doublequotes.
	* mailbox/mbx_default.c (user_mailbox_name): Operate
	  only on mbox: and path URLs.

	* guimb/main.c (main): initialize c.

2002-03-28  Sergey Poznyakoff

	* lib/mu_argp.c: Renamed --maildir to --mail-spool.
	* doc/texinfo/programs.texi: Documented --mail-spool option.
	* configure.in: Renamed --with-maildir to --with-mail-spool for
	  symmetry.

	* mail/mail.c: Some measures to help avoid the confusion about
	  --file option:
	  (Help output): Print additional note about --file taking
	  optional argument.
	  (parse_opt): Try to figure out if argument to -f was
	  separated by a whitespace. If so, print a warning and
	  switch to mail-reading mode. Hopefully this will help
	  avoid the confusion.
	  (main): Print more detailed diagnostics if mailbox_scan
	  failed.

	* include/mailutils/errno.h: New error code MU_ERR_NO_SUCH_USER
	* mailbox/muerrno.c: Likewise.
	* mailbox/mbx_default.c (split_shortcut): Properly handle "~/"
	  filenames.
	  (tilde_expand): Return MU_ERR_NO_SUCH_USER if an invalid username
	  was specified.

2002-03-25  Sergey Poznyakoff

	Was too quick about _exit :^)

	* configure.in: Check for _exit.
	* mailbox/mutil.c (mu_spawnvp): Protected _exit by #ifdef.

2002-03-25  Sergey Poznyakoff

	Bunch of fixes:

	Use of ~/.<program>rc caused problems with mail utility,
	whose native profile is ~/.mailrc:
	* lib/mu_argp.c: Renamed program-specific profiles to
	  ~/.mu.<program>rc.
	* doc/texinfo/programs.texi: Documented use of ~/.mu.<program>rc

	* libmu_scm/mu_scm.h: Added some includes, needed after
	  yesterday's modifications.
	* mailbox/locker.c: include <sys/wait.h>
	* mailbox/mutil.c: _exit is not portable.

	* mailbox2/include/mailutils/types.h: (new)
	* mailbox2/include/mailutils/Makefile.am: Added types.h
	* mailbox2/debug.c: Include <mailutils/debug.h>
	* mailbox2/include/mailutils/address.h: Removed typedefs. Included
	  <mailutils/types.h>
	* mailbox2/include/mailutils/attribute.h: Likewise.
	* mailbox2/include/mailutils/body.h: Likewise.
	* mailbox2/include/mailutils/debug.h: Likewise.
	* mailbox2/include/mailutils/envelope.h: Likewise.
	* mailbox2/include/mailutils/folder.h: Likewise.
	* mailbox2/include/mailutils/header.h: Likewise.
	* mailbox2/include/mailutils/iterator.h: Likewise.
	* mailbox2/include/mailutils/list.h: Likewise.
	* mailbox2/include/mailutils/lockfile.h: Likewise.
	* mailbox2/include/mailutils/mailbox.h: Likewise.
	* mailbox2/include/mailutils/mbox.h: Likewise.
	* mailbox2/include/mailutils/message.h: Likewise.
	* mailbox2/include/mailutils/observable.h: Likewise.
	* mailbox2/include/mailutils/observer.h: Likewise.
	* mailbox2/include/mailutils/pop3.h: Likewise.
	* mailbox2/include/mailutils/property.h: Likewise.
	* mailbox2/include/mailutils/refcount.h: Likewise.
	* mailbox2/include/mailutils/stream.h: Likewise.
	* mailbox2/include/mailutils/ticket.h: Likewise.
	* mailbox2/include/mailutils/url.h: Likewise.

2002-03-24 Sam Roberts

	* dotlock/dotlock.c, include/mailutils/locker.h, mailbox/locker.c:
	  Added lock mode MU_LOCK_EXTERNAL which calls an external program to
	  do the locking. Default is "dotlock", which is setgid mail so can
	  lock in a mailspool that users may not have write permissions to.
	* mailbox/mutil.c: mu_spawnvp(): new function - like system, but
	  doesn't use /bin/sh, just forks and calls execvp(), with
	  system-like signal handling.
	* configure.in: Check for vfork().
	* mail/echo.c: %d fmt not matching long arg
	* mail/msgset.y: fixed warning about included regex.h redefining
	  RE_DUP_MAX from limits.h
	* TODO: Added Alain's suggestions about read/write lock
	  optimization, etc.
	* include/mailutils/*.h, comsat/comsat.h, frm/frm.c, from/from.h,
	  imap4d/imap4d.h, url.h, mail/mail.h, mail.local/mail.local.h,
	  mailbox/attachment.c, mailbox/filter.c, mailbox/filter_rfc822.c,
	  mailbox/filter_trans.c, mailbox/folder.c, mailbox/folder_imap.c,
	  mailbox/folder_mbox.c, mailbox/folder_pop.c, mailbox/iterator.c,
	  mailbox/mailbox.c, mailbox/mailer.c, mailbox/mbx_default.c,
	  mailbox/mbx_file.c, mailbox/mbx_imap.c, mailbox/mbx_mbox.c,
	  mailbox/mbx_mh.c, mailbox/mbx_pop.c, mailbox/message.c,
	  mailbox/muerrno.c, mailbox/observer.c, mailbox/registrar.c,
	  mailbox/sendmail.c, mailbox/smtp.c, mailbox/stream.c,
	  mailbox/url_mbox.c, mailbox2/include/mailutils/authority.h,
	  messages/messages.c, pop3d/pop3d.h, readmsg/readmsg.h,
	  sieve/sieve.c, sieve/sieve.h, sieve/sv.h, sieve/svcb.c,
	  sieve/svctx.c, sieve/svfield.c, sieve/svfield.h, sieve/svutil.c:
	    Finished split of forward declarations into <mailutils/types.h>.
	    Now you have to include the header for the functions you want to
	    use, but you can change a header without causing a recompile of
	    everything. Also added some missing LGPL file headers.

2002-03-21  Sergey Poznyakoff

	* include/mailutils/locker.h: New flag MU_LOCKER_NULL
	  to be used with temporary mailboxes stored in memory.
	* mailbox/locker.c: Do not try to lock "/dev/null"
	  mailboxes. These are used in several programs
	  (namely, comsat, imap4d, pop3d).

	* mailbox2/pop3/Makefile.am: libpop3_la_SOURCES was
	  missing.

2002-03-19  Sam Roberts

	* doc/texinfo/programs.texi: Document use of ~/.<program>rc.

2002-03-18  Sam Roberts

	* sieve/sieve.c: Now using mu_argp_parse(), but not the capa[]
	  (yet).
	* lib/: mu_argp.c, mu_argp.h: Added ~/.<progname>rc to be last
	  config file.  Fixed segv for NULL capa and added header file blurb.
	* mailbox/locker.c: Implemented NFS-safe locking, using link()
	  from a uniquely named file.

2002-03-15  Alain Magloire

	Nuking of some useless warnings, and make "char *" --> "const char *"
	when required.

	* mailbox/include/imap0.h: warning: comma at end of enumerator list.
	* mailbox/locker.c (locker_set_expire_time): warning: declaration of `time'
	  shadows global declaration
	  (locker_get_expire_time): declaration of `time' shadows global declaration
	* mailbox/mbx_default.c (mu_path_maildir): Use "const" to reinforce a constant string.
	* include/mailutils/mailbox.h (mu_path_maildir): constant "const".
	* mailbox/mbx_mbox.c (mbox_append_message): status already declared.
	* mailbox/memory_stream.c (_memory_truncate): Cast before doing the comparison.
	* mailbox/parse822.c (parse822_time): useless ';' outside function definition.
	* mailbox/smtp.c (smtp_send_message): warning: declaration of `from' shadows a parameter
	  declaration of `to' shadows a parameter.

2002-03-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	* mail/util.c (util_do_command): Coredumped in false branches
	  of `if ... endif' statement. Fixed.

2002-03-13  Alain Magloire

	* lib/mu_dmb.c(mu_check_perm): Reinforce
	by using (const char *name) in the argument.
	* pop3d/pop3d.c: The variable state was already
	use as a global, use "astate" in function pop3_parse_opt().
	* mail/next.c: Wrong return value;
	* mail/previous.c: Wrong return value;

2002-03-13  Alain Magloire

	* mail/echo.c: Make it aware of escape char '\'.
	* mail/next.c: Should print the message also.
	* mail/previous.c: Should print the message also.
	* mail/util.c(util_do_command): Memory leak cmd
	was not free(cmd).  An empty line means now "next".

2002-03-13  Sergey Poznyakoff

	* include/mailutils/Makefile.am: Added types.h

	* argp/{argp-eexst.c,argp-namefrob.h,argp.h,
	  argp-fmtstream.c,argp-parse.c,argp-fmtstream.h,argp-pv.c,
	  argp-fs-xinl.c,argp-pvh.c,pin.c,argp-ba.c,argp-help.c,
	  argp-xinl.c}: Moved to ../lib
	* argp/Makefile.am: Removed
	* argp/.cvsignore: Removed
	* lib/{argp-eexst.c,argp-namefrob.h,argp.h,argp-fmtstream.c,
	  argp-parse.c,argp-fmtstream.h,argp-pv.c,
	  argp-fs-xinl.c,argp-pvh.c,pin.c,argp-ba.c,argp-help.c,
	  argp-xinl.c}: Added from ../argp
	* lib/Makefile.am: Added argp* files.
	* Makefile.am: Removed argp from SUBDIRS.
	* configure.in: Changed replace code for argp* functions.

	* comsat/Makefile.am: Removed @ARGPINCS@ and @ARGPLIBS@
	* dotlock/Makefile.am: Likewise.
	* frm/Makefile.am: Likewise.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* messages/Makefile.am: Likewise.
	* sieve/Makefile.am: Likewise.
	* mh/Makefile.am: Likewise.

	Synchronized mailbox2/include with changes dated 2002-02-27:

	* mailbox2/include/mailutils/mu_features.h: Added
	* mailbox2/include/mailutils/Makefile.am: Added mu_features.h

	Removed definition of __P, included <mailutils/mu_features.h>.
	Files affected:

	* mailbox2/include/mailutils/address.h,
	* mailbox2/include/mailutils/attribute.h,
	* mailbox2/include/mailutils/authority.h,
	* mailbox2/include/mailutils/body.h,
	* mailbox2/include/mailutils/debug.h,
	* mailbox2/include/mailutils/envelope.h,
	* mailbox2/include/mailutils/error.h,
	* mailbox2/include/mailutils/folder.h,
	* mailbox2/include/mailutils/header.h,
	* mailbox2/include/mailutils/iterator.h,
	* mailbox2/include/mailutils/list.h,
	* mailbox2/include/mailutils/lockfile.h,
	* mailbox2/include/mailutils/mailbox.h,
	* mailbox2/include/mailutils/mbox.h,
	* mailbox2/include/mailutils/message.h,
	* mailbox2/include/mailutils/mutil.h,
	* mailbox2/include/mailutils/observable.h,
	* mailbox2/include/mailutils/observer.h,
	* mailbox2/include/mailutils/parse822.h,
	* mailbox2/include/mailutils/pop3.h,
	* mailbox2/include/mailutils/property.h,
	* mailbox2/include/mailutils/refcount.h,
	* mailbox2/include/mailutils/stream.h,
	* mailbox2/include/mailutils/ticket.h,
	* mailbox2/include/mailutils/url.h,
	* mailbox2/include/mailutils/sys/address.h,
	* mailbox2/include/mailutils/sys/attribute.h,
	* mailbox2/include/mailutils/sys/authority.h,
	* mailbox2/include/mailutils/sys/debug.h,
	* mailbox2/include/mailutils/sys/envelope.h,
	* mailbox2/include/mailutils/sys/folder.h,
	* mailbox2/include/mailutils/sys/header.h,
	* mailbox2/include/mailutils/sys/list.h,
	* mailbox2/include/mailutils/sys/lockfile.h,
	* mailbox2/include/mailutils/sys/mailbox.h,
	* mailbox2/include/mailutils/sys/message.h,
	* mailbox2/include/mailutils/sys/observable.h,
	* mailbox2/include/mailutils/sys/observer.h,
	* mailbox2/include/mailutils/sys/refcount.h,
	* mailbox2/include/mailutils/sys/ticket.h,
	* mailbox2/include/mailutils/sys/url.h.

2002-03-11 Sam Roberts

	* include/mailutils/: address.h, locker.h, mailbox.h, message.h,
	  types.h: Got tired of recompiling EVERYTHING when I touched
	  locker.h, so started splitting common types into
	  <mailutils/types.h>.
	* include/mailutils/error.h: mu_verror() wasn't prototyped.
	* mailbox/: filter_trans.c, folder_imap.c, mailbox.c,
	  mbx_default.c, mbx_mbox.c, sendmail.c, stream.c, include/imap0.h:
	  Corrected type mismatches visible on 64-bit systems, and including
	  locker.h, some misc compiler warnings.
	* mail.local/mail.local.h: Need to include locker.h.
	* lib/strchrnul.c, mail/mail.c, mail/mail.h, mail/send.c,
	  mail/size.c, mail/util.c: Corrected type mismatches visible on
	  64-bit systems.
	* argp/argp-parse.c: alloca wasn't included.
	* messages/messages.c: Corrected type mismatches visible on 64-bit
	  systems.
	* imap4d/: copy.c, store.c, util.c: Corrected type mismatches
	  visible on 64-bit systems.
	* imap4d/: imap4d.h, select.c: Select now fails if the locking
	  fails.
	* TODO: more things todo

	(Steven Michael ROBBINS <stever@po-box-cgrl-lab.cs.mcgill.ca>
	 contributed a patch to fix 64-bit type mismatches.)

2002-03-09  Sergey Poznyakoff

	* lib/mu_argp.c: Process user's private initialization file
	  after processing the site-wide one.
	  (mu_create_argcv): was allocating an extra slot in argv array.
	* mail.local/main.c: Added `auth' capability.
	* doc/texinfo/programs.texi: Documented new configuration file
	  mechanism.

2002-03-09  Sergey Poznyakoff

	* configure.in: Check for libresolv.

	Based on the discussion with Sam, changed handling of
	mailutils' command line options. Command line is parsed using
	mu_argp_parse() call. mu_argp_parse scans global configuration
	file and processes any options found there before those from
	the command line. The options are separated by categories
	(capabilities):

	  mailutils  --maildir, --license
	  auth       --sql-.* family, --pam-service
	  logging    --log-facility
	  daemon     --daemon, --inetd, --port, --timeout

	If a capability name appears in configuration file, it
	should be prefixed with : to discern it from the utility
	name.

	* examples/mailutils.rc: Updated to reflect changes in the syntax.

	* lib/mu_argp.c: New function mu_argp_parse is intended to be used
	  by all programs in the package in order to do command line parsing.
	* lib/mu_argp.h: Removed unneeded prototypes. Added prototype for
	  mu_argp_parse().

	* comsat/comsat.c: Use mu_argp_parse.
	* frm/frm.c: Likewise.
	* guimb/main.c: Likewise.
	* imap4d/imap4d.c: Likewise.
	* mail/mail.c: Likewise.
	* messages/messages.c: Likewise.
	* pop3d/pop3d.c: Likewise.
	* mail.local/main.c: Likewise.
	  (deliver): Restored erroneously removed variable sb.

	* pop3d/apop.c (pop3d_apopuser): Changed scope of auto variable
	  rc.

2002-03-01 Sam Roberts

	* mailbox/mbx_mboxscan.c: Check return value of locker_lock().
	* Makefile.am, configure.in: Added dotlock.
	* mailbox/: mbx_mbox.c, mbx_mboxscan.c, mbx_mh.c: locker API
	  modified.  using mu_errstring() instead of strerror().
	* mailbox/mbx_pop.c: Using mu_errstring() instead of strerror().
	* pop3d/lock.c: locker_lock() api changed. pop3d uses MU_LOCKER_PID.
	* mail.local/main.c: Retrying the dot lock is now handled by the
	  locker_t.
	* dotlock/: .cvsignore, Makefile.am, dotlock.c: dotlock - setgid
	  program to dot lock a file, modelled on mutt_dotlock.
	* mailbox/locker.c, include/mailutils/locker.h: New modes,
	  including a retry mode (the default), removed fcntl and stub
	  read/write lock mode.  New function, to remove a lock even if not
	  owned (useful for the external dotlock utility).  New functions,
	  to set the expire time for MU_LOCKER_TIME, the flags, and the
	  retries and retry sleep for MU_LOCKER_RETRY.

2002-02-27 Sam Roberts

	* examples/: Addrs.good, addr.c: New addr return codes.
	* mail.local/mail.local.h: Including <mailutils/errno.h>.
	* mail/mail.h: Added <strings.h> for systems that have it.

2002-02-27  Sergey Poznyakoff

	* imap4d/status.c: Provide better diagnostics.
	* comsat/comsat.c: Use mu_path_maildir instead of maildir.
	* guimb/collect.c: Likewise.
	* imap4d/select.c: Likewise.
	* lib/mu_argp.c: Likewise.
	* mail.local/main.c: Likewise.
	* pop3d/apop.c: Likewise.
	* pop3d/user.c: Likewise.
	* lib/mu_argp.h: Removed extern char *maildir.

	* mailbox/mbx_default.c: Essentially rewritten.
	  mailbox_open_default() supports the following naming schemes:

	   %           --> system mailbox for the real uid
           %user       --> system mailbox for the given user
           ~/file      --> /home/user/file
           ~user/file  --> /home/user/file
           +file       --> /home/user/Mail/file
           =file       --> /home/user/Mail/file

	* mail/file.c: Do not handle '%name' separately:
  	  mailbox_open_default now does it.
	* mail/mail.c: Properly handle --user (open user's system
	  mailbox).
	* mailbox/mutil.c (mu_getcwd): New function. Return the name
	  of current working directory. The return value is malloc'ed
	  (mu_get_full_path): New function. Translate cwd-relative
	  pathname to its absolute equivalent. Both moved from
	  mbx_default.c.

	* mail.local/mailquota.c (check_quota): Initialize contentd
	  to all zeroes before mu_dbm_fetch. This is needed by
	  (at least) Berkeley DBM.

	* include/mailutils/mu_features.h: (new) Define system-dependent
	  macros, used by all mailutils. Currently, it contains only
	  __P() definition.
	* include/mailutils/Makefile.am: Added mu_features.h.

	Removed definitions of __P() scattered over multiple header
	files. Included <mailutils/mu_features.h> instead. Files
	affected:

	* imap4d/imap4d.h,
	* mail/mail.h,
	* pop3d/pop3d.h,
	* readmsg/readmsg.h,
	* include/mailutils/address.h,
	* include/mailutils/attribute.h,
	* include/mailutils/auth.h,
	* include/mailutils/body.h,
	* include/mailutils/debug.h,
	* include/mailutils/envelope.h,
	* include/mailutils/errno.h,
	* include/mailutils/error.h,
	* include/mailutils/filter.h,
	* include/mailutils/folder.h,
	* include/mailutils/header.h,
	* include/mailutils/iterator.h,
	* include/mailutils/list.h,
	* include/mailutils/locker.h,
	* include/mailutils/mailbox.h,
	* include/mailutils/mailer.h,
	* include/mailutils/message.h,
	* include/mailutils/mime.h,
	* include/mailutils/monitor.h,
	* include/mailutils/mutil.h,
	* include/mailutils/observer.h,
	* include/mailutils/parse822.h,
	* include/mailutils/property.h,
	* include/mailutils/registrar.h,
	* include/mailutils/stream.h,
	* include/mailutils/url.h,
	* mailbox/include/address0.h,
	* mailbox/include/attribute0.h,
	* mailbox/include/auth0.h,
	* mailbox/include/body0.h,
	* mailbox/include/debug0.h,
	* mailbox/include/envelope0.h,
	* mailbox/include/filter0.h,
	* mailbox/include/folder0.h,
	* mailbox/include/header0.h,
	* mailbox/include/imap0.h,
	* mailbox/include/iterator0.h,
	* mailbox/include/list0.h,
	* mailbox/include/mailbox0.h,
	* mailbox/include/mailer0.h,
	* mailbox/include/message0.h,
	* mailbox/include/mime0.h,
	* mailbox/include/monitor0.h,
	* mailbox/include/observer0.h,
	* mailbox/include/property0.h,
	* mailbox/include/registrar0.h,
	* mailbox/include/stream0.h,
	* mailbox/include/url0.h.

	* lib/argcv.h: Use PROTOTYPES to determine whether the compiler
	  understands function prototypes.

2002-02-25 Sam Roberts

	* sieve/examples/: .cvsignore, Makefile, Test, mbox.complex,
	  t-exists.sv, test.out: Exercise a little more of sieve.
	* mailbox/wicket.c, mailbox/message.c,
	  imap4d/imap4d.h, mail/mail.c, mail/mail.h, pop3d/apop.c,
	  pop3d/pop3d.h, readmsg/readmsg.c, readmsg/readmsg.h, sieve/sieve.c,
	  sieve/sv.h, sieve/svcb.c, sieve/svctx.c examples/Makefile,
	  examples/addr.c, examples/mbox-check.c, examples/mbox-dates.c,
	  examples/mbox-explode.c, examples/mimetest.c, examples/msg-send.c,
	  examples/url-parse.c, comsat/comsat.c, comsat/comsat.h, from/from.c,
	  guimb/collect.c, guimb/guimb.h:
	      Replaced strerror() with mu_errstring().
	* include/mailutils/errno.h, mailbox/Makefile.am,
	  mailbox/muerrno.c: Added muerrno.c to the build, added locker
	  error numbers.

2002-02-23 Sam Roberts

	* mailbox/: message.c, smtp.c: Include <mailutils/mutil.h> for
	  mu_getpwuid() prototype.
	* doc/texinfo/programs.texi: A # must be preceded by whitespace to
	  start an rcfile comment.

2002-02-20 Sam Roberts

	* TODO: Updated.

2002-02-23  Sergey Poznyakoff

	* lib/argcv.c: Yesterday's fix makes argcv_get include trailing
	  whitespace to the argv array. To fix:
	  (argcv_scan): Return len+1 if called on or after
	  the terminating null character.
	  (argcv_get): Initialize *argc to zero and continue scanning
	  until argcv_scan return is  > len. Thanks Sam for noticing.

	  More fixes:
	  (argcv_scan): Correctly handle comments without intervening
	  whitespace between the comment character and remaining text,
	  e.g.:
             set a=2 #comment

2002-02-22  Sergey Poznyakoff

	* lib/argcv.c (argcv_get): Bugfix, *argc must be initialized to 1.
	* lib/mu_argp.c (mu_common_argp_parser): Handle ARGP_KEY_FINI
	  case.
	  (mu_argp_error_code): new global. Specifies exit code for
	  exits on error.
	* lib/mu_argp.h: extern declaration for mu_argp_error_code.
	* comsat/comsat.c: Removed call to mu_normalize_maildir.
	* imap4d/imap4d.c: Likewise.
	* mail.local/main.c: Likewise.
	* pop3d/pop3d.c: Likewise.

	* imap4d/status.c: Syntax cleanup.

	* mail/mail.h: include mu_argp.h
	* mail/mail.c (main): Handle mailutils-common arguments.
	* frm/frm.c: Likewise.
	* guimb/main.c: Likewise.
	* messages/messages.c: Likewise.

	* frm/Makefile.am: Added ARGP stuff.
	* guimb/Makefile.am: Likewise.
	* imap4d/Makefile.am: Restored imap4d_DEPENDENCIES. Without it
	  @AUTHOBJS@ do not get into dependencies.

2002-02-21  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* sieve/Makefile.am: Link @ARGPLIBS@ before libmailutils.la to
	compensate for lack of interlibrary dependencies

	* configure.in: Detect either curses or ncurses

	* include/mailutils/Makefile.am: Add errno.h

2002-02-20 Sam Roberts

	* comsat/action.c, comsat/cfg.c, lib/argcv.c, lib/argcv.h,
	  lib/mu_argp.c, mail/send.c, mail/util.c, mh/mh_argp.c,
	  pop3d/popauth.c: argcv_get() now (optionally) strips comments while
	  parsing. Its the right place because it tokenizes, and whether a
	  char is a comment or not depends on whether its in the middle of a
	  token or not:  "hi # there"  # comment.
	* sieve/sieve.c: Now supports a ~/.sieverc file. Mine looks like:
	  # ~/.sieverc
	  #   Just moves my mail into my local spool.
	  -dTt --ticket=~/.tickets
	  -f pop://pop.uniserve.com
	  ~/.filter.sv
	* include/mailutils/debug.h: The debug levels are a bitmask, and
	  I'd started to enumerate them. Oops.
	* mailbox/muerrno.c: Began the task of returning more informative
	  error numbers. If this looks useful, we should all spread it
	  through the files we touch!
	* doc/texinfo/: mailutils.texi, programs.texi: The info docs were
	  getting installed in the "Miscellaneous" section of the info
	  directory, now they go in GNU Libraries, with links to the programs
	  under GNU Utilities, as seemed to be suggested by the texinfo docs.
	  Maybe there's a better convention?
	* include/mailutils/errno.h, mailbox/address.c, mailbox/mailbox.c,
	  mailbox/parse822.c: Began the task of returning more informative
	  error numbers. If this looks useful, we should all spread it
	  through the files we touch!
	* sieve/svcb.c: Was using the POSIX (1003.1b) ENOTSUP, changed to
	  ENOSYS, which will exist most places, as Jeff pointed out.

2002-02-20  Sergey Poznyakoff

	* imap4d/status.c (imap4d_status): Bugfix: was using improperly
	  created mailbox name for INBOX. Be more robust in handling
	  erroneous constructs. Thanks Sam for reporting.

2002-02-20  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* argp/Makefile.am: Remove inter-library dependency.  Until QNX
	has a recent libtool that will support this.  Thanks Sam,
	Sergey for reporting and finding the fix.

2002-02-20 Sam Roberts <sroberts@uniserve.com>

	* frm/Makefile.am, from/Makefile.am, imap4d/Makefile.am,
	  messages/Makefile.am, readmsg/Makefile.am, sieve/Makefile.am: The
	  exe_DEPENDENCIES lines prevent the _LDADD lines being used for
	  dependencies, so the exes don't' get rebuilt when the libraries are
	  rebuilt, unless explicitly listed.

2002-02-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>

	Use of system getpwuid() in many places of the code
	actually broke mu_getpwnam() paradigm. To fix it,
	a wrapper function, mu_getpwuid(), is introduced.
	It allows to use 'overloaded' getpwuid calls. In the
	simplest case, it boils down to calling getpuid().
	Applications, registering getpwname function by using
	mu_register_getpwname() are expected to register its
	getpwuid counterpart by using mu_register_getpwname().
	"Virtual domains" (mutil.c:407) seem to be an exception:
	there is no easy way to create appropriate getpwuid()
	function. This does not break the virtual domain
	functionality, however.

	* mailbox/mutil.c (mu_getpwuid): new function. Allows
	  to use overloaded getpwuid() in the same way as
	  mu_getpwnam() does it for getpwnam().
	  (mu_register_getpwuid): Overload getpwuid function.
	* include/mailutils/mutil.h: Proto for mu_getpwuid().
	* lib/mu_argp.c: New options: --sql-getpwuid for setting
	  sql query returning passwd data for a given uid, and
	  --pam-service for setting the PAM service name to be
	  used.
	* lib/mu_argp.h: Added extern for pam_service.

	* MySql/MySql.c (getMpwnam): Return username along with
	  other data.
	  (getMpwuid): New function.
	* MySql/MySql.h: Added extern declaration for sql_getpwuid_query.
	* examples/mailutils.rc: Fixed queries.

	* mail.local/main.c: register getMpwuid().
	* imap4d/imap4d.c: Initialize pam_service. Register getMpwuid().
	* pop3d/pop3d.c: Likewise.
	* imap4d/login.c: Use pam_service instead of hardcoding PAM
	  service name.
	* pop3d/user.c: Likewise.

	* imap4d/bye.c: Use mu_getpwuid() instead of getpwuid().
	* imap4d/copy.c: Likewise.
	* imap4d/rename.c: Likewise.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise.
	* mailbox/mbx_default.c: Likewise.
	* mailbox/message.c: Likewise.
	* mailbox/smtp.c: Likewise.
	* mailbox/wicket.c: Likewise.
	* mailbox2/mutil.c: Likewise.

2002-02-19  Sergey Poznyakoff

	* lib/mu_argp.c (mu_create_argcv): Fixed memory overrun.

2002-02-18  Sergey Poznyakoff

	* acconfig.h: Define rl_completion_matches for readline < 4.2
	* configure.in: Check for rl_completion_matches being present.
	* guimb/guimb.h: Include <string.h>.
	* mail/mailline.c: Changed declaration of ml_command_generator().
	  (ml_command_completion): use rl_completion_matches(). Patch
	  provided by John R. Daily.

2002-02-18  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* mail.local/Makefile.am: Fix install_exec_hook so that
	DESTDIR installs work correctly.

	* comsat/Makefile.am: Use libmailutils.la

2002-02-17  Sergey Poznyakoff

	* imap4d/list.c: Take into account st_dev. Patch provided
          by Sam Roberts.
	* acconfig.h: Placeholder for dev_t.
	* configure.in: AC_CHECK_TYPE(dev_t)

2002-02-17  Sergey Poznyakoff

	* imap4d/list.c: Prevent possible infinite recursion (Fixes
	  Bug#134330).
	* acconfig.h: Placeholder for ino_t.
	* configure.in: AC_CHECK_TYPE(ino_t)

	* comsat/comsat.c: Removed unused function.

2002-02-16  Sergey Poznyakoff

	* configure.in (LTLIBOBJS hack): escape '[' and ']'

2002-02-15  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* configure.in: Hack to make AC_REPLACE_FUNCS refer to .lo instead
	of .o

	* lib/Makefile.am: Use libtool objects instead.

2002-02-14  Sergey Poznyakoff

	* mail.local/main.c: Removed confusing print_help()
	  function.
	* imap4d/authenticate.c: Fixed indentation.

2002-02-13  Jeff Bailey  <jbailey@outpost.dnsalias.org>

        This change permits linking on systems that don't support
	interlibrary dependencies inherently like SCO Openserver.

	* sieve/Makefile.am: Link in libtool-based libmailutils.

	* readmsg/Makefile.am: Link in libtool-based libmailutils.

	* pop3d/Makefile.am: Link in libtool-based libmailutils.

	* mh/Makefile.am: Link in libtool-based libmailutils.

	* messages/Makefile.am: Link in libtool-based libmailutils.

	* mapi/Makefile.am: Link in libtool-based libmailutils.

	* mail.local/Makefile.am: Link in libtool-based libmailutils.

	* mail/Makefile.am: Link in libtool-based libmailutils.

	* lib/Makefile.am: Generate libtool-based libmailutils.

	* lib/.cvsignore: Add files that libtool generates

	* imap4d/Makefile.am: Link in libtool-based libmailutils.

	* guimb/Makefile.am: Link in libtool-based libmailutils.

	* from/Makefile.am: Link in libtool-based libmailutils.

	* frm/Makefile.am: Link in libtool-based libmailutils.

	* argp/Makefile.am: Use libtool

	* configure.in: Build libtool ARGP libraries

2002-02-11  Sergey Poznyakoff

	* imap4d/auth_gss.c (auth_gssapi): Use imap4d_gss_userok() to
	  check if the principal is allowed to use a given mailbox.

2002-02-11 Sam Roberts

	* pop3d/pop3d.c: Removed static prototype for non-existent
	  function.
	* doc/rfc/: rfc1891.txt, rfc1892.txt, rfc1893.txt, rfc1894.txt:
	  Added RFCs related to delivery and message status notification.
	* sieve/: sieve.c, svcb.c: better logging and error reporting
	* include/mailutils/debug.h, mailbox/debug.c,
	  mailbox/include/debug0.h: Added level argument of mu_debug_print()
	  to the print callback, useful for determining the level and
	  forwarding to syslog, or something.

2002-02-09 Sam Roberts

	* mailbox/mbx_default.c: removed unused variable

2002-02-08  Sam Roberts

	* TODO: More things I think should be done, or did.
	* mailbox/wicket.c: wicket: a ticket file now can contain multiple
	  URLs, when looking for a ticket, the first one which contains
	  authentication information for the incomplete url is returned.
	  wildcards are OK, so you can do:
            # my ~/.tickets
	    pop://sam:pass@pop.uniserve.com
	    *://sroberts:gnuless@mail.certicom.com
	    imap://;AUTH=anon@*

	  Actually, the last doesn't work, but it SHOULD. Another day.
	* include/mailutils/url.h, mailbox/url.c: url_is_ticket() - new
	  function, determines whether a url_t contains ticket information
	  for another url
	* doc/texinfo/url.texi: missing an @var{}
	* mailbox/url_mbox.c: gcc doesn't like signed chars as array
	  indexes, they could be negative
	* sieve/sieve.c: buglet, forgot to initialize opts

2002-02-07  Sergey Poznyakoff

	* imap4d/util.c (util_localname): return FQDN
	* imap4d/capability.c: Forgotten to commit.

2002-02-07  Sergey Poznyakoff

	* acconfig.h: Added WITH_GSSAPI define.
	* configure.in: New option: --with-gssapi
	* imap4d/auth_gss.c: (new)  GSSAPI authentication.
	* imap4d/Makefile.am: Added auth_gss.c
	* imap4d/append.c (imap4d_append0): Added missing call to
	  stream_open().
	* imap4d/authenticate.c: Basic framework for AUTHENTICATE command.
	  Added auth_gssapi hook.
	* imap4d/capability.c: AUTH=GSSAPI if supported.
	* imap4d/imap4d.c: ifile should be global as well as ofile. It
	  will be needed by authentication handlers.
	* imap4d/imap4d.h: Added new protos.
	* imap4d/util.c: Base64 encoding/decoding functions. filter_trans
          can't be used for this purpose, since its encoder inserts
          newlines after each 76 characters of output.

	* m4/gssapi.m4: (new) Check for gssapi libraries and header files.
	* m4/Makefile.am: Added gssapi.m4

	* mail/mail.c (main): Fixed 'No mail for...' reporting.
	* mailbox/filter_trans.c (trans_read): Control number of
          bytes read by stream_read().
	* mailbox/memory_stream.c (_memory_truncate): Bugfix.

	* TODO: Updated.

2002-02-07  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* guimb/.cvsignore: Add .libs

	* .cvsignore: Add stamp-h1

	* sieve/Makefile.am: Add sieve.h for make dist.

	* doc/texinfo/programs.texi: Put break between @end itemize and }
	to quiet error from texi2dvi.

	* doc/texinfo/mailer.texi: Add space to quiet error from makeinfo.

	* readmsg/.cvsignore: New File

	* doc/man/popauth.1: New file.

	* doc/man/Makefile.am: Add popauth.1

2002-02-05  Sergey Poznyakoff

	Use argp_ functions instead of getopt to parse command
	line arguments. This allows all mailutils programs
	to share common code and to have the same subset
	of command line options. Besides, this allows to have
	a single configuration file for entire package.
	The common command-line subsets are (struct argp_child):

	  1. mu_common_argp_child: handles --maildir,--log-facility,
	     --license and --sql-.* family of options. (The latter
	     are used to supply data for SQL getpwnam et al. functions
	     instead of hard-coding them).
	  2. mu_daemon_argp_child: handles --daemon,--inetd,--port
	     and --timeout options.

	* lib/mu_argp.c: (new) Handle command line arguments,
	  common for all mailutils programs.
	* lib/mu_argp.h: (new) Definitions for handling common
	  mailutils command-line arguments.
	* lib/Makefile.am: Added mu_argp.[ch]

	* comsat/Makefile.am: Added @ARGP.*@ substitutions
	* imap4d/Makefile.am: Likewise.
	* mail.local/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.

	* comsat/comsat.c: Use argp_parse instead of getopt_long.
	* imap4d/imap4d.c: Likewise.
	* mail.local/main.c: Likewise.
	* pop3d/pop3d.c: Likewise.

	* comsat/comsat.h: Added mu_argp.h and related stuff
	* imap4d/imap4d.h: Likewise.
	* imap4d/util.c: Likewise.
	* mail.local/mail.local.h: Likewise.
	* pop3d/extra.c: Likewise.
	* pop3d/pop3d.h: Likewise.

	* examples/mailutils.rc: (new) Sample mailutils configuration
	  file.
	* doc/texinfo/programs.texi: Added entry about mailutils.rc
	  configuration file.

	* MySql/MySql.c: Use configurable queries instead
	  of hardcoded ones.
	* MySql/MySql.h: Added new external declarations.
	  Removed unneeded defines.
	* configure.in: Removed notice about MySql.h

2002-02-04  Sergey Poznyakoff

	* mail.local/Makefile.am (mail_local_LDADD): Add @AUTHLIBS@.
	* mail.local/mail.local.h: Include "../MySql/MySql.h" when
	  necessary.
	* mail.local/main.c (main): Register virtual domain handlers.
	  Use mu_getpwnam.
	  (deliver): Set MU_LOCKER_PID bit on the locker.

2002-01-30  Sergey Poznyakoff

	* mail.local/main.c (main): Return EX_USAGE on command line
  	  usage errors.
	  (deliver): Return EX_TEMPFAIL if mailbox cannot be locked.
	* mailbox/url_mbox.c (_url_path_index): Use character translation
	  table to allow for '.', etc. in the usernames.
	  Fixed memory overrun.
	  (_url_path_rev_index): Use character translation table.

2002-01-26 Sam Roberts

	* mailbox/folder_imap.c:
	  folder_imap_create() - removed, code now in mailbox_imap_open().
	   imap_mailbox_name_match() - new function, uses strcasecmp() for
	   INBOX, since INBOX is itself in any case combination, and
	   fnmatch() otherwise.
	  imap_list() - mailbox name (an ASTRING) wasn't being unquoted.
	  folder_imap_list() - always failed to match it's name arg against
	    the mailbox name (imap_list needed to unquote the name, and the
	    name comparison needed to treat INBOX specially).
	* mailbox/mbx_imap.c: Moved the mailbox creation functionality of
	  folder_imap_create() into mailbox_imap_open(). Now
	  mailbox_imap_open() will fail if the mailbox doesn't exist, or
	  can't be created despite creation being requested (like the other
	  types of mailbox).
	* mailbox/include/imap0.h: m_imap_t - added state to keep track of
	  which folder function is in progress when a mailbox function calls
	  several folder functions.

2002-01-25 Sam Roberts

	* doc/rfc/rfc2060.txt: LIST section was 6.3..8., not 6.3.8, made it
	  hard to search for!

2002-01-23  Sergey Poznyakoff

	* mail.local/mail.local.h: Define correct EX_ values if
	  sysexits.h is missing.

2002-01-22 Sam Roberts

	* sieve/: sieve.c, sieve.h, sv.h, svcb.c, svctx.c: Implemented
	  redirect action, and added option for sieve to specify the mailer.
	* configure.in: Check for <sysexits.h>.
	* mail.local/mail.local.h: Work around missing <sysexits.h>.
	* mailbox/sendmail.c: State now tracks whether its been opened,
	  rather than segving.
	* include/mailutils/address.h: Removed prototype for function that
	  isn't defined anywhere.
	* mailbox/mailer.c: Return ENOENT if the url type wasn't
	  registered, like the other factory creation functions.
	* include/mailutils/list.h, mailbox/list.c: New function:
	  list_do(), calls a function on each item in the list.
	* mailbox/mutil.c: Needed <sys/stat.h> on QNX6.

2002-01-22  Sergey Poznyakoff

	* mail.local/mail.local.h: Added network-related includes.
	* mail.local/main.c: Implemented biff notification.
	* mail.local/script.c: Added configurable debugging.
	* guimb/main.c: Fixed help display.
	* doc/texinfo/programs.texi: Updated.

2002-01-21  Sergey Poznyakoff

	* acconfig.h: Added WITH_GUILE define.
	* configure.in: Define WITH_GUILE. Added mail.local.
	* Makefile.am: Added mail.local.

	* guimb/run_scm.c: Deleted.
	* guimb/Makefile.am: Removed run_scm.c
	* guimb/collect.c (guimb_catch_body, guimb_catch_handler) New
	  functions.
	* guimb/guimb.h: Added new declarations.
	* guimb/main.c: New command line options: --maildir (set
	  mailspool pathname), --source (set scheme source file name).
	  Use mu_process_mailbox instead of run_main.
	* guimb/scm/sieve.scm: Add "#!" magic to the beginning of
	  the output script. Improved diagnostics. Fixed bug in
	  next-token-from-port.

	* libmu_scm/mu_guimb.c: (new)
	* libmu_scm/Makefile.am: Added mu_guimb.c
	* libmu_scm/mu_message.c (mu_message_send): Initialize mailer
	  to NULL.
	* libmu_scm/mu_scm.h: Added proto for mu_process_mailbox.

	* mail.local: Added to repository.
	* mail.local/Makefile.am: Likewise.
	* mail.local/.cvsignore: Likewise.
	* mail.local/mail.local.h: Likewise.
	* mail.local/main.c: Likewise.
	* mail.local/mailquota.c: Likewise.
	* mail.local/script.c: Likewise.

2002-01-21  Sergey Poznyakoff

	* configure.in: New option --with-maildir allows to
	  specify the location of mailspool instead of the
	  default _PATH_MAILDIR.
	* acconfig.h: Include <paths.h>. Define MU_PATH_MAILDIR.
	* mailbox/mbx_default.c (mailbox_create_default):
	  Use MU_PATH_MAILDIR.
	* guimb/collect.c (collect_output): Likewise.
	* imap4d/imap4d.c: Likewise.
	* pop3d/pop3d.c: Likewise.

	* comsat/comsat.c: Introduced --maildir option.

	* pop3d/apop.c (pop3d_apop): Use maildir instead of
	  _PATH_MAILDIR (should have been committed 2002-01-15).

	* mailbox/parse822.c (str_append): Check for NULL.
	* mailbox/message.c (message_destroy): Fixed typo in comment.

	* imap4d/imap4d.h: Removed superfluous definition of
	  _PATH_MAILDIR.
	* pop3d/pop3d.h: Likewise.

	* lib/mu_dbm.c: (mu_fcheck_perm, mu_check_perm): Return
	  OK if mode is 0.

2002-01-19 Sam Roberts

	* sieve/: svcb.c, svutil.c: sv_mu_save_to() became
	  mailbox/message.c:message_save_to_mailbox()
	* sieve/sieve.c: Was setting debug on the mailbox before creating
	  it...
	* include/mailutils/message.h, mailbox/message.c:
	  message_save_to_mailbox(): convenience function, perhaps it should
	  go in mailbox/mutil.c, but nothing else in there is a mailutils API
	  wrapper.
	* include/mailutils/mailbox.h, mailbox/mailbox.c:
	  mailbox_has_debug(): wasn't a way to see if a mailbox had one
	* mailbox/folder_mbox.c: Give mbox folders a null authentication
	  object, mailbox_get_authority() will now return one instead of
	  succeeding, but not returning an object.
	* include/mailutils/folder.h, mailbox/folder.c: folder_has_debug():
	  there wasn't a way to see if folder had a debug object
	* include/mailutils/auth.h, mailbox/auth.c:
	  authority_create_null(): creates an authority that successfully
	  does nothing, useful for concrete types that need to return an
	  authority, but don't do any authentication.
	* mailbox/mbx_imap.c: Append to INBOX if an explicit path wasn't
	  supplied.
	* mailbox/mbx_mbox.c: X-UID is 5 chars, not 4, and this line will
	  match X-UIDL too, is that intended?
	* mailbox/url_mbox.c: including strings.h as well
	* mailbox/debug.c: Removed a FIXME that seems to have been fixed.

2002-01-18  Sergey Poznyakoff

	* mailbox/mutil.c: New function mu_tempfile().
	* include/mailutils/mutil.h: Declaration for mu_tempfile().
	* guimb/collect.c: Use mu_tempfile.
	* mail/send.c: Likewise.
	* mail/var.c: Likewise.
	* mailbox/body.c: Likewise.
	* mailbox/mbx_mh.c: Likewise.

	* mailbox/muerror.c: New function mu_verror().

	* guimb/util.c: Removed util_tempfile().
	* mail/util.c: Likewise.

2002-01-15 Sam Roberts

	* sieve/: sieve.c, sv.h, svcb.c, svctx.c, svutil.c,
	examples/Makefile, examples/Test, examples/mbox.complex,
	examples/t-complex.sv, examples/t-mailutils.sv: More testing and
	resultant polishing, -k switch to sieve to keep on going after an
	error sieving a message, don't discard a message unless the script
	completed all the actions successfully on a message, better error
	reporting and logging, workarounds around problems/differences
	between mailbox types, and a test script that exercises sieve on an
	mbox.

2002-01-15  Sergey Poznyakoff

	* imap4d/imap4d.c: New command line option --maildir (-m).
	  Register mbox_record at startup.
	* pop3d/pop3d.c: Likewise.
	* imap4d/imap4d.h: Extern declaration for maildir.
	* pop3d/pop3d.h: Likewise.

	* imap4d/select.c: Use maildir instead of _PATH_MAILDIR.
	* pop3d/user.c: Likewise.

	* mailbox/mutil.c: (mu_normalize_maildir) New function.
	  Makes sure the mailbox specification either is a
          pathname ending with '/', or matches regexp 'mbox:.*user='.
	* include/mailutils/mutil.h: (mu_normalize_maildir) Added
	  prototype.
	* mailbox/url_mbox.c: Handle extended URL specification.
          Implemented three hash schemes.

	* comsat/action.c: (expand_line): Removed unused variable.
	* libmu_scm/mu_mailbox.c: Fixed indentation.
	* libmu_scm/mu_address.c: (_get_address_part) Removed unused
          variable.
	* libmu_scm/mu_mime.c: (mu_scm_mime_print) Added missing return
          value.
	* pop3d/apop.c: Fixed typecasts.

2002-01-14 Sergey Poznyakoff

	* argp/argp-parse.c (parser_init): Fixed erroneous typecasts.
	* guimb/scm/Makefile.am: Added numaddr.scm to pkgdata_DATA.

2002-01-12 Sam Roberts

	* sieve/: sieve.c, sieve.h, svcb.c, svctx.c, svfield.c, svutil.c, sv.h:
	API of sieve engine now includes diagnostic callbacks, and is close
	to stable, implementation will be soon.

2002-01-05 Sam Roberts

	* sieve/: Makefile.am, sieve.c, sv.h, svcb.c, svctx.c, svutil.c:
	  Split the implementation of the mailutils-based sieve engine out of
	  sieve.c, which now contains only a utility that uses the engine to
	  sieve mailboxes.
	* sieve/sieve_interface.h: exposed sieve_errstr() in public API,
	  and declare sieve_errname()
	* sieve/script.c: lower-cased some error strings, and added
	  str_errname() to return the string of an error enum.

2001-12-31 Alain Magloire

	* doc/texinfo/programs.texi:  Describe the readmsg utility.
	* configure.in: Enable readmsg.
	* Makefile.in: Enable readmsg.
	* readmsg/readmsg.c: Implementation.
	* readmsg/msglist.c: Implement Elm weird expansion.

2001-12-29 Sergey Poznyakoff

	* guimb/scm/numaddr.scm: (new) Implements "numaddr" extension
	  test. The test counts Internet addresses in structured headers
	  that contain addresses.  It returns true if the total number of
	  addresses satisfies the requested relation, e.g.:
		if numaddr :over [ "To", "Cc" ] 50 { discard; }

	* guimb/scm/Makefile.am: Added numaddr.scm.
	* guimb/scm/redirect.scm: Use mu-message-send instead of
	  sieve-message-bounce.
	* guimb/scm/reject.scm: Likewise.
	* guimb/scm/sieve-core.scm: Introduced sieve-daemon-email
	  variable. Removed sieve-message-bounce, since recent modifications
	  to mailer_send_message() and mu-message-send provide all the
          required functionality.

	* libmu_scm/mu_message.c: Optional parameters may be #f.
	* pop3d/popauth.c: Reset the user privileges in case popauth is
	  installed setuid.

2001-12-28 Sergey Poznyakoff

	* comsat/comsat.h: Added include <argcv.h>
	* guimb/collect.c: (collect_create_mailbox) Removed unused auto
	  variable.
	* guimb/guimb.h: Added missing includes and prototypes.
	* lib/mu_dbm.h: Likewise.

	* libmu_scm/mu_message.c: (mu_message_send) Synchronized
	  with recent changes to mailer_send_message().
	  (mu_message_get_user_flag) Removed unused variable.
	* libmu_scm/mu_port.c: Removed unused variables.
	* mh/inc.c: Renamed static truncate to avoid name clash
	  with the libc function.
	* mh/mh.h: Added missing includes and prototypes.
	* mh/mh_argp.c: Added missing includes.
	* mh/mh_format.c: (strobj_create) Removed unused variable.

2001-12-17 Sam Roberts

	* doc/texinfo/mailer.texi, include/mailutils/mailer.h,
	  mailbox/mailer.c, mailbox/sendmail.c, mailbox/smtp.c,
	  mailbox/include/mailer0.h: mailer_send_message() now takes
	  optional from and to addresses, so they can be specified rather
	  than deduced from the env or message body.
	* mail/send.c: modified to compile against the changed
	  mailer_send_message()
	* examples/: Makefile, msg-send.c: Added msg-send example of using
	  the mailer_t API.
	* mailbox/url_sendmail.c: Now takes advantage of url_parse().
	* TODO: Idea for a popen() stream_t wrapper.
	* doc/texinfo/stream.texi, include/mailutils/stream.h: Forgot to
	  add stdio_stream_create() to the header, it opens a stream_t on an
	  existing FILE, and you can choose whether it fcloses() it or not.
	* examples/.cvsignore: updated

2001-12-16 Alain Magloire

	* mailbox/address.c:  Problem between signed and unsigned comparison.

2001-12-16 Sam Roberts

	* TODO: updated with some notes about the doc examples
	* examples/mimetest.c, include/mailutils/message.h,
	mailbox/attachment.c:
	  (message_get_attachment_name, message_aget_attachment_name): new
	    APIs, used to be private to mailbox/attachment.c.
	  (message_save_attachment): filename can be NULL, it defaults to
	    the attachment's name
	* doc/texinfo/stream.texi: updated - not much text, but at least
	the args are correct.
	* TODO: updated
	* mailbox/attachment.c: gnu indented
	* examples/: mbox-dates.c, mbox-explode.c: Added -d flags.
	* examples/mimetest.c: gnu indented

2001-12-16 Alain Magloire

	* mailbox/body.c: Call lazy_create() _before__ file_stream_create()
	to create the temporary file.
	* examples/mimetest.c:  An example on how to play with attachments.
	The code was written by Dave Inglis.

2001-12-16 Sam Roberts

	* comsat/: comsat.c
          imap4d/: append.c, fetch.c
	  include/mailutils/: stream.h
          mailbox/: attachment.c, body.c, file_stream.c, filter.c,
	    folder_imap.c, header.c, mapfile_stream.c, mbx_mbox.c,
	    mbx_mh.c, mbx_pop.c, memory_stream.c, smtp.c, stream.c, tcp.c
	  mailbox/include/: Makefile.am, stream0.h, tcp0.h

	Modified stream creation and opening. The *_stream_create()
	functions now take the specific arguments appropriate to them
	and setup a stream_t so that stream_open(), which now takes
	no arguments, can perform whatever actions are appropriate
	when opening that particular kind of stream.  I have tested the
	changes with the example programs and sieve, but not with the
	imap or pop servers.

2001-12-12 Sam Roberts

	* lib/: argcv.c, xmalloc.c: Fixed warnings about functions called
	without prototypes.
	* sieve/sieve.c: First crack at including wicket_t's ticket, not
	tested.
	* m4/debug.m4: Added -Wall in debug mode.

2001-12-10 Sam Roberts

	* comsat/.cvsignore, doc/rfc/.cvsignore, examples/.cvsignore,
	mail/.cvsignore, sieve/examples/.cvsignore: Ignored.
	* mailbox/tcp.c: I'm about to modify this file, so I'm GNU
	indenting it so I can see reasonable diffs. No other changes.

2001-12-03  Alain Magloire

	Surprisingly some OSes do not have getpass()
	drop a dumb version in lib/getpass.c for missing platforms.

	* configure.in: Check for getpass ();
	* lib/getpass.c: New file.
	* lib/Makefile.am: Updated.

2001-12-03  Sergey Poznyakoff

	* configure.in: Fixed inconsistency: --with-dbm flag
	was erroneously named --with-old-dbm in the help output.
	* lib/mu_dbm.c: New function mu_dbm_stat(): retrieve
	struct stat for a database file (or its *.pag part
	for ndbm/gdbm).
	* pop3d/popauth.c: Added --modify, --add, --delete
	and --create options. Allow only --modify when the user
	is not the owner of the database. This allows usual
	users to use popauth the way they use system passwd
	command, provided popauth is installed setuid.

	* guimb/scm/sieve.scm: Delete temp-file after running
	the script.

2001-11-26  Alain Magloire

	* doc/texinfo/mailer.texi: Replace @func with @code
	missing @end deftypefun

2001-11-26  Sam Roberts

	* doc/texinfo/mailer.texi: Hacked up work-in-progress of the mailer
	  API, but worth committing before I commit all the code.
	* mailbox/folder_pop.c: Added <strings.h> for QNX6.
	* .cvsignore, doc/.cvsignore: ignores sorted, and added _*
	* doc/texinfo/address.texi, include/mailutils/address.h,
	  mailbox/address.c:
	    address_aget_email() - like _get_email() but mallocs.
	    address_createv()    - like address_create(), but takes an
	                           array of strings.
	* examples/: Makefile, Urls, Urls.good: Updated url_parse() test
	  case.
	* comsat/comsat.h: Need <paths.h> and <strings.h> under QNX6.
	* doc/texinfo/url.texi, mailbox/url.c: Url syntax extended. If
	  scheme: is not followed by a "//", then the rest of the line is
	  returned as the path. Also a bare  scheme is now legal. So
	  "sendmail:" and "sendmail:/sbin/mail-inject" are now legal.

2001-11-21  Sergey Poznyakoff

	* comsat/comsat.c: Provide default for _PATH_MAILDIR for
	systems lacking it.

2001-11-20  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* configure.in: Set CPPFLAGS last.  $(sysconfdir) requires
	make to get it expanded, and it fubars autoconf tests.

2001-11-17  Alain Magloire

	* include/mailutils/mailbox.h: Remove prototype
	mailbox_destroy_folder().
	* mailbox/mailbox.c (mailbox_destroy_folder): Remove.
	* comsat/comsat.c (notify_user): remove mailbox_destroy_folder().

2001-11-17  Alain Magloire

	* mailbox/folder_imap.c (authenticate_imap_login): Pass the
	url in  ticket_pop.
	* mailbox/mbx_pop.c (pop_get_user): Pass the url in ticket_pop()
	* mailbox/mbx_pop.c (pop_get_passwd): Pass the url in ticket_pop()
	* mailbox/ticket.c (ticket_set_pop): Change the prototype.
	(ticket_pop): Change the prototype.
	* mailbox/wicket.c (get_pass): New function get passwd.
	(get_user): New function get user.
	(myticket_create): Take filenanme as argument and
	save the information.
	(_get_ticket): Removed.
	(myticket_pop): Take an url in argument.
	* mailbox/include/auth0.h: field _pop() prototype changed.
	* include/mailutils/auth.h: ticket_pop and ticket_set_pop
	prototype changed, add url. Include <mailutils/url.h>

2001-11-17  Alain Magloire

	Move util_cpystr() in the mu_ namespace.

	* include/mailutils/mutil.h: util_cpystr() to mu_cpystr().
	* mailbox/address.c: util_cpystr() to mu_cpystr().
	* mailbox/url.c: util_cpystr() to mu_cpystr().
	* mailbox/mutil.c: util_cpystr() to mu_cpystr().
	* mailbox/wicket.c: util_cpystr() to mu_cpystr().

2001-11-15  Alain Magloire

	After exchange with Sam Roberts, it should be possible to
	set a stream on the message and have the message_t do
	the rfc822 parsing.
	{
	  message_t mesg = NULL;
	  header_t header = NULL;
	  stream_t stream = NULL;
	  char buffer[512];
	  off_t off = 0;
	  size_t n = 0;

	  message_create (mesg, NULL);
	  file_stream_create (&stream, "/home/user/mh/mesg_1");
	  message_set_stream (mesg, stream, NULL);

	  stream = NULL;
	  message_get_header (mesg, &header);
	  header_get_stream (header, &stream);
	  while (stream_readline (stream, buffer, sizeof buffer, off, &n) == 0
	          && n > 0) {
	    printf ("%s", buffer);
	    off += n;
	  }
	  message_destroy (&mesg, NULL);
	}

	* mailbox/message.c (message_header_fill): New
	function implements a header if there was a stream set on the message.
	(message_body_read): Implements the stream_read of body_t of
	a message if there were a stream set.
	(message_is_modified): Check if an object was set to message_t
	and flag it as modified.
	(message_get_body): If a stream was set on the message create a
	temporary stream for the body.
	(message_set_body): Set the message modified.
	(message_set_header): Set the message modified.
	(message_set_envelope): Set the message modified.
	(message_set_attribute): Set the message modified.
	* mailbox/include/message0.h: field hdr_buf removed.

	* mailbox/wicket.c (wicket_destroy): return void.
	* include/mailutils/auth.h: wicket_destroy ()
	should return void.
	* mailbox/body.c (body_is_modified): Implemented.
	(body_clear_modified): Implemented.
	(_body_get_size0): New function.
	(_body_get_lines0): New function.
	(body_get_lines): Call _body_get_lines0().
	(body_get_size): Call _body_get_size0().
	(body_lines): Fall back on the stream and iterate
	the entire stream to find the  line numbers.
	(body_size):  Fall back on the stream for the size.

	* mailbox/folder_imap.c: Check if memory_stream_create()
	succeed and bailout if not.

	* mailbox/header.c (header_destroy): Free header->mstream.
	(fill_blurb): Remove redundant code, header_free_cache was
	doing the same.  Implement the code in term of a memory
	stream to hold the temporary header blurb.
	(header_write): Implemented.
	* mailbox/include/header0.h: Remove fields temp_blurb and
	temp_blurb_len, we use mstream a memory stream and stream_len.

	* mailbox/memory_stream.c (_memory_read): Cast the offset to size_t
	(_memory_readline): Cast the offset to size_t.
	(_memory_write): Cast the offset to size_t.

2001-11-15  Sergey Poznyakoff

	* imap4d/append.c: Removed mailbox_destroy_folder kludge. It is
	not needed due to yesterday's mods of mailbox/mailbox.c.
	* comsat/comsat.c: Likewise.

2001-11-14  Alain Magloire

	* mailbox/wicket.c (_get_ticket): Reset the buffer.
	* mailbox/mailbox.c (mailbox_get_stream): Get the stream
	for the mailbox object if it is null try the folder.
	(mailbox_set_stream): Always set it on the mailbox object.

2001-11-14  Alain Magloire

	To provide an easy way to create a ticket_t from
	a file, one can create a wicket_t and fetch ticket_t's
	for different users to set on the authority.
	{
	  wicket_t (&wicket, "/home/alain/.tickets");
	  wicket_get_ticket (wicket, &ticket, "alain", NULL);
	  authority_set_ticket (wicket, ticket);
	}

	* include/mailutils/auth.h: Added wicket_t prototypes
	functions: wicket_create(), wicket_destroy,
	wicket_get_ticket().  New prototype ticket_set_data ()
	ticket_get_data () ticket_set_destroy (), ticket_set_owner();
	* mailbox/wicket.c: New file, implements wicket_t.
	* mailbox/ticket.c: New file, implements ticket_t.
	* mailbox/auth.c: Implements only authority_t.
	* mailbox/Makefile.am: Update for ticket.c and wicket.c

2001-11-14  Sergey Poznyakoff

	* comsat/action.c: Expand \n only for `echo'.

2001-11-13  Alain Magloire

	Try to use const whenever appropriate to make it clear
	that a string should not be modified.  Nuke some
	trailing spaces, thanks to emacs.  Reduce the scope
	of functions with static.  GNU ident style for
	switch() promote a empty line after the break;


	* comsat/action.c (expand_escape): size and lncount
	could have been use uninitialized.
	(expand_escape): const char *cr.
	(expand_line): cr == "\n\r" make it const.
	variable i and size unneeded.
	variable c initialize to zero.
	(expand_line): obstack_1grow() pass *p instead of c.
	(default_action): const char*.
	(run_user_action): fprintf () missing argument.
	(open_rc): const char *filename.
	* comsat/comsat.c (username): const char *username.
	(mailbox_path): const prototype.
	(change_user): const prototype.
	(notify_user): const prototype.
	body and header unneeded variables.
	(find_user): const prototype.
	* comsat/comsat.h: Prototype updates.

2001-11-13  Sergey Poznyakoff

	* lib/daemon.c: Use of errx() is a bsd-ism.

	* comsat/action.c: Use maxlines instead of hardcoding the default
	value. Exit if execv() fails.
	* comsat/comsat.c: Missed newline in help output.

	* doc/texinfo/mailutils.texi: Common index is too hard
	to use. Split it into Function, Program and Concept indices.
	* doc/texinfo/programs.texi: Added nodes for comsatd. Put
	@pindex and page breaks wherever needed. Fixed use of @deffn.
	* doc/texinfo/.cvsignore: Updated

	* Makefile.am: Enabled comsat directory.

2001-11-12  Sergey Poznyakoff

	* examples/comsat.conf: (new) A sample configuration file
	for comsatd utility.
	* examples/dot.biffrc: (new) A sample per-user biff configuration
	file.
	* comsat/action.c: Implemented exec. Fixed trivial bug in
	expand_escape().
	* comsat/cfg.c: New keyword: allow-biffrc.
	* comsat/comsat.c: Likewise.
	* comsat/comsat.h: extern declarations.

	* lib/argcv.c: Ignore trailing whitespace and terminate output array
	with a NULL entry.

	* mail/mail.c: Use quotes when setting default string values.
	* mail/set.c: Bugfix: possible dereference of NULL pointer (on
	input: set var=<eol> ).

2001-11-12  Alain Magloire

	Support in POP3 mailbox client for APOP authentication.
	This should work, now:
	#MAIL='pop://alain;AUTH=+APOP@localhost' ./frm
	Pop passwd: secret  <--- apop secret
	...

	* mailbox/folder_pop.c (folder_pop_get_authority):
	Enable APOP code.
	* mail bx/mbx_pop.c: Add md5-rsa.h.
	(_pop_apop): New function to do APOP authentication.
	(_pop_user): Factor some code in pop_get_user() and
	pop_get_passwd() to share with _pop_apop().
	(pop_get_user): New function, get the user login.
	(pop_get_passwd): New function, get the user passwd.
	(pop_get_md5): New function get timestamp.
	* mailbox/url_pop.c: Add 2001 in Copyright.
	* pop3d/apop.c: Remove trailing spaces.

	* frm/frm.c: New option -d, --debug.
	To put the mailbox_t in debug mode, very practical
	to watch the traffic.

2001-11-11  Alain Magloire

	Most daemon will share the same code to daemonize(), we use
	a generic one, lib/daemon.c, so any bug fix will impact the
	others and reduce maintenance/duplication.

	* lib/Makefile.am: Addition daemon.c
	* lib/daemon.c: New file.
	* pop3d/pop3d.c (pop3d_daemon_init): Use lib/daemon.c:daemon() code
	instead.
	* imap4d/imap4d.c (imap4d_daemon_init): Use lib/daemon.c:daemon code
	instead.
	* comstat/comstat.c (comstat_daemon_init): Use lib/daemon.c:daemon code
	instead. Remove trailing spaces.

2001-11-11  Sergey Poznyakoff

	* comsat/action.c: (new) User-defined actions for comsat.
	* comsat/Makefile.am: Added action.c to sources
	* comsat/cfg.c: Removed confusing comment
	* comsat/comsat.c: Call run_user_action instead of
	dumping message contents to user's tty.
	* comsat/comsat.h: Include mailutils headers.

2001-11-11  Alain Magloire

	* lib/mu_dbm.c: Add <errno.h>.
	Remove trailing spaces.

2001-11-11  Sergey Poznyakoff

	* lib/mu_dbm.c: (new) These functions provide an
	intermediate layer between the DBM API and mailutils'
	applications.
	* lib/mu_dbm.h: (new) Declarations for DBM support.
	* lib/Makefile.am: Added mu_dbm.[ch]

	* acconfig.h: Added DBM-related WITH- defines
	* configure.in: New options: --with-gdbm, --with-ndbm,
	--with-old-dbm

	* pop3d/popauth.c: (new) A tool for manipulating authentication
	databases.
	* pop3d/Makefile.am: Added popauth.
	* pop3d/.cvsignore: Likewise.
	* pop3d/apop.c: Bunch of changes due to introduction of new
	DBM interface.
	* pop3d/pop3d.h: Likewise.

	* comsat/Makefile.am: Added comsat.h to sources

2001-11-10  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* pop3d/pop3d.h: Use SYSCONFDIR, not hardcoded /etc

	* doc/man/.cvsignore: New File

	* doc/Makefile.am: Add man to SUBDIRS

	* configure.in: Build doc/man/Makefile
	Provide -DSYSCONFDIR in CPPFLAGS

	* doc/man/pop3d.1: New File

	* doc/man/imap4d.1: New File

	* doc/man/Makefile.am: New File

	* pop3d/pop3d.c: Change timeout to unsigned int from size_t.
	Thanks to James Troup <james@nocrew.org>

2001-11-05  Alain Magloire

	* mailbox/mutil.c (mu_parse_imap_date_time): This one is so
	obvious that it is embarrassing.  In a struct tm { }
	tv_wday [0,6] Sunday == 0.  Change the Array for it to
	start with "Sun" instead of "Mon".

2001-11-05  Sergey Poznyakoff

	* configure.in: check for vsyslog

	* mailbox/muerror.c: New function mu_syslog_error_printer().
	Removed static qualifier from default_error_printer, added mu_
	prefix to it.
	* include/mailutils/error.h: Protos for mu_.*_error_printer
	functions.

	* imap4d/imap4d.c: Use mu_syslog_error_printer.
	* pop3d/pop3d.c: Likewise.
	* comsat/comsat.c: Likewise. Also fixed misplaced condition.

2001-11-02  Alain Magloire

	* mailbox/folder_imap.c: If authority is null default to
	user/passwd.
	* mailbox/folder_pop.c: If authority is null default to
	user/passwd.
	* mailbox/mbx_pop.c(pop_open): Do not try to reconnect.

2001-11-02  Sergey Poznyakoff

	* comsat/comsat.c: Restart on sighup when in daemon mode.
	Fight floods by increasing delays exponentially.
	Fill in `hostname' on startup.
	* comsat/comsat.h: include <ctype.h>.
	* comsat/cfg.c: Removed include <ctype.h>.

2001-11-01  Alain Magloire

	There were confusion, about the authority_t and the ticket_t.
	An authority_t is an object that implements an authentication
	mechanism i.e. APOP, SASL, User/Passwd.  To retrieve or get
	information from the client/user, authority_t will use the
	ticket_t, it will call ticket_pop ().  For example, on an
	authority_t object that implements the user/passwd mechanism
	ticket_pop () will be call two times once for the user and
	the other for the passwd, by the authority_t object.

	So far so good, but the problem here was we had
	mailbox_{g,s}et_ticket(), folder_{g,s}et_ticket() and
	mailbox_{g,s}et_authority() and folder_{g,s}_authority().
	For example for a ticket , depending on when xx_set_ticket ()
	was done, a ticket_t could have been set on the mailbox_t structure
	or on the folder_t structure.  This was leading to use the wrong one,
	folder->ticket or mailbox->ticket.  Same problem occurs for
	authority_t.  To clear this up, ticket_t can only be set on the
	authority_t and authority_t can only be on a folder.  Having only one
	way to get at the authority or at the ticket fix the race conditions:
	{
	   // No error checking is done.
	   mailbox_t mbox;
	   folder_t folder;
	   authority_t auth;
	   ticket_t ticket; ..
	   ..
	   // Setting the ticket
	   mailbox_create (&mbox, where);
	   mailbox_get_folder (mbox, &folder);
	   folder_get_authority (folder, &auth)
	   authority_set_ticket (auth, ticket);
	   ....
	}

	* include/mailutils/mailbox.h: Remove mailbox_{g,s}et_ticket().
	mailbox_{gs}et_authority ().
	* include/mailutils/folder.h: Remove folder_{gs}et_authority().
	* mailbox/mailbox.c (mailbox_get_folder): New function.
	(mailbox_get_ticket): Removed.
	(mailbox_set_ticket): Removed.
	(mailbox_set_authority): Removed.
	(mailbox_get_authority): Removed.
	* mailbox/folder.c (folder_get_ticket): Removed.
	(folder_set_ticket): Removed.
	(folder_destroy): Removed destruction of ticket.
	* mailbox/folder_imap.c (folder_imap_get_authority): New function.
	(_folder_imap_init): Create authority.
	* mailbox/folder_pop.c (folder_pop_get_authority): New function.
	(folder_pop_open): New function.
	(folder_pop_close): New function.
	(_folder_pop_init): Create authority.
	* mailbox/mbx_imap.c (_mailbox_imap_init): Remove the creation
	of authority here, moved to _folder_imap_init().
	* mailbox/mbx_pop.c (_mailbox_pop_init): Remove the creation
	of authority here, moved to _folder_imap_init().

	* messages/messages.c (messages_count): Argument should
	be const.

2001-11-01  Sergey Poznyakoff

	* configure.in: Added check for utmp.h & utmpx.h

	* mailbox/mutil.c: New function: mu_normalize_path() moved
	from imap4d/util.c
	* include/mailutils/mutil.h: Added declaration for
	mu_normalize_path().
	* imap4d/imap4d.h: Removed declaration of util_normalize_path().
	* imap4d/login.c: Use LOG_FACILITY instead of LOG_MAIL.
	Use mu_normalize_path().
	* imap4d/namespace.c: Use mu_normalize_path().
	* imap4d/util.c: Removed declaration of util_normalize_path().

	* mailbox/mailbox.c: mailbox_get_stream(): Fixed funny bug,
	(introduced Dec 4, 2000).

	* mailbox/mbx_imap.c: Use ENOSYS instead of ENOTSUP.

	* comsat/: New directory. An implementation of comsat daemon.
	* comsat/Makefile.am: (new)
	* comsat/.cvsignore: (new)
	* comsat/comsat.c: (new) Main module
	* comsat/cfg.c: (new) Configuration and ACL routines.
	* comsat/comsat.h: (new) Declarations for comsat.

2001-11-01 00:15  sroberts

	* TODO: Added suggestion for a mailcap based file viewer.

2001-10-31  Alain Magloire

	* messages/message.c (messages_count): getenv ("MAIL") may return NULL.
	In this case we were trying to printf (" ..%s\n", NULL); GNU/Linux
	seems to cope with it but QNX/Neutrino sigsegv miserably.  Fix the code
	by getting the url of the mailbox and calling url_to_string().

	* mailbox/mbx_default.c: If the argument is NULL __or__ an empty
	string check MAIL and FOLDER environment.

	* imap4d/namespace.c: Put namespace_enumerate() and namespace_enumerate()
	static scope.

	* mail/msgset.y: search "mail.h" in the current dir.

2001-10-31  Alain Magloire

	* mailbox/mbx_imap.c (delete_to_string): Try to turn a sequence
	of number to IMAP msgset. Call add_number for the work.
	(add_number): New function to add number to string for
	IMAP msgset.

2001-10-30  Alain Magloire

	* mailbox/body.c: Remove unneeded prototype.
	* mailbox/mbx_imap.c (mailbox_imap_close): Clear the callback
	string structure.
	(imap_scan0): Clear the callback string structure.
	(imap_append_message): Remove unused variable.

2001-10-30  Sam Roberts

	* mailbox/: folder_imap.c, mbx_imap.c, include/imap0.h: Implemented
	AUTH=ANON, the anonymous SASL mechanism.
	* TODO: Updated AUTH=ANON todo, and added some wish-list utilities.
	* doc/rfc/: rfc2195.txt, rfc2222.txt, rfc2444.txt, rfc2595.txt,
	rfc2808.txt, rfc2831.txt, sasl-mechanisms: added SASL rfcs and
	registry
	* examples/.cvsignore: mbox-check
	* examples/: Makefile, mbox-check.c: Added new example,
	mbox-check.c

2001-10-30  Alain Magloire

	* acconfig.h: #define ssize_t.
	* configure.in: Add AC_CHECK_TYPE(ssize_t, int);

2001-10-26  Sergey Poznyakoff

	Fixed behavior in send mode when the stdin is not a terminal
	(i.e. when used as mail addr@dom.ain < message): do not ask
	for cc, bcc, and do not echo the contents of the message
	(when compiled with readline).

	* mail/mail.c: Use ml_readline(). Check for `!interactive' and
	force appropriate settings _after_ sourcing mail.rc files.
	Force `set quiet' if in non-interactive mode.
	* mail/mail.h: Declaration for ml_readline().
	* mail/mailline.c: New functions ml_readline_internal(),
	ml_readline().
	* mail/send.c: Use ml_readline().
	* mail/source.c: Do not complain if the file does not exist.

2001-10-24  Alain Magloire

	* configure.in: Check for getdelim().
	* lib/getline.c: change the return values from int to ssize_t
	to follow GNU LibC.

2001-10-23  Alain Magloire

	The message_t object makes no guaranty about the size and the lines
	that it returns, if it is pointing to non-local file messages,
	i.e POP3, IMAP4, the entire message may not have been downloaded yet.
	IMAP is very susceptible on the size, example:
	 A003 APPEND saved-messages (\Seen) {310}
	 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
	 From: Fred Foobar <foobar@Blurdybloop.COM>
	 Subject: afternoon meeting
	 To: mooch@owatagu.siam.edu
	 Message-Id: <B27397-0100000@Blurdybloop.COM>
	 MIME-Version: 1.0
	 ......
	(1) If the IMAP4 server does not get the right size advertise in the
	string literal, it will misbehave.
	(2) Since we are assuming that the message will be in (unix)native
	file system format meaning ending with NEWLINE, we will have
	to do some calculations about the RFC822.SIZE of the message.
	(3) As pointed above, it is not possible to rely on message_size()
	nor message_lines() to return the right count and even missing by
	one can be deadly.
	So we download the message to a floating message to guaranty that
	we know the exact size when transmitting it back the IMAP server,
	this is the only sane thing to do IMHO.  We could always
	be smart; check if the message is local (i.e from the local file
	system: mbox, mh, etc ..) and was not modified.  If those two
	requirements are true we can assume that the sizes/lines are right.
	But for now do it simple, and create a temporary file/message_t.

	* mailbox/mbx_imap.c (imap_append_message):  If the message
	is from the same IMAP server optimize by doing COPY.  If not
	call imap_append_message0() save the original message to a
	floating message i.e. file, and use that floating message for
	the append.  Temporary message is destroyed when finish.
	The drawback is this function is no long nonblocking safe.

2001-10-23  Alain Magloire

	* mailbox/body.c: body_lines () nd body_size () were not
	properly overridden given the wrong size and line number, fixed.
	* mailbox/mbx_imap.c (mailbox_imap_close): Not to send another SELECT
	but rather just close the mailbox if not selected.
	(imap_scan0): If there is no messages in the mailbox no need to
	send the FETCH 1:*.
	* mailbox/message.c (message_is_modified): Protect against null
	pointer.
	* mailbox/mutil.c: Add <errno.h> if we use errno directly.
	(mu_get_user_email): size not used, nuked.

	* TODO: Some stuff todo 8).

2001-10-23  Sergey Poznyakoff

	* mailbox/mutil.c: New function mu_get_user_email.
	* include/mailutils/mutil.h: Prototype for mu_get_user_email.
	* mail/alt.c: Determine full user email address (mail_set_my_name).
	* libmu_scm/mu_address.c: New function mu-username->email, deduces
	user's email from his username.
	* libmu_scm/mu_message.c: New function mu-message-destroy.
	mu_scm_message_free(): Destroy the underlying message if its owner
	is NULL.
	* guimb/scm/sieve-core.scm: Use mu-username->email to initialize
	sieve-my-email.
	* guimb/scm/redirect.scm: Use close-pipe instead of close-output-port.
	Use mu-message-destroy.
	* guimb/scm/reject.scm: Delete message after sending reject
	notification.

	MH: Implemented user profiles.

	* mh/mh.h: New prototypes.
	* mh/mh_argp.c: Honor `progname:' entries in the user's profile.
	* mh/mh_init.c: Read user's profile. Use values from there instead
	of hardcoded ones.
	* mh/inc.c: Do not call mh_init() explicitly.
	* mh/scan.c: Likewise.

2001-10-22  Jeff Bailey  <jbailey@outpost.dnsalias.org>

	* doc/texinfo/Makefile.am: Remove version.texi, it's implied.

	* libmu_scm/Makefile.am: Clean @GUILE_PROCEDURES_TXT@

	* guimb/Makefile.am: Clean @GUILE_PROCEDURES_TXT@

2001-10-21  Sergey Poznyakoff

	Changes for compatibility with automake 1.5:

	* guimb/Makefile.am: Restored -I.
	* mh/Makefile.am: Renamed ALL_LDADD to mh_LIBS.

2001-10-20  Alain Magloire

	* configure.in: Set to 0.0.9c.

	* doc/texinfo/mbox.texi: Updated the docs for mbox(Unix).
	* doc/texinfo/pop.texi: Updated the docs for pop3.

	* imap4d/expunge.c: Bug:  Expunge was not sending the
	untag "* %d EXPUNGED" for message deleted.  Call imap4d_sync ()
v	which will do the right thing.
	* imap4d/noop.c: Bug: It should call imap4d_sync () to notify
	the client of any changes.
	* imap4d/sync.c (notify_deleted): Typo should be EXPUNGED
	with a D.
	(imap4d_sync): Bug: Checked also if the number of messages changed.

	* mailbox/folder_imap.c (imap_flags): Bug: Rewrite it to be generic
	and sets the flags for the attribute.
	(imap_fetch_flags): Call imap_flags().
	(imap_permanentflags): Call imap_flags().

	* mailbox2/include/mailutils/mbox.h: Update prototypes.
	* mailbox2/include/mailutils/sys/mbox.h: Update prototypes.
	* mailbox2/include/mailutils/pop3.h: Update prototypes.
	* mailbox2/mbox/mbox_expunge.c (mbox_expunge): Calls mbox_expunge0 ().
	(mbox_save): Calls mbox_expunge0().
	* mailbox2/mbox/mbox_scan.c (mbox_scan): Calls mbox_scan0 ().
	(mbox_count): Calls mbox_scan0().
	* mailbox2/pop3/pop3_capa.c: Provide a special iterator.
	* mailbox2/pop3/pop3_lista.c: Provide a special iterator.
	* mailbox2/pop3/pop3_uidla.c: Provide a special iterator.

2001-10-19  Sergey Poznyakoff

	MH inc is fully functional:

	* mh/inc.c: Implemented -audit.
	* mh/mh_init.c: New functions mh_audit_open(), mh_audit_close().
	* mh/mh.h: Protos for new functions.
	* mh/mh_format.c: Minor bugfix in builtin_mbox().

	* guimb/Makefile.am: Removed superfluous -I.

2001-10-19  Sergey Poznyakoff

	Implemented saving of MH context.

	* mh/inc.c: Fixed truncate option. Implemented -changecur. The only
	feature inc lacks so far is -audit.
	* mh/mh_format.c: Minor fix in builtin_match().
	* mh/mh_getopt.c: Fixed option recognition heuristics.
	* mh/mh_init.c: New globals: ctx_name -- keeps full context file
	name, ctx_header -- keeps current context (as a MU header).
	mh_init(): Use new globals.
	New functions: mh_save_context, mh_write_context_file, mh_check_folder,
	mh_getyn.
	* mh/mh.h: Prototypes for new functions.

2001-10-17  Sam Roberts

	* README-alpha : Update cvs repository path.

2001-10-17  Sergey Poznyakoff

	After discussion with Jeff, removed maintainer-mode quirks
	and introduced --enable-debug switch.

	* configure.in: Use MU_DEBUG_MODE.
	* m4/maintainer.m4: removed.
	* m4/debug.m4: (new) Handle --enable-debug option. When
	the option is specified, adds -ggdb to the invocation of
	gcc, and removes any optimization directives from CFLAGS.
	* m4/Makefile.am: Removed maintainer.m4, added debug.m4
	and regex.m4 (committed earlier, but apparently forgotten
	to add).
	* guimb/Makefile.am: Removed MAINTAINER_MODE conditionals.
	* libmu_scm/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise.

	* imap4d/imap4d.h: Added proto for strtok_r.

	* .cvsignore: Updated (config.sub, ltconfig, etc.)

2001-10-16  Alain Magloire

	According to rfc2060 the minimum timeout is 30 minutes.  But
	it is not unusual to see server with a shorter timeout.  When
	the timeout occurs, the server sends a BYE.  To catch this
	all functions in folder_imap.c and mbx_imap.c use a prologue
	folder_open() or imap_messages_count to check if the server
	timed out and reconnect.  This is not bullet proof since the
	"* BYE" will be act upon on the second request, the first
	is where we catch "* BYE".  On mailbox2 this behaviour will
	be disable/enable with a property and make more reliable,
	so client set the property "AUTORECONNECT".

	* mailbox/folder_imap.c: Prologue to must functions calling
	folder_open().
	* mailbox/mbx_imap.c: Prologue to must functions calling
	folder_open() or imap_messages_count.
	(section_name): Buglet passed the wrong argument to sizeof().

	For debugging purposes, to see the traffic
	* mailbox/folder_imap.c:
	Print to stderr the command sent to the IMAP server.
	#define DEBUG_SHOW_COMMAND 1
	Print to stderr the responses received from the IMAP server.
	#define DEBUG_SHOW_RESPONSE 1
	Print to stderr the literal/quoted string received from the IMAP
	server. #define DEBUG_SHOW_DATA 1

2001-10-16  Sergey Poznyakoff

	* doc/texinfo/mailutils.texi: Eliminated overfull \hboxes in printed
	output.
	* doc/texinfo/programs.texi: Likewise. Use @ref instead of @xref
	wherever appropriate.

2001-10-15  Alain Magloire

	* mailbox/sendmail.c: Use vfork() instead of fork().  In a
	multithreaded environment, fork () may not be supported.
	Since we do fork()/exec(), vfork() will do fine.
	This was trigger by QNX/Neutrino, where fork()ing is not
	supported after threads have been created.

2001-10-15  Sam Roberts

	* doc/texinfo/programs.texi: Typo and semantics corrections.

2001-10-15  Alain Magloire

	* mailbox/mbx_imap.c (imap_message_readline imap_body_readline):
	Bad analysis on my part. Functions removed.

	* configure.in: Bump to 0.0.9b

	* TODO: Put a note apropos mailbox2.

2001-10-14  Alain Magloire

	* mailbox/mbx_imap.c(imap_message_readline imap_body_readline):
	The buffer was not null terminated if no newline was found.

2001-10-14  Alain Magloire

	The code for IMAP, is a pain, the rewrite should clean all those
	hacks.  Something to remember for the mailbox2 is to do some
	smart caching, the current buffered stream is not good enough.

	* configure.in: VERSION is set to 0.0.9a for the alpha.
	* frm/frm.c: Prototype for usage(). get_personal() should use
	const char *.
	* mail/mail.c (main): Use mailbox_scan() instead of
	mailbox_messages_count () it is faster for IMAP.

	* mailbox/mbx_imap.c(imap_get_message0): Remove the
	stream_setbufsiz() it is no longer used.
	(imap_message_readline imap_body_readline):
	Bug fix, readline will only consume up to '\n' even though the
	buffer is bigger.  So we have to adjust the offset/lines/size
	to reflect what we consume.  This is not very good for example
	doing:
	{
	   off_t offset = 14;
	   char buffer[512];
	   stream_readline (stream, buffer, sizeof buffer, offset, NULL);
	   ...
	}
	Will send to the impap server.
	C: g445 FETCH 4 BODY.PEEK[2]<0.2048>
        S: * 4 FETCH (BODY[2]<0> {739}
	S: g445 OK FETCH completed

	This is waste since the first line is only 37 bytes.  We will
	have to come up on the second API with some smart caching.

	* mailbox/memory_stream.c (_memory_write): Nasty bug
	was not updating the stream size.
	* mailbox/stream.c(stream_readline): Take care of known
	case where the buflen is 0 or 1.

2001-10-14  Alain Magloire

	The code for property.c has been changed for a more simple approach,
	it is the same approach as mail/util.c(environment) settings.
	The old code was simply overkill, property_t was seldom used,
	if at all, no need for heavy hash table and all that jazz.

	* mailbox/property.c:  New code, the same as mail/util.c environment.
	* mailbox/mbx_mbox.c (_mbx_init): Remove property_add_defaults() etc ..
	no longer in use in the initialization code.
	* mailbox/mbx_imap.c: Likewise
	* mailbox/mbx_pop.c: Likewise
	* mailbox/mbx_mh.c: Likewise
	* mailbox/header.c: Removed property code.
	* mailbox/body.c: Removed property code.
	* mailbox/message.c: Removed property code.
	* mailbox/filter.c: Changed the code according to the new property_t.
	* mailbox/filter_rfc822.c: Changed the code according to the new
	property_t structure.
	* include/mailutils/header.h: Removed property.
	* include/mailutils/body.h: Removed property.
	* include/mailutils/message.h: Removed property.
	* include/mailutils/property.h: Removed property_add_defaults()
	property_set_valued () takes one more argument for overwrite.
	* mailbox/include/header0.hy: Removed property field.
	* mailbox/include/body0.hy: Removed property field.
	* mailbox/include/message0.hy: Removed property field.
	* mailbox/mailbox.c(mailbox_get_property mailbox_set_property):
	Changed Property code.
	* mailbox/mailer.c(mailer_set_property mailer_get_property):
	Changed Property code.

	* mailbox/folder_imap.c (imap_search imap_expunge imap_status): Stubs
	SEARCH is not implemented yet, STATUS neither and EXPUNGE is not used.

	* mailbox/list.c: Renamed variable index to indx to shutup
	gcc that was confused with index() when warning level was high.
	* mailbox/md5-rsa.c: Likewise.

	* mailbox/mailbox.c (mailbox_get_debug mailbox_set_debug):
	The debug object was being set on the folder not the mailbox.

	* mailbox/mbx_imap.c (imap_messages_count): Attempt to reconnect
	if the connection timeout.  Is this wise?
	(imap_scan0): Moved gut of imap_scan() code here.
	(imap_scan): Stub calling imap_scan0() with notification enable.
	(imap_expunge): After CLOSE, call imap_scan0() with notification
	disable.

	Memory leak in parse822, this was a real pain to trace, because
	of the recursive nature of the algorithm.  Sam should buy me
	a beer for this.

	* mailbox/parse822.c: Used more assert to catch errors.
	(parse822_group): phrase was not free() in case of failure.
	(parse822_mail_box): Dead "else if" branch removed and free phrase.
	(parse822_route): accumulator was not being freed.
	(parse822_local_part): Moved down st_free(more).
	(parse822_domain): Moved down st_free(more).

2001-10-14 Sergey Poznyakoff

	Small fixes:

	* frm/frm.c: Do not output extra newline when running with
	--field option.
	* mail/reply.c: Do not prefix subject line with Re: if it
	already starts with it
	* mail/send.c: Handle ~x escape properly.
	* mail/table.c: Removed entry for ~x: it is handled by send.c
	* mail/var.c: Delimit addresses with space (~t, ~c and ~b escapes).
	Removed var_exit().

	* guimb/main.c: Fixed typo in --help output.
	* guimb/scm/README: (new).

	Reorganized /doc. Added some documentation (primarily, program.texi)

	* configure.in: Added doc/*/Makefile
	* doc/*.texi, doc/*.rfc: removed.
	* doc/Makefile.am: Reorganized doc structure
	* doc/.cvsignore: Likewise.

	* doc/texinfo: New directory
	* doc/texinfo/Makefile.am: (new)
	* doc/texinfo/.cvsignore: (new)
	* doc/texinfo/.ispell_english: (new) User dictionary for spell-checking
	docs.
	* doc/texinfo/address.texi: Moved from ..
	* doc/texinfo/attribute.texi: Likewise.
	* doc/texinfo/auth.texi: Likewise.
	* doc/texinfo/body.texi: Likewise.
	* doc/texinfo/c-api.texi: Likewise.
	* doc/texinfo/encoding.texi: Likewise.
	* doc/texinfo/envelope.texi: Likewise.
	* doc/texinfo/ex-address.texi: Likewise.
	* doc/texinfo/ex-url.texi: Likewise.
	* doc/texinfo/folder.texi: Likewise.
	* doc/texinfo/framework.texi: Likewise.
	* doc/texinfo/headers.texi: Likewise.
	* doc/texinfo/imap4.texi: Likewise.
	* doc/texinfo/iterator.texi: Likewise.
	* doc/texinfo/locker.texi: Likewise.
	* doc/texinfo/mailbox.texi: Likewise.
	* doc/texinfo/maildir.texi: Likewise.
	* doc/texinfo/mailer.texi: Likewise.
	* doc/texinfo/mailutils.texi: Likewise.
	* doc/texinfo/mbox.texi: Likewise.
	* doc/texinfo/message.texi: Likewise.
	* doc/texinfo/mh.texi: Likewise.
	* doc/texinfo/mime.texi: Likewise.
	* doc/texinfo/nntp.texi: Likewise.
	* doc/texinfo/parse822.texi: Likewise.
	* doc/texinfo/pop3.texi: Likewise.
	* doc/texinfo/programs.texi: Likewise.
	* doc/texinfo/sendmail.texi: Likewise.
	* doc/texinfo/sfrom.c.texi: Likewise.
	* doc/texinfo/smtp.texi: Likewise.
	* doc/texinfo/stream.texi: Likewise.
	* doc/texinfo/url.texi: Likewise.
	* doc/texinfo/version.texi: Likewise.

	* doc/rfc: New directory
	* doc/rfc/Makefile.am: (new)
	* doc/rfc/.cvsignore: (new)
        * doc/rfc/rfc1731.txt: Moved from ..
        * doc/rfc/rfc1734.txt: Likewise.
        * doc/rfc/rfc1738.txt: Likewise.
        * doc/rfc/rfc1939.txt: Likewise.
        * doc/rfc/rfc1957.txt: Likewise.
        * doc/rfc/rfc2045.txt: Likewise.
        * doc/rfc/rfc2046.txt: Likewise.
        * doc/rfc/rfc2047.txt: Likewise.
        * doc/rfc/rfc2049.txt: Likewise.
        * doc/rfc/rfc2060-errata: Likewise.
        * doc/rfc/rfc2060.txt: Likewise.
        * doc/rfc/rfc2088.txt: Likewise.
        * doc/rfc/rfc2111.txt: Likewise.
        * doc/rfc/rfc2192.txt: Likewise.
        * doc/rfc/rfc2193.txt: Likewise.
        * doc/rfc/rfc2221.txt: Likewise.
        * doc/rfc/rfc2245.txt: Likewise.
        * doc/rfc/rfc2298.txt: Likewise.
        * doc/rfc/rfc2342.txt: Likewise.
        * doc/rfc/rfc2368.txt: Likewise.
        * doc/rfc/rfc2384.txt: Likewise.
        * doc/rfc/rfc2449.txt: Likewise.
        * doc/rfc/rfc2821.txt: Likewise.
        * doc/rfc/rfc2822.txt: Likewise.
        * doc/rfc/rfc3028.txt: Likewise.
        * doc/rfc/rfc821.txt: Likewise.
        * doc/rfc/rfc822.txt: Likewise.

2001-10-13  Alain Magloire

	* mail/mail.c: Possibility to enable debugging output.
	It should probably be a runtime option via set debug=1 or something
	for now it is disable between if (0) {...}.

	More cleanup in the IMAP code.  A memory stream buffer is
	use to save the string literal sent by the IMAP server.
	The allocation is handle by the memory_stream which simplifies
	the code.

	* folder_imap.c (folder_imap.c): Create a memory stream to
	hold the literal or quoted string send by the IMAP server.
	(folder_imap_list folder_imap_lsub): There is no callback
	field the struct folder_list is in struct _f_imap now.
	(imap_literal_string imap_quoted_string imap_string):  Use the
	memory string stream to save the result.
	(imap_body): Still need to be clean, but creates the cache
	header when doing the scan.
	(imap_parse): Do not use alloca().

2001-10-13  Jeff Bailey

	* guimb/Makefile.am: Remove GNU Makeism.

	* libmu_scm/Makefile.am: Remove GNU Makeism.

2001-10-12  Jeff Bailey

	* libmu_scm/Makefile.am: Fixes for RO srcdir.

	* guimb/Makefile.am: Fixes for RO srcdir.

2001-10-11 Alain Magloire

	A small cleanup of the IMAP code.

	* mailbox/folder_imap.c (imap_body):  Destroy the cache header
	if it was previously set on a SCAN.
	* mailbox/mbx_imap.c (delete_to_string): New function, to generate
	a string of IMAP message numbers.
	(imap_expunge): use delete_to_string;
	(attribute_string): Removed.
	(flags_string): Removed.
	(flags_to_string): Replace attribute_string() and flags_string().
	(message_operation): Rename to fetch_operation.
	* mailbox/include/imap0.h(struct _f_imap): field func and id
	removed, never used.

2001-10-11 Alain Magloire

	* mailbox/folder_imap.c (imap_quoted_string): Free the buffer.
	(imap_string): Free the buffer.
	(imap_body): Check if we already have the fheader header.
	(imap_scan): Forgot the break in the switch.

2001-10-11 Alain Magloire

	In order to boost performance, when doing the scan, we use
	the approach of downloading a subset of the header from all
	of messages.  The way it was done before was that the headers
	were requested one by one per message.  This was causing performance
	issues because we were doing a lot of small transactions on
	the TCP/IP stack.  By bundling the entire thing in one request
	"a0000 FETCH 1:* (FLAGS RFC822.SIZE BODY.PEEK[HEADER.FIELDS(..)])\r\n"
	there were less transactions and the speed was increase
	by a factor of 100+.
	The Imap code folder_imap.c and mbx_imap.c is now messy.
	The rewrite in mailbox2 should clean this up though.

	* mailbox/folder_imap.c (imap_quoted_string): Allocated the
	memory instead.
	(imap_body): If we were doing the scan free the memory and create
	the cache header.
	(imap_fetch): Create the message if was not done, important for
	the scan.
	* mailbox/mbx_imap.c (imap_scan): Bundle one big request to
	fetch as much information as possible.
	(message_operation): Free the buffer when done.
	* mailbox/include/imap0.h: Add IMAP_SCAN states.

	* mailbox/file_stream.c (_file_readline): It seems that fgets() can
	not handle binary data.  Try to do our best.

2001-10-11 Alain Magloire

	* mailbox/header.c (header_get_fvalue): When it fails set the number
	of byte written to 0.
	(header_get_value): Likewise.
	* mailbox/mbx_imap.c (imap_envelope_sender): Go through
	header_get_value() to fetch the "Sender" field, it may be cache.
	(imap_header_get_fvalue): Put parentheses around the FETCH, the
	WU-IMAPD likes it that way.

2001-10-10 Alain Magloire

	* mailbox/mbx_pop.c (_mbox_pop_init): Authority is set on the folder.
	For pop this a little hackish, since there is no proper folder.
	As a hack we set for the pop folder the actual mailbox as data pointer.
	(pop_user): the owner of the authority is the folder.

2001-10-08 Alain Magloire

	* mailbox/mbx_mbox.c (mbox_expunge0): New function.
	Move all the previous mbox_expunge() to mbox_expunge0()
	with a new argument deciding whether or not to remove
	messages set deleted.
	(mbox_save_attributes): Stub calling mbox_expunge0().
	(mbox_expunge): Stub calling mbox_expunge0()

	* mailbox/mbx_mh.c: Provide a prototype for mh_message_number()
	there is no provision for it in the current Mailbox API.

	* mailbox/mbx_imap.c (imap_message_lines): If the message_size
	is not set fallback on body_lines and header_lines.

	* mail/print.c:  Lines number are not always known for
	example for POP or IMAP, it is not known until the mail
	is downloaded so take a guess base on the size.

2001-10-08 Sergey Poznyakoff

	* mail/z.c: Bugfix: Did not display the last message when the
	number of lines in last page was less than pagelines.
	* mailbox/mbx_pop.c: Use ENOSYS instead of ENOTSUP.
	* mh/mh_format.c: Fixed memory leak in strobj_free().

2001-10-05 Alain Magloire

	* mailbox/folder_imap.c (imap_flags): Bailout at the matching
	LPAREN.
	* mailbox/header.c (header_get_fvalue): Return 0 as the
	number of byte returned by the last  argument, even when no header
	field matched.
	(header_get_value): Likewise.
	* mailbox/mbx_imap.c (imap_header_get_fvalue): Also cache
	the message size and the FLAGS.
	(imap_message_size): If we already have the size do not request
	it again.

2001-10-05 Sergey Poznyakoff

	* guimb/scm/Makefile.am: Added reject.scm.
	* mailbox/parse822.c: (parse822_word): Additional check
	for qstr != NULL: parse822_quoted_string() sometimes returns
	EOK and does not fill qstr (e.g. when parsing empty string: "")

2001-10-04 Alain Magloire

	* imap4d/select.c(imap4_select_status): According to RFC2060
	There is no parenthesis when we send the UIDVALIDITY/UNSEEN.

	* mailbox/header.c (header_free_cache): New function.
	(fill_blurb): Call header_free_cache to release memory.
	(header_destroy): Move the code to header_free_cache().
	(header_set_fvalue): Accept a NULL value, it will permanent
	failure i.e. the header does not exist.
	(header_get_value): Check the cache provided by the header object
	then the cache from _get_fvalue() and fall back to downloading
	the entire header.
	* mailbox/mbx_imap.c (imap_header_get_fvalue): Implement a cache
	in IMAP for the most use headers like "FROM, SUBJECT ....".
	* mailbox/include/imap0.h: New field in _m_imap to hold the
	header cache.
	* mailbox/mapfile_stream.c: signed and unsigned cast.

2001-10-03 Alain Magloire

	* mailbox/mbx_imap.c (imap_attr_set_flags): Do not send
	the \\Delete flag and just keep it locally.  The expunge
	will take care of resending it.
	(imap_attr_unset_flags): Likewise.

2001-10-03 Sergey Poznyakoff

	* mailbox/attribute.c: Fixed funny bug in
	attribute_{set,clear}_modified.

2001-10-01 Alain Magloire

	* mailbox2/attribute.c: Add user flags.
	* mailbox2/dattribute.c: Add user flags.

	To be compatible with the old mailbox, all stream read
	and write take an offset. Removed stream_seek () and add
	stream_is_seekable() instead.
	* mailbox2/stream.c: Likewise.
	* mailbox2/bstream.c: Likewise.
	* mailbox2/fdstream.c: Likewise.
	* mailbox2/fstream.c: Likewise.
	* mailbox2/mapstream.c: Likewise.
	* mailbox2/memstream.c: Likewise.
	* mailbox2/tcpstream.c: Likewise.

	* mailbox2/include/mailutils/error.h: Add EBADFD.

	* mailbox2/include/mailutils/mbox.h: New prototypes.
	* mailbox2/include/mailutils/sys/mbox.h: New prototypes.
	* mailbox2/mbox/*.c: Finish implementation.

2001-09-26 Alain Magloire

	* mailbox2/mbox/mbox_append.c: Implemented, first draft.

2001-09-23 Alain Magloire

	First draft of the mailbox/mbox2.  Not functional.
	Changes are too numerous to enumerate.

	* mailbox2/mbox/*.[ch]: First mbox implementation.
	* mailbox2/mbox/Makefile.am: New file.

2001-09-22 Alain Magloire

	In order to provide inheritance, it is necessary to make
	the base functions/methods visible so the extended object
	could reuse some base methods if necessary.  Inheritance
	is possible because we always add to the end of the vtable
	structure new functions.
	For example, mime_t object will be also a message_t.
	and it will be possible to do
	{
	  mime_t mime;
	  header_t header;
	  ...
	  message_get_header ((message_t)mime, header);
	}
	Another example is tcpstream(socket stream) extends
	fdstream(file descriptor stream);
	Also the name of the functions have change to match there purpose.

	* mailbox2/Makefile.am: lockfile.c added.
	* mailbox2/bstream.c: Reorganization to make the
	functions visible.
	* mailbox2/dattribute.c: Likewise.
	* mailbox2/dotlock.c: Likewise.
	* mailbox2/fdstream.c: Likewise.
	* mailbox2/fstream.c: Likewise.
	* mailbox2/mapstream.c: Likewise.
	* mailbox2/memstream.c: Likewise.
	* mailbox2/pticket.c: Likewise.
	* mailbox2/sdebug.c: Likewise.
	* mailbox2/tcpstream.c: Likewise.

	* mailbox2/include/mailutils/Makefile.am: lockfile.h added.
	* mailbox2/include/mailutils/attribute.h: Add the new prototypes.
	* mailbox2/include/mailutils/mbox.h: Add the new prototypes.
	* mailbox2/include/mailutils/stream.h: Add the new prototypes.

	* mailbox2/include/mailutils/sys/Makefile.am: dattribute.h lockfile.h
	mapstream.h pticket.h added.
	* mailbox2/include/mailutils/sys/bstream.h: Add new prototypes.
	* mailbox2/include/mailutils/sys/fdstream.h: Likewise.
	* mailbox2/include/mailutils/sys/fstream.h: Likewise.
	* mailbox2/include/mailutils/sys/mbox.h: Likewise.
	* mailbox2/include/mailutils/sys/memstream.h: Likewise.
	* mailbox2/include/mailutils/sys/sdebug.h: Likewise.
	* mailbox2/include/mailutils/sys/tcpstream.h: Likewise.

2001-09-20 Sergey Poznyakoff

	* frm/frm.c: Print newline not depending on the presence
	of Subject header.

	* mh/mh_fmtgram.y: Builtin functions return their values
	in arg_num,arg_str. reg_num,reg_str gets set only when reducing
	to pitems.
	Fixed if-blocks to save the result of the last evaluated conditional
	to reg_num.
	* mh/mh_format.c: Builtin functions return their values
	in arg_num,arg_str.
	Compress whitespace only in component escapes.
	* mh/mh_init.c: mh_read_formfile(): Handle end-of-line comments
	and '\' line continuation.

2001-09-19 Alain Magloire

	* mailbox2/debug.c: Remove mu_debug_printv() and only keep
	mu_debug_print().
	* mailbox2/sdebug.c (mu_debug_stream_create): New function
	replace mu_debug_stdio_create().
	* mailbox2/fdstream.c (_fds_destroy): Do not close the stream
	when destroying, it should have been done explicitly with
	stream_close ();
	* mailbox2/fstream.c (_fs_destroy): Do not close the stream
	when destroying, it should have been done explicitly with
	stream_close ();
	* mailbox2/mapstream.c (_map_destroy): Do not close the stream
	when destroying, it should have been done explicitly with
	stream_close ();
	* mailbox2/memstream.c (_memory_destroy): Do not close the stream
	when destroying, it should have been done explicitly with
	stream_close ();
	* mailbox2/tcpstream.c (_tcp_destroy): Do not close the stream
	when destroying, it should have been done explicitly with
	stream_close ();

2001-09-18 Sam Roberts

	* mailbox/mbx_pop.c: Check url authentication type at
	initialization to trap invalid ones early.
	* mailbox/: mbx_mbox.c, mbx_mh.c: The pthread headers seem to
	define things that make the system headers not prototype some
	non-POSIX but essential APIS, so I moved them (on QNX6).
	* mailbox/url.c: Set zero-length strings to NULL.
	* mailbox/: url_imap.c, url_pop.c: Check harder for URLs that are
	not invalid for the particular scheme.
	* mailbox/auth.c: authority_authenticate() was returning success if
	authority was NULL, this is an error for all the other authority_*
	APIs, now it is here, as well.

2001-09-18 Sergey Poznyakoff

	* mh/mh.h: Changed proto of mh_read_formfile(). Thanks to Alain
	for noticing.
	* mh/inc.c: Likewise.
	* mh/scan.c: Likewise.
	* mh/mh_init.c: Likewise.

2001-09-18 Sergey Poznyakoff

	* mailbox/mbx_mh.c: Optimized for speed.
	_mh_message_save(): scan the message while saving it. If expunge==0,
	do not create temporary, operate directly on the message file instead.
	mh_append_message(): Do not rescan appended message.
	mh_scan_message(): Do not rescan the message if it's not changed
	since last scan.
	* mh/.cvsignore: Updated.
	* mh/mh_argp.c: Pass '+' key when handling +folder option.
	* mh/mh_getopt.c: Handle +folder.
	* mh/inc.c: Handle '+' key.
	* mh/scan.c: Likewise.

2001-09-17  Alain Magloire

	Pop3 now has a debug object, mu_debug_t, to follow the protocol
	exchanges between the library and the server.

	* mailbox2/pop3/*: Add debug prints in all.
	* mailbox2/sdebug.c: New entry.
	* mailbox2/debug.c: New entry.
	* mailbox2/Makefile.am: Add debug object
	* mailbox2/include/mailutils/Makefile.am: Add debug.h
	* mailbox2/include/mailutils/sys/Makefile.am: Add debug.h and sdebug.h
	* mailbox2/include/mailutils/debug.h: New file.
	* mailbox2/include/mailutils/sys/debug.h: New file.
	* mailbox2/include/mailutils/sys/sdebug.h: New file.

	* mailbox2/fdstream.c: Bug in fdstream do not call FD_SET if
	the file descriptor is -1;
	* mailbox2/tcpstream.c: Bug in fdstream do not call FD_SET if
	the file descriptor is -1;

2001-09-17 Sergey Poznyakoff

	* mail/mailline.c: fixed declaration of ml_reread, it did not
	match the changed proto.

	* acconfig.h: Added HAVE_OBSTACK

	* mailbox/mbx_mbox.c: _mh_next_seq(): add 1 to the last used
	sequence number. mh_append_message(): missed assignment to
	mhd member of struct _mh_data.
	mh_message_number(): new function. It is the only way to get
	the message sequence number.

	Further changes to mh/: Implemented inc command. Added missing
	options to scan.

	* mh/Makefile.am: Added inc.c. Restructured .*_LDADD assignments.
	* mh/mh.h: Extern declarations for current_folder, current_message,
	mh_list_format, etc.
	* mh/mh_format.c: builtin_msg(): return sequence number of the
	message, not its ordinal number in mailbox.
	builtin_cur(): implemented.

	* mh/mh_init.c: New globals: current_folder, current_message,
	mh_list_format, etc.
	mh_init(): initialize current_folder and current message.
	mh_read_context_file(), mh_read_formfile(): new functions.
	* mh/scan.c: Changed initialization of format_str. Removed
	scan_folder: use current_folder instead. Implemented
	-form and -header options. Use \f to clear screen if
	stdout is not a tty.
	* mh/inc.c: (new) Implementation of inc command.

2001-09-16  Alain Magloire

	* doc/mbox.texi: Starts to document the concrete Unix mbox
	API.
	* doc/pop3.texi: Typos.
	* mailbox/mbx_mh.c: Initialized variables. Typecast to void
	expunge since it is never used.
	* mail/delete.c : Typo.

2001-09-16  Alain Magloire

	This is after a exchange with Dave Inglis and Sam Roberts.
	Basically they recommend to drop the XX_release() functions
	and only to keep XX_create (), XX_destroy ().  We have simple
	reference count strategy for memory management.

	* mailbox2/* : Way too much to enumerate.
	* mailbox2/refcount.c: New file
	* mailbox2/include/mailutils/refcount.h: New file
	* mailbox2/include/mailutils/sys/refcount.h: New file
	* mailbox2/fdstream.c: stream_fd_create ().

2001-09-15  Alain Magloire

	The exercise is to crank up the warnings from gcc and cleanup
	the code based on the hints generated by the compiler.  The usual
	errors:
	- signed vs unsigned, signedness or unsignedness problems.
	- printf() wrong formats
	- wrong prototypes declarations
	- and different buglets
	- "const char *" vs "char *"
	- unused variables
	- unused arguments.  Tell the compiler by typecasting to void
	 (void)var.
	- Some variable when shadowed, meaning in another block variable
	of the same name where reused.
	- atoi() is not an ANSI C function, we should use strtol().

	Changes to comply to GNU coding standards, and nuke trailing spaces.

	* mail/alias.c (alia_lookup): No prototypes and scope static.
	(hash_num, max_rehash, aliases): Scope static and unsigned.
	(hash): unsigned.
	(alias_rehash): i unsigned.
	(alias_lookup_or_install): slot variable unused.
	(alias_destroy): unsigned.
	* mail/copy.c (mail_copy0): fprintf wrong format.
	* mail/decode.c: dislay_message change prototype.
	(mail_decode): Cast when calling util_msgset_iterate().
	(display_message): Prototype change.
	(display_headers): unsigned issues.
	* mail/delete.c: Buglet was calling mail_delete0() instead of
	mail_delete.
	* mail/eq.c: Unused arguments.
	* mail/exit.c: Unused arguments.
	* mail/folders.c: Unused arguments.
	* mail/followup.c: Unused variables.
	* mail/from.c (mail_from): variable buffer was shadowing use variable
	name instead. snprintf() formatting issues.
	* mail/headers.c: Unsigned issues.
	* mail/if.c: Unused arguments.
	* mail/inc.c: Unused arguments.
	* mail/list.c: Use const char *.
	* mail/mail.c: options[], argp[] initialized all elements.
	(mail_cmdline): Unused arguments.
	(main): Unsigned issues.
	(mail_warranty): Unused arguments.
	* mail/mail.h: function_t with complete prototype this necessary
	to let the compiler do proper checks.
	struct mail_command_entry rearrange the fields and a new field
	int (*escfunc) __P ((int, char **, struct send_environ *));
	Indentation rearrangements.
	* mail/mailline.c (ml_getc): Scope is static now.
	typecast for const char *.
	(ml_reread): Typecast.
	* mail/msgset.y: Declare yyerror() and yylex().
	(msgset_select): Change of prototype to let the compiler do checks.
	(selec_sender): Unused arguments.
	* mail/pipe.c: Rename variable pipe to tube.
	* mail/print.c: Unsignedness and some shadow variables.
	* mail/quit.c: Shadow variables.
	* mail/send.c: Typecast when necessary. Use the second (escfunc)
	field now. Some shadow variables.
	* mail/shell.c: Unsigned.
	* mail/table.c: Readjust the table to correspond to the signature
	change in mail.h.
	* mail/tag.c: Prototype change.
	* mail/util.c (util_msglist_esccmd): New function.
	(util_find_entry): Prototype change.  And check return value
	of getenv().
	(util_screen_lines): Change atoi() to strtoul().
	(util_screen_columns): Change atoi() to strtoul().
	(util_find_env): Signedness.
	(util_fullpath): Prototype changed(const).
	(util_slist_to_string):Prototype changed (const).
	(util_strcat) :Prototype changed (const).
	(util_tempfile): const.
	* mail/var.c: Unsignedness, Unused arguments.
	(var_quote):  Use new function util_msglist_esccmd().
	* mail/version.c: Unused arguments.
	* mail/write.c: printf formats.
	* mail/z.c: Signedness.

2001-09-14 Sergey Poznyakoff

	* mailbox/mbx_mh.c: Properly handle messages with null body.
	Fixed bug in cyclic stream pool. Lowered MAX_OPEN_STREAMS
	limit. It probably should be configurable.

	A framework for porting MH utilities. Scan utility is in
	working order, except that it ignores -form and -header
	options.

	* configure.in: Check for presence of GNU obstack functions.
	* lib/Makefile.am: Added obstack.[ch]
	* lib/obstack.c: (new)
	* lib/obstack.h: (new)

	* mh: (New directory) Implementation of MH commands.
	* mh/Makefile.am: (new)
	* mh/.cvsignore: (new)
	* mh/mh.h: (new) Main header for mh functions.
	* mh/mh_argp.c: (new) Coexistence between GNU long options,
	traditional UNIX-style short options and traditional MH long options.
	* mh/mh_error.c: (new) Diagnostic output.
	* mh/mh_fmtgram.y: (new) Parser for format strings.
	* mh/mh_format.c: (new) Run-time execution of format strings.
	* mh/mh_getopt.c: (new) MH-style options parsing.
	* mh/mh_getopt.h: (new) Its prototypes.
	* mh/mh_init.c: (new) Initialization module.
	* mh/scan.c: (new) Implementation of scan command.

2001-09-10 Sergey Poznyakoff

	* mailbox/mbx_mh.c: Implemented append. Disabled reading of deleted
	messages when doing mailbox scan.

	* mail/summary.c: Do not set first_unread or first_new to the
	message which is marked as deleted.
	* mail/z.c: Do not count deleted messages into the total number
	of lines output.

2001-09-09  Alain Magloire

	This was done when cranking the number of warning generated
	by gcc (-Wall, etc ...)

	* mailbox/mbx_mh.c:  Add include for pthread.
	seq_number is size_t.
	(_mh_message_name):  The problem here is that asprintf()
	is a GNU extension.  We want libmailbox to be as independent
	as possible, so it will not be required for program to be
	link with libmailutils(it is not even install).  Default to
	snprintf ().
	(mh_close): return an int.
	(_mh_message_insert): n should be size_t.

2001-09-09  Alain Magloire

	* doc/pop3.texi: Update the doc.
	* doc/sfrom.c.texi: Line too long.
	* doc/stream.texi: Line too long.

	For the new mailbox, one of the short coming with the old stream_t
	object was that select() was not cover, meaning it was not possible
	to check if a stream was {read,write} ready.  The old was to get
	the fd (stream_get_fd()) and do the select.  Providing,
	stream_is_readready (stream_t, int timeout);
	stream_is_writeready (stream_t, int timeout);
	stream_is_exceptionpending (stream_t, int timeout);
	stream_is_open (stream_t);
	Takes care of it.  It will work specially for tcp stream.

	* mailbox2/stream.c: New functions for the select calls:
	(stream_is_readready): New function.
	(stream_is_writeready): New function.(stream_t, int timeout);
	(stream_is_exceptionpending): New function.
	(stream_is_open): New function.
	* mailbox2/bstream.c (_bs_readline): Bug was truncating the string
	to early.
	(_bs_is_readready): New file.
	(_bs_is_writeready): New file.
	(_bs_is_exceptionpending): New file.
	(_bs_is_open): New file.
	* mailbox2/fstream.c: stubs for the select functions.
	* mailbox2/memstream.c: stubs for the select functions.
	* mailbox2/mapstream.c: stubs for the select functions.
	* mailbox2/tcpstream.c: stubs for the select functions.
	* mailbox2/include/mailutils/stream.h: Adjust the prototypes
	* mailbox2/include/mailutils/sys/stream.h: Adjust the prototypes

	It is better not to put threading (Pthread) code in the low level
	API.  But instead in mailbox_t framework, where it can be control.
	* mailbox2/include/mailutils/pop3.h: Adjust the prototypes.
	* mailbox2/pop3/*.c: Remove threading code.

2001-09-09 Sergey Poznyakoff

	* mailbox/mbx_mh.c: Bug fix: both pool_first and pool_last must
	be biased by MAX_OPEN_STREAMS;

2001-09-08 Sergey Poznyakoff

	Initial implementation of MH mailbox format. It is functional
	in read-only mode. In read-write, it is able to delete and
	undelete messages but lacks `append message' functionality.
	Expunge does not unlink message files but rather renames them
	prepending ',' to a filename, after MH fashion.

	* mailbox/mbox_mh.c: (new)
	* mailbox/url_mh.c: (new)
	* mailbox/folder_mh.c: (new)
	* mailbox/Makefile.am: Added mh-related sources.
	* mail/mail.c: Register mh_record.
 	* mailbox/include/registrar0.h: Added mh-related declarations.
	* include/mailutils/registrar.h: Declare mh_record.

	* mailbox/mbx_mbox.c: Check for MU_ATTRIBUTE_DELETED in
	mbox_expunge.

	* libmu_scm/mu_mailbox.c: mu_scm_mailbox_print(): handle
	mailbox == #f case.
	* libmu_scm/mu_message.c: mu_scm_message_print(): handle
	message == #f case.

2001-09-06  Alain Magloire

	* mailbox/folder_mbox.c (folder_mbox_open): Implemented.

2001-09-05 Sergey Poznyakoff

	* MySql/MySql.h: New defines MHOST, MPORT, etc.
	* MySql/MySql.c: Improved error logging. Fixed memory leak due
	to absence of mysql_close() calls (noticeable on imap4d when
	doing multiple login attempts).
	Provide configurable parameters to mysql_real_reconnect to
	allow connecting to the remote database and/or non-standard
	ports.

2001-09-04  Alain Magloire

	* mailbox/mbx_imap.c (message_operation):  Check if the
	imap server went away(f_imap->isopen) and flag an error.

2001-09-03  Alain Magloire

	* mailbox/folder_imap.c (imap_use): Check return value.
	* mailbox/mailbox.c (mailbox_get_debug): Get the mu_debug_t
	object from the folder if available.
	* mailbox/mbx_imap.c (imap_append_message): Check for
	EAGAIN.
	(imap_header_get_value): If the operation return 0, set
	error to ENOENT.

2001-09-03  Alain Magloire

	* configure.in: AC_REPLACE_FUNCS(fgetpwent);

	* include/mailutils/parse822.h: Add a prototype for
	parse822_skip_nl().

	* lib/Makefile.am: add fgetpwent.c
	* lib/fgetpwent.c: New file.

	* mail/from.c (mail_from): Use the cover functions
	attribute_is_xxxx() instead of getting the flag.

	* mailbox/attribute.c: Cleanup the mess.
	attribute_set_{read,delete,seen,flagged,answered}.
	attribute_unset_{read,delete,seen,flagged,answered}.
	attribute_is_{read,delete,seen,flagged,answered}
	should be no more then cover functions calling
	attribute_set_flags(), attribute_get_flags() and
	attribute_unset_flags().

	* mailbox/folder_imap.c: MU_ATTRIBUTE_READ, is not
	part of IMAP protocol use \\Seen.
	* mailbox/mbx_imap.c: Remove the hack trying to reconnect,
	it does not work.

	* mailbox/mbx_pop.c(pop_get_messages): Set the new
	functions for the attribute.
	(pop_get_attribute): New functions.
	(pop_set_attribute): New functions.
	(pop_unset_attribute): New functions.
	(pop_attr_flags): Removed.

	* mutil.c (mu_hex2ul): GNU coding std.
	(parse822_time): Do not use tzname as a variable name tzname
	is global variable in libc, better clear away.
	(parse822_date_time): Likewise.

	* pop3d/Makefile.am: add virtual.c
	* pop3d/pop3d.c (main): register getpwnam_ip_virtual,
	getpwnam_host_virtual
	* pop3d/pop3d.h: declare,
	getpwnam_ip_virtual(), getpwnam_host_virtual().
	* pop3d/virtual.c: New file.

2001-09-02  Alain Magloire

	* mailbox/mutil.c (getpwma_virtual): Memory overrun, did not
	reserve enough space to accommodate the extra slash, when
	doing the sprintf().
	Include <string.h>, since we use strdup().

2001-08-31  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* imap4d/list.c (list_file): don't show INBOX if virtual

2001-08-31 Sergey Poznyakoff

	* mailbix/mutil.c: Fixed declaration of _app_getpwnam.
	Moved mu_virtual_domain out of #ifdef guard. Fixed typo
	in getpwnam_virtual: erroneously returned NULL instead of
	p.

2001-08-31 Sergey Poznyakoff

	Generalized mu_getpwnam interface. mu_register_getpwnam allows
	to register several functions which will be tried in turn in
	order to obtain struct passwd*. Changed virtual domain code
	in pop3d and imap4d to use this approach.

	* mailbox/mutil.c: _app_getpwnam is a list of getpwnam functions.
	mu_getpwnam calls each function in succession until it finds one
	which returns non-NULL value.
	* include/mailutils/mutil.h: Fixed mu_.*getpwnam declarations. Added
	declaration for mu_virtual_domain and getpwnam_virtual()
	* mailbox/Makefile.am: Add -DSITE_VIRTUAL_PWDDIR to CFLAGS.

	* configure.in: New option --with-virtual-pwddir allows to configure
	the path to domain passwd files. Defaults to <sysconfdir>/domain.

	* imap4d/copy.c: Use mu_virtual_domain instead of is_virtual.
	* imap4d/select.c: Likewise.
	* imap4d/status.c: Likewise.

	* imap4d/imap4d.c: Register getpwnam_virtual for handling virtual
	domains.
	* pop3d/pop3d.c: Likewise.

	* imap4d/login.c: Removed imap4d_virtual. Its functionality passed
	to getpwnam_virtual.
	* pop3d/pop3d.h: Include mutil.h
	* pop3d/user.c: Removed pop3d_virtual. Its functions are performed
	by getpwnam_virtual. Renamed is_virtual to mu_virtual_domain.

	* mail/alias.c: Use linear hash ordering.

2001-08-30  Alain Magloire

	In the virtual code, change the chdir() and build the full
	pathname in a buffer.  For a daemon, it is better to stay
	in "/" the root.  Moving in subdirectories, will not permit
	the volume to be unmounted.  But we do not follow the
	same rule for imap4d, it should be fix.

	* pop3d/signal.c: Shutup unused parameter warning from gcc.
	* pop3d/user.c: Define macro VIRTUAL_PWDDIR. use sprintf()
	to build filename instead of chdir().
	(PAM_gnupop3d_conv): Shutup unused parameter warning from gcc.
	Make sure variable mailbox_name is initialized.

	* include/mailutils/mutil.h: Typo "struct password" instead of
	"struct passwd". Use const appropriately in the declaration
	of mu_register_getpwnam() and mu_getpwnam().
	* mailbox/mutil.c: Use const appropriately in the definition
	of mu_register_getpwnam() and mu_getpwnam(). Typo "struct password"
	instead of "struct passwd".

2001-08-30 Sergey Poznyakoff

	More changes to better integrate mysql support. Introduced
	mu_getpwnam function. The function first calls system getpwnam,
	if it fails, it calls application-defined getpwnam function.
	mu_register_getpwnam can be used to register such a function.

	* configure.in: Add -lm to AUTHLIBS when configured with
	--enable-mysql.
	When checking for PAM: Append to AUTHLIBS instead of just
	assigning to it.
	* imap4d/Makefile.am: Moved @AUTHLIBS@ before libmailutils.
	Needed when using mysql.
	* pop3d/Makefile.am: Likewise.
	* imap4d/imap4d.c: use mu_register_getpwnam.
	* pop3d/pop3d.c: Likewise.

	* pop3d/user.c: Use mu_getpwnam.
	* imap4d/login.c: Likewise.

	* mailbox/mbx_default.c: use mu_getpwnam. Removed inclusion
	of MySql.h.
	* mailbox/mutil.c: new functions: mu_getpwnam() and
	mu_register_getpwnam().
	Removed inclusion of MySql.h
	* include/mailbox/mutil.h: Prototypes for the new functions.

2001-08-30 Sergey Poznyakoff

	* MySql/MySql.c: Use asprintf instead of sprintf, use xmalloc
	instead of malloc.
	Return values were allocated dynamically but never freed, this
	caused memory leaks if authentication functions were called more
	than once. Made them static, so that they get reallocated at each
	new invocation of getM functions, thus reclaiming lost storage.
	Made <config.h> the first file to be included and guard it with
	#ifdef HAVE_CONFIG_H
	Reindented text to conform to GNU coding style.

	* MySql/Makefile.am: Use @BUILD_LIBMYSQL@ substitution instead
	of direct assignment to noinst_LIBRARIES, so the subdir gets
	distributed properly.

	* configure.in: New substitution variable BUILD_LIBMYSQL. Append
	linker flags to AUTHLIBS, since modifying LIBS effectively
	breaks compilation.

2001-08-29  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* imap4d/select.c (imap4d_select0):
	* imap4d/copy.c (imap4d_copy0):
	* imap4d/status.c (imap4d_status): treat INBOX differently if virtual

	* imap4d/login.c (imap4d_virtual): new function
	(imap4d_login): call imap4d_virtual

	* imap4d/imap4d.h: add is_virtual variable

	* configure.in (USE_VIRTUAL_DOMAINS): add virtual domain option

	* pop3d/user.c (pop3d_virtual): new function for "virtual domains"
	(pop3d_user): call pop3d_virtual

2001-08-28  Alain Magloire

	* mailbox2/include/mailutils/list.h:  the typedef list_t
	is rename mu_list_t, as a suggestion from Sam R.
	* mailbox2/list.c: All the function names are prefix with "mu_".

2001-08-27  Alain Magloire

	* mailbox/folder_imap.c (imap_list): When \NoSelect, it is
	also mean that the file is a directory.

2001-08-27  Jakob 'sparky' Kaivo

	* mail/send.c (mail_send0): change readline (NULL) to readline
	(" \b") so there is really no prompt

2001-08-24  Jim Hull

	* Makefile.am:
	* acconfig.h:   Added support for new MySql addition to mailutils
	* configure.in:

	* MySql/Makefile.am:
	* MySql/MySql.c:        Mini lib to link to when mysql support
	* MySql/MySql.h:        enabled (with --enable-mysql)

	* doc/Readme.mysql:             Readme file for setup.

	* imap4d/login.c:
	* mailbox/mbx_default.c:        The Patch pretty much works the same
	* mailbox/mutil.c:              all around. if getpwnam() returns null
	* mailbox2/mutil.c:             then your db is checked for the user,
	* pop3d/apop.c:                 and the struct is filled if found,
	* pop3d/user.c:                 returns null if not. If shadow support
                               is used, then the same is done with getspnam().

	* examples/mail.MysqlMailer.c:  Simple sendmail backend support.

2001-08-24  Alain Magloire

	* sieve/Makefile.am: To EXTRA_DIST add md5-rsa.{c,h}.

	* mailbox2/header.c(header_aget_value): Base on discussion with Sergey
	if the call fails no memory should be allocated and the return status
	should be return i.e. status != 0.

	* imap4d/fetch.c (fetch_bodystructure0):  Check for sp != NULL.
	* imap4d/fetch.c (send_parameter_list):  Check for sp != NULL.

2001-08-23 Sergey Poznyakoff

	* mail/msgset.y: Fixed erroneous call to msgset_select
	(second arg should have been a pointer). Added :t (tagged)
	and :T (untagged) selection criteria.

	* mail/tag.c: (new) Implementation of tag command.
	* mail/table.c: Added entries for "tag" and "untag".
	* mail/Makefile.am: Added tag.c
	* mail/from.c: Display tagged messages.
	* mail/mail.h: Added protos and defines for mail_tag().

2001-08-22  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* imap4d/fetch.c (bodystructure): check sp != NULL before using

2001-08-18 Sergey Poznyakoff

	* libmu_scm/mu_mime.c: (new) Scheme primitives for handling
	mime messages.
	* libmu_scm/mu_message.c: mu_scm_message_add_owner() - add new
	object to the owner chain of the message.
	* libmu_scm/mu_scm.h: Prototypes for new functions.
	* libmu_scm/mu_scm.c: Call mu_scm_mime_init().

	* guimb/scm/reject.scm: (new) Implementation of Sieve "reject"
	action.
	* guimb/scm/redirect.scm: Moved sieve-message-bounce to
	sieve-core.scm
	* guimb/scm/sieve-core.scm: New function sieve-message-bounce.

2001-08-16 Sergey Poznyakoff

	* mail/msgset.y: Implemented :/expr/ -- search in the message
	body. Fixed memory leak in select_header (missed regfree).

2001-08-14 Sergey Poznyakoff

	* mail/msgset.y: Extended regexp syntax: IDENT:/EXPR/ fetches
	all messages whose header IDENT matches given EXPR. The match
	is case-sensitive if IDENT starts with a capital letter and
	is case-insensitive otherwise.

2001-08-12 Alain Magloire

	* mailbox2/*: Move more code from the original mailbox
	To much to enumerate.

2001-08-07 Alain Magloire

	* m4/regex.m4: New file to check for GNU regex.
	* lib/regex.c: New file, GNU regex implementation.
	* lib/regex.h: New file.
	* lib/posix: New directory.
	* lib/posix/Makefile.am: New file.
	* lib/posix/regex.h: New file.
	* lib/Makefile.am: Add SUBDIRS=posix and regex.c dependencies.

	* mail/msgset.y: Remove HAVE_REGEX macro and check variable
	"noregex" before using regex.

	* configure.in: Check for GNU regex.

2001-08-07 Alain Magloire

	* mail/msgset.y:  Draft implementation of a proposition
	to allow regular expressions.
	(REGEXP): Passing the address of the pointer instead of the pointer.
	(INDENT): Likewise.
	* mail/Makefile.am: Add in EXTRA_DIST msgset.c to force its
	generation when doing the distribution, having yacc should
	not be required.

	* mailbox/mutil.c (mu_hexstr2ul): Properly cast the expression
	before doing the comparison.

2001-08-06 Sergey Poznyakoff
	* mail/msgset.y: (new) A parser for message set specifications
	of arbitrary complexity. Returns a singly linked list of
	message specifications that can be iterated without need
	for recursion.
	* mail/mail.h: Prototypes for msgset_ functions. Removed proto
	for util_expand_msglist.
	* mail/Makefile.am: Added msgset.y
	* mail/{copy.c, followup.c, headers.c, next.c, pipe.c,
	previous.c, util.c, write.c}: Use msgset_parse instead of
	util_expand_msglist.
	* mail/util.c: Added util_msgset_iterate() to iterate over a
	message set. Added util_get_content_type() and
	util_get_hdr_value() (from decode.c).
	* mail/decode.c: Use util_msgset_iterate(). Moved get_content_type()
	and get_hdr_value() to util.c
	* mail/table.c: Fixed synopsis for decode.

        * libmu_scm/Makefile.am: Removed .x and .doc files from EXTRA_DIST.
          Thanks to Alain.
        * guimb/Makefile.am: Likewise.
        * m4/Makefile.am: Added maintain.m4

2001-08-06  Alain Magloire

	* sieve/{exitcodes.h hmac-md5.h md5.c md5.h md5global.h}: Removed.
	* sieve/md5-rsa.c: New file, clearly identify that the algo.
	is from RSA and not GNU md5.
	* sieve/md5-rsa.h : New file.
	* sieve/Makefile.am:  added md5-rsa.[ch].
	* sieve/message.h:  lcase() change for strlower ().
	* sieve/script.c: Include md5-rsa.h.
	* sieve/sieve-gram.y: lcase changed for strlower ().
	* sieve/util.c: Remove all the unnecessary code and
	only implement strlower() and strupper().
	* sieve/util.h: Only export strlower and struppper ().

	* messages/messages.c: Also include pop_record
	amd imap_record.

2001-08-05 Sergey Poznyakoff
	* mailbox/mbx_mbox.c: Added mbox_stream_size().
	* mailbox/message.c: Added message_stream_size().
	* mailbox/stream.c: Fixed some comments.

	* libmu_scm/mu_port.c: (new) I/O port functions. This allows to
	write and read mailboxes/messages using usual scheme primitives
	and thus effectively obsoletes mu_body interface, but I'll keep
	it for a while.
	* libmu_scm/mu_scm.c: Call to mu_scm_port_init().
	* libmu_scm/mu_scm.h: Prototypes for port functions.
	* libmu_scm/mu_message.c: Added mu-message-get-port.
	mu-message-set-header: don't bail out if third argument is boolean,
	to allow for constructs like
		(mu-message-set-header
                  m1 "From"
                  (mu-message-get-header m2 "To"))
	* libmu_scm/mu_maibox.c: Added mu-mailbox-get-port.

	* guimb/scm/sieve.scm: Documented some obscure data structures.
	* guimb/scm/sieve-core.scm: Use sieve-mailbox-open instead of
	mu-mailbox-open. The former searches the list of open mailboxes
	and returns one if found. All the mailboxes get closed at once
	when the sieve program finishes execution. This saves memory and
	speeds up the execution (fewer calls to gc, if any).
	sieve-regexp-to-posix: escape special characters.
	action-reject: Use ports instead of mu-body- interface.

	* examples/reply.scm: Use ports instead of mu-body- interface.

	* mail/var.c: Added checks for missing arguments.

2001-08-04 Sergey Poznyakoff
	* mailbox/header.c: Return value of header_aget_value() was always
	0. Made it consistent with that of header_get_value(). Same for
	header_aget_field_value().

	* guimb/main.c: Fixed handling of default mailbox in the absence of
	other mailbox arguments.
	* guimb/collect.c: Likewise.
	* guimb/guimb.h: Removed unused declarations.

	* libmu_scm/mu_message.c: Changed mu-message-get-header-fields
	to allow for second optional argument. The argument is a list
	of header names to narrow output to.

	* guimb/scm/sieve-core.scm: Changed action-keep: it couldn't be just
	#f. Fixed and tested action-stop, action-redirect and test-exists.
	Fixed handling of null-length keys in sieve-str-str.
	test-address and test-header: use mu-message-get-header-fields
	to speed the things up.
	Implemented "envelope" test.

	* guimb/scm/sieve.scm: Add final #t to the generated code, so the
	empty scripts work.

2001-08-03 Sergey Poznyakoff
	* libmu_scm/mu_logger.c: (new) Interface to syslog functions.
	* libmu_scm/mu_mailbox.c: Added mu-mailbox-get-url.
	* libmu_scm/mu_message.c: Added mu-message-get-size,
	mu-message-get-lines.
        * libmu_scm/mu_address.c: Provide mu_scm_address_init() function.
	* libmu_scm/mu_scm.c: Call mu_scm_address_init(), mu_scm_logger_init().
	Added mu-package and mu-version variables.
	* libmu_scm/mu_scm.h: Prototypes for mu_scm_address_init() and
	mu_scm_logger_init().
	* libmu_scm/Makefile.am: Added mu_logger.c

	* guimb/main.c: Added --mailbox and --user options. Added escape for
	Scheme arguments (-{ and -}).
	* guimb/run_scm.c: Call collect_output() before dropping mailbox.
	Added exception handling. Added user-name variable.
	* guimb/collect.c: Added collect_output().
	* guimb/guimb.h: Added prototypes.
	* guimb/Makefile.am: Added SUBDIRS.

	* guimb/scm: (new) Directory containing guimb modules and scripts.
	* guimb/scm/Makefile.am: (new)
	* guimb/scm/sieve.scm: (new) Sieve to Scheme translator.
	* guimb/scm/sieve-core.scm: (new) Sieve core functions for scripts
	generated by sieve.scm.
	* guimb/scm/redirect.scm: (new) Implementation of sieve "redirect"
	action.

	* configure.in: Output guimb/scm/Makefile.

	* mail/mail.c: Use mailbox_create_default for --file=MBOX.
	Some calls to exit() were placed *before* issuing diagnostics.
	Fixed.

	* mailbox/folder_imap.c: Changed ENOTSUP to ENOSYS.

2001-08-02  Sam Roberts

	* folder_imap.c: don't pretend to be authorized if we are not, it
	only leads to confusion
	* mailbox.c: mailbox created the folder, it should set it's
	folder's debug object when it's is set, otherwise there is no way
	to get debug messages from a mailbox's folder (I was getting all
	the pop protocol traces but not the imap ones)
	* TODO: updated
	* sieve/: script.c, sieve.c: Fixed bug, I was deleting a message
	after a fileinto, which was wrong.  Tweaked the logging, it's
	little cleaner and more useful.
	* sieve/COPYING: Removed the RCS keyword in the imported copyright
	notice.
	* sieve/: sieve-gram.y, sieve-lex.l: Now using xmalloc() from
	../lib.
	* examples/mbox-explode.c: Don't mkdir unless the mailbox can be
	opened, and better cleanup on error detection.
	* sieve/examples/: Test, test.out: Committing my example/test sieve
	scripts so I can maintain them with cvs (I use them at work and
	home).
	* mail/util.c: Not all systems have <sys/fcntl.h>, changed to use
	HAVE_FCNTL_H.
	* mailbox/mbx_pop.c: imap logged the passwd in protocol traces, pop
	didn't, so I made them both be the same (the way that is most
	useful when debugging protocol traces)
	* sieve/examples/: INBOX.orig, Makefile, box.sv, ex-1.10.2.sv,
	ex-2.3a.sv, ex-2.5.1.sv, ex-2.7.3.sv, ex-3.1a.sv, ex-3.1b.sv,
	ex-3.2.sv, ex-4.1.sv, ex-4.2.sv, ex-4.4a.sv, ex-4.4b.sv, ex-4.5.sv,
	ex-5.1.sv, ex-5.7.sv, ex-9.sv, ex-null.sv, ex-save-all.sv,
	example.sv, exn-2.3b.sv, exn-5.4.sv, t-exists.sv, t-fileinto.sv,
	t-mailutils.sv: Committing my example/test sieve scripts so I can
	maintain them with cvs (I use them at work and home).

2001-08-01  Alain Magloire

	* mailbox2/header.c: Put the stubs.
	* mailbox2/include/mailutils/header.h: Prototypes.
	* mailbox2/include/mailutils/sys/header.h: Prototypes.

2001-07-31  Alain Magloire

	More intelligence was put in decode to detect mime messages.
	This temporary until we articulate how to present mime messages.
	decode will probably replace print.c.  Parsing of mailcap is
	not yet done.

	* mail/decode.c: Aware of the content_type and the encoding
	for mime message, will supersede [Pp]rint.

	* mail/mail.c: Set the columns variable at startup.
	* mail/mail.h: Prototype fpr util_screen_columns().
	* mail/mailline.c: Reset COLUMNS on SIGWINCH.
	* mail/util.c: New function util_screen_columns();

	* sieve/Makefile.am: Remove gcc specific flags.
	* sieve/xmalloc.c: Removed, use lib/xmalloc.c instead.
	* sieve/xmalloc.h: Removed.
	* sieve/sysexists.h: Removed.

2001-07-31  Alain Magloire

	* mailbox2/Makefile.am: add new files.
	* mailbox2/fstream.c (_fs_write): n uninitialized.
	(_fs_open): Use S_ISREG() macro.
	* mailbox2/include/mailutils/base.h: Remove superfluous.
	* mailbox2/iterator.c: Define struct _iterator.
	* mailbox2: New files: observer.c observable.c
	address.c parse822.c list.c attribute.c envelope.c

2001-07-30 Sergey Poznyakoff
	* guimb/main.c: Set g_argv[0] to the program file name for consistency
	with guile.
	* libmu_scm/mu_message.c: Added new primitives:
		mu_message_copy
		mu_message_delete
		mu_message_get_flag
		mu_message_set_flag
		mu_message_get_user_flag
		mu_message_set_user_flag
	* libmu_scm/mu_scm.c: Define MU-ATTRIBUTE- constants.
	* libmu_scm/mu_address.c: (new) Address-related functions.
	* libmu_scm/Makefile.am: Added mu_address.c

2001-07-27 Sergey Poznyakoff
	* lib/xmalloc.c: call mu_error() instead of error().
	* lib/malloc.c,lib/realloc.c: (new) Provide rpl_malloc() and
	rpl_realloc() (required by m4/malloc.m4, m4/realloc.m4)
	* lib/Makefile.am: Added malloc.c, realloc.c.

	* mail/mail.h: Include <xalloc.h>
	* mail/util.c: Removed util_[mc]alloc() in favor of x[mc]alloc().
	* mail/alias.c: Use x[mc]alloc() instead of util_[cm]alloc().
	* mail/alt.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/mailline.c: Likewise.
	* mail/shell.c: Likewise.
	* mail/unset.c: Likewise.
	* mail/var.c: Likewise.

	* TODO: updated.

2001-07-25 Alain Magloire

	Based on Jakob's idea, an implementation for decode.
	But it is clearly not flexible enough:

	  decode [msgno] [part]
	  ? decode 28 2

	IF message 28 is a multipart(mime) with two parts, the second part
	will be decoded and sent to stdout.

	* mail/decode.c: First implementation behind Jakob's proposal.

2001-07-23 Sergey Poznyakoff
	* configure.in,libmu_scm/Makefile.am,guimb/Makefile.am : Fixed to
	compile properly on systems with missing/incomplete guile.
	* include/mailutils/Makefile.am: Added mailutils.h to
	pkginclude_HEADERS.

2001-07-23 Alain Magloire

	* libmu_scm/mu_scm.h: Remove HAVE_LIBGUILE_H guard.
	* guimb/guimb.h: Remove HAVE_LIBGUILE_H guard.

2001-07-23 Alain Magloire

	* util.c (util_msglist_command):  Check for interruption here
	also and that will permit interruption on long commands like
	"from *"

2001-07-23 Alain Magloire

	The reason the interrupt code did not work for me, is that
	by default using signal will make function calls restartable,
	at least on my default RH5.1, when read() was interrupted
	it did not return EINTR inside ml_getc().

	* mail.c (main): Use sigaction if available to set SIGPIPE.
	* mailline.c (sig_handler): Reset "lines" variable.
	Recall signal() if we did not have sigaction.
	(ml_readline_init):  Use sigaction to set SIGWINCH and SIGINT.

	* libmu_scm/mu_scm.h:  Guard with HAVE_LIBGUILE_H.
	* guimb/guimb.h : Guard with HAVE_LIBGUILE_H.

2001-07-22 Sergey Poznyakoff
	Renamed debug_.* symbols to mu_debug_.* to avoid nameclashes.
	Files affected:
	* examples/mbox-dates.c, mbox-explode.c;
	* from/from.c;
	* include/mailutils/{debug.h,folder.h,mailbox.h,mailer.h};
	* libmu_scm/mu_message.c;
	* mail/send.c;
	* mailbox/{debug.c,folder.c,mailbox.c,mailer.c};
	* mailbox/include/{debug0.h,folder0.h,mailbox0.h,mailer0.h};
	* mailbox2/include/mailutils/base.h;
	* readmsg/readmsg.c;
	* sieve/sieve.c;

	* configure.in: Added --without-guile. Uncommented making
	libmu_scm and guimb. Added check for -ldl before
	checking for -lpam: both FreeBSD and OpenBSD lack libdl, but
	have working libpam.

	* messages/Makefile.am: Added missing @ARGP.*@ substitutes.

2001-07-21  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* mail/Makefile.am (mail_SOURCES): add decode.c

	* mail/mail.h: add mail_decode prototype

	* mail/decode.c (mail_decode): new file, new function

	* mail/table.c: add decode command

	* mail/util.c (util_expand_msglist): insert placeholder for
	attachment operations

2001-07-20  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* messages/messages.c: new file, implement of elm messages command
	(parse_opt): add --silent and --quit options
	(messages_count): new function

2001-07-20 Alain Magloire

	* mailbox/misc.c: Removed, _cpystr() function move in mutil.c
	and rename to util_cpystr().
	* mailbox/include/misc.h: Removed.
	* include/mailutils/mutil.h: Added prototype for util_cpystr().
	* mailbox/mutil.c (util_cpystr): New function, move
	the _cpystr() from misc.c and move here.
	* mailbox/Makefile.am: Removed misc.c in dependencies.
	* mailbox/include/Makefile.am: Removed misc.h in dependencies.
	* mailbox/address.c: Use util_cpystr() instead of _cpystr().
	Added <mailutils/mutil.h> prototype.
	* mailbox/auth.c: Likewise.
	* mailbox/url.c: Likewise.
	* mailbox/folder.c: Likewise.

2001-07-19 Sergey Poznyakoff
	Added guile interface library.

	* Makefile.am: Added scripts libmu_scm guimb.
	* configure.in: Checks for presence of Guile components.
	Making libmu_scm and guimb commented out until we solve
	debug_print name clash
	(libguile/debug.h vs. mailutils/debug.h).

	* scripts: (new) Contains scripts for preparing guile
          documentation strings from C sources. The reason for
	  their presence is that guile-doc-snarf scripts distributed
	  with guile up to version 1.4 do not work. The comment at
          the beginning of scripts/guile-doc-snarf describes why. We'll
	  have to use these until next version of guile fixes the bug.
	* scripts/{Makefile.am,guile-doc-snarf,guile-func-name-check,
          guile-snarf.awk: (new)
	* scripts/.cvsignore: (new)

	* libmu_scm: (new) Guile interface library:
	* libmu_scm/Makefile.am: (new).
	* libmu_scm/mu_scm.c: (new) Main module.
	* libmu_scm/mu_mailbox.c: (new) Mailbox primitives.
        * libmu_scm/mu_message.c: (new) Message primitives.
        * libmu_scm/mu_body.c: (new) Message body primitives.
	* libmu_scm/mu_scm.h: (new) Library prototypes.
	* libmu_scm/.cvsignore: (new)

	* guimb: (new) Process mailbox(es) using Guile program or
	  expression.
	* guimb/Makefile.am: (new)
	* guimb/main.c: (new) Main functions.
	* guimb/collect.c: (new) Collect input.
	* guimb/util.c: (new) Some utilities.
	* guimb/run_scm.c: (new) Initialization of libguile and libmu_scm
	* guimb/guimb.h: Prototypes.
	* guimb/.cvsignore: (new)

	* examples/reply.scm: Automatic mail responder for use with guimb.

2001-07-18 Sam Roberts

	* include/mailutils/url.h: New api functions for parsing.
	* doc/: Makefile.am, framework.texi, url.texi: Updated and
	  corrected URL documentation.
	* doc/ex-url.texi: The url api example. Derived from
	  ../example/url-parse by a perl script.
	* mailbox/url.c: Added a function to do generalized URL parsing.
	* mailbox/: url_imap.c, url_pop.c: Use the url_parse() function to
	  parse the URL.
	* mailbox/mbx_pop.c: Added checks for low-memory conditions, and
	  look for passwd in url before prompting user.
	* mailbox/folder_imap.c: Look for passwd in the url before
	  prompting.
	* examples/: .cvsignore, Makefile, Urls, url-parse.c: Added example
	  of URL parsing, and test for parsing.
	* examples/Urls.good: Added test for % decoding.
	* mailbox/mbx_mbox.c: Needed <stdlib.h> on QNX6.
	* mailbox/include/: registrar0.h, url0.h: Comment on schemes, and
	  removed comment on encoding.

2001-07-18 Alain Magloire

	* mailbox/mbx_mbox.c (mbox_messages_count): This function does
	not call the observers, the callback function, on the mbox_scan()
	does.

	* frm/frm.c (main): call mailbox_scan () instead of
	mailbox_messages_count () since we want to be notified.

2001-07-12 Sam Roberts

	* examples/mbox-dates.c: Added pop and imap records.
	* include/mailutils/mutil.h, mailbox/mutil.c: New functions -
	mu_hex2ul(), mu_hexstr2ul().
	* mailbox/message.c: unistd.h needed on QNX6
	* TODO: Added Sergey's todo items and mine for sieve.

2001-07-12  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* include/mailutils/mailutils.h: new "catchall" header, includes
	all mailutils headers

2001-07-10 Sam Roberts

	* examples/Addrs.good: Now mapping ENOENT to EPARSE in error
	reporting, its clearer.

2001-07-09 Sergey Poznyakoff
	* configure.in: check for termios.h termio.h sgtty.h
	Added MU_MAINTAINER_MODE.
	* m4/maintain.m4: (new) Settings specific to maintainer-mode.
	* m4/Makefile.am: Added maintain.m4.

	* mailbox/attribute.c: Fixed flags_to_string(): MU_ATTRIBUTE_SEEN
	and MU_ATTRIBUTE_READ were swapped: the former produced 'R',
	and the latter 'O'.

	* mail/file.c: run "summary" after opening new mailbox.
	Issue diagnostics if mailbox cannot be opened.
	Display summary when called without arguments.
	* mail/from.c: Changed flags display.
	* mail/mailline.c: Provide ml_reread() when compiled without
	readline.
	Check for interrupt in (both versions of) ml_reread().
	Use util_[cm]alloc() instead of [cm]alloc().
	* mail/{print.c,visual.c}: set READ instead of SEEN attribute on
	read messages.
	* mail/z.c: case D_FWD missed break; Fixed typos in the comment
	to D_NONE.
	* mail/version.c: display options with which the program is
	compiled.
	* mail/util.c: Added util_malloc(), util_calloc().
	* mail/mail.h: Protos for the above;
	* mail/alias.c: use util_[cm]alloc() instead of library functions
	wherever appropriate.
	* mail/alt.c: Likewise.
	* mail/mail.c: Likewise.
	* mail/shell.c: Likewise.
	* mail/unset.c: Likewise.
	* mail/var.c: Likewise.
	Implemented ~A (read signature from file).
	* mail/quit.c: Raise hold flag when not closing system mailbox (%).

2001-07-06  Alain Magloire

	* mail/mailline.c: "interrupt" is actually a key word
	for some C compiler i.e. Watcomm C, rename it to "interrupted".
	* mail/util.c: The macros O_CREAT etc needs <sys/fnct.h>.

2001-07-06  Alain Magloire

	* mail/mail.c: Be a little more verbose when mailbox_{create,open}()
	fails at startup.
	* doc/Makefile.am: Add the missing *.texi in the list of EXTRA_DIST.

2001-07-06 Sergey Poznyakoff
	* imap4d/fetch.c: imap4d_fetch0(): return RESP_OK on success.
	* imap4d/bye.c: split imap4d_bye() into imap4d_bye() and imap4d_bye0().
	* imap4d/logout.c: call imap4d_bye0() instead of imap4d_bye().
	Reason: rfc 2060 requires that the server send a BYE untagged response
	before the (tagged) OK response. With our implementation it was
	vice-versa.
	* imap4d/imap4d.h: proto for imap4d_bye0().
	* mail/mail.c: changed startup banner.
	* mail/mailline.c: handle SIGWINCH.
	* mail/util.c: Include <termios.h> when present.
	* configure.in: test for the presence of <termios.h>

2001-07-05  Alain Magloire

	* mail/send.c(mail_send0): Put the mailer in debug mode
	if util_find_env("verbose")->set, good for debugging.

2001-07-05  Alain Magloire

	According to the man page:
	"sendmail contains a command, possibly with options, that mailx
	invokes to send mail. You must manually set the default for this
	environment variable by editing ROOTDIR/etc/mailx.rc to specify the
	mail agent of your choice. The default is sendmail, but it can be any
	command that takes addresses on the command line and message contents
	on standard input."

	* mail/mail.c (main): Register smtp_record too as a mailer.
	Set variable sendmail to _PATH_SENDMAIL as the default mailer.
	* mail/mail.h: New proto util_setenv(), util_find_env()
	change to be const char *.
	* mail/send.c (msg_to_pipe): New function, open a pipe()
	and write a message to it.
	(mail_send0): Now create the mailer according to
	util_find_env("sendmail")->value.  Use a pipe() if mailer_create()
	fails.
	* mail/set.c (mail_set): After free(entry->value) set the value
	to NULL.
	* mail/util.c (util_find_env): Change the prototype to be const.
	Remove hack about need_free and use a static variable to hold
	"asksub".
	* mail/util.c (util_setenv): New function to set environment
	model on libc call setenv().

	* mailbox/message.c (message_sender): Set the default sender base on
	the passwd entry.

2001-07-05  Alain Magloire

	We can send a message and if the address starts with '|'
	the message is pipe to the cmd and if starts with '/' it is
	save to a file.
	     mailx ghislaine '|cat >save'
	mails a message to ghislaine and also copies the message into a file
	called save.

	* mail/mail.h: Change struct send_environ to contain
	two new fields char **outfiles and int nfiles.
	* mail/send.c: Look for '/' and '|' when parsing the addresses
	and add them to struct send_environ outfiles.
	(mail_send0):  Memory overflow, we were free(buf) twice.
	made char *buf local where it is needed.  Save the message
	to outfiles when set.
	(isfilename): New function.
	* mail/followup.c: Initialize the struct send_environ new fields.
	* mail/reply.c: Initialize the struct send_environ new fields.

	* lib/argcv.c: Add support to consider string between
	single quote like one word(same as double quotes).

2001-07-04  Alain Magloire

	* mailbox2/stream.c: stream_read() and stream_write()
	change prototype to be "void *" instead of "char *".
	* mailbox2/bstream.c: Adjust bstream_{read,write} to the
	new prototypes.
	* mailbox2/pop3/pop3_stream.c: Likewise.
	* mailbox2/Makefile.am: New file.
	* mailbox2/pop3/Makefile.am: New file.
	* mailbox2/mstream.c: Mapfile stream Implementation.
	* mailbox2/fstream.c: File stream implementation.
	* mailbox2/include/mailutils/sys/fstream.h: New file.
	* mailbox2/include/mailutils/sys/mstream.h: New file.
	* mailbox2/tcp.c: rename to tcpstream.c.
	* mailbox2/include/mailutils/sys/tcp.h: Rename to tcpstream.h

	* mailbox/mapfile_stream.c (_mapfile_write):  Make sure
	the size is not zero before making the memcpy().

2001-07-03  Alain Magloire

	* mail/headers.c:  Catch the overflow in the calculation by
	resetting the number of lines to default screen lines.
	* mail/mail.c (main): Add a "summary" call also for the
	initial commands on startup(in interactive).
	* mail.h: Proto for mail_summary() and mail_version().
	* table.c: Add mail_summary() and mail_version() in the cmd table.
	* util.c (util_getcols): First try an ioctl(TIOCGWINSZ,..) call
	not all shells set the COLUMNS environ.
	(util_getlines): Likewise. Also take to account the prompt
	in the lines number.
	* z.c (mail_z): Change the behaviour of "z." to show a screenful
	when the last page is reach.  This is very practical when starting
	mail, since "z." is the initial command to show the header summary.
	* mail/version.c: New file, show mail version, mail_version().
	* mail/summary.c: New file, display a short summary of the mailbox.
	mail_summary().
	* mail/Makefile.am: add summary.c and version.c

	* mailbox2/include/mailutils/mbox.h: Proto for Unix-Mbox.

2001-07-03  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* README-alpha: note that INSTALL is generated

2001-07-03 Sergey Poznyakoff
	* configure.in: --with-mail-rc option: set path to system-wide
	mail.rc file.
	* mail/Makefile.am,mail/mail.c: Likewise.
	* mail/send.c: check for "dot" variable. Implemented "~.",
	"appenddeadletter".
	* mail/inc.c: (new) inc[orporate] command.
	* mail/{mail.c,mail.h,table.c}: Ditto.
	* mail/print.c: Handle interrupts when fetching message body.
	* mail/followup.c: insert ',' between recipients' addresses.
	* mail/quit.c: use mailbox_save_attributes(). Implemented
	"hold" variable. Raise MU_ATTRIBUTE_READ on every message with
	MU_ATTRIBUTE_SEEN bit set (compatibility with existing mails).
	* mail/from.c: Changed order of checking message attribute bits to
	be compatible with existing implementations.
	* mail/z.c: removed break from the loop.
	* mailbox/attribute.c: added attribute_set_modified() function.
	Fixed attribute_unset.* functions to raise MU_ATTRIBUTE_MODIFIED bit.
	* include/mailutils/attribute.h: Proto for attribute_set_modified().

2001-07-02 Alain Magloire

	* mailbox2/tcp.c: make it thread-safe.
	* mailbox2/bstream.c: Implement buffered stream.
	* mailbox2/pop3_stream.c: Use a buffered stream.

2001-07-02 Alain Magloire

	Feedback from Sergey for the need of saving the attribute flags
	without expunging.  Note, this is a hack, the code is taken from
	mbox_expunge(mbx_mbox.c) and there is lot of duplication.  But
	since we are moving toward a new mailbox API, the code will be
	rewritten more cleanly in the new API.

	* include/mailutils/mailbox.h: Add proto mailbox_save_attributes()
	* mailbox/include/mailbox0.h: New field in struct _mailbox
	_save_attributes (mailbox_t);
	* mailbox/mailbox.c: New function mailbox_save_attributes ().
	* mailbox/mbx_mbox.c: New function mbox_save_attributes (),
	implement saving the attribute flags in header field "Status:"

	* imap4d/bye.c: call mailbox_save_attributes() when exiting.
	it will save the attribute flags.
	* imap4d/close.c: Typo.
	* imap4d/logout: Remove the mailbox_close() and mailbox_destroy()
	it is being call imap4d_bye ().
	* imap4d/select.c (imapr3d_select0): call mailbox_save_attributes()
	if a mailbox was already selected.

2001-07-01 Alain Magloire

	* mail/util.c (util_strupper):  The first implementation was
	buggy, corrected.

2001-07-01 Alain Magloire

	* mailbox2/pop3/*: Pop3 functions are thread-safe and cancel-safe.
	The problem is monitor.h, we will probably end up doing a monitor.h.in
	and set at compile time if threading is enable or not.

2001-07-01 Alain Magloire

	* mail/util.c (util_expand_msglist): Cleanup the expand by pattern
	by moving some code in util_strupper(), the comparison must be
	case insensitive.
	(util_strupper): Convert the string to uppercase.

2001-07-01 Sergey Poznyakoff
        * mailbox/attribute.c: set MU_ATTRIBUTE_MODIFIED bit in the underlying
        structure when setting the flags.
        * mail/mail.c: Initialize readline and set user name before
        determining working mode.
        For an empty mailbox output diagnostics and quit.
        Read system-wide mail.rc file.
        Implemented "set ignoreeof".
        * mail/send.c: Implemented "set ignore", "set ignoreeof", "set nosave".
        Use doubled escape character to insert a single escape to the
        message body.
        * mail/delete.c: Implemented "set autoprint"
        * mail/dp.c: removed util_do_command("next"): delete does this anyway.

2001-06-30 Sergey Poznyakoff
	* configure.in:
		define READLINE_LIBS instead of linking libreadline
		to every binary.
		AC_CHECK_LIB(pthread) was missing comma before
		ACTION_IF_NOT_FOUND, thus have_libpthread was always no.
	* mail/Makefile.am: Use READLINE_LIBS
	* lib/argcv.[ch]: Treat a sequence of whitespace characters as
	a single whitespace. Break string on given delimiters. Do not
	split quoted arguments.
	* mail/set.c: Modified to use new argcv_get() syntax.
	* mail/delete.c: After deleting move realcursor to the next
	non-deleted message.
	* mail/alt.c: Honour "metoo" variable. Try to determine users
	full email address.
	* mail/mail.c: do not put empty or comment lines into readline
	history. Handle keyboard interrupts properly.
	Implemented `warranty' command. Warn user about arrival of a new
	mail.
	* mail/send.c: Handle keyboard interrupts. Use util_tempfile().
	* mail/{send.c,reply.c}: change args in call to mail_send0(): packed
	all header strings into one structure to facilitate escape handling.
	Warn user about null message body.
	* mail/mailline.c: (new) readline-related functions.
	* mail/var.c: (new) Functions for escape variable handling.
	* mail/util.c: added extra argument to util_find_entry(): a pointer
	to the table where to look up. Added util_error(), util_help(),
	util_tempfile().
	* mail/*.c: use util_error() instead of printing diagnostics to ofile.
	* mail/{source.c,if.c}: removed mail_is_terminal(),
	mail_set_is_terminal(): `interactive' is used instead.
	* mail/mail.h: in struct mail_command_entry changed `isflow' field
	to `flags'. It contains information about semantics of the command.
	* mail/table.c: Initialize `flags' field.


2001-06-29  Alain Magloire

	* mail/util.c (util_expand_msglist): Implement expansion of
	:d       All deleted messages
	:n       All new messages
	:o       All old messages
	:r       All messages that have already been read
	:u       All unread messages
	/string  All messages with string in the subject line
                 (the case of characters in string is ignored)

2001-06-27  Alain Magloire

	* configure.in:  We were not checking for thread support
	at all because the test was faulty.

	* readmsg: New directory.
	* readmsg/readmsg.c: New file.
	* readmsg/readmsg.h: New file.
	* readmsg/msglist.c: New file.
	This is base on a old testing program Dave inglis wrote
	to test the mime parsing code.  It is still work in progress
	but a good base for the readmsg(1) elm utility clone.
	Not enable yet in the TOP Makefile.

2001-06-26  Alain Magloire

	* mail/from.c:  Use address_get_personal() for a more
	pretty print when showing the headers.

2001-06-26 Sergey Poznyakoff
	* mail/util.c:
		Added extra argument to util_msglist_command(), controlling
		whether it should move the cursor to the last message
		processed.
	* mail/delete.c,mail/dp.c,mail/edit.c,mail/from.c,mail/hold.c,
	  mail/mbox.c,mail/print.c,mail/reply.c,mail/size.c,mail/top.c,
	  mail/undelete.c,mail/util.c,mail/visual.c: Likewise.
	* mail/util.c: util_screen_lines() function.
		util_outfolder_name().
		util_save_outgoing()
	* mail/z.c: removed z_lines() in favor of util_screen_lines().
	* mail/headers.c: use util_screen_lines().
	* mail/touch.c: Initial implementation. Simply calls mail_mbox.
		Maybe the table.c entry should point to mail_mbox instead?
	* mail/write.c: use util_fullpath().
	* mail/send.c: call util_save_outgoing() to preserve sent message.
		Set umask 077 before calling mkstemp().
	* mail/folders.c: Use $LISTER.
	* mail/followup.c: Implemented.
	* mail/from.c: Changed output format.
	* mail/mbox.c: move mail_mbox_commit to quit.c.
	* mail/quit.c: Likewise. Honour "keepsave" variable.

2001-06-25  Alain Magloire

	* mail/header.c: We were looping forever in here.  The loop
	is not need it, header only prints one page that includes
	the message specified i.e. the header command only takes
	a message number as an argument that will serve as a reference
	to display a screen full.

	* mail/help.c: Use the pager code, the help is long.

2001-06-25  Alain Magloire

	* doc/Makefile.am: add {c-api,framework,programs}.texi EXTRA_DIST
	* imap4d/imap4d.c (imap4d_usage): Cut and paste typo.
	* pop3d/pop3d.c (pop3d_usage): Cut and paste typo.
	* include/mailutils/Makefile.am: add mutil.h to the list.
	* lib/strisignal.c: Define __P if not set.
	* m4/Makefile.am: Added tm_gmtoff.m4 tm_isdst.m4 tm_zone.m4

2001-06-25 Sergey Poznyakoff
	* mail/if.c: Removed confusing comment.
	* mail/copy.c: Split off mail_copy0. It is shared between mail_copy
		and mail_save. Implemented Copy command.
		Use mailbox_open_default() instead of mailbox_open().
		Fixed possible memory leaks.
	* mail/write.c: Implemented Write. Fixed memory leaks.
	* mail/Makefile.am: removed discard.c
	* mail/discard.c: removed. Implemented in retain.c.
	* mail/retain.c: Implemented retain/ignore. It is more convenient
		to keep them in one module so they can share static data.
	* mail/alias.c: Implemented.
	* mail/unalias.c: Implemented.
	* mail/alt.c: Implemented.
	* mail/file.c:
		Check number of arguments.
		Display current mailbox name when called without args.
		Honour %, &, and + in mailbox names (possibly should
		be implemented in mailbox_open_default ?).
		Use mail_mbox_close(). After opening new mailbox,
		run "z." instead of "from *".
	* mail/folders.c: A (very rudimentary) implementation.
	* mail/headers.c: Removed if (num) clause: util_expand_msglist()
		now returns at least 1.
	* mail/pipe.c: Likewise.
	* mail/hold.c: Implemented.
	* mail/mail.c: Escape % signs in the command line before passing
		it to util_do_command().
	* mail/mail.h: Protos for implemented functions. Proto for
		readline() if libreadline is not linked in.
		Definition for MAIL_ATTRIBUTE_MBOXED.
	* mail/mbox.c: Implemented.
	* mail/print.c: Print only header fields allowed by retain/ignore
		settings.
	* mail/quit.c: mail_mbox_close() shared between this module and
		file.c.
		Print statistics information on closing the mailbox (number
		of messages held and saved in mbox).
	* mail/reply.c: Implemented.
	* mail/save.c: Use mail_copy0().
	* mail/send.c: Split off mail_send0(). It is used by mail_send()
		and mail_reply().
	* mail/util.c:
		util_expand_msglist(): return 1 and set msglist[0]=cursor
		if argc == 1.
		util_do_command(): Added missing va_end().
		util_get_sender(): Returns sender email for the given msgno.
			Optionally strips off domain part.
		util_slist_.*(): "string lists" used by alias,alt,retain,
			ignore.
		util_strcat(): Concat two strings, reallocating first
			to the necessary length.
		util_escape_percent(): Excape % signs in a string, so
			it can be used as format in .*printf calls.

2001-06-22 Sergey Poznyakoff
	* mailbox/mutil.c: added mu_get_homedir() and mu_tilde_expansion();
	* include/mailutils/mutil.h: protos for new mu_ functions
	* imap4d/util.c: use mu_tilde_expansion().
	* mail/z.c: implemented.
	* mail/if.c: implemented.
	* mail/mail.c: A read-eval loop function shared between mail.c and
		source.c. Quits gracefully upon reading EOF.
		Expand '~' in pathnames.
		Upon startup in read mode, display first screenful of from
		lines, instead of listing the whole mailbox. This is
	        compatible with existing implementations.
		Do not display prompt when not reading from a terminal.
	* mail/source.c: Use common read-eval loop.
	* mail/mail.h: Protos for new functions.
		struct mail_command_entry: added isflow field, needed
		for if/else/endif flow control.
	* mail/table.c: changes due to addition of isflow field.
	* mail/send.c: removed unconditional #include <paths.h>: it already
		was included from "mail.h".
	* mail/util.c: Added util_get_homedir() and util_fullpath().

2001-06-21 Sergey Poznyakoff
	* mailbox/mutil.c: Fixed error introduced in the initial
	  implementation of mu_mktime (now mu_tm2time). The comment
	  on mu_tm2time() describes it.
	  Revert the sign of the return value of mu_utc_offset(), so it
	  agrees with the accepted timezone rules (+ for eastern
	  hemisphere, - for western).

2001-06-19 Sam Roberts

	* include/mailutils/debug.h, mailbox/debug.c: New function:
	  debug_printv() to complement debug_print().
	* examples/mbox-dates.c: parse822_date_time now takes a timezone
	  argument. We don't actually use the arguments, though.
	* include/mailutils/parse822.h: parse82_date_time() now uses the
	  mu_timezone structure for portability.
	* include/mailutils/mailbox.h: Prototyped mailbox_destroy_folder().
	* mailbox/mu_mktime.c: Moved mu_mktime to mutil.c as mu_tm2time,
	  and removed mu_mktime.c
	* include/mailutils/mutil.h, mailbox/Makefile.am,
	  mailbox/mbx_imap.c, mailbox/mutil.c, mailbox/parse822.c: Moved some
	  generically useful date/time handling functions to mutil.c, fixed
	  problems with portability of timezone information in struct tm, and
	  created a new structure to hold timezone information, since
	  struct tm doesn't do so reliably.
	* imap4d/: append.c, fetch.c, imap4d.h, namespace.c, search.c,
	  util.c: Moved date/time parsing utility functions to
	  mailbox/mutil.c.  Added braces to initializers and removed unused
	  variables prototyped shared functions, made functions that didn't
	  return return void. (to quiet gcc -Wall),

2001-06-17 Sam Roberts

	* sieve/Makefile.am: More fixes to the packaging structure by
	Sergey.
	* acconfig.h, configure.in, m4/tm_gmtoff.m4, m4/tm_isdst.m4,
	m4/tm_zone.m4: Added tests for isdst, gmtoffset, and zone in struct
	tm.
	* mailbox/folder_pop.c: Confusing typo in comment.

2001-06-16 Sergey Poznyakoff
        * mailbox/mu_mktime.c(added): a wrapper around system mktime()
          function that honours the timezone.
        * mailbox/Makefile.am: add mu_mktime.c.
        * imap4d/fetch.c: date conversion in fetch_internaldate.
          get_timezone() not used anymore, removed.
        * imap4d/search.c: removed confusing comment.
        * imap4d/util.c: changed mktime() calls to mu_mktime(), this
          solves the timezone problem.
          use imap_parse_date_time() in util_parse_internal_date0().
	  (Proposed by Sam).
	* imap4d/imap4d.h: Added missing declarations.
        * mailbox/mbx_imap.c: Patch from Sam: added imap_parse_date_time().
          imap_parse_date_time() returns tm/timezone pair.
	* mailbox/folder_mbox.c: added #include <sys/types.h>. It is needed
          on FreeBSD before inclusion of <dirent.h>
	* sieve/sieve.c: swapped arguments in a call to va_start().

2001-06-15 Sergey Poznyakoff
	Bunch of patches provided by Sam Roberts:
	* imap4d/util.c: Fixed format bugs in util_parse.*_date functions.
          Use parse822_date_time() in util_parse_header_date().
	  Some changes to pacify gcc -Wall.
	* imap4d/util.c,imap4d/search.c,imap4d/imap4d.h:
	  Rename the confusing functions:
		 util_parse_header_date -> util_parse_822_date
		 util_parse_rfc822_date -> util_parse_ctime_date
	  include <ctype.h>

2001-06-14 23:01  Sam Roberts

	* mailbox/parse822.c: I think timezone info is now placed in struct
	tm correctly.
	* include/mailutils/parse822.h: Prototypes for functions to parse
	rfc822 date-time.
	* sieve/: Makefile.am, test.c: Patches from Sergey to make the
	auto* stuff work, now uses lex/yacc portably, and puts all the
	necessary files into the distribution.
	* sieve/ylwrap: Portable wrapper for lex/yacc invocations, by Tom
	Tromey <tromey@cygnus.com>, modified by Sergey Poznyakoff
	<gray@farlep.net> to replace yy prefixes, so multiple grammars can
	co-exist.
	* sieve/sieve.c: Define EOK ifndefed.
	* examples/showmail.c: No longer relevant to the current APIs.
	* examples/mbox-dates.c: GNU indented.
	* examples/addr.c: GNU indented
	* examples/.cvsignore: Added example executables.
	* examples/mbox-explode.c: Made so it now saves all the attachments
	from all the messages in a folder. Also GNU indented.
	* doc/envelope.texi: Added some text to the envelope docs, still
	incomplete.
	* doc/url.texi: Noted the IMAP url syntax.
	* doc/mailutils.texi: Some of the RFCs were missing, or
	miscategorized in the references sect.
	* doc/.cvsignore: Ignoring files.
	* doc/rfc1939.txt: Was checked in with DOS line terminators,
	converted to Unix.

2001-06-11  Alain Magloire

	* imap4d/util.c (util_msgset): When '*' was define in the
	set it was not added to the count.
	Bug reported by Jakob Kaivo.

2001-06-09  Alain Magloire

	* mailbox2/pop3/pop3_open.c: Remove for pop3_connect.c
	* mailbox2/pop3/pop3_close.c: Remove for pop3_disconnect.c
	* mailbox2/pop3/pop3_connect.c: New.
	* mailbox2/pop3/pop3_disconnect.c: New.
	* mailbox2/include/mailutiils/error.h: New macro
	MU_ERROR_OPERATION_CANCELED
	* mailbox2/include/mailutils/pop3.h: Move the enum state in sys/pop3.h

2001-06-09 Sam Roberts

	* rfc1738.txt, rfc2045.txt, rfc2046.txt, rfc2047.txt, rfc2049.txt,
	rfc2088.txt, rfc2111.txt, rfc2192.txt, rfc2193.txt, rfc2221.txt,
	rfc2298.txt, rfc2342.txt, rfc2368.txt, rfc2384.txt, rfc2821.txt,
	rfc2822.txt, rfc3028.txt, rfc821.txt, rfc822.txt: These RFCs are
	relevant to mailutils, and many (all?) are referenced in the
	mailutils documentation.

2001-06-09  Alain Magloire

	* examples/mbox-explode.c: message_save_attachment, should take
	the part.  Continue if the message does have a Date or Subject field.

	* mailbox/mapfile_stream.c (_mapfile_open): Indentation.

2001-06-09  Alain Magloire

	* mailbox/tcp.c (_tcp_get_fd): Buglet, comparing fd against EINVAL
	instead of -1.

	* mailbox2/pop3/pop3_apop.c: New.
	* mailbox2/pop3/pop3_capa.c: New.
	* mailbox2/pop3/pop3_close.c: New.
	* mailbox2/pop3/pop3_create.c: New.
	* mailbox2/pop3/pop3_dele.c: New.
	* mailbox2/pop3/pop3_destroy.c: New.
	* mailbox2/pop3/pop3_iterator.c: New.
	* mailbox2/pop3/pop3_list.c: New.
	* mailbox2/pop3/pop3_lista.c: New.
	* mailbox2/pop3/pop3_noop.c: New.
	* mailbox2/pop3/pop3_open.c: New.
	* mailbox2/pop3/pop3_pass.c: New.
	* mailbox2/pop3/pop3_quit.c: New.
	* mailbox2/pop3/pop3_readline.c: New.
	* mailbox2/pop3/pop3_response.c: New.
	* mailbox2/pop3/pop3_retr.c: New.
	* mailbox2/pop3/pop3_rset.c: New.
	* mailbox2/pop3/pop3_sendline.c: New.
	* mailbox2/pop3/pop3_stat.c: New.
	* mailbox2/pop3/pop3_stream.c: New.
	* mailbox2/pop3/pop3_timeout.c: New.
	* mailbox2/pop3/pop3_top.c: New.
	* mailbox2/pop3/pop3_uidl.c: New.
	* mailbox2/pop3/pop3_uidla.c: New.
	* mailbox2/pop3/pop3_user.c: New.

	* mailbox2/tcp.c: New.
	* mailbox2/iterator.c: New.
	* mailbox2/stream.c: New.

	* mailbox2/pop3/pop3client.c: Test case should probably somewhere else
	in example/ perhaps?

2001-06-09  Alain Magloire

	* mailbox2/*: First attempt to define the new API.
	POP3 was implemented.

2001-06-07  Sam Roberts

	* .cvsignore, AUTHORS, COPYING, Makefile.am, NEWS, README,
	addr-lex.l, addr.y, comparator.c, comparator.h, exitcodes.h,
	hmac-md5.h, imparse.c, imparse.h, interp.c, interp.h, md5.c, md5.h,
	md5global.h, message.c, message.h, parseaddr.c, parseaddr.h,
	script.c, script.h, sieve-gram.y, sieve-lex.l, sieve.c,
	sieve_err.c, sieve_err.h, sieve_interface.h, svfield.c, svfield.h,
	sysexits.h, test.c, tree.c, tree.h, util.c, util.h, xmalloc.c,
	xmalloc.h: Initial commit of the port of CMU's sieve engine. It
	builds, and some actions work, but has seen very little use.

2001-06-03  Sam Roberts

	* mailbox/file_stream.c,mailbox/mapfile_stream.c: Return EINVAL
	  for meaningless combination of MU_STREAM_READ + WRITE.

2001-06-03  Alain Magloire

	* doc/*; Bunch of typos corrected.
	Patch from Thomas Fletcher.

2001-06-02  Sam Roberts

	* mailbox/parse822.c,include/mailutils/parse822.h: functions
	  to parse rfc822 date-time.
	* examples/mbox-explode.c: example of saving all mime attachments
	  for messages in a mailbox.
	* examples/mbox-dates.c: example of using the date-time parser, it
	  prints all the dates in a mailbox that it can't parse.
	* examples/Makefile: makes the mbox-* examples.

2001-06-01  Alain Magloire

	* mailbox/mbx_pop.c (pop_writeline): if buffer is NULL noop.

2001-06-01  Sergey Poznyakoff
	* imap4d/search.c: case-insensitive comparison for text fields.
	  Error checking for stray symbols at the end of criteria.

	* imap4d/util.c: util_strcasestr() function. Functions for
	  converting between text and integer representation of
	  attributes. Split util_parse_internal_date: the helper
	  function util_parse_internal_date0 also returns the
          pointer to the location in the string where parsing
          stopped.

	* imap4d/util.h: protos for util_strcasestr() and
	  util_parse_.*_date() functions.

	* imap4d/imap4d.c: force ofile to be line-buffered, so command
	  continuation requests are immediately visible.

	* imap4d/append.c: implemented. Currently this needs the
	  helper function mailbox_destroy_folder(), so that
	  mailbox_set_stream does its work. Also the situation
          with message attributes needs to be cleared.

2001-06-01  Alain Magloire

	* mailbox/debug.c(debug_print): Noop is format is NULL;
	* mailbox/mbx_imap.c (imap_messages_count):  Hack! Force a
	reconnect if the server timeout on us.  This is not the right
	approach and does not work well, fix later.
	(message_operation):  Check if selected is not null, first.
	* mailbox/folder_imap.c (folder_imap_create): Wrong state.
	* mailbox/mime.c: Pass down the return value if not ENOENT.

2001-05-30  Dave Inglis

	* mailbox/mbx_pop.c (CHECK_ERROR): Force the mailbox to call connect
	again when an error occurred.  For example the QPopper(Qalcomm) POP3
	server timeout very quickly, 30 seconds violating the RFC.  So when
	Readin the stream again we reconnect.

2001-05-30  Dave Inglis

	* mailbox/filter_trans.c (base64_decode): The variable should
	be unsigned char not signed char.  By default gcc treats a
	declaration of "char*" like "signed char*", CC Watcom did not.
	(base64_encode): Likewise.
	* mailbox/mime.c: Read 'itl the end of the stream.

2001-05-29  Sergey Poznyakoff
	* imap4d/uid.c, imap4d/search.c: support for UID SEARCH command;
	* imap4d/util.c: forgotten fix to util_msgset().

2001-05-27  Sergey Poznyakoff
	* imap4d/search.c: Added missing <message set> condition.

2001-05-27  Sergey Poznyakoff

	* imap4d/imap4d.c, imap4d/capability.c, imap4d/copy.c,
	  imap4d/create.c, imap4d/delete.c, imap4d/imap4d.h,
          imap4d/list.c, imap4d/rename.c, imap4d/select.c,
          imap4d/status.c, imap4d/namespace.c (added):
		implemented NAMESPACE (rfc2342) support

	* imap4d/util.c:
		added util_normalize_path() function.
		util_msgset() bailed out at 1:1 -- fixed.
		Added util_parse_internal_date(), util_parse_header_date(),
		util_parse_rfc822_date().

	* imap4d/bye.c: typo in diagnostic output
	* imap4d/noop.c: issue unsolicited response (as per rfc2060)
	* imap4d/select.c: ditto
	* imap4d/store.c: set MU_ATTRIBUTE_MODIFIED on a message, so
		expunge will know it was modified.

	* imap4d/search.c: implemented. Charsets other than US-ASCII are
		not supported, though.

2001-05-27  Sam Roberts

	* mailbox/address.c: removed unfolding of lines at a NL before parsing.
	* mailbox/parse822.c: consider LF and CRLF equivalent for purposes
	of unfolding lines.

2001-05-23  Alain Magloire

	* mailbox/mbx_default.c (mailbox_create_default): Check
	for URL in the mailbox name.

2001-05-23  Dave Inglis

	* mailbox/mime.c (_mimepart_body_read): Use stream_is_seekable()
	to detect if the stream is POP for example and read 'til the end.
	(mime_get_part): Reuse the stream the original stream flags on the
	newly created message.
	Fix and patches provided by Dave Inglis.

2001-05-23  Sergey Poznyakoff

	* pop3d/user.c: check for NULL return from getpwnam()
	* imap4d/login.c: Likewise.

2001-05-21  Alain Magloire

	GNU md5 is GPL, but we agreed that the libraries should
	fall under LGPL.
	Same goes for basename() and pretty much everything under
	lib/*.[ch]

	* mailbox/message.c (message_get_uidl): Remove the dependency
	from GNU md5.
	* mailbox/md5-rsa.c: New File.
	* mailbox/md5-rsa.h: New File.
	* mailbox/attachment.c (message_create_attachment): Remove
	the dependency from lib/basename.c
	* mailbox/mbx_mbox.c (mbox_tempfile): Remove
	the dependency from lib/basename.c

	* lib/signame.c: Replace in favor of the well-known strsignal().
	* lib/strsignal.c: New file, use the mu_signame() written by
	Sergey.

	* pop3d/signal.c: Use strsignal() unconditionally.
	* imap4d/signal.c: Use strsignal() unconditionally.

	* configure.in: autoconf-2.50 is having difficulty parsing
	a long AC_CHECK_LIB, break it in two.
	Check for strsignal()

	* doc/auth.texi: Bug fixes in texinfo.
	* doc/Makefile.am: Commented the ex-address.texi generation.
	* doc/ex-address.texi: New file.

2001-05-21  Alain Magloire

	* configure.in, imap4d/signal.c, pop3d/signal.c:
	sys_siglist is not defined on some systems (namely, Solaris).
	* lib/signame.c: (added) Provide mu_signame() function to convert
	signal number to string representation.
	* lib/strtok_r.c: bugfix

2001-05-19  Alain Magloire

	* AUTHORS: Update to reflect Sergey and Sam contributions.

2001-05-20  Sergey Poznyakoff

	* mailbox/mbx_mboxscan.c:* Bug in mailbox/mbx_mboxscan.c made the
	stuff coredump upon encountering more than one subject in the header.

	* pop3d/pop3d.c: Typo.

2001-05-19  Sam Roberts

	* mailbox/parse822.c: parse822 is a little smarter in the way
	it handles CRLF.

2001-05-19  Alain Magloire

	* mailbox/mbx_default (mailbox_create_default):  Base on a
	suggestion/patch by Sam Roberts to provide tilde, plus and equal
	(~ + = ) expansion.
	* mailbox/address.c: Unfold field-bodies with NL.
	* mailbox/parse822.c (parse822_field_body): New function.
	(parse822_field_name): New function.

	* pop3d/user.c:  Use mailbox_create() now instead of
	mailbox_create_default.
	* pop3d/apop.c: Likewise.

2001-05-16  Dave Inglis

	* mailbox/mime.c (_mime_parse_mpart): Better check for the
	boundary.

2001-05-14  Sergey Poznyakoff

	* pop3d/user.c: After unsuccessful authorization frees cmd twice,

2001-05-13  Alain Magloire

	* imap4d/fetch.c:  Lots of bug fixing.  To many to enumerate.
	* imap4d/imap4d.h: New prototypes.
	* imap4d/login.c: syslog() the user.
	* imap4d/select.c: Remove the call to mailbox_create_default.
	* imap4d/util.c (util_getitem): New function.
	(util_send_qstring): New function.
	(util_send_literal): New function.

	* mailbox/address.c:  Parse822 can not handle '\n' inside
	the buffer, prune them out before.
	* mailbox/mime.c (_mime_parse_mpart_message): The mime->stream
	was destroy when doing mime_get_part () better get it every time.
	(_mime_body_fd): Likewise.
	* mailbox/smtp.c: Do not close the stream on destroy.

2001-05-11  Alain Magloire

	* imap4d/fetch.c: More cleanup in the bodystructure code,
	arrange response indentation etc ...
	* impa4d/utils.c (util_send_string): New helper function.

2001-05-10  Alain Magloire

	* imap4d/fetch.c: Implemented INTERNALDATE.
	* mailbox/mbx_imap.c (imap_envelope_date): ctime() always
	append a newline, nuke it.
	* mailbox/stream.c (stream_read): If the amount requested is bigger
	then the buffer cache size, bypass the buffering mechanism.

2001-05-09  Alain Magloire

	Take the missing pieces from the pop3d and make the
	imap4d a standalone daemon.

	* imap4d/fetch.c: Remove fetch_body_peek().
	and use fetch_body() instead.
	(fetch_operation): Malloc the entire message... not good.
	* imap4d/bye.c: New file.
	* imap4d/imap4d.c: Put the networking code taken from
	pop3d.c.
	* imap4d/lsub.c: Implemented.
	* imap4d/subscribe.c: Implemented.
	* imap4d/unsubscribe.c: Implemented.

	* pop3d/pop3d.c: pop3d_usage() move from extra.c
	* pop3d/signal.c: pop3d_signal () move from extra.c

	* mailbox/url_imap.c: It was not checking for the port number.
	* mailbox/filter_rfc822.c: Check for the lines if available.

2001-05-07  Alain Magloire

	Now we can have multiple access to the mailbox and the server
	will update the mailbox and send the unsolicited responses.
	This is implemented in imap4d/sync.c.

	* imap4d/copy.c: Move the code into imap4d_copy0() to allow
	the use of UID COPY.
	(imaprd_copy0): New function.
	* imap4d/fetch.c: Define a new structure command for FETCH.
	(fetch_getcommand): New function.
	(imap4d_fetch0): New function to allow the use of UID COPY.
	(fetch_envelope0): New function to permit to reuse the function
	in bodystructure.
	(fetch_bodystructure): Implemented.
	(fetch_bodystructure0): The implementation.
	(bodystructure): The helper function for fetch_bodystructure.
	* imap4d/imap4d.c (imap4d_mainloop): call imap4d_sync() in the
	mainloop.  Now use FILE *ifile.
	* imap4d/imap4d.h: Update prototypes.  Define ERR_NO_MEM and
	ERR_NO_OFILE.
	* imap4d/select.c (imap4d_select0): Call imap4d_sync() to update.
	* imap4d/store.c (ima4d_store): Cal imap4d_sync_flags() to
	update the flags in the uid_table.
	* imap4d/uid.c: Implemented.
	* imap4d/util.c (imap4d_readline):  Use fgets() and deal
	with literals send from the client.
	* imap4d/sync.c: New file.

	* include/mailutils/header.c: Added some new headers.
	* mailbox/attribute.c (attribute_copy): Do a shallow copy.
	* mailbox/file_stream.c: Check if FILE * is null in all functions.
	* mailbox/mailbox.c (mailbox_is_updated): Should not return ENOSYS
	but rather 1.

2001-05-07  Sam Roberts

	* mailbox/parse822.c: Now allow a unix mailbox in an address.
	* include/mailutils/parse822.h: Declare the function to parse them.
	* doc/address.texi: Document the fact.
	* doc/Makefile.am: Automatically build the example code from addr.c.
	* examples/addr.c: And update the parser test.
	* examples/Addrs.good: Update the parser test.

2001-05-03  Sam Roberts

	* mail/mail.c: Typo

2001-05-03  Alain Magloire

	* argp/argp-help.c (hol_entry_help): Some compiler like Watcomm
	can not initialize a local structure struct ..  = { .. }.  Do it
	explicitly field by field.
	* argp/arpg-parse.c: Watcomm choke on N_() macro.
	(parser_init): Watcomm does not like operation on a void * pointer.

	* imap4d/login.c: Cast the return of crypt(), since some platforms
	do not provide a prototype in <unistd.h>

	* pop3d/user.c: Cast the return of crypt(), since in may not be
	declare in <unistd.h>.

	* lib/snprintf.c: Use only __STDC__ to detect <stdarg.h>
	* lib/snprintf.h: Use only __STDC__.

	* mail/mail.h: The global variable should be declare extern.
	* mail/pipe.c: Use 512 buffer instead of BUFSIZ, go easy on the stack.
	* mail/print.c: Use 512 buffer instead of BUFSIZ, go easy on the stack.
	* mail/write.c: Use 512 buffer instead of BUFSIZ, go easy on the stack.

	* mailbox/folder_imap.c: Declare strtock_r ().

2001-05-03  Sergey Poznyakoff

	* pop3d/user.c: Misplace parentheses around the mailbox_xx() calls.
	Do not free (buf) since it is now static storage. Unfortunately most
	of the pam modules do openlog() on their own, thus after
	authentication all logging output flows to where the last pam module
	has directed it, which is usually `auth' facility.
	Put back closelog()/openlog().
	* pop3d/pop3d.h: ifile is now FILE *.
	pop3d_realine () take FILE * as a prototype.
	* pop3d/pop3d.c (pop3d_mainloop): Refresh lock, pop3d_touchlock().
	Register SIGALRM in the child.
	Do not free (buf) since it is now static storage.
	* pop3d/extra.c (pop3d_readline): Change to use
	fgets () and alarm ().
	With small modification from Alain.
	(pop3d_signal): ofile will be NULL in the *child* process:
	whereas in the parent one, ofile will always be NULL, since it lives
	in the BSS (FILE *ofile;) and gets initialized only in the child
	process. Thus, when the parent receives any signal, SIGTERM for
	example, it does pop3d_abquit(ERR_SIGNAL) and dies doing
	fprintf(ofile, ...)

2001-05-02  Alain Magloire

	Some of the Makefile.am contain gcc specific options
	like -Wall, -pedantic or -ansi remove them.

	* configure.in: Check for stdarg and sysconf.
	* mailbox/mime.c (_mime_set_content_type): Delayed the
	creation of the header-field content-type until the message
	is requested via mime_get_message().
	* pop3d/lock.: new File to implement the locking.
	* pop3d/apop.c: Rearrange the code around the #ifdefs
	to be clearrer.
	Make sure that when we use strncpy() that the buffer is
	null terminated.  Added the locking propose by Sergey to apop.
	* pop3d/capa.c: Announce we support PIPELINING.
	* pop3d/extra.c (pop3d_abquit): Remove ERR_DEAD_SOCK.
	Remove the extra fflush(), the call to exit()  always
	flush the buffers.
	(pop3d_readline):  Implement PIPELINING.
	* pop3d/pop3d.c:  Remove the typedef struct sockaddr SA
	for more clarity since it is not use that often.
	port is not longer a global variable.
	children should have the volatile qualification.

2001-04-29  Alain Magloire

	* pop3d/extra.c (pop3d_readline): Modify the loop to be able
	to support PIPELINING.
	* pop3d/capa.c: Advertise that we support PIPELINING.

2001-04-29  Sergey Poznyakoff

	Return values of all signal handlers are changed to RETSIGTYPE
	and configure.in is modified accordingly. This is more portable.

	* configure.in: New Macro AC_TYPE_SIGNAL.

	* mailbox/locker.c (locker_lock): while trying to read pid value
	from the pidfile passed wrong buffer length to read() call, namely:
	read(fd, buf, sizeof (pid_t)).

2001-04-29  Sergey Poznyakoff

	I have modified locker.c to implement reference count. The
	struct _locker is now:
	struct _locker { int fd; int refcnt; char *fname; int flags; };
	The refcnt member gets incremented each time locker_lock is called and
	decremented each time locker_unlock is called. Actual locking is
	performed only if refcnt == 0 on entry to locker_lock. Similarly,
	unlocking is performed only when refcnt gets decremented to 0 by
	locker_unlock. Also I have added basic support for NFS-secure
	locking.

	* mailbox/locker.c: Reference count implementation.

2001-04-25  Alain Magloire

	* imap4d/store.c: First implementation.
	* mailbox/attribute.c (attribute_unset_flags): New function.

2001-04-23  Sergey Poznyakoff

	* mailbox/mbx_mbox.c (mbx_expunge): It assumes that mbox_get_message()
	will place the pointer to message into mum->message member. But
	mbox_get_message() relies on 1-based message numbers, whereas `mum'
	pointer is obtained using 0-based indexing.

2001-04-23  Alain Magloire

	Sergey Poznyakoff noted: When the user's mailbox has zero size, mmap
	fails on Solaris. On GNU/Linux it return NULL buf subsequent munmap
	fails.

	* mailbox/mapfile_stream.c:  To take care of this, mfs->ptr is set
	to NULL for len == 0;
	*mailbox/mbx_mbox.c (mbox_is_updated): Should I have return 0 (FALSE)
	when size change.

2001-04-23  Sergey Poznyakoff

	Several sources from mailbox subdirectory call fprintf(stderr,...)
	to issue error messages. As the stderr usually gets connected to
	the output socket, the client program receives all these error
	messages and gets confused, since they do not start with
	rfc-compliant +OK, -ERR keywords. So I have added a module
	error.c and changed all these fprintf's to error()'s. Actual
	function that ouputs the messages can be supplied by the
	application using error_set_print() call.

2001-04-23  Alain Magloire

	* pop3d/*.[ch]:  Rename all the pop function pop3d_xx()
	instead of pop3_xx() to be consistent with imap4d/*.

	* mailbox/mbx_pop.c (pop_user): This is sudden death; for many pop
	servers, it is important to let them time to remove locks or move
	the .user.pop files.  This happen when we do BUSY_CHECK().  For
	example, the user does not want to read the entire file, and wants
	start to read a new message, closing the connection and immediately
	contact the server again, and we'll end up having
	"-ERR Mail Lock busy" or something similar. To prevent this race
	condition we sleep 2 seconds.

2001-04-23  Sergey Poznyakoff

	It is often convenient to separate log outputs from POP and SMTP
	servers. --with-log-facility flag which allows to specify to which
	log facility the logging output should be directed.
	System administrators often prefer to have more information about
	unsuccessful authentications. I have added more verbose logging
	to pop3d/user.c. Both failed attempts and possible account probes
	(USER immediately followed by QUIT) are logged.
	Made pop3d to be less verbose about its WELCOME prompt. When the
	symbol TERSE_MODE is defined, pop3d introduces itself just as
	+OK POP3 ready <apop_hash>
	instead of divulging its type and version. This is a bit paranoid,
	but it is better to be on the safe side...

	* configure.in: ARGPINC gets assigned a relative path, due
	to which the compilation fails if the package is configure with
	--srdir=<path> option.
	* configure.in: --with-log-facility new option.
	* acconfig.h: LOG_FACILITY

	* doc/mailutils.texi: Typo.

	* mailbox/mapfile_stream.c: Define MAP_FAILED.

	* pop3d/extra.c (pop3_abquit): new case ERR_MBOX_SYNC.
	(pop3_signal): Syslog the reason.
	* pop3d/pop3d.c (pop_mainloop): Syslog the hostname of
	the user on connect.
	(pop3_daemon): Log to many children.  Lacks call to exit(), so if
	pop3d is run as a daemon, any child after exiting from
	pop3_mainloop  tries to accept() from already closed socket
	and issues spurious error messages.
	(pop3_mainloop):  Check if the mailbox is uptodate if not
	and the size shrink, bail out.  Do not send version number.
	* pop3d/pop3d.h: ERR_MBOX_SYNC define. WELCOME removed.
	* pop3d/signal (pop3_sigchld): Lacks signal() call, due to which
	the signal handler gets cleared after first SIGCHLD and all
	subsequent children, when finished, just hang around like zombies.
	* pop3d/user.c: Log to LOG_FACILITY all the errors.

2001-04-23  Alain Magloire

	Sergey Poznyakoff pointed out that errno changes depending
	if _REENTRANT is set or not.  So for enable thread we take
	the approach of always defining _REENTRANT.
	He also noted that when in standalone the child was not exiting.

	* acconfig.h: Define _REENTRANT.
	* configure.in: Check for sigaction().
	* configuire.in: AC_DEFINE(_REENTRANT).

	* doc/Makefile.am: add rfc2060-errata.
	* doc/rfc2060-errata: New File.

	* imap4d/copy.c: First Implementation.
	* imap4d/status.c: First implementation.

	* mailbox/file_stream.c (_file_open): For CREAT, close
	the fd if we failed.
	* mailbox/folder_imap.c: Remove the _REENTRANT.
	* mailbox/mbx_mbox.c: Remove the _REENTRANT.
	* mailbox/monitor.c: Remove the _REENTRANT.

	* pop3d/pop3d.c (main): maxchildren boosted to 20.
	(pop3_daemon_init): Use sigaction() for SIGCHLD,
	the semantics of signal() is unreliable on some platforms.
	* pop3d/signal.c: Save errno.

2001-04-22  Alain Magloire

	* imap4d/create.c: First implementation.
	* imap4d/delete.c: First implementation.
	* imap4d/list.c: First implementation.
	* imap4d/rename.c: First implementation.
	* imap4d/util.c: New functions.
	(util_tilde_expansion): expand ~.
	(util_unquote): Remove surrounding double quotes.
	(util_getfullpath): Expand the path to absolute.
	* imap4d/fetch.c:  Did not cycle through the items.
	(fetch_send_address): Patch from Sam Roberts, did not
	use the index.

	* mailbox/attachement.c (message_unencapsulate): Little buglet
	strncasemp() passing the wrong size.

2001-04-19  Alain Magloire

	* mailbox/smtp.c(smtp_readline): Because of the buffering mechanism,
	we must maintain the offset.

	* imap4d/list.c: partially implemented the LIST command.
	* imap4d/imap4d.c: homedir new global variable.
	* imap4d/login.c: same ${HOME} in homedir.
	* imap4d/util.c (util_getword): Be aware of the quotes.

	* lib/fnmatch.c: New replacement file.
	* lib/fnmatch.h: New replacement file.
	* configure.in: Check for fnmatch().

2001-04-18  Alain Magloire

	Finally took time to put the code in from Jakob first draft, in
	an email excerpt:
	states is the valid states for a command (eg. LOGIN is only valid in
	non-authenticated state, SELECT is valid in authenticated or
	selected). success is the state to enter when the command completes
	successfully (STATE_NONE means no change) and failure is the state to
	enter when the command fails.

	* imap4d/*.c:  All the commands check there state.
	* imap4d/fetch.c: Cleanup the fetch code, and broke
	the fetch_operation() routine in multiple routines.
	(fetch_message): New function.
	(fetch_header): Likewise
	(fetch_content): Likewise
	(fetch_io): Likewise
	(fetch_header_fields): Likewise
	(fetch_header_fields_not): Likewise
	(fetch_send_address): Likewise

	* mailbox/header.c: Some functions were useful while
	programming the imap server, put them here.
	(header_aget_value): New function.
	(header_aget_field_name): New function.
	(header_aget_field_value): New function.

	* mailbox/memory_stream.c: New file, implemented a
	malloc() buffer that you can access via the stream interface.
	* mailbox/file_stream.c: Remove spurious checks.
	* mailbox/mapfile_stream.c: Remove spurious checks.
	(_mapfile_read): check if there is no newline left.

2001-04-16  Alain Magloire

	To get things to compile on Solaris, change configure to check
	for -lpthread since in libc the thread functions are defined
	but all return ENOSYS, you need to explicitly link with -lphtread.
	the ctype functions is*() arguments should be explicitly cast
	since Solaris use them as indexes.  __REENTRANT as to be define
	if compile with support for threads.  Never realize this but
	setenv() is a BSD/GNU thing, so took a variant from libiberty
	to cope.

	* configure.in: Check for setenv. First check if -lphtread is ok.
	* lib/setenv.c: New functions.
	* lib/Makefile.am: add setenv.c in EXTRA_DIST.
	* imap4d/imap4d.h: Include <alloca.h>
	* mailbox/attachment.c: Include <alloca.h>
	* (_header_get_param): isspace() cast argument.
	* mail/mail.h: check if <paths.h> is available if not
	define _PATH_SENDMAIL=/usr/lib/sendmail.
	* mailbox/folder_imap.c: if pthread available, define _REENTRANT.
	Include <alloca.h>.
	(imap_bodystructure0): isdigit() cast argument.
	* mailbox/mbx_mbox.c: if pthread available, define _REENTRANT.
	Include <alloca.h>.
	* mailbox/parse822.c: isdigit() cast argument unsigned.

2001-04-15  Alain Magloire

	The FILE* stream "stdout" is not an lvalue so it is an error to
	attempt to assign to it.  To be able to redirect at will stdout
	we need to assign it.  In GNU lib C, it was not error since stdout
	stderr, and stdin are variables, but to be portable we can not
	assume this.  The way out is to always use fprintf () and have
	a global variable "ofile" pointing to stdout.

	* mail/*: All the files under mail been change to use fprintf()
	and ofile as the default stdout.
	Copyright updated.

2001-04-15  Alain Magloire

	Create a argp directory, it contains the necessary
	files to build a standalone libargp.a

	* argp: New directory.
	argp-ba.c, argp-eexst.c, argp-fmtstream.c, argp-fmtstream.h
	argp-fs-xinl.c, argp-help.c, argp-namefrob.h, argp-parse.c
	argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, pin.c.

	* mail/mail.c:  Comment out the code that use readline
	specifics WITH_READLINE.
	* mail/mail.h: Likewise.
	* mail/util.c: Likewise.

2001-04-15  Alain Magloire

	* Makefile.am: Add argp in the list of subdirs.
	* configure.am:  Check for argp.h and look for
	argp_parse().
	* lib/strchrnul.c: New function.
	* lib/strndup.c: New function.
	* lib/strnlen.c: New function.
	* lib/vasnprintf.c: New function.
	* lib/getopt.c: Updated.
	* lib/getopt1.c: Updated.
	* lib/getopt.h: Updated.
	* frm/Makefile.am: Remove -DTESTING in CFLAGS.
	* from/Makefile.am: Remove -DTESTING in CFLAGS.
	Add AUTOMAKE_OPTIONS.
	* imapd/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise. Added ARGPLIB macro

2001-04-14  Sam Roberts
	* examples/{Makefile,Addrs,addr.c,Addrs.good}: address test f/w.
	* include/mailutils/address.h,mailbox/{address.c,parse822.c}: now
	  stuff a group name into an _address, and added a function to do
	  a quick check if it is a group.
	* mailbox/parse822.c: fixed bug where ",sam@foo.bar" wasn't valid.

2001-04-14  Alain Magloire

	* mailbox/folder_imap.c: When calling imap_writeline () the
	cookie for the tag should be unsigned %d --> %u.
	(imap_send) : The number of bytes in memmove was wrong.
	* mailbox/mbx_imap.c: Some duplicate debug calls MAILBOX_DEBUG0()
	removed.
	(attribute_string): IMAP does not have a \\Read flag it should be
	the same as \\Seen so attribute_read() == attribute_seen().
	(flag_string): New function.
	(imap_attr_set_flags): Use flag_string(), instead.
	* mailbox/include/imap0.h:  CLEAR_STATE() should also deselect
	the current mailbox.

	* mailbox/mbx_pop.c (pop_write): The number of bytes in the memmove
	was wrong.

	* imap4d/imap4d.h: Add HAVE_SECURITY_PAM_APPL_H.
	* imap4d/login.c: PAM_ERROR wrongly define.
	* imap4d/expunge.c: Initialize variable sp.
	* imap4d/logout.c: Initialize variable sp.
	* imap4d/noop.c: Initialize variable sp.

	* mailbox/attachement.c (message_create_attachment): Use base_name().
	* mailbox/mbx_mbox.c (mbox_tmpfile): Use base_name().
	* configure.in: AC_REP_FUNC(vasprintf strcasecmp strncasecmp).
	* include/mailutils/Makefile.am: Add property.h, parse822.h.
	* lib/vasprintf.c: Taken from libit.
	* lib/basename.c: Taken from libit/fileutils.
	* lib/Makefile.am.c: Always use our basename(base_name).
	(AM_INIT_AUTOMAKE): Change version to 0.0.9

2001-04-13  Sam Roberts

	QNX needed to include <strings.h> for many of the useful string
	functions also to define _QNX_SOURCE so <sys/time.h> doesn't have
	an internal warning.

	* configure.in: Check for libgen.h.
	* imap4d/imap4d.h: Define __QNX_SOURCE.
	* mailbox/mime.c: wasn't including config.h
	* mailbox/attachment.c: QNX needed libgen.h for basename(),
	include <strings.h> if define.
	* mailbox/filter.c: Include <strings.h>.
	* mailbox/mbx_mbox.c: Include <strings.h>.
	* mailbox/folder_imap.c: Include <strings.h>.
	* mailbox/header.c: Include <strings.h>.
	* mailbox/property.c: Include <strings.h>.
	* mailbox/registrar.c: Include <strings.h>.
	* mailbox/url.c: Include <strings.h>.
	* mailbox/url_pop.c: Include <strings.h>.
	* pop3d/user.c: QNX says getspnam(char* n), I cast away the error.

2001-04-13  Sam Roberts

	* mailbox/parse822.c, include/mailutils/parse822.h: now can
	  quote the local-part of and addr-spec, and a string.

2001-04-13  Sam Roberts

	* doc/address.texi: updated docs, now they match the parse822.
	* mailbox/parse822.c: small tweaks to the new parser, the changes
	  made during the tidying over the last month were:
	  - use C comments only.
	  - don't use C++ reserved words.
	  - fix is_digit() to be like the other is functions
	  - Changed return codes to:
	   . no mem (ENOMEM)
	   . function wasn't called correctly, usually a missing
	     argument (EINVAL)
	   . invalid syntax found during parsing (ENOENT)
	   . success == 0
	  - const-corrected the APIs
	  - removed unnecessary (in C) casts.
	  - mailbox_t* removed in favor of address_t.
	  - fix handful of memory leaks detected by Alain.

2001-04-10  Alain Magloire

	* pop3d/retr.c (pop3_retr): Typo.
	* pop3d/top.c (pop3_top): No need to reallocate when sending the
	headers.
	* doc/mailbox.texi: Put the functions in alphabetic orders.

2001-04-10  Alain Magloire

	* mailbox/Makefile.am: filter_trans.c added, trans_stream.c deleted.
	* mailbox/attachment.c (message_create_attachment): use
	filter_create().
	(message_save_attachment): use filter_create().
	* mailbox/body.c (body_set_lines): Wrong comparison for the owner.
	* mailbox/mbx_mbox.c: Do not count the line separator of part
	of the mailbox.

	* mailbox/url.c (url_is_same_scheme): New function.
	(url_is_same_user): New function.
	(url_is_same_path): New function.
	(url_is_same_host): New function.
	(url_is_same_port): New function.
	* mailbox/folder.c : Moved the is_same_*() functions in url.c
	they can be generally useful.
	(is_same_scheme): Removed.
	(is_same_user): Removed.
	(is_same_path): Removed.
	(is_same_host): Removed.
	(is_same_port): Removed.

	* mailbox/folder_imap.c (folder_imap_create): New function,
	CREATE a new mailbox.
	(folder_imap_open): Calls folder_imap_create when the MU_STREAM_CREAT
	flag is set.
	* mailbox/mbx_imap.c: Appending messages implemented, if the message
	comes from the same imap folder, it is COPY otherwise APPEND.
	(is_same_folder): New function.
	(imap_append_message): Implemented.
	(attribute_string): New functions.
	(imap_copy_message): New function.
	* mailbox/include/imap0.h: New enum, IMAP_APPEND, IMAP_APPEND_ACK,
	IMAP_APPEND_CONT, IMAP_APPEND_SEND, IMAP_COPY, IMAP_COPY_ACK,
	IMAP_CREATE, IMAP_CREATE_ACK.

2001-04-06  Alain Magloire

	* mailbox/parse822.c: New parser.
	* include/mailutils/parse822.h: New file.
	* mailbox/address.c (address_create): Remove the old parsing and use
	parse822 as the underlying engine.
	(address_parse): Removed.
	(gettoken): Removed.
	(quotes): Removed.
	(address_get_personal): Remove the code to unquote, parse822 takes
	care if it. Return value when no field is ENOENT.
	(address_get_comments): Return value when no field ENOENT.
	(address_get_local_part): Return value when no field ENOENT.
	(address_get_domain): Return value when no field ENOENT.
	(address_get_email): Return value when no field ENOENT.
	(address_get_route): Return value when no field ENOENT.
	* mailbox/message.c (message_sender): Use parse822 to retrieve
	the email from the From: field.
	(message_set_mailbox): New function.
	* mailbox/misc.c : Removed the old parsing code.
	(gettoken): Removed.
	(parseaddr): Removed.
	* mailbox/include/misc.h : Removed parseaddr() prototypes.
	From Sam Roberts, the new parse822 parser..

2001-04-04  Alain Magloire

	Introduction of the notion of filter_t object takes a stream and
	perform some filtering on it.  All the decoding streams will move
	to this i.e. quoted-printable, base64 etc .. This scheme will also
	permit users to add to the list new filters.  Still work in progress.

	* mailbox/Makefile.am : Add filter.c filter_rfc822.c.
	* mailbox/body.c : When creating a floating body i.e creating
	a temporary file, the stream was not "own" by the body_t.
	(_body_get_fd): Likewise.
	(_body_read):_ Likewise.
	(_body_readline): Likewise.
	(_body_write): Likewise.
	(_body_truncate): Likewise.
	(_body_size): Likewise.
	(_body_flush): Likewise.

	* mailbox/folder_imap.c (imap_literal_string): Check if the
	callback.buffer is NULL.
	(imap_body): Do no set the callback.type if "FIELDS" is part of the
	string.

	* mailbox/header.c: Remove the support for RFC822 it will be part
	of the filter_t object.
	* mailbox/mbx_mbox.c: Likewise.
	* mailbox/mailbox.c (mailbox_size): Rename to mailbox_get_size().

	* mailbox/stream.c (stream_is_seekable): New function.
	(stream_set_property): New function.
	(stream_get_property): New function.

	* mailbox/trans_stream.c: Beautify.

	* include/mailutils/filter.h: new file.

	* doc/mailbox.texi: Updated.
	More changes to come.

2001-03-20  Alain Magloire

	* mailbox/folder_imap.c (imap_readline) :  If the server goes away
	suddenly return an error.
	* mailbox/smtp.c (smtp_readline) :  If the server goes away
	suddenly return an error.
	* mailbox/mbx_pop.c (pop_readline) :  If the server goes away suddenly
	return an error.
	* mailbox/mbx_pop.c (pop_open) : The ticket comes from the folder.

2001-03-17  Vesselin Atanasov

	* configure.in: AC_REQUIRE is not .. required.  Just call
	jm_FUNC_MALLOC and jm_FUNC_REALLOC.

2001-03-17  Alain Magloire

	Clean the property object, mailbox and mailer have property object
	that you can examine.  Still a draft: the value of objects are ints.
	This feature was put in to help the imap4d server, in this protocol
	you can get a substring of the message starting from a certain offset.
	To make the coding of imap4d simpler the complexity was move to the

	* mailbox/smtp.c(smtp_readline): Because of the buffering mechanism,
	we must maintain the offset.

	* imap4d/list.c: partially implemented the LIST command.
	* imap4d/imap4d.c: homedir new global variable.
	* imap4d/login.c: same ${HOME} in homedir.
	* imap4d/util.c (util_getword): Be aware of the quotes.

	* lib/fnmatch.c: New replacement file.
	* lib/fnmatch.h: New replacement file.
	* configure.in: Check for fnmatch().

2001-04-18  Alain Magloire

	Finally took time to put the code in from Jakob first draft, in
	an email excerpt:
	states is the valid states for a command (eg. LOGIN is only valid in
	non-authenticated state, SELECT is valid in authenticated or
	selected). success is the state to enter when the command completes
	successfully (STATE_NONE means no change) and failure is the state to
	enter when the command fails.

	* imap4d/*.c:  All the commands check there state.
	* imap4d/fetch.c: Cleanup the fetch code, and broke
	the fetch_operation() routine in multiple routines.
	(fetch_message): New function.
	(fetch_header): Likewise
	(fetch_content): Likewise
	(fetch_io): Likewise
	(fetch_header_fields): Likewise
	(fetch_header_fields_not): Likewise
	(fetch_send_address): Likewise

	* mailbox/header.c: Some functions were useful while
	programming the imap server, put them here.
	(header_aget_value): New function.
	(header_aget_field_name): New function.
	(header_aget_field_value): New function.

	* mailbox/memory_stream.c: New file, implemented a
	malloc() buffer that you can access via the stream interface.
	* mailbox/file_stream.c: Remove spurious checks.
	* mailbox/mapfile_stream.c: Remove spurious checks.
	(_mapfile_read): check if there is no newline left.

2001-04-16  Alain Magloire

	To get things to compile on Solaris, change configure to check
	for -lpthread since in libc the thread functions are defined
	but all return ENOSYS, you need to explicitly link with -lphtread.
	the ctype functions is*() arguments should be explicitly cast
	since Solaris use them as indexes.  __REENTRANT as to be define
	if compile with support for threads.  Never realize this but
	setenv() is a BSD/GNU thing, so took a variant from libiberty
	to cope.

	* configure.in: Check for setenv. First check if -lphtread is ok.
	* lib/setenv.c: New functions.
	* lib/Makefile.am: add setenv.c in EXTRA_DIST.
	* imap4d/imap4d.h: Include <alloca.h>
	* mailbox/attachment.c: Include <alloca.h>
	* (_header_get_param): isspace() cast argument.
	* mail/mail.h: check if <paths.h> is available if not
	define _PATH_SENDMAIL=/usr/lib/sendmail.
	* mailbox/folder_imap.c: if pthread available, define _REENTRANT.
	Include <alloca.h>.
	(imap_bodystructure0): isdigit() cast argument.
	* mailbox/mbx_mbox.c: if pthread available, define _REENTRANT.
	Include <alloca.h>.
	* mailbox/parse822.c: isdigit() cast argument unsigned.

2001-04-15  Alain Magloire

	The FILE* stream "stdout" is not an lvalue so it is an error to
	attempt to assign to it.  To be able to redirect at will stdout
	we need to assign it.  In GNU lib C, it was not error since stdout
	stderr, and stdin are variables, but to be portable we can not
	assume this.  The way out is to always use fprintf () and have
	a global varialbe "ofile" pointing to stdout.

	* mail/*: All the files under mail been change to use fprintf()
	and ofile as the default stdout.
	Copyright updated.

2001-04-15  Alain Magloire

	Create a argp directory, it contains the necessary
	files to build a standalone libargp.a

	* argp: New directory.
	argp-ba.c, argp-eexst.c, argp-fmtstream.c, argp-fmtstream.h
	argp-fs-xinl.c, argp-help.c, argp-namefrob.h, argp-parse.c
	argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, pin.c.

	* mail/mail.c:  Comment out the code that use readline
	specifics WITH_READLINE.
	* mail/mail.h: Likewise.
	* mail/util.c: Likewise.

2001-04-15  Alain Magloire

	* Makefile.am: Add argp in the list of subdirs.
	* configure.am:  Check for argp.h and look for
	argp_parse().
	* lib/strchrnul.c: New function.
	* lib/strndup.c: New function.
	* lib/strnlen.c: New function.
	* lib/vasnprintf.c: New function.
	* lib/getopt.c: Updated.
	* lib/getopt1.c: Updated.
	* lib/getopt.h: Updated.
	* frm/Makefile.am: Remove -DTESTING in CFLAGS.
	* from/Makefile.am: Remove -DTESTING in CFLAGS.
	Add AUTOMAKE_OPTIONS.
	* imapd/Makefile.am: Likewise.
	* pop3d/Makefile.am: Likewise.
	* mail/Makefile.am: Likewise. Added ARGPLIB macro

2001-04-14  Sam Roberts
	* examples/{Makefile,Addrs,addr.c,Addrs.good}: address test f/w.
	* include/mailutils/address.h,mailbox/{address.c,parse822.c}: now
	  stuff a group name into an _address, and added a function to do
	  a quick check if it is a group.
	* mailbox/parse822.c: fixed bug where ",sam@foo.bar" wasn't valid.

2001-04-14  Alain Magloire

	* mailbox/folder_imap.c: When calling imap_writeline () the
	cookie for the tag should be unsigned %d --> %u.
	(imap_send) : The number of bytes in memmove was wrong.
	* mailbox/mbx_imap.c: Some duplicate debug calls MAILBOX_DEBUG0()
	removed.
	(attribute_string): IMAP does not have a \\Read flag it should be
	the same as \\Seen so attribute_read() == attribute_seen().
	(flag_string): New function.
	(imap_attr_set_flags): Use flag_string(), instead.
	* mailbox/include/imap0.h:  CLEAR_STATE() should also deselect
	the current mailbox.

	* mailbox/mbx_pop.c (pop_write): The number of bytes in the memmove
	was wrong.

	* imap4d/imap4d.h: Add HAVE_SECURITY_PAM_APPL_H.
	* imap4d/login.c: PAM_ERROR wrongly define.
	* imap4d/expunge.c: Initialize variable sp.
	* imap4d/logout.c: Initialize variable sp.
	* imap4d/noop.c: Initialize variable sp.

	* mailbox/attachement.c (message_create_attachment): Use base_name().
	* mailbox/mbx_mbox.c (mbox_tmpfile): Use base_name().
	* configure.in: AC_REP_FUNC(vasprintf strcasecmp strncasecmp).
	* include/mailutils/Makefile.am: Add property.h, parse822.h.
	* lib/vasprintf.c: Taken from libit.
	* lib/basename.c: Taken from libit/fileutils.
	* lib/Makefile.am.c: Always use our basename(base_name).
	(AM_INIT_AUTOMAKE): Change version to 0.0.9

2001-04-13  Sam Roberts

	QNX needed to include <strings.h> for many of the useful string
	functions also to define _QNX_SOURCE so <sys/time.h> doesn't have
	an internal warning.

	* configure.in: Check for libgen.h.
	* imap4d/imap4d.h: Define __QNX_SOURCE.
	* mailbox/mime.c: wasn't including config.h
	* mailbox/attachment.c: QNX needed libgen.h for basename(),
	include <strings.h> if define.
	* mailbox/filter.c: Include <strings.h>.
	* mailbox/mbx_mbox.c: Include <strings.h>.
	* mailbox/folder_imap.c: Include <strings.h>.
	* mailbox/header.c: Include <strings.h>.
	* mailbox/property.c: Include <strings.h>.
	* mailbox/registrar.c: Include <strings.h>.
	* mailbox/url.c: Include <strings.h>.
	* mailbox/url_pop.c: Include <strings.h>.
	* pop3d/user.c: QNX says getspnam(char* n), I cast away the error.

2001-04-13  Sam Roberts

	* mailbox/parse822.c, include/mailutils/parse822.h: now can
	  quote the local-part of and addr-spec, and a string.

2001-04-13  Sam Roberts

	* doc/address.texi: updated docs, now they match the parse822.
	* mailbox/parse822.c: small tweaks to the new parser, the changes
	  made during the tidying over the last month were:
	  - use C comments only.
	  - don't use C++ reserved words.
	  - fix is_digit() to be like the other is functions
	  - Changed return codes to:
	   . no mem (ENOMEM)
	   . function wasn't called correctly, usually a missing
	     argument (EINVAL)
	   . invalid syntax found during parsing (ENOENT)
	   . success == 0
	  - const-corrected the APIs
	  - removed unnecessary (in C) casts.
	  - mailbox_t* removed in favor of address_t.
	  - fix handful of memory leaks detected by Alain.

2001-04-10  Alain Magloire

	* pop3d/retr.c (pop3_retr): Typo.
	* pop3d/top.c (pop3_top): No need to reallocate when sending the
	headers.
	* doc/mailbox.texi: Put the functions in alphabetic orders.

2001-04-10  Alain Magloire

	* mailbox/Makefile.am: filter_trans.c added, trans_stream.c deleted.
	* mailbox/attachment.c (message_create_attachment): use
	filter_create().
	(message_save_attachment): use filter_create().
	* mailbox/body.c (body_set_lines): Wrong comparison for the owner.
	* mailbox/mbx_mbox.c: Do not count the line separator of part
	of the mailbox.

	* mailbox/url.c (url_is_same_scheme): New function.
	(url_is_same_user): New function.
	(url_is_same_path): New function.
	(url_is_same_host): New function.
	(url_is_same_port): New function.
	* mailbox/folder.c : Moved the is_same_*() functions in url.c
	they can be generally useful.
	(is_same_scheme): Removed.
	(is_same_user): Removed.
	(is_same_path): Removed.
	(is_same_host): Removed.
	(is_same_port): Removed.

	* mailbox/folder_imap.c (folder_imap_create): New function,
	CREATE a new mailbox.
	(folder_imap_open): Calls folder_imap_create when the MU_STREAM_CREAT
	flag is set.
	* mailbox/mbx_imap.c: Appending messages implemented, if the message
	comes from the same imap folder, it is COPY otherwise APPEND.
	(is_same_folder): New function.
	(imap_append_message): Implemented.
	(attribute_string): New functions.
	(imap_copy_message): New function.
	* mailbox/include/imap0.h: New enum, IMAP_APPEND, IMAP_APPEND_ACK,
	IMAP_APPEND_CONT, IMAP_APPEND_SEND, IMAP_COPY, IMAP_COPY_ACK,
	IMAP_CREATE, IMAP_CREATE_ACK.

2001-04-06  Alain Magloire

	* mailbox/parse822.c: New parser.
	* include/mailutils/parse822.h: New file.
	* mailbox/address.c (address_create): Remove the old parsing and use
	parse822 as the underlying engine.
	(address_parse): Removed.
	(gettoken): Removed.
	(quotes): Removed.
	(address_get_personal): Remove the code to unquote, parse822 takes
	care if it. Return value when no field is ENOENT.
	(address_get_comments): Return value when no field ENOENT.
	(address_get_local_part): Return value when no field ENOENT.
	(address_get_domain): Return value when no field ENOENT.
	(address_get_email): Return value when no field ENOENT.
	(address_get_route): Return value when no field ENOENT.
	* mailbox/message.c (message_sender): Use parse822 to retrieve
	the email from the From: field.
	(message_set_mailbox): New function.
	* mailbox/misc.c : Removed the old parsing code.
	(gettoken): Removed.
	(parseaddr): Removed.
	* mailbox/include/misc.h : Removed parseaddr() prototypes.
	From Sam Roberts, the new parse822 parser..

2001-04-04  Alain Magloire

	Introduction of the notion of filter_t object takes a stream and
	perform some filtering on it.  All the decoding streams will move
	to this i.e. quoted-printable, base64 etc .. This scheme will also
	permit users to add to the list new filters.  Still work in progress.

	* mailbox/Makefile.am : Add filter.c filter_rfc822.c.
	* mailbox/body.c : When creating a floating body i.e creating
	a temporary file, the stream was not "own" by the body_t.
	(_body_get_fd): Likewise.
	(_body_read):_ Likewise.
	(_body_readline): Likewise.
	(_body_write): Likewise.
	(_body_truncate): Likewise.
	(_body_size): Likewise.
	(_body_flush): Likewise.

	* mailbox/folder_imap.c (imap_literal_string): Check if the
	callback.buffer is NULL.
	(imap_body): Do no set the callback.type if "FIELDS" is part of the
	string.

	* mailbox/header.c: Remove the support for RFC822 it will be part
	of the filter_t object.
	* mailbox/mbx_mbox.c: Likewise.
	* mailbox/mailbox.c (mailbox_size): Rename to mailbox_get_size().

	* mailbox/stream.c (stream_is_seekable): New function.
	(stream_set_property): New function.
	(stream_get_property): New function.

	* mailbox/trans_stream.c: Beautify.

	* include/mailutils/filter.h: new file.

	* doc/mailbox.texi: Updated.
	More changes to come.

2001-03-20  Alain Magloire

	* mailbox/folder_imap.c (imap_readline) :  If the server goes away
	suddenly return an error.
	* mailbox/smtp.c (smtp_readline) :  If the server goes away
	suddenly return an error.
	* mailbox/mbx_pop.c (pop_readline) :  If the server goes away suddenly
	return an error.
	* mailbox/mbx_pop.c (pop_open) : The ticket comes from the folder.

2001-03-17  Vesselin Atanasov

	* configure.in: AC_REQUIRE is not .. required.  Just call
	jm_FUNC_MALLOC and jm_FUNC_REALLOC.

2001-03-17  Alain Magloire

	Clean the property object, mailbox and mailer have property object
	that you can examine.  Still a draft: the value of objects are ints.
	This feature was put in to help the imap4d server, in this protocol
	you can get a substring of the message starting from a certain offset.
	To make the coding of imap4d simpler the complexity was move to the
	library.  It is possible now by setting a property of the mailbox
	to make it output rfc822 stream i.e. "\r\n" terminated stream, the
	offset and the size are also in term of rfc822.

	* mailbox/property.c (property_set_int): Removed.
	* mailbox/property.c (property_set_long): Removed.
	* mailbox/property.c (property_set_double): Removed.
	* mailbox/property.c (property_set_set_value): Removed.
	* mailbox/property.c (property_set_get_value): Removed.
	* mailbox/property.c (property_add_property): New function.
	* mailbox/property.c (hash): Renamed property_hash.
	* include/mailutils/property.h (struct property_list): New structure.

	* mailbox/include/mailbox0.h: new fields properties, properties_count.
	* mailbox/mailbox.c (mailbox_get_property): The function will create
	the propriety and add the default properties.
	(mailbox_destroy): The default properties and property are freed.
	(mailbox_is_updated): Return ENOSYS if the arguments are wrong.
	(mailbox_scan): Return ENOSYS if the arguments are wrong.
	(mailbox_uidvalidity): Return ENOSYS if the arguments are wrong.
	(mailbox_uidnext): Return ENOSYS if the arguments are wrong.

	* mailbox/mbx_mbox.c (mbx_init): Set its default properties.
	(mbx_header_get_fvalue): Return the len, even if buffer is null.
	(mbx_body_read): If property rfc822 is set call
	mbx_body_readstream_rfc822 to the conversion.
	(mbx_body_readstream_rfc822): New function, do the conversion.
	(struct _mbox_message): Remove the stream field.
	added struct rfc822.
	(mbox_get_header_readstream): Removed.
	(mbox_header_size): Do the conversion if rfc822 set.
	(mbox_body_size): Do the conversion if rfc822 set.
	(mbox_get_message): Set the property on the header_t.

	* mailbox/mbx_pop.c (pop_init): Set its default properties.
	(pop_open): Remove MU_STREAM_POP flag obsolete.
	(pop_readline):  Do the conversion if rfc822 is set.

	* mailbox/mbx_imap.c (mbx_imap_init): Set its default properties.
	* mailbox/folder_imap.c (folder_imap_open): Remove MU_STREAM_IMAP,
	no longer pertinent.
	(imap_readline): If property rfc822 is set don't strip '\r'.

	* mailbox/header.c (header_set_property): New functions.
	(header_get_property): New functions.
	(header_destroy): Destroy property object.
	(header_get_value): If property rfc822 is set
	convert all "\n" to "\r\n".
	(header_read): If property rfc822 is et convert to \n to \r\n.
	(header_readline): If property rfc822 is et convert to \n to \r\n.
	(fill_blurb): Clear the function overloading, when the blurb is fill.
	* mailbox/include/header0.h: New field property.
	* include/mailutils/header.h: Added prototypes for
	header_set_property and header_get_property.

	* include/mailutils/stream.h: Remove the identification macros;
	MU_STREAM_IMAP, MU_STREAM_FILE, MU_STREAM_POP, it is part of the
	properties of each object.

	* mailbox/mailer.c (mailer_destroy): Free the properties.
	* mailbox/mailer.c (mailer_get_property): New function, return the
	property of the mailbox.

	* mailbox/smtp.c (_mailer_smtp_init): Set its default properties.
	* mailbox/sendmail.c (_sendmail_init): Set its default properties.

	* mailbox/include/Makefile.am: Add property0.h.

2001-03-09  Sam Roberts

	* include/mailutils/address.h: api for new parser,
	address_create0(), and to get route, local-part, and domain.
	* mailbox/address.c: implementation of 3 new get functions, first
	cut, needs cleanup
	* mailbox/include/address0.h: new members of _address, deleted
	one that looked unused.
	* mailbox/parse822.c: implementation of address_create0(),
	which handles groups, routes, and the hoary old comment phrase
	* addr/addr.c - parses addresses from its command line or
	stdin using create() or create0().
	* mailbox/mbx_imap.c: need strings.h on some systems, like Nto

2001-03-12  Sam Roberts

	* frm/frm.c (main): Changed to only print subject if
	header_get_value(SUBJECT) returned success, otherwise I assume
	it would print the stack.
	(usage): Corrected a tiny typo in usage message.
	(long_options): Added an option -f,--field that prints the named field
	in the mailbox, and nothing else.

2001-03-09  Alain Magloire

	* mailbox/Makefile.am: add property.c in the src list.
	* doc/mailutils.texi: add Sam to the list of acknowledgment.

2001-03-09  Sam Roberts

	* doc/address.texi: documented all the functions in address.h
	* doc/url.texi: corrected location or url.h header

2001-03-08  Sam Roberts

	* README-alpha:  Be clearer on how to configure.
	* doc/address.texi : New File, description of address_t object.
	* doc/mailutils.texi : add include address.texi.

2001-03-03  Alain Magloire

	* imap4d/fetch.c (fetch_operation) : HEADER.FIELDS.NOT implemented.
	fetch_operation() take a new argument.
	* imap4d/util.c (util_upper) : New function string upper.

	* mailbox/heder.c: Added new functionality to help the imap4d
	fetch command.
	(header_get_field_count) : New function returns the number of header
	fields in the header.
	(header_get_field_name): New function returns the field name.
	(header_get_field_value): New function returns the field value.

2001-03-03  Alain Magloire

	* include/mailutils/address.h: s/_cplusplus/__cplusplus/g
	(include/mailutils/auth.h): Likewise.
	(include/mailutils/body.h): Likewise.
	(include/mailutils/debug.h): Likewise.
	(include/mailutils/header.h): Likewise.
	(include/mailutils/iterator.h): Likewise.
	(include/mailutils/list.h): Likewise.
	(include/mailutils/mailer.h): Likewise.
	(include/mailutils/message.h): Likewise.
	(include/mailutils/mime.h): Likewise.
	(include/mailutils/observer.h): Likewise.
	(include/mailutils/property.h): Likewise.
	(include/mailutils/registrar.h): Likewise.
	(mailbox/include/address0.h): Likewise.
	(mailbox/include/auth0.h): Likewise.
	(mailbox/include/body0.h): Likewise.
	(mailbox/include/debug0.h): Likewise.
	(mailbox/include/header0.h): Likewise.
	(mailbox/include/iterator0.h): Likewise.
	(mailbox/include/list0.h): Likewise.
	(mailbox/include/mailer0.h): Likewise.
	(mailbox/include/message0.h): Likewise.
	(mailbox/include/mime0.h): Likewise.
	(mailbox/include/observer0.h): Likewise.
	Pointed by Sam Roberts.

2001-02-28  Alain Magloire

	* mailbox/address.c (address_get_personal): Remove surrounding quotes.
	* mailbox/mbx_mbox.c (mbox_scan): If the mailbox is updated don't
	rescan again.
	(mbox_expunge): Same the uidvalidity in the header field "IMABase:"
	on the first message of the mailbox.

	* imap4d/fetch.c (fetch_envelope): Envelope imap4 command implemented.
	(fetch_send_address): New function.

2001-02-26  Alain Magloire

	* mailbox/mbx_imap.c (imap_submessage_size): New function to
	retrieve message size of attachments.
	* imap4d/fetch.c: More functionality for the FETCH command.
	(fetch_operation): New operation.
	* imap4d/util.c (util_token): little helper function.

2001-02-25  Alain Magloire

	* lib/strtok_r.c: If there are no delimiters left save the old string
	and return NULL.

	* mailbox/folder_imap.c (imap_fetch): Finish imap FETCH command.
	(imap_rfc822): New Function.
	(imap_rfc822_text): New Function.
	(imap_rfc822_size): New Function.
	(imap_rfc822_header): New Function.
	(imap_uid): New Function.
	(imap_body): New Function.
	(imap_bodystructure0): Save the size.

2001-02-22  Alain Magloire

	* mailbox/property.c: New file.
	* include/mailutils/property.h: New file.
	* mailbox/mailbox.c (mailbox_get_property): New function,
	a first draft to let set "property" on a mailbox that can
	change its behaviour.
	* mailbox/include/mailbox0.h: New field in struct _mailbox, property.

	* sieve/lex-sieve.lex: Add LGPL banner.
	* sieve/gram-sieve.y: Add LGPL banner.

2001-02-22  Alain Magloire

	* sieve: New Directory.
	* sieve/lex-sieve.lex: RFC3028 tokenizer.
	* sieve/gram-sieve.y: RFC3028 grammar.

2001-02-20  Alain Magloire

	* mailbox/mailbox.c (mailbox_set_ticket): Those objects are now part
	of the folder if a folder is attached to the mailbox.
	(mailbox_set_authority: Likewise.
	(mailbox_set_stream): Likewise.
	* mailbox/mbx_imap.c (imap_message_read): If offset == 0, reset
	the lines to 0.
	(imap_body_read): Likewise.

2001-02-19  Alain Magloire

	* mailbox/mbx_pop.c (pop_body_read): Move the CHECK_BUSY higher
	it should be the first thing done.  If the state is POP_NO_STATE
	reset the offset and the size to 0 i.e we are starting fresh.
	(pop_header_read): Likewise.
	(pop_message_read): Likewise.
	* mailbox/stream.c (stream_write): Don't call stream_flush().

2001-02-04  Alain Magloire

	* mailbox/message.c (message_get_uid): Add message_get_uid() for
	the UID of the message (IMAP definition) and message_get_uidl() for
	the POP3 definition.
	* mailbox/attachment.c: Indentation fixes.
	* mailbox/file_stream.c: Make sure that the FILE* is close before		opening.
	* mailbox/folder_imap.c: Use strcasecmp() not strcmp().
	* mailbox/mailbox.c: Added mailbox_uidnext() and mailbox_uidvalidity.
	* mailbox/mapfile_stream.c: When munmap() failed we should check
	against MAP_FAILED, not NULL.
	* mailbox/mbx_imap.c: Implement imap_uidnext(), imap_uidvalidity()
	imap_message_uid().
	* mailbox/mbx_mbox.c: Implement mbox_uidnext(), mbox_uidvalidity()
	mbox_message_uid().
	* mailbox/mbx_mboxscan.c: Implement uidvalidity, it is save int the
	header of the first message, "X-IMAPbase: 127673838 12", a la c-client.
	Save UID, it is save in "X-UID".
	* mailbox/mbx_pop.c: Implement pop_messages_recent(),
	pop_message_unseen() and pop_uid().
	* mailbox/trans_stream.c: Indentation fixes.

	* include/mailutils/message.h: New prototypes message_get_uid(),
	message_set_get_uid().
	* include/mailutils/mailbox.h: New prototypes mailbox_uidnext(),
	mailbox_uidvalidity().

	* lib/snprintf.c lib/snprintf.h: Put it under the LGPL term.

	* mailbox/imap4d/fetch.c: First draft implementation, very yucky.
	* mailbox/imap4d/select.c: First draft implementation.
	* mailbox/imap4d/util.c: Add util_msgset() and util_send().
	Reuse of util_getcommand() for subcommands.

	* mailbox/pop3d/uidl.c: API change the call is message_get_uidl()
	to have UIDL POP3.


2001-02-03  Alain Magloire

	* mailbox/mailbox.c mailbox/mbx_mbox.c mailbox/mbx_imap.c:
	Implement mailbox_messages_recent() and mailbox_message_unseen(), this
	time as define by the IMAP rfc.

2001-02-02  Alain Magloire

	* mailbox/header.c: ENOENT was not return if the header was
	not found.
	* mailbox/mbx_mbox.c: When expunging check to see if the registar
	the path_record too.

2001-02-02  Alain Magloire

	* pop3d/extra.c (pop3_readline): Since the length of the string
	is known, we can use memcpy() and friends for string manipulations.
	memXXX() functions are builtin in GNU C (gcc) and are much faster
	then the strXXX() counterparts. Small change in the loop to take
	advantage of this.

	* pop3d/quit.c: The rfc1939 insist that after a QUIT, we must
	release any resources and close the connection:
	"Whether the removal was successful or not, the server
        then releases any exclusive-access lock on the maildrop
        and closes the TCP connection."  This was not done if error
	occurred while expunging, now we will close the connection and
	notify the client of the error(ERR_FILE).

2001-02-01  Alain Magloire

	"Premature Optimization Is The Root Of All Evil", Knuth.

	* mailbox/attachment.c: Typo should be "Content-Disposition"

	* mailbox/mbx_mbox.c mailbox/mbx_mboxscan.c mailbox/header.c:
	Attempt to optimize the header, header_get_fvalue() is created,
	The mailbox save/cache the most common headers, when doing a
	header_get_value(), header_get_fvalue() is call first hoping
	that the requested header was cache, if it fails we fall back
	to the usual parsing.  The common elected headers are : From,
	To, Cc, Subject, Date, Content-Type, X-UIDL, X-UID.

	* mailbox/mailbox.c mailbox/mbx_mbox.c mailbox/mbx_imap.c:
	I've confuse the semantic of "unseen" and "recent", "unseen"
	means new mail, not recent.  Renamed mailbox_recent_count()
	to mailbox_unseen_count().
	* include/mailutils/mailbox.h: updated for mailbox_unseen_count()


2001-01-25  Alain Magloire

	* frm/frm.c: Forget to add --summary option and fix return status.
	When being very quiet just freopen(/dev/null, w, stdout).

2001-01-25  Alain Magloire

	* pop3d/capa.c: Add UIDL in the capability list.
	and update Copyright.
	* pop3d/pop3d.c: Remove mbox_record register, only need path_record.
	* pop3d/retr.c: When retrieve a message should be mark as read.
	since we do not strip out the header "Status:".
	* pop3d/top.c: Adjust stream_readline().

2001-01-25  Alain Magloire

	While working on the new version of the API mailbox, ChangeLog was
	discontinued, since the API could literally change overnight a
	maintenance of the entries were of a particular burden.
	The API of the library, and some utilities like pop3d are
	stable enough to restart normal entries.

	* mailbox/*: New Api to access mailbox.
	* include/mailutils: Public prototypes of the API.
	* frm/frm.c frm/Makefile.am: A clone of elm frm utility.
	* from/from.c from/Makefile.am: A utility to scan mailboxes.
	* pop3d/* : GNU pop3d server.

2000-05-19  Sean 'Shaleh' Perry <shaleh@debian.org>

	* libmailbox/mh.c: fleshed out mh_open() some more

2000-05-18  Sean 'Shaleh' Perry <shaleh@debian.org>

	* libmailbox/mh.c: fleshed out mh_open() some more

2000-05-15  Sean 'Shaleh' Perry <shaleh@debian.org>

	* libmailbox/*: ran some files thru emacs indent, I think I introduced
	some oddness with vi
	* libmailbox/mh.[ch]: new files, based on maildir
	the mh work is very empty -- just mh_open right now

2000-04-19  Jeff Bailey  <jbailey@nisa.net>

	* configure.in: Test for limits.h and inttypes.h, add malloc
	and realloc checks.
	* m4/: New directory
	* m4/Makefile.am: New file to support directory
	* m4/malloc.m4: File to support lib/ directory
	* m4/realloc.m4: File to support lib/ directory
	* lib/Makefile.am: Distribute xalloc.h
	* lib/xalloc.h: New file to support xmalloc.c
	* lib/xmalloc.c: New version from sh-utils-2.0g
	* autogen.sh: Look in m4 for extra macros
	* doc/Makefile.am: Rearrange to quiet automake

2000-03-28  Jakob 'sparky' Kaivo  <jkaivo@elijah.nodomainname.net>

	* pop3d/pop3d.c (main): handle SIGPIPE

2000-01-19  Sean 'Shaleh' Perry

	* mailbox/mbx_mh.c: some more code fleshing, still ugly
	* README README-alpha: updates, corrected README to list mailbox as LGPL

2000-01-19  Sean 'Shaleh' Perry

	* mailbox/mbx_mh.c: new file
	no header, no error checking, no hable englais
	* url/url_mh.[ch]: new files
	url support for MH mailboxes

2000-01-17  Sean 'Shaleh' Perry

	* examples/from.c: remove extraneous copyright notice

1999-12-15  Alain Magloire

	* url/url_mbox.h url/url_pop.h url/url_imap.h url/url_mailto.h
	New files.

1999-12-01  Alain Magloire

	* url/_cpystr.c url/chewurl.c url/url.c url/url_imap.c
	url/url_mailto.c url/url_mbox.c url/url_pop.c : New files,
	first attempt to define the URL API.

	* lib/Makefile.am: added xmalloc.c, xstrdup.c, xstrtol.{c,h}
	* lib/xmalloc.c lib/xstrdup.c lib/xstrtol.c lib/xstrtol.h : New files

1999-11-21  Jeff Bailey

	* doc/rfc*: Add.  Standards followed should be included here.

1999-11-23  Jakob 'sparky' Kaivo

	* TODO: Mention Maildir
	* libmailbox/mailbox.c (mbox_init): new function
	* libmailbox/maildir.h: new file
	* libmailbox/maildir.c: new file
	* libmailbox/mailbox.c (mbox_open): uncommented maildir_open attempt

1999-11-15  Jeff Bailey

	* lib/ansi2knr.c lib/ansi2knr.h: Add

	* configure.in: Add AM_C_PROTOTYPES

	* libmailbox/Makefile.am: Add ansi2knr handling

1999-11-08  Sean 'Shaleh' Perry

	* cleaned up some of the automake autoconf magic for non-Linux

1999-11-07  Sean 'Shaleh' Perry

	* TODO: restructuring, now split into sections
	* libmailbox/mailbox.c libmailbox/mailbox.h: added two new functions
	to the api and began implementing them in unixmbox
		is_updated() => has this mailbox been updated externally?
		scan() => build info on mailbox, removing old data as needed
		currently not implemented

1999-11-06  Sean 'Shaleh' Perry

	* libmailbox/mailbox.c: more work on expunge
	* libmailbox/mailbox.c: added a tester routine
	* Makefile.am: added -g

1999-11-06  Sean 'Shaleh' Perry

	* libmailbox/unixmbox.c: work on expunge
	use read/write along with lseek still blows up -- getting there
	* mail/mail.c: check return value of mbox_open()

1999-10-23  Alain Magloire

	* ChangeLog: Cleanup according to GNU std, and remove
	of email addresses. The emails should be AUTHORS or THANKS
	so if they change no need to sed everything.

1999-10-11  Jeff Bailey

	* libmailbox/Makefile.am: Remove no-install option, add -pedantic

1999-10-12  Sean 'Shaleh' Perry

	* made sure that the imap4 was REALLY broken

1999-10-11  Jeff Bailey

	* imap4d/Makefile.am: New file

	* configure.in: Create imap4d/Makefile, and no install option
	for library

	* pop3d/Makefile.am: Add warnings, remove unneeded variable

        * TODO: Update

	* impa4rev1/: Rename to imap4d. (I asked first, really I did...)

	* lib/Makefile.am: Update for new files

	* lib/getline.c: New File

	* lib/getline.h: New file

1999-10-11  Sean 'Shaleh' Perry

	* added my imap code -- PLEASE DO NOT TOUCH

1999-10-10  Jeff Bailey

	* THANKS: New file

	* doc/mailutils.texi: New File
	Provided by Alain Magloire <alainm@rcsm.ece.mcgill.ca> with some
	changes so that Makeinfo reports no errors.

	* doc/Makefile.am: New file

	* configure.in: Deal with libsrc to lib rename

	* pop3d/Makefile.am: Deal with libsrc to lib rename

	* Makefile.am: Deal with libsrc to lib rename.
	Add reference to doc/ subdirectory.

	* libsrc/: Rename to lib/

1999-10-09  Sean 'Shaleh' Perry

	* Made changelog.pl output in approved format -- I miss the time stamp

1999-10-09 Sean 'Shaleh' Perry

	* added examples/gnu-pop3d.pam

1999-10-08  Jeff Bailey

	* doc/: New directory

	* pop3d/Makefile.am: Remove pam detection, now handled by configure
	in the @AUTHLIBS@ spot.

	* configure.in: Detect pam correctly/handle crypt case correctly
	Add option: --disable-pam

	* acconfig.h: New File

1999-10-08 Sean 'Shaleh' Perry

	* added showmail.c to examples
	* libmailbox: some minor code cleanups

1999-10-08 Sean 'Shaleh' Perry

	* fixed the "if empty mailbox, return not implemented"
	NB: seems there was a large assumption being made:
	if unixmbox_open() failed, it was because it was not mbox
	this was wrong for many reasons, so on actual "not mbox",
	return EBADMSG.
	Prolly want to come up with a better error, but this works for now
	* more cleaning in the mailbox code
	a) added stat() call -- we can bomb earlier, plus detect if
	passed object is a directory or file
	b) unixmbox_close() free()'s mbox.  This will hamper the use
	when we add support for more mailboxes later.  Need to find
	a solution.  Perhaps a unixmbox_free() call.
	There was also a small leak there -- mbox->name was being left.
	c) To aid checking in unixbox_open(), added checks around fgets call.
	Now properly detects EOF, errors, etc.  This was a large cause of the
	spurious "not implemented" bug.
	d) all of unixmbox_open()'s function calls should now be checked
	NB: need to do the same for rest of file

1999-10-07 Sean 'Shaleh' Perry

	* removed spurious code in from.c
	* added TODO file

1999-10-07  Jeff Bailey

	* Makefile.am: Compile libsrc/ first.

	* pop3d/Makefile.am: Link properly with crypt and libmailutils.a
	from libsrc/

	* libsrc/Makefile.am: Produce one library for all functions.
	Do not use libtool for this library, it will never be shared.

	* configure.in: Remove AM_MAINTAINER_MODE.  Export crypt detection
	to Makefiles

1999-10-07 Sean 'Shaleh' Perry

	* included my read_a_line() in examples/

1999-10-06 Sean 'Shaleh' Perry

	* Cleanup some compilation issues
	* changed "w+" to "w" in called to pop3_mainloop():ofile = fdopen()
	why was it called with w+?  It is only ever used for writing.
	* catch EINTR in call to accept() (play nice w/ our UNIX friends)
	* set SO_REUSEADDR on daemon's socket

1999-10-05 Sean 'Shaleh' Perry

	* Added changelog.pl so we can have automated entries
	set CVS_EMAIL=me@here.com and CVS_FULLNAME="Joe Blow"
	usage: changelog.pl "added signal.c" or changelog.pl, an editor will
	then appear (uses $VISUAL and $EDITOR)
	the format is controlled simply via the format call at the end
	and the section of perl code directly above it

1999-10-05 Sean 'Shaleh' Perry

	* added pop3d/signal.c -- contains pop3_sigchld() currently

1999-10-05 Sean 'Shaleh' Perry

	* initial fork() rewrite, not even compiled it yet

1999-10-04 Sean 'Shaleh' Perry

	* changed lock(int mode) to lock(mailbox_lock_t mode), this will allow
	the type to be changed later without affecting code compatibility
	* added name to AUTHORS
	* noticed mention of IMAP4 server and went back to coding it (-:

1999-10-03  Jeff Bailey

	* mail/mail.c: Support --help, --version.

	* mail/Makefile.am: Add -Wall to compile line.

	* libmailbox/Makefile.am: Add -Wall to compile line.

	* libmailbox/mailbox.c: Warning cleanup, second parameter of lock
	should be unsigned int, not int.

	* libmailbox/mailbox.h: ""

	* libmailbox/unixmbox.h: ""

	* libmailbox/unixmbox.c: ""

	* AUTHORS: Include my name. =)

	* README: Rewrite for public consumption

	* README-alpha: New file, add mailing list address, CVS information.

	* libmailbox/unixmbox.c: Include config.h if defined

	* libmailbox/mailbox.c: Include config.h if defined

	* mail/mail.c: Include config.h if defined, update copyright.


1999-10-01 Sean 'Shaleh' Perry

	* added an examples directory and the first example, from.c

1999-10-01 Jakob 'sparky' Kaivo

	* libmailbox/*.[ch]: added cleanup patches from Shaleh while he works
	on getting CVS access

1999-09-22  Jakob 'sparky' Kaivo

	* mail/mail.c (main): added 'f' and 'F' to test mbox_header_line

	* pop3d/apop.c (pop3_apop): cleanup, partial rewrite for libmailbox

	* pop3d/retr.c (pop3_retr): fixed a potential segfault

	* pop3d/user.c (pop3_user): cleanup and use mbox_lock

	* libmailbox/mailbox.c (mbox_header_line): new function
	(mbox_body_lines): new function

	* mail/Makefile.am (mail_DEPENDENCIES): added libmailbox.la

	* pop3d/top.c (pop3_top): made it work with libmailbox

	* libmailbox/unixmbox.c (unixmbox_open): added check to see if it's
	actually an mbox file
	(unixmbox_open): Set mbox->_lock to unixmbox_lock
	(unixmbox_lock): new function

	* libmailbox/unixmbox.h: Added prototype for locking

	* libmailbox/mailbox.c: Add dummy initializer for locking

	* libmailbox/mailbox.h: Added interface for locking
	Added interfaces for mbox_header_line and mbox_body_lines

	* pop3d/*.[ch]: changed copyright info to FSF

	* libmailbox/*.[ch]: added copyright/licensing info

1999-09-21  Jakob 'sparky' Kaivo

	* pop3d/Makefile.am (pop3d_LDADD): add $(AUTHLIBS)

	* configure.in: Added libsrc/Makefile to AC_OUTPUT (duh, Jake!)
	fixed the PAM and crypt checks

	* README: actually put something here, noted necessary tools to build
	from CVS

1999-09-14  Jakob 'sparky' Kaivo

	* pop3d/pop3d.c (main): moved setgid() call to after option parsing
	(main): make --version report PACKAGE and VERSION

	* libmailbox/mailbox.c (mbox_open): changed parameter type to const

	* pop3d/Makefile.am (INCLUDES): change relative directories to
	top_srcdir base

	* configure.in: Added checks for PAM and crypt

1999-09-13  Jakob 'sparky' Kaivo

	* pop3d/retr.c (pop3_retr): fixed calls mbox_header => mbox_get_header
	and mbox_body => mbox_get_body

	* pop3d/user.c (pop3_user): removed references to mailbox variable

	* pop3d/stat.c (pop3_stat): fixed mbox->is_deleted => mbox_is_deleted

	* pop3d/pop3d.c (pop3_mainloop): removed reference to lockfile variable

	* pop3d/extra.c (pop3_abquit): change fclose(mbox) to mbox_close(mbox)
	removed calls to free(messages) and pop3_unlock()

	* pop3d/dele.c (pop3_dele): fixed call to mbox_delete()

	* Makefile.am (SUBDIRS): added pop3d and libsrc

	* configure.in: Added checks needed for pop3d/*
	made it work with libtool

	* libsrc/*: imported from gnu-pop3d tree

	* pop3d/*: imported from gnu-pop3d tree

1999-09-11  Jeff Bailey

	* libmailbox/unixmbox.h: Do not prefix config.h defines with _

1999-09-10  Jeff Bailey

	* */*: Accommodate directory rearrange


Local Variables:
mode: change-log
version-control: never
buffer-read-only: t
End:
