1. 23 Dec, 2010 5 commits
    • * libmailutils/base/list.c (list_itrctl): Accept mu_itrctl_set_direction
      and mu_itrctl_qry_direction even if mu_iterator_first has not been called
      yet.
      * movemail/movemail.c: Rewrite using iterators.
      
      * libmailutils/mailer/mailer.c (safe_address_create): Bugfix.
      Sergey Poznyakoff authored
    • * libmailutils/mailbox/mbxitr.c (mailbox_iterator)<backwards>: New member.
      (mbx_first): Position to the last message if itr->backwards is set.
      (mbx_next): Decrement index if itr->backwards is set.
      (mbx_finished_p): Take into account iteration direction.
      (mbx_itrctl): new method.
      (mu_mailbox_get_iterator): Set itrctl method.
      Sergey Poznyakoff authored
    • Be more liberal when guessing sender and recipient names. Tolerate
      deviations from RFC822.
      
      * libmailutils/mailer/mailer.c (copy_fragment)
      (recover_email, safe_address_create): New functions.
      (_set_from, _set_to): Use safe_address_create.
      Sergey Poznyakoff authored
    • * libmailutils/base/lcall.c (mu_parse_lc_all): Allow for arg==NULL.
      * mh/Makefile.am: Define mhlibdir.
      * mh/pick.y (match_header): Use sget accessors.
      * mh/repl.c: Accept -noquery silently.
      Sergey Poznyakoff authored
    • * libmailutils/stream/logstream.c (_log_ctl): Handle MU_IOCTL_SYSLOGSTREAM,
      pass it to the transport stream.
      * libmu_sieve/sieve.l (pop_source): Restore input_stream.
      * libmu_sieve/util.c (mu_sieve_error, mu_sieve_debug)
      (mu_sieve_log_action): Set location information on the errstream.
      Sergey Poznyakoff authored
  2. 22 Dec, 2010 7 commits
    • New parser accepts range specifications (mailbox.trace3-prot).
      mu_debug_format_spec outputs specs in the canonical form.
      
      * include/mailutils/debug.h (MU_DEBUG_LEVEL_RANGE): New macro.
      (mu_debug_set_category_level): Change return type to int.
      (mu_debug_get_category_level): New proto.
      * libmailutils/diag/debug.c (mu_debug_set_category_level): Change
      return type to int.
      (mu_debug_get_category_level): New function.
      (mu_debug_level_from_string): New function.
      (parse_spec): Accept range specification.  Negation at the start
      of spec implies 'proto'.
      (mu_debug_format_spec): Rewrite.
      
      * libmailutils/tests/debugspec.c: New file.
      * libmailutils/tests/debugspec.at: New file.
      * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add debugspec.
      (TESTSUITE_AT): add debugspec.at
      * libmailutils/tests/testsuite.at: Include debugspec.at.
      * libmailutils/tests/.gitignore: Add debugspec.
      
      * sieve/sieve.c: Do not advertise 'T' and 'P' arguments to --debug.
      (debug_level): Remove.
      (set_debug_level): Rewrite the handling of legacy debug specifiers 'TP'.
      Sergey Poznyakoff authored
    • * include/mailutils/types.hin (mu_debug_handle_t)
      (mu_debug_level_t): New data types.
      * include/mailutils/debug.h (mu_debug_level_p)
      (mu_debug_category_level)
      (mu_debug_set_category_level): Change argument types to
      mu_debug_handle_t/mu_debug_level_t.
      * libmailutils/diag/debug.c: Likewise.
      
      * libmailutils/server/acl.c (_run_entry): Call mu_debug_log_nl
      instead of mu_debug_log_end with an empty format string.
      
      * include/mailutils/sieve.h
      * libmailutils/filter/base64.c
      * libmailutils/stream/stream.c
      * libmu_sieve/conf.c
      * libmu_sieve/extensions/spamd.c
      * libmu_sieve/sieve.y
      * sieve/sieve.c: Commit the changes c522de11 failed to commit.
      Sergey Poznyakoff authored
    • * libmailutils/filter/iconvflt.c (_icvt_decoder): Do not iconv_close
      if cd is -1.
      * mh/mboxprop.c (mh_mailbox_get_cur): Ignore whitespace following the cur
      value.
      Sergey Poznyakoff authored
    • * libmu_sieve/extensions/pipe.c: Include sys/wait.h
      * testsuite/Makefile.am: Distribute testsuite.inc
      Sergey Poznyakoff authored
    • * include/mailutils/filter.h (MU_FILTER_MAX_AGAIN): Add a comment.
      * libmailutils/stream/fltstream.c (filter_read): Use
      mu_debug on the filter.error level, instead of plain mu_error.
      If the xcoder returns OK and does not consume all input when
      processing the last buffer, assume mu_filter_again.
      Fix loop condition.
      (filter_write_internal): Use
      mu_debug on the filter.error level, instead of plain mu_error.
      Sergey Poznyakoff authored
    • * include/mailutils/sieve.h (mu_sieve_debug_handle): New declaration.
      (mu_sieve_debug_init): New prototype.
      * libmu_sieve/conf.c (mu_sieve_debug_handle): New global.
      (mu_sieve_module_init): Call mu_sieve_debug_init.
      * libmu_sieve/extensions/spamd.c (spamd_connect_tcp)
      (spamd_connect_socket): Fix stream creation.
      (spamd_send_message): Switch to full buffering on the transport
      stream and indicate it is a payload (in case transcript is enabled),
      before copying data.  Restore things to their original state afterwards.
      (spamd_read_line): Rewrite using mu_stream_getline.
      (decode_float): Additional argument endp. Unless NULL, store there the
      position in the input string where the parsing has stopped.
      (parse_response_line): New function.
      (spamd_test): Rewrite using new API.
      * sieve/sieve.c (parser): --dry-run implies --verbose.
      
      * libmailutils/filter/base64.c (_base64_decoder): when not enough data
      are available and cmd is not mu_filter_lastbuf, return mu_filter_lastbuf.
      * libmailutils/stream/stream.c (mu_stream_shutdown): Flush the buffers before
      shutting the transport down.
      
      * libmailutils/tests/fltst.c (main): New option bufsize=
      Sergey Poznyakoff authored
    • * libmailutils/stream/fltstream.c (filter_ctl): MU_IOCTL_TRANSPORT
      returns filter transport stream.
      * libproto/pop/pop3_rdlist.c (mu_pop3_stream_to_list): Make sure
      status is initialized and reflects the actual status.
      * libproto/pop/pop3_stream.c (mu_pop3_filter_create): Do not unref
      transport stream, it is done by the caller.
      Sergey Poznyakoff authored
  3. 21 Dec, 2010 1 commit
    • * am/enable.m4 (MU_ENABLE_SUPPORT): Add the additional-cond argument.
      (MU_ENABLE_BUILD): Likewise.
      * configure.ac: Update 4th args in calls to MU_ENABLE_SUPPORT.
      Do not use MU_ENABLE_BUILD within conditionals, use additional-cond
      instead.
      * libmailutils/stream/mapfile_stream.c: Include sys/stat.h
      Sergey Poznyakoff authored
  4. 20 Dec, 2010 1 commit
    • * include/mailutils/debug.h (mu_debug_format_spec): New function.
      
      * include/mailutils/stream.h (MU_IOCTL_SYSLOGSTREAM)
      (MU_IOCTL_FILTER): New ioctls.
      (MU_IOCTL_LOGSTREAM_GET_SEVERITY_MASK)
      (MU_IOCTL_LOGSTREAM_SET_SEVERITY_MASK)
      (MU_IOCTL_LOGSTREAM_CLONE)
      (MU_IOCTL_SYSLOGSTREAM_SET_LOGGER)
      (MU_IOCTL_SYSLOGSTREAM_GET_LOGGER)
      (MU_IOCTL_FILTER_GET_DISABLED)
      (MU_IOCTL_FILTER_SET_DISABLED): And their opcodes.
      * include/mailutils/sys/filter.h (_MU_FILTER_DISABLED)
      (_MU_FILTER_EOF): New defines.
      (_mu_filter_stream) <eof>: Replace with fltflag (a bitmask).
      * include/mailutils/sys/logstream.h (_mu_log_stream) <sevmask>: New
      member.
      * include/mailutils/sys/syslogstream.h (_mu_syslog_stream) <logger>: New
      member.
      * include/mailutils/util.h (mu_onexit_run): New proto.
      * libmailutils/base/onexit.c (_mu_onexit_run): Extra safety check.
      (mu_onexit_run): New function.
      (mu_debug_level_str): New static.
      (mu_debug_format_spec): New function.
      * libmailutils/stream/fltstream.c (filter_read, filter_write): Bypass the
      xcoder if _MU_FILTER_DISABLED is set.
      Use fltflag instead of the removed eof.
      (filter_ctl): Handle MU_IOCTL_FILTER.
      * libmailutils/stream/logstream.c (_log_write): The sevmask member
      masks out severity prefix output for certain severities.
      (_log_ctl): Handle new opcodes (see above).
      * libmailutils/stream/syslogstream.c (_syslog_stream_write): Use
      <logger>, if supplied, instead of the system syslog(3).
      (_syslog_ctl): Handle MU_IOCTL_SYSLOGSTREAM.
      (mu_syslog_stream_create): Initialize logger to NULL.
      * mu/ldflags.c (lib_descr): Protect entries with the
      corresponding #ifdef ENABLE_whatever.
      Sergey Poznyakoff authored
  5. 19 Dec, 2010 2 commits
    • * include/mailutils/sys/amd.h (_amd_message_lookup_or_insert): New proto.
      * libmailutils/base/amd.c (_amd_message_lookup_or_insert): New function.
      (_amd_message_insert): Rewrite using _amd_message_lookup_or_insert.
      * libproto/maildir/mbox.c (maildir_message_cmp): Stop comparison on
      ':'.
      (maildir_message_lookup): Remove.
      (maildir_scan_dir): Use _amd_message_lookup_or_insert.
      
      * po/POTFILES.in: Update.
      Sergey Poznyakoff authored
    • * include/mailutils/debug.h (mu_debug_log_nl): New proto.
      * libmailutils/diag/debug.c (mu_debug_log_nl): New function.
      * libmailutils/mailer/progmailer.c: Use mu_debug_log_nl.
      * libmailutils/server/acl.c: Likewise.
      Also, use MU_DEBUG_TRACE9 instead of the numeric value.
      
      * libmailutils/filter/iconvflt.c (_iconv_filter): Register encoder
      (same as decoder).
      Sergey Poznyakoff authored
  6. 17 Dec, 2010 1 commit
    • * libmailutils/auth/mu_auth.c: Fix mu_debug calls. Use different levels.
      
      Remove --debug-auth option.  Users should use --debug-level=auth instead.
      
      * libmu_argp/auth.c: Remove.
      * libmu_argp/Makefile.am (libmu_argp_a_SOURCES): Remove auth.c
      * include/mailutils/libargp.h (mu_auth_cmdline): Remove.
      * libmu_argp/cmdline.c (all_cmdline_capa): Remove mu_auth_cmdline.
      Sergey Poznyakoff authored
  7. 13 Dec, 2010 2 commits
    • Callers should use mu_filter_create_args instead.
      
      * examples/iconv.c: Rewrite using mu_filter_create_args.
      * libmailutils/mime/mimehdr.c (mu_mimehdr_decode_param): Use mu_decode_filter.
      
      * imap4d/imap4d.h: Include prog.h
      * include/mailutils/filter.h (mu_filter_iconv_create): Mark as deprecated.
      * include/mailutils/util.h (mu_decode_filter_args): New proto.
      * libmailutils/base/msgid.c (mu_rfc2822_in_reply_to): Silence a
      cast warning.
      * libmailutils/tests/wicket.c (match_string): Likewise.
      * libmailutils/filter/decode.c (mu_decode_filter_args): New function.
      (mu_decode_filter): Rewrite as an alternative entry point to
      mu_decode_filter_args.
      * ibmailutils/filter/filter_iconv.c: Remove.
      * libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Remove
      filter_iconv.c
      * libmu_compat/filter_iconv.c: New file.
      * libmu_compat/Makefile.am (libmu_compat_la_SOURCES): Add filter_iconv.c
      
      * libmailutils/filter/iconvflt.c (_icvt_decoder): Set errcode
      before returning failure.
      
      * libmailutils/stream/fltstream.c (init_iobuf, filter_stream_init): Provide
      a default value for io->errcode.
      Sergey Poznyakoff authored
    • * include/mailutils/filter.h (mu_iconv_filter): New extern.
      * libmailutils/filter/iconvflt.c: New file.
      * libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add iconvflt.c
      * libmailutils/filter/filter.c (mu_filter_get_list): Register
      mu_iconv_filter.
      Sergey Poznyakoff authored
  8. 11 Dec, 2010 5 commits
    • * libmailutils/base/argcvjoin.c (mu_argcv_join): Fix a
      memory allocation error.
      * libmailutils/base/msgid.c (concat): Remove.
      (mu_rfc2822_references,mu_rfc2822_in_reply_to): Use mu_argcv_join
      to concatenate strings.
      Sergey Poznyakoff authored
    • * libmailutils/base/amd.c (amd_envelope_date): Remove the
      trailing newline from the ctime output.
      Sergey Poznyakoff authored
    • * libmailutils/base/spawnvp.c (mu_spawnvp): Use fork and _exit,
      unconditionally.
      * libmailutils/stdstream/basestr.c (mu_stdstream_setup): Borrow
      descriptors 0, 1, 2.
      
      * mail/mail.h (compose_env) <filename, file, ofile>: Remove.
      <compstr>: New member.
      * mail/alias.c: Use MU streams instead of stdlib.
      * mail/alt.c: Likewise.
      * mail/copy.c: Likewise.
      * mail/decode.c: Likewise.
      * mail/echo.c: Likewise.
      * mail/envelope.c: Likewise.
      * mail/eq.c: Likewise.
      * mail/escape.c: Likewise.
      * mail/followup.c: Likewise.
      * mail/from.c: Likewise.
      * mail/inc.c: Likewise.
      * mail/mail.c: Likewise.
      * mail/mailline.c: Likewise.
      * mail/mailvar.c: Likewise.
      * mail/msgset.y: Likewise.
      * mail/print.c: Likewise.
      * mail/quit.c: Likewise.
      * mail/reply.c: Likewise.
      * mail/retain.c: Likewise.
      * mail/send.c: Likewise.
      * mail/setenv.c: Likewise.
      * mail/shell.c: Likewise.
      * mail/size.c: Likewise.
      * mail/source.c: Likewise.
      * mail/summary.c: Likewise.
      * mail/top.c: Likewise.
      * mail/unset.c: Likewise.
      * mail/util.c: Likewise.
      * mail/version.c: Likewise.
      * mail/write.c: Likewise.
      * mail/z.c: Likewise.
      Sergey Poznyakoff authored
    • * libmailutils/stream/stream.c (mu_stream_set_stat): Allow for statbuf==NULL.
      Sergey Poznyakoff authored
    • * include/mailutils/types.hin (mu_onexit_t): New typedef.
      * include/mailutils/util.h (mu_onexit_reset, mu_onexit): New protos.
      * libmailutils/base/onexit.c: New file.
      * libmailutils/base/Makefile.am (libbase_la_SOURCES): Add onexit.c
      
      * libmailutils/stdstream/basestr.c (stdstream_flushall): New function.
      (mu_stdstream_setup): Rewrite the fd checking algorithm.
      Register stdstream_flushall as an onexit function.
      
      * mh/anno.c: Use MU stdstream.
      * mh/mh.h: Include mailutils/stdstream.h.
      * mh/mh_init.c (mh_init): Call mu_stdstream_setup; use MU stdstream.
      * mh/mh_whatnow.c (_whatnow): Use MU stdstream.
      * mh/mhl.c (open_output,list_message): Likewise.
      * mh/mhn.c (mhn_show,store_handler): Likewise.
      * pop3d/popauth.c: Use MU stdstream.
      
      * mimeview/mimetypes.y: Use MU stdstream.
      * mimeview/mimeview.c: Likewise.
      (mimeview_fp): Remove.
      (mimeview_stream): New variable.
      * mimeview/mimeview.h (mimeview_fp): Remove.
      (mimeview_stream): New variable.
      
      * lib/mailcap.c (find_entry): Don't report ENOENT.
      Sergey Poznyakoff authored
  9. 10 Dec, 2010 2 commits
    • This is the default behavior now.  The reverse can be requested by
      a special MU_IOCTL_FD,MU_IOCTL_FD_SET_BORROW ioctl.
      
      * include/mailutils/stream.h (MU_STREAM_FD_AUTOCLOSE): Remove. This
      is the default behavior now.
      (MU_IOCTL_FD): New ioctl.
      (MU_IOCTL_FD_GET_BORROW, MU_IOCTL_FD_SET_BORROW): New opcodes.
      * include/mailutils/sys/file_stream.h (_MU_FILE_STREAM_FD_BORROWED): New flag.
      
      * libmailutils/stream/file_stream.c (fd_close): Close the fd unless
      _MU_FILE_STREAM_FD_BORROWED bit is set.
      (fd_open): Clear the _MU_FILE_STREAM_FD_BORROWED bit.
      (fd_ioctl): Handle MU_IOCTL_FD.
      (mu_file_stream_create): Remove MU_STREAM_FD_AUTOCLOSE.
      
      * ibmailutils/base/version.c (mu_print_options): Set borrow mode on the
      temporary stdout stream.
      * libmailutils/cfg/driver.c (mu_cfg_tree_reduce): Set borrow mode on the
      temporary stderr stream.
      * libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create): Set borrow
      mode on the stderr stream.
      * libmailutils/tests/tempfile.c: set borrow mode on the temporary stream,
      because it may be reopened later (verify mode).
      
      * examples/mta.c: Remove MU_STREAM_FD_AUTOCLOSE.
      * imap4d/io.c: Likewise.
      * libmailutils/stream/prog_stream.c: Likewise.
      * libmailutils/stream/socket_stream.c: Likewise.
      * libmailutils/stream/temp_file_stream.c: Likewise.
      * maidag/lmtp.c: Likewise.
      * pop3d/extra.c: Likewise.
      
      These will disappear when the corresponding utilities are rewritten to
      use MU stdstream:
      
      * mail/escape.c (quote0): set borrow mode on the output stream.
      * mimeview/mimeview.c (display_file): set borrow mode on the input stream.
      
      Likewise, these will disappear when MH uses MU stdstream:
      
      * mh/anno.c (main): Set borrow mode on the input stream.
      * mh/mh_init.c (mh_real_install): Likewise.
      * mh/mh_whatnow.c (_whatnow): Likewise.
      * mh/mhl.c (open_output): Set borrow mode on the output stream.
      * mh/mhn.c (mhn_show,store_handler): Likewise.
      Sergey Poznyakoff authored
    • * examples/mta.c: Use MU_STREAM_FD_AUTOCLOSE.
      * imap4d/io.c: Likewise.
      * libmailutils/stream/file_stream.c: Likewise.
      * libmailutils/stream/prog_stream.c: Likewise.
      * libmailutils/stream/socket_stream.c: Likewise.
      * libmailutils/stream/temp_file_stream.c: Likewise.
      * maidag/lmtp.c: Likewise.
      * pop3d/extra.c: Likewise.
      
      * imap4d/preauth.c: Do not use MU_STREAM_AUTOCLOSE.  Instead unref the
      transport stream after creating the derived one.
      * libmailutils/base/rfc2047.c: Likewise.
      * libmailutils/stream/fltstream.c: Likewise.
      * libmailutils/tests/fltst.c: Likewise.
      * libmu_auth/ldap.c: Likewise.
      * libmu_auth/tls.c: Likewise.
      * libmu_sieve/extensions/vacation.c: Likewise.
      * libproto/pop/pop3_stream.c: Likewise.
      * mail/decode.c: Likewise.
      * mh/mhn.c: Likewise.
      
      * libmailutils/filter/filter_iconv.c: Do not handle MU_STREAM_AUTOCLOSE.
      * libmailutils/stream/rdcache_stream.c: Likewise.
      * libmailutils/stream/streamref.c: Likewise.
      * libmailutils/stream/xscript-stream.c: Likewise.
      
      * include/mailutils/stream.h (MU_STREAM_AUTOCLOSE): Rename to
      MU_STREAM_FD_AUTOCLOSE.
      Sergey Poznyakoff authored
  10. 09 Dec, 2010 1 commit
    • * include/mailutils/filter.h (mu_filter_chain_create_pred)
      (mu_filter_chain_create): New prototypes.
      (_mu_filter_record)<max_line_length>: Remove.
      * libmailutils/filter/fltchain.c: New file.
      * libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add fltchain.c.
      * libmailutils/filter/base64.c: Implement line length limit for encoder.
      (base64_state): New enum.
      (base64_line): New struct.
      (_base64_encoder): xd brings a pointer to struct base64_line. Use it
      to limit the output line length.
      (alloc_state): New function.
      (_base64_filter): Register alloc_state.
      (_base64_filter, _B_filter): Remove max_line_length initialization.
      
      * libmailutils/filter/binflt.c: Remove max_line_length initialization.
      * libmailutils/filter/crlfflt.c: Likewise.
      * libmailutils/filter/dot.c: Likewise.
      * libmailutils/filter/fromflt.c: Likewise.
      * libmailutils/filter/header.c: Likewise.
      * libmailutils/filter/inline-comment.c: Likewise.
      * libmailutils/filter/linecon.c: Likewise.
      * libmailutils/filter/qpflt.c: Likewise.
      
      * libmailutils/filter/linelenflt.c: Redo line filter as a regular filter.
      (mu_linelen_filter): New global.
      
      * libmailutils/filter/filter.c (mu_filter_get_list): Register mu_linelen_filter.
      (filter_create_rd, filter_create_wr): Remove.
      (mu_filter_create_args): Use mu_filter_stream_create directly.
      
      * examples/base64.c: Re-implement the -l option via filter chains.
      
      * libmailutils/tests/fltst.c: Remove the linelen option.
      * libmailutils/tests/base64d.at: Remove the linelen option from fltst
      invocations.
      * mu/filter.c: Remove the --line-length option.  Not needed now, its
      effect is achieved by "FLT + [~]linelen" chain.
      Sergey Poznyakoff authored
  11. 08 Dec, 2010 3 commits
  12. 07 Dec, 2010 4 commits
    • Two interfaces are provided: mu_prog_stream_create offers full control
      over the program execution environment (i.e. running privileges, cwd,
      resource limits) via a set of hints.
      A simpler interface, mu_command_stream_create, runs the command in the
      current environment.
      
      mu_filter_prog_stream_create is removed, because its functionality can
      be achieved by a correspondingly crafted set of hints to
      mu_prog_stream_create.
      
      * include/mailutils/prog.h: New file.
      * include/mailutils/mailutils.h: Include mailutils/prog.h
      * include/mailutils/Makefile.am (pkginclude_HEADERS): Add prog.h
      * include/mailutils/stream.h (mu_prog_stream_create)
      (mu_filter_prog_stream_create): Remove prototypes.
      * include/mailutils/sys/prog_stream.h (_mu_prog_stream): Change structure.
      (_mu_prog_limit_codes, _mu_prog_limit_flags): New externs.
      * include/mailutils/util.h (mu_set_user_privileges)
      (mu_switch_to_privs): New prototypes.
      
      * lib/userprivs.c: Move to libmailutils/base.
      * lib/Makefile.am (libmuaux_a_SOURCES): Remove userprivs.c
      * libmailutils/base/Makefile.am (libbase_la_SOURCES): Add userprivs.c
      * libmailutils/base/userprivs.c (mu_set_user_privileges): New function.
      (mu_switch_to_privs): Rewrite as another entry point to mu_set_user_privileges.
      
      * libmailutils/stream/prog_stream.c (_mu_prog_limit_flags)
      (_mu_prog_limit_codes): New global variables.
      (start_program_filter): Use hints to control execution environment.
      (_prog_stream_create): Save hints.
      (mu_prog_stream_create): Change signature.
      (mu_command_stream_create): New function (corresponds to the prior
      mu_prog_stream_create).
      (mu_filter_prog_stream_create): Remove function.
      * comsat/action.c (action_exec): Use new mu_prog_stream_create calling
      convention.
      * examples/murun.c: Rewrite.
      
      * mh/mhn.c (show_internal): Use new mu_prog_stream_create calling
      convention.
      * mh/tests/mhn.at: Reflect changes to mhn.
      
      * imap4d/preauth.c: Use mu_command_stream_create.
      * libmu_sieve/extensions/pipe.c
      * mail/decode.c
      * mail/pipe.c
      * mail/send.c
      * mh/mhl.c
      * mu/shell.c
      
      * mail/mail.h: Include mailutils/prog.h
      * mh/mh.h
      
      * po/POTFILES.in: Add libmailutils/base/userprivs.c.
      Sergey Poznyakoff authored
    • * libmailutils/stream/file_stream.c (fd_open): Remove file state
      checks: it is the responsibility of the caller.
      Set autoclose on the *stream* flags (bugfix, previously the underlying
      fd was never closed).
      Clear MU_STREAM_SEEK flag if seek fails.
      (_mu_file_stream_create): Remove assignment to stream.error_string
      * include/mailutils/stream.h (MU_STREAM_ALLOW_LINKS): Remove flag.
      * libmailutils/base/amd.c (amd_message_stream_open): Initialize flags
      to 0.
      Sergey Poznyakoff authored
    • * libmailutils/mailbox/mailbox.c (mu_mailbox_open): Fix error
      checking condition.
      * comsat/action.c (act_getline): Remove.
      (open_rc): Return mu_stream_t. Use linecon filter.
      Sergey Poznyakoff authored
    • Line continuation filter removes from its input any sequence of '\\\n'
      (a backslash followed by a newline).  It is useful for reading various
      UNIX configuration files.
      
      * include/mailutils/filter.h (mu_linecon_filter): New extern.
      * libmailutils/filter/linecon.c: New file.
      * libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add linecon.c
      * libmailutils/filter/filter.c (mu_filter_get_list): Register mu_linecon_filter.
      * libmailutils/tests/linecon.at: New test.
      * libmailutils/tests/Makefile.am (TESTSUITE_AT): Add linecon.at
      * libmailutils/tests/testsuite.at: Include linecon.at
      Sergey Poznyakoff authored
  13. 06 Dec, 2010 2 commits
    • The mu_stream_ioctl function gets two argument that identify the ioctl
      in question: "family", which identifies a family of ioctls in question,
      and "opcode", which indicates the requested operation within that family.
      
      * include/mailutils/stream.h: Define ioctl families and opcodes.
      (mu_stream_ioctl): Change signature.
      * include/mailutils/sys/stream.h (_mu_stream)<ctl>: Change signature.
      
      * include/mailutils/log.h (mu_severity_from_string)
      (mu_severity_to_string): New protos.
      
      * libmailutils/stream/stream.c (mu_stream_ioctl): Change signature.
      
      * libmailutils/filter/filter_iconv.c: Rewrite ioctl support.
      * libmailutils/stream/file_stream.c: Likewise.
      * libmailutils/stream/fltstream.c: Likewise.
      * libmailutils/stream/iostream.c: Likewise.
      * libmailutils/stream/logstream.c: Likewise.
      * libmailutils/stream/mapfile_stream.c: Likewise.
      * libmailutils/stream/memory_stream.c: Likewise.
      * libmailutils/stream/nullstream.c: Likewise.
      * libmailutils/stream/prog_stream.c: Likewise.
      * libmailutils/stream/rdcache_stream.c: Likewise.
      * libmailutils/stream/streamref.c: Likewise.
      * libmailutils/stream/syslogstream.c: Likewise.
      * libmailutils/stream/tcp.c: Likewise.
      * libmailutils/stream/xscript-stream.c: Likewise.
      * libmu_auth/tls.c: Likewise.
      
      * comsat/action.c: Change calls to mu_stream_ioctl.
      * imap4d/auth_gsasl.c: Likewise.
      * imap4d/io.c: Likewise.
      * imap4d/util.c: Likewise.
      * libmailutils/base/getpass.c: Likewise.
      * libmailutils/cfg/parser.y: Likewise.
      * libmailutils/mailbox/body.c: Likewise.
      * libmailutils/mime/mime.c: Likewise.
      * libmailutils/stdstream/dbgstream.c: Likewise.
      * libmailutils/stdstream/strerr.c: Likewise.
      * libmu_sieve/runtime.c: Likewise.
      * libmu_sieve/sieve.y: Likewise.
      * libmu_sieve/util.c: Likewise.
      * libproto/imap/trace.c: Likewise.
      * libproto/mailer/smtp_data.c: Likewise.
      * libproto/mailer/smtp_starttls.c: Likewise.
      * libproto/mailer/smtp_trace.c: Likewise.
      * libproto/pop/pop3_stls.c: Likewise.
      * libproto/pop/pop3_stream.c: Likewise.
      * libproto/pop/pop3_trace.c: Likewise.
      * maidag/lmtp.c: Likewise.
      * mail/source.c: Likewise.
      * mu/logger.c: Likewise.
      * pop3d/extra.c: Likewise.
      * pop3d/retr.c: Likewise.
      
      * TODO: Update.
      * doc/texinfo/nullstream.texi: Update.
      Sergey Poznyakoff authored
    • * include/mailutils/stream.h (MU_LOGSTREAM_ADVANCE_LOCUS_LINE)
      (MU_LOGSTREAM_ADVANCE_LOCUS_COL): Rename to MU_IOCTL_.*.  All
      uses updated.
      (MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY)
      (MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY_NAME): New ioctls.
      * include/mailutils/sys/logstream.h (_mu_log_stream)<threshold>: New
      member.
      * include/mailutils/syslog.h (mu_log_severity_threshold): New extern.
      * libmailutils/cfg/parser.y (_cfg_default_printer): Remove leftover
      static function.
      * libmailutils/stream/logstream.c (mu_severity_from_string)
      (mu_severity_to_string): New functions.
      (_log_write): Fix double free.
      Implement severity suppression.
      (_log_ioctl): Handle MU_IOCTL_LOGSTREAM_SUPPRESS_SEVERITY.
      * libmu_cfg/common.c (mu_logging_param): New parameter
      "severity".
      Sergey Poznyakoff authored
  14. 05 Dec, 2010 1 commit
    • The mu_debug_t object and associated functions have been removed.
      New debugging functions are based on the logstream interface.
      
      * include/mailutils/debug.hm4: Remove.
      * include/mailutils/debug.h: New file.
      * include/mailutils/Makefile.am (BUILT_SOURCES,EXTRA_DIST): Remove debug.h,
      debug.hm4.
      
      * mu-aux/debugdef.m4: Remove.
      * mu-aux/debcat.awk: New file.
      * mu-aux/Makefile.am (EXTRA_DIST): Replace debugdef.m4 with debcat.awk.
      
      * include/mailutils/sys/dbgstream.h: Remove.
      * include/mailutils/sys/debug.h: Remove.
      * include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Remove debug.h
      and dbgstream.h, add debcat.h
      * include/mailutils/sys/.gitignore: Add debcat.h.
      
      * libmailutils/diag/dbgstderr.c: Remove.
      * libmailutils/diag/dbgsyslog.c: Remove.
      * libmailutils/diag/gdebug.c: Remove.
      * libmailutils/diag/debcat: New file.
      * libmailutils/diag/Makefile.am (libdiag_la_SOURCES): Remove these
      sources.
      * libmailutils/diag/debug.c: Rewrite from scratch.
      * libmailutils/diag/diag.c: Rewrite from scratch.
      
      * libmailutils/diag/syslog.c (mu_diag_syslog_printer): Remove function.
      (mu_log_syslog, mu_log_print_severity): New variables.
      
      * libmailutils/stream/dbgstream.c: Remove.
      * libmailutils/stream/Makefile.am (libstream_la_SOURCES): Remove dbgstream.c..
      * libmailutils/stdstream/Makefile.am (libstdstream_la_SOURCES): Add
      dbgstream.c.
      * libmailutils/stream/logstream.c (_mu_severity_str): Change strings
      to lower case.
      (_log_write): Improve handling of unrecognized escapes.
      (_log_ctl): Handle MU_LOGSTREAM_ADVANCE_LOCUS_LINE and
      MU_LOGSTREAM_ADVANCE_LOCUS_COL.
      
      * libmailutils/mailbox/folder.c (mu_folder_has_debug)
      (mu_folder_get_debug, mu_folder_set_debug): Remove functions.
      
      * mu-aux/debcat.awk: New file.
      * libmailutils/stdstream/dbgstream.c: New file.
      
      * comsat/action.c: Use new debug/log functions.
      * comsat/comsat.c: Likewise.
      * examples/aclck.c: Likewise.
      * examples/echosrv.c: Likewise.
      * examples/msg-send.c: Likewise.
      * examples/nntpclient.c: Likewise.
      * examples/numaddr.c: Likewise.
      * frm/common.c: Likewise.
      * imap4d/imap4d.c: Likewise.
      * imap4d/io.c: Likewise.
      * imap4d/util.c: Likewise.
      * libmailutils/auth/mu_auth.c: Likewise.
      * libmailutils/base/amd.c: Likewise.
      * libmailutils/cfg/driver.c: Likewise.
      * libmailutils/cfg/format.c: Likewise.
      * libmailutils/cfg/lexer.l: Likewise.
      * libmailutils/cfg/parser.y: Likewise.
      * libmailutils/mailbox/mailbox.c: Likewise.
      * libmailutils/mailbox/mbx_default.c: Likewise.
      * libmailutils/mailer/mailer.c: Likewise.
      * libmailutils/mailer/progmailer.c: Likewise.
      * libmailutils/server/acl.c: Likewise.
      * libmailutils/server/ipsrv.c: Likewise.
      * libmailutils/server/msrv.c: Likewise.
      * libmailutils/tests/wicket.c: Likewise.
      * libmu_argp/auth.c: Likewise.
      * libmu_argp/cmdline.c: Likewise.
      * libmu_argp/common.c: Likewise.
      * libmu_auth/ldap.c: Likewise.
      * libmu_cfg/acl.c: Likewise.
      * libmu_cfg/auth.c: Likewise.
      * libmu_cfg/common.c: Likewise.
      * libmu_cfg/ldap.c: Likewise.
      * libmu_cfg/sieve.c: Likewise.
      * libmu_cfg/sql.c: Likewise.
      * libmu_scm/mu_message.c: Likewise.
      * libmu_sieve/prog.c: Likewise.
      * libmu_sieve/runtime.c: Likewise.
      * libproto/imap/trace.c: Likewise.
      * libproto/mailer/mbox.c: Likewise.
      * libproto/mailer/prog.c: Likewise.
      * libproto/mailer/sendmail.c: Likewise.
      * libproto/mailer/smtp.c: Likewise.
      * libproto/mailer/smtp_trace.c: Likewise.
      * libproto/mbox/folder.c: Likewise.
      * libproto/mbox/mbox.c: Likewise.
      * libproto/nntp/folder.c: Likewise.
      * libproto/nntp/nntp_debug.c: Likewise.
      * libproto/pop/mbox.c: Likewise.
      * libproto/pop/pop3_trace.c: Likewise.
      * maidag/guile.c: Likewise.
      * maidag/lmtp.c: Likewise.
      * maidag/maidag.c: Likewise.
      * maidag/util.c: Likewise.
      * mail/mail.c: Likewise.
      * mail/mailvar.c: Likewise.
      * mail/send.c: Likewise.
      * mail/source.c: Likewise.
      * mh/mh_argp.c: Likewise.
      * mh/send.c: Likewise.
      * mimeview/mimeview.c: Likewise.
      * movemail/movemail.c: Likewise.
      * mu/wicket.c: Likewise.
      * pop3d/extra.c: Likewise.
      * pop3d/pop3d.c: Likewise.
      * readmsg/readmsg.c: Likewise.
      * sieve/sieve.c: Likewise.
      * testsuite/mimetest.c: Likewise.
      
      * libmu_sieve/sieve-priv.h (mu_sieve_machine) <parse_error_printer>
      <error_printer, debug_printer, debug>: Remove.
      <errstream>: New member.
      (mu_sv_compile_error, mu_sv_print_value_list)
      (mu_sv_print_tag_list): Change prototypes.
      
      * libmu_sieve/actions.c: Use new sieve debug functions.
      * libmu_sieve/extensions/list.c: Likewise.
      * libmu_sieve/extensions/moderator.c: Likewise.
      * libmu_sieve/extensions/pipe.c: Likewise.
      * libmu_sieve/extensions/spamd.c: Likewise.
      * libmu_sieve/extensions/timestamp.c: Likewise.
      * libmu_sieve/extensions/vacation.c: Likewise.
      * libmu_sieve/sieve.y : Likewise.
      * libmu_sieve/sieve.l: Likewise.
      * libmu_sieve/tests.c: Likewise.
      * libmu_sieve/util.c: Rewrite diagnostic support.
      * /maidag/sieve.c: Use new debug/log and sieve diagnostic functions.
      
      * mu/mu.c (main): Remove call to mu_stdstream_setup. It is called
      by mu_app_init now.
      
      * libmailutils/base/wicket.c (mu_wicket_stream_match_url): Change signature.
      * libmailutils/cfg/gocs.c (mu_gocs_logging_init): Rewrite.
      * libmailutils/mailbox/message.c (mu_message_save_to_mailbox): Remove
      mu_debug_t argument.
      * libmailutils/stdstream/basestr.c (mu_stdstream_setup): Minor fixes.
      * libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create): Do
      not install filter stream if tag is NULL.
      (mu_stdstream_strerr_setup): New function.
      * libmu_argp/muinit.c (mu_app_init): Set mu_log_tag.
      Call mu_stdstream_setup.
      * libmu_scm/mu_dbgport.c: Rewrite port support.
      
      * include/mailutils/acl.h (mu_acl_get_debug)
      (mu_acl_set_debug): Remove prototypes.
      * include/mailutils/auth.h (mu_wicket_stream_match_url): Change signature.
      * include/mailutils/cfg.h (mu_cfg_locus_t): Remove typedef, use
      struct mu_locus instead.
      (mu_cfg_locus): Remove declaration.
      (mu_cfg_node)<locus>: Change type.
      (mu_cfg_node)<debug>: Remove.
      (mu_cfg_vperror,mu_cfg_perror)
      (mu_cfg_parse_error,mu_cfg_format_error): Remove prototypes.
      (mu_cfg_callback_t): Change signature.  All uses updated.
      (mu_cfg_get_debug): Remove prototype.
      (mu_cfg_assert_value_type, mu_cfg_string_value_cb): Change signature.
      (mu_cfg_tree_set_debug): Remove prototype.
      (mu_cfg_tree_create_node): Change signature.
      * include/mailutils/diag.h (MU_DIAG_): Redefine via MU_LOG_ constants.
      (mu_diag_get_debug,mu_diag_set_debug): Remove.
      (mu_diag_cont_vprintf, mu_diag_cont_printf)
      (mu_diag_at_locus): New functions.
      * include/mailutils/folder.h (mu_folder_has_debug)
      (mu_folder_get_debug, mu_folder_set_debug): Remove prototypes.
      * include/mailutils/gocs.h (mu_gocs_logging): Remove structure.
      (mu_gocs_debug)<errpfx>: Remove.
      * include/mailutils/guile.h (mu_scm_make_debug_port): Change prototype.
      * include/mailutils/mailbox.h (mu_mailbox_has_debug)
      (mu_mailbox_get_debug,mu_mailbox_set_debug): Remove.
      * include/mailutils/mailer.h (mu_mailer_get_debug)
      (mu_mailer_set_debug): Remove.
      * include/mailutils/message.h (mu_message_save_to_mailbox): Change
      signature.
      * include/mailutils/mu_auth.h (mu_auth_set_debug): Remove proto.
      * include/mailutils/nntp.h (mu_nntp_set_debug): Remove.
      * include/mailutils/progmailer.h (mu_progmailer_set_debug): Remove proto.
      * include/mailutils/server.h (mu_ip_server_set_debug)
      (mu_ip_server_get_debug): Remove proto.
      
      * include/mailutils/sieve.h (mu_sieve_locus_t): Remove.
      Use struct mu_locus instead.
      (mu_sieve_printf_t, mu_sieve_parse_error_t): Remove.
      (mu_sieve_action_log_t): Change signature.
      (mu_sieve_machine_init): Change signature.
      (mu_sieve_machine_init_ex): New function.
      (mu_sieve_get_diag_stream)
      (mu_sieve_set_diag_stream): New functions.
      (mu_sieve_set_data): New function.
      (mu_sieve_get_locus): Change signature.
      (mu_sieve_set_error,mu_sieve_set_parse_error)
      (mu_sieve_set_debug,mu_sieve_set_debug_object): Remove protos.
      * include/mailutils/stdstream.h (mu_stdstream_strerr_setup): New proto.
      * include/mailutils/stream.h (MU_LOGSTREAM_ADVANCE_LOCUS_LINE)
      (MU_LOGSTREAM_ADVANCE_LOCUS_COL): New ioctls.
      (mu_dbgstream_create): Change signature.
      * include/mailutils/sys/folder.h (_mu_folder) <debug>: Remove.
      * include/mailutils/sys/mailbox.h (_mu_mailbox) <debug>: Remove.
      * include/mailutils/sys/mailer.h (_mu_mailer) <debug>: Remove.
      * include/mailutils/sys/nntp.h (_mu_nntp) <debug>: Remove.
      * include/mailutils/syslog.h (mu_log_syslog)
      (mu_log_print_severity): New externs.
      * include/mailutils/types.hin (_mu_debug, mu_debug_t): Remove.
      * lib/tcpwrap.h: Remove unused prototypes.
      
      * imap4d/imap4d.h: Include mailutils/stdstream.h
      * mail/mail.h: Likewise.
      * pop3d/pop3d.h: Likewise.
      
      * mh/comp.c (main): Bugfix.
      
      * po/POTFILES.in: Update.
      * TODO: Update.
      Sergey Poznyakoff authored
  15. 04 Dec, 2010 3 commits
    • * include/mailutils/error.h (mu_error_pfn_t, mu_default_error_printer)
      (mu_syslog_error_printer): Remove deprecated interfaces.
      * libmailutils/diag/muerror.c: Likewise.
      * libmailutils/stream/logstream.c (_log_write): Send
      MU_IOCTL_LOGSTREAM_SET_SEVERITY to the transport stream.
      * libmailutils/stream/syslogstream.c (_syslog_ctl): Translate
      MU severity to syslog priority level and vice versa.
      * mu/logger.c (mutool_logger): Bugfix.
      Sergey Poznyakoff authored
    • * include/mailutils/stdstream.h (mu_printf): New prototype.
      * include/mailutils/version.h: Include mailutils/types.h instead of
      stdio.h
      (mu_fprint_options, mu_fprint_conf_option): Remove protos.
      (mu_format_options, mu_format_conf_option): New protos.
      * libmailutils/base/version.c (mu_fprint_options): Replace
      with mu_format_options, which outputs formatted data to a mu_stream_t.
      (mu_fprint_conf_option): Ditto.  Replaced by mu_format_conf_option.
      (mu_print_options): Update accordingly.
      * libmailutils/stdstream/basestr.c (mu_printf): New function.
      
      * mu/acl.c: Replace stdio calls with stdstream ones.
      * mu/cflags.c: Likewise.
      * mu/filter.c: Likewise.
      * mu/flt2047.c: Likewise.
      * mu/imap.c: Likewise.
      * mu/info.c: Likewise.
      * mu/ldflags.c: Likewise.
      * mu/logger.c: Likewise.
      * mu/mu.c: Likewise.
      * mu/mu.h: Likewise.
      * mu/pop.c: Likewise.
      * mu/query.c: Likewise.
      * mu/shell.c: Likewise.
      * mu/verbose.c: Likewise.
      * mu/wicket.c: Likewise.
      Sergey Poznyakoff authored
    • * include/mailutils/log.h: New file.
      * include/mailutils/stdstream.h: New file.
      * include/mailutils/Makefile.am (pkginclude_HEADERS): Add stdstream.h
      and log.h.
      * include/mailutils/argcv.h: Include mailutils/types.h
      * include/mailutils/mailutils.h: Include stdstream.h
      Remove vartab.h
      * include/mailutils/types.hin (MU_DEPRECATED): New define.
      * include/mailutils/vartab.h: Mark this header and all prototypes
      it defines as deprecated.
      
      * libmailutils/stdstream/Makefile.am: New file.
      * libmailutils/stdstream/basestr.c: New file.
      * libmailutils/stdstream/strerr.c: New file.
      * libmu_compat/Makefile.am: New file.
      * libmu_compat/tests/.gitignore: New file.
      * libmu_compat/tests/Makefile.am: New file.
      * libmu_compat/tests/atlocal.in: New file.
      * libmu_compat/tests/testsuite.at: New file.
      * libmailutils/base/Makefile.am (noinst_LTLIBRARIES): Remove
      argcv.c and vartab.c.
      * libmailutils/Makefile.am (SUBDIRS): Add stdstream.
      (libmailutils_la_LIBADD): Add stdstream/libstdstream.la.
      * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Remove argcv
      (TESTSUITE_AT): Remove argcv.at
      * libmailutils/tests/testsuite.at: Do not include argcv.at.
      
      * libmailutils/base/argcv.c: Move to libmu_compat/argcv.c
      * libmailutils/tests/argcv.at: Move to libmu_compat/tests/argcv.at
      * libmailutils/tests/argcv.c: Move to libmu_compat/tests/argcv.c
      * libmailutils/base/vartab.c: Move to libmu_compat/vartab.c
      
      * Makefile.am (SUBDIRS): Add libmu_compat.
      * configure.ac: Add libmu_compat/tests, libmu_compat/tests/Makefile,
      libmu_compat/tests/atlocal, libmu_compat/Makefile and
      libmailutils/stdstream/Makefile to config file list.
      
      * mu/ldflags.c (lib_descr): Add mu_compat.
      * mu/logger.c (logger_parse_opt): -t does not imply --syslog.
      (mutool_logger): Use inline-comment filter to insert "tag: "
      prefix.
      Flush and destroy both streams before returning.
      
      * po/POTFILES.in: Add libmailutils/stream/logstream.c,
      libmailutils/stdstream/baseio.c, libmailutils/stdstream/strerr.c
      and mu/logger.c.
      Sergey Poznyakoff authored