1. 09 May, 2012 5 commits
    • * libproto/mailer/smtp.c (smtp_open): Do not use mu_tls_enable, rely
      on TLS stream functions to do the right thing. This complements
      325c864e.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * configure.ac: Fix quoting in FriBidi test.
      Sergey Poznyakoff authored
  2. 29 Apr, 2012 1 commit
    • This method copies given messages (ificated 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.
      Sergey Poznyakoff authored
  3. 27 Apr, 2012 2 commits
  4. 23 Apr, 2012 1 commit
    • Bugfixes. · f9a486e8
      * 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 adresses. In
      particular, this allows for setting the sender address in mtstailor.
      Sergey Poznyakoff authored
  5. 13 Apr, 2012 1 commit
  6. 25 Mar, 2012 1 commit
    • * 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
      Sergey Poznyakoff authored
  7. 24 Mar, 2012 1 commit
  8. 23 Mar, 2012 2 commits
    • 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.
      Sergey Poznyakoff authored
    • Minor fixes. · bf8b7ff0
      * 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.
      Sergey Poznyakoff authored
  9. 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
  10. 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
  11. 14 Mar, 2012 2 commits
  12. 13 Mar, 2012 1 commit
  13. 11 Mar, 2012 1 commit
    • * 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.
      Sergey Poznyakoff authored
  14. 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
  15. 08 Mar, 2012 1 commit
  16. 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
  17. 21 Feb, 2012 1 commit
  18. 20 Feb, 2012 1 commit
  19. 21 Jan, 2012 1 commit
  20. 13 Jan, 2012 1 commit
  21. 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
  22. 07 Jan, 2012 1 commit
  23. 05 Jan, 2012 2 commits
  24. 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
  25. 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
  26. 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