1. 13 Apr, 2017 2 commits
    • * libmailutils/base/assoc.c (merge_sort): Fix last argument in call to cmp.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
  2. 11 Apr, 2017 1 commit
    • 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.
      Sergey Poznyakoff authored
  3. 10 Apr, 2017 1 commit
  4. 09 Apr, 2017 2 commits
  5. 08 Apr, 2017 2 commits
    • Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  6. 07 Apr, 2017 1 commit
  7. 06 Apr, 2017 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  8. 05 Apr, 2017 1 commit
  9. 04 Apr, 2017 1 commit
  10. 03 Apr, 2017 2 commits
  11. 24 Mar, 2017 1 commit
    • * 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.
      Sergey Poznyakoff authored
  12. 23 Mar, 2017 2 commits
    • * include/mailutils/debug.h (MU_ASSERT): Prefix local variable name
      with two underscores to diminish the probability of shadowing.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  13. 22 Mar, 2017 1 commit
  14. 21 Mar, 2017 5 commits
  15. 20 Mar, 2017 3 commits
    • 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  16. 19 Mar, 2017 1 commit
  17. 18 Mar, 2017 1 commit
    • 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.
      Sergey Poznyakoff authored
  18. 11 Mar, 2017 2 commits
  19. 06 Mar, 2017 1 commit
  20. 18 Feb, 2017 1 commit
  21. 17 Feb, 2017 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
  22. 05 Feb, 2017 1 commit
  23. 30 Jan, 2017 3 commits
    • 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.
      Sergey Poznyakoff authored
    • * lib/sieve.c (_sieve_action_log): Log source location
      Sergey Poznyakoff authored
    • * maidag/maidag.c (sieve_debug_flags)
      (sieve_enable_log): Remove.
      * maidag/script.c (apply_script): Check for mu_script_sieve_log.
      Sergey Poznyakoff authored
  24. 26 Jan, 2017 1 commit
    • * 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.
      Sergey Poznyakoff authored