1. 06 Oct, 2010 1 commit
  2. 05 Oct, 2010 8 commits
    • * mu/shell.c (input_line_script): Use mu_getline.
      * libmu_argp/compat.c: Remove.
      * libmu_argp/Makefile.am: Remove compat.c
      * po/POTFILES.in: Likewise.
      Sergey Poznyakoff authored
    • * mu/mu.h (mutool_command) <doc>: Rename to docstring.
      <argdoc>: New member.
      * mu/pop.c (com_apop): 2nd arg (password) is optional.  If not
      supplied, ask for it using the mu_getpass function.
      (pop_comtab): Add argdocs.  Use N_ wrappers around translatable
      strings.
      * mu/shell.c (default_comtab: Add argdocs.  Use N_ wrappers around
      translatable strings.
      (print_comtab): Rewrite.
      (shell_history): Use pager.
      Sergey Poznyakoff authored
    • * libproto/pop/pop3_carrier.c (mu_pop3_set_carrier): Switch to
      MU_POP3_CONNECT state.
      * libproto/pop/pop3_disconnect.c (mu_pop3_disconnect): Check if
      the stream is actually open before trying to close it.
      Sergey Poznyakoff authored
    • * libmailutils/strskip.c (mu_str_skip_cset): New function.
      Sergey Poznyakoff authored
    • * configure.ac: Test for tcgetattr and tcsetattr.
      * gnulib.modules (getpass-gnu): Remove.
      * include/mailutils/mutil.h (mu_getpass): New proto.
      * include/mailutils/stream.h (MU_IOCTL_GET_ECHO)
      (MU_IOCTL_SET_ECHO): New ioctls.
      * include/mailutils/sys/file_stream.h (_MU_FILE_STREAM_ECHO_OFF): New flag.
      (_mu_file_stream) <echo_state>: New member.
      * libmailutils/getpass.c: New file.
      * libmailutils/Makefile.am (libmailutils_la_SOURCES): Add getpass.c.
      * libmailutils/file_stream.c (fd_done): Free echo_state.
      (fd_ioctl): Implement MU_IOCTL_GET_ECHO and MU_IOCTL_SET_ECHO.
      * mu/mu.h (mustrin): New extern.
      * mu/pop.c (com_pass): Use mu_getpass.
      * mu/shell.c (mustrin): New variable.
      (readline): Use mu_stream_getline instead of getline.
      (mutool_shell): Create mustrin.
      * pop3d/popauth.c (options): Fix typo.
      (fill_pass): Use mu_getpass.
      Sergey Poznyakoff authored
    • * mu/mu.h (mutool_shell_interactive): New extern.
      (mutool_open_pager): New proto.
      * mu/pop.c (com_list, com_top, com_retr): Use pager.
      * mu/shell.c (mutool_shell_interactive, mustrout): New
      variables.
      (print_comtab, print_help): Print to stream.
      (shell_help): Use pager if necessary.
      (mutool_open_pager): New function.
      (mutool_shell): Create mutool_stream_out and destroy it before
      returning.
      (all functions): Use mu_stream_printf instead of printf.
      Sergey Poznyakoff authored
    • * comsat/comsat.c (hostname): Change type.
      (comsat_init): Use mu_get_host_name.
      * comsat/comsat.h (hostname): Change declaration.
      * libmailutils/locker.c (lock_dotlock): Use mu_get_host_name.
      * libmailutils/mutil.c (mu_get_host_name): Rewrite.
      * pop3d/pop3d.c (pop3d_mainloop): Remove unnecessary call to
      gethostbyname.
      * pop3d/pop3d.h (MAXHOSTNAMELEN): Remove definition.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
  3. 04 Oct, 2010 1 commit
  4. 03 Oct, 2010 7 commits
    • * libmailutils/cfg_parser.y (split_cfg_path): New static.
      (mu_cfg_find_node): Use the same parsing algorithm as
      mu_cfg_create_subtree.  This complements 68b7dc9d.
      (mu_cfg_create_subtree): Use split_cfg_path.  Handle
      escaped '=' as a regular character.
      * mu/mu.c (args_doc): Remove spurious word.
      (main): Disable --version option in action handlers.
      * mu/query.c (query_args_doc): Use `path' instead of `keyword'.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * mu/filter.c (filter_options): Add missing arguments.
      * mu/flt2047.c (flt2047_options): Likewise.
      Sergey Poznyakoff authored
    • * examples/http.c (main): Fix open/wait loop.
      * libmailutils/stream.c (mu_stream_wait): May be used
      on not-open streams.
      * examples/.gitignore: Add more files.
      Sergey Poznyakoff authored
    • The `mu' program is a multi-purpose tool for doing various mail-
      and mailutils-related operations.  It includes a pop3 shell,
      a coder/decoder for all filter formats supported by Mailutils,
      a utility to extract arbitrary values from the MU configuration
      files, a configuration information utility and many more, in the
      short run.  It supercedes examples/pop3client and (partially)
      mailutils-config, both of which will be removed in the future.
      
      * Makefile.am (SUBDIRS): Add mu.
      * configure.ac: Likewise.
      * po/POTFILES.in: Add new files.
      * mu/.gitignore: New file.
      * mu/Makefile.am: New file.
      * mu/filter.c: New file.
      * mu/flt2047.c: New file.
      * mu/info.c: New file.
      * mu/mu.c: New file.
      * mu/mu.h: New file.
      * mu/pop.c: New file.
      * mu/query.c: New file.
      * mu/shell.c: New file.
      Sergey Poznyakoff authored
    • One of stream flags bits indicates whether the stream is
      open or not.  The mu_stream_open function refuses to act if it
      already is.  The rest of functions (including mu_stream_close)
      refuses to act if the stream was not open.  A special function
      (mu_stream_is_open) is provided to check if the stream is in
      open state.
      
      Any stream creation function returns an already open stream.  The
      function mu_stream_open should be called only if the stream was
      previously closed by a call to mu_stream_close.
      
      * include/mailutils/stream.h (mu_stream_is_open): New proto.
      * include/mailutils/sys/stream.h (_MU_STR_OPEN): New flag.
      * libmailutils/stream.c (_mu_stream_create): Permit setting the
      _MU_STR_OPEN flag.
      (_stream_init): New static.
      (mu_stream_open): Return MU_ERR_OPEN if the stream is already open.
      (mu_stream_is_open): New function.
      (mu_stream_seek, mu_stream_read, mu_stream_readdelim)
      (mu_stream_getdelim, mu_stream_write, mu_stream_flush)
      (mu_stream_close, mu_stream_size, mu_stream_wait)
      (mu_stream_truncate): Check if the stream is open. Return MU_ERR_NOT_OPEN
      otherwise.
      
      * libmailutils/errors (MU_ERR_OPEN): Reword the diagnostics.
      
      * libmailutils/dbgstream.c (mu_dbgstream_create): Open the stream.
      * libmailutils/file_stream.c (mu_file_stream_create)
      (mu_fd_stream_create): Open the stream.
      * libmailutils/filter_iconv.c (mu_filter_iconv_create): Open the stream.
      * libmailutils/mapfile_stream.c (mu_mapfile_stream_create): Open the stream.
      * libmailutils/fltstream.c (mu_filter_stream_create): Mark the stream
      as open.
      * libmailutils/iostream.c (mu_iostream_create): Likewise.
      * libmailutils/memory_stream.c: Likewise.
      * libmailutils/message.c (_message_stream_create): Likewise.
      * libmailutils/message_stream.c (mu_message_stream_create): Likewise.
      * libmailutils/prog_stream.c (mu_prog_stream_create): Likewise.
      * libmailutils/socket_stream.c (mu_socket_stream_create): Likewise.
      * libmailutils/temp_file_stream.c (mu_temp_file_stream_create): Likewise.
      
      * libmailutils/amd.c (_amd_attach_message): Mark stream as open.
      * libmailutils/body.c (_body_get_stream): Likewise.
      * libmailutils/memory_stream.c: Likewise.
      * libmailutils/rdcache_stream.c (mu_rdcache_stream_create: Likewise.
      * libmailutils/stdio_stream.c (mu_stdio_stream_create): Likewise.
      * libmailutils/streamref.c (mu_streamref_create_abridged): Likewise.
      * libmailutils/tcp.c (mu_tcp_stream_create_with_source_ip): Likewise.
      * libmailutils/xscript-stream.c (mu_xscript_stream_create): Likewise.
      * libmu_auth/tls.c (_mu_tls_io_stream_create): Likewise.
      (_mu_tls_stream_create): Likewise.
      * libproto/pop/pop3_stream.c (mu_pop3_stream_create): Likewise.
      
      * examples/base64.c: Remove unnecessary mu_stream_open.
      * examples/http.c: Likewise.
      * examples/iconv.c: Likewise.
      * examples/msg-send.c: Likewise.
      * examples/murun.c: Likewise.
      * examples/musocio.c: Likewise.
      * examples/pop3client.c: Likewise.
      * imap4d/append.c: Likewise.
      * imap4d/io.c: Likewise.
      * imap4d/preauth.c: Likewise.
      * lib/mailcap.c: Likewise.
      * libmailutils/attachment.c: Likewise.
      * libmailutils/cfg_driver.c: Likewise.
      * libmailutils/header.c: Likewise.
      * libmailutils/mailcap.c: Likewise.
      * libmailutils/mimehdr.c: Likewise.
      * libmailutils/mutil.c: Likewise.
      * libmailutils/tests/fltst.c: Likewise.
      * libmailutils/tests/mailcap.c: Likewise.
      * libmailutils/vartab.c: Likewise.
      * libmailutils/wicket.c: Likewise.
      * libmu_argp/muinit.c: Likewise.
      * libmu_auth/ldap.c: Likewise.
      * libmu_sieve/extensions/pipe.c: Likewise.
      * libmu_sieve/extensions/spamd.c: Likewise.
      * libmu_sieve/extensions/vacation.c: Likewise.
      * libproto/imap/folder.c: Likewise.
      * libproto/mailer/smtp.c: Likewise.
      * libproto/mailer/smtp_starttls.c: Likewise.
      * libproto/mbox/mbox.c: Likewise.
      * libproto/nntp/nntp_connect.c: Likewise.
      * libproto/pop/mbox.c: Likewise.
      * libproto/pop/pop3_connect.c: Likewise.
      * libproto/pop/pop3_stls.c: Likewise.
      * maidag/mailtmp.c: Likewise.
      * mail/decode.c: Likewise.
      * mail/pipe.c: Likewise.
      * mail/send.c: Likewise.
      * mail/send.c: Likewise.
      * mail/write.c: Likewise.
      * mh/burst.c: Likewise.
      * mh/comp.c: Likewise.
      * mh/compcommon.c: Likewise.
      * mh/forw.c: Likewise.
      * mh/mh_init.c: Likewise.
      * mh/mh_whatnow.c: Likewise.
      * mh/mhl.c: Likewise.
      * mh/mhn.c: Likewise.
      * mh/repl.c: Likewise.
      * mimeview/mimeview.c: Likewise.
      * pop3d/extra.c: Likewise.
      * sieve/sieve.c: Likewise.
      * testsuite/smtpsend.c: Likewise.
      Sergey Poznyakoff authored
    • * include/mailutils/sys/smtp.h (_mu_smtp_get_streams)
      (_mu_smtp_set_streams): New protos.
      * libproto/mailer/smtp_gsasl.c (insert_gsasl_stream): Use _mu_smtp_get_streams
      and _mu_smtp_set_streams to change streams.
      * libproto/mailer/smtp_starttls.c (smtp_get_streams): Rename to
      _mu_smtp_get_streams. All callers changed.
      (smtp_set_streams): Rename to
      _mu_smtp_set_streams. All callers changed.
      Sergey Poznyakoff authored
  5. 25 Sep, 2010 10 commits
    • * guimb/scm/Makefile.am: Add sieve.scm to AM_INSTALLCHECK_STD_OPTIONS_EXEMPT.
      Sergey Poznyakoff authored
    • * include/mailutils/stream.h (MU_IOCTL_SWAP_STREAM): Remove.
      (MU_IOCTL_GET_STREAM, MU_IOCTL_SET_STREAM): New ioctls.
      * include/mailutils/sys/stream.h (_MU_SWAP_FIRST_ONLY)
      (_MU_SWAP_IOCTL_MUST_SUCCEED): Remove.
      (_mu_stream_swap_streams): Remove.
      * libmailutils/stream.c (_mu_stream_swap_streams): Remove.
      
      * libmailutils/filter_iconv.c (_icvt_ioctl): Handle MU_IOCTL_GET_STREAM,
      MU_IOCTL_SET_STREAM instead of MU_IOCTL_SWAP_STREAM.
      * libmailutils/iostream.c (_iostream_ctl): Likewise.
      * libmailutils/xscript-stream.c (_xscript_ctl): Likewise.
      
      * imap4d/auth_gsasl.c (restore_and_return): Unref the contents of str.
      (auth_gsasl): Use MU_IOCTL_GET_STREAM/MU_IOCTL_SET_STREAM to
      change the underlying transport streams.
      * imap4d/io.c (imap4d_init_tls_server): Likewise.
      * libproto/mailer/smtp_gsasl.c (insert_gsasl_stream): Likewise.
      * pop3d/extra.c (pop3d_init_tls_server): Likewise.
      
      * libproto/mailer/smtp_starttls.c (smtp_get_streams)
      (smtp_set_streams): New functions.
      (smtp_swap_streams): Remove.
      (mu_smtp_starttls): Use smtp_get_streams and smtp_set_streams
      instead of smtp_swap_streams.
      * libproto/pop/pop3_stls.c (pop3_get_streams)
      (pop3_set_streams): New functions.
      (pop3_swap_streams): Remove.
      (mu_pop3_stls): Use pop3_get_streams and pop3_set_streams.
      
      * testsuite/smtpsend.c (main): Uncomment mu_stream_unref on
      the carrier.
      Sergey Poznyakoff authored
    • * libmailutils/prog_stream.c (REDIRECT_STDIN_P)
      (REDIRECT_STDOUT_P): Fix macros.
      * libmailutils/stream.c (mu_stream_open): If stream is open
      with MU_STREAM_APPEND, reposition to its end.
      (_stream_write_unbuffered): Do not signal EACCESS for MU_STREAM_APPEND
      streams.
      
      * mail/pipe.c (mail_pipe): Rewrite using streams instead of FILEs.
      * mail/send.c (fill_body): Likewise.
      * mail/write.c (mail_write): Likewise.
      Sergey Poznyakoff authored
    • * imap4d/imap4d.c (imap4d_mainloop): Take two file descriptor as
      arguments.  All uses updated.
      * imap4d/imap4d.h (io_setio): Change signature.
      * imap4d/io.c (io_setio): Take two file descriptor as
      arguments.  All uses updated.
      * pop3d/extra.c (pop3d_setio): Take two file descriptor as
      arguments.  All uses updated.
      * pop3d/pop3d.c (pop3d_mainloop): Likewise.
      * pop3d/pop3d.h (pop3d_setio): Change signature.
      Sergey Poznyakoff authored
    • * examples/musocio.c: Use default stream buffer size.
      * imap4d/io.c: Likewise.
      * libmailutils/dbgstream.c: Likewise.
      * libmailutils/iostream.c: Likewise.
      * libmailutils/xscript-stream.c: Likewise.
      * libmu_auth/gsasl.c: Likewise.
      * libmu_auth/tls.c: Likewise.
      * libproto/pop/mbox.c: Likewise.
      * libproto/pop/pop3_stream.c: Likewise.
      * pop3d/extra.c: Likewise.
      
      * libmailutils/file_stream.c (mu_file_stream_create)
      (mu_fd_stream_create): File streams are fully buffered by default.
      * libmailutils/stdio_stream.c (mu_stdio_stream_create): Stdio streams
      are line buffered by default.
      Sergey Poznyakoff authored
    • * libmailutils/streamcpy.c (mu_stream_copy): Use the number of bytes
      actually read.
      * libmailutils/base64.c (_base64_encoder): Return mu_filter_again
      if not all data has been consumed on mu_filter_lastbuf.
      * libmailutils/message_stream.c (scan_stream): Fix calculation of
      body_end.
      (_body_obj_size): Fix calculation of body size.
      * libproto/mailer/smtp_data.c (_mu_smtp_data_begin): Set full buffering
      on the MU_TRANSPORT_OUTPUT stream.
      Sergey Poznyakoff authored
    • * configure.ac: Use libmuaux.a instead of libmuaux.la.
      * examples/Makefile.am: Likewise.
      * examples/cpp/Makefile.am: Likewise.
      * imap4d/Makefile.am: Likewise.
      * mapi/Makefile.am: Likewise.
      * mh/Makefile.am: Likewise.
      * pop3d/Makefile.am: Likewise.
      
      Remove old files from POTFILES.in (see c42bddb0).
      
      * po/POTFILES.in: Remove comsat/oldcfg.c.
      
      Build testsuites after the programs they are to test.
      
      * frm/Makefile.am (SUBDIRS): Put . before tests.
      * messages/Makefile.am: Likewise.
      * readmsg/Makefile.am: Likewise.
      * sieve/Makefile.am: Likewise.
      
      Remove leftovers from CVS times:
      
      * .cvsignore: Remove.
      * am/.cvsignore: Remove.
      * lib/.cvsignore: Remove.
      * po/.cvsignore
      Sergey Poznyakoff authored
    • It is needed for the remaining DejaGNU tests and will go away later,
      when they are rewritten.
      Sergey Poznyakoff authored
    • * mailbox/url.c (url_parse0): Take three arguments.  Return in the
      third one a boolean indicating whether to expand %XX notations in
      the URL.  Do not decode absolute file names and pipes.
      (mu_url_parse): Use this value to decide.
      * movemail/movemail.c (main): In emacs mode: force UNIX mbox
      format as a default.  Send debugging output to stderr.
      * libmailutils/tests/url.at: Add new tests.
      Sergey Poznyakoff authored
    • * am/debug.m4 (MU_DEBUG_MODE): Rewrite. Use -Wdeclaration-after-statement
      if supported.
      * comsat/oldcfg.c: Remove.
      * comsat/Makefile.am (comsatd_SOURCES): Remove oldcfg.c.
      * comsat/comsat.c: Remove the obsolete --config and --convert-config options.
      * comsat/comsat.h (convert_config): Remove.
      Sergey Poznyakoff authored
  6. 21 Sep, 2010 2 commits
    • * Makefile.am: Shut up cmp's stderr.
      * libmailutils/body.c (_body_get_stream): Set full buffering
      mode on the body stream.
      * libmailutils/errors (MU_ERR_AUTH_NO_CRED): New error code.
      * libproto/mailer/smtp.c (smtp_open): Do not treat
      ENOSYS or MU_ERR_AUTH_NO_CRED (returned by mu_smtp_auth) as errors.
      (smtp_send_message): Do not try to submit the message if it is
      bigger than the maximum imposed by the server.
      * libproto/mailer/smtp_auth.c (mu_smtp_auth): Return MU_ERR_AUTH_NO_CRED
      if neither user name nor password are supplied.
      * mail/send.c (mail_send0): Issue diagnostics if
      sending attempt has failed.
      Sergey Poznyakoff authored
    • * include/mailutils/cpp/pop3.h (capa): Add reread parameter.
      (getline): Add new prototype.
      (send, readline): Remove.
      (response, stat): Change prototype.
      * libmu_cpp/pop3.cc: Likewise.
      * include/mailutils/cpp/stream.h
      (read, write, readline): Change prototype.
      (sequential_readline, sequential_write): Remove.
      * libmu_cpp/stream.cc: Likewise.
      Wojciech Polak authored
  7. 20 Sep, 2010 4 commits
    • * libproto/mailer/smtp.c: Rewrite using new SMTP API.
      * libproto/mailer/smtp_quit.c (mu_smtp_quit): Return immediately
      if already in closed state.
      
      * libmailutils/ticket.c (mu_ticket_get_cred): Return MU_ERR_FAILURE
      if all methods fail.
      * mail/send.c: Port 23321cf7 from patches-2.2
      (msg_to_pipe): Return status code.
      (save_dead_message, send_message): New functions, extracted from
      mail_send0.
      (mail_send0): Call save_dead_message if sending failed.
      Sergey Poznyakoff authored
    • * include/mailutils/smtp.h (mu_smtp_write): Mark as printf-like.
      (mu_smtp_mail_basic, mu_smtp_rcpt_basic): Take variable number
      of arguments.  Mark as printf-like.
      (mu_smtp_data): New prototype.
      * include/mailutils/sys/smtp.h (_MU_SMTP_SAVEBUF): New flag.
      (_mu_smtp) <savebuf>: New member.
      (_mu_smtp_data_begin, _mu_smtp_data_end): New protos.
      * libproto/mailer/smtp_send.c: New file.
      * libproto/mailer/smtp_data.c (_mu_smtp_data_begin)
      (_mu_smtp_data_end, mu_smtp_data): New functions.
      
      * libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add smtp_send.c.
      * libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): Switch to MU_SMTP_EHLO
      only if in MU_SMTP_MAIL state.
      * libproto/mailer/smtp_mail.c (mu_smtp_mail_basic): Take variable number
      of arguments.
      * libproto/mailer/smtp_param.c (mu_smtp_get_param): Add missing typecast.
      * libproto/mailer/smtp_rcpt.c (mu_smtp_rcpt_basic): Take variable number
      of arguments.
      * libproto/mailer/smtp_send.c (_smtp_data_send): Use _mu_smtp_data_begin and
      _mu_smtp_data_end.
      * testsuite/smtpsend.c: Emulate sending from a MU message.
      Sergey Poznyakoff authored
    • * include/mailutils/stream.h (mu_stream_printf): Mark as printf-like.
      * include/mailutils/sys/stream.h (_MU_STR_EVENT_CLOSE): New event.
      (_mu_stream) <event_cb_data>: New member.
      * libmailutils/stream.c (mu_stream_seek): Avoid unnecessary seeks
      in mu_buffer_none mode.  Complements 906499db.
      (mu_stream_close): Mark _MU_STR_EVENT_CLOSE event.
      Sergey Poznyakoff authored
    • * libmailutils/message_stream.c (scan_stream): Change signature.  All
      uses updated.
      Correct the calculation of body_start.
      (mu_message_stream_create): Return the stream.
      Sergey Poznyakoff authored
  8. 19 Sep, 2010 5 commits
  9. 18 Sep, 2010 1 commit
    • * configure.ac (MU_COND_GSASL): New cond.
      * include/mailutils/smtp.h (MU_SMTP_PARAM_DOMAIN)
      (MU_SMTP_PARAM_USERNAME, MU_SMTP_PARAM_PASSWORD)
      (MU_SMTP_PARAM_SERVICE, MU_SMTP_PARAM_REALM)
      (MU_SMTP_PARAM_HOST, MU_SMTP_MAX_PARAM): New constants.
      (mu_smtp_set_domain, mu_smtp_get_param): Remove.
      (mu_smtp_set_param, mu_smtp_get_param): New prototypes.
      (mu_smtp_auth, mu_smtp_add_auth_mech)
      (mu_smtp_add_auth_mech_list, mu_smtp_mech_select): New prototypes.
      * include/mailutils/sys/smtp.h (_mu_smtp) <domain>: Remove.
      (_mu_smtp) <authimpl, param, authmech>: New members.
      (_mu_smtp_gsasl_auth, _mu_smtp_mech_impl): New prototypes.
      
      * libproto/mailer/Makefile.am [MU_COND_GSASL]: Define SMTP_GSASL.
      (libmu_mailer_la_SOURCES): Add new sources.
      * libproto/mailer/smtp_domain.c: Remove.
      * libproto/mailer/smtp_param.c: New file.
      * libproto/mailer/smtp_mech.c: New file.
      * libproto/mailer/smtp_auth.c: New file.
      * libproto/mailer/smtp_gsasl.c: New file.
      * libproto/mailer/smtp_create.c (mu_smtp_destroy): Free new members of
      struct _mu_smtp.
      * libproto/mailer/smtp_ehlo.c (mu_smtp_ehlo): Use param[MU_SMTP_PARAM_DOMAIN]
      instead of domain.
      * testsuite/smtpsend.c: Handle SMTP AUTH.
      
      * libmu_auth/gsasl.c (mu_gsasl_stream_create): Bugfix.
      
      * libmailutils/xscript-stream.c (_xscript_ctl)
      <MU_IOCTL_SWAP_STREAM>: If instream!=outstream, combine them first
      into an iostream.
      Sergey Poznyakoff authored
  10. 17 Sep, 2010 1 commit
    • * include/mailutils/smtp.h (mu_smtp_mail_basic)
      (mu_smtp_rcpt_basic, mu_smtp_send_stream)
      (mu_smtp_rset, mu_smtp_quit): New prototypes.
      * include/mailutils/sys/smtp.h (MU_SMTP_RCPT)
      (MU_SMTP_MORE, MU_SMTP_DOT, MU_SMTP_QUIT, MU_SMTP_CLOS): New states.
      (_mu_smtp_xscript_level): New proto.
      * libmailutils/errors (MU_ERR_REPLY): New error code.
      * libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add new sources.
      * libproto/mailer/smtp_data.c: New file.
      * libproto/mailer/smtp_mail.c: New file.
      * libproto/mailer/smtp_quit.c: New file.
      * libproto/mailer/smtp_rcpt.c: New file.
      * libproto/mailer/smtp_rset.c: New file.
      * libproto/mailer/smtp_ehlo.c: Return MU_ERR_REPLY if the server replied
      with a code other than 2xx.
      * libproto/mailer/smtp_open.c: Likewise.
      * testsuite/smtpsend.c: Implement full sending cycle (excepting
      authorization).
      Sergey Poznyakoff authored