1. 08 Sep, 2010 14 commits
    • This speeds up common reading operations by factor of 4-6.
      
      * include/mailutils/stream.h (mu_stream_readdelim): New proto.
      * include/mailutils/sys/stream.h (_mu_stream) <readdelim>: New method.
      * mailbox/stream.c (_stream_scandelim, _stream_readdelim): New functions.
      (mu_stream_readdelim): New function.
      (mu_stream_readline): Rewrite using mu_stream_readdelim.
      (mu_stream_getdelim): Optimize.
      
      * mailbox/amd.c (amd_body_stream_readdelim): New function.
      (_amd_attach_message): Set the readdelim method.
      * mailbox/header.c: Add a placeholder for readdelim method.
      * mailbox/message.c (_message_stream_readdelim): New function.
      (_message_stream_create): Set the readdelim method.
      * mailbox/streamref.c (_streamref_readdelim): New function.
      (mu_streamref_create_abridged): Set the readdelim method.
      Sergey Poznyakoff authored
    • * mailbox/amd.c (_amd_attach_message): Store body.
      (amd_scan_message): Scan the message only if it has been modified
      after the last scan.
      Fix loop condition.
      Store mhm->mtime on success.
      (amd_message_stream_open): Enforce full buffering.
      (amd_body_stream_read): Fix.
      (amd_body_stream_seek): Don't call mu_stream_seek on mhm->stream.
      Sergey Poznyakoff authored
    • * mailbox/message.c (_check_stream_state): Bugfix.
      (_message_stream_seek): Bugfix.
      (_message_stream_read): Always try to fill out the buffer.
      (_message_stream_create): Set MU_STREAM_SEEK flag bit.
      Sergey Poznyakoff authored
    • * mailbox/filter_iconv.c (mu_filter_iconv_create): Return
      the created stream in *s.
      Sergey Poznyakoff authored
    • * include/mailutils/sys/stream.h (_mu_stream)<offset>: New member.
      * mailbox/stream.c (_stream_fill_buffer): Propagate return value
      from mu_stream_read_unbuffered.
      (_stream_flush_buffer): Use stream->offset. Honor the `all' argument.
      (mu_stream_seek): Rewrite using the `offset' member.
      (mu_stream_read_unbuffered)
      (mu_stream_write_unbuffered): Update offset.
      (mu_stream_readline): Return EINVAL if size is 0.
      Sergey Poznyakoff authored
    • * comsat/action.c
      * imap4d/fetch.c
      * imap4d/search.c
      * mh/burst.c
      * mh/comp.c
      * mh/forw.c
      * mh/mh_ctx.c
      * mh/mh_format.c
      * mh/mh_list.c
      * mh/mhn.c
      * mh/pick.y
      * pop3d/retr.c
      * pop3d/top.c
      * readmsg/msglist.c
      * readmsg/readmsg.c
      Sergey Poznyakoff authored
    • * libmu_scm/mu_body.c (mu_scm_body_free): Unref the stream.
      Return 0.
      (mu-body-read-line, mu-body-write): Use stringrefs.
      * libmu_scm/mu_mailbox.c (mu-mailbox-get-port): Use stringrefs.
      * libmu_scm/mu_message.c (mu-message-copy): Use stringrefs.
      Use mu_stream_copy instead of manually copying stream contents.
      (mu-message-get-port): Use stringrefs.
      * libmu_scm/mu_port.c (mu_port_free): Unref the stream.
      Sergey Poznyakoff authored
    • * examples/header.c: Use streamrefs.
      * examples/mimetest.c: Likewise.
      * examples/mta.c: Likewise.
      * examples/nntpclient.c: Remove an unused variable.
      Sergey Poznyakoff authored
    • * mimeview/mimeview.c (mimeview_fp): Restore the variable.
      Sergey Poznyakoff authored
    • The `mail' and `frm' utilities pass tests.
      
      * include/mailutils/stream.h (mu_stream_err): New proto.
      * libproto/mbox/mbox.c (_msg_stream_setup)
      (_msg_body_setup): Fix stream abridgement.
      (mbox_envelope_date, mbox_envelope_sender): Fix seek position.
      (uid_to_stream): Fix invocation of mu_stream_printf.
      (append_message_to_stream): Likewise.
      (mbox_expunge_unlocked): Rewind tempstr before copying its
      contents back to the mailbox.
      (mbox_expunge0): Open tempstr.
      * libproto/mbox/mbox0.h (_mbox_message)<header_from>: Rename to
      envel_from.
      <header_from_end>: Rename to envel_from_end. All uses changed.
      * libproto/mbox/mboxscan.c: Minor changes.
      
      * mail/decode.c: Use streamrefs.
      * mail/escape.c: Likewise.
      * mail/msgset.y: Likewise.
      * mail/pipe.c: Likewise.
      * mail/print.c: Likewise.
      * mail/top.c: Likewise.
      * mail/write.c: Likewise.
      
      * mail/send.c: Use streamrefs.
      (mail_send0): Reset env->header after assigning it to
      the message.
      
      * mailbox/body.c (_body_seek): Fix a typo which produced
      a recursive call.
      * mailbox/file_stream.c (fd_truncate): New function.
      (_mu_file_stream_create): Initialize str->stream.truncate.
      
      * mailbox/header.c (header_parse): Fix parsing of blurbs lacking
      terminating empty line.
      (header_seek): Fix boundary checks.
      Return new position in presult.
      * mailbox/message.c (string_find_eoh): Rewrite to handle \n\n
      split between two successive invocations.
      (_header_fill): Update the invocation of string_find_eoh.
      
      * mailbox/stream.c (mu_stream_destroy): Call mu_stream_close.
      (mu_stream_get_flags, mu_stream_set_flags)
      (mu_stream_clr_flags): Ignore internal
      bits.
      (mu_stream_err): New function.
      (mu_stream_close): Close the stream only if it is not used by anyone else.
      * mailbox/streamref.c (_streamref_read): Clear transport error if
      ESPIPE is returned.
      (_streamref_size): Take into account sp->end and sp->start.
      (mu_streamref_create_abridged): Set pointer to 0.
      Sergey Poznyakoff authored
    • * mailbox/amd.c (amd_body_stream_seek): Fix boundary checking.
      Return ESPIPE on boundary error.
      * mailbox/header.c (header_seek): Likewise.
      * mailbox/memory_stream.c (_memory_seek): Likewise.
      * mailbox/message.c (_message_stream_seek): Likewise.
      * mailbox/message_stream.c (_message_seek): Likewise.
      * mailbox/stdio_stream.c (stdio_seek): Likewise.
      
      * mailbox/file_stream.c (fd_open): Invert error condition.
      Fix computation of open flags.
      Return immediately if open returns -1.
      (fd_seek): Fix boundary checking.
      Return ESPIPE on boundary error.
      * mailbox/mapfile_stream.c (_mapfile_open): Fix flags calculation.
      (_mapfile_seek): Fix boundary checking.
      Return ESPIPE on boundary error.
      
      * mailbox/streamref.c (_streamref_read): Fix calculation of the
      top size boundary.
      Return 0 bytes if seek returns ESPIPE.
      (_streamref_seek): Return ESPIPE on boundary error.
      
      * mailbox/base64.c (_base64_decoder, _base64_encoder): Do
      not dereference iobuf if cmd is mu_filter_init or mu_filter_done.
      * mailbox/binflt.c (_copy_codec, _bit7_coder): Likewise.
      * mailbox/crlfflt.c (_crlf_encoder, _crlf_decoder): Likewise.
      * mailbox/linelenflt.c (_ll_encoder): Likewise.
      * mailbox/qpflt.c (_qp_decoder, _qp_encoder): Likewise.
      
      * mailbox/mailcap.c (mu_mailcap_parse): Fix loop condition.
      Sergey Poznyakoff authored
    • * examples/sfrom.c (main): Check return from mu_mailbox_messages_count.
      * include/mailutils/sys/stream.h (_MU_STR_WRT): New constant.
      * libproto/mbox/mbox.c (_msg_stream_setup): Fix 3rd argument to
      mu_streamref_create_abridged.
      * libproto/mbox/mboxscan.c (mbox_scan_internal): Don't use mailbox->stream
      directly, because its offsets may get shifted by observers. Use streamref
      instead.
      * mailbox/argcv.c (argcv_get): Do nothing if argc <= 0.
      * mailbox/mapfile_stream.c (_mapfile_seek): Fill the *presult.
      * mailbox/memory_stream.c (_memory_done): Remove leftover free.
      * mailbox/stream.c: Reorder functions.
      (_mu_stream_create): Increase reference count (i.e. set it to 1)
      before returning.
      (mu_stream_seek): Call _stream_flush_buffer instead of
      mu_stream_flush.
      (mu_stream_read_unbuffered): Return 0 on EOF.
      (mu_stream_write_unbuffered): Set _MU_STR_WRT bit.
      (mu_stream_readline, mu_stream_getdelim): Check the actual
      number of bytes read.
      (mu_stream_flush): Call flush method only if _MU_STR_WRT is set.
      Clear it.
      * mailbox/streamref.c (_streamref_seek): Optimization for off==0 and
      whence == MU_SEEK_CUR.
      (_streamref_seek): Return new offset in ppos.
      (mu_streamref_create_abridged): Set MU_STREAM_NO_CLOSE.
      * mailbox/memory_stream.c (_memory_seek) : Return new offset in presult.
      * mailbox/message_stream.c (_message_seek): Likewise.
      * mailbox/stdio_stream.c (stdio_seek): Fix prototype.
      Sergey Poznyakoff authored
    • Does not compile yet.
      
      New files:
      * mailbox/streamref.c
      * include/mailutils/sys/streamref.h
      * include/mailutils/sys/file_stream.h
      * include/mailutils/sys/header_stream.h
      * include/mailutils/sys/mapfile_stream.h
      * include/mailutils/sys/memory_stream.h
      * include/mailutils/sys/message_stream.h
      * include/mailutils/sys/prog_stream.h
      * include/mailutils/sys/socket_stream.h
      * include/mailutils/sys/stdio_stream.h
      * include/mailutils/sys/stream.h
      * include/mailutils/sys/streamtrans.h
      * mailbox/prog_stream.c
      * mailbox/stdio_stream.c
      * mailbox/stream_printf.c
      * mailbox/stream_vprintf.c
      * mailbox/temp_file_stream.c
      * mailbox/streamcpy.c
      * mailbox/binflt.c
      * mailbox/crlfflt.c
      * mailbox/fltstream.c
      * mailbox/qpflt.c
      * mailbox/linelenflt.c
      
      Removed files:
      * mailbox/filter_rfc822.c
      * mailbox/filter_trans.c
      
      Moved files (with edits):
      * libproto/include/filter0.h -> include/mailutils/sys/filter.h
      * libproto/include/header0.h -> include/mailutils/sys/header.h
      * libproto/include/message0.h -> include/mailutils/sys/message.h
      * libproto/include/mime0.h -> include/mailutils/sys/mime.h
      
      Modified files:
      * comsat/action.c
      * config/mailutils-config.c
      * examples/base64.c
      * examples/cpp/msg-send.cc
      * examples/header.c
      * examples/http.c
      * examples/iconv.c
      * examples/mimetest.c
      * examples/msg-send.c
      * examples/mta.c
      * examples/murun.c
      * examples/nntpclient.c
      * examples/pop3client.c
      * imap4d/append.c
      * imap4d/auth_gsasl.c
      * imap4d/fetch.c
      * imap4d/preauth.c
      * imap4d/search.c
      * imap4d/util.c
      * include/mailutils/body.h
      * include/mailutils/folder.h
      * include/mailutils/header.h
      * include/mailutils/mailbox.h
      * include/mailutils/mailer.h
      * include/mailutils/mailutils.h
      * include/mailutils/message.h
      * include/mailutils/stream.h
      * include/mailutils/sys/Makefile.am
      * include/mailutils/sys/filter.h
      * include/mailutils/sys/header.h
      * include/mailutils/sys/message.h
      * include/mailutils/sys/mime.h
      * include/mailutils/sys/nntp.h
      * include/mailutils/sys/pop3.h
      * include/mailutils/sys/stream.h
      * include/mailutils/types.hin
      * lib/mailcap.c
      * lib/mu_dbm.h
      * libmu_argp/muinit.c
      * libmu_auth/ldap.c
      * libmu_auth/tls.c
      * libmu_scm/Makefile.am
      * libmu_scm/mu_body.c
      * libmu_scm/mu_message.c
      * libmu_scm/mu_port.c
      * libmu_sieve/actions.c
      * libmu_sieve/extensions/pipe.c
      * libmu_sieve/extensions/spamd.c
      * libmu_sieve/extensions/vacation.c
      * libproto/mailer/smtp.c
      * libproto/mbox/mboxscan.c
      * libproto/mbox/mbox.c
      * libproto/mbox/mbox0.h
      * libproto/nntp/nntp_article.c
      * libproto/nntp/nntp_carrier.c
      * libproto/nntp/nntp_destroy.c
      * libproto/nntp/nntp_ihave.c
      * libproto/nntp/nntp_post.c
      * libproto/nntp/nntp_readline.c
      * libproto/nntp/nntp_sendline.c
      * libproto/pop/pop3_carrier.c
      * libproto/pop/pop3_destroy.c
      * libproto/pop/pop3_readline.c
      * libproto/pop/pop3_sendline.c
      * libproto/pop/pop3_stat.c
      * maidag/mailtmp.c
      * mail/decode.c
      * mail/escape.c
      * mail/msgset.y
      * mail/pipe.c
      * mail/print.c
      * mail/send.c
      * mail/top.c
      * mail/util.c
      * mail/write.c
      * mailbox/Makefile.am
      * mailbox/amd.c
      * mailbox/attachment.c
      * mailbox/body.c
      * mailbox/cfg_driver.c
      * mailbox/cfg_format.c
      * mailbox/debug.c
      * mailbox/file_stream.c
      * mailbox/folder.c
      * mailbox/hdritr.c
      * mailbox/header.c
      * mailbox/mailbox.c
      * mailbox/mailcap.c
      * mailbox/mailer.c
      * mailbox/mapfile_stream.c
      * mailbox/memory_stream.c
      * mailbox/message.c
      * mailbox/message_stream.c
      * mailbox/mime.c
      * mailbox/mimehdr.c
      * mailbox/mutil.c
      * mailbox/prog_stream.c
      * mailbox/progmailer.c
      * mailbox/rfc2047.c
      * mailbox/socket_stream.c
      * mailbox/stream.c
      * mailbox/stream_vprintf.c
      * mailbox/tcp.c
      * mailbox/vartab.c
      * mailbox/wicket.c
      * mh/burst.c
      * mh/comp.c
      * mh/compcommon.c
      * mh/forw.c
      * mh/mh_ctx.c
      * mh/mh_format.c
      * mh/mh_init.c
      * mh/mh_list.c
      * mh/mh_whatnow.c
      * mh/mhl.c
      * mh/mhn.c
      * mh/pick.y
      * mh/repl.c
      * mimeview/mimeview.c
      * mu-aux/generr.awk
      * pop3d/extra.c
      * pop3d/pop3d.h
      * pop3d/retr.c
      * pop3d/top.c
      * readmsg/msglist.c
      * readmsg/readmsg.c
      * sieve/sieve.c
      Sergey Poznyakoff authored
    • * NEWS, configure.ac: Update.
      Sergey Poznyakoff authored
  2. 07 Sep, 2010 1 commit
    • * imap4d/fetch.c (fetch_function_closure) <section_tag>: New member.
      (_frt_body_text): Output ffc->section_tag after the secion part by
      default.
      (_frt_header, _frt_mime): Remove.
      (_frt_header0): Rewrite as a general-purpose _frt_header function.
      (parse_section_text): Set _frt_header as a driver function and
      set section_tag accordingly, instead of selecting _frt_header/_frt_mime.
      Set section_tag when selecting _frt_body_text.
      (parse_section): Default to _frt_body_text and fall back to _frt_body
      only when an empty section specifier is given.
      * imap4d/testsuite/imap4d/fetch.exp: Update accordingly.
      Sergey Poznyakoff authored
  3. 26 Aug, 2010 1 commit
  4. 12 Aug, 2010 2 commits
    • * examples/mimetest.c (message_display_parts): Remove
      not needed locals.
      Sergey Poznyakoff authored
    • * mailbox/mime.c (mu_mime_get_num_parts): Assume MIME message
      is not scanned if nmtp_parts are 0 and boundary is NULL.
      * mailbox/rfc2047.c (mu_rfc2047_decode): Free the buffer prior
      to returning a non-zero status.
      * mailbox/message.c (mu_message_destroy): Install a kludge
      to work over the slopy ref semantics.
      * mailbox/auth.c (mu_authority_destroy): Free auth_methods
      list.
      * mailbox/locker.c (destroy_dotlock): Free data.dot.nfslock.
      Sergey Poznyakoff authored
  5. 02 Jun, 2010 2 commits
  6. 26 May, 2010 1 commit
    • Delivery of a signal when a previous signal was being handled caused
      mailbox corruption.
      
      * imap4d/imap4d.c (imap4d_child_signal_setup): New function.
      (imap4d_mainloop): Call imap4d_child_signal_setup.
      * imap4d/signal.c (imap4d_child_signal): Reset all signal handlers
      before doing actual job.
      * lib/signal.c (mu_set_signals): Use sigaction.
      Sergey Poznyakoff authored
  7. 20 May, 2010 2 commits
  8. 18 May, 2010 1 commit
  9. 13 May, 2010 2 commits
  10. 11 May, 2010 2 commits
  11. 06 May, 2010 1 commit
  12. 29 Apr, 2010 4 commits
  13. 26 Apr, 2010 1 commit
  14. 18 Apr, 2010 1 commit
  15. 14 Apr, 2010 5 commits
    • * include/mailutils/stream.h (mu_stream_clr_flags): New function.
      * mailbox/stream.c (mu_stream_clr_flags): New function.
      * mailbox/mapfile_stream.c (_mapfile_open): Avoid unnecessary
      boolean operation.
      * mailbox/mutil.c (mu_decode_filter): Use mu_stream_clr_flags
      to clear bits.
      Sergey Poznyakoff authored
    • * mailbox/mimehdr.c (mu_mimehdr_get_disp)
      (mu_mimehdr_aget_disp): Return disposition even if
      no parameters have been given.
      Sergey Poznyakoff authored
    • * mailbox/filter.c (filter_destroy): Destroy the underlying
      stream, unless flag is given.
      (mu_filter_create): Treat last argument as stream flags.
      * mailbox/filter_iconv.c (_icvt_destroy): Free the icvt_stream
      structure.
      
      * examples/mimetest.c (message_display_parts): Pass
      MU_STREAM_NO_CLOSE to the invocation of mu_filter_create.
      * mail/decode.c (display_submessage): Likewise.
      * mailbox/attachment.c (mu_message_save_attachment): Likewise.
      * mh/mh_list.c (eval_body): Likewise.
      * mh/mhn.c (mhn_message_size, show_internal): Likewise.
      (finish_text_msg): Likewise; call mu_stream_destroy
      
      * imap4d/preauth.c (decode64_buf): remove unnecessary
      call to mu_stream_destroy.
      * libmu_auth/ldap.c (chk_md5, chk_smd5)
      (chk_sha, chk_ssha): Likewise.
      
      * mailbox/mutil.c: Fix indentation.
      Sergey Poznyakoff authored
    • * mailbox/rfc2047.c (getword): Change signature; return error
      code.
      (mu_rfc2047_decode): Reflect the above change.
      Sergey Poznyakoff authored
    • * gint: Upgrade.
      * libmu_scm/Makefile.am: Initialize BUILT_SOURCES.
      * libmu_scm/mu_address.c (address_get_fp): Change
      signature to match those of mu_address_aget family.
      (all functions): Use functions from mu_address_aget family.
      Downcase argument names. Refer to them in the docstring
      using @var notation.
      * libmu_scm/mu_body.c: Downcase argument names. Refer to them
      in the docstring using @var notation.
      * libmu_scm/mu_logger.c: Likewise.
      * libmu_scm/mu_mailbox.c: Likewise.
      * libmu_scm/mu_message.c: Likewise.
      * libmu_scm/mu_mime.c: Likewise.
      * libmu_scm/mu_scm.c: Likewise.
      * libmu_scm/mu_util.c: Likewise.
      Sergey Poznyakoff authored