1. 20 Mar, 2012 1 commit
    • * 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
      Sergey Poznyakoff authored
  2. 17 Mar, 2012 4 commits
    • Bugfix. · b84a8723
      * libmu_dbm/berkeley.c (do_bdb_open): Fix typo.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * mh/etc/replcomps: Format Fcc only if coming from myself.
      * mh/etc/replgroupcomps: Likewise.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  3. 14 Mar, 2012 2 commits
  4. 13 Mar, 2012 1 commit
  5. 11 Mar, 2012 1 commit
  6. 09 Mar, 2012 1 commit
    • * 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.
      Sergey Poznyakoff authored
  7. 08 Mar, 2012 1 commit
  8. 26 Feb, 2012 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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, prever the scheme
      from hints.
      Sergey Poznyakoff authored
  9. 21 Feb, 2012 1 commit
    • Bugfixes. · 8c0c0bfc
      * include/mailutils/Makefile.am: Add types to pkginclude_HEADERS.
      * libmailutils/tests/url-comp.at: Add missing dnl.
      Sergey Poznyakoff authored
  10. 20 Feb, 2012 1 commit
  11. 21 Jan, 2012 1 commit
  12. 13 Jan, 2012 1 commit
  13. 11 Jan, 2012 1 commit
    • * 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.
      Sergey Poznyakoff authored
  14. 07 Jan, 2012 1 commit
  15. 05 Jan, 2012 2 commits
  16. 31 Dec, 2011 1 commit
    • * 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
      Sergey Poznyakoff authored
  17. 30 Dec, 2011 3 commits
    • * 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.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  18. 28 Dec, 2011 1 commit
    • * 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.
      Sergey Poznyakoff authored
  19. 27 Dec, 2011 1 commit
  20. 26 Dec, 2011 4 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * libmailutils/mailbox/mailbox.c (_MBOX_CHECK_FLAGS): Fix return code.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  21. 25 Dec, 2011 1 commit
    • * 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.
      Sergey Poznyakoff authored
  22. 23 Dec, 2011 4 commits
    • * 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.
      Sergey Poznyakoff authored
    • Wojciech Polak authored
    • 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  23. 22 Dec, 2011 3 commits
    • * libproto/imap/fetch.c (_fetch_fold): Fix parsing of BODY[].
      (_mu_imap_parse_fetch_response): Fix return value.
      Sergey Poznyakoff authored
    • * mu/imap.c (com_copy): New function.
      (print_list_item): Treat 0 separator as '/' to avoid preliminary
      truncating the output.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  24. 21 Dec, 2011 1 commit
    • Old API relied on passing a pointer to the buffer string and its size,
      which is defective.  The new API, in addtion 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.
      Sergey Poznyakoff authored