1. 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
  2. 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
  3. 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
  4. 21 Dec, 2011 2 commits
    • 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
    • This case requires full recursion.
      
      * imap4d/fetch.c (bodystructure): Call fetch_bodystructure0.
      Sergey Poznyakoff authored
  5. 20 Dec, 2011 2 commits
    • Sergey Poznyakoff authored
    • 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 agrument.
      * 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.
      Sergey Poznyakoff authored
  6. 16 Dec, 2011 7 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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
      Sergey Poznyakoff authored
    • * testsuite/Makefile.am: Add new test cases.
      * testsuite/testsuite.at: Inclide 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.
      Sergey Poznyakoff authored
    • * 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): Buld fldel.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  7. 15 Dec, 2011 1 commit
    • * 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.
      Sergey Poznyakoff authored
  8. 14 Dec, 2011 5 commits
    • Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  9. 13 Dec, 2011 4 commits
    • * 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
      analize untagged response.
      
      * mu/imap.c: Implement list command.
      Sergey Poznyakoff authored
    • * libmu_sieve/sieve.y (mu_sieve_compile): Initialize rc.
      * python/libmu_py/sieve.c (api_sieve_machine_error_text): Fix
      type of length.
      Sergey Poznyakoff authored
    • * 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.
      Wojciech Polak authored
    • * libmailutils/datetime/streamftime.c (mu_c_streamftime): Handle
      %Z separately.
      * libmu_sieve/sieve.y (mu_sieve_compile): Return MU_ERR_PARSE on
      errors.
      Sergey Poznyakoff authored
  10. 12 Dec, 2011 4 commits
    • * libmailutils/filter/base64.c (_base64_encoder): Continue after
      incrementing nbytes.
      * mh/mhn.c: Additional error checking.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
    • * imap4d/util.c (util_getfullpath): Use mu_stpcpy.
      Sergey Poznyakoff authored
  11. 11 Dec, 2011 2 commits
  12. 10 Dec, 2011 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
  13. 09 Dec, 2011 2 commits
  14. 08 Dec, 2011 1 commit