1. 30 Nov, 2010 6 commits
    • Sergey Poznyakoff authored
    • 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
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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
      Sergey Poznyakoff authored
    • * libmailutils/stream/message_stream.c (_message_open): Don't
      clobber len.
      Sergey Poznyakoff authored
    • * libmailutils/string/mkfilename.c (mu_make_file_name_suf): Don't
      add leading / if dir=="".
      Sergey Poznyakoff authored
  2. 29 Nov, 2010 7 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * mh/mhn.c (mhn_edit): Increase line_count after outputting
      a line with a stripped-off initial #.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  3. 26 Nov, 2010 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  4. 25 Nov, 2010 5 commits
    • * mh/mhn.c: Use _sget_ calls where appropriate.  Eliminate
      unnecessary memory allocations.
      Sergey Poznyakoff authored
    • * mh/mhn.c (_mhn_profile_get): All arguments are const.
      (mhn_tempfile_name): New function.
      (mhn_show_command): Use mhn_tempfile_name.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  5. 24 Nov, 2010 8 commits
    • * 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.
      Sergey Poznyakoff authored
    • * mh/tests/movemsg: add to the repository.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * libmailutils/string/wordsplit.c (mu_wordsplit_trimws): Do not
      touch quoted nodes.
      * libmailutils/tests/wordsplit.at: Test the above change.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • 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.
      Sergey Poznyakoff authored
  6. 23 Nov, 2010 4 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  7. 22 Nov, 2010 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  8. 21 Nov, 2010 1 commit
    • * 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.
      Sergey Poznyakoff authored
  9. 20 Nov, 2010 3 commits
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
    • * 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.
      Sergey Poznyakoff authored
  10. 18 Nov, 2010 2 commits
    • * 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.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored