1. 07 Dec, 2010 1 commit
    • 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
  2. 09 Oct, 2010 1 commit
  3. 03 Oct, 2010 1 commit
    • 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
  4. 25 Sep, 2010 1 commit
    • * 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
  5. 08 Sep, 2010 2 commits
    • 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
    • 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
  6. 05 Jan, 2010 1 commit
  7. 11 Jul, 2009 1 commit
    • * NEWS: Update.
      * doc/texinfo/programs.texi: Document new variables and commands.
      * mail/envelope.c: New file.
      * mail/mailvar.c: New file.
      * mail/Makefile.am (mail_SOURCES): Add envelope.c and mailvar.c.
      
      * mail/mail.h (EF_HIDDEN): New constant
      (mail_env_data_t, mail_env_entry, mail_env_entry_is_set)
      (mail_env_entry, util_getenv, util_printenv, util_setenv)
      (var_iterator_t, var_iterate_next, var_iterate_first)
      (var_iterate_end, var_compl): Removed.
      
      (union mailvar_value, struct mailvar_variable
      (mail_variable, mail_envelope, print_envelope)
      (mailvar_find_variable, mailvar_get, mailvar_print)
      (mailvar_variable_format, mailvar_set, mailvar_set_compl): Add prototypes.
      (MOPTF_OVERWRITE, MOPTF_QUIET)
      
      * mail/table.c: List new commands: envelope, setq, variable.
      Implement completion for `set'.
      * mail/testsuite/mail/if.exp: Use setq to set a read-only variable.
      
      mail/alias.c, mail/decode.c, mail/delete.c, mail/escape.c
      mail/file.c, mail/folders.c, mail/from.c, mail/if.c,
      mail/mail.c, mail/mailline.c, mail/msgset.y, mail/pipe.c,
      mail/print.c, mail/quit.c, mail/reply.c, mail/send.c,
      mail/set.c, mail/shell.c, mail/top.c, mail/unset.c,
      mail/util.c: Use mailvar functions.
      Sergey Poznyakoff authored
  8. 27 Jun, 2007 1 commit
  9. 13 Feb, 2007 1 commit
  10. 27 Aug, 2005 1 commit
  11. 17 May, 2005 1 commit
  12. 05 Mar, 2005 1 commit
  13. 09 Feb, 2003 1 commit
  14. 14 Jan, 2003 1 commit
  15. 23 Dec, 2002 1 commit
  16. 05 Nov, 2002 1 commit
  17. 13 Oct, 2002 1 commit
  18. 07 Aug, 2002 1 commit
  19. 15 Sep, 2001 1 commit
    • 	the code based on the hints generated by the compiler.  The usual
      	errors:
      	- signed vs unsigned, signedness or unsignedness problems.
      	- printf() wrong formats
      	- wrong prototypes declarations
      	- and different buglets
      	- "const char *" vs "char *"
      	- unused variables
      	- unused arguments.  Tell the compiler by typecasting to void
      	 (void)var.
      	- Some variable when shadowed, meaning in another block variable
      	of the same name where reused.
      	- atoi() is not an ANSI C function, we should use strtol().
      
      	Changes to comply to GNU coding standards, and nuke trailing spaces.
      
      	* mail/alias.c (alia_lookup): No prototypes and scope static.
      	(hash_num, max_rehash, aliases): Scope static and unsigned.
      	(hash): unsigned.
      	(alias_rehash): i unsigned.
      	(alias_lookup_or_install): slot variable unused.
      	(alias_destroy): unsigned.
      	* mail/copy.c (mail_copy0): fprintf wrong format.
      	* mail/decode.c: dislay_message change prototype.
      	(mail_decode): Cast when calling util_msgset_iterate().
      	(display_message): Prototype change.
      	(display_headers): unsigned issues.
      	* mail/delete.c: Buglet was caling mail_delete0() instead of
      	mail_delete.
      	* mail/eq.c: Unused arguments.
      	* mail/exit.c: Unused arguments.
      	* mail/folders.c: Unused arguments.
      	* mail/followup.c: Unused variables.
      	* mail/from.c (mail_from): variable buffer was shadowing use variable
      	name instead. snprintf() formatting issues.
      * mail/headers.c: Unsigned issues.
      	* mail/if.c: Unused arguments.
      	* mail/inc.c: Unused arguments.
      	* mail/list.c: Use const char *.
      	* mail/mail.c: options[], argp[] initialised all elements.
      	(mail_cmdline): Unused arguments.
      	(main): Unsigned issues.
      	(mail_warranty): Unused arguments.
      	* mail/mail.h: function_t with complete prototype this necessary
      	to let the compiler do proper checks.
      	struct mail_command_entry rearrange the fields and a new field
      	int (*escfunc) __P ((int, char **, struct send_environ *));
      	Indentation rearrangements.
      	* mail/mailline.c (ml_getc): Scope is static now.
      	typecast for const char *.
      	(ml_reread): Typecast.
      	* mail/msgset.y: Declare yyerror() and yylex().
      	(msgset_select): Change of prototpe to let the compiler do checks.
      	(selec_sender): Unsused arguments.
      	* mail/pipe.c: Rename variable pipe to tube.
      	* mail/print.c: Unsigness and some shadow variables.
      	* mail/quit.c: Shadow variables.
      	* mail/send.c: Typecast when necessary. Use the second (escfunc)
      	field now. Some shadow variables.
      	* mail/shell.c: Unsigned.
      	* mail/table.c: Readjust the table to correspond to the signature
      	change in mail.h.
      	* mail/tag.c: Prototype change.
      	* mail/util.c (util_msglist_esccmd): New function.
      	(util_find_entry): Prototype change.  And check return value
      	of getenv().
      	(util_screen_lines): Change atoi() to strtoul().
      	(util_screen_columns): Change atoi() to strtoul().
      	(util_find_env): Signedness.
      	(util_fullpath): Prototype changed(const).
      	(util_slist_to_string):Protorype changed (const).
      	(util_strcat) :Protorype changed (const).
      	(util_tempfile): const.
      	* mail/var.c: Unsignedness, Unused arguments.
      	(var_quote):  Use new function util_msglist_esccmd().
      	* mail/version.c: Unused arguments.
      	* mail/write.c: printf formats.
      	* mail/z.c: Signedness.
      Alain Magloire authored
  20. 06 Aug, 2001 1 commit
  21. 25 Jun, 2001 1 commit
  22. 04 May, 2001 1 commit
  23. 16 Apr, 2001 1 commit
    •         attempt to assign to it.  To be able to redirect at will stdout
              we need to assign it.  In GNU lib C, it was not error since stdout
              stderr, and stdin are variables, but to be portable we can not
              assume this.  The way out is to always use fprintf () and have
              a global varialbe "ofile" pointing to stdout.
      
              * mail/*: All the files under mail been change to use fprintf()
              and ofile as the default stdout.
              Copyright updated.
      Alain Magloire authored
  24. 11 Jan, 2001 1 commit
  25. 07 Sep, 2000 2 commits
  26. 05 Sep, 2000 1 commit
  27. 02 Sep, 2000 1 commit